Национальный институт стандартов и технологий США (англ.National Institute of Standards and Technology, сокращённо NIST) создал конкурс на новую хеш-функцию, названную SHA-3, для дополнения и дальнейшей замены старых функций: SHA-1 и SHA-2. Конкурс был анонсирован в журнале Federal Register2 ноября2007 года.[1] NIST инициировал разработку одного или нескольких дополнительных алгоритмов хеширования через открытый конкурс, подобный процесс развития был использован ранее для шифрования Advanced Encryption Standard (сокращённо AES).[2]
Изначально организаторы конкурса предполагали заменить старые хеш-функции победителем, так как в 2006 году возникло предположение, что в будущем надежность хеш-функции SHA-2 значительно снизится из-за роста мощности и производительности устройств, а также из-за появления новых методов криптоанализа. Но в 2013 году оказалось, что SHA-2 является криптостойкой, поэтому переход на SHA-3 не является необходимым.
В своих отчетах NIST описывает критерии оценки конкурсантов. Основными критериями оценки были безопасность, производительность и алгоритм хеш-функции[9][10][11].
Безопасность
Рассматривая безопасность конкурсантов, NIST оценивал применимость хеш-функции, её устойчивость к атакам, соответствие общим для хеш-функций требованиям, а также соответствие требованиям для участников, использующих HMAC, псевдослучайные функции или рандомизированное хеширование. Этот критерий учитывался в первую очередь.
Производительность
Производительность — второй по важности критерий оценки после безопасности. При его проверке смотрели на скорость работы и требования к памяти. Сравнение происходило следующим образом:
В брэнчмарке ECRYPT Benchmarking of All Submitted Hashes (сокращёенно eBASH) производились замеры скорости вычисления для большого числа 32х и 64х-битных платформ.
Брэнчмарк eXternal Benchmarking eXtension (сокращённо XBX) предоставил результаты для портативных устройств.
Дополнительно проверялась производительность и возможность оптимизации на многоядерных архитектурах. Тесты производились на архитектурах Cell Broadband Engine (сокращённо Cell) и the NVIDIA Graphics Processing Units (сокращённо GPUs).[12]
Основными параметрами оценки алгоритма были гибкость и простота дизайна. Гибкость включает в себя возможность использования хеш-функции на большом числе платформ и возможности расширения набора инструкций процессора и распараллеливания (для увеличения производительности). Простота дизайна оценивалась по сложности анализа и понимания алгоритма, таким образом простота дизайна дает больше уверенности в оценке безопасности алгоритма.
Участники
NIST выбрали 51 хеш-функцию в первый тур.[4] 14 из них прошло во второй раунд,[6] из которых было выбрано 5 финалистов. Неполный список участников представлен ниже.
Победитель
Победитель был объявлен 2 октября2012 года, им стал алгоритм Keccak.[14] Он стал самым производительным на аппаратной реализации среди финалистов, а также в нем был использован нераспространённый метод шифрования - функция Губка. Таким образом, атаки, рассчитанные на SHA-2, не будут работать. Ещё одним существенным преимуществом SHA-3 является возможность его реализации на миниатюрных встраиваемых устройствах (например, USB-флеш-накопитель).
Финалисты
NIST выбрал пять кандидатов, прошедших в третьей (и последний) тур:[15]
NIST описали некоторые критерии, на которых основывался выбор финалистов:[16]
Производительность: «Некоторые алгоритмы были уязвимы из-за очень больших требований к производительности.»[16]
Безопасность: «Мы предпочли быть консервативными в безопасности и в некоторых случаях не выбрали алгоритмы с исключительной производительностью, потому что они менее безопасны в значительной степени.»[16]
Анализ: «NIST устранено несколько алгоритмов из-за неполной проверки или незрелости проекта.»
Разнообразии: «Хеш-функции, прошедшие в финал, основаны на различных режимах работы, в том числе и на принципе криптографической губки. С разными внутренними структурами, в том числе на основе AES, Bit slicing и на переменных XOR с дополнением.»[16]
NIST выпустил отчет, поясняющий оценку алгоритмов.[17][18]
Хеш-функции, не прошедшие в финал
Следующие хеш-функции попали во второй раунд, но не прошли в финал. Также было при объявлении финалистов: «Ни один из этих кандидатов не был явно взломан». В скобках указана причина, по которой хеш-функции не стала финалистом.
Blue Midnight Wish[19][20] (возможны проблемы с безопасностью)
Следующие представители хеш-функция были приняты для первого раунда, но не прошли во второй. У них не было существенных криптографических уязвимостей. Большинство из них имеют слабые места в дизайне компонентов или у них были замечены проблемы с производительностью.
На протяжении первого раунда некоторые конкурсанты сами отказались от участия в конкурсе, потому что были взломаны на NIST official Round One Candidates web site. Они не принимали участия в конкурсе.
Некоторые хеш-функции не были приняты в качестве кандидатов, после внутреннего обзора NIST.[4] NIST не сообщил подробностей относительно того, почему эти кандидаты были отклонены. NIST также не дала полный список отклоненных алгоритмов, но 13 из них известны,[4][71]но только следующие из них были опубликованны.
В таблице перечислены известные участники конкурса с указанием основных атрибутов хеш-функций и найденных атак.[82] В ней используются следующие аббревиатуры:
— Ewan Fleischmann, Christian Forler и Michael Gorski. "Classifcation of the SHA-3 Candidates"
Ссылки
Federal Register / Vol. 72, No. 212 (PDF). Federal Register. Government Printing Office (Friday, November 2, 2007). Проверено 6 ноября 2008.
cryptographic hash project - Background Information. Computer Security Resource Center. National Institute of Standards and Technology (November 2, 2007). Проверено 6 ноября 2008.
↑ NIST Selects Winner of Secure Hash Algorithm (SHA-3) Competition. NIST (October 2, 2012). Проверено 2 октября 2012.
↑ Round 1 (9 декабря 2008). Проверено 10 декабря 2008.
The First SHA-3 Candidate Conference (December 9, 2008). Проверено 23 декабря 2008.
↑ Second Round Candidates. National Institute for Standards and Technology (July 24, 2009). Проверено 24 июля 2009.
The Second SHA-3 Candidate Conference (June 30, 2010).
Tentative Timeline of the Development of New Hash Functions. NIST (December 10, 2008). Проверено 15 сентября 2009.