Ни один нормальный сервис не хранит твой
qwerty123 в открытом виде. Иначе одна утечка – и все пароли у злоумышленника.Вместо пароля хранят его "отпечаток" – хеш.
Хеш-функция превращает любой текст в строку фиксированной длины. Главное свойство – односторонность: из хеша нельзя получить исходный пароль.
password123 → ef92b778...password124 → a1b2c17a...Любое изменение данных → новая строка
Хеш активно используется для проверки целостности данных, например, после скачивания: вычисляется хеш скачанного файла и сравнивается с хешем файла на сервере. Если хеши совпадают – файл скачан без ошибок, содержимое не изменилось.
Сколько стоит взломать
MD5 – устарел. Видеокарта перебирает ~40 млрд хешей/сек. Пароль из 8 символов подберет за считанные минуты.
bcrypt – надёжный, проверенный временем. Встроенное замедление: ~30 тыс хешей/сек. Разница с MD5 – в миллион раз.
Argon2 – современный стандарт. Сильно нагружает память, чем ломает перебор на GPU.
Медленный алгоритм – это фича. Пользователь ждёт 100мс и не замечает. Злоумышленник при переборе миллиарда вариантов ждёт годы.
Но есть НЮАНС
Квантовые компьютеры. Да, они сломают все шифрование.
А потом мир перейдет на постквантовое шифрование. В общем, пока живем спокойно.
Зачем нужна соль
Если у тысячи юзеров пароль
password123 – у всех одинаковый хеш. Взломал один – взломал всех.Соль – случайная строка, уникальная для каждого пользователя:
password123 + x7Ks9pLm → 8f4a2b1c...password123 + Qw3rTy5z → d9e8f7a6...Теперь каждый пароль нужно подбирать отдельно.
Как это работает
Регистрация:
Пароль прилетает по HTTPS в теле POST-запроса (не в URL – там логируется). Сервер генерирует соль, считает хеш, сохраняет в базу данных. Сам пароль не хранится.
Вход:
Сервер достаёт соль и хеш из базы данных, считает хеш введённого пароля с той же солью, сравнивает. Совпало – пускает.
Диаграммы процессов приложу в комментах.
О перце
Когда нужна более сильная защита, используется перец – общий секретный ключ, хранящийся отдельно от базы данных. Он добавляется к паролю и соли перед хешированием:
password123 + x7Ks9pLm + pepper1# → 16hs8ac0...Даже если злоумышленник получит базу с хешами и солью, без перца он не сможет правильно вычислять хеши для проверки догадок. Подобрать пароль будет невозможно.
Выводы
🔸 Пароли не хранятся в открытом виде – только хеши
🔸 Соль препятствует массовому подбору
🔸 Перец защищает хеши при утечке БД
🔸 Медленный алгоритм – не баг, а метод защиты
И никакой магии. Когда пишешь требования к аутентификации – за фразой "пользователь может войти" стоит конкретная инженерная логика.
А вы знали, как это работает?
@analyst_exe