- •Лабораторна робота № 5 Конкурс aes. Алгоритм Rijndael
- •Конкурс aes
- •Алгоритм Rijndael
- •Представлення вхідних даних в алгоритмі aes:
- •Формування раундових ключів
- •4. Операція AddRoundKey.
- •Розшифрування aes
- •Раундове перетворення аes
- •1. Операція SubBytes.
- •2. Операція ShiftRows.
- •3. Операція MixColumns.
Алгоритм Rijndael
Даний блоковий шифр розвиває нетрадиційну для останнього десятиліття структуру: прямокутні KASLT - мережі. Ця структура отримала свою назву через те, що блок, що шифрується, представляється у вигляді прямокутника, наприклад, 4х4 або 4х6 байт, а потім над ним за рядками, за стовпцями і побайтно виконується криптоперетворення. KASLT є абревіатурою англійських термінів Key Addition (додавання ключа), Substitution (таблична підстановка) і Linear Transposition (лінійне перемішування). Rijndael описаний авторами (бельгійцями Vincent Rijmen і Joan Daemen) як шифр із змінним розміром блоку і довжиною ключа. Єдині вимоги, які накладаються на ці два параметри – їх кратність 32 бітам. Розмір блоку визначається як Nb×32, довжина ключа – Nk×32. Кількість раундів мережі, необхідна для стійкого шифрування залежить від двох параметрів. Для конкурсу AES відповідно до вимог автори зафіксували Nb = 4 і Nk = 4, 6, і 8. У цьому випадку кількість раундів мережі Nr відповідно дорівнює 10, 12 і 14. Потенційно шифр може працювати і з великими за розмірами блоками.
До переваг алгоритму необхідно віднести гарну швидкодію на всіх платформах від 8- до 64-бітних. Структура шифру дозволяє використовувати його за будь-яких комбінаціях розміру блоку і довжини ключа – єдиною необхідною зміною буде лише зміна кількості раундів.
Можливість розпаралелювання у Rijndael дуже висока в порівнянні з іншими конкурсантами. Коефіцієнт прискорення обчислень при наявності значного числа процесорів в системі у Rijndael досягає 6-8 раз, що більш ніж в два рази вище найближчого суперника.
Таким чином, Rijndael – один з перших KASLT-шифрів з надійно доведеною криптостійкістю при малому числі раундів, варіант досягнення "стійкість / швидкодія", що і у традиційній мережі Файстеля, але на іншій, більш універсальній для обчислювальної техніки, архітектурі KASLT.
До недоліків шифру відносять необхідність розробки двох незалежних процедур - шифрування і дешифрування.
Загальні характеристики AES:
AES зашифровує і розшифровує 128-бітові блоки даних.
AES дозволяє використовувати три різних ключа довжиною 128, 192 або 256 біт (в залежності від довжини ключа версії шифру позначають AES-128, AES-192 або AES-256).
Від розміру ключа залежить число раундів шифрування:
довжина 128 біт - 10 раундів;
довжина 192 біта - 12 раундів;
довжина 256 біт - 14 раундів.
Всі раунди, крім останнього, ідентичні.
Перед першим раундом виконується операція AddRoundKey (сумування за модулем 2 з початковим ключем шифру). Перетворення, виконані в одному раунді, позначають Round (,) State RoundKey, де змінна State - матриця, що описує дані на вході раунду і на його виході після шифрування; змінна RoundKey - матриця, яка містить раундовий ключ. Раунд складається з 4 різних перетворень:
SubBytes - побайтна підстановка в S-боксі з фіксованою таблицею замін;
ShiftRows – побайтний зсув зрушення рядків матриці State на різну кількість байт;
MixColumns – перемішування байт в шпальтах;
AddRoundKey – складання з раундовим ключем (операція XOR).
Останній раунд відрізняється від попередніх тим, що не активізує функцію MixColumns.
При дешифруванні в кожному раунді виконуються зворотні операції: InvShiftRows, InvSubBytes, AddRoundKey і InvMixColumns. Порядок виконання операцій при шифрування і дешифрування різний.
