Хеши/крипто

Argon2 Hash + Verify

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


                    

Argon2 is the Password Hashing Competition winner and the algorithm recommended in RFC 9106 for hashing passwords. Unlike bcrypt, it deliberately demands a lot of memory, not just CPU time, which makes attacks on specialized hardware (GPUs, ASICs) much harder.

How to use it

Common uses

Things to keep in mind

The memory parameter is Argon2's main defense: the more memory hashing requires, the more expensive it is for an attacker to parallelize an attack on a GPU with limited fast memory per chip.

Argon2id is recommended for most cases: Argon2i resists side-channel attacks better, Argon2d resists GPU attacks better, and id combines both approaches.

Статья об этом инструменте: 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, но не приватным.