Инициатива по разработке новых методов хэширования паролей
В рамках конкурса Password Hashing Competition (PHC) предпринята попытка выявления новых схем хэширования паролей с целью стимулирования задействования надёжных схем защиты паролей. Текущее состояние в области защиты паролей оценивается как неприемлемое - web-сервисы зачастую хранят пароли пользователей в открытом виде или применяют ненадёжные методы хэширования, такие как MD5 или SHA-1, для которых разработаны эффективные методы подбора паролей.
Из стандартов формирования ключей на основе паролей доступен только PBKDF2 (PKCS#5, NIST SP 800-132), а из альтернативных реализаций выделились только bcrypt и scrypt. Указанные системы не лишены недостатков и в сообществе витают идеи по созданию новых методов хэширования, но подобные инициативы имеют разрозненный и случайных характер. Конкурс PHC призван увлечь заинтересованных лиц и придать их работам востребованный и осмысленный характер.
Методы проведения конкурса построены на основе принципов, применяемых в таких криптографических конкурсах, как AES, eSTREAM и SHA-3. Работы для участия будут приниматься до 31 января 2014 года, после чего начнётся этап анализа предложенных работ и выявления наиболее оптимальных решений. В третьем квартале 2014 года будут объявлены финалисты из которых до второго квартала 2015 года планируется выделить одного или нескольких победителей.
Из технических требований к выставляемым на конкурс работам отмечается как минимум поддержка хэширования паролей размером от 0 до 128 символов, использование 16-байтового salt и наличие возможности регулирования параметров работы алгоритма с точки зрения скорости работы и расхода памяти. Эталонные реализации должны быть подготовлены на языке C или C++, допускается использование стандартных функций библиотеки libcrypto (например, реализаций AES или SHA-256). Методы не должны покрываться запатентованными технологиями и должны распространяться без ограничений и на условиях не требующих выплаты отчислений.
В качестве критериев оценки отмечается:
Безопасность: стойкость к коллизиям, случайно выглядящий вывод, невозможность обратного преобразования, невозможность получения сведений о характере пароля через анализ хэша, противостояние методам перебора, трудность распараллеливания подбора, стойкость к акселерации подбора с использованием ASIC, FPGA и GPU;
Простота: общая ясность схемы, простота реализации (с позиции кодирования, тестирования, отладки и интеграции), минимум привязки к внешним примитивам или конструкциям;
Функциональность: эффективность с позиции тюнинга параметров работы, возможность изменения параметров (скорость работы и расход памяти) для существующего хэша без наличия пароля.