16:00 Расширенный стандарт шифрования | |
Advanced Encryption Standard ( AES ), также известный под своим первоначальным названием Rijndael ( Голландский произношение: [rɛindaːl] ), является спецификацией для шифрования электронных данных , установленных в США Национальным институтом стандартов и технологий (NIST) в 2001. AES является подмножеством блочного шифра Rijndael , разработанного двумя бельгийскими криптографами, Винсентом Райменом и Joan Daemen , которые подали предложение в NIST во время процесса выбора AES . Rijndael - это семейство шифров с различными размерами ключей и блоков. AES вступил в силу в качестве стандарта федерального правительства 26 мая 2002 года после одобрения министром торговли . AES включен в стандарт ISO / IEC 18033-3 . AES доступен во многих различных пакетах шифрования и является первым (и единственным) общедоступным шифром, одобренным Агентством национальной безопасности (NSA) для сверхсекретной информации при использовании в криптографическом модул Расширенный стандарт шифрования (AES) определяется в каждом из: FIPS PUB 197: улучшенный стандарт шифрования (AES) [4] ISO / IEC 18033-3 :: Блочные шифры AES основан на принципе проектирования, известном как сеть замещения-перестановки , и эффективен как в программном, так и в аппаратном обеспечении. [9] В отличие от своего предшественника DES, AES не использует сеть Feistel . AES - это вариант Rijndael, который имеет фиксированный размер блока 128 бит и размер ключа 128, 192 или 256 бит. В отличие от этого, Rijndael per se указывается с размерами блоков и ключей, которые могут быть кратными 32 битам, с минимальным значением 128 и максимальным размером 256 бит. AES работает с массивом байтов старшего порядка 4 × 4 , называемым состоянием . Большинство вычислений AES выполняются в определенном конечном поле . Размер ключа, используемого для шифра AES, определяет количество раундов преобразования, которые преобразуют входной файл, называемый открытым текстом , в конечный выходной файл, называемый шифротекстом . Количество раундов выглядит следующим образом: 10 раундов для 128-битных ключей. 12 раундов для 192-битных ключей. 14 раундов для 256-битных ключей. Каждый раунд состоит из нескольких этапов обработки, один из которых зависит от самого ключа шифрования. Набор обратных циклов применяется для преобразования зашифрованного текста обратно в исходный открытый текст с использованием того же ключа шифрования. KeyExpansion - ключи окружения получены из ключа шифрования с использованием расписания ключей Rijndael . AES требует отдельного 128-битного блока ключей для каждого раунда плюс еще один. Добавление начального раунда: AddRoundKey - каждый байт состояния объединяется с байтом круглой клавиши, используя битовый xor . 9, 11 или 13 раундов: SubBytes - шаг нелинейного замещения, где каждый байт заменяется другим в соответствии с таблицей поиска . ShiftRows - шаг транспонирования, при котором последние три строки состояния циклически сдвигаются на определенное количество шагов. MixColumns - линейная операция микширования, которая работает со столбцами состояния, объединяя четыре байта в каждом столбце. AddRoundKey Финальный раунд (всего 10, 12 или 14 раундов): SubBytes ShiftRows AddRoundKey На шаге SubBytes каждый байт{\ displaystyle a_ {i, j}}в массиве состояний заменяется на SubByte {\ displaystyle S (a_ {i, j})}используя 8-битный блок замены . Эта операция обеспечивает нелинейность в шифре . Используемый S-блок получен из мультипликативного обратного по GF ( 28 ) , который, как известно, обладает хорошими свойствами нелинейности. Чтобы избежать атак, основанных на простых алгебраических свойствах, S-блок строится путем объединения обратной функции с обратимым аффинным преобразованием . S-блок также выбран, чтобы избежать каких-либо фиксированных точек (и так же, как и расстройство ), т. Е.{\ displaystyle S (a_ {i, j}) \ neq a_ {i, j}}а также любые противоположные неподвижные точки, т. е. {\ displaystyle S (a_ {i, j}) \ oplus a_ {i, j} \ neq {\ text {FF}} _ {16}}, При выполнении дешифрования используется шаг InvSubBytes (обратный к SubBytes ), который требует сначала выполнить обратное аффинное преобразование, а затем найти мультипликативный обратный. ShiftRows шаг работает на строках состояния; он циклически сдвигает байты в каждой строке на определенное смещение . Для AES первый ряд остается без изменений. Каждый байт второго ряда сдвинут на один влево. Точно так же третий и четвертый ряды сдвинуты на два и три смещения соответственно. [примечание 4] Таким образом, каждый столбец состояния вывода шага ShiftRows состоит из байтов из каждого столбца состояния ввода. Важность этого шага состоит в том, чтобы избежать независимого шифрования столбцов, и в этом случае AES вырождается в четыре независимых блочных шифра. На этапе MixColumns четыре байта каждого столбца состояния объединяются с использованием обратимого линейного преобразования . Функция MixColumns принимает четыре байта в качестве входных данных и выводит четыре байта, где каждый входной байт влияет на все четыре выходных байта. Вместе с ShiftRows , MixColumns обеспечивает диффузию в шифре. Матрица умножения состоит из умножения и сложения записей. Записи представляют собой 8-битные байты, которые рассматриваются как коэффициенты полинома порядка{\ displaystyle x ^ {}, Дополнение просто XOR. Умножение по модулю неприводимого полинома{\ displaystyle x ^ {8} + x ^ {4} + x ^ {3} + x + 1}, Если обрабатывается побитно, то после сдвига следует выполнить условное XOR с 1B 16 , если смещенное значение больше, чем FF 16 (переполнение должно быть исправлено путем вычитания генерирующего полинома). Это особые случаи обычного умножения в{\ displaystyle \ operatorname {GF} (2 ^ {8})}. В более общем смысле каждый столбец рассматривается как полином над {\ displaystyle \ operatorname {GF} (2 ^ {8})} а затем умножается по модулю {\ displaystyle {01} _ {16} \ cdot z ^ {4} + {01} _ {16}} с фиксированным полиномом {\ displaystyle c (z) = {03} _ {16} \ cdot z ^ {3} + {01} _ {16} \ cdot z ^ {2} + {01} _ {16} \ cdot z + {02 } _ {16}}, Коэффициенты отображаются в шестнадцатеричном эквиваленте двоичного представления битовых полиномов из{\ displaystyle \ operatorname {GF} (2) [x]}, MixColumns шаг также можно рассматривать как умножение на показанной конкретной матрицы РМР в конечном поле {\ displaystyle \ operatorname {GF} (2 ^ {8})}, Этот процесс описан далее в статье Rijndael MixColumns . На шаге AddRoundKey подключ объединяется с состоянием. Для каждого раунда ключ получается из основного ключа, используя расписание ключей Rijndael ; каждый подраздел имеет тот же размер, что и состояние. Подключаемый ключ добавляется путем объединения каждого байта состояния с соответствующим байтом подключа с использованием побитового XOR . В системах с 32-разрядными или более крупными словами можно ускорить выполнение этого шифра, объединив шаги SubBytes и ShiftRows с шагом MixColumns , преобразовав их в последовательность поиска в таблице. Это требует четырех 256-битных 32-битных таблиц (вместе занимающих 4096 байт). Затем может быть выполнен раунд с 16 операциями поиска в таблице и 12 32-разрядными операциями исключающего или, за которыми следуют четыре 32-разрядных операции исключающего или, на шаге AddRoundKey . В качестве альтернативы, операция поиска в таблице может быть выполнена с одиночной 32-битной таблицей из 256 записей (занимающей 1024 байта), за которой следуют операции кругового вращения. Используя байтово-ориентированный подход, можно объединить шаги SubBytes , ShiftRows и MixColumns в одну круглую операцию. | |
|
Всього коментарів: 0 | |