Оглавление
Криптография
-
История и развитие bcrypt
- bcrypt – это алгоритм хеширования паролей, разработанный в 2001 году.
- Он был создан для замены алгоритма DES и стал стандартом в 2007 году.
- bcrypt был разработан Брюсом Шнайером и реализован в PHP, OpenBSD и других системах.
-
Критика и изменения
- В 2005 году была обнаружена уязвимость в реализации bcrypt в PHP, которая была исправлена.
- В 2011 году были обнаружены ошибки в реализации bcrypt в OpenBSD, что привело к изменению версии.
- В 2014 году была обнаружена ошибка в реализации OpenBSD, которая привела к изменению версии.
-
Алгоритм bcrypt
- Функция bcrypt шифрует текст 64 раза с использованием Blowfish.
- Алгоритм включает дорогостоящую функцию настройки ключа (EksBlowfishSetup).
- Расшифровка ключа выполняется с помощью функции ExpandKey.
- Пользовательский ввод может быть преобразован в числовые значения различными способами.
-
Сравнение с другими алгоритмами
- bcrypt не является функцией получения ключа (KDF) и не может использоваться для получения 512-битного ключа.
- Он более надежен, чем PBKDF2, scrypt и argon2, но требует больше времени для выполнения.
- PBKDF2 слабее bcrypt и не подходит для хранения паролей на легких устройствах.
- scrypt слабее bcrypt и требует больше памяти, но более устойчив к атакам на основе графического процессора.
- Argon2 менее надежен, чем bcrypt, при времени выполнения менее 1 секунды.
-
Критические замечания и рекомендации
- Максимальная длина пароля в bcrypt ограничена 72 байтами.
- Кодировка хэша пароля в канонической реализации OpenBSD отличается от RFC 4648.
- Существуют альтернативные алгоритмы, такие как pufferfish2, которые могут быть более устойчивыми к атакам.