Почему хранение паролей в открытом виде — это преступная халатность и какие современные алгоритмы хеширования (Argon2, Bcrypt) использовать?

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

**Почему это именно халатность, а не просто ошибка**

Информация о недопустимости хранения паролей в открытом виде существует десятилетиями. Стандарты PCI DSS, GDPR, HIPAA прямо запрещают подобную практику. Разработчик или компания, допустившая это в 2024 году, не может ссылаться на незнание — это осознанное пренебрежение безопасностью пользователей, влекущее юридическую ответственность и огромные штрафы.

**Почему простое шифрование тоже не подходит**

Шифрование (AES и др.) обратимо — при утечке ключа шифрования все пароли раскрываются. Правильный подход — необратимое хеширование с солью.

**Современные алгоритмы хеширования паролей**

*Argon2* — победитель конкурса Password Hashing Competition (2015), рекомендован OWASP как приоритетный выбор. Существует в трёх вариантах: Argon2d (устойчив к GPU-атакам), Argon2i (устойчив к side-channel атакам), Argon2id (гибридный, рекомендуемый). Настраиваемые параметры: объём памяти (memory cost), время вычисления (time cost) и степень параллелизма. Это делает брутфорс экономически нецелесообразным даже на специализированном железе.

*Bcrypt* — проверенный временем алгоритм (1999), до сих пор надёжный. Параметр «cost factor» (work factor) позволяет увеличивать сложность по мере роста вычислительных мощностей. Рекомендуемое значение — не ниже 12. Ограничение: максимальная длина пароля 72 байта.

*scrypt* — разработан для устойчивости к атакам с использованием специализированного железа (ASIC). Требует значительного объёма памяти, что делает параллельные атаки дорогостоящими.

*PBKDF2* — более старый алгоритм, одобренный NIST. Менее устойчив к GPU-атакам по сравнению с Argon2 и Bcrypt, но допустим при правильных настройках (минимум 600 000 итераций для SHA-256).

**Обязательные практики**

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

**Итог**

Для новых проектов выбирайте Argon2id с параметрами не ниже рекомендованных OWASP (64 МБ памяти, 3 итерации, параллелизм 4). Для legacy-систем — минимум Bcrypt с cost factor 12+. Инвестиция в правильное хеширование паролей — это несколько часов работы, которые могут спасти репутацию компании и защитить тысячи людей.


Задайте вопрос нейросети

Не нашли ответ? Спросите ИИ — он подготовит развёрнутую статью.