- •ВВЕДЕНИЕ
- •1. ОСНОВНЫЕ ПОНЯТИЯ
- •2. ИСТОРИЧЕСКИЕ ШИФРЫ
- •3. МОДУЛЯРНАЯ АРИФМЕТИКА
- •4. АСИММЕТРИЧНЫЕ СИСТЕМЫ ШИФРОВАНИЯ. КРИПТОСИСТЕМА RSA
- •5. ПРОСТЫЕ ЧИСЛА. ГЕНЕРАЦИЯ ПРОСТЫХ ЧИСЕЛ
- •6. АТАКА ВИНЕРА НА RSA
- •7. РЮКЗАЧНЫЙ МЕТОД ШИФРОВАНИЯ
- •9. КРИПТОСИСТЕМА НА ОСНОВЕ ЭЛЛИПТИЧЕСКИХ КРИВЫХ
- •10. СИММЕТРИЧНЫЕ КРИПТОСИСТЕМЫ
- •11. СТАНДАРТ ШИФРОВАНИЯ ДАННЫХ DES
- •12. СТАНДАРТ КРИПТОСИСТЕМЫ РОССИИ ГОСТ 28147-89
- •13. ДЕЙСТВИЯ НАД ПОЛИНОМАМИ В ПОЛЕ
- •14. УСОВЕРШЕНСТВОВАННЫЙ СТАНДАРТ ШИФРОВАНИЯ AES
- •15. УСТАНОВЛЕНИЕ ПОДЛИННОСТИ ОБЪЕКТА
- •16. КРИПТОГРАФИЧЕСКИЕ ХЕШ-ФУНКЦИИ
- •СПИСОК ЛИТЕРАТУРЫ
Запишем первый блок шифротекста МНАЕ 16-битовым числом (1011110000000101), из которого находим аргумент функции f:
Y (1) = (10111100), Z(1) = (00000101) .
Далее находим f (Y (1)), f (Z(1)) и восстанавливаем гамму шифра:
ГШ (2) = (1011000001111101).
Второй блок открытого текста находится по формуле
1111010100111101
1011000001111101 TТ(2) = Ш (2)Г Å Ш (2) = Å 0100010101000000
Этому 16-битовому числу соответствуют четыре десятичных числа 4, 5, 4, 0, что соответствует открытому тексту ДЕДА.
13.ДЕЙСТВИЯ НАД ПОЛИНОМАМИ В ПОЛЕ GF(2n )
Вкриптографии используются четыре операции: сложение, вычитание, умножение и деление, т. е. мы работаем с полями. При
работе с компьютером целые числа представляются в нем как n-битовые слова, в которых n обычно равно 8, 16, 32, 64, 128, 256 и
т. д., т. е. 2n , а диапазон чисел – от 0 до 2n −1. Хотя можно определить правила для сложения и умножения n-битовых слов, которые
удовлетворяют свойствам поля GF (2n ), проще работать с полиномами степени n −1, которые представляют n-битовые слова:
f (x) = a |
− |
xn−1 + a − |
xn−2 + ... + a x + a |
|
, |
|
|
n |
1 |
n 2 |
|
1 |
0 |
|
|
при этом коэффициенты |
|
ai принимают |
значения |
битов |
0 или 1, |
||
а степень для х определяет позицию бита в n-битовом слове. |
|
||||||
Например, слово из 8 бит (00100110) в поле GF (28 ) запишется |
|||||||
полиномом x5 + x2 + x , и |
наоборот, этот |
полином |
можно |
записать |
|||
ввиде 8-битового слова. Операция над полиномами включает две операции: операция над коэффициентами ai , которая осуществляется
вполе GF(2) (по модулю 2), и операция над двумя полиномами в
74
поле GF(2n ). При определении операции над полиномами необходимо ввести понятие полинома-модуля, посколько умножение двух полиномов может создать полином со степенью больше чем n −1
, а поэтому результат умножения необходимо делить на модуль ϕ(x) и сохранять остаток, как это делается в модулярной арифметике.
В качестве модуля ϕ(x) выбираются такие полиномы степени n,
которые не делятся на любой полином из множества GF (2n ). Такие полиномы называются неприводимыми.
Пример. Найти сумму:
(x5 + x2 + x) Å (x3 + x2 +1) = x5 + x3 + x +1.
Замечание: сложение и вычитание полиномов – одна и та же операция XOR (по модулю 2). Аддитивной инверсией для полинома является сам полином.
Пример. Найти произведение полиномов, взяв в качестве
ϕ(x) = x8 + x4 + x3 + x + 1
((x5 + x2 + x) × (x7 + x4 + x3 + x2 + x))modϕ ( x) = (x12 + x7 + x2 )modϕ ( x) =
=x5 + x3 + x2 + x +1.
Вполе GF (2n ) мультипликативно нейтральным элементом является полином нулевой степени, т. е. 1. Мультипликативная
инверсия f (x)−1 для элемента f (x) находится по расширенному алгоритму Евклида.
Пример. Найти мультипликативную инверсию для f (x) = x2 , взяв в качестве ϕ(x) = x4 + x +1.
x4 + x +1 = x2 ´ x2 + (x +1) Þ x +1 = x4 + x +1+ x2 ´ x2 ; x2 = (x +1)´ x + x Þ x = x2 + (x +1)´ x;
x +1 = x ´1+1 Þ 1 = x +1+ x
Обратный ход алгоритма Евклида
75
1 = (x +1) + x = (x +1) + (x2 + (x +1)× x) = (x +1)× (x +1) + x2 = = (x +1)× (x4 + x +1+ x2 × x2 ) + x2 = (x +1)× (x4 + x +1) +
+ x2 × (x3 + x2 ) + x2 = (x +1)× (x4 + x +1) + x2 × (x3 + x2 +1). Окончательно
((x +1)× (x4 + x +1) + x2 × (x3 + x2 +1))modφ (x) = ( x2 × (x3 + x2 +1)) |
modφ (x) |
= 1, |
|||||
|
|
|
|
|
|
|
|
тогда |
f (x)−1 = x3 + x2 |
+1, |
т. к. |
((x +1)×ϕ(x))modϕ ( x) = 0. |
|
|
|
|
|
|
|
|
|||
Пример. Найти |
все |
элементы поля GF (24 ), взяв в |
качестве |
||||
ϕ(x) = x4 + x +1.
Начнем находить мультипликативные инверсии для многочленов младших степеней, заполняя каждый раз таблицу. Мультипликативная
инверсия для f (x) = 0 |
– это |
f −1 (x) = 0. То же самое для |
f (x) = 1, |
||
f −1(x) = 1. |
|
|
|
|
|
|
f (x) |
|
|
f −1(x) |
|
Р |
4-битовое |
Полином |
Полином |
4-битовое |
Р |
|
слово |
|
|
слово |
|
0 |
0000 |
0 |
0 |
0000 |
0 |
1 |
0001 |
1 |
1 |
0001 |
1 |
2 |
0010 |
x |
x3 + 1 |
1001 |
9 |
3 |
0011 |
x + 1 |
x3 + x2 + x |
1110 |
14 |
4 |
0100 |
x2 |
x3 + x2 + 1 |
1101 |
13 |
5 |
0101 |
x2 + 1 |
x3 + x + 1 |
1011 |
11 |
6 |
0110 |
x2 + x |
x2 + x + 1 |
0111 |
7 |
8 |
1000 |
x3 |
x3 + x2 + x + 1 |
1111 |
15 |
10 |
1010 |
x3 + x |
x3 + x2 |
1100 |
12 |
p = 2 |
, |
x4 + x +1 = (x3 |
+1)× x +1; ((x4 |
+ x +1) + x × (x3 +1))modϕ ( x) = 1; |
|
|
|
|
|
f −1(x) = x3 +1; |
|
|
||
p = 3, x4 + x +1 = (x3 + x2 + x)´ (x +1) +1; f −1(x) = x3 + x2 + x; |
||||
p = 4, f −1(x) = x3 + x2 +1, найден ранее.
p = 5, x4 + x +1 = (x2 +1)´ (x2 +1) + x Þ x = x4 + x +1+ (x2 +1)´ (x2 +1);
76
x2 +1 = x ´ x +1 Þ 1 = x2 +1+ x ´ x =
= x2 +1+ x ´ ((x4 + x +1) + (x2 +1)´ (x2 +1)) = = x ´ (x4 + x +1) + (x2 +1)´ (x3 + x +1);
f −1(x) = x3 + x +1;
p = 6 , x4 + x +1 = (x2 + x)´ (x2 + x +1) +1 Þ 1 = (x4 + x +1) + (x2 + x)´ (x2 + x +1);
f −1(x) = (x2 + x +1);
p = 8, x4 + x +1 = x3 ´ x + x +1 Þ x +1 = x4 + x +1+ x3 ´ x x3 = (x +1)´ (x2 + x +1) +1 Þ 1 = x3 + (x +1)´ (x2 + x +1) =
= x3 + (x4 + x +1+ x3 ´ x)´ (x2 + x +1) = (x4 + x +1)´ (x2 + x +1) + + x3 ´ (x3 + x2 + x +1);
f −1(x) = x3 + x2 + x +1;
p= 10, x4 + x +1 = (x3 + x)´ x + (x2 + x +1) Þ x2 + x +1 = x4 + x +1+ (x3 + x)´ x;
x3 + x = (x2 + x +1)´ (x +1) + x +1 Þ
x+1 = x3 + x + (x2 + x +1)´ (x +1);
x2 + x +1 = (x +1)´ x +1Þ 1 = x2 + x +1+ (x +1)´ x =
=x2 + x +1+ (x3 + x + (x2 + x +1)´ (x +1))´ x =
=(x2 + x +1)´ (x2 + x +1) + (x3 + x)´ x =
=(x4 + x +1+ (x3 + x)´ x)´ (x2 + x +1) + (x3 + x)´ x =
= (x4 + x +1)´ (x2 + x +1) + (x3 + x)´ (x3 + x2 ); f −1(x) = x3 + x2.
Таким образом, найдены все элементы p = 0,15 поля GF (24 ), причем для каждого элемента существует мультипликативная инверсия.
14. УСОВЕРШЕНСТВОВАННЫЙ СТАНДАРТ ШИФРОВАНИЯ AES
77
AES – современный блочный шифр с симметричными ключами, который работает с блоками данных размером 16 байт. AES использует единицы данных: слово – 4 байта и матрица состояний размером 4× 4 = 16 байтов, в которой столбцами являются слова, записанные сверху вниз. Каждый из 16 раундов, кроме последнего, использует четыре преобразования, которые являются взаимнообратимыми: подстановка, перестановка, смешивание и добавление ключа. Последний раунд использует только три первых преобразования. Секция, предваряющая первый раунд, использует добавление ключа. Рассмотрим первое преобразование.
Подстановка (SubBytes). Чтобы применить подстановку к байту, мы рассматриваем его как две шестнадцатиричные цифры. Левая цифра определяет строку, правая – столбец в таблице перестановок, на пересечении строки и столбца находится новый байт. Например, байт 04 преобразуется в F2. Хотя можно использовать в качестве подстановки таблицу, AES дает определение алгебраическим
преобразованиям на основе поля GF (28 ) с помощью неприводимого полинома
ϕ(x) = x8 + x4 + x3 + x +1.
Для этого:
1. Находится мультипликативная инверсия к байту 04
0416 = 00000100 Þ x2.
Используя расширенный алгоритм Евклида, найдем для x2
обратный сомножитель |
f −1(x) |
(табл. 14.1, 14.2). |
|
|
|
|
|
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Таблица 14.1 |
||
|
|
|
|
|
Таблица преобразований SubBytes |
|
|
|
|
|||||||
|
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
А |
B |
C |
D |
E |
F |
0 |
63 |
7C |
77 |
7B |
F2 |
6B |
6F |
C5 |
30 |
01 |
67 |
2B |
FE |
D7 |
AB |
76 |
1 |
CA |
82 |
C9 |
7D |
FA |
59 |
47 |
FO |
AD |
D4 |
A2 |
AF |
9C |
A4 |
72 |
CO |
2 |
B7 |
FD |
93 |
26 |
36 |
3F |
F7 |
CC |
34 |
A5 |
E5 |
F1 |
71 |
D8 |
31 |
15 |
3 |
04 |
C7 |
23 |
C3 |
18 |
96 |
05 |
9A |
07 |
12 |
80 |
E2 |
EB |
27 |
B2 |
75 |
4 |
09 |
83 |
2C |
1A |
1B |
6E |
5A |
AO |
52 |
3B |
D6 |
B3 |
29 |
E3 |
2F |
84 |
5 |
53 |
D1 |
00 |
ED |
20 |
FC |
B1 |
5B |
6A |
CB |
BE |
39 |
4A |
4C |
58 |
CF |
6 |
DO |
EF |
AA |
FB |
43 |
4D |
33 |
85 |
45 |
F9 |
02 |
7F |
50 |
3C |
9F |
A8 |
7 |
51 |
A3 |
40 |
8F |
92 |
9D |
38 |
F5 |
BC |
B6 |
DA |
21 |
10 |
FF |
F3 |
D2 |
78
8 |
CD |
OC |
13 |
EC |
5F |
97 |
44 |
17 |
C4 |
A7 |
7E |
3D |
64 |
5D |
19 |
73 |
9 |
60 |
81 |
4F |
DC |
22 |
2A |
90 |
88 |
46 |
EE |
B8 |
14 |
DE |
5E |
OB |
DE |
A |
EO |
32 |
3A |
OA |
49 |
06 |
24 |
5C |
C2 |
D3 |
AC |
62 |
91 |
95 |
E4 |
79 |
B |
E7 |
CB |
37 |
6D |
8D |
D5 |
4E |
A9 |
6C |
56 |
F4 |
EA |
65 |
7A |
AE |
08 |
C |
BA |
78 |
25 |
2E |
1C |
A6 |
B4 |
C6 |
E8 |
DD |
74 |
IF |
4B |
BD |
8B |
8A |
D |
70 |
3E |
B5 |
66 |
48 |
03 |
F6 |
OE |
61 |
35 |
57 |
B9 |
86 |
C1 |
1D |
9E |
E |
E1 |
F8 |
98 |
11 |
69 |
D9 |
8E |
94 |
9B |
1E |
87 |
E9 |
CE |
55 |
28 |
DF |
F |
8C |
A1 |
89 |
OD |
BF |
E6 |
42 |
68 |
41 |
99 |
2D |
OF |
BO |
54 |
BB |
16 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Таблица 14.2 |
||
|
|
|
|
Таблица преобразований InvSubBytes |
|
|
|
|
||||||||
|
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
А |
B |
C |
D |
E |
F |
0 |
52 |
09 |
6A |
D5 |
30 |
36 |
A5 |
38 |
BF |
40 |
A3 |
9E |
81 |
F3 |
D7 |
FB |
1 |
7C |
E3 |
39 |
82 |
9B |
2F |
FF |
87 |
34 |
8E |
43 |
44 |
C4 |
DE |
E9 |
CB |
2 |
54 |
7B |
94 |
32 |
A6 |
C2 |
23 |
3D |
EE |
4C |
95 |
0B |
42 |
FA |
C3 |
4E |
3 |
08 |
2E |
A1 |
66 |
28 |
D9 |
24 |
B2 |
76 |
5B |
A2 |
49 |
6D |
8B |
D1 |
25 |
4 |
72 |
F8 |
F6 |
64 |
86 |
68 |
98 |
16 |
D4 |
A4 |
5C |
CC |
5D |
65 |
B6 |
92 |
5 |
6C |
70 |
48 |
50 |
FD |
ED |
B9 |
DA |
5E |
15 |
46 |
57 |
A7 |
8D |
9D |
84 |
6 |
90 |
D8 |
AB |
00 |
8C |
BC |
D3 |
0A |
F7 |
E4 |
58 |
05 |
B8 |
B3 |
45 |
06 |
7 |
D0 |
2C |
1E |
8F |
CA |
3F |
0F |
02 |
C1 |
AF |
BD |
03 |
01 |
13 |
8A |
6B |
8 |
3A |
91 |
11 |
41 |
4F |
67 |
DC |
EA |
97 |
F2 |
CF |
CE |
F0 |
B4 |
E6 |
73 |
9 |
96 |
AC |
74 |
22 |
E7 |
AD |
35 |
85 |
E2 |
F9 |
37 |
E8 |
1C |
75 |
DE |
6E |
A |
47 |
E1 |
1A |
71 |
1D |
29 |
C5 |
89 |
6F |
B7 |
62 |
0E |
AA |
18 |
BE |
1B |
B |
FC |
56 |
3E |
4B |
C6 |
D2 |
79 |
20 |
9A |
DB |
C0 |
FE |
78 |
CD |
5A |
F4 |
C |
1F |
DD |
A8 |
33 |
88 |
07 |
C7 |
31 |
B1 |
12 |
10 |
59 |
27 |
80 |
EC |
5F |
D |
60 |
51 |
7E |
A9 |
19 |
B5 |
4A |
0D |
2D |
E5 |
7A |
9F |
93 |
C9 |
9C |
EF |
E |
A0 |
E0 |
3B |
4D |
AE |
2A |
F5 |
B0 |
CB |
EB |
BB |
3C |
83 |
53 |
99 |
61 |
F |
17 |
2B |
04 |
7E |
BA |
77 |
D6 |
26 |
E1 |
69 |
14 |
63 |
55 |
21 |
0C |
7D |
x8 + x4 + x3 + x +1 = x2 (x6 + x2 + x) + (x +1)Þ x +1 = = x8 + x4 + x3 + x +1+ x2 ´ (x6 + x2 + x)
x2 = (x +1) ´ (x +1) +1 Þ 1 = x2 + (x +1)´ (x +1) = |
|||||
= x2 + (x +1) ´ [x8 + x4 + x3 + x +1+ x2 ´ (x6 + x2 + x)] = |
|||||
= x2 + (x +1) ´ (x8 + x4 + x3 + x +1) + x2 ´ |
[(x +1) ´ (x6 + x2 + x)] = |
||||
= (x +1)´ (x8 + x4 + x3 + x +1) + x2 ´ [x7 + x6 + x3 + x +1]; |
|||||
В итоге |
(x2 ´ (x7 + x6 + x3 |
+ x +1))modϕ ( x) =1 |
, откуда |
||
|
|
|
|
||
f −1 (x) = x7 + x6 + x3 + x +1 или (11001011). |
|
|
|||
2. Инвертированный |
байт |
f −1(x) |
|
рассматривается как |
|
|
|
||||
матрица-столбец с самым младшим битом наверху и самым старшим битом внизу. Эта матрица-столбец слева умножается на постоянную
79
квадратную матрицу Х (операция сложения осуществляется с использованием операции XOR).
é |
1 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
ù |
|
é |
1 |
ù |
|
1 |
ù |
|
|
|
|
|
|
|
|
|
|
|
é |
|||||
ê1 1 0 0 0 1 1 1ú |
|
ê1ú |
|
ê0ú |
||||||||||||
ê |
|
|
|
|
|
|
|
|
ú |
|
ê |
|
ú |
|
ê |
ú |
ê1 1 1 0 0 0 1 1ú |
|
ê0ú |
|
ê0ú |
||||||||||||
ê |
|
|
|
|
|
|
|
|
ú |
|
ê |
|
ú |
|
ê |
ú |
ê1 1 1 1 0 0 0 1ú |
´ |
ê1ú |
= |
ê0ú |
||||||||||||
ê |
|
|
|
|
|
|
|
|
ú |
ê |
|
ú |
ê |
ú. |
||
ê1 1 1 1 1 0 0 0ú |
|
ê0ú |
|
ê1ú |
||||||||||||
ê0 1 |
1 |
1 |
1 |
1 |
0 |
0ú |
|
ê0ú |
|
ê0ú |
||||||
ê0 0 |
1 |
1 |
1 |
1 |
1 |
0ú |
|
ê1ú |
|
ê0ú |
||||||
ê |
|
|
0 |
1 |
1 |
1 |
1 |
|
ú |
|
ê |
|
ú |
|
ê |
ú |
ë0 0 |
1û |
|
ë1û |
|
ë1û |
|||||||||||
3. Полученный результат складывается с постоянной матрицей столбцом y = (01100011) = 6316.
é1ù é1ù é0ù ê0ú ê1ú ê1ú ê0ú ê0ú ê0ú ê0ú + ê0ú = ê0ú. ê1ú ê0ú ê1ú ê0ú ê1ú ê1ú ê0ú ê1ú ê1ú êë1úû êë0úû êë1úû
Получили байт (11110010)=F2, что соответствует байту, полученному с помощью таблицы подстановок.
Замечание: для байта 00 мультипликативной инверсией является сам байт 00. Обратным преобразователем к SubBytes при расшифровании является преобразование InvSubBytes, которое задается либо табл. 14.2, либо алгоритмом, рассмотренным выше,
только примененным в обратном порядке, где в качестве матрицы X −1 выступает матрица
80
