Методы и средства защиты компьютерной информации
Доступ к структуре B в функциях алгоритма Rijndael осуществляется по-разному, в зависимости от операции. S-блок оперирует с битами, ShiftRow - со строками (bi,0, bi,1, bi,2, …, bi,Lb-1) структуры B, а функции AddRoundKey и MixColumn - с четырехбайтовыми словами, обращаясь к столбцам .
2.1 ВЫЧИСЛЕНИЕ КЛЮЧА РАУНДА
И д
ля зашифрования, и для расшифрования требуется сгенерировать Lr раундовых ключей, совокупность которых называется разверткой ключа (key schedule). Развертка строится путем присоединения к секретному ключу пользователя, рекурсивно получаемых: четырехбайтовых слов
.
Первые Lk слов развертки ключа - это сам секретный ключ пользователя. Для Lk Î {4, 6} очередное четырехбайтовое слово ki определяется как сумма по модулю 2 предыдущего слова ki-1 со словом ki-Lk. При i º 0 mod Lk перед операцией XOR нужно применить функцию FLk (k, i), которая включает в себя циклический сдвиг k байтов влево (операция r (k)), подстановку S (r (k)) с использованием S-блока алгоритма Rijndael (к этой операции мы еще вернемся) и сложение по модулю 2 с константой c (ëi/Lkû). Итоговое уравнение функции F таково:
FLk (k, i) = S (r (k)) Å c (ëi/Lkû).
Константы c (j) задаются равенством c (j) = (rc (j), 0, 0, 0), где значения rc (j) определяются рекурсивно как элементы поля F28:
rc (1) = 1, rc (j) = rc (j-1) х = хj-1.
Или в виде численных значений:
rc (1) = '01’, rc (j) = rc (j-1) •'02'.
Программно значение rc (j) реализуется (j - 1) - кратным рекурсивным вызовом функции xtime, с начальным значением аргумента, равным 1 или более быстро - с использованием таблицы предвычислений (см. таблицу 3).
Таблица 3. Константы rc (j) (в шестнадцатеричном виде)
'01’ |
'02' |
'04' |
'08' |
'10' |
'20' |
'40' |
'80' |
'1B' |
'36' |
'6C |
'D8' |
'AB' |
'4D' |
'9A' |
'2F' |
'5E' |
'ВС |
'63' |
'C6' |
'97' |
'35' |
'6A' |
'D4' |
'B3' |
7O' |
'FA' |
'EF' |
'C5 |
'91' |
Для ключей длины 256 бит (то есть при Lk = 8) введена дополнительная операция подстановки: при i º 4 mod Lk перед операцией XOR значение ki-1 заменяется на s (ki-1).
Таким образом, развертка ключей состоит из Lb (Lr + 1) четырехбайтовых слов, включая и секретный ключ пользователя. На каждом раунде i = 0, ., Lr - 1 очередные Lb, четырехбайтовых слова с kLbi по kLb (I+1) выбираются из развертки и используются в качестве ключа раунда. Раундовые ключи рассматриваются, по аналогии с блоками открытого текста, как двумерная структура (см. таблицу 4).
Таблица 4. Представление раундовых ключей
k0,0 |
k 0,1 |
k 0,2 |
k 0,3 |
k 0,4 |
… |
k 0,Lb-1 |
k 1,0 |
k 1,1 |
k 1,2 |
k 1,3 |
k 1,4 |
… |
k 1,Lb-1 |
k 2,0 |
k 2,1 |
k 2,2 |
k 2,3 |
k 2,4 |
… |
k 2,Lb-1 |
k 3,0 |
k 3,1 |
k 3,2 |
k 3,3 |
k 3,4 |
… |
k 3,Lb-1 |
Для ключей длины 128 бит процесс генерации ключа изображен на рис.2.
Рис.2. Диаграмма раундовых ключей для Lk = 4
Пока не известны слабые ключи, использование которых неблагоприятно сказалось бы на стойкости алгоритма Rijndael
2.2 S-БЛОК
Блок подстановки, или S-блок алгоритма Rijndael показывает, каким значением следует заменять каждый байт блока текста на каждом раунде. S-блок представляет собой список из 256 байтов. Сначала каждый ненулевой байт рассматривается как элемент поля F28 и заменяется мультипликативно обратным (нулевые байты остаются неизменными). Затем выполняется следующее аффинное преобразование над полем F2 путем умножения на матрицу и сложения с вектором (11000110):
Здесь через х0 и у0 обозначены младшие, а через х7 и у7 - старшие биты в байте; вектор (11000110) длины 8 соответствует шестнадцатеричному числу '63'.
S-блок построен так, чтобы свести к минимуму чувствительность алгоритма к дифференциальному и линейному методам криптоанализа, а также к алгебраическим атакам. Последовательно применяя приведенную выше процедуру к числам от 0 до 255, получаем таблицу 5 (значения идут по строкам слева направо).
Таблица 5. Значения S-блока
99 |
124 |
119 |
123 |
242 |
107 |
111 |
197 |
48 |
1 |
103 |
43 |
254 |
215 |
171 |
118 |
202 |
130 |
201 |
125 |
250 |
89 |
71 |
240 |
173 |
212 |
162 |
175 |
156 |
164 |
114 |
192 |
183 |
253 |
147 |
38 |
54 |
63 |
247 |
204 |
52 |
165 |
229 |
241 |
113 |
216 |
49 |
21 |
4 |
199 |
35 |
195 |
24 |
150 |
5 |
154 |
7 |
18 |
128 |
226 |
235 |
39 |
178 |
117 |
9 |
131 |
44 |
26 |
27 |
110 |
90 |
160 |
82 |
59 |
214 |
179 |
41 |
227 |
47 |
132 |
83 |
209 |
0 |
237 |
32 |
252 |
177 |
91 |
106 |
203 |
190 |
57 |
74 |
76 |
88 |
207 |
208 |
239 |
170 |
251 |
67 |
77 |
51 |
133 |
69 |
249 |
2 |
127 |
80 |
60 |
159 |
168 |
81 |
163 |
64 |
143 |
146 |
157 |
56 |
245 |
188 |
182 |
218 |
33 |
16 |
255 |
243 |
210 |
205 |
12 |
19 |
236 |
95 |
151 |
68 |
23 |
196 |
167 |
126 |
61 |
100 |
93 |
25 |
115 |
96 |
129 |
79 |
220 |
34 |
42 |
144 |
136 |
70 |
238 |
184 |
20 |
222 |
94 |
11 |
219 |
224 |
50 |
58 |
10 |
73 |
6 |
36 |
92 |
194 |
211 |
172 |
98 |
145 |
149 |
228 |
121 |
231 |
200 |
55 |
109 |
141 |
213 |
78 |
169 |
108 |
86 |
244 |
234 |
101 |
122 |
174 |
8 |
186 |
120 |
37 |
46 |
28 |
166 |
180 |
198 |
232 |
221 |
116 |
31 |
75 |
189 |
139 |
138 |
112 |
62 |
181 |
102 |
72 |
3 |
246 |
14 |
97 |
53 |
87 |
185 |
134 |
193 |
29 |
158 |
225 |
248 |
152 |
17 |
105 |
217 |
142 |
148 |
155 |
30 |
135 |
233 |
206 |
85 |
40 |
223 |
140 |
161 |
137 |
13 |
191 |
230 |
66 |
104 |
65 |
153 |
45 |
15 |
176 |
84 |
187 |
22 |
Другие рефераты на тему «Программирование, компьютеры и кибернетика»:
Поиск рефератов
Последние рефераты раздела
- Основные этапы объектно-ориентированного проектирования
- Основные структуры языка Java
- Основные принципы разработки графического пользовательского интерфейса
- Основы дискретной математики
- Программное обеспечение системы принятия решений адаптивного робота
- Программное обеспечение
- Проблемы сохранности информации в процессе предпринимательской деятельности