Глоссарий

Что такое хеширование паролей? Безопасное хранение паролей через одностороннее преобразование

Хеширование хранит пароль как необратимое одностороннее преобразование. Отличие от шифрования, почему MD5/SHA-256 мало и зачем bcrypt, Argon2 или scrypt.

Опубликовано 2026-06-27 Обновлено 2026-10-06 6 мин чтения
На этой странице

Пароль никогда не следует хранить в базе данных как есть. Так как же его хранить? Ответ — хеширование. Вот как оно работает и ключевые моменты для безопасного применения (без шагов атаки).

Хеширование ≠ шифрование

Их путают, но цели противоположны. Шифрование — «обратимо с ключом, чтобы прочитать позже». Хеширование — «одностороннее, обратить нельзя». Пароль — это информация, которую даже оператору не нужно читать обратно, поэтому намеренно необратимый хеш — правильный выбор.

Шифрование (обратимое)

открытый текст ⇄ шифртекст. ключ обращает. для данных, которые читают обратно

Хеширование (одностороннее)

пароль → хеш. обратить нельзя. для хранения паролей

Храните пароли односторонним хешем. У шифрования (обратимого) цель противоположная.

При входе вы проверяете: «захешировать введённый пароль тем же способом и посмотреть, совпадает ли он с сохранённым хешем.» Восстанавливать оригинал вам никогда не нужно.

Почему «чистых MD5/SHA-256» недостаточно

MD5 и SHA-256 — быстрые хеши. В других местах это полезное свойство, но слабость для хранения паролей: атакующий может вычислять огромное число вариантов в секунду против утёкшего хеша.

  • Радужные таблицы: гигантская предвычисленная таблица «распространённый пароль → его хеш». С чистым хешем совпадение находится простым поиском.
  • Перебор: чем быстрее хеш, тем больше вариантов за единицу времени — то есть тем легче взломать.

Хеши общего назначения и хеши для паролей

И те и другие называются «хешами», но созданы для разных задач. В хранении паролей место только правому столбцу.

Хеш общего назначения (MD5, SHA-1, SHA-256)Хеш для паролей (Argon2id, bcrypt, scrypt, PBKDF2)
Для чего созданОбнаружение подмены файлов, подписи и т. п.Хранение паролей
СкоростьКак можно быстрееНамеренно медленный (настраивается)
СольНе предусмотрена конструкциейПредусмотрена конструкцией (PBKDF2 получает её от вызывающего кода)
Настройка стоимостиНевозможнаСтоимость, число итераций или память; со временем повышается
Для хранения паролейНе использоватьИспользовать

NIST SP 800-63B-4 также требует хранить пароли с помощью схемы хеширования паролей, которая принимает на вход соль и фактор стоимости; стоимость должна быть настолько высокой, насколько это практично без ущерба для производительности, и со временем повышаться.

Две защитные меры

1

Добавьте соль (разное значение для каждого пользователя)

Перед хешированием подмешайте случайное значение, разное для каждого пользователя (соль). Теперь один и тот же пароль хранится по-разному у всех, что побеждает радужные таблицы и не даёт одному прогону взлома охватить повторно используемые пароли между аккаунтами.

2

Используйте намеренно медленный, специально созданный хеш

bcrypt / Argon2 / scrypt позволяют сделать вычисление намеренно дорогим (параметр стоимости). Замедление, незаметное для одного легитимного входа, снижает перебор атакующего до непрактичной скорости. Соль встроена и в них.

Реальные случаи: когда в уведомлении об утечке написано «захешированы»

В объявлениях об утечках иногда указывают, хранились ли пароли в открытом виде, в виде хешей или в зашифрованном виде. Вот случаи, разобранные на этом сайте, по способу хранения.

СлучайЧто сообщено о пароляхЧто это значит для пользователей
Takufile-bin (2019)Хранились в открытом видеЧитаются как есть. Под угрозой и другие сервисы с тем же паролем
Sakura Internet (2026) (на английском)Часть начальных паролей не была захешированаТем, кто до сих пор использует начальный пароль, нужно сменить его сейчас
Gyazo (2026) (на английском)Утекли хеши паролей; способ не раскрытВ зависимости от способа могут быть обратимы. Компания попросила пользователей сменить пароли

Две вещи, которые стоит помнить при чтении уведомления:

  • Одно слово «захешированы» не говорит, безопасно ли это. Чистый MD5 и медленный хеш с солью колоссально различаются по тому, насколько легко восстановить пароли
  • Если способ не указан, действуйте так, как будто он был слабым. Смените пароль в этом сервисе и во всех других, где используете тот же

Проверить, встречается ли ваш адрес почты в прошлых утечках, можно по статье как проверить, не утёк ли пароль.

Как проверить свой сайт и аккаунты

1

Как пользователь: посмотрите, как работает сброс пароля

Если по запросу «забыли пароль» вам присылают по почте исходный пароль, сервис с большой вероятностью хранит его в открытом виде или в обратимой форме. Не используйте там пароль, который используете где-либо ещё.

2

Как пользователь: проверьте надёжность пароля

Хеширование лучше всего защищает длинные, трудно угадываемые пароли. Оцените примерную надёжность с помощью проверки надёжности пароля, а хранение доверьте менеджеру паролей.

3

Как разработчик: проверьте, какая функция хранит пароли

Найдите функции, которыми ваш код сохраняет и проверяет пароли. password_hash() в PHP, встроенная аутентификация Django или библиотека bcrypt/Argon2 предназначены для паролей и закрывают основы. Любой прямой вызов md5(), sha1() или sha256 — кандидат на миграцию.

4

Как разработчик: проверьте сохранённые значения и настройки

Как распознать сохранённые хеши, минимальные настройки OWASP и как уйти от слабых алгоритмов, разобрано в статье как безопасно хранить пароли.

Мнение этого сайта: не собирайте это сами

Считать, что «MD5 плюс соль достаточно», — распространённая ошибка. Безопасное хранение паролей зависит ещё и от генерации и хранения соли, настройки стоимости и обработки временных различий. Вместо того чтобы собирать это самому, опирайтесь на официальную функцию паролей вашего языка/фреймворка (большинство под капотом используют bcrypt/Argon2). Для новых систем сделайте Argon2id первым выбором.

Источники (первичные)

  • NIST, «SP 800-63B-4 Digital Identity Guidelines: Authentication and Authenticator Management» (август 2025) — pages.nist.gov (схемы хеширования с солью и фактором стоимости; повышение стоимости со временем)
  • OWASP, «Password Storage Cheat Sheet» — cheatsheetseries.owasp.org (хеширование и шифрование, рекомендуемые алгоритмы, фактор работы)
  • RFC 9106, «Argon2 Memory-Hard Function for Password Hashing and Proof-of-Work Applications» — rfc-editor.org
  • Источники по каждому случаю (объявления самих компаний) приведены в связанных статьях этого сайта

Читать дальше

Классификация

CWE классифицирует типы слабостей, из-за которых возникают уязвимости; MITRE ATT&CK классифицирует техники атакующих. Обе системы ведёт MITRE, и они широко используются для разметки уязвимостей и правил обнаружения.

ATT&CK (техника атаки)

CWE™: Copyright © 2006–2026, The MITRE Corporation. CWE is a trademark of The MITRE Corporation. The MITRE Corporation hereby grants you a non-exclusive, royalty-free license to use CWE for research, development, and commercial purposes. Any copy you make for such purposes is authorized on the condition that you reproduce MITRE’s copyright designation and this license in any such copy. CWE Terms of Use

© 2026 The MITRE Corporation. This work is reproduced and distributed with the permission of The MITRE Corporation. MITRE ATT&CK and ATT&CK are registered trademarks of The MITRE Corporation. The MITRE Corporation (MITRE) hereby grants you a non-exclusive, royalty-free license to use ATT&CK® for research, development, and commercial purposes. Any copy you make for such purposes is authorized provided that you reproduce MITRE's copyright designation and this license in any such copy. ATT&CK Terms of Use

FAQ

QЧем хеширование отличается от шифрования?
A

Шифрование обратимо: с ключом можно расшифровать данные обратно, что и нужно для данных, которые вы будете читать снова. Хеширование одностороннее — его нельзя обратить. Пароль на самом деле не нужно читать обратно, даже вам самому, поэтому намеренно необратимый хеш подходит. Даже если базу данных украдут, вытащить из хешей исходные пароли напрямую нельзя.

QДостаточно ли безопасно хеширование с MD5 или SHA-256?
A

Нет, само по себе нет. MD5/SHA-256 — «быстрые» хеши, поэтому атакующий может проверять огромное число вариантов в секунду, и распространённые пароли падают перед перебором или радужными таблицами (предвычисленными таблицами поиска). Чтобы сделать это безопасным, добавьте «соль» на каждого пользователя и используйте намеренно медленный, специально созданный хеш (bcrypt, Argon2 или scrypt).

QЧто именно мне использовать?
A

Для новых систем Argon2 (особенно Argon2id) — первый выбор, а bcrypt или scrypt — надёжные альтернативы. Все они встраивают соль и настраиваемый фактор стоимости в свою конструкцию. Вместо того чтобы вручную собирать MD5+соль, используйте эти стандартные реализации (официальные функции вашего языка/фреймворка) — это безопаснее и надёжнее.

QМожно ли взломать захешированный пароль?
A

Из хеша нельзя вычислить пароль обратно. Но можно захешировать варианты паролей тем же способом и проверить совпадение. Поэтому короткие или распространённые пароли находятся легко, особенно если алгоритм быстрый. Если пароль длинный, не используется повторно и хранится с солью и медленным хешем, найти его практически невозможно.

QПочему сервис не может сообщить мой старый пароль, если я его забыл?
A

Потому что у сервиса, который правильно хеширует пароли, исходного пароля тоже нет. Поэтому процедура — это сброс (вы выбираете новый). И наоборот, сервис, который присылает вам по почте исходный пароль, с большой вероятностью хранит его в открытом виде или в обратимой форме.

QНужно ли менять пароль, если компания сообщает об утечке хешей паролей?
A

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