Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Основы криптологии. Учебное пособие.pdf
Скачиваний:
0
Добавлен:
11.08.2026
Размер:
570 Кб
Скачать

Запишем первый блок шифротекста МНАЕ 16-битовым числом (1011110000000101), из которого находим аргумент функции f:

Y (1) = (10111100), Z(1) = (00000101) .

Далее находим f (Y (1)), f (Z(1)) и восстанавливаем гамму шифра:

ГШ (2) = (1011000001111101).

Второй блок открытого текста находится по формуле

1111010100111101

1011000001111101 (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

xn1 + a

xn2 + ... + 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 + xx + (x2 + x +1) Þ x2 + x +1 = x4 + x +1+ (x3 + xx;

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 + xx =

=(x4 + x +1+ (x3 + xx)´ (x2 + x +1) + (x3 + xx =

= (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

 

ê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ú êëû êëû êëû

Получили байт (11110010)=F2, что соответствует байту, полученному с помощью таблицы подстановок.

Замечание: для байта 00 мультипликативной инверсией является сам байт 00. Обратным преобразователем к SubBytes при расшифровании является преобразование InvSubBytes, которое задается либо табл. 14.2, либо алгоритмом, рассмотренным выше,

только примененным в обратном порядке, где в качестве матрицы X 1 выступает матрица

80