Movatterモバイル変換


[0]ホーム

URL:


Перейти до вмісту
Вікіпедія
Пошук

Advanced Encryption Standard

Матеріал з Вікіпедії — вільної енциклопедії.
AES, Rijndael-AES, Rijndael
РозробникиВ.Реймен, Д.Даймон
Уперше оприлюднений2001 р.
Раундів10/12/14
ТипSP-мережа

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

Історія

[ред. |ред. код]

Потреба у новому стандарті шифрування постала у середині 1990-х років. Наявний тоді стандарт DES, довжиною ключа 56біт, давав змогу застосуватиметод грубої сили для дешифрування даних. Успішні злами даних відбулися вже наприкінці 1990-х. Крім того, архітектура DES орієнтувалась на апаратну реалізацію, а програмна реалізація на платформах з обмеженими ресурсами не давала необхідної швидкості застосування. Модифікація DES3-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; bij = S(aij).

Процедура SubBytes() обробляє кожен байт стану незалежно, проводячи нелінійну заміну байтів використовуючи таблицю замін (S-box). Така операція забезпечує нелінійність алгоритму шифрування. Побудова S-box складається з двох кроків. По-перше, проводиться отримання зворотного числа вполі ГалуаGF(28){\displaystyle GF\left({2^{8}}\right)}. По-друге, до кожного байтуb з яких складаєтьсяS-box застосовується така операція:

Bi=bib(i+4)mod8b(i+5)mod8b(i+6)mod8b(i+7)mod8ci{\displaystyle B'_{i}=b_{i}\oplus b_{\left({i+4}\right){\bmod {8}}}\oplus b_{\left({i+5}\right){\bmod {8}}}\oplus b_{\left({i+6}\right){\bmod {8}}}\oplus b_{\left({i+7}\right){\bmod {8}}}\oplus c_{i}}

де0i<8{\displaystyle 0\leq i<8}, і деbi{\displaystyle b_{i}} єi-й біт b, аci{\displaystyle c_{i}} —i-й біт константиc=6316=9910=011000112{\displaystyle c=63_{16}=99_{10}=01100011_{2}}. Таким чином, забезпечується захист від атак, заснованих на простих алгебраїчних властивостях.

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 опрацьовує стан по колонках, трактуючи кожну з них якполіном четвертого степеня. Над цими поліномами виконується множення вGF(28){\displaystyle GF(2^{8})} по модулюx4+1{\displaystyle x^{4}+1} на фіксований многочленc(x)=3x3+x2+x+2{\displaystyle c(x)=3x^{3}+x^{2}+x+2}. Разом зShiftRows,MixColumns вносить дифузію вшифр.

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

[2311123111233112].{\displaystyle {\begin{bmatrix}2&3&1&1\\1&2&3&1\\1&1&2&3\\3&1&1&2\end{bmatrix}}.}

AddRoundKey()

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

У процедуріAddRoundKeyRoundKeyкожного раунду об'єднується зі 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. Архівована копія. Архіворигіналу за 28 вересня 2010. Процитовано 19 березня 2008.{{cite web}}: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title (посилання)[Архівовано 2010-09-28 уWayback Machine.]
  3. 'Рейндол' вимова. Архіворигіналу за 1 серпень 2012. Процитовано 20 березень 2008.
SP-мережа, блок 64 біт :SAFER |SHARK


ЗамокЦе незавершена стаття зкриптографії.
Ви можетедопомогти проєкту,виправивши або дописавши її.
Отримано зhttps://uk.wikipedia.org/w/index.php?title=Advanced_Encryption_Standard&oldid=43978094
Категорія:
Приховані категорії:

[8]ページ先頭

©2009-2026 Movatter.jp