E2 (англ.Efficient Encryption — эффективное шифрование) — в криптографии семейство симметричных блочных криптоалгоритмов на основе ячейки Фейстеля. E2 использует блок размером 128 бит и ключи длиной 128, 192, 256 бит. Создан в компании NTT (Nippon Telegraph and Telephone) в 1998 году и был представлен на AES конкурсе. Наследником данного шифра является шифр Camellia, который также является результатом творчества компании NTT (Nippon Telegraph and Telephone).
Шифр 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 scheduling), из секретного ключа непосредственно перед шифрованием генерирует 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-Функция
S-функция — часть F-функции, которая определяется s-box:
S-box, использующийся в S-функции, определяется следующим образом:
,
где
Не возбраняется при расчетах пользоваться таблицами c уже вычисленными значениями s(x). То есть
Таблица вычисленных значений s-box:
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-функция.
Бинарный оператор 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 с меньшим числом циклов шифрования существенно ниже того, что заявлено разработчиками.