Advanced Encryption Standard

редактировать
Стандарт для шифрования электронных данных Advanced Encryption Standard. (Rijndael)
AES-SubBytes.svg Шаг SubBytes, один из четырех этапов в раунде AES
Генерал
ДизайнерыВинсент Риджмен, Джоан Дэмен
Впервые опубликовано1998
На основеSquare
ПреемникиАнубис, Гран Крю, Калина
СертификацияПобедитель AES, CRYPTREC, NESSIE, NSA
Детали шифра
Размеры ключей 128, 192 или 256 бит
Размеры блоков 128 бит
СтруктураСеть замещения – перестановки
Раунды10, 12 или 14 (в зависимости от размера ключа)
Лучший публичный криптоанализ
Были опубликованы атаки, которые в вычислительном отношении быстрее, чем полный перебор атака, хотя по состоянию на 2013 год ни одна из них не является вычислительно выполнимой. Для AES-128 ключ может быть восстановлен с вычислительной сложностью 2, используя атаку biclique . Для бикликовых атак на AES-192 и AES-256 применяются вычислительные сложности 2 и 2 соответственно. Атаки с использованием связанных ключей могут взломать AES-192 и AES-256 со сложностями 2 и 2 как по времени, так и по данным, соответственно.

Расширенный стандарт шифрования (AES ), также известный под своим первоначальным названием Rijndael (голландское произношение: ), является спецификацией для шифрования электронных данных, установленных Национальным институтом стандартов и технологий (NIST) США в 2001 году.

AES является подмножеством блочного шифра Rijndael , разработанного двумя бельгийские криптографы, Винсент Риджмен и Джоан Дэмен, которые представили предложение в NIST во время процесса выбора AES. Rijndael - это семейство шифров с разными размерами ключей и блоков. Для AES NIST выбрал трех членов семейства Rijndael, каждый с размером блока 128 бит, но с тремя разными длинами ключей: 128, 192 и 256 бит.

AES был принят США. правительство и сейчас используется во всем мире. Он заменяет Стандарт шифрования данных (DES), который был опубликован в 1977 году. Алгоритм, описанный AES, представляет собой алгоритм с симметричным ключом, что означает, что один и тот же ключ используется как для шифрования, так и расшифровка данных.

В Соединенных Штатах Америки AES был объявлен NIST как US FIPS PUB 197 (FIPS 197) 26 ноября 2001 г. Это объявление последовало за пятилетним процессом стандартизации, в ходе которого пятнадцать были представлены и оценены конкурирующие конструкции, прежде чем шифр Rijndael был выбран как наиболее подходящий (подробнее см. процесс Advanced Encryption Standard ).

AES включен в стандарт ISO /IEC 18033-3. AES вступил в силу в качестве стандарта федерального правительства США 26 мая 2002 г. после утверждения министром торговли США. AES доступен во многих различных пакетах шифрования и является первым (и единственным) общедоступным шифром, одобренным Агентством национальной безопасности США (NSA) для совершенно секретно информацию при использовании в криптографическом модуле, одобренном NSA (см. Безопасность AES ниже).

Содержание

  • 1 Окончательные стандарты
  • 2 Описание шифров
    • 2.1 Общее описание алгоритма
    • 2.2 Шаг SubBytes
    • 2.3 Шаг ShiftRows
    • 2.4 Шаг MixColumns
    • 2.5 Шаг AddRoundKey
    • 2.6 Оптимизация шифра
  • 3 Безопасность
    • 3.1 Известные атаки
    • 3.2 Атаки по побочным каналам
  • 4 Проверка NIST / CSEC
  • 5 Тестовые векторы
  • 6 Производительность
  • 7 Реализации
  • 8 См. Также
  • 9 Примечания
  • 10 Ссылки
  • 11 Внешние ссылки

Окончательные стандарты

Определен расширенный стандарт шифрования (AES) в каждом из:

  • FIPS PUB 197: Advanced Encryption Standard (AES)
  • ISO / IEC 18033-3: Блочные шифры

Описание шифров

AES основан на принцип конструкции, известный как сеть замещения-перестановки, эффективен как в программном, так и в аппаратном отношении. В отличие от своего предшественника DES, AES не использует сеть Фейстеля. AES - это вариант Rijndael с фиксированным размером блока , равным 128 бит, и размером ключа , равным 128, 192 или 256 бит. Напротив, Rijndael как таковой определяется с размерами блоков и ключей, которые могут быть любым кратным 32 битам, минимум 128 и максимум 256 бит.

AES работает с массивом байтов 4 × 4 порядка старшего столбца, называемого состоянием. Большинство вычислений AES выполняется в конкретном конечном поле.

, например, 16 байтах, b 0, b 1,..., b 15 {\ displaystyle b_ {0}, b_ {1},..., b_ {15}}{\ displaystyle b_ {0}, b_ {1},..., b_ {15}} представлены как этот двумерный массив:

[b 0 b 4 b 8 b 12 b 1 b 5 b 9 b 13 b 2 b 6 b 10 b 14 b 3 b 7 b 11 b 15] {\ displaystyle {\ begin {bmatrix} b_ {0} b_ {4} b_ {8} b_ { 12} \\ b_ {1} b_ {5} b_ {9} b_ {13} \\ b_ {2} b_ {6} b_ {10} b_ {14} \\ b_ {3} b_ {7} b_ { 11} b_ {15} \ end {bmatrix}}}{\ begin {bmatrix} b_ {0} b_ {4} b_ {8} b_ {12} \\ b_ {1} b_ {5} b_ {9} b_ {13} \\ b_ {2} b_ {6} b_ {10} b_ {14} \\ b_ {3} b_ {7} b_ {11} b_ {15} \ end {bmatrix}}

Размер ключа, используемый для шифра AES, определяет количество раундов преобразования, которые преобразуют ввод, называемый незашифрованным текстом, в окончательный вывод, называется зашифрованным текстом. Количество раундов следующее:

  • 10 раундов для 128-битных ключей.
  • 12 раундов для 192-битных ключей.
  • 14 раундов для 256-битных ключей.

Каждый раунд состоит из нескольких этапов обработки, включая один, который зависит от самого ключа шифрования. Набор обратных циклов применяется для преобразования зашифрованного текста обратно в исходный открытый текст с использованием того же ключа шифрования.

Описание алгоритма высокого уровня

  1. KeyExpansion - ключи раунда выводятся из ключа шифрования с использованием расписания ключей AES. AES требует отдельного 128-битного блока ключей раунда для каждого раунда плюс еще один.
  2. Добавление начального ключа раунда:
    1. AddRoundKey - каждый байт состояния комбинируется с байтом ключа раунда с использованием побитовое xor.
  3. 9, 11 или 13 раундов:
    1. SubBytes - этап нелинейной подстановки, на котором каждый байт заменяется другим в соответствии с таблицей поиска .
    2. ShiftRows - шаг транспонирования, при котором последние три строки состояния циклически сдвигаются на определенное количество шагов.
    3. MixColumns - операция линейного смешивания, которая работает со столбцами состояния, объединяя четыре байта в каждом столбце.
    4. AddRoundKey
  4. Заключительный раунд (всего 10, 12 или 14 раундов):
    1. SubBytes
    2. ShiftRows
    3. AddRoundKey

Шаг SubBytes

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

На этапе SubBytes каждый байт ai, j {\ displaystyle a_ {i, j}}a_ {i, j} в состоянии массив заменяется на SubByte S (ai, j) {\ displaystyle S (a_ {i, j})}S (a_ {я, j}) с использованием 8-битного блока подстановки . Эта операция обеспечивает нелинейность в шифре . Используемый S-блок получен из мультипликативного обратного по GF (2), который, как известно, имеет хорошие свойства нелинейности. Чтобы избежать атак, основанных на простых алгебраических свойствах, S-блок строится путем объединения обратной функции с обратимым аффинным преобразованием. S-блок также выбирается, чтобы избежать любых неподвижных точек (как и психическое расстройство ), т.е. S (ai, j) ≠ ai, j {\ displaystyle S (a_ {i, j}) \ neq a_ {i, j}}S (a_ {i, j}) \ neq a_ {я, j} , а также любые противоположные фиксированные точки, т. Е. S (ai, j) ⊕ ai, j ≠ FF 16 {\ displaystyle S (a_ {i, j}) \ oplus a_ {i, j} \ neq {\ text {FF}} _ {16}}{\ displaystyle S (a_ {i, j}) \ oplus a_ {i, j} \ neq {\ text {FF} } _ {16}} . При расшифровке InvSubBytes st ep (обратный SubBytes) используется, что требует сначала взять обратное для аффинного преобразования, а затем найти мультипликативное обратное.

Шаг ShiftRows

На шаге ShiftRows байты в каждой строке состояния циклически сдвигаются влево. Число мест, на которые смещается каждый байт, различается постепенно для каждой строки.

Шаг ShiftRows работает со строками состояния; он циклически сдвигает байты в каждой строке на определенное смещение. Для AES первая строка оставлена ​​без изменений. Каждый байт второй строки сдвигается на единицу влево. Аналогичным образом третья и четвертая строки сдвигаются на два и три смещения соответственно. Таким образом, каждый столбец выходного состояния шага ShiftRows состоит из байтов из каждого столбца входного состояния. Важность этого шага состоит в том, чтобы избежать независимого шифрования столбцов, в этом случае AES выродится в четыре независимых блочных шифра.

Шаг MixColumns

На шаге MixColumns каждый столбец состояния умножается на фиксированный многочлен c (x) {\ displaystyle c (x)}c (x) .

На этапе MixColumns четыре байта каждого столбца состояния объединяются с использованием обратимого линейного преобразования. Функция MixColumns принимает четыре байта в качестве входных и выводит четыре байта, причем каждый входной байт влияет на все четыре выходных байта. Вместе с ShiftRows, MixColumns обеспечивает распространение в шифре.

Во время этой операции каждый столбец преобразуется с использованием фиксированной матрицы (матрица, умноженная слева на столбец, дает новое значение столбца в состоянии):

[b 0, jb 1, jb 2, jb 3, j] = [2 3 1 1 1 2 3 1 1 1 2 3 3 1 1 2] [a 0, ja 1, ja 2, ja 3, j] 0 ≤ j ≤ 3 {\ displaystyle {\ begin {bmatrix } b_ {0, j} \\ b_ {1, j} \\ b_ {2, j} \\ b_ {3, j} \ end {bmatrix}} = {\ begin {bmatrix} 2 3 1 1 \\ 1 2 3 1 \\ 1 1 2 3 \\ 3 1 1 2 \ end {bmatrix}} {\ begin {bmatrix} a_ {0, j} \\ a_ {1, j} \\ a_ {2, j} \\ a_ {3, j} \ end {bmatrix }} \ qquad 0 \ leq j \ leq 3}{\ displaystyle {\ begin {bmatrix} b_ {0, j} \\ b_ {1, j} \\ b_ {2, j} \\ b_ {3, j} \ end {bmatrix}} = {\ begin {bmatrix} 2 3 1 1 \\ 1 2 3 1 \\ 1 1 2 3 \\ 3 1 1 2 \ end {bmatrix}} {\ begin {bmatrix} a_ {0, j} \\ a_ {1, j} \\ a_ {2, j} \\ a_ {3, j} \ end {bmatrix}} \ qquad 0 \ leq j \ leq 3}

Матричное умножение состоит из умножения и сложения записей. Записи обрабатываются байтами как коэффициенты полинома порядка x 7 {\ displaystyle x ^ {7}}{\ displaystyle x ^ {7}} . Сложение - это просто XOR. Умножение производится по модулю неприводимого многочлена x 8 + x 4 + x 3 + x + 1 {\ displaystyle x ^ {8} + x ^ {4} + x ^ {3} + x + 1}{\ displaystyle x ^ {8} + x ^ {4} + x ^ {3} + x + 1} . Если обрабатывается побитно, то после сдвига следует выполнить условное XOR с 1B 16, если сдвинутое значение больше, чем FF 16 (должно выполняться переполнение. корректируется вычитанием порождающего полинома). Это частные случаи обычного умножения в GF ⁡ (2 8) {\ displaystyle \ operatorname {GF} (2 ^ {8})}{\ displaystyle \ operatorname {GF} (2 ^ {8})} .

В более общем смысле каждый столбец рассматривается как многочлен над GF ⁡ (2 8) {\ displaystyle \ operatorname {GF} (2 ^ {8})}{\ displaystyle \ operatorname {GF} (2 ^ {8})} , а затем умножается по модулю 01 16 ⋅ z 4 + 01 16 {\ displaystyle {01} _ {16} \ cdot z ^ {4} + {01} _ {16}}{\ displaystyle {01} _ {16} \ cdot z ^ {4} + {01} _ {16}} с фиксированным многочленом c (z) = 03 16 ⋅ z 3 + 01 16 ⋅ z 2 + 01 16 ⋅ z + 02 16 {\ displaystyle c (z) = {03} _ {16} \ cdot z ^ {3} + {01} _ {16} \ cdot z ^ {2} + {01 } _ {16} \ cdot z + {02} _ {16}}{\ displaystyle c (z) = {03} _ {16} \ cdot z ^ {3} + { 01} _ {16} \ cdot z ^ {2} + {01} _ {16} \ cdot z + {02} _ {16}} . Коэффициенты отображаются в их шестнадцатеричном эквиваленте двоичного представления битовых многочленов из GF ⁡ (2) [x] {\ displaystyle \ operatorname {GF} (2) [x]}{\ displaystyle \ operatorname {GF} (2) [ x]} . Шаг MixColumns также можно рассматривать как умножение на показанную конкретную матрицу MDS в конечном поле GF ⁡ (2 8) {\ displaystyle \ operatorname { GF} (2 ^ {8})}{\ displaystyle \ operatorname {GF} (2 ^ {8})} . Этот процесс описан далее в статье Rijndael MixColumns.

Шаг AddRoundKey

На шаге AddRoundKey каждый байт состояния комбинируется с байтом подключа раунда с помощью операция XOR (⊕).

На этапе AddRoundKey подключ объединяется с состоянием. Для каждого раунда подключ получается из основного ключа с использованием расписания ключей Rijndael ; каждый подключ имеет тот же размер, что и состояние. Подключ добавляется путем объединения каждого байта состояния с соответствующим байтом подключа с помощью побитовой XOR.

Оптимизация шифра

В системах с 32-битными или большими словами это возможно для ускорения выполнения этого шифра путем объединения шагов SubBytes и ShiftRows с шагом MixColumns путем преобразования их в последовательность поиска по таблице. Для этого требуются четыре 32-битные таблицы с 256 записями (вместе занимающие 4096 байт). Затем цикл может быть выполнен с помощью 16 операций поиска в таблице и 12 32-битных операций исключающего ИЛИ, за которыми следуют четыре 32-битных операции исключающего ИЛИ на этапе AddRoundKey. В качестве альтернативы, операция поиска в таблице может выполняться с одной 32-битной таблицей с 256 записями (занимающей 1024 байта) с последующими операциями кругового вращения.

Используя байтовый подход, можно объединить шаги SubBytes, ShiftRows и MixColumns в одну операцию раунда.

Security

Агентство национальной безопасности (АНБ) проверило всех финалистов AES, включая Риджндала, и заявило, что все они достаточно защищены для несекретных данных правительства США. В июне 2003 года правительство США объявило, что AES может использоваться для защиты секретной информации :

. Дизайн и надежность всех длин ключей алгоритма AES (т. Е. 128, 192 и 256) достаточны для защиты секретной информации. до СЕКРЕТНОГО уровня. СОВЕРШЕННО СЕКРЕТНАЯ информация потребует использования ключей длиной 192 или 256. Реализация AES в продуктах, предназначенных для защиты систем национальной безопасности и / или информации, должна быть проверена и сертифицирована NSA до их приобретения и использования.

AES имеет 10 циклов для 128-битных ключей, 12 циклов для 192-битных ключей и 14 раундов для 256-битных ключей.

К 2006 году самые известные атаки были на 7 раундов для 128-битных ключей, 8 раундов для 192-битных ключей и 9 раундов для 256-битных ключей.

Известные атаки

Для криптографов криптографический «взлом» - это что-то более быстрое, чем атака полным перебором, то есть выполнение одного пробного дешифрования для каждого возможного ключа в последовательности (см. Криптоанализ ). Таким образом, перерыв может включать результаты, которые недостижимы с использованием современных технологий. Несмотря на то, что теоретические исследования непрактичны, иногда они могут дать представление о моделях уязвимости. Самая крупная успешная публично известная атака грубой силы на широко применяемый алгоритм шифрования блочного шифрования была проведена с использованием 64-битного ключа RC5, разработанного distribution.net в 2006 году.

Пространство ключей увеличивается в 2 раза на каждый дополнительный бит длины ключа, и если каждое возможное значение ключа равновероятно, это приводит к удвоению среднего времени поиска ключа методом перебора. Это означает, что усилие перебора увеличивается экспоненциально с увеличением длины ключа. Длина ключа сама по себе не означает защиты от атак, поскольку существуют шифры с очень длинными ключами, которые оказались уязвимыми.

AES имеет довольно простую алгебраическую основу. В 2002 г. Николас Куртуа и Йозеф Пипжик объявили о теоретической атаке, названной «XSL-атака », с целью показать слабость в алгоритме AES., частично из-за невысокой сложности его нелинейных составляющих. С тех пор другие документы показали, что атака в том виде, в котором она была представлена ​​изначально, неосуществима; см. XSL-атака на блочные шифры.

В процессе выбора AES разработчики конкурирующих алгоритмов написали об алгоритме Риджндала: «Мы обеспокоены использованием [его]... в критически важных для безопасности приложениях». Однако в октябре 2000 года, в конце процесса выбора AES, Брюс Шнайер, разработчик конкурирующего алгоритма Twofish, написал, что, хотя, по его мнению, успешные академические атаки на Rijndael будут когда-нибудь разработанная, он «не верил, что кто-либо когда-либо обнаружит атаку, которая позволит кому-то читать трафик Rijndael».

До мая 2009 года единственными успешными опубликованными атаками против полной AES были побочные атаки. канальные атаки на некоторые конкретные реализации. В 2009 году была обнаружена новая атака связанных ключей, которая использует простоту расписания ключей AES и имеет сложность 2. В декабре 2009 года она была улучшена до 2. Это последующая атака. обнаружен ранее в 2009 году Алексом Бирюковым, Дмитрием Ховратовичем и Ивицей Николичем, со сложностью 2 для одного из каждых 2 ключей. Однако атаки со связанными ключами не вызывают беспокойства ни в одном должным образом разработанном криптографическом протоколе, поскольку правильно разработанный протокол (т. Е. Программное обеспечение для реализации) позаботится о том, чтобы не допустить использование связанных ключей, по существу, ограничивая средства атакующего выбор ключей для родства.

Еще одна атака была опубликована в блоге Брюса Шнайера 30 июля 2009 г. и опубликована в виде препринта 3 августа 2009 г. Эта новая атака была создана Алексом Бирюковым, Орром Дункельманом, Натаном Келлером, Дмитрием Ховратовичем и Ади Шамир, против AES-256, который использует только два связанных ключа и 2 раза для восстановления полного 256-битного ключа 9-раундовой версии или 2 раза для 10-раундовой версии с более сильным типом связанная атака подключей, или 2 раза для 11-раундовой версии. 256-битный AES использует 14 раундов, поэтому эти атаки не эффективны против полного AES.

Практичность этих атак с более сильными связанными ключами подверглась критике, например, в статье об атаках с выбранным ключом-посредником на AES-128, автором которой является Винсент Раймен в 2010 году.

В ноябре 2009 года в качестве препринта была выпущена первая атака с распознаванием известного ключа против сокращенной 8-раундовой версии AES-128. Эта атака с распознаванием известного ключа является улучшением отскока или атаки начала с середины против AES-подобных перестановок, которые рассматривают два последовательных раунда перестановки как применение так называемого Super-S-блока.. Он работает с 8-раундовой версией AES-128, с временной сложностью 2 и сложностью памяти 2. 128-битный AES использует 10 раундов, поэтому эта атака не эффективна против полного AES-128.

Первые атаки с восстановлением ключа на полную AES были предприняты Андреем Богдановым, Дмитрием Ховратовичем и Кристианом Рехбергером и были опубликованы в 2011 году. Атака представляет собой бикликовую атаку и быстрее грубой силы примерно в четыре раза. Для восстановления ключа AES-128 требуется 2 операции. Для AES-192 и AES-256 необходимо 2 и 2 операции соответственно. Этот результат был дополнительно улучшен до 2 для AES-128, 2 для AES-192 и 2 для AES-256, которые на данный момент являются лучшими результатами атаки восстановления ключа против AES.

Это очень небольшой выигрыш, так как 126-битный ключ (вместо 128-битного) все равно потребует миллиарды лет, чтобы перебрать текущее и ожидаемое оборудование. Кроме того, авторы вычисляют лучшую атаку, используя свою технику на AES со 128-битным ключом, требующим хранения 2 бита данных. Это составляет около 38 триллионов терабайт данных, что больше, чем все данные, хранящиеся на всех компьютерах на планете в 2016 году. Таким образом, нет никаких практических последствий для безопасности AES. Позднее сложность пространства была увеличена до 2 бит, что составляет 9007 терабайт.

Согласно документам Сноудена, АНБ исследует, может ли криптографическая атака, основанная на тау-статистике, взломать AES.

В настоящее время не существует известной практической атаки, которая позволила бы кому-либо, не знающему ключа, читать данные, зашифрованные AES, при правильной реализации.

Атаки по побочному каналу

Атаки по побочному каналу не атакуют шифр как черный ящик и, таким образом, не связаны с безопасностью шифра, как определено в классическом контексте., но важны на практике. Они атакуют реализации шифра на аппаратном или программном обеспечении, в результате чего происходит непреднамеренная утечка данных. Известно несколько таких известных атак на различные реализации AES.

В апреле 2005 г. Д.Дж. Бернштейн объявил об атаке с синхронизацией кеша, которую он использовал для взлома специального сервера, который использовал шифрование AES OpenSSL. Для атаки потребовалось более 200 миллионов выбранных открытых текстов. Пользовательский сервер был разработан так, чтобы выдавать как можно больше информации о времени (сервер сообщает количество машинных циклов, затраченных на операцию шифрования). Однако, как указал Бернштейн, «уменьшение точности временных меток сервера или их исключение из ответов сервера не останавливает атаку: клиент просто использует время приема-передачи, основанное на своих локальных часах, и компенсирует повышенный шум. путем усреднения по большему количеству выборок ».

В октябре 2005 года Даг Арне Освик, Ади Шамир и Эран Тромер представили документ, демонстрирующий несколько атак с синхронизацией кеша на реализации в AES, найденных в OpenSSL и функции шифрования раздела dm-cryptLinux. Одна атака смогла получить весь ключ AES всего после 800 операций, запускающих шифрование, в общей сложности за 65 миллисекунд. Эта атака требует, чтобы злоумышленник имел возможность запускать программы в той же системе или платформе, на которой выполняется AES.

В декабре 2009 года была опубликована атака на некоторые аппаратные реализации, которая использовала дифференциальный анализ неисправностей и позволяет восстановить ключ со сложностью 2.

В ноябре 2010 года Endre Бангертер, Дэвид Гуллаш и Стефан Кренн опубликовали статью, в которой описал практический подход к восстановлению секретных ключей из AES-128 «почти в реальном времени» без необходимости в зашифрованном или открытом тексте. Этот подход также работает с реализациями AES-128, которые используют таблицы сжатия, такие как OpenSSL. Как и некоторые предыдущие атаки, для этой атаки требуется возможность запускать непривилегированный код в системе, выполняющей шифрование AES, что может быть достигнуто путем заражения вредоносным ПО гораздо проще, чем реквизиции учетной записи root.

В марте 2016 года Ashokkumar C., Рави Пракаш Гири и Бернард Менезеш представили атаку побочного канала на реализации AES, которая может восстановить полный 128-битный ключ AES всего за 6-7 блоков открытого текста / зашифрованного текста, что является существенным улучшением по сравнению с предыдущими работами, которые требовали от 100 до миллион шифров. Предлагаемая атака требует стандартных прав пользователя, а алгоритмы извлечения ключей выполняются менее чем за минуту.

Многие современные процессоры имеют встроенные аппаратные инструкции для AES, которые защищают от атак по побочным каналам, связанных с синхронизацией.

Проверка NIST / CSEC

Программа валидации криптографических модулей (CMVP) осуществляется совместно Национальным институтом стандартов и технологий (NIST) правительства США, отделом компьютерной безопасности и организацией безопасности связи (CSE) правительства Канады. Правительство США требует использования криптографических модулей, утвержденных в соответствии с NIST FIPS 140-2, для шифрования всех данных, имеющих классификацию «Конфиденциальные, но несекретные» (SBU) или выше. Из NSTISSP № 11, Национальная политика по обеспечению получения информации: «Продукты шифрования для защиты секретной информации будут сертифицированы NSA, а продукты шифрования, предназначенные для защиты конфиденциальной информации, будут сертифицированы в соответствии с NIST FIPS 140-2».

Правительство Канады также рекомендует использовать проверенные по FIPS 140 криптографические модули в несекретных приложениях своих ведомств.

Хотя публикация NIST 197 («FIPS 197») является уникальным документом, который описывает алгоритм AES, поставщики обычно обращаются к CMVP в соответствии с FIPS 140 и просят иметь несколько алгоритмов (например, Triple DES или SHA1 ) проверяется одновременно. Следовательно, редко можно найти криптографические модули, которые однозначно проверены FIPS 197, а сам NIST обычно не тратит время на то, чтобы перечислить проверенные модули FIPS 197 отдельно на своем общедоступном веб-сайте. Вместо этого проверка FIPS 197 обычно просто указывается как нотация «Утверждено FIPS: AES» (с конкретным номером сертификата FIPS 197) в текущем списке проверенных FIPS 140 криптографических модулей.

Программа проверки криптографических алгоритмов (CAVP) позволяет проводить независимую проверку правильности реализации алгоритма AES. Успешная проверка приводит к появлению в списке на странице проверок NIST. Это тестирование является предварительным условием для проверки модуля FIPS 140-2, описанной ниже. Однако успешная проверка CAVP никоим образом не означает, что криптографический модуль, реализующий алгоритм, безопасен. Криптографический модуль без проверки FIPS 140-2 или специального одобрения NSA не считается безопасным правительством США и не может использоваться для защиты государственных данных.

Проверка FIPS 140-2 является сложной задачей как технически, так и фискально. Существует стандартная батарея тестов, а также элемент проверки исходного кода, который необходимо пройти в течение нескольких недель. Стоимость проведения этих тестов в утвержденной лаборатории может быть значительной (например, более 30 000 долларов США) и не включает время, необходимое для написания, тестирования, документирования и подготовки модуля для проверки. После проверки модули должны быть повторно представлены и повторно оценены, если они каким-либо образом изменены. Это может варьироваться от простых обновлений документов, если функциональные возможности безопасности не изменились, до более существенного набора повторных проверок, если на функциональные возможности безопасности это изменение повлияло.

Тестовые векторы

Тестовые векторы - это набор известных шифров для данного входа и ключа. NIST распределяет эталоны тестовых векторов AES как векторы теста известных ответов AES (KAT).

Производительность

Критериями процесса выбора AES были высокая скорость и низкие требования к ОЗУ. В качестве выбранного алгоритма AES хорошо работает на широком спектре оборудования, от 8-битных смарт-карт до высокопроизводительных компьютеров.

На Pentium Pro для шифрования AES требуется 18 тактовых циклов на байт, что эквивалентно пропускной способности около 11 МБ / с для процессора 200 МГц.

На процессорах Intel Core i3 /i5 /i7 и AMD Ryzen, поддерживающих расширения набора инструкций AES-NI, пропускная способность может составлять несколько ГБ / с (даже более 10 ГБ / с).

Реализации

См. Также

Примечания

  1. ^Размеры ключей 128, 160, 192, 224 и 256 бит поддерживаются алгоритмом Rijndael, но только 128, 192 и 256-битные ключи указаны в стандарте AES.
  2. ^Размер блока 128, 160, 192, 224 и 256 бит поддерживается алгоритмом Rijndael для каждого размера ключа, но в стандарте AES указан только размер блока 128 бит.
  3. ^Варианты Rijndael с большими блоками используют массив с дополнительными столбцами, но всегда с четырьмя строками.
  4. ^Варианты Rijndael с большим размером блока имеют немного другие смещения. Для блоков размером 128 бит и 192 бита схема сдвига одинакова. Строка n {\ displaystyle n}n сдвигается влево по кругу на n - 1 {\ displaystyle n-1}n-1 байт. Для 256-битного блока первая строка не изменяется, а сдвиг для второй, третьей и четвертой строк составляет 1, 3 и 4 байта соответственно - это изменение применяется только для шифра Rijndael при использовании с 256-битным блоком., поскольку AES не использует 256-битные блоки.
  5. ^Векторы теста известных ответов AES (KAT) доступны в формате Zip на сайте NIST здесь Архивировано 23.10.2009 на Wayback Machine

Ссылки

Внешние ссылки

Последняя правка сделана 2021-06-10 02:07:34
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте