E2 (шифр)
E2 (англ. Efficient Encryption — эффективное шифрование) — в криптографии семейство симметричных блочных криптоалгоритмов на основе ячейки Фейстеля. E2 использует блок размером 128 бит и ключи длиной 128, 192, 256 бит. Создан в компании NTT (Nippon Telegraph and Telephone) в 1998 году и был представлен на AES конкурсе. Наследником данного шифра является шифр Camellia, который также является результатом творчества компании NTT (Nippon Telegraph and Telephone).
E2 | |
---|---|
Создатель | NTT |
Опубликован | 1998 |
Размер ключа | 128 (192, 256) бит |
Размер блока | 128 бит |
Число раундов | 12 |
Тип | Ячейка Фейстеля |
История
Шифр E2, созданный компанией NTT, был представлен на конкурсе AES вместе с другими четырнадцатью шифрами. E2 прошел тест на криптостойкость успешно. Стойкость шифра E2 не повлияла на его быстродействие. E2 занял одну из лидирующих позиций как в соревновании на скорость шифрования/расшифрования, так и в быстроте формирования ключей. В частности, реализация шифра E2 (компилятор Borland) показала скорость шифрования/расшифрования 26 Мбит/сек. Впрочем, скорость свыше 25 Мбит/сек была показана и пятью другими лидерами. Несмотря на то, что показатели шифра менялись в зависимости от компилятора, платформы и логики, общая тенденция оставалась неизменной. Большинство авторов, писавших о конкурсе AES, утверждают, что E2 наряду с некоторыми другими шифрами успешно прошел первый круг. Однако E2 не попал в финал в пятерку лучших шифров. НИСТ было отмечено, что несмотря на хорошие показатели скорости и отсутствие уязвимостей, требования к энергонезависимой памяти слишком высоки (аналогично пострадал и CAST-256). [1]
Алгоритм шифрования
Работу алгоритма шифрования можно разделить на три основные части: IT-функция, или преобразователь начальных данных (англ. initial transformation (IT)), ячейка Фейстеля на базе F-функции, повторяющаяся 12 раз, и FT-функция, или преобразователь конечных данных (англ. finale transformation (FT)). Блок алгоритма, отвечающий за планировку ключей (англ. key sheduling part), до начала шифрования из секретного ключа К создает шестнадцать подключей {k1,..k16}, каждый из которых является 128-разрядным битовым вектором (элементом поля Галуа(2^128)). Первое преобразование открытого текста M производится с помощью IT-функции и двух сгенерированных ключей под номерами 13 и 14( и )
- M‘=IT(M,,)
M` разбивается на два блока и равной длины, каждый из элементов и является битовым вектором размерностью 64 бита. Затем выполняются 12 циклов преобразований в ячейке Фейстеля, в которой правый блок на текущей итерации цикла определяется сложением по модулю два левой части предыдущей итерации цикла и результата функции F, аргументами которой являются правая часть предыдущей итерации и ключ , а левому блоку на r шаге цикла присваивается значение правого блока на r-1 шаге. Цикл повторяется 12 раз, то есть r изменяется от 1 до 12
- =
- = .
Финальный этап шифрования — выполнение FT-функции. Результат FT-функции, аргументами которой являются конкатенация правой и левой частей на выходе 12 итерации ячейки Фейстеля и ключи :
- `
Алгоритм расшифрования
Расшифрование происходит по схеме, аналогичной шифрованию. Работу алгоритма расшифрования, можно разделить на три основные части: IT-функция (начальное преобразование — англ. initial information (IT)), 12 циклов ячейки Фейстеля с F-функцией и в конце FT-функция (англ. finale transformation (FT)). Блок алгоритма, отвечающий за планировку ключей (англ. key sheduling), из секретного ключа непосредственно перед шифрованием генерирует 16 подключей {}, которые являются битовыми векторами размерностью 128 (элементом поля Галуа GF(2^128)). На первом этапе происходит выполнение IT-функции, аргументами которой являются криптограмма С и два подключа
- `
Результат IT-функции C` разбивается на 2 равные части по 64 бита(половина блока): правую и левую (). Далее выполняются 12 циклов ячейки Фейстеля на базе F-Функции ( меняется от 12 до 1).
По завершении последнего цикла ячейки Фейстеля осуществляется конкатенация половинок блока (). И в конце — финальное преобразование: выполняется FT-функция, аргументами которой являются результат конкатенации ` и два ключа . Результатом выполнения FT-функции является открытый текст .
Генератор ключей (Планировщик ключей)
На основе секретного ключа ( {} имеет размерность половины блока, то есть 64 бита и является аргументом для функций шифрования и расшифрования) генерируются подключи {i=1;2…16} (битовые вектора размерности 128) с помощью G-функции и S-функции. Процедура генерации ключей остается почти неизменной, если длина секретного ключа равна 128, 192 или 256 бит. Если заданная длина 128 бит, в качестве значений выбираются константы следующим образом: , . Если длина ключа 192 бита, значение ключа — , где S() — S-функция.
Элементарные функции
F-функция
BRS(),S(),P() — соответственно BRS-функция, S-функция, P-функция; X,Y — слова двоичного алфавита размерностью 64 бита (половина блока); — ключи размерностью 128 бит каждый. H — пространство размерности 64 бита.
Суть F-функции — преобразование слов бинарного алфавита размерности 64 бита при заданном ключе размерности 128 бит. Результат преобразования — слово бинарного алфавита размерности 64 бита.
IT-Функция (функция начальной обработки)
IT-функция или преобразователь начальных данных:
H — пространство слов бинарного алфавита размерности 64 бит; X,A,B — бинарные слова размерности 128 бит; BP() — BP-функция; — бинарная операция.
FT-Функция (функция завершающего преобразования)
FT-функция или преобразователь конечных данных:
- .
H — пространство слов бинарного алфавита размерности 64 бит; X,A,B — бинарные слова размерности 128 бит; () — функция, обратная BP-функции; — бинарная операция de.
FT-функция — это функция, обратная IT-функции:
- .
BRL-Функция
BRL-функция(англ. byte rotate left function), или циклический сдвиг влево, — составляющая часть F-функции:
{} — бинарное слово размерности 8 бит(байт) или, иными словами, элемент поля Галуа .
Структура S-box
S-box, использующийся в S-функции, определяется следующим образом:
- ,
- где
Не возбраняется при расчетах пользоваться таблицами c уже вычисленными значениями s(x). То есть
225 | 66 | 62 | 129 | 78 | 23 | 158 | 253 | 180 | 63 | 44 | 218 | 49 | 30 | 224 | 65 |
204 | 243 | 130 | 125 | 124 | 18 | 142 | 187 | 228 | 88 | 21 | 213 | 111 | 233 | 76 | 75 |
53 | 123 | 90 | 154 | 144 | 69 | 188 | 248 | 121 | 214 | 27 | 136 | 2 | 171 | 207 | 100 |
9 | 12 | 240 | 1 | 164 | 176 | 246 | 147 | 67 | 99 | 134 | 220 | 17 | 165 | 131 | 139 |
201 | 208 | 25 | 149 | 106 | 161 | 92 | 36 | 110 | 80 | 33 | 128 | 47 | 231 | 83 | 15 |
145 | 34 | 4 | 237 | 166 | 72 | 73 | 103 | 236 | 247 | 192 | 57 | 206 | 242 | 45 | 190 |
93 | 28 | 227 | 135 | 7 | 13 | 122 | 244 | 251 | 50 | 245 | 140 | 219 | 143 | 37 | 150 |
168 | 234 | 205 | 51 | 101 | 84 | 6 | 141 | 137 | 10 | 94 | 217 | 22 | 14 | 113 | 108 |
11 | 255 | 96 | 210 | 46 | 211 | 200 | 85 | 194 | 35 | 183 | 116 | 226 | 155 | 223 | 119 |
43 | 185 | 60 | 98 | 19 | 229 | 148 | 52 | 177 | 39 | 132 | 159 | 215 | 81 | 0 | 97 |
173 | 133 | 115 | 3 | 8 | 64 | 239 | 104 | 254 | 151 | 31 | 222 | 175 | 102 | 232 | 184 |
174 | 189 | 179 | 235 | 198 | 107 | 71 | 169 | 216 | 167 | 114 | 238 | 29 | 126 | 170 | 182 |
117 | 203 | 212 | 48 | 105 | 32 | 127 | 55 | 91 | 157 | 120 | 163 | 241 | 118 | 250 | 5 |
61 | 58 | 68 | 87 | 59 | 202 | 199 | 138 | 24 | 70 | 156 | 191 | 186 | 56 | 86 | 26 |
146 | 77 | 38 | 41 | 162 | 152 | 16 | 153 | 112 | 160 | 197 | 40 | 193 | 109 | 20 | 172 |
249 | 95 | 79 | 196 | 195 | 209 | 252 | 221 | 178 | 89 | 230 | 181 | 54 | 82 | 74 | 42 |
P-Функция
P-функция — составляющая часть F-функции
P — матрица преобразования описывающая P-функцию
G-Функция
G — функция осуществляет следующее отображение:
- , где
- — f-функция.
f-функция
f-функция необходима для вычисления G-функции. f-функция определяется следующим образом:
- , где
P() — P-функция, S() — S-функция.
Бинарный оператор
Бинарный оператор определяется следующим образом:
- , где
- — логическое побитовое сложение (логическое «или») с 1 в кольце .
Бинарный оператор de
Бинарный оператор de определяется следующим образом:
- , где
- — логическое побитовое сложение (логическое «или») с 1 в кольце .
BP-функция
BP- функция, или функция перестановки байтов (англ. byte permutation), является частью IT-функции и FT — функции. Она определяется следующим образом:
- ,где
- .
Обратное к BP — преобразованию, или BP^{-1}, вычисляется следующим образом:
- ,где
- .
Криптоанализ алгоритма
Сотрудниками компании Information Technology R&D Center Mitsubishi Electric Corporation Мицуру Мацуи (Mitsuru Matsui) и Тосио Токита (Toshio Tokita) была обнаружена нестойкость шифра к дифференциальному криптоанализу.[3] Несмотря на это шифр (использующий 12 циклов шифрования) остается стойким с практической точки зрения. Хотя Мицуру Мацуи и Тосио Токита удалось показать, что уровень безопасность шифра E2 с меньшим числом циклов шифрования существенно ниже того, что заявлено разработчиками.
Недостатки шифра
Высокие требования к энергонезависимой памяти.