bcrypt
Что такое bcrypt?
bcryptАдаптивная функция хеширования паролей на основе шифра Blowfish с настраиваемым фактором стоимости, разработанная Provos и Mazières в 1999 году.
bcrypt — это схема хеширования паролей, опубликованная в 1999 году Нильсом Провосом и Дэвидом Мазьером (статья USENIX «A Future-Adaptable Password Scheme»), которая использует модифицированное расписание ключей Blowfish («EksBlowfish»), чтобы получить 192-битный хеш из пароля с солью. Затратная фаза установки ключа перемежает соль и пароль посредством повторяющихся расширений ключа, а затем 64 раза шифрует константную строку «OrpheanBeholderScryDoubt». Параметр стоимости — log2 числа раундов установки ключа — позволяет защитникам повышать трудоёмкость по мере роста производительности оборудования; стоимость 12 означает 2^12 = 4096 итераций.
Определяющая особенность — жёсткое ограничение входа bcrypt в 72 байта: всё, что выходит за 72-й байт, молча отбрасывается. Именно это вызвало инцидент с делегированной аутентификацией AD/LDAP в Okta в октябре 2024 года, когда Okta строила ключ кеша, хешируя через bcrypt userId + username + password; для пользователей с именем длиной 52 и более символов пароль оказывался за пределом отсечки в 72 байта и игнорировался, что позволяло ранее закешированным учётным данным проходить аутентификацию. Урок: предварительно хешировать длинные входные данные (например, SHA-256, затем Base64) перед bcrypt или использовать функцию без такого ограничения.
Небольшой фиксированный объём памяти bcrypt также делает его слабее, чем memory-hard конструкции, против взлома на GPU/ASIC. Он остаётся приемлемым при стоимости >= 12, но OWASP теперь рекомендует Argon2id (или scrypt) для новых систем.
flowchart TD
P[Password + 128-bit salt] --> T{Input > 72 bytes?}
T -->|Yes| TR[Bytes 73+ silently truncated]
T -->|No| K
TR --> K[EksBlowfish key setup]
K --> C[Cost: repeat key schedule 2^cost times]
C --> E["Encrypt 'OrpheanBeholderScryDoubt' x64"]
E --> H["$2b$12$salt + 184-bit digest"]● Примеры
- 01
Django и Spring Security хранят пароли пользователей через bcrypt со стоимостью 12 по умолчанию.
- 02
Типичный bcrypt-хеш начинается с $2b$12$, за которым следуют 22 символа соли и 31 символ дайджеста.
● Частые вопросы
Что такое bcrypt?
Адаптивная функция хеширования паролей на основе шифра Blowfish с настраиваемым фактором стоимости, разработанная Provos и Mazières в 1999 году. Относится к категории Криптография в кибербезопасности.
Что означает bcrypt?
Адаптивная функция хеширования паролей на основе шифра Blowfish с настраиваемым фактором стоимости, разработанная Provos и Mazières в 1999 году.
Как защититься от bcrypt?
Защита от bcrypt обычно сочетает технические меры и операционные практики, как описано в определении выше.
Какие есть другие названия bcrypt?
Распространённые альтернативные названия: Хеш EksBlowfish, bcrypt Provos-Mazières.