Методические указания к лабораторной работе




Скачать 430.89 Kb.
страница4/6
Дата06.06.2016
Размер430.89 Kb.
1   2   3   4   5   6

4.1. Шифрование


Для шифрования необходим ключ. Размер ключа в алгоритме AES 128 бит, обычно ключ представляют как матрицу 44 байта.

В начале процесса шифрования, входные данные разбиваются на блоки размером 16 байт или 128 бит. Если полный размер данных не кратен 16 байтам  данные дополняются до размера кратного 16 байтам. Блок данных в алгоритме AES называется state и обычно представляется в виде матрицы 44 байта, см. рис. . Операция шифрования каждого блока данных проводится независимо от содержимого других блоков. По окончанию шифрования блока  матрица заполняется следующей порцией данных и процесс повторяется. В силу независимости шифрования одного блока от другого процесс шифрования хорошо поддается распараллеливанию.



Представление блока данных AES  state

Рис. 4.1



Каждый блок шифруется в несколько этапов  раундов. Схема криптопреобразования может быть записана так.

1. Расширение ключа KeyExpansion.

2. Начальная операция  AddRoundKey — суммирование с основным ключом.

3. 9 раундов из четырех шагов каждый.

3.1. SubBytes — замена байтов state по таблице замен.

3.2. ShiftRows — циклический сдвиг строк state.

3.3. MixColumns — перестановка столбцов state.

3.4. AddRoundKey — суммирование с раундовым ключом.

4. Заключительный 10-й раунд

4.1. SubBytes — замена байтов state по таблице замен.

4.2. ShiftRows — циклический сдвиг строк state.

4.3. AddRoundKey — суммирование с раундовым ключом.

Далее подробно описано каждое из преобразований.

4.1.1. Преобразование SubBytes


Преобразование SubBytes – это нелинейная замена байт, проводящаяся над каждым байтом state, используя таблицу замены S-box, см. табл. . Цель применения таблицы замен  затруднить линейный и дифференциальный криптоанализ. Таблица замен в алгоритме AES фиксированная. В табл.  числа представлены в шестнадцатеричной системе счисления, в этой системе счисления любое значение байта представимо не более чем двумя шестнадцатеричными разрядами.

Таблица 4.1



Таблица замены байт S-box алгоритма AES




0

1

2

3

4

5

6

7

8

9

a

b

c

d

e

f

00

63

7c

77

7b

f2

6b

6f

c5

30

01

67

2b

fe

d7

ab

76

10

ca

82

c9

7d

fa

59

47

f0

ad

d4

a2

af

9c

a4

72

c0

20

b7

Fd

93

26

36

3f

f7

cc

34

a5

e5

f1

71

d8

31

15

30

04

c7

23

c3

18

96

05

9a

07

12

80

e2

eb

27

b2

75

40

09

83

2c

1a

1b

6e

5a

a0

52

3b

d6

b3

29

e3

2f

84

50

53

d1

00

ed

20

fc

b1

5b

6a

cb

be

39

4a

4c

58

cf

60

d0

ef

aa

fb

43

4d

33

85

45

f9

02

7f

50

3c

9f

a8

70

51

a3

40

8f

92

9d

38

f5

bc

b6

da

21

10

ff

f3

d2

80

cd

0c

13

ec

5f

97

44

17

c4

a7

7e

3d

64

5d

19

73

90

60

81

4f

dc

22

2a

90

88

46

ee

b8

14

de

5e

0b

db

a0

e0

32

3a

0a

49

06

24

5c

c2

d3

ac

62

91

95

e4

79

b0

e7

c8

37

6d

8d

d5

4e

a9

6c

56

f4

ea

65

7a

ae

08

c0

ba

78

25

2e

1c

a6

b4

c6

e8

dd

74

1f

4b

bd

8b

8a

d0

70

3e

b5

66

48

03

f6

0e

61

35

57

b9

86

c1

1d

9e

e0

e1

f8

98

11

69

d9

8e

94

9b

1e

87

e9

ce

55

28

df

f0

8c

a1

89

0d

bf

e6

42

68

41

99

2d

0f

b0

54

bb

16

Замена байта по таблице S-box производится так:

  1. Байт Z преобразуется в шестнадцатеричную систему счисления, например XYh, X  старший разряд, Y  младший разряд. Если старшего разряда нет  он заменяется нулем.

  2. В S-box выбирается строка X и столбец Y.

  3. Значение Z' на пересечении строки X и столбца Y таблицы S-box используется как замена Z.

Например, для значения байта Z = 9Ah, заменой согласно таблицы S-box будет Z' = B8h. Полный процесс SubBytes состоит в замене всех 16 байт матрицы state.

Замена байта в state

Пример замены одного байта с помощью S-box.

Рис. 4.2



ПРИМЕЧАНИЕ. Нет никакой необходимости использовать таблицу S-box в том виде, в котором она приведена в описании AES. Проще представить ее в виде одномерного массива байт, где индексом служит значение байта, а содержимым  содержимое соответствующей ячейки S-box. Например, S-arr = {63h, 7Ch, 77h, }. Процесс замены по такой таблице сводится к Z' = S-arr[Z], что заметно быстрее. Размер памяти, требующийся для размещения таблицы замен не изменится.

4.1.2. Преобразование ShiftRows


В преобразовании ShiftRows байты в последних трех строках state циклически смещаются влево на различное число байт. Строка 1 (нумерация строк с нуля, см. рис. ) смещается на один байт, строка 2 – на два байта, строка 3 – на три байта. На рис.  проиллюстрировано применение преобразования ShiftRows к state.

Преобразование сдвига AES  ShiftRows

Рис. 4.3

4.1.3. Преобразование MixColumns


В преобразовании MixColumns  перемешивание столбца  столбцы состояния (state) рассматриваются как полиномы над полем F(28) и умножаются по модулю x4 + 1 на постоянный полином:

a(x) = 3x3 + 1x2 + 1x2 + 2 (4.1)

Процесс умножения полиномов эквивалентен матричному умножению

,

где с – номер столбца массива state и 0  с  3. Операция сложения и умножения чисел выполняется по правилам, описанным в пунктах  и .

В результате такого умножения, байты столбца c {S0cS1cS2cS3c} заменяются, соответственно, на байты

S'0c = (2S0c)  (3S1c)  S2c  S3c;


S'1c = S0c  (2S1c)  (3S2c)  S3c; (4.2)
S'2c = S0c  S1c (2S2c)  (3S3c);
S'3c = (3S0c)  S1c  S2c  (2S3c).

Преобразование  применяется к каждому из четырех столбцов state.


4.1.4. Преобразование AddRoundKey


В преобразовании AddRoundKey, раундовый ключ RK добавляется к state посредством поразрядного XOR. Каждый раундовый ключ состоит из 16 байт расширенного ключа. Байты раундового ключа записываются в матрицу 44, подобную state. Каждый байт раундового ключа суммируется с соответствующим байтом из state, как показано на рис. .

Суммирование с раундовым ключом  AddRoundKey

Рис. 4.4

4.1.5. Расширение ключа KeyExpansion


Алгоритм AES берет ключ шифрования К и выполняет операцию расширения ключа, чтобы создать набор данных для раундовых ключей. Расширенный ключ W содержит 4(10+1) слов  начальный ключ в 4 слова и по 4 слова расширенного ключа на каждый из 10 раундов. Расширенный ключ W состоит из слов (четыре байта на слово), обозначаемых ниже как wi, где i находится в диапазоне [0..44]. Полная длина расширенного ключа 1408 бит, по 128 бит на каждый раунд.

В процессе расширения ключа используется массив констант Rcon. Элементы массива Rcon пронумерованы от 1 до 256+3. Значения элементов массива определены так



Rcon1 = 1;

Rconk = 2  Rconk-1 = 2k-1, для k = 2, 3,255;

Rconk = 0, для k = 256, 257, 258;

Расширение ключа можно описать следующей последовательностью операций.



  1. Четыре слова ключа шифрования К копируются в первые четыре слова расширенного ключа W: wi = ki для i = 0, 1, 2, 3.

  2. Остальные слова расширенного ключа W для i = 4, 5, 44 генерируются так:

  • если i кратно 4, то wi = SubBytes(RotByte(wi-1))  Rcon(i/4);

  • если i не кратно 4, то wi = wi-4  wi-1.

Функция RotByte переставляет четыре байта исходного слова {a0a1a2a3} с помощью циклической перестановки, превращая в слово {a3a1a2a0}. Функция SubBytes применяет к каждому из четырех байтов слова замену по таблице S-box, как это описано в пункте .

4.1.6. Выбор раундового ключа


Раундовый ключ RK для раунда k выбирается из расширенного ключа W как слова c w4k по w4(k+1).
1   2   3   4   5   6


База данных защищена авторским правом ©uverenniy.ru 2016
обратиться к администрации

    Главная страница