Advanced Encryption Standard

Advanced Encryption Standard (AES), також відомий під назвою Rijndael — симетричний алгоритм блочного шифрування (розмір блока 128 біт, ключ 128/192/256 біт), фіналіст конкурсу AES і прийнятий як американський стандарт шифрування урядом США. Вибір припав на AES з розрахуванням на широке використання і активний аналіз алгоритму, як це було із його попередником, DES. Державний інститут стандартів і технологій (англ. National Institute of Standards and Technology, NIST) США опублікував попередню специфікацію AES 26 жовтня 2001 року, після п'ятилітньої підготовки. 26 травня 2002 року AES оголошено стандартом шифрування. Станом на 2009 рік AES є одним із найпоширеніших алгоритмів симетричного шифрування.[1]

Алгоритм блокового шифрування
Назва:AES, Rijndael-AES, Rijndael
Розробник:В.Реймен, Д.Даймон
Створений:1998 р.
Опублікований:2001 р.
Розмір ключа:128/192/256 біт
Розмір блоку:128 біт
Число раундів:10/12/14
Тип:SP-мережа

Історія

Потреба у новому стандарті шифрування постала у середині 90-х років. Наявний тоді стандарт DES, довжиною ключа 56 біт, дозволяв застосувати метод грубої сили для дешифрування даних. Успішні злами даних відбулись уже наприкінці 90-х. Крім того архітектура DES орієнтувалась на апаратну реалізацію, а програмна реалізація на платформах із обмеженими ресурсами не давала необхідної швидкості застосування. Модифікація DES 3-DES мала достатню довжину ключа, але при цьому була ще повільнішою.

12 жовтня 1997 р. NIST оголосила конкурс на обрання спадкоємця для DES, що був американським стандартом ще з 1977 року. Перед претендентами поставили такі основні вимоги

Вибір алгоритму проходив у три етапи. 20 серпня 1998 року на 1-й конференції AES було оголошено список з 15 кандидатів. В серпні 1999 року на 2-й конференції AES список скоротився до п'яти фіналістів: MARS, RC6, Rijndael, Serpent и Twofish. За результатами доповідей 3-ї конференції, що проходила у Нью-Йорку 13-14 квітня 2000 року, 2 жовтня 2000 алгоритм, запропонований бельгійськими криптографами Д. Деймоном та В. Ріджменом, був оголошений переможцем конкурсу і почалась процедура стандартизації[2]. 26 травня 2002 року AES був прийнятий як стандарт.

Опис алгоритму

В принципі, алгоритм, запропонований Рейменом і Дейцменом, і AES не одне і те ж. Алгоритм Рейндол[3] підтримує широкий діапазон розміру блоку та ключа. AES має фіксовану довжину у 128 біт, а розмір ключа може приймати значення 128, 192 або 256 біт. В той час як Рейндол підтримує розмірність блоку та ключа із кроком 32 біт у діапазоні від 128 до 256. Через фіксований розмір блоку AES оперує із масивом 4×4 байт, що називається станом (версії алгоритму із більшим розміром блоку мають додаткові колонки).

Для ключа 128 біт алгоритм має 10 раундів у яких послідовно виконуються операції

  • subBytes()
  • shiftRows()
  • mixcolumns() (у 10-му раунді пропускається)
  • xorRoundKey()

SubBytes()

У процедурі SubBytes , кожен байт в state замінюється відповідним елементом у фіксованій 8-бітній таблиці пошуку, S; b ij = S (a ij ).

Процедура SubBytes() обробляє кожен байт стану незалежно, проводячи нелінійну заміну байтів використовуючи таблицю замін (S-box). Така операція забезпечує нелінійність алгоритму шифрування. Побудова S-box складається з двох кроків. По-перше, проводиться отримання зворотного числа в полі Галуа . По-друге, до кожного байту b з яких складається S-box застосовується така операція:

де , і де є i-ий біт b, а - i-ий біт константи . Таким чином, забезпечується захист від атак, заснованих на простих алгебраїчних властивостях.

S-box можна відобразити таблицею простої підстановки:

S-box
\0123456789abcdef
0637c777bf26b6fc53001672bfed7ab76
1ca82c97dfa5947f0add4a2af9ca472c0
2b7fd9326363ff7cc34a5e5f171d83115
304c723c31896059a071280e2eb27b275
409832c1a1b6e5aa0523bd6b329e32f84
553d100ed20fcb15b6acbbe394a4c58cf
6d0efaafb434d338545f9027f503c9fa8
751a3408f929d38f5bcb6da2110fff3d2
8cd0c13ec5f974417c4a77e3d645d1973
960814fdc222a908846eeb814de5e0bdb
ae0323a0a4906245cc2d3ac629195e479
be7c8376d8dd54ea96c56f4ea657aae08
cba78252e1ca6b4c6e8dd741f4bbd8b8a
d703eb5664803f60e613557b986c11d9e
ee1f8981169d98e949b1e87e9ce5528df
f8ca1890dbfe6426841992d0fb054bb16

Наприклад, на вході 19 на виході отримаємо d4.

Фактично це звичайний шифр простої підстановки.

ShiftRows()

У процедурі ShiftRows , байти в кожному рядку state циклічно зсуваються вліво. Розмір зміщення байтів кожного рядка залежить від її номера

ShiftRows працює з рядками таблиці State. При цій трансформації рядка стану циклічно зсуваються на r байтів по горизонталі, залежно від номера рядка. Для нульового рядка r = 0, для першого рядка r = 1 і т. д. Таким чином кожна колонка вихідного стану після застосування процедури ShiftRows складається з байтів з кожної колонки початкового стану. Для алгоритму Rijndael патерн зсуву рядків для 128 - і 192-бітних рядків однаковий. Однак для блоку розміром 256 біт відрізняється від попередніх тим, що 2, 3, і 4-і рядки зміщуються на 1, 3, і 4 байти, відповідно.

Фактично це проста перестановка байтів таблиці 4х4 State.

MixColumns()

У процедурі MixColumns , кожна колонка стану перемножується з фіксованим многочленом c (x).

У процедурі MixColumns , чотири байти кожної колонки State змішуються, використовуючи для цього зворотну лінійну трансформацію. MixColumns опрацьовує стан по колонках, трактуючи кожну з них як поліном четвертого степеня. Над цими поліномами виконується множення в по модулю на фіксований многочлен . Разом з ShiftRows , MixColumns вносить дифузію в шифр.

Під час цієї операції, кожен стовпчик множиться на матрицю, яка для 128-бітного ключа має вигляд

AddRoundKey()

У процедурі AddRoundKey , кожен байт стану об'єднується з RoundKey використовуючи операцію XOR.

У процедурі AddRoundKey , RoundKey кожного раунду об'єднується зі State. Для кожного раунду Roundkey виходить з CipherKey використовуючи процедуру KeyExpansion ; кожен RoundKey такого ж розміру, що і State. Процедура виробляє побітовий XOR кожного байта State з кожним байтом RoundKey .

Фактично це звичайний побайтовий XOR байт ключа з байтами таблиці State.

Примітки

  1. Biryukov, Alex and Khovratovich, Dmitry. Related-key Cryptanalysis of the Full AES-192 and AES-256. — Advances in Cryptology – ASIACRYPT 2009, 2009. Vol. 5912. DOI:10.1007/978-3-642-10366-7_1.
  2. http://www.nist.gov/public_affairs/releases/g00-176.htm
  3. 'Рейндол' вимова. Архів оригіналу за 1 серпень 2012. Процитовано 20 березень 2008.


This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.