Хеши/крипто

Argon2 Hash + Verify

Хеширование паролей через Argon2 (победитель Password Hashing Competition, RFC 9106) — варианты d/i/id, с проверкой пароля против имеющегося хеша.


                    

Argon2 — победитель Password Hashing Competition и алгоритм, рекомендованный в RFC 9106 для хеширования паролей. В отличие от bcrypt, он намеренно требует много оперативной памяти, а не только времени процессора, что усложняет атаки на специализированном оборудовании (GPU, ASIC).

Как пользоваться

Типичные сценарии

Что стоит помнить

Параметр памяти — главная защита Argon2: чем больше памяти требует хеширование, тем дороже злоумышленнику параллелить атаку на GPU с ограниченным объёмом быстрой памяти на чип.

Argon2id рекомендуют для большинства случаев: Argon2i устойчивее к side-channel атакам, Argon2d — к GPU-атакам, а id сочетает оба подхода.

Статья об этом инструменте: Argon2: почему этот алгоритм победил в конкурсе на хеширование паролей

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

Почему Argon2 рекомендуют вместо старых хешей вроде MD5 или SHA-256 для паролей?

Argon2 намеренно медленный и требователен к памяти, что делает перебор и взлом на GPU/ASIC значительно дороже — в отличие от быстрых универсальных хешей MD5 или SHA-256, непригодных для хранения паролей.

За что отвечают параметры памяти, итераций и параллелизма?

Стоимость памяти задаёт, сколько ОЗУ требуется на одну попытку хеширования, итерации — число проходов, а параллелизм — число потоков; увеличение любого из них повышает стоимость взлома, но замедляет хеширование.

Какой вариант Argon2 выбрать — d, i или id?

Argon2id — рекомендуемый вариант по умолчанию для хеширования паролей, так как сочетает устойчивость Argon2i к атакам по побочным каналам с устойчивостью Argon2d к взлому на GPU.

Откуда взялся Argon2 как стандарт?

Argon2 победил в Password Hashing Competition 2015 года — открытом конкурсе криптографов, целью которого было найти лучший алгоритм для хеширования паролей. С тех пор OWASP рекомендует его как приоритетный выбор над bcrypt.

Только ли ускоряет хеширование параметр параллелизма?

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

Статьи: Хеши/крипто

Hash Generator: чем MD5, SHA-1 и SHA-256 отличаются друг от друга

Почему MD5 до сих пор используют для проверки целостности файлов, но не для паролей.

Checksum Verifier: как проверить, что файл не повреждён

Почему совпадение контрольной суммы подтверждает целостность файла, но не то, кто его создал.

HMAC: чем хеш с ключом отличается от обычного хеша

Почему обычный SHA-256 не защищает от подделки сообщения, а HMAC — защищает.

Bcrypt: почему пароли хешируют медленно, а не быстро

Почему быстрый SHA-256 — плохая идея для паролей, а медленный bcrypt — правильная.

UUID: как генерируют идентификаторы, которые почти никогда не повторяются

Почему UUID v4 можно генерировать независимо на миллионах машин без риска коллизий.

Генератор паролей: что на самом деле делает пароль устойчивым

Почему длинный пароль из словаря надёжнее короткого с символами и цифрами.

AES: как работает симметричное шифрование

Почему один и тот же ключ шифрует и расшифровывает данные в AES, и чем это отличается от асимметричного шифрования.

Scrypt: зачем алгоритму нужно много памяти

Почему scrypt намеренно требует много памяти, чтобы усложнить перебор на ASIC-устройствах.

TOTP: как работают одноразовые коды в приложениях-аутентификаторах

Почему код в Google Authenticator работает без интернета и синхронизируется с сервером только по времени.

PBKDF2: самый старый стандарт растяжения ключей

Почему рекомендуемое количество итераций PBKDF2 растёт с каждым годом.

X.509: что внутри SSL-сертификата

Что именно браузер проверяет в сертификате сайта, прежде чем показать зелёный замочек.

PGP: как работает шифрование с открытым и приватным ключом

Почему можно свободно делиться публичным ключом PGP, но не приватным.