После того как Китай запретил майнинг криптовалют в 2021 году, значительная часть GPU-ферм переместилась в соседние страны с дешёвой электроэнергией — в том числе в Казахстан, где к 2022 году майнинг вырос настолько, что стал ощутимо нагружать энергосистему региона. Litecoin и Dogecoin, использующие для proof-of-work именно scrypt (а не SHA-256, как биткоин), были среди монет, которые продолжали майнить на этом оборудовании.
Что такое memory-hard функция
Memory-hard алгоритм намеренно проектируется так, чтобы для вычисления одного хеша нужно было удерживать в памяти большой объём промежуточных данных. Попытка сэкономить память ценой пересчёта значений вместо этого резко увеличивает время вычисления — то есть злоумышленнику приходится жертвовать либо памятью, либо скоростью.
Почему это усложняет атаки на специализированном оборудовании
ASIC-чипы и GPU очень эффективны для массового параллельного выполнения простых арифметических операций, но добавление памяти к каждому параллельному потоку вычислений стоит намного дороже и масштабируется хуже. Scrypt делает атаку "в лоб" на таком оборудовании экономически менее выгодной по сравнению с классическими хеш-функциями — именно поэтому для Litecoin долгое время не существовало настолько же эффективных ASIC, как для биткоина.
Зачем это нужно
- Выбирать алгоритм хеширования паролей, устойчивый к атакам на GPU-фермах.
- Понимать концепцию memory-hard функций в контексте криптографии.
- Сравнивать компромиссы scrypt против bcrypt и Argon2 для конкретной системы.
Сколько памяти реально нужно
Объём памяти для одного вычисления scrypt приблизительно равен 128 × N × r байт. При типичных параметрах (N=16384, r=8) это около 16 мегабайт на один хеш — незначительно для одного логина, но если сервер должен обрабатывать тысячи одновременных аутентификаций, суммарный объём памяти быстро становится реальным ограничением при выборе параметров, а не просто абстрактным требованием безопасности.