Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Иванов М.А. КМЗИ сети

.pdf
Скачиваний:
404
Добавлен:
28.03.2016
Размер:
3.19 Mб
Скачать

Неприводимые многочлены над GF(11):

N = 1

111

(3)

148

(40)

11

(2)

114

(60)

149

(60)

116

(40)

151

(12)

12

(5)

117

(120)

152

(120)

13

(10)

118

(120)

153

(15)

15

(10)

124

(30)

157

(40)

17

(5)

125

(60)

15А (24)

1А (1)

126

(120)

161

(12)

N = 2

12А (24)

172

(120)

136

(120)

175

(30)

 

 

101 (4)

138

(120)

183

(60)

103 (20)

139

(15)

192

(40)

105 (20)

13А (8)

1А1 (6)

 

 

147

(120)

 

 

391

Приложение 2 Примитивные многочлены над GF(2)

Примечание: многочлены заданы индексами N, i, 0 своих нену-

левых коэффициентов, например, строка 89 38 0 соответствует многочлену x89 + x38 + 1.

2 1 0

34 15 14 1 0

67 10 9 1 0

3 1 0

35 2 0

68 9 0

4 1 0

36 11 0

69 29 27 2 0

5 2 0

37 12 10 2 0

70 16 15 1 0

6 1 0

38 6 5 1 0

71 6 0

7 1 0

39 4 0

72 53 47 6 0

8 6 5 1 0

40 21 19 2 0

73 25 0

9 4 0

41 3 0

74 16 15 1 0

10 3 0

42 23 22 1 0

75 11 10 1 0

11 2 0

43 6 5 1 0

76 36 35 1 0

12 7 4 3 0

44 27 26 1 0

77 31 30 1 0

13 4 3 1 0

45 4 3 1 0

78 20 19 1 0

13 4 3 1 0

46 21 20 1 0

79 9 0

14 12 11 1 0

47 5 0

80 38 37 1 0

15 1 0

48 28 27 1 0

81 4 0

16 5 3 2 0

49 9 0

82 38 35 3 0

17 3 0

50 27 26 1 0

83 46 45 1 0

18 7 0

51 16 15 1 0

84 13 0

19 6 5 1 0

52 3 0

85 28 27 1 0

20 3 0

53 16 15 1 0

86 13 12 1 0

21 2 0

54 37 36 1 0

87 13 0

22 1 0

55 24 0

88 72 71 1 0

23 5 0

56 22 21 1 0

89 38 0

24 4 3 1 0

57 7 0

90 19 18 1 0

25 3 0

58 19 0

91 84 83 1 0

26 8 7 1 0

59 22 21 1 0

92 13 12 1 0

27 8 7 1 0

60 1 0

93 2 0

28 3 0

61 16 15 1 0

94 21 0

29 2 0

62 57 56 1 0

95 11 0

30 16 15 1 0

63 1 0

96 49 47 2 0

31 3 0

64 4 3 1 0

97 6 0

392

32 28 27 1 0

65 18 0

98 11 0

33 13 0

66 10 9 1 0

 

Примитивные многочлены вида x N + x i + 1, где N – число Мерсенна:

17 11 0

127 90 0

607 460 0

17 12 0

127 97 0

607 502 0

17 14 0

127 112 0

1279 861 0

31 18 0

127 120 0

1279 1063 0

31 24 0

521 353 0

2281 1252 0

31 25 0

521 363 0

2281 1366 0

31 28 0

521 473 0

2281 1566 0

89 38 0

521 489 0

3217 2641 0

127 64 0

607 334 0

3217 3150 0

Примитивные многочлены вида xN + xi + 1, где i = 8, 16, 32, 64, 128:

15 8 0

65 32 0

105 16 0

135 16 0

177 8 0

39 8 0

81 16 0

119 8 0

159 128 0

225 32 0

63 32 0

97 64 0

127 64 0

175 16 0

521 320

Примитивные многочлены вида xN + xi + 1, где (i, 2N – 1) = 1:

15 7 0

73 31 0

135 22 0

207 43 0

378 43 0

18 7 0

79 9 0

140 29 0

212 105 0

378 107 0

20 3 0

79 19 0

142 21 0

218 11 0

380 47 0

23 5 0

81 35 0

145 52 0

218 15 0

390 89 0

23 9 0

84 13 0

145 69 0

218 71 0

396 25 0

25 3 0

87 13 0

148 27 0

218 83 0

396 109 0

25 7 0

94 21 0

150 53 0

225 74 0

396 169 0

28 3 0

95 11 0

151 3 0

225 88 0

396 175 0

28 9 0

95 17 0

151 9 0

225 97 0

404 189 0

28 13 0

97 6 0

151 15 0

225 109 0

412 147 0

33 13 0

97 12 0

151 31 0

231 26 0

428 105 0

36 11 0

97 33 0

151 39 0

231 34 0

436 165 0

39 14 0

97 34 0

151 43 0

234 31 0

460 61 0

41 3 0

98 11 0

151 45 0

234 103 0

462 73 0

393

41 20 0

98 27 0

151 51 0

236 5 0

475 15 0

47 5 0

100 37 0

151 63 0

250 103 0

476 141 0

47 14 0

103 9 0

151 66 0

252 67 0

484 105 0

47 20 0

103 13 0

151 67 0

255 52 0

508 109 0

47 21 0

103 30 0

151 70 0

255 55 0

524 167 0

49 9 0

103 31 0

159 31 0

255 82 0

532 37 0

49 12 0

105 17 0

159 34 0

258 83 0

540 179 0

49 15 0

105 37 0

159 40 0

266 47 0

540 211 0

49 22 0

105 43 0

161 18 0

268 25 0

564 163 0

52 19 0

105 52 0

161 39 0

268 61 0

588 151 0

52 21 0

106 15 0

161 60 0

270 53 0

588 253 0

55 24 0

108 31 0

170 23 0

270 133 0

708 278 0

57 7 0

111 10 0

172 7 0

282 35 0

708 301 0

57 22 0

111 49 0

174 13 0

282 43 0

756 119 0

58 19 0

113 9 0

175 6 0

284 119 0

756 349 0

60 11 0

113 15 0

175 18 0

286 69 0

780 299 0

63 5 0

113 30 0

175 57 0

286 73 0

804 295 0

63 31 0

118 33 0

177 22 0

292 97 0

828 205 0

65 18 0

118 45 0

177 88 0

294 61 0

 

68 9 0

119 38 0

178 87 0

300 7 0

 

68 33 0

121 18 0

183 56 0

300 73 0

 

71 6 0

129 5 0

194 87 0

300 91 0

 

71 9 0

129 31 0

198 65 0

316 135 0

 

71 18 0

129 46 0

201 14 0

322 67 0

 

71 20 0

130 8 0

201 17 0

332 123 0

 

71 35 0

132 29 0

201 59 0

350 53 0

 

73 25 0

134 57 0

201 79 0

364 67 0

 

73 28 0

135 11 0

202 55 0

366 29 0

 

394

Приложение 3 Криптоалгоримы с архитектурой «Куб»

Трехмерный блок замены

Блоки замены (S-блоки) являются важнейшим элементом криптографических примитивов. Именно от качества используемых S-блоков зависят непредсказуемость формируемых псевдослучайных последовательностей и криптостойкость алгоритмов хеширования, блочного и поточного шифрования. Рассматриваются два новых способа построения S-блоков, блоки замены могут быть названы 2D и 3D S-блоками соответственно.

Алгоритм функционирования 2D S-блока. Представим вход-

ные и выходные блоки данных, а также все промежуточные результаты преобразований в виде квадратного массива битов размерностью N υ N, где N – разрядность используемых узлов замены. Таким образом, объем ключевой информации, однозначно определяющей логику работы каждого узла замены, равен N υ 2N.

Последовательность выполнения операции A = SubSquare[A] (или, кратко, A = Ssq [A]), замены квадратного массива битов A размерностью N υ N, имеет следующий вид:

1)разбиение входного массива A на N строк Ri длины N,

i= 0, 1, …, (N – 1);

2)замена строк SubRows, т.е. преобразование каждого i-го

N-разрядного двоичного набора Ri с использованием соответствующего узла замены Si: Ri = Si[Ri];

3)разбиение получившегося массива A = SubRows[A] на N столбцов Ci длины N

4)замена столбцов SubColumns, т.е. преобразование каж-

дого i-го N-разрядного двоичного набора Ci с использованием соответствующего узла замены Si+N: Ci = Si+N[Ci];

5)результатом замены является A = SubColumns[A].

Вчастном случае, когда используется только одна таблица замен, т.е. Si = S, получаем следующий алгоритм:

1)разбиение входного массива A на N строк Ri длины N;

395

2)замена строк SubRows, т.е. преобразование каждого i-го

N-разрядного двоичного набора Ri:

Ri = S[Ri], i = 0, 1, …, (N – 1);

3)разбиение получившегося массива A = SubRows[A] на N столбцов Ci длины N;

4)замена столбцов SubColumns, т.е. преобразование каждого i-го N-разрядного двоичного набора Ci: Ci = S[Ci];

5)результатом замены является A = SubColumns[A].

Алгоритм функционирования 3D S-блока. Представим вход-

ные и выходные блоки данных, а также все промежуточные результаты преобразований в виде кубического массива битов размерностью N υ N υ N, где N – разрядность используемых узлов замены. Таким образом, объем ключевой информации, однозначно определяющей логику работы каждого узла замены, равен N υ 2N.

Последовательность выполнения операции замены кубического массива битов A = SubCube[A] (или кратко, A = Scu[A]) размерностью N υ N υ N имеет следующий вид:

1)разбиение входного массива A на N слоев Lxi размерностью N υ N вдоль оси x, i = 0, 1, …, (N – 1);

2)замена слоев вдоль оси x SubLayersX, т.е. выполнение преобразования Lxi = SubSquare[Lxi] каждого i-го слоя Lxi

сиспользованием соответствующих узлов замены;

3)разбиение получившегося массива A = SubLayersX[A] на N слоев Lyi размерностью N υ N вдоль оси y;

4)замена слоев вдоль оси y SubLayersY, т.е. выполнение преобразования Lyi = SubSquare[Lyi] каждого i-го слоя Lyi

сиспользованием соответствующих узлов замены;

5)разбиение получившегося массива A = SubLayersY[A] на N слоев Lzi размерностью N υ N вдоль оси z;

6)замена слоев вдоль оси z SubLayersZ, т.е. выполнение преобразования Lzi = SubSquare[Lzi] каждого i-го слоя Lzi

сиспользованием соответствующих узлов замены;

7)результатом замены является A = SubLayersZ [A].

396

Наиболее очевидное назначение предлагаемых алгоритмов – преобразование N2- и N3-разрядных блоков данных с использованием таблицы замен размерности N × 2N.

Трехмерный итеративный криптоалгоритм DOZEN

Рассмотрим 3D преобразование данных с архитектурой «Куб», названное авторами DOZEN (dozen – англ. дюжина; название обусловлено тем, что алгоритм имеет двенадцать основных шагов, как будет раскрыто далее).

Основные принципы проекта:

представление входных и выходных блоков данных, всех промежуточных результатов преобразований и раундовых ключей (RoundKeys) K0, K1, K2, K3 в виде кубического массива байтов 4 υ 4 υ 4;

определение понятия слоя (Layer) − квадратного массива байтов 4 υ 4;

представление i-го раундового ключа в виде четырех под-

ключей (RoundSubKeys) Ki0, Ki1, Ki2, Ki3, i 1,2,3, каждый

из которых суть квадратный массив байтов 4 υ 4; трехмерное преобразование блока данных по слоям вдоль осей x, y, z;

включение в состав операции преобразования слоя (T_Layer) четырех шагов – замены байтов (SubBytes), перемешивания строк (МixRows), перемешивания столбцов (MixColumns), сложения (XOR) с раундовым подключом

(AddRoundSubKey);

использование при выполнении преобразований МixRow и MixColumn операции, использующейся в криптоалгоритме Rijndael при реализации преобразования MixColumn.

Последовательность преобразования блока данных размером

512 бит (4 υ 4 υ 4 υ 8):

разбиение блока данных на слои (Layers) Lx0, Lx1, Lx2, Lx3 вдоль оси x;

первый раунд: стохастическое преобразование слоев (T_Layer) Lx0, Lx1, Lx2, Lx3 путем выполнения для каждого

397

z0

слоя Lxk шестнадцати (по числу байтов) операций SubByte, четырех (по числу строк) операций МixRow, четырех (по числу столбцов) операций MixColumn и операции

AddRoundSubKey;

разбиение блока данных на слои Ly0, Ly1, Ly2, Ly3 вдоль оси y; второй раунд: стохастическое преобразование слоев Ly0, Ly1, Ly2, Ly3 путем выполнения для каждого слоя Lyk шестнадцати (по числу байтов) операций SubByte, четырех (по числу строк) операций МixRow, четырех (по числу столб-

цов) операций MixColumn и операции AddRoundKey;

разбиение блока данных на слои Lz0, Lz1, Lz2, Lz3 вдоль оси z; третий раунд: стохастическое преобразование слоев Lz0, Lz1, Lz2, Lz3 путем выполнения для каждого слоя Lzk шестнадцати (по числу байтов) операций SubByte, четырех (по числу строк) операций МixRow, четырех (по числу столбцов)

операций MixColumn и операции AddRoundKey.

Окончательно, получаем следующую последовательность 3D-преобразований:

Шаг 0. Сложение с раундовым ключом K0 (AddRoundKey

K0).

Первый раунд:

Шаг 1. Преобразование слоя Lx0 (T_Layer Lx0). Шаг 2. Преобразование слоя Lx1 (T_Layer Lx1). Шаг 3. Преобразование слоя Lx2 (T_Layer Lx2). Шаг 4. Преобразование слоя Lx3 (T_Layer Lx3). Второй раунд:

Шаг 5. Преобразование слоя Ly0 (T_Layer Ly0). Шаг 6. Преобразование слоя Ly1 (T_Layer Ly1). Шаг 7. Преобразование слоя Ly2 (T_Layer Ly2). Шаг 8. Преобразование слоя Ly3 (T_Layer Ly3). Третий раунд:

Шаг 9. Преобразование слоя L (T_Layer Lz0). Шаг 10. Преобразование слоя Lz1 (T_Layer Lz1). Шаг 11. Преобразование слоя Lz2 (T_Layer Lz2). Шаг 12. Преобразование слоя Lz3 (T_Layer Lz3).

398

Особенностями предложенного преобразования являются байт-ориентированная структура и высокая степень параллелизма на уровне инструкций, позволяющая достичь высокой производительности работы алгоритма для гибридных вычислительных систем CPU/GPU.

399

Михаил Александрович Иванов Илья Владимирович Чугунков

Криптографические методы защиты информации в компьютерных системах и сетях

Учебное пособие

Под редакцией М.А. Иванова

Редактор Е.Г. Станкевич Оригинал-макет подготовлен М.А. Ивановым

Подписано в печать 15.11.2011.

Формат 60×84 1/16.

Печ. л. 25,0.

Уч.-изд. л. 20,0.

Тираж 130 экз.

Изд. № 1/37

Заказ № 3

_________________________________________________________________

Национальный исследовательский ядерный университет «МИФИ». 115409, Москва, Каширское ш., 31

ООО «Полиграфический комплекс «Курчатовский». 144000, Московская область, г. Электросталь, ул. Красная, 42