- •Основні поняття
- •Області застосування
- •Платформи
- •Додаткові вимоги
- •Мережа Фейштеля
- •Алгоритм des Принципи розробки
- •Алгоритм потрійний des
- •Недоліки подвійного des
- •Потрійний des із двома ключами
- •Алгоритм Blowfish
- •Алгоритм idea
- •Принципи розробки
- •Криптографічна стійкість
- •Алгоритм держстандарт 28147
- •Режими виконання алгоритмів симетричного шифрування
- •Огляд процесу розробки aes
- •Історична довідка
- •Огляд фіналістів
- •Критерій оцінки
- •Результати другого етапу обговорення
- •Процес вибору
- •Методологія й результати вибору Принципи вибору алгоритму
- •Кількість алгоритмів aes
- •Запасний алгоритм
Огляд фіналістів
Всі п'ять фіналістів є ітераційними блоковими алгоритмами шифрування: вони визначають перетворення, що повторюється певне число раз над блоком шифруємих або дешифрованих даних. Шифруємый блок даних називається plaintext; зашифрований plaintext називається ciphertext. Для дешифрування як оброблюваний блок даних використовується ciphertext. Кожний фіналіст також визначає метод створення серії ключів з вихідного ключа, називаний керуванням ключем. Отримані ключі називаються підключами. Функції раунду використовують як вхід різні підключи для конкретного блоку даних.
У кожного фіналіста перша й остання криптографічні операції є деякою формою перемішування підключей і блоку даних. Такі операції, використовувані на початковому кроці першого раунду й заключному кроці останнього раунду, називаються pre- і post-забілюванням (whitening) і можуть бути визначені окремо.
Існують також деякі інші технічні особливості фіналістів. Чотири фіналісти визначають таблиці підстановки, називані S-box: AxB-бітний S-box заміняє А вхідних біт на В вихідних біт. Три фіналісти визначають функції раунду, що є мережею Фейштеля. У класичній мережі Фейштеля одна половина блоку даних використовується для модифікації іншої половини блоку даних, потім половини міняються місцями. Два фіналісти не використовують мережу Фейштеля, у кожному раунді обробляють паралельно весь блок даних, застосовуючи підстановки й лінійні перетворення; таким чином, ці два фіналісти є прикладами алгоритмів, що використовують лінійно-підстановочні перетворення.
Далі розглянемо кожний з алгоритмів за абеткою.
MARS виконує послідовність перетворень у наступному порядку: додавання із ключем у якості pre-whitening, 8 раундів прямого перемішування без використання ключа, 8 раундів прямого перетворення з використанням ключа, 8 раундів зворотного перетворення з використанням ключа, 8 раундів зворотного перемішування без використання ключа й вирахування ключа в якості post-whitening. 16 раундів з використанням ключа називаються криптографічним ядром. Раунди без ключа використовують дві 8х16- бітних S-boxes і операції додавання й XOR. На додаток до цих елементів раунди із ключем використовують 32-бітне множення ключа, залежні від даних циклічні зрушення й додавання ключа. Як раунди перемішування, так і раунди ядра є раундами модифікованої мережі Фейштеля, у яких чверть блоку даних використовується для зміни інших трьох чвертей блоку даних. MARS запропонований корпорацією IBM.
RC6 є параметризуємим сімейством алгоритмів шифрування, заснованих на мережі Фейштеля; для AES було запропоновано використовувати 20 раундів. Функція раунду в RC6 задіє змінні циклічні зрушення, які визначаються квадратичною функцією від даних. Кожний раунд також включає множення по модулю 32, додавання, XOR і додавання із ключем. Додавання із ключем також використовується для pre- і pos-whitening. RC6 був запропонований лабораторією RSA.
Rijndael являє собою алгоритм, що використовує лінійно-підстановочні перетворення й складається з 10, 12 або 14 раундів залежно від довжини ключа. Блок даних, оброблюваний з використанням Rijndael, ділиться на масиви байтів, і кожна операція шифрування є байт-орієнтованою. Функція раунду Rijndael складається із чотирьох шарів. У першому шарі для кожного байта застосовується S-box розмірністю 8х8 біт. Другий і третій шари є лінійними перемішуваннями, у яких рядки розглядаються як зсуваємі масиви й стовпці перемішуються. У четвертому шарі виконується операція XOR байтів підключа й кожного байта масиву. В останньому раунді перемішування стовпців опущене. Rijndael запропонований Joan Daemen (Proton World International) і Vincent Rijmen (Katholieke Universiteit Leuven).
Serpent є алгоритмом, що використовує лінійно-підстановочні перетворення й складається з 32 раундів. Serpent також визначає некриптографічні початкову й заключну перестановки, які полегшують альтернативний режим реалізації, називаний bitslice. Функція раунду складається із трьох шарів: операція XOR із ключем, 32-х паралельне застосування одного з восьми фіксованих S-boxes і лінійне перетворення. В останньому раунді шар XOR із ключем замінений на лінійне перетворення. Serpent запропонований Ross Anderson (University of Cambridge), Eli Biham (Technion) і LarsKnudsen (University of California San Diego).
Twofish є мережею Фейштеля з 16 раундами. Мережа Фейштеля незначно модифікована з використанням однобітних ротацій. Функція раунду впливає на 32-бітні слова, використовуючи чотири залежних від ключа S-boxes, за якими ідуть фіксовані максимально вилучені окремі матриці в GF(28), перетворення псевдо-адамара й додавання ключа. Twofish був запропонований Bruce Schneier, John Kelsey і Niels Ferguson (Counterpane Internet Security, Inc.), Doug Whiting (Hi/fn, Inc.), David Wagner (University of California Berkley) і Chris Hall (Princeton University).
При оголошенні фіналістів представники NIST запропонували обговорити й прокоментувати алгоритми. На третій конференції кандидатів AES (AES3), що відбулася у квітні 2000 року, представлені коментарі були розглянуті. Період відкритого обговорення був завершений 15 травня 2000 року.