Cryptology Academy · Урок

bcrypt: алгоритм и фактор вычислительной стоимости

Изучите внутреннее устройство bcrypt, рабочий фактор и правильную настройку стоимости

Урок 2 из 413 шагов

«bcrypt: алгоритм и фактор вычислительной стоимости» — бесплатный урок Cryptology Academy на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Cryptology Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Cryptology Academy содержит 4 уроков всего.

Добро пожаловать

bcrypt — алгоритм хеширования паролей, созданный в 1999 году специально для медленной работы и устойчивости к атакам с использованием оборудования. Он по-прежнему остаётся самым широко применяемым алгоритмом хеширования паролей.

Происхождение bcrypt

Алгоритм разработали Niels Provos и David Mazières на основе шифра Blowfish. Буква «b» означает Blowfish. Главная идея — использовать затратную настройку ключа Blowfish, чтобы намеренно замедлить работу.

Формат хеша bcrypt

$2b$12$saltsaltsaltsaltsaltsalthashhashhashhashhashhashhash $2b$: версия алгоритма 12: коэффициент стоимости (log2 числа итераций) salt: 22 символа в формате base64 (16 байт) hash: 31 символ в формате base64 (24 байта)

Коэффициент стоимости

Стоимость 12 = 2^12 = 4096 итераций. Стоимость 13 = 8192 итерации. Каждое увеличение вдвое увеличивает время вычислений. Настройте параметр так, чтобы хеширование занимало примерно 100–300 мс на вашем оборудовании. Скорость злоумышленника масштабируется точно так же.

bcrypt в Python

import bcrypt password = b'my_password' salt = bcrypt.gensalt(rounds=12) # генерирует случайную соль hashed = bcrypt.hashpw(password, salt) # Проверка: bcrypt.checkpw(password, hashed) # True

Встроенная соль

bcrypt всегда автоматически создаёт и сохраняет соль. gensalt() создаёт криптографически стойкую случайную соль длиной 16 байт. Вам не нужно управлять солью отдельно: она встроена в строку хеша.

Ограничение bcrypt в 72 символа

bcrypt обрезает входные данные после 72 байт. Пароли длиннее 72 символов после первых 72 байт считаются одинаковыми. Обходное решение: предварительно хешировать пароль с помощью SHA-512 перед bcrypt (однако проверьте этот подход).

Процесс проверки пароля

Вход: 1. Пользователь отправляет пароль 2. Получить сохранённый хеш из БД 3. bcrypt.checkpw(submitted, stored_hash) 4. checkpw извлекает соль из сохранённого хеша и выполняет вычисление повторно 5. Возвращает True/False Никогда не сохраняйте исходный пароль.

Тесты производительности

bcrypt с коэффициентом стоимости 12: - Потребительский CPU: около 150 мс на хеш - GPU (RTX 4090): около 50 000 хешей/с (по сравнению с 10 млрд для SHA-256) Преимущество атакующего сокращается с 1 миллиарда примерно до 300 при коэффициенте стоимости bcrypt 12.

Рекомендации по коэффициенту стоимости

OWASP 2024: коэффициент стоимости bcrypt ≥ 10. Рекомендуемое значение: 12. Проверяйте ежегодно — по мере совершенствования оборудования увеличивайте коэффициент. Реализуйте повторное хеширование при входе: во время входа проверяйте хеш и при необходимости обновляйте его.

Ограничения bcrypt

Недостаток bcrypt: он не требует больших затрат памяти. Атакующие могут использовать специализированные ASIC, оптимизированные для bcrypt. Для новых приложений отдавайте предпочтение Argon2id, который требует больших затрат памяти и устойчив к ASIC-атакам.

Краткая проверка

Что означает коэффициент стоимости 12 в хеше bcrypt?

Итоги

bcrypt — надёжный алгоритм, но он не требует больших затрат памяти. Далее мы изучим Argon2 — современный лидер хеширования паролей с настраиваемыми требованиями к памяти.
Можно начать бесплатно

Изучай Cryptology Academy с ИИ-репетитором — бесплатно

Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.

Курсы
67
Уроки
261

Часто задаваемые вопросы

Урок «bcrypt: алгоритм и фактор вычислительной стоимости» бесплатный?

Да — полный текст урока «bcrypt: алгоритм и фактор вычислительной стоимости» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Cryptology Academy, подпишись на CoddyKit PRO. Курс Cryptology Academy содержит 4 уроков всего.

Чему я научусь в уроке «bcrypt: алгоритм и фактор вычислительной стоимости»?

Изучите внутреннее устройство bcrypt, рабочий фактор и правильную настройку стоимости Ты практикуешь Cryptology Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Cryptology Academy?

Предыдущий опыт не требуется. Cryptology Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.

Сколько времени занимает урок «bcrypt: алгоритм и фактор вычислительной стоимости»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Cryptology Academy?

Да. Каждый урок Cryptology Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Почему обычный SHA-256 не подходит для паролей
  2. bcrypt: алгоритм и фактор вычислительной стоимости
  3. Argon2: хеширование паролей с высокой потребностью в памяти
  4. PBKDF2 и выбор подходящего алгоритма
← Назад к Cryptology Academy