Хеші/крипто

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, але не приватним.