Опубликован: 28.11.2014 | Уровень: для всех | Доступ: свободно | ВУЗ: Московский государственный университет имени М.В.Ломоносова
Лекция 2:

Алгоритм AES. Режимы выполнения алгоритмов симметричного шифрования. Создание случайных чисел

Алгоритм AES

Инициатива в разработке AES (Advanced Encryption Standard) принад-лежит NIST. Основная цель состояла в создании алгоритма симметричного шифрования, который мог бы использоваться для защиты информации как в государственном, так и в частном секторе.

В результате длительного процесса оценки был выбран алгоритм Rijndael в качестве алгоритма AES. Мы кратко рассмотрим основные принципы выбора алгоритма, характеристики алгоритмов, которые рассматривались в качестве претендентов на AES.

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

В августе 1998 года NIST анонсировал пятнадцать кандидатов на алгоритм AES на первой конференции по кандидатам AES. Данные алгоритмы были разработаны промышленными и академическими кругами двенадцати стран. Вторая конференция по кандидатам AES была проведена в марте 1999 года с целью обсуждения результатов анализа предложенных алгоритмов. В августе 1999 года были представлены выбранные NIST пять финалистов. Ими стали MARS, RC6TM, Rijndael, Serpent и Twofish.

Обзор алгоритмов

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

Первое и последнее преобразования могут отличаться от преобразования остальных раундов. Такие операции, используемые на начальном шаге первого раунда и заключительном шаге последнего раунда, называются pre- и post-забеливанием (whitening) и могут быть определены отдельно.

Рассмотрим основные особенности алгоритмов. В четырех алгоритмах существуют таблицы подстановки, называемые S-box: A x B-битный S-box преобразует А входных битов в В выходных битов. Три алгоритма основаны на сети Фейштеля. В классической сети Фейштеля в каждом раунде преобразуется только одна половина блока данных, затем половины блока меняются местами. Два алгоритма не используют сеть Фейштеля, в результате этого в каждом раунде обрабатывается весь блок данных, используя различные подстановки и преобразования.

MARS выполняет последовательность преобразований в следующем порядке: сложение с ключом в качестве pre-whitening, 8 раундов прямого перемешивания без использования ключа, 8 раундов прямого преобразова-ния с использованием ключа, 8 раундов обратного преобразования с использованием ключа, 8 раундов обратного перемешивания без использования ключа и вычитание ключа в качестве post-whitening. 16 раундов с использованием ключа называются криптографическим ядром. Раунды без ключа используют два 8X16- битных S-box и операции сложения и XOR. В дополнение к этим элементам раунды с ключом используют 32-битное умножение ключа, зависимые от данных циклические сдвиги и добавление ключа. Как раунды перемешивания, так и раунды ядра являются раундами модифицированной сети Фейштеля, в которых четверть блока данных используется для изменения остальных трех четвертей блока данных. MARS был предложен корпорацией IBM.

RC6 является параметризуемым семейством алгоритмов шифрования, основанных на сети Фейштеля; в качестве AES было предложено использовать 20 раундов. Функция раунда в алгоритме RC6использует переменные циклические сдвиги, которые определяются квадратичной функцией от данных. Каждый раунд также включает умножение по модулю 32, сложение, XOR и сложение с ключом. Сложение с ключом также используется для pre- и pos-whitening. RC6 был предложен лабораторией RSA.

Rijndael представляет собой алгоритм, использующий линейно-подстановочные преобразования и состоящий из 10, 12 или 14 раундов в зависимости от длины ключа. Блок данных, обрабатываемый алгоритмом Rijndael, представляется в виде последовательности байтов, и в этом смысле каждое преобразование является байт-ориентированным. Функция раунда Rijndael состоит из четырех слоев. В первом слое для каждого байта применяется S-box размерностью 8х8 бит. Второй и третий слои являются линейными перемешиваниями, в которых строки рассматриваются в качестве сдвигаемых массивов и столбцы перемешиваются. В четвертом слое выполняется операция XOR байтов подключа и массива. В последнем раунде перемешивание столбцов опущено. Rijndael предложен Joan Daemen (Proton World International) и Vincent Rijmen (Katholieke Universiteit Leuven).

Serpent является алгоритмом, использующим линейно-подстановочные преобразования и состоящим из 32 раундов. Serpent также определяет не криптографические начальную и заключительную перестановки, которые облегчают альтернативный режим реализации, называемый bit slice. Функция раунда состоит из трех слоев: операция XOR с ключом, 32-х параллельное применение одного из восьми фиксированных S-box и линейное преобразование. В последнем раунде слой операции XOR с ключом заменен на линейное преобразование. Serpent предложен Ross Anderson (University of Cambridge), Eli Biham (Technion) и Lars Knudsen (University of California San Diego).

Twofish является сетью Фейштеля с 16 раундами. Сеть Фейштеля не-значительно модифицирована с использованием однобитных ротаций. Функция раунда влияет на 32-битные слова, используя четыре зависящих от ключа S-box, за которыми следуют фиксированные максимально удаленные отдельные матрицы в GF(28), преобразование псевдо-Адамара и добавление ключа. Twofish был предложен Bruce Schneier, John Kelsey и Niels Ferguson (Counterpane Internet Security, Inc.), Doug Whiting (Hi/fn, Inc.), David Wagner (University of California Berkley) и Chris Hall (Princeton University).

Критерий оценки

В сентябре 1997 года были определены общие критерии, которые должны использоваться для сравнения алгоритмов.

В сентябре 1997 года были определены общие критерии, которые должны использоваться для сравнения алгоритмов.

  • Безопасность.
  • Стоимость.
  • Характеристики алгоритма и его реализации.

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

Стоимость является вторым по важности параметром оценки, который характеризует лицензионные требования, вычислительную эффективность (скорость) на различных платформах и требования к памяти. Так как одной из целей была возможность широкого использования алгоритма AES без лицензионных ограничений, обсуждались в основном требования защиты интеллектуальной собственности и потенциальные конфликты, связанные с этим. Рассматривалась также скорость работы алгоритма на различных платформах. В первую очередь основное внимание уделялось скорости, связанной со 128-битными ключами. Затем рассматривались аппаратные реализации и производительность алгоритма при использовании 192- и 256-битных ключей. Также рассматривались требования к памяти и ограничения программной реализации.

Третьей областью оценки являлись такие характеристики алгоритмов и их реализаций, как гибкость, возможность как аппаратной, так и программной реализаций, простота алгоритма. Гибкость означает следующие возможности алгоритма:

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

Должна быть возможность реализовать алгоритм как аппаратно, так и программно, эффективность смешанных (firmware) реализаций также считается преимуществом. Относительная простота разработки алгоритма также является фактором оценки.