Advanced Encryption Standard (AES), симметричный блочный шифр , ратифицированный в качестве стандарта Национальным институтом стандартов и технологий США (NIST), был выбран с помощью процесса, длившегося с 1997 по 2000 год, который был заметно более открытым и прозрачным, чем его предшественник, Data Encryption Standard (DES). Этот процесс получил похвалу от открытого криптографического сообщества и помог повысить уверенность в безопасности победившего алгоритма со стороны тех, кто с подозрением относился к бэкдорам в предшественнике, DES.
Новый стандарт был необходим в первую очередь потому, что DES имел относительно небольшой 56-битный ключ, который становился уязвимым для атак методом подбора . Кроме того, DES был разработан в первую очередь для аппаратного обеспечения и был относительно медленным при реализации в программном обеспечении. [1] Хотя Triple-DES избегает проблемы малого размера ключа, он очень медленный даже в аппаратном обеспечении, он не подходит для платформ с ограниченными ресурсами и может быть затронут потенциальными проблемами безопасности, связанными с (сегодня сравнительно небольшим) размером блока в 64 бита.
2 января 1997 года NIST объявил, что они хотели бы выбрать преемника DES, который будет известен как AES. Как и DES, это должен был быть «несекретный, публично раскрытый алгоритм шифрования, способный защищать конфиденциальную правительственную информацию в следующем столетии». [2] Однако вместо того, чтобы просто опубликовать преемника, NIST запросил мнения заинтересованных сторон о том, как следует выбирать преемника. Интерес со стороны открытого криптографического сообщества сразу же стал интенсивным, и NIST получил большое количество предложений в течение трехмесячного периода комментариев.
Результатом этой обратной связи стал призыв к новым алгоритмам 12 сентября 1997 года. [3] Все алгоритмы должны были быть блочными шифрами, поддерживающими размер блока 128 бит и размеры ключей 128, 192 и 256 бит. Такие шифры были редки на момент объявления; самым известным, вероятно, был Square .
За последующие девять месяцев было создано и представлено пятнадцать проектов из нескольких стран. Они были перечислены в алфавитном порядке: CAST-256 , CRYPTON , DEAL , DFC , E2 , FROG , HPC , LOKI97 , MAGENTA , MARS , RC6 , Rijndael , SAFER+ , Serpent и Twofish .
В ходе последовавших дебатов криптографы исследовали множество преимуществ и недостатков кандидатов; они оценивались не только с точки зрения безопасности, но и с точки зрения производительности в различных условиях (ПК с различной архитектурой, смарт-карты, аппаратные реализации), а также с точки зрения их применимости в ограниченных средах (смарт-карты с очень ограниченным объемом памяти, реализации с малым количеством вентилей, ПЛИС).
Некоторые проекты потерпели неудачу из-за криптоанализа , который варьировался от незначительных недостатков до существенных атак, в то время как другие потеряли популярность из-за плохой производительности в различных средах или из-за того, что им было мало что предложить по сравнению с другими кандидатами. NIST провел две конференции для обсуждения заявок (AES1, август 1998 г. и AES2, март 1999 г. [4] [5] [6] ), и в августе 1999 г. они объявили [7] , что сужают круг с пятнадцати до пяти: MARS , RC6 , Rijndael , Serpent и Twofish . Все пять алгоритмов, обычно называемых «финалистами AES», были разработаны криптографами, считающимися известными и уважаемыми в сообществе. Голоса на конференции AES2 распределились следующим образом: [8]
Последовал еще один раунд интенсивного анализа и криптоанализа, кульминацией которого стала конференция AES3 в апреле 2000 года, на которой представитель каждой из пяти финальных команд выступил с презентацией, в которой аргументировал, почему их проект должен быть выбран в качестве AES. Голоса на конференции AES3 распределились следующим образом: [9]
2 октября 2000 года NIST объявил [10] , что Rijndael был выбран в качестве предлагаемого AES, и начал процесс превращения его в официальный стандарт, опубликовав объявление в Федеральном реестре [11] 28 февраля 2001 года о проекте FIPS для сбора комментариев. 26 ноября 2001 года NIST объявил, что AES был одобрен в качестве FIPS PUB 197.
NIST получил похвалу от криптографического сообщества за открытость и заботу, с которыми они управляли процессом стандартизации. Брюс Шнайер , один из авторов проигравшего алгоритма Twofish, написал после окончания соревнования: «Я могу сказать только хорошее о NIST и процессе AES». [12]