AES (англ. Advanced Encryption Standard; также Rijndael, [rɛindaːl] — рейндал) — симметричный алгоритм блочного шифрования (размер блока 128 бит, ключ 128/192/256 бит), принятый в качестве стандарта шифрования правительством США по результатам конкурса AES. Этот алгоритм хорошо проанализирован и сейчас широко используется, как это было с его предшественником DES. Национальный институт стандартов и технологий США (англ. National Institute of Standards and Technology, NIST) опубликовал спецификацию AES 26 ноября 2001 года после пятилетнего периода, в ходе которого были созданы и оценены 15 кандидатур. 26 мая 2002 года AES был объявлен стандартом шифрования. По состоянию на 2009 год AES является одним из самых распространённых алгоритмов симметричного шифрования. Поддержка ускорения AES была введена фирмой Intel в семейство процессоров x86 начиная с [англ.] в 2010 году, а затем на процессорах Sandy Bridge; фирмой AMD — в Bulldozer с 2011 года.
AES, Rijndael-AES, Rijndael | |
---|---|
Создатель | Винсент Рэймен Йоан Даймен |
Создан | 1998 г. |
Размер ключа | 128/192/256 бит |
Размер блока | 128 бит |
Число раундов | 10/12/14 (зависит от размера ключа) |
Тип | Подстановочно-перестановочная сеть |
Медиафайлы на Викискладе |
История AES
2 января 1997 года NIST объявляет о намерении выбрать преемника для DES, являвшегося американским стандартом с 1977 года. 2 октября 2000 года было объявлено, что победителем конкурса стал алгоритм Rijndael, и началась процедура стандартизации. 28 февраля 2001 года был опубликован проект, а 26 ноября 2001 года AES был принят как FIPS 197. Историческую ретроспективу конкурса можно проследить на веб-сайте NIST.
Описание AES
Определения и вспомогательные процедуры
Block | последовательность бит, из которых состоит input, output, State и Round Key. Также под Block можно понимать последовательность байтов |
---|---|
Cipher Key | секретный криптографический ключ, который используется Key Expansion процедурой, чтобы произвести набор ключей для раундов (Round Keys); может быть представлен как прямоугольный массив байтов, имеющий четыре строки и Nk колонок |
Ciphertext | выходные данные алгоритма шифрования |
Key Expansion | процедура генерации Round Keys из Cipher Key |
Round Key | Round Keys получаются из Cipher Key использованием процедуры Key Expansion. Они применяются к State при шифровании и расшифровании |
State | промежуточный результат шифрования, который может быть представлен как прямоугольный массив байтов, имеющий 4 строки и Nb колонок |
S-box | нелинейная таблица замен, использующаяся в нескольких трансформациях замены байтов и в процедуре Key Expansion для взаимнооднозначной замены значения байта. Предварительно рассчитанный S-box можно увидеть ниже |
Nb | число столбцов (32-битных слов), составляющих State. Для AES Nb = 4 |
Nk | число 32-битных слов, составляющих шифроключ. Для AES Nk = 4, 6, или 8 |
Nr | число раундов, которое является функцией Nk и Nb. Для AES Nr = 10, 12, 14 |
Rcon[] | массив, который состоит из битов 32-разрядного слова и является постоянным для данного раунда. Предварительно рассчитанный Rcon[] можно увидеть ниже |
S-box
Sbox = array{ 0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab, 0x76, 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0, 0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0, 0xb7, 0xfd, 0x93, 0x26, 0x36, 0x3f, 0xf7, 0xcc, 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15, 0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, 0x07, 0x12, 0x80, 0xe2, 0xeb, 0x27, 0xb2, 0x75, 0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0, 0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84, 0x53, 0xd1, 0x00, 0xed, 0x20, 0xfc, 0xb1, 0x5b, 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf, 0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, 0x45, 0xf9, 0x02, 0x7f, 0x50, 0x3c, 0x9f, 0xa8, 0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5, 0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2, 0xcd, 0x0c, 0x13, 0xec, 0x5f, 0x97, 0x44, 0x17, 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73, 0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, 0x46, 0xee, 0xb8, 0x14, 0xde, 0x5e, 0x0b, 0xdb, 0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c, 0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79, 0xe7, 0xc8, 0x37, 0x6d, 0x8d, 0xd5, 0x4e, 0xa9, 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08, 0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, 0xe8, 0xdd, 0x74, 0x1f, 0x4b, 0xbd, 0x8b, 0x8a, 0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e, 0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e, 0xe1, 0xf8, 0x98, 0x11, 0x69, 0xd9, 0x8e, 0x94, 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf, 0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, 0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54, 0xbb, 0x16 };
Обратный S-box для процедуры InvSubBytes
InvSbox = array{ 0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38, 0xbf, 0x40, 0xa3, 0x9e, 0x81, 0xf3, 0xd7, 0xfb, 0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87, 0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb, 0x54, 0x7b, 0x94, 0x32, 0xa6, 0xc2, 0x23, 0x3d, 0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e, 0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2, 0x76, 0x5b, 0xa2, 0x49, 0x6d, 0x8b, 0xd1, 0x25, 0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16, 0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92, 0x6c, 0x70, 0x48, 0x50, 0xfd, 0xed, 0xb9, 0xda, 0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84, 0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a, 0xf7, 0xe4, 0x58, 0x05, 0xb8, 0xb3, 0x45, 0x06, 0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02, 0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b, 0x3a, 0x91, 0x11, 0x41, 0x4f, 0x67, 0xdc, 0xea, 0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73, 0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85, 0xe2, 0xf9, 0x37, 0xe8, 0x1c, 0x75, 0xdf, 0x6e, 0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89, 0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b, 0xfc, 0x56, 0x3e, 0x4b, 0xc6, 0xd2, 0x79, 0x20, 0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4, 0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31, 0xb1, 0x12, 0x10, 0x59, 0x27, 0x80, 0xec, 0x5f, 0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d, 0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef, 0xa0, 0xe0, 0x3b, 0x4d, 0xae, 0x2a, 0xf5, 0xb0, 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61, 0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26, 0xe1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0c, 0x7d };
Rcon[]
Rcon = array{ array{0x00, 0x00, 0x00, 0x00}, array{0x01, 0x00, 0x00, 0x00}, array{0x02, 0x00, 0x00, 0x00}, array{0x04, 0x00, 0x00, 0x00}, array{0x08, 0x00, 0x00, 0x00}, array{0x10, 0x00, 0x00, 0x00}, array{0x20, 0x00, 0x00, 0x00}, array{0x40, 0x00, 0x00, 0x00}, array{0x80, 0x00, 0x00, 0x00}, array{0x1b, 0x00, 0x00, 0x00}, array{0x36, 0x00, 0x00, 0x00} };
AddRoundKey() | трансформация при шифровании и обратном шифровании, при которой Round Key XOR’ится c State. Длина RoundKey равна размеру State (то есть если Nb = 4, то длина RoundKey равна 128 бит или 16 байт) |
---|---|
InvMixColumns() | трансформация при расшифровании, которая является обратной по отношению к MixColumns() |
InvShiftRows() | трансформация при расшифровании, которая является обратной по отношению к ShiftRows() |
InvSubBytes() | трансформация при расшифровании, которая является обратной по отношению к SubBytes() |
MixColumns() | трансформация при шифровании, которая берёт все столбцы State и смешивает их данные (независимо друг от друга), чтобы получить новые столбцы |
RotWord() | функция, использующаяся в процедуре Key Expansion, которая берёт 4-байтовое слово и производит над ним циклическую перестановку |
ShiftRows() | трансформации при шифровании, которые обрабатывают State, циклически смещая последние три строки State на разные величины |
SubBytes() | трансформации при шифровании, которые обрабатывают State, используя нелинейную таблицу замещения байтов (S-box), применяя её независимо к каждому байту State |
SubWord() | функция, используемая в процедуре Key Expansion, которая берёт на входе четырёхбайтовое слово и, применяя S-box к каждому из четырёх байтов, выдаёт выходное слово |
Шифрование
AES является стандартом, основанным на алгоритме Rijndael. Для AES длина input (блока входных данных) и State (состояния) постоянна и равна 128 бит, а длина шифроключа K составляет 128, 192, или 256 бит. При этом исходный алгоритм Rijndael допускает длину ключа и размер блока от 128 до 256 бит с шагом в 32 бита. Для обозначения выбранных длин input, State и Cipher Key в 32-битных словах используется нотация Nb = 4 для input и State, Nk = 4, 6, 8 для Cipher Key соответственно для разных длин ключей.
В начале зашифровывания input копируется в массив State по правилу , для и . После этого к State применяется процедура AddRoundKey(), и затем State проходит через процедуру трансформации (раунд) 10, 12, или 14 раз (в зависимости от длины ключа), при этом надо учесть, что последний раунд несколько отличается от предыдущих. В итоге, после завершения последнего раунда трансформации, State копируется в output по правилу , для и .
Отдельные трансформации SubBytes(), ShiftRows(), MixColumns() и AddRoundKey() — обрабатывают State. Массив w[] — содержит key schedule.
Cipher(byte in[4*Nb], byte out[4*Nb], word w[Nb*(Nr+1)]) begin byte state[4,Nb] state = in AddRoundKey(state, w[0, Nb-1]) for round = 1 step 1 to Nr-1 SubBytes(state) ShiftRows(state) MixColumns(state) AddRoundKey(state, w[round*Nb, (round+1)*Nb-1]) end for SubBytes(state) ShiftRows(state) AddRoundKey(state, w[Nr*Nb, (Nr+1)*Nb-1]) out = state endРис1. Псевдокод для Cipher
SubBytes()
Процедура SubBytes() обрабатывает каждый байт состояния, независимо производя нелинейную замену байтов, используя таблицу замен (S-box). Такая операция обеспечивает нелинейность алгоритма шифрования. Построение S-box состоит из двух шагов. Во-первых, производится взятие обратного числа в поле Галуа . Для всех операций в этом поле используется неприводимый полином . Во-вторых, к каждому байту b, из которых состоит S-box, применяется следующая операция:
где , и где есть i-ый бит b, а — i-ый бит константы . Таким образом обеспечивается защита от атак, основанных на простых алгебраических свойствах.
ShiftRows()
ShiftRows
работает со строками State. При этой трансформации строки состояния циклически сдвигаются на r байт по горизонтали в зависимости от номера строки. Для нулевой строки r = 0, для первой строки r = 1 Б и т. д. Таким образом, каждая колонка выходного состояния после применения процедуры ShiftRows
состоит из байтов из каждой колонки начального состояния. Для алгоритма Rijndael паттерн смещения строк для 128- и 192-битных строк одинаков. Однако для блока размером 256 бит отличается от предыдущих тем, что 2-е, 3-и и 4-е строки смещаются на 1, 3 и 4 байта соответственно. Это замечание не относится к AES, так как он использует алгоритм Rijndael только с 128-битными блоками, независимо от размера ключа.
MixColumns()
В процедуре MixColumns
четыре байта каждой колонки State смешиваются, используя для этого обратимую линейную трансформацию. MixColumns
обрабатывает состояния по колонкам, трактуя каждую из них как полином третьей степени. Над этими полиномами производится умножение в по модулю на фиксированный многочлен . Вместе с ShiftRows
MixColumns
вносит диффузию в шифр.
AddRoundKey()
В процедуре AddRoundKey
RoundKey
каждого раунда объединяется со State. Для каждого раунда Roundkey
получается из CipherKey
c помощью процедуры KeyExpansion
; каждый RoundKey такого же размера, что и State. Процедура производит побитовый XOR каждого байта State
с каждым байтом RoundKey
.
Алгоритм обработки ключа
Алгоритм обработки ключа состоит из двух процедур:
- Алгоритм генерации раундовых ключей (алгоритм расширения ключа)
- Алгоритм выбора раундового ключа (ключа итерации)
Алгоритм генерации раундовых ключей
Алгоритм AES, используя процедуру KeyExpansion() и подавая в неё Cipher Key, K, получает ключи для всех раундов. Всего получается Nb*(Nr + 1) слов: изначально для алгоритма требуется набор из Nb слов, и каждому из Nr раундов требуется Nb ключевых набора данных. Полученный массив ключей для раундов обозначается как , . Алгоритм KeyExpansion() показан в псевдокоде ниже.
Функция SubWord() берёт четырёхбайтовое входное слово и применяет S-box к каждому из четырёх байтов. То, что получилось, подаётся на выход. На вход RotWord() подаётся слово , которое она циклически переставляет и возвращает . Массив слов, постоянный для данного раунда, , содержит значения , где x = {02}, а является степенью в ( начинается с 1).
Из рисунка можно видеть, что первые слов расширенного ключа заполнены Cipher Key. В каждое последующее слово, , кладётся значение, полученное при операции XOR и , те XOR’а предыдущего и на Nk позиций раньше слов. Для слов, позиция которых кратна Nk, перед XOR’ом к w[i-1] применяется трансформация, за которой следует XOR с константой раунда Rcon[i]. Указанная выше трансформация состоит из циклического сдвига байтов в слове (RotWord()), за которой следует процедура SubWord() — то же самое, что и SubBytes(), только входные и выходные данные будут размером в слово.
Важно заметить, что процедура KeyExpansion() для 256-битного Cipher Key немного отличается от тех, которые применяются для 128- и 192- битных шифроключей. Если и кратно , то SubWord() применяется к до XOR’а.
KeyExpansion(byte key[4 * Nk], word w[Nb * (Nr+1)], Nk) begin word temp i = 0; while(i < Nk) w[i] = word(key[4*i], key[4*i+1], key[4*i+2], key[4*i+3]) i = i + 1 end while i = Nk while(i < Nb * (Nr+1)) temp = w[i - 1] if (i mod Nk = 0) temp = SubWord(RotWord(temp)) xor Rcon[i / Nk] else if (Nk > 6 and i mod Nk = 4) temp = SubWord(temp) end if w[i] = w[i - Nk] xor temp i = i + 1 end while endПсевдокод для Key Expansion
Расшифрование
InvCipher(byte in[4 * Nb], byte out[4 * Nb], word w[Nb * (Nr+1)]) begin byte state[4, Nb] state = in AddRoundKey(state, w[Nr * Nb, Nb * (Nr+1) - 1]) for round = Nr - 1 step -1 downto 1 InvShiftRows(state) InvSubBytes(state) AddRoundKey(state, w[Nb * round, Nb * (round+1) - 1]) InvMixColumns(state) end for InvShiftRows(state) InvSubBytes(state) AddRoundKey(state, w[0, Nb - 1]) out = state endПсевдокод для Inverse Cipher
Алгоритм выбора раундового ключа
На каждой итерации раундовый ключ для операции AddRoundKey выбирается из массива ,начиная с элемента до .
Варианты алгоритма
На базе алгоритма Rijndael, лежащего в основе AES, реализованы альтернативные криптоалгоритмы. Среди наиболее известных — участники конкурса Nessie: Anubis на инволюциях, автором которого является Винсент Рэймен и усиленный вариант шифра — Grand Cru Йохана Борста.
Криптостойкость
В июне 2003 года Агентство национальной безопасности США постановило, что шифр AES является достаточно надёжным, чтобы использовать его для защиты сведений, составляющих государственную тайну (англ. classified information). Вплоть до уровня SECRET было разрешено использовать ключи длиной 128 бит, для уровня TOP SECRET требовались ключи длиной 192 и 256 бит.
XSL-атака
В отличие от большинства других шифров, AES имеет простое математическое описание. Это беспокоило в том числе и Нильса Фергюсона, который в своей работе отметил, что безопасность шифра основывается на новом непроверенном предположении о сложности решения определённых видов уравнений (англ. «The security of Rijndael depends on a new and untested hardness assumption: it is computationally infeasible to solve equations of this type»), а также Брюса Шнайера, который написал в совместной с Нильсом книге:
У нас есть одно критическое замечание к AES: мы не совсем доверяем его безопасности. Что беспокоит нас больше всего в AES, так это его простая алгебраическая структура… Ни один другой блочный шифр не имеет столь простого алгебраического представления. Мы понятия не имеем, ведёт это к атаке или нет, но незнание этого является достаточной причиной, чтобы скептически относиться к использованию AES.
Оригинальный текст (англ.)We have one criticism of AES: we don't quite trust the security… What concerns us the most about AES is its simple algebraic structure… No other block cipher we know of has such a simple algebraic representation. We have no idea whether this leads to an attack or not, but not knowing is reason enough to be skeptical about the use of AES— Niels Ferguson, Bruce Schneier Practical Cryptography — 2003 — pp. 56—57
(англ. Nicolas Courtois) и (англ. Josef Pieprzyk) в 2002 году опубликовали статью, в которой описали теоретическую атаку, названную ими XSL-атакой (англ. eXtended Sparse Linearization), которая могла бы позволить вскрыть шифры AES и Serpent. Тем не менее, результаты работы не всеми были восприняты оптимистично:
Я считаю, что в работе Куртуа-Пепшика есть ошибка. Они переоценили число линейно-независимых уравнений. В результате у них нет достаточного количества линейных уравнений для решения системы, и [указанный] метод не может взломать Rijndael. Он имеет определённые достоинства и заслуживает изучения, но не взламывает Rijndael в его нынешнем виде.
Оригинальный текст (англ.)I believe that the Courtois-Pieprzyk work is flawed. They overcount the number of linearly independent equations. The result is that they do not in fact have enough linear equations to solve the system, and the method does not break Rijndael… The method has some merit, and is worth investigating, but it does not break Rijndael as it stands.— Дон Копперсмит, комментарий к записи в блоге Брюса Шнайера
На странице, посвящённой обсуждению конкурса NESSIE, в конце 2002 года один из авторов шифра, Винсент Рэймен, заявил, что XSL-атака является всего лишь мечтой (англ. The XSL attack is not an attack. It is a dream) (данная точка зрения позже была повторена в 2004 году на 4-й конференции AES в Бонне). На это Куртуа ответил, что данная мечта может стать для автора AES кошмаром (англ. It may also be a very bad dream and turn into a nightmare) (игра слов: dream переводится и как мечта и как сновидение. Nightmare переводится как кошмарный сон, ночной кошмар).
В 2003 году Шон Мёрфи и (англ. Matt Robshaw) опубликовали работу, в которой (в предположении, что результаты Куртуа и Пепшика верны) обосновали возможность атаки на алгоритм AES, сокращающей количество операций для взлома с 2128 до 2100. Однако на 4-й конференции AES Илья Толи (англ. Ilia Toli) и Альберто Дзанони (англ. Alberto Zanoni) показали, что работа Мёрфи и Робшоу неверна. Позже, в 2007 году, Чу-Ви Лим (англ. Chu-Wee Lim) и Хунгминг Ху (англ. Khoongming Khoo) также показали, что данная атака не может работать в том виде, как она была описана.
Атака по сторонним каналам
Атаки по сторонним каналам не связаны с математическими особенностями шифра, но используют определённые особенности реализации систем, использующих данные шифры, с целью раскрыть частично или полностью секретные данные, в том числе ключ. Известно несколько подобных атак на системы, использовавшие алгоритм AES.
В апреле 2005 года (англ. Daniel J. Bernstein) опубликовал работу с описанием атаки, использующей для взлома информацию о времени выполнения каждой операции шифрования. Данная атака потребовала более 200 миллионов выбранных шифротекстов для нахождения ключа.
В октябре 2005 года Даг Арне Освик, Ади Шамир и Эран Трумер представили работу с описанием нескольких атак, использующих время выполнения операций для нахождения ключа. Одна из представленных атак получала ключ после 800 операций шифрования. Атака требовала от криптоаналитика возможности запускать программы на той же системе, где выполнялось шифрование.
В декабре 2009 года была опубликована работа, в которой использование дифференциального анализа ошибок (англ. Differential Fault Analysis), искусственно создаваемых в матрице состояния на 8-м раунде шифрования, позволило восстановить ключ за 232 операций.
См. также
Примечания
- Лаборатория Чеканова. Intel Core i5 (Clarkdale): анализ аппаратного ускорения шифрования AES . (19 января 2010). — «наиболее популярный стандарт симметричного шифрования в мире ИТ». Дата обращения: 14 ноября 2010. 26 февраля 2012 года.
- Biryukov, Alex and Khovratovich, Dmitry. Related-key Cryptanalysis of the Full AES-192 and AES-256 (англ.) // Advances in Cryptology – ASIACRYPT 2009. — Springer Berlin / Heidelberg, 2009. — Vol. 5912. — P. 1—18. — doi:10.1007/978-3-642-10366-7_1. 18 декабря 2010 года.
- Архивированная копия . Дата обращения: 7 декабря 2006. 6 ноября 2006 года.
- NIST Error Page 28 сентября 2010 года.
- Bounce to index.html 17 июля 2014 года.
- http://csrc.nist.gov/publications/fips/fips197/fips-197.pdf от 7 апреля 2015 на Wayback Machine «5.1.3 MixColumns() Transformation .. The columns are considered as polynomials over GF(2^8) and multiplied modulo x^4 + 1 with a fixed polynomial a(x), given by a(x) = {03}x³ + {01}x² + {01}x + {02}.»
- National Policy on the Use of the Advanced Encryption Standard (AES) to Protect National Security Systems and National Security Information (англ.). Committee on National Security Systems (июнь 2003). Дата обращения: 27 октября 2010. Архивировано 19 февраля 2012 года.
- James McLaughlin. The XSL controversy // A survey of block cipher cryptanalysis techniques. — preprint. — York: University of York, 2009. (недоступная ссылка)
- Niels Ferguson, Richard Schroeppel, and Doug Whiting. A simple algebraic representation of Rijndael (англ.) // Selected Areas in Cryptography, Proc. SAC 2001, Lecture Notes in Computer Science #2259. — Springer Verlag, 2001. — P. 103—111. 16 января 2016 года.
- Bruce Schneier. Crypto-Gram Newsletter (англ.). Schneier on Security (15 сентября 2002). Дата обращения: 27 октября 2010. Архивировано 19 февраля 2012 года.
- Nicolas Courtois, Josef Pieprzyk. Cryptanalysis of Block Ciphers with Overdefined Systems of Equations (англ.) // Advances in Cryptology — ASIACRYPT 2002 8th International Conference on the Theory Application of Cryptology and Information Security Queenstown, New Zealand, December 1—5, 2002 Proceedings. Lecture Notes in Computer Science (2501). — Springer, 2002. — P. 267—287. — doi:10.1007/3-540-36178-2. 26 октября 2020 года.
- Ilia Toli, Alberto Zanoni. An Algebraic Interpretation of AES-128 (англ.) // Proc. of AES Conference. — 2005. — Vol. 2005. — P. 84—97. — doi:10.1007/11506447_8. (недоступная ссылка)
- Chu-wee Lim, Khoongming Khoo. An Analysis of XSL Applied to BES (англ.) // Fast Software Encryption. — Heidelberg: Springer Berlin / Heidelberg, 2007. — Vol. 4593. — P. 242—253. — doi:10.1007/978-3-540-74619-5_16. (недоступная ссылка)
- Daniel J. Bernstein. Cache-timing attacks on AES (англ.). — 2004. 17 сентября 2008 года.
- Bruce Schneier. AES Timing Attack (англ.). Schneier on Security (17 мая 2005). Дата обращения: 27 октября 2010. Архивировано 19 февраля 2012 года.
- Dag Arne Osvik; Adi Shamir and Eran Tromer. Cache Attacks and Countermeasures: the Case of AES // Topics in Cryptology — CT-RSA 2006, The Cryptographers’ Track at the RSA Conference. — Springer-Verlag, 2005. — P. 1—20. 25 ноября 2020 года.
- Dhiman Saha, Debdeep Mukhopadhyay, Dipanwita RoyChowdhury. A Diagonal Fault Attack on the Advanced Encryption Standar (англ.) // Cryptology ePrint Archive. — 2009. 6 августа 2020 года.
Литература
- Federal Information Processing Standards Publication 197 November 26, 2001 Specification for the ADVANCED ENCRYPTION STANDARD (AES) от 7 апреля 2015 на Wayback Machine (англ.)
- Баричев С. Г., Гончаров В. В., Серов Р. Е. 2.4.2. Стандарт AES. Алгоритм Rijdael // Основы современной криптографии — 3-е изд. — М.: Диалог-МИФИ, 2011. — С. 30—35. — 176 с. —
Ссылки
- О процессе принятия AES от 22 января 2008 на Wayback Machine
- Jeff Moser. A Stick Figure Guide to the Advanced Encryption Standard (AES) (англ.) (22 сентября 2009). Дата обращения: 22 ноября 2010. Архивировано 19 февраля 2012 года. — AES в картинках (русский перевод от 23 июня 2013 на Wayback Machine)
Википедия, чтение, книга, библиотека, поиск, нажмите, истории, книги, статьи, wikipedia, учить, информация, история, скачать, скачать бесплатно, mp3, видео, mp4, 3gp, jpg, jpeg, gif, png, картинка, музыка, песня, фильм, игра, игры, мобильный, телефон, Android, iOS, apple, мобильный телефон, Samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Сеть, компьютер
U etogo termina sushestvuyut i drugie znacheniya sm AES AES angl Advanced Encryption Standard takzhe Rijndael rɛindaːl rejndal simmetrichnyj algoritm blochnogo shifrovaniya razmer bloka 128 bit klyuch 128 192 256 bit prinyatyj v kachestve standarta shifrovaniya pravitelstvom SShA po rezultatam konkursa AES Etot algoritm horosho proanalizirovan i sejchas shiroko ispolzuetsya kak eto bylo s ego predshestvennikom DES Nacionalnyj institut standartov i tehnologij SShA angl National Institute of Standards and Technology NIST opublikoval specifikaciyu AES 26 noyabrya 2001 goda posle pyatiletnego perioda v hode kotorogo byli sozdany i oceneny 15 kandidatur 26 maya 2002 goda AES byl obyavlen standartom shifrovaniya Po sostoyaniyu na 2009 god AES yavlyaetsya odnim iz samyh rasprostranyonnyh algoritmov simmetrichnogo shifrovaniya Podderzhka uskoreniya AES byla vvedena firmoj Intel v semejstvo processorov x86 nachinaya s angl v 2010 godu a zatem na processorah Sandy Bridge firmoj AMD v Bulldozer s 2011 goda AES Rijndael AES RijndaelSozdatel Vinsent Rejmen Joan DajmenSozdan 1998 g Razmer klyucha 128 192 256 bitRazmer bloka 128 bitChislo raundov 10 12 14 zavisit ot razmera klyucha Tip Podstanovochno perestanovochnaya set Mediafajly na VikiskladeIstoriya AESOsnovnaya statya AES konkurs 2 yanvarya 1997 goda NIST obyavlyaet o namerenii vybrat preemnika dlya DES yavlyavshegosya amerikanskim standartom s 1977 goda 2 oktyabrya 2000 goda bylo obyavleno chto pobeditelem konkursa stal algoritm Rijndael i nachalas procedura standartizacii 28 fevralya 2001 goda byl opublikovan proekt a 26 noyabrya 2001 goda AES byl prinyat kak FIPS 197 Istoricheskuyu retrospektivu konkursa mozhno prosledit na veb sajte NIST Opisanie AESOpredeleniya i vspomogatelnye procedury Opredeleniya Block posledovatelnost bit iz kotoryh sostoit input output State i Round Key Takzhe pod Block mozhno ponimat posledovatelnost bajtovCipher Key sekretnyj kriptograficheskij klyuch kotoryj ispolzuetsya Key Expansion proceduroj chtoby proizvesti nabor klyuchej dlya raundov Round Keys mozhet byt predstavlen kak pryamougolnyj massiv bajtov imeyushij chetyre stroki i Nk kolonokCiphertext vyhodnye dannye algoritma shifrovaniyaKey Expansion procedura generacii Round Keys iz Cipher KeyRound Key Round Keys poluchayutsya iz Cipher Key ispolzovaniem procedury Key Expansion Oni primenyayutsya k State pri shifrovanii i rasshifrovaniiState promezhutochnyj rezultat shifrovaniya kotoryj mozhet byt predstavlen kak pryamougolnyj massiv bajtov imeyushij 4 stroki i Nb kolonokS box nelinejnaya tablica zamen ispolzuyushayasya v neskolkih transformaciyah zameny bajtov i v procedure Key Expansion dlya vzaimnoodnoznachnoj zameny znacheniya bajta Predvaritelno rasschitannyj S box mozhno uvidet nizheNb chislo stolbcov 32 bitnyh slov sostavlyayushih State Dlya AES Nb 4Nk chislo 32 bitnyh slov sostavlyayushih shifroklyuch Dlya AES Nk 4 6 ili 8Nr chislo raundov kotoroe yavlyaetsya funkciej Nk i Nb Dlya AES Nr 10 12 14Rcon massiv kotoryj sostoit iz bitov 32 razryadnogo slova i yavlyaetsya postoyannym dlya dannogo raunda Predvaritelno rasschitannyj Rcon mozhno uvidet nizheS boxSbox array 0x63 0x7c 0x77 0x7b 0xf2 0x6b 0x6f 0xc5 0x30 0x01 0x67 0x2b 0xfe 0xd7 0xab 0x76 0xca 0x82 0xc9 0x7d 0xfa 0x59 0x47 0xf0 0xad 0xd4 0xa2 0xaf 0x9c 0xa4 0x72 0xc0 0xb7 0xfd 0x93 0x26 0x36 0x3f 0xf7 0xcc 0x34 0xa5 0xe5 0xf1 0x71 0xd8 0x31 0x15 0x04 0xc7 0x23 0xc3 0x18 0x96 0x05 0x9a 0x07 0x12 0x80 0xe2 0xeb 0x27 0xb2 0x75 0x09 0x83 0x2c 0x1a 0x1b 0x6e 0x5a 0xa0 0x52 0x3b 0xd6 0xb3 0x29 0xe3 0x2f 0x84 0x53 0xd1 0x00 0xed 0x20 0xfc 0xb1 0x5b 0x6a 0xcb 0xbe 0x39 0x4a 0x4c 0x58 0xcf 0xd0 0xef 0xaa 0xfb 0x43 0x4d 0x33 0x85 0x45 0xf9 0x02 0x7f 0x50 0x3c 0x9f 0xa8 0x51 0xa3 0x40 0x8f 0x92 0x9d 0x38 0xf5 0xbc 0xb6 0xda 0x21 0x10 0xff 0xf3 0xd2 0xcd 0x0c 0x13 0xec 0x5f 0x97 0x44 0x17 0xc4 0xa7 0x7e 0x3d 0x64 0x5d 0x19 0x73 0x60 0x81 0x4f 0xdc 0x22 0x2a 0x90 0x88 0x46 0xee 0xb8 0x14 0xde 0x5e 0x0b 0xdb 0xe0 0x32 0x3a 0x0a 0x49 0x06 0x24 0x5c 0xc2 0xd3 0xac 0x62 0x91 0x95 0xe4 0x79 0xe7 0xc8 0x37 0x6d 0x8d 0xd5 0x4e 0xa9 0x6c 0x56 0xf4 0xea 0x65 0x7a 0xae 0x08 0xba 0x78 0x25 0x2e 0x1c 0xa6 0xb4 0xc6 0xe8 0xdd 0x74 0x1f 0x4b 0xbd 0x8b 0x8a 0x70 0x3e 0xb5 0x66 0x48 0x03 0xf6 0x0e 0x61 0x35 0x57 0xb9 0x86 0xc1 0x1d 0x9e 0xe1 0xf8 0x98 0x11 0x69 0xd9 0x8e 0x94 0x9b 0x1e 0x87 0xe9 0xce 0x55 0x28 0xdf 0x8c 0xa1 0x89 0x0d 0xbf 0xe6 0x42 0x68 0x41 0x99 0x2d 0x0f 0xb0 0x54 0xbb 0x16 Obratnyj S box dlya procedury InvSubBytesInvSbox array 0x52 0x09 0x6a 0xd5 0x30 0x36 0xa5 0x38 0xbf 0x40 0xa3 0x9e 0x81 0xf3 0xd7 0xfb 0x7c 0xe3 0x39 0x82 0x9b 0x2f 0xff 0x87 0x34 0x8e 0x43 0x44 0xc4 0xde 0xe9 0xcb 0x54 0x7b 0x94 0x32 0xa6 0xc2 0x23 0x3d 0xee 0x4c 0x95 0x0b 0x42 0xfa 0xc3 0x4e 0x08 0x2e 0xa1 0x66 0x28 0xd9 0x24 0xb2 0x76 0x5b 0xa2 0x49 0x6d 0x8b 0xd1 0x25 0x72 0xf8 0xf6 0x64 0x86 0x68 0x98 0x16 0xd4 0xa4 0x5c 0xcc 0x5d 0x65 0xb6 0x92 0x6c 0x70 0x48 0x50 0xfd 0xed 0xb9 0xda 0x5e 0x15 0x46 0x57 0xa7 0x8d 0x9d 0x84 0x90 0xd8 0xab 0x00 0x8c 0xbc 0xd3 0x0a 0xf7 0xe4 0x58 0x05 0xb8 0xb3 0x45 0x06 0xd0 0x2c 0x1e 0x8f 0xca 0x3f 0x0f 0x02 0xc1 0xaf 0xbd 0x03 0x01 0x13 0x8a 0x6b 0x3a 0x91 0x11 0x41 0x4f 0x67 0xdc 0xea 0x97 0xf2 0xcf 0xce 0xf0 0xb4 0xe6 0x73 0x96 0xac 0x74 0x22 0xe7 0xad 0x35 0x85 0xe2 0xf9 0x37 0xe8 0x1c 0x75 0xdf 0x6e 0x47 0xf1 0x1a 0x71 0x1d 0x29 0xc5 0x89 0x6f 0xb7 0x62 0x0e 0xaa 0x18 0xbe 0x1b 0xfc 0x56 0x3e 0x4b 0xc6 0xd2 0x79 0x20 0x9a 0xdb 0xc0 0xfe 0x78 0xcd 0x5a 0xf4 0x1f 0xdd 0xa8 0x33 0x88 0x07 0xc7 0x31 0xb1 0x12 0x10 0x59 0x27 0x80 0xec 0x5f 0x60 0x51 0x7f 0xa9 0x19 0xb5 0x4a 0x0d 0x2d 0xe5 0x7a 0x9f 0x93 0xc9 0x9c 0xef 0xa0 0xe0 0x3b 0x4d 0xae 0x2a 0xf5 0xb0 0xc8 0xeb 0xbb 0x3c 0x83 0x53 0x99 0x61 0x17 0x2b 0x04 0x7e 0xba 0x77 0xd6 0x26 0xe1 0x69 0x14 0x63 0x55 0x21 0x0c 0x7d Rcon Rcon array array 0x00 0x00 0x00 0x00 array 0x01 0x00 0x00 0x00 array 0x02 0x00 0x00 0x00 array 0x04 0x00 0x00 0x00 array 0x08 0x00 0x00 0x00 array 0x10 0x00 0x00 0x00 array 0x20 0x00 0x00 0x00 array 0x40 0x00 0x00 0x00 array 0x80 0x00 0x00 0x00 array 0x1b 0x00 0x00 0x00 array 0x36 0x00 0x00 0x00 Vspomogatelnye procedury AddRoundKey transformaciya pri shifrovanii i obratnom shifrovanii pri kotoroj Round Key XOR itsya c State Dlina RoundKey ravna razmeru State to est esli Nb 4 to dlina RoundKey ravna 128 bit ili 16 bajt InvMixColumns transformaciya pri rasshifrovanii kotoraya yavlyaetsya obratnoj po otnosheniyu k MixColumns InvShiftRows transformaciya pri rasshifrovanii kotoraya yavlyaetsya obratnoj po otnosheniyu k ShiftRows InvSubBytes transformaciya pri rasshifrovanii kotoraya yavlyaetsya obratnoj po otnosheniyu k SubBytes MixColumns transformaciya pri shifrovanii kotoraya beryot vse stolbcy State i smeshivaet ih dannye nezavisimo drug ot druga chtoby poluchit novye stolbcyRotWord funkciya ispolzuyushayasya v procedure Key Expansion kotoraya beryot 4 bajtovoe slovo i proizvodit nad nim ciklicheskuyu perestanovkuShiftRows transformacii pri shifrovanii kotorye obrabatyvayut State ciklicheski smeshaya poslednie tri stroki State na raznye velichinySubBytes transformacii pri shifrovanii kotorye obrabatyvayut State ispolzuya nelinejnuyu tablicu zamesheniya bajtov S box primenyaya eyo nezavisimo k kazhdomu bajtu StateSubWord funkciya ispolzuemaya v procedure Key Expansion kotoraya beryot na vhode chetyryohbajtovoe slovo i primenyaya S box k kazhdomu iz chetyryoh bajtov vydayot vyhodnoe slovoShifrovanie AES yavlyaetsya standartom osnovannym na algoritme Rijndael Dlya AES dlina input bloka vhodnyh dannyh i State sostoyaniya postoyanna i ravna 128 bit a dlina shifroklyucha K sostavlyaet 128 192 ili 256 bit Pri etom ishodnyj algoritm Rijndael dopuskaet dlinu klyucha i razmer bloka ot 128 do 256 bit s shagom v 32 bita Dlya oboznacheniya vybrannyh dlin input State i Cipher Key v 32 bitnyh slovah ispolzuetsya notaciya Nb 4 dlya input i State Nk 4 6 8 dlya Cipher Key sootvetstvenno dlya raznyh dlin klyuchej V nachale zashifrovyvaniya input kopiruetsya v massiv State po pravilu state r c input r 4c displaystyle mathrm state r c mathrm input r 4c dlya 0 r lt 4 displaystyle 0 leq r lt 4 i 0 c lt Nb displaystyle 0 leq c lt Nb Posle etogo k State primenyaetsya procedura AddRoundKey i zatem State prohodit cherez proceduru transformacii raund 10 12 ili 14 raz v zavisimosti ot dliny klyucha pri etom nado uchest chto poslednij raund neskolko otlichaetsya ot predydushih V itoge posle zaversheniya poslednego raunda transformacii State kopiruetsya v output po pravilu output r 4c state r c displaystyle mathrm output r 4c mathrm state r c dlya 0 r lt 4 displaystyle 0 leq r lt 4 i 0 c lt Nb displaystyle 0 leq c lt Nb Otdelnye transformacii SubBytes ShiftRows MixColumns i AddRoundKey obrabatyvayut State Massiv w soderzhit key schedule Cipher byte in 4 Nb byte out 4 Nb word w Nb Nr 1 begin byte state 4 Nb state in AddRoundKey state w 0 Nb 1 for round 1 step 1 to Nr 1 SubBytes state ShiftRows state MixColumns state AddRoundKey state w round Nb round 1 Nb 1 end for SubBytes state ShiftRows state AddRoundKey state w Nr Nb Nr 1 Nb 1 out state end Ris1 Psevdokod dlya Cipher SubBytes V procedure SubBytes kazhdyj bajt v state zamenyaetsya sootvetstvuyushim elementom v fiksirovannoj 8 bitnoj tablice poiska S bij S aij Procedura SubBytes obrabatyvaet kazhdyj bajt sostoyaniya nezavisimo proizvodya nelinejnuyu zamenu bajtov ispolzuya tablicu zamen S box Takaya operaciya obespechivaet nelinejnost algoritma shifrovaniya Postroenie S box sostoit iz dvuh shagov Vo pervyh proizvoditsya vzyatie obratnogo chisla v pole Galua GF 28 displaystyle GF left 2 8 right Dlya vseh operacij v etom pole ispolzuetsya neprivodimyj polinom z8 z4 z3 z 1 displaystyle z 8 z 4 z 3 z 1 Vo vtoryh k kazhdomu bajtu b iz kotoryh sostoit S box primenyaetsya sleduyushaya operaciya bi bi b i 4 mod8 b i 5 mod8 b i 6 mod8 b i 7 mod8 ci 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 gde 0 i lt 8 displaystyle 0 leq i lt 8 i gde bi displaystyle b i est i yj bit b a ci displaystyle c i i yj bit konstanty c 6316 9910 011000112 displaystyle c 63 16 99 10 01100011 2 Takim obrazom obespechivaetsya zashita ot atak osnovannyh na prostyh algebraicheskih svojstvah b0 b1 b2 b3 b4 b5 b6 b7 1000111111000111111000111111000111111000011111000011111000011111 b0b1b2b3b4b5b6b7 11000110 displaystyle begin Vmatrix b 0 b 1 b 2 b 3 b 4 b 5 b 6 b 7 end Vmatrix begin Vmatrix 1 amp 0 amp 0 amp 0 amp 1 amp 1 amp 1 amp 1 1 amp 1 amp 0 amp 0 amp 0 amp 1 amp 1 amp 1 1 amp 1 amp 1 amp 0 amp 0 amp 0 amp 1 amp 1 1 amp 1 amp 1 amp 1 amp 0 amp 0 amp 0 amp 1 1 amp 1 amp 1 amp 1 amp 1 amp 0 amp 0 amp 0 0 amp 1 amp 1 amp 1 amp 1 amp 1 amp 0 amp 0 0 amp 0 amp 1 amp 1 amp 1 amp 1 amp 1 amp 0 0 amp 0 amp 0 amp 1 amp 1 amp 1 amp 1 amp 1 end Vmatrix begin Vmatrix b 0 b 1 b 2 b 3 b 4 b 5 b 6 b 7 end Vmatrix begin Vmatrix 1 1 0 0 0 1 1 0 end Vmatrix ShiftRows V procedure ShiftRows bajty v kazhdoj stroke state ciklicheski sdvigayutsya vlevo Razmer smesheniya bajtov kazhdoj stroki zavisit ot eyo nomera ShiftRows rabotaet so strokami State Pri etoj transformacii stroki sostoyaniya ciklicheski sdvigayutsya na r bajt po gorizontali v zavisimosti ot nomera stroki Dlya nulevoj stroki r 0 dlya pervoj stroki r 1 B i t d Takim obrazom kazhdaya kolonka vyhodnogo sostoyaniya posle primeneniya procedury ShiftRows sostoit iz bajtov iz kazhdoj kolonki nachalnogo sostoyaniya Dlya algoritma Rijndael pattern smesheniya strok dlya 128 i 192 bitnyh strok odinakov Odnako dlya bloka razmerom 256 bit otlichaetsya ot predydushih tem chto 2 e 3 i i 4 e stroki smeshayutsya na 1 3 i 4 bajta sootvetstvenno Eto zamechanie ne otnositsya k AES tak kak on ispolzuet algoritm Rijndael tolko s 128 bitnymi blokami nezavisimo ot razmera klyucha MixColumns V procedure MixColumns kazhdaya kolonka sostoyaniya peremnozhaetsya s fiksirovannym mnogochlenom c x V procedure MixColumns chetyre bajta kazhdoj kolonki State smeshivayutsya ispolzuya dlya etogo obratimuyu linejnuyu transformaciyu MixColumns obrabatyvaet sostoyaniya po kolonkam traktuya kazhduyu iz nih kak polinom tretej stepeni Nad etimi polinomami proizvoditsya umnozhenie v GF 28 displaystyle GF 2 8 po modulyu x4 1 displaystyle x 4 1 na fiksirovannyj mnogochlen c x 3x3 x2 x 2 displaystyle c x 3x 3 x 2 x 2 Vmeste s ShiftRowsMixColumns vnosit diffuziyu v shifr AddRoundKey V procedure AddRoundKey kazhdyj bajt sostoyaniya obedinyaetsya s RoundKey ispolzuya operaciyu V procedure AddRoundKeyRoundKey kazhdogo raunda obedinyaetsya so State Dlya kazhdogo raunda Roundkeypoluchaetsya iz CipherKey c pomoshyu procedury KeyExpansion kazhdyj RoundKey takogo zhe razmera chto i State Procedura proizvodit pobitovyj XOR kazhdogo bajta State s kazhdym bajtom RoundKey Algoritm obrabotki klyuchaAlgoritm obrabotki klyucha sostoit iz dvuh procedur Algoritm generacii raundovyh klyuchej algoritm rasshireniya klyucha Algoritm vybora raundovogo klyucha klyucha iteracii Algoritm generacii raundovyh klyuchej Algoritm AES ispolzuya proceduru KeyExpansion i podavaya v neyo Cipher Key K poluchaet klyuchi dlya vseh raundov Vsego poluchaetsya Nb Nr 1 slov iznachalno dlya algoritma trebuetsya nabor iz Nb slov i kazhdomu iz Nr raundov trebuetsya Nb klyuchevyh nabora dannyh Poluchennyj massiv klyuchej dlya raundov oboznachaetsya kak w i displaystyle w left i right 0 i lt Nb Nr 1 displaystyle 0 leq i lt Nb Nr 1 Algoritm KeyExpansion pokazan v psevdokode nizhe Funkciya SubWord beryot chetyryohbajtovoe vhodnoe slovo i primenyaet S box k kazhdomu iz chetyryoh bajtov To chto poluchilos podayotsya na vyhod Na vhod RotWord podayotsya slovo a0 a1 a2 a3 displaystyle a 0 a 1 a 2 a 3 kotoroe ona ciklicheski perestavlyaet i vozvrashaet a1 a2 a3 a0 displaystyle a 1 a 2 a 3 a 0 Massiv slov postoyannyj dlya dannogo raunda Rcon i displaystyle Rcon left i right soderzhit znacheniya xi 1 00 00 00 displaystyle x i 1 00 00 00 gde x 02 a xi 1 displaystyle x i 1 yavlyaetsya stepenyu x displaystyle x v GF 28 displaystyle GF left 2 8 right i displaystyle i nachinaetsya s 1 Iz risunka mozhno videt chto pervye Nk displaystyle Nk slov rasshirennogo klyucha zapolneny Cipher Key V kazhdoe posleduyushee slovo w i displaystyle w i kladyotsya znachenie poluchennoe pri operacii XOR w i 1 displaystyle w i 1 i w i Nk displaystyle w left i Nk right te XOR a predydushego i na Nk pozicij ranshe slov Dlya slov poziciya kotoryh kratna Nk pered XOR om k w i 1 primenyaetsya transformaciya za kotoroj sleduet XOR s konstantoj raunda Rcon i Ukazannaya vyshe transformaciya sostoit iz ciklicheskogo sdviga bajtov v slove RotWord za kotoroj sleduet procedura SubWord to zhe samoe chto i SubBytes tolko vhodnye i vyhodnye dannye budut razmerom v slovo Vazhno zametit chto procedura KeyExpansion dlya 256 bitnogo Cipher Key nemnogo otlichaetsya ot teh kotorye primenyayutsya dlya 128 i 192 bitnyh shifroklyuchej Esli Nk 8 displaystyle Nk 8 i i 4 displaystyle i 4 kratno Nk displaystyle Nk to SubWord primenyaetsya k w i 1 displaystyle w i 1 do XOR a KeyExpansion byte key 4 Nk word w Nb Nr 1 Nk begin word temp i 0 while i lt Nk w i word key 4 i key 4 i 1 key 4 i 2 key 4 i 3 i i 1 end while i Nk while i lt Nb Nr 1 temp w i 1 if i mod Nk 0 temp SubWord RotWord temp xor Rcon i Nk else if Nk gt 6 and i mod Nk 4 temp SubWord temp end if w i w i Nk xor temp i i 1 end while end Psevdokod dlya Key Expansion Rasshifrovanie InvCipher byte in 4 Nb byte out 4 Nb word w Nb Nr 1 begin byte state 4 Nb state in AddRoundKey state w Nr Nb Nb Nr 1 1 for round Nr 1 step 1 downto 1 InvShiftRows state InvSubBytes state AddRoundKey state w Nb round Nb round 1 1 InvMixColumns state end for InvShiftRows state InvSubBytes state AddRoundKey state w 0 Nb 1 out state end Psevdokod dlya Inverse Cipher Algoritm vybora raundovogo klyucha Na kazhdoj iteracii i displaystyle i raundovyj klyuch dlya operacii AddRoundKey vybiraetsya iz massiva w i displaystyle w left i right nachinaya s elementa w Nb i displaystyle w left Nb i right do w Nb i 1 displaystyle w left Nb left i 1 right right Varianty algoritmaNa baze algoritma Rijndael lezhashego v osnove AES realizovany alternativnye kriptoalgoritmy Sredi naibolee izvestnyh uchastniki konkursa Nessie Anubis na involyuciyah avtorom kotorogo yavlyaetsya Vinsent Rejmen i usilennyj variant shifra Grand Cru Johana Borsta KriptostojkostV iyune 2003 goda Agentstvo nacionalnoj bezopasnosti SShA postanovilo chto shifr AES yavlyaetsya dostatochno nadyozhnym chtoby ispolzovat ego dlya zashity svedenij sostavlyayushih gosudarstvennuyu tajnu angl classified information Vplot do urovnya SECRET bylo razresheno ispolzovat klyuchi dlinoj 128 bit dlya urovnya TOP SECRET trebovalis klyuchi dlinoj 192 i 256 bit XSL ataka Osnovnaya statya XSL ataka V otlichie ot bolshinstva drugih shifrov AES imeet prostoe matematicheskoe opisanie Eto bespokoilo v tom chisle i Nilsa Fergyusona kotoryj v svoej rabote otmetil chto bezopasnost shifra osnovyvaetsya na novom neproverennom predpolozhenii o slozhnosti resheniya opredelyonnyh vidov uravnenij angl The security of Rijndael depends on a new and untested hardness assumption it is computationally infeasible to solve equations of this type a takzhe Bryusa Shnajera kotoryj napisal v sovmestnoj s Nilsom knige U nas est odno kriticheskoe zamechanie k AES my ne sovsem doveryaem ego bezopasnosti Chto bespokoit nas bolshe vsego v AES tak eto ego prostaya algebraicheskaya struktura Ni odin drugoj blochnyj shifr ne imeet stol prostogo algebraicheskogo predstavleniya My ponyatiya ne imeem vedyot eto k atake ili net no neznanie etogo yavlyaetsya dostatochnoj prichinoj chtoby skepticheski otnositsya k ispolzovaniyu AES Originalnyj tekst angl We have one criticism of AES we don t quite trust the security What concerns us the most about AES is its simple algebraic structure No other block cipher we know of has such a simple algebraic representation We have no idea whether this leads to an attack or not but not knowing is reason enough to be skeptical about the use of AES Niels Ferguson Bruce Schneier Practical Cryptography 2003 pp 56 57 angl Nicolas Courtois i angl Josef Pieprzyk v 2002 godu opublikovali statyu v kotoroj opisali teoreticheskuyu ataku nazvannuyu imi XSL atakoj angl eXtended Sparse Linearization kotoraya mogla by pozvolit vskryt shifry AES i Serpent Tem ne menee rezultaty raboty ne vsemi byli vosprinyaty optimistichno Ya schitayu chto v rabote Kurtua Pepshika est oshibka Oni pereocenili chislo linejno nezavisimyh uravnenij V rezultate u nih net dostatochnogo kolichestva linejnyh uravnenij dlya resheniya sistemy i ukazannyj metod ne mozhet vzlomat Rijndael On imeet opredelyonnye dostoinstva i zasluzhivaet izucheniya no ne vzlamyvaet Rijndael v ego nyneshnem vide Originalnyj tekst angl I believe that the Courtois Pieprzyk work is flawed They overcount the number of linearly independent equations The result is that they do not in fact have enough linear equations to solve the system and the method does not break Rijndael The method has some merit and is worth investigating but it does not break Rijndael as it stands Don Koppersmit kommentarij k zapisi v bloge Bryusa Shnajera Na stranice posvyashyonnoj obsuzhdeniyu konkursa NESSIE v konce 2002 goda odin iz avtorov shifra Vinsent Rejmen zayavil chto XSL ataka yavlyaetsya vsego lish mechtoj angl The XSL attack is not an attack It is a dream dannaya tochka zreniya pozzhe byla povtorena v 2004 godu na 4 j konferencii AES v Bonne Na eto Kurtua otvetil chto dannaya mechta mozhet stat dlya avtora AES koshmarom angl It may also be a very bad dream and turn into a nightmare igra slov dream perevoditsya i kak mechta i kak snovidenie Nightmare perevoditsya kak koshmarnyj son nochnoj koshmar V 2003 godu Shon Myorfi i angl Matt Robshaw opublikovali rabotu v kotoroj v predpolozhenii chto rezultaty Kurtua i Pepshika verny obosnovali vozmozhnost ataki na algoritm AES sokrashayushej kolichestvo operacij dlya vzloma s 2128 do 2100 Odnako na 4 j konferencii AES Ilya Toli angl Ilia Toli i Alberto Dzanoni angl Alberto Zanoni pokazali chto rabota Myorfi i Robshou neverna Pozzhe v 2007 godu Chu Vi Lim angl Chu Wee Lim i Hungming Hu angl Khoongming Khoo takzhe pokazali chto dannaya ataka ne mozhet rabotat v tom vide kak ona byla opisana Ataka po storonnim kanalam Osnovnaya statya Ataka po storonnim kanalam Ataki po storonnim kanalam ne svyazany s matematicheskimi osobennostyami shifra no ispolzuyut opredelyonnye osobennosti realizacii sistem ispolzuyushih dannye shifry s celyu raskryt chastichno ili polnostyu sekretnye dannye v tom chisle klyuch Izvestno neskolko podobnyh atak na sistemy ispolzovavshie algoritm AES V aprele 2005 goda angl Daniel J Bernstein opublikoval rabotu s opisaniem ataki ispolzuyushej dlya vzloma informaciyu o vremeni vypolneniya kazhdoj operacii shifrovaniya Dannaya ataka potrebovala bolee 200 millionov vybrannyh shifrotekstov dlya nahozhdeniya klyucha V oktyabre 2005 goda Dag Arne Osvik Adi Shamir i Eran Trumer predstavili rabotu s opisaniem neskolkih atak ispolzuyushih vremya vypolneniya operacij dlya nahozhdeniya klyucha Odna iz predstavlennyh atak poluchala klyuch posle 800 operacij shifrovaniya Ataka trebovala ot kriptoanalitika vozmozhnosti zapuskat programmy na toj zhe sisteme gde vypolnyalos shifrovanie V dekabre 2009 goda byla opublikovana rabota v kotoroj ispolzovanie differencialnogo analiza oshibok angl Differential Fault Analysis iskusstvenno sozdavaemyh v matrice sostoyaniya na 8 m raunde shifrovaniya pozvolilo vosstanovit klyuch za 232 operacij Sm takzheTestirovanie algoritmov uchastvovavshih v konkurse AES TKIP WPA CCMP Kuznechik MagmaPrimechaniyaLaboratoriya Chekanova Intel Core i5 Clarkdale analiz apparatnogo uskoreniya shifrovaniya AES rus 19 yanvarya 2010 naibolee populyarnyj standart simmetrichnogo shifrovaniya v mire IT Data obrasheniya 14 noyabrya 2010 26 fevralya 2012 goda Biryukov Alex and Khovratovich Dmitry Related key Cryptanalysis of the Full AES 192 and AES 256 angl Advances in Cryptology ASIACRYPT 2009 Springer Berlin Heidelberg 2009 Vol 5912 P 1 18 doi 10 1007 978 3 642 10366 7 1 18 dekabrya 2010 goda Arhivirovannaya kopiya neopr Data obrasheniya 7 dekabrya 2006 6 noyabrya 2006 goda NIST Error Page 28 sentyabrya 2010 goda Bounce to index html 17 iyulya 2014 goda http csrc nist gov publications fips fips197 fips 197 pdf ot 7 aprelya 2015 na Wayback Machine 5 1 3 MixColumns Transformation The columns are considered as polynomials over GF 2 8 and multiplied modulo x 4 1 with a fixed polynomial a x given by a x 03 x 01 x 01 x 02 National Policy on the Use of the Advanced Encryption Standard AES to Protect National Security Systems and National Security Information angl Committee on National Security Systems iyun 2003 Data obrasheniya 27 oktyabrya 2010 Arhivirovano 19 fevralya 2012 goda James McLaughlin The XSL controversy A survey of block cipher cryptanalysis techniques preprint York University of York 2009 nedostupnaya ssylka Niels Ferguson Richard Schroeppel and Doug Whiting A simple algebraic representation of Rijndael angl Selected Areas in Cryptography Proc SAC 2001 Lecture Notes in Computer Science 2259 Springer Verlag 2001 P 103 111 16 yanvarya 2016 goda Bruce Schneier Crypto Gram Newsletter angl Schneier on Security 15 sentyabrya 2002 Data obrasheniya 27 oktyabrya 2010 Arhivirovano 19 fevralya 2012 goda Nicolas Courtois Josef Pieprzyk Cryptanalysis of Block Ciphers with Overdefined Systems of Equations angl Advances in Cryptology ASIACRYPT 2002 8th International Conference on the Theory Application of Cryptology and Information Security Queenstown New Zealand December 1 5 2002 Proceedings Lecture Notes in Computer Science 2501 Springer 2002 P 267 287 doi 10 1007 3 540 36178 2 26 oktyabrya 2020 goda Ilia Toli Alberto Zanoni An Algebraic Interpretation of AES 128 angl Proc of AES Conference 2005 Vol 2005 P 84 97 doi 10 1007 11506447 8 nedostupnaya ssylka Chu wee Lim Khoongming Khoo An Analysis of XSL Applied to BES angl Fast Software Encryption Heidelberg Springer Berlin Heidelberg 2007 Vol 4593 P 242 253 doi 10 1007 978 3 540 74619 5 16 nedostupnaya ssylka Daniel J Bernstein Cache timing attacks on AES angl 2004 17 sentyabrya 2008 goda Bruce Schneier AES Timing Attack angl Schneier on Security 17 maya 2005 Data obrasheniya 27 oktyabrya 2010 Arhivirovano 19 fevralya 2012 goda Dag Arne Osvik Adi Shamir and Eran Tromer Cache Attacks and Countermeasures the Case of AES Topics in Cryptology CT RSA 2006 The Cryptographers Track at the RSA Conference Springer Verlag 2005 P 1 20 25 noyabrya 2020 goda Dhiman Saha Debdeep Mukhopadhyay Dipanwita RoyChowdhury A Diagonal Fault Attack on the Advanced Encryption Standar angl Cryptology ePrint Archive 2009 6 avgusta 2020 goda LiteraturaFederal Information Processing Standards Publication 197 November 26 2001 Specification for the ADVANCED ENCRYPTION STANDARD AES ot 7 aprelya 2015 na Wayback Machine angl Barichev S G Goncharov V V Serov R E 2 4 2 Standart AES Algoritm Rijdael Osnovy sovremennoj kriptografii 3 e izd M Dialog MIFI 2011 S 30 35 176 s ISBN 978 5 9912 0182 7SsylkiO processe prinyatiya AES ot 22 yanvarya 2008 na Wayback Machine Jeff Moser A Stick Figure Guide to the Advanced Encryption Standard AES angl 22 sentyabrya 2009 Data obrasheniya 22 noyabrya 2010 Arhivirovano 19 fevralya 2012 goda AES v kartinkah russkij perevod ot 23 iyunya 2013 na Wayback Machine