Криптокошельки, которые не генерируют достаточно случайные подписи nonce, в 2025 году выходят за рамки небрежности.
Tansel Kaya
Tansel Kaya29 нояб., 04:47
«Извлечение ключа из подписей», упомянутое в хаке Upbit, является продвинутой криптоаналитической атакой на алгоритм цифровой подписи с эллиптической кривой (ECDSA), используемый в Solana (и многих других блокчейнах). Злоумышленники поймали скрытый шаблон в подписях из-за предсказуемого nonce (одноразового случайного числа k), генерируемого программным обеспечением кошелька Upbit, и таким образом смогли математически вычислить закрытый ключ кошелька. 1. Как работает ECDSA? При подписании каждой транзакции: Закрытый ключ: d (никогда не делится) Одноразовое случайное число: k (nonce) → должно быть полностью случайным и скрытым для каждой подписи Полученная подпись: пара (r, s) (видна всем в блокчейне) Если k не случайно или имеет предсказуемый шаблон, закрытый ключ d может быть восстановлен из нескольких подписей. 2. Уязвимость в Upbit Собственное программное обеспечение кошелька Upbit не генерировало значения nonce достаточно случайным образом. Это создало статистический уклон (bias) в значениях подписей (r, s). Злоумышленники собрали десятки/сотни транзакций из горячего кошелька Upbit, проанализировали эти подписи, чтобы выяснить, какие биты nonce предсказуемы, и математическими методами (атака решеткой) вычислили закрытый ключ за секунды/минуты. 3. Используемые типы математических атак Проблема скрытого числа (HNP) + Снижение решетки (алгоритмы LLL/BKZ) Даже 3–8 бит предсказуемости достаточно, чтобы полностью сломать ключ с 20–100 подписями. Даже если уклон слабее (1–2 бита), он все равно может быть сломлен с тысячами подписей. 4. Почему говорят «Только Лазарь может это сделать»? Эта атака требует: знаний на уровне докторской степени в криптографии (HNP, криптоанализ решеток) Экспертизы в анализе данных блокчейна Мощных вычислительных ресурсов (кластеры GPU) Терпения и длительного мониторинга. 5. Уроки и меры предосторожности Генерация nonce должна обязательно производиться с использованием RFC 6979 (детерминированный, но безопасный) или реального источника аппаратной случайности (HWRNG). Подписи должны проходить тесты на случайность (NIST, Dieharder).
Я не уверен, в чем здесь дело. Как некоторые уже отметили, Solana должна использовать Ed25519, который имеет детерминированные нонсы. Но это подпись Шнорра и имеет ту же уязвимость, если кто-то неправильно реализовал процесс выборки нонсов равномерно.
Я также хочу сказать: если я обнаружу недостаток случайности/однородности nonce в схеме подписи, используемой в криптокошельке, особенно если она была использована группой, поддерживаемой государством, я бы не стал сразу же считать это "случайностью" как единственным объяснением.
11,87K