Прошел экстерном экзамен по курсу перепордготовки "Информационная безопасность". Хочу получить диплом, но не вижу где оплатить? Ну и соответственно , как с получением бумажного документа? |
Алгоритмы симметричного шифрования. Часть 3. Разработка Advanced Encryption Standard (AES)
Разработка Advanced Encryption Standard (AES)
Обзор процесса разработки AES
Инициатива в разработке AES принадлежит NIST. Основная цель состояла в создании федерального стандарта (FIPS), который бы описывал алгоритм шифрования, используемый для защиты информации как в государственном, так и в частном секторе.
Конкуренция среди финалистов была достаточно серьезной, и в результате длительного процесса оценки NIST выбрал Rijndael в качестве алгоритма AES. Мы кратко рассмотрим этот процесс и суммируем различные характеристики алгоритмов, которые были описаны на данном этапе. Следующий раздел представляет собой обзор разработки AES и обсуждение деталей алгоритмов.
Историческая справка
2 января 1997 года NIST объявил о начале разработки AES, и 12 сентября 1997 года были представлены официальные требования к алгоритмам. В этих требованиях указывалось, что целью NIST является разработка неклассифицированного, хорошо проанализированного алгоритма шифрования, доступного для широкого применения. Как минимум алгоритм должен быть симметричным и блочным и поддерживать длину блока 128 бит и длину ключа 128, 192 и 256 бит.
20 августа 1998 года NIST анонсировал пятнадцать кандидатов на алгоритм AES на первой конференции кандидатов AES (AES1), и было предложено прокомментировать их характеристики. Данные алгоритмы были разработаны промышленными и академическими кругами двенадцати стран. Вторая конференция кандидатов AES (AES2) была проведена в марте 1999 года с целью обсуждения результатов анализа предложенных алгоритмов. В августе 1999 года были представлены выбранные NIST пять финалистов. Ими стали MARS, RC6 , Rijndael, Serpent и Twofish.
Обзор финалистов
Все пять финалистов являются итерационными блочными алгоритмами шифрования: они определяют преобразование, которое повторяется определенное число раз над блоком шифруемых или дешифруемых данных. Шифруемый блок данных называется plaintext; зашифрованный plaintext называется ciphertext. Для дешифрования в качестве обрабатываемого блока данных используется ciphertext. Каждый финалист также определяет метод создания серии ключей из исходного ключа, называемый управлением ключом. Полученные ключи называются подключами. Функции раунда используют в качестве входа различные подключи для конкретного блока данных.
У каждого финалиста первая и последняя криптографические операции являются некоторой формой перемешивания подключей и блока данных. Такие операции, используемые на начальном шаге первого раунда и заключительном шаге последнего раунда, называются pre- и post-забеливанием (whitening) и могут быть определены отдельно.
Существуют также некоторые другие технические особенности финалистов. Четыре финалиста определяют таблицы подстановки, называемые S-box: AxB-битный S-box заменяет А входных битов на В выходных битов. Три финалиста определяют функции раунда, являющиеся сетью Фейстеля. В классической сети Фейтеля одна половина блока данных используется для модификации другой половины блока данных, затем половины меняются местами. Два финалиста не используют сеть Фейстеля, в каждом раунде обрабатывают параллельно весь блок данных, применяя подстановки и линейные преобразования; таким образом, эти два финалиста являются примерами алгоритмов, использующих линейно-подстановочное преобразование.
Далее рассмотрим каждый из алгоритмов в алфавитном порядке; профили и оценки будут представлены в следующих разделах.
MARS выполняет последовательность преобразований в следующем порядке: сложение с ключом в качестве pre-whitening, 8 раундов прямого перемешивания без использования ключа, 8 раундов прямого преобразования с использованием ключа, 8 раундов обратного преобразования с использованием ключа, 8 раундов обратного перемешивания без использования ключа и вычитание ключа в качестве post-whitening. 16 раундов с использованием ключа называются криптографическим ядром. Раунды без ключа используют два 8х16-битных S-boxes и операции сложения и XOR. В дополнение к этим элементам раунды с ключом используют 32-битное умножение ключа, зависимые от данных циклические сдвиги и добавление ключа. Как раунды перемешивания, так и раунды ядра являются раундами модифицированной сети Фейстеля, в которых четверть блока данных используется для изменения остальных трех четвертей блока данных. MARS предложен корпорацией IBM.
RC6 является параметризуемым семейством алгоритмов шифрования, основанных на сети Фейстеля ; для AES было предложено использовать 20 раундов. Функция раунда в RC6 задействует переменные циклические сдвиги, которые определяются квадратичной функцией от данных. Каждый раунд также включает умножение по модулю 32, сложение, XOR и сложение с ключом. Сложение с ключом также используется для pre- и post-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 также определяет некриптографические начальную и заключительную перестановки, которые облегчают альтернативный режим реализации, называемый bitslice. Функция раунда состоит из трех слоев: операция XOR с ключом, 32-х параллельное применение одного из восьми фиксированных S-boxes и линейное преобразование. В последнем раунде слой XOR с ключом заменен на линейное преобразование. Serpent предложен Ross Anderson (University of Cambridge), Eli Biham (Technion) и LarsKnudsen (University of California San Diego).
Twofish является сетью Фейстеля с 16 раундами. Сеть Фейстеля незначительно модифицирована с использованием однобитных ротаций. Функция раунда влияет на 32-битные слова, используя четыре зависящих от ключа S-boxes, за которыми следуют фиксированные максимально удаленные отдельные матрицы в 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).
При объявлении финалистов представители NIST предложили обсудить и прокомментировать алгоритмы. На третьей конференции кандидатов AES (AES3), состоявшейся в апреле 2000 года, представленные комментарии были рассмотрены. Период открытого обсуждения был завершен 15 мая 2000 года.
Критерий оценки
В сентябре 1997 года, объявив об алгоритмах кандидатов, специалисты NIST определили общий критерий, который должен использоваться при сравнении алгоритмов.
Критерий оценки был разделен на три основных категории:
- Безопасность.
- Стоимость.
- Характеристики алгоритма и его реализации.
Безопасность является важнейшим фактором при оценке и сравнении таких возможностей как стойкость алгоритма к криптоанализу, исследование его математической основы, случайность выходных значений алгоритма и относительная безопасность по сравнению с другими кандидатами.
Стоимость является второй важной областью оценки, которая характеризует лицензионные требования, вычислительную эффективность (скорость) на различных платформах и требования к памяти. Так как одной из целей NIST была возможность широкой доступности алгоритма AES без лицензионных ограничений, обсуждались в основном требования защиты интеллектуальной собственности и потенциальные конфликты. Рассматривалась также скорость работы алгоритма на различных платформах. При первом обсуждении основное внимание уделялось скорости, связанной со 128-битными ключами. При втором обсуждении рассматривались аппаратные реализации и скорости, связанные со 192- и 256-битными ключами. Также важно рассматривать требования памяти и ограничения программной реализации.
Третьей областью оценки являлись характеристики алгоритма и реализации, такие как гибкость, аппаратное и программное соответствие и простота алгоритма. Гибкость включает возможность алгоритма:
- управлять размером ключа и блока сверх того, который минимально должен поддерживаться;
- безопасно и эффективно реализовываться в различных типах окружений;
- реализовываться в качестве поточного алгоритма шифрования, хэш-функции и обеспечивать дополнительные криптографические сервисы.
Должна быть возможность реализовать алгоритм как аппаратно, так и программно, эффективность смешанных (firmware) реализаций также считается преимуществом. Относительная простота разработки алгоритма также является фактором оценки.
На первом и втором этапах обсуждения стало очевидно, что различные выводы, полученные при анализе, часто переходят из одного рассмотренного выше критерия в другой. Таким образом, критерии стоимости и характеристик алгоритма рассматривались вместе в качестве второго критерия после безопасности.
Результаты второго этапа обсуждения
Считается, что второй этап обсуждения начинается с официального объявления пяти финалистов AES 20 августа 1999 года и заканчивается официальным завершением обсуждений 15 мая 2000 года.
NIST выполнил анализ оптимизированных реализаций алгоритмов на ANSI C и Java, которые были предоставлены после первого этапа обсуждений. При тестировании реализаций на ANSI C основное внимание уделялось скорости выполнения на компьютерах, использующих различные комбинации процессоров, операционных систем и компиляторов. Код Java был протестирован на скорость и используемую память на различных системах. Дополнительно было выполнено статистическое тестирование.
Процесс выбора
Была проведена серия встреч, чтобы выработать стратегию выбора алгоритма AES. В результате этих встреч все пришли к выводу, что выбранный алгоритм обеспечивает достаточную безопасность на обозримое будущее, эффективен на различных платформах и в различных окружениях, обеспечивает приемлемую гибкость с учетом возможных требований в будущем.