Хеширование паролей: bcrypt, Argon2, PBKDF2
Узнайте, почему хранение паролей в открытом виде опасно и как хеширование с солью защищает пароли
«Хеширование паролей: bcrypt, Argon2, PBKDF2» — бесплатный урок Cyber Security Academy на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Cyber Security Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Cyber Security Academy содержит 4 уроков всего.
Почему нельзя хранить пароли в открытом виде
Хранение паролей в открытом виде приводит к катастрофическим последствиям: одна утечка базы данных раскрывает все учётные записи. Перед сохранением пароли необходимо обработать с помощью односторонней функции, чтобы даже доступ к базе данных не позволил узнать исходный пароль.
Что такое хеширование
Хеш-функция преобразует входные данные любой длины в результат фиксированной длины. Одинаковые входные данные всегда дают одинаковый результат, но восстановить исходные данные по хешу невозможно. Примеры: SHA-256, bcrypt, Argon2.
Почему нельзя использовать SHA-256 для паролей
Хеш-функции общего назначения, такие как SHA-256, разработаны так, чтобы работать быстро. Злоумышленник может вычислять миллиарды хешей SHA-256 в секунду на GPU, благодаря чему взлом перебором становится осуществимым.
Для хеширования паролей необходимы медленные и ресурсоёмкие функции.
Добавление соли
Соль — это случайное значение, добавляемое к каждому паролю перед хешированием. Благодаря этому у двух пользователей с одинаковым паролем получаются разные хеши, что предотвращает атаки с использованием радужных таблиц и пакетный взлом. Соль хранится вместе с хешем и не является секретом.
# Conceptual salt example
hash = bcrypt("password" + random_salt)bcrypt
bcrypt был разработан в 1999 году специально для хеширования паролей. В нём есть настраиваемый параметр стоимости, который определяет, насколько медленным будет хеширование. По мере совершенствования оборудования увеличивайте параметр стоимости, чтобы сохранять необходимый уровень безопасности.
Сегодня обычно используется параметр стоимости 12 — хеширование занимает примерно 250 мс на современном CPU.
PBKDF2
PBKDF2 (функция выработки ключа на основе пароля 2) многократно применяет хеш-функцию (например, HMAC-SHA256), выполняя заданное число итераций. Чем больше итераций, тем медленнее и безопаснее процесс. PBKDF2 рекомендован NIST и используется WPA2 для паролей Wi-Fi.
Argon2
Argon2 победил в конкурсе алгоритмов хеширования паролей в 2015 году. Это современный стандарт. В нём настраиваются:
- стоимость времени — количество итераций
- стоимость памяти — требуемый объём RAM (ограничивает ускорение на GPU)
- параллелизм — количество потоков
Для большинства приложений используйте Argon2id.
Радужные таблицы
Радужная таблица — это заранее вычисленная таблица соответствий «хеш → открытый текст». Без соли злоумышленник, имеющий хеш, может мгновенно найти его в таблице. Соль делает радужные таблицы бесполезными, поскольку каждый хеш становится уникальным.
Методы взлома паролей
Распространённые методы взлома без доступа к сервису:
- атака по словарю — проверка распространённых паролей и их вариантов
- полный перебор — проверка всех комбинаций символов
- атака на основе правил — применение правил изменения к словарю (добавление года, замена регистра, замена букв символами)
- инструменты: Hashcat, John the Ripper
Выбор подходящего алгоритма
Предпочтительный порядок для новых приложений:
- Argon2id — лучшая устойчивость к взлому с использованием GPU/ASIC
- bcrypt — широкая поддержка и проверенная временем надёжность
- PBKDF2 — одобрен NIST и требуется в некоторых случаях для соблюдения нормативов
Никогда не используйте MD5, SHA-1 или SHA-256 без соли для паролей.
Процесс проверки
Когда пользователь входит в систему:
- Получите сохранённые хеш и соль пользователя
- Хешируйте отправленный пароль с использованием той же соли и алгоритма
- Сравните полученный хеш с сохранённым хешем (сравнение за постоянное время)
- Никогда не расшифровывайте — только сравнивайте
Быстрая проверка: хеширование паролей
Какой алгоритм хеширования паролей считается актуальной рекомендацией и стал победителем конкурса по хешированию паролей?
Итоги урока
Пароли необходимо хранить в виде хешей, а не в виде открытого текста. Быстрые алгоритмы, такие как SHA-256, не подходят — используйте медленные функции хеширования паролей: Argon2id (предпочтительно), bcrypt или PBKDF2. Всегда используйте случайную соль для каждого пароля, чтобы предотвратить атаки с использованием радужных таблиц. Никогда не разрабатывайте собственную криптографию — используйте проверенные библиотеки.
Часто задаваемые вопросы
Урок «Хеширование паролей: bcrypt, Argon2, PBKDF2» бесплатный?
Да — полный текст урока «Хеширование паролей: bcrypt, Argon2, PBKDF2» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Cyber Security Academy, подпишись на CoddyKit PRO. Курс Cyber Security Academy содержит 4 уроков всего.
Чему я научусь в уроке «Хеширование паролей: bcrypt, Argon2, PBKDF2»?
Узнайте, почему хранение паролей в открытом виде опасно и как хеширование с солью защищает пароли Ты практикуешь Cyber Security Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Cyber Security Academy?
Предыдущий опыт не требуется. Cyber Security Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.
Сколько времени занимает урок «Хеширование паролей: bcrypt, Argon2, PBKDF2»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Cyber Security Academy?
Да. Каждый урок Cyber Security Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Надёжность паролей и политики
- Хеширование паролей: bcrypt, Argon2, PBKDF2
- Многофакторная аутентификация
- Подстановка учётных данных и распыление паролей