Опубликован: 19.01.2010 | Уровень: специалист | Доступ: свободно
Лекция 10:

Усовершенствованный стандарт шифрования (AES — Advanced Encryption Standard)

< Лекция 9 || Лекция 10: 12345 || Лекция 11 >

10.4. Анализ AES

Далее дан краткий обзор трех характеристик AES.

Безопасность

AES был разработан после DES. Большинство известных атак на DES было проверено на AES; ни одна из них до сих пор не нарушила безопасность AES.

Атака грубой силы

AES явно более безопасен, чем DES, из-за большего размера ключа ( 128, 192 и 256 битов). Давайте сравним DES с ключом шифра на 56 битов и AES с ключом шифра на 128 битов. Для DES, чтобы найти ключ, мы нуждаемся в 256 испытаний (игнорируя проблему дополнения ключа); для AES — в 2128 испытаниях. Это означает, что если мы можем нарушить DES в t секунд, нам нужно ( {2^{72}} \times t ) секунд, чтобы нарушить AES. Это почти невозможно. Кроме того, AES обеспечивает две другие версии более длинными ключами шифра. Отсутствие слабых ключей — еще одно преимущество AES перед DES.

Статистические атаки

Сильное рассеивание и перемешивание, обеспеченное комбинацией преобразований SubByte, ShiftRows и MixColumns, удаляют любую частотную закономерность в исходном тексте. Многочисленные испытания не сумели выполнить статистический анализ зашифрованного текста.

Дифференциальные и линейные атаки

AES был разработан после DES. Дифференциальные и линейные атаки криптоанализа были, без сомнения, учтены. Подобные атаки на AES пока не обнаружены.

Реализация

AES может быть реализован в программном обеспечении, аппаратных средствах и программируемом оборудовании. Реализация может применять процесс поиска в таблице или процедуры, в которых использована четкая алгебраическая структура. Преобразование может быть ориентировано или на байт, или на слово. В ориентированной на байт версии алгоритм может использовать процессор на 8 битов; в ориентированной на слово версии — процессор на 32 бита. В любом случае, обработка делается очень быстро.

Простота и стоимость

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

10.5. Рекомендованная литература

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

Книги

[Sta06] [Sti06] [Rhe03], [Sal03], [Mao04] и [TW06] рассматривают AES.

Сайты

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

10.6. Итоги

  • Усовершенствованный стандарт шифрования (AES — ADVANCED ENCRYPTION STANDARD) — стандарт блочного шифра с симметричными ключами, опубликованный Национальным Институтом стандартов NIST (National Institute of Standard and Technology) как Федеральный Стандарт Обработки Информации 197 (FIPST-197 — FEDERAL INFORMATION PROCESSING STANDARD 197). AES базируется на Rijndael алгоритме.
  • AES — шифр не-Файстеля, который зашифровывает и расшифровывает блок данных длиной 128 битов. Оно использует 10, 12 или 14 раундов.
  • Размер ключа, который может быть 128, 192 или 256 битов, зависит от числа раундов.
  • AES ориентирован на работу с байтами. Исходный текст на 128 битов или зашифрованный текст рассматривается как шестнадцать байтов по 8 битов. Чтобы обеспечить выполнение некоторых математических преобразований на байтах, в AES определено понятие матрицы состояний. Матрица состояний — это матрица 4 \times 4, в которой каждый вход является байтом.
  • Чтобы обеспечить безопасность, AES использует четыре типа преобразований: подстановка, перестановка, смешивание и добавление ключа. Каждый раунд AES, кроме последнего, применяет эти четыре преобразования. Последний раунд использует только три из четырех преобразований.
  • Подстановка определяется либо процессом поиска в таблице, либо математическим вычислением в поле GF(28). AES использует два обратимых преобразования — SubBytes и InvSubBytes, которые являются инверсиями друг друга.
  • Второе преобразование в раунде — сдвиг, которое переставляет байты. В шифровании преобразование названо ShiftRows, в дешифрованииInvShiftRows. Преобразования ShiftRows и InvShiftRows инверсны друг другу.
  • Преобразование смешивания изменяет содержание каждого байта, обрабатывая одновременно четыре байта и объединяя их, чтобы получить четыре новых байта. AES определяет два преобразования, MixColumns и InvMixColumns, используемые в шифровании и дешифровании. MixColumns умножает матрицу состояний на квадратную матрицу констант; InvMixColumns делает то же самое, используя обратную матрицу констант. Преобразования MixColumns и InvMixColumns инверсны друг другу.
  • Преобразование, которое выполняет отбеливание, называется AddRoundKey. Предыдущая матрица состояний складывается (матричное сложение) с матричным ключом раунда, чтобы создать новую матрицу. Сложение отдельных элементов в этих двух матрицах выполняется в GF(28), что означает, что над словами по 8 битов проводится операция ИСКЛЮЧАЮЩЕЕ ИЛИ ( XOR ). Преобразование AddRoundKey инверсно само себе.
  • В первой конфигурации ( 10 раундов с ключами на 128 битов) генератор ключей создает одиннадцать ключей раунда на 128 битов из ключа шифра на 128 битов. AES использует понятие слова для генерации ключей. Слова состоят из четырех байт. Ключи раунда генерируются слово за словом. AES нумерует слова от w2 до w43. Процесс называется "расширение ключа".
  • Шифр AES для дешифрования использует два алгоритма. В первоначальном проекте порядок преобразований в каждом раунде — различен при шифровании и дешифровании. В альтернативном проекте преобразования в алгоритмах дешифрования перестроены так, чтобы порядок в шифровании и дешифровании был один и тот же. Во второй версии обратимость обеспечена для пары преобразований.

10.7. Набор для практики

Обзорные вопросы

  1. Перечислите критерии, определенные NIST для AES.
  2. Перечислите параметры (размер блока, размер ключа и число раундов) для трех версий AES.
  3. Сколько преобразований имеется в каждой версии AES? Сколько ключей необходимо для каждой версии?
  4. Сравните DES и AES. Какой из них ориентирован на работу с битом, а какой — на работу с байтом?
  5. Определите матрицу состояний в AES. Сколько матриц состояний имеется в каждой версии AES?
  6. Какие из четырех преобразований, определенных для AES, изменяют содержание байтов, а какие — не изменяют?
  7. Сравните подстановку в DES и AES. Почему мы имеем только одну таблицу перестановки ( S -блок) в AES и несколько — в DES?
  8. Сравните перестановки в DES и AES. Почему надо иметь расширение и сжатие перестановки в DES и не надо — в AES?
  9. Сравните ключи раунда в DES и AES. В каком шифре размер ключа раунда равен размеру блока?
  10. Почему смешивающее преобразование ( MixColumns ) нужно в DES, но не нужно в AES?

Упражнения

  1. При шифровании S -блоки могут быть или статическими, или динамическими. Параметры в статическом S -блоке не зависят от ключа.
    • Указать преимущества и недостатки статического и динамического S -блоков.
    • S -блоки в AES (таблицы подстановки), статические или динамические?
  2. AES имеет больший размер блока, чем DES ( 128 — в AES и 64 — в DES). Объясните, преимущество это или недостаток.
  3. AES определяет различные реализации с различным числом раундов ( 10, 12 и 14 ); DES определяет только одну реализацию с 16 раундами. Объясните, преимущество это или недостаток AES и DES и в чем отличие.
  4. AES определяет три различных размера ключа к шифру ( 128, 192 и 256 ); DES определяет только один размер ключа к шифру ( 56 ). Каковы преимущества и недостатки такого отличия?
  5. В AES размер блока равен размеру ключей раунда ( 128 бит). В DES размер блока 64 бита, но размер ключей раунда — только 48 бит. Является ли эта разница преимуществом или недостатком AES по сравнению с DES?
  6. Докажите, что преобразования ShiftRows и InvShiftRows — инверсны:
    • Покажите таблицу перестановки для ShiftRows. Таблица должна иметь 128 входов, но так как содержание байта не изменяется, таблица может иметь только 16 выходов; каждый выход представляет байт.
    • Повторите часть a для InvShiftRows преобразования.
    • Используя результаты частей a и b, докажите, что преобразования ShiftRows и InvShiftRows инверсны друг другу.
  7. Используйте один и тот же ключ шифра, применив его для каждого из следующих преобразований на двух исходных текстах, которые отличаются только по первому биту. Найдите число изменившихся битов после каждого преобразования.
    • SubBytes
    • ShiftRows
    • MixColumns
    • AddRoundKey (с теми же самыми ключами раунда по вашему выбору)
  8. Для того чтобы увидеть нелинейность преобразования SubBytes, покажите, что если a и b — два байта, то мы имеем
    SubBytes(a \oplus  b) \ne  SubBytes(a) \oplus  SubBytes(b)

    Как пример используйте a = 0 x 57 и b = 0 x A2.

  9. Дайте общую формулу для вычисления числа в каждом из видов преобразования SubBytes, ShiftRows, MixColumns и AddRoundKey и числа полных преобразований для каждой версии AES. Формула должна быть функцией числа раундов.
  10. Измените рисунок 10.1 для AES-192 и AES-256.
  11. Создайте две новые таблицы, которые показывают RCons константы для реализаций AES-192 и AES-256 (см. таблицу 10.2).
  12. В AES-128 для предварительного раунда используются такие же ключи, как ключи шифрования. Справедливо ли это для AES-192? Справедливо ли это для AES-256?
  13. На рисунке 9.8 перемножьте X и X-1 матрицы, чтобы доказать, что они инверсны друг другу.
  14. Используя рисунок 9.12, перепишите квадратные матрицы C и C-1, применяя полиномы с коэффициентами в GF(2). Перемножьте эти две матрицы и докажите, что они являются обратными друг другу.
  15. Докажите, что код в алгоритме 9.1 (преобразование SubByte ) соответствует процессу, показанному на рис. 9.8.
  16. Используя алгоритм 9.1 (преобразование SubByte ), сделайте следующее:
    • Напишите код для процедуры, которая вычисляет инверсию байта в GF(28).
    • Напишите код для ByteToMatrix.
    • Напишите код для MatrixToByte.
  17. Напишите алгоритм для преобразования InvSubBytes.
  18. Докажите, что код в алгоритме 9.2 (преобразование ShiftRows ) соответствует процессу, показанному на рис. 9.9.
  19. Используя алгоритм 9.2 (преобразование ShiftRows ), напишите код для процедуры copyrow.
  20. Напишите алгоритм для преобразования InvShiftRows.
  21. Докажите, что код в алгоритме 9.3 (преобразование MixColumns ) соответствует процессу, показанному на рис. 9.13.
  22. Используя алгоритм 9.3 (преобразование MixColumns ), напишите код для процедуры copycolumns.
  23. Перепишите алгоритм 9.3 (преобразование MixColumns ), заменив операторы (.) процедурой, называемой multfield, чтобы вычислить произведение двух байтов в поле GF(28).
  24. Напишите алгоритм для преобразования InvMixColumn.
  25. Докажите, что код в алгоритме 9.4 (преобразование AddRoundKey ), соответствует процессу, показанному на рис. 9.15.
  26. В алгоритме 10.1 (расширение ключа):
    • Напишите кодовую программу для процедуры Subbyte.
    • Напишите код программу для процедуры Rotword.
  27. Дайте два новых алгоритма для расширения ключа в AES-192 и AES-256 (см. алгоритм 10.1).
  28. Напишите алгоритм расширения ключей для обратного шифра в альтернативном проекте.
  29. Напишите алгоритм для обратного шифра в первоначальном проекте.
  30. Напишите алгоритм для обратного шифра в альтернативном проекте.
< Лекция 9 || Лекция 10: 12345 || Лекция 11 >
Евгений Виноградов
Евгений Виноградов
Экстернат
Илья Сидоркин
Илья Сидоркин
Как получить диплом?
Ivan Iakimov
Ivan Iakimov
Израиль
Вадим Лелес
Вадим Лелес
Россия