Хеши/крипто

Scrypt Hash + Verify

Хеширование паролей через scrypt (RFC 7914, memory-hard KDF) с проверкой пароля против имеющегося хеша.


                    

Scrypt (RFC 7914) — один из первых memory-hard алгоритмов хеширования паролей: он намеренно требует много оперативной памяти, а не только времени процессора, чтобы усложнить параллельный перебор на GPU и ASIC-устройствах.

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

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

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

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

Scrypt был вытеснен Argon2 (победителем официального Password Hashing Competition) как рекомендуемый выбор для новых систем, хотя сам scrypt всё ещё не считается небезопасным.

Статья об этом инструменте: Scrypt: зачем алгоритму нужно много памяти

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

Чем scrypt отличается от bcrypt или PBKDF2?

Scrypt намеренно требователен как к памяти, так и к CPU, что делает его значительно дороже для взлома на GPU или специализированном ASIC-оборудовании по сравнению с bcrypt или PBKDF2, которые в основном противостоят лишь перебору на CPU.

За что отвечают параметры N, r и p?

N задаёт стоимость CPU/памяти (должен быть степенью двойки), r — размер блока, влияющий на использование памяти за операцию, а p — параллелизацию; увеличение любого из них повышает стоимость ресурсов как для легитимного использования, так и для атак.

Всё ещё ли scrypt хороший выбор по сравнению с Argon2?

Scrypt остаётся надёжным и проверенным временем, но для новых систем обычно рекомендуют Argon2 (победителя Password Hashing Competition), поскольку он предлагает более тонкое управление памятью и устойчивостью к атакам по побочным каналам.

Сколько памяти реально потребляет scrypt?

Примерно 128 × N × r байт на одно вычисление. При типичных параметрах (N=16384, r=8) это около 16 мегабайт на один хеш — незначительно для одного логина, но существенно при тысячах одновременных аутентификаций на сервере.

Где ещё применяется scrypt, кроме хеширования паролей?

Scrypt известен как алгоритм proof-of-work в некоторых криптовалютах (например, Litecoin) — его выбрали именно из-за устойчивости к майнингу на специализированных ASIC-устройствах, характерной для биткоина с его SHA-256.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Чем Argon2 лучше защищает от атак на видеокартах, чем более старые алгоритмы хеширования паролей.

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

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

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

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

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

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

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

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