align=top>
UK, Israel, Norway
SERPENT
Ross Anderson, Eli Biham, Lars Knudsen
Наприкінці серпня 1998 року в Каліфорнії відбулася конференція, присвячена відбору кандидатів на AES, що отримала назву AES1. На конференції давалися короткі описи алгоритмів шифрування, і були дані відповіді на накопичені запитання.
В якості основних критеріїв оцінки алгоритмів були [3]:
- Крипостійкість. Проводилося порівняння алгоритмів на ступінь незалежності вихідного блоку від випадкової перестановки бітів вхідного блоку, схильність відомим кріптоатакам. Кожен кандидат повинен був представити оціночну крипостійкість алгоритму.
-Вартість. Кандидат надавав інформацію про ліцензійних угодах і патентах на алгоритм. Також враховувалася продуктивність алгоритму (швидкість шифрування), необхідний для шифрування розмір пам'яті.
-Особливості алгоритму і його реалізації. Гнучкість, апаратне і програмне зручність реалізації.
У квітні 1999 року в Римі відбулася конференція AES2, в рамках якої проводилися порівняння продуктивності програмних реалізацій алгоритмів з оптимізаціями під мови С і Java. Найбільшу швидкість шифрування/дешифрування показав алгоритм Crypton (40 Мбайт/с), найменшу Magenta і НРС (2Мбайт/с). Хоча при проведенні тестів на різних платформах і з різними компіляторами, отримані результати досить сильно розрізнялися. Всі блокові алгоритми можна розбити на дві основні групи:
використовують мережі Фейстеля
мережі перестановок-підстановок (SP-мережі) засновані на послідовних перестановках і підстановках, що залежать від ключа.
Серед алгоритмів-претендентів до перших відносяться CAST-256, DEAL, DFC, E2, LOKI97, MAGENTA, MARS, RC6, TWOFISH, до других CRYPTON, Rijndael, SAFER + і SERPENT. Алгоритми FROG і НРС не підпадають ні під одну з категорій, але вході обговорення кандидатів не виявлено будь-яких видатних якостей даних алгоритмів.
У результаті первинного обговорення було виявлено слабка крипостійкість алгоритму MAGENTA, незабаром з'явилися дані з криптоаналіз алгоритмів FROG, LOKI, що показують слабкості алгоритмів щодо інших алгоритмів. Також частина алгоритмів мали низькі шанси на успіх через вкрай малій швидкості шифрування/дешифрування.
Відбір фіналістів за названими критеріями тривав до початку серпня 1999.
9августа NIST випустила прес-реліз "Announces AES Finalists ", в якому оголошувалося про п'ять фіналістів: MARS, RC6, Rijndael, Serpent, TwoFish. p> Rijndael
Формат блоків даних і число раундів
RIJNDAEL - це симетричний блоковий шифр, що оперує блоками даних розміром 128 і довжиною ключа 128, 192 або 256 біт - назва стандарту відповідно "AES-128", "AES-192", і "AES-256". p> Введемо наступні позначення:
Nb - число 32-бітних слів містяться у вхідному блоці, Nb - 4;
Nk - число 32-бітних слів містяться в ключі шифрування, Nk = 4,6,8;
Nr - число раундів шифрування, як функція від Nb і Nk, Nr = 10,12,14. p> Вхідні (input), проміжні (state) і вихідні (Output) результати перетворень, які виконуються в рамках криптоалгоритма, називаються станами (State). Стан можна представити у вигляді матриці 4 х Nb, елементами якої є байти (чотири рядки по Nb байт) у порядку S00, S10, S20, S30, Sm, Sn, S21, S31, ---. Малюнок 1.1 демонструє таке подання, що носить назву архітектури В«КвадратВ». br/>В
Малюнок 1.1 В«Приклад представлення блоку у вигляді матриці 4xNb В». br/>
На старті процесів шифрування і дешифрування масив вхідних даних то, щ, ..., щ 5 перетвориться в масив State за правилом s [r, c] = in [r + 4c], де 0 <г <4 і 0 <с
Чотири байта в кожному стовпці стану представляють собою 32-бітове слово, якщо г - номер рядка в змозі, то одночасно він є індексом кожного байта в цьому слові. Отже стан можна представити як одновимірний масив 32-бітових слів wo, ..., wN, де номер стовпця стану з є індекс у цьому масиві. Тоді стан можна представити так:
В
Ключ шифрування також як і масив State представляється у вигляді прямокутного масиву з чотирма рядками. Кількість стовпців цього масиву одно Nk.
Для алгоритму AES число раундів Nr визначається на старті залежно від значення Ж (Таблиця 1.1):
Nk
Nb
Nr
AES-128
4
4
10
AES-192
6
4
12
<...