
- •7.1 Аналіз таблиць підстановки на прикладі гост 281347 -89.
- •7.2 Побудування таблиць підстановки типу « байт в байт»(aes)
- •7.3 Блочні симетричні шифри та їх властивості.
- •7.4 Блокові симетричні шифри на основі spn структури
- •7.1 Аналіз таблиць підстановки на прикладі гост 281347 -89.
- •7.2 Побудування таблиць підстановки типу « байт в байт»(aes)
- •7.3 Блочні симетричні шифри та їх властивості.
- •Стан створення та застосування бсш на світовому рівні
- •7.4 Блокові симетричні шифри на основі spn структури
7.4 Блокові симетричні шифри на основі spn структури
Згідно класифікації [60 ] до БСШ нормального рівня стійкості відносять шифри у яких довжина блоку lб = 128 бітів, а довжина ключа lк = 128 бітів. Основними БСШ, що можна віднести до нормального рівня стійкості, є БСШ FIPS 197(АЕS), Camellia та SEED[ 98 ]. Розглянемо основні криптографічні функції вказаних шифрів та особливості застосування.
БСШ нормального рівня стійкості FIPS – 197(AES). В результаті виконання проекту AES переможцем був оголошений БСШ Rijndael [204], в подальшому на його основі у звуженій версії був прийнятий федеральний стандарт США FIPS-197, який на нинішній час отримав широке застосування в США та у світі. Основною відмінністю FIPS-197 від Rijndael є те, що в першого довжина блоку може приймати тільки значення lб = 128, довжина ключа lк = 128, а також за деякою згодою 160 та 192 бітів [198]. В той же час в Rijndael допустимими є довжини блоку/ ключа 128/192, 128/256, 192/192, 192/256 та 256/256 бітів.
Загальна характеристика AES [198, 204]. AES – це БСШ, в тому числі, нормального рівня стійкості, у якому криптографічні перетворення виконуються в режимі простої підстановки над 128 – бітовими блоками (16 байтами) та довжинами ключів 128 і 192 біт. Вказані варіанти БСШ іменують «AES-128» та «AES-192». В подальшому, враховуючи ідентичність алгоритмів шифрування і при довжині ключа 256 бітів, будемо розглядати і цей випадок, але розуміючи що в ньому забезпечується високий рівень стійкості.
Таким чином, в алгоритмі AES нормального рівня стійкості, довжина вхідного і вихідного блоку складає 128 бітів (16 байтів або 4 32 бітних слова). Довжина ключа шифрування K складає 128, 192 або 256 бітів. Число циклів (раундів) перетворення Nr, складає у залежності від довжини ключа, відповідно 10, 12 або 14 циклів (таблиця 2.6).
Таблиця 2.6. Кількість циклів в AES
БСШ |
Кількість раундів Nr |
AES-128 |
10 |
AES-192 |
12 |
AES-256 |
14 |
Зашифрування та розшифрування в AES виконується ітеративно з використанням чотирьох різний байт-орієнтованих перетворень:
1) байтова таблична підстановка з використанням таблиці підстановки (S-блок);
2) табличне перетворення - зсув рядків масиву state;
3)табличне перетворення - змішування даних в кожному стовпці масиву state;
4) криптографічне перетворення - складання за модулем 2 циклового ключа х плинним станом state.
Алгоритм
зашифрування AES. Алгоритм зашифрування
наведено на рис. 2.10. Зашифрування в
алгоритмі AES виконуються на двомірному
масиві байтів, який позначають
state(стан). State описується чотирма рядками
байтів, кожен із яких містить 4 байти. У
масиві state, що позначається символом s,
кожен окремий байт має два індекси,
номер рядку r в діапазоні 0 £r < 4 та номер стовпця c в діапазоні 0£c < 4. State позначається S = ()
та подається на рис. 2.11.
Рис. 2.10. Алгоритм зашифрування AES.
Додаток А
2.7.2 Задачі для самостійного розв'язку
Задача 1.
Знайти
афінне перетворення
,
де
та
- константи, що мають вигляд:
,
.
При
цьому
,
якщо
=99+3k,
де k – номер з журналу. Знайти відстань
Хемінга між вхідними та вихідними
елементами.
Задача 2.
Розробити
програму знаходження обернених елементів
для усіх значень,
в
полі GF(28). При цьому прийняти елемент
- 00000000 i обернений йому елемент
=00000000.
Примітивний поліном
.
Задача 3.
Розробити програму розрахунку афінного перетворення байта та сформувати таблицю підстановки як результат афінного перетворення (тобто реалізувати повністю перетворення bytesub).
Задача 4.
При перемішуванні в стовпцях виконується перетворення:
,
де
,
,
а j є номер стовпця із таблиці 2.11
Таблиця 2.11
j |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
a0j |
19 |
77 |
5 |
239 |
13 |
116 |
18 |
17 |
9 |
101 |
29 |
111 |
93 |
207 |
94 |
182 |
a1j |
123 |
145 |
193 |
174 |
24 |
199 |
181 |
39 |
28 |
197 |
21 |
16 |
81 |
174 |
170 |
229 |
a2j |
74 |
99 |
17 |
11 |
204 |
209 |
29 |
91 |
154 |
26 |
99 |
139 |
78 |
93 |
11 |
65 |
a3j |
159 |
231 |
96 |
91 |
179 |
7 |
48 |
251 |
201 |
11 |
137 |
54 |
247 |
105 |
139 |
207 |