Недавно в криптовалютном сообществе активно обсуждается важная новость: предполагается, что правоохранительные органы США могут обладать приватными ключами к примерно 120 000 биткойнов, которые были тайно переведены в 2020 году, что эквивалентно 15 миллиардам долларов. Согласно отчету Elliptic, эти активы изначально были связаны с майнинг-пулом Lubian.com и позже были официально конфискованы Министерством юстиции США. Внешние наблюдатели в основном предполагают, что правоохранительные органы могли воспользоваться уязвимостью случайных чисел при генерации кошельков для восстановления или захвата приватных ключей, также есть мнение, что это была операция по техническому взлому, инициированная правительством США.
После появления этой новости в криптовалютной индустрии возникли сильные волнения, и она быстро стала темой обсуждения в отрасли. Это вызвало широкое обсуждение не только в технической и безопасности, но и новые опасения у инвесторов относительно надежности и рисков криптоактивов. В данной статье мы систематически рассмотрим это событие и его безопасные корни с двойной точки зрения: технической и фактической, глубоко проанализируем ключевые технические детали, полностью вспомним эволюцию события и обсудим его возможные далеко идущие последствия.
Случайные числа и безопасность приватных ключей: жизненная линия мира блокчейна
В мире блокчейна случайные числа можно считать основой криптобезопасности. Каждый закрытый ключ кошелька Bitcoin или Ethereum генерируется с помощью случайных чисел — как только случайные числа теряют достаточную «случайность», хакеры могут предсказать закрытый ключ и таким образом непосредственно украсть цифровые активы. Чтобы эффективно избежать этого риска, кошелек должен использовать генератор случайных чисел с криптографической безопасностью (CSPRNG), чтобы гарантировать, что сгенерированные случайные числа действительно являются непредсказуемыми и невоспроизводимыми.
Те кошельки, которые полагаются на небезопасные случайные алгоритмы, на первый взгляд выглядят нормально, но на самом деле скрывают опасности: как только случайность будет успешно предсказана, потеря активов станет необратимой.
Историческая повторяемость: Уроки из нескольких крупных инцидентов безопасности
С 2022 по 2023 годы было раскрыто множество серьезных инцидентов безопасности, вызванных одной и той же уязвимостью случайных чисел, что в полной мере продемонстрировало серьезность и широко распространенность этой проблемы.
Безопасное событие 1: Урок на 160 миллионов долларов от Wintermute
20 сентября 2022 года известный маркет-мейкер Wintermute столкнулся с серьезным инцидентом безопасности, в результате которого было украдено около 160 миллионов долларов цифровых активов. Злоумышленники искусно воспользовались уязвимостью инструмента генерации адресов Profanity — этот инструмент в некоторых случаях полагался на Mersenne Twister (MT19937) в качестве псевдослучайного источника для генерации «красивых адресов».
Поскольку вывод MT19937 предсказуем при недостаточной инъекции энтропии, злоумышленники смогли воспроизвести часть процесса генерации адресов/приватных ключей, что позволило им успешно вычислить соответствующий приватный ключ и перевести средства. Этот случай стал знаковым событием в истории криптографии, поскольку это первый случай, когда из-за неправильного использования случайных чисел была взломана институциональная кошелек, что указывает на то, что проблема случайности превратилась из простой недосмотра разработчиков в системный риск безопасности.
В апреле 2023 года исследователи безопасности обнаружили, что браузерное расширение Trust Wallet (версии 0.0.172–0.0.182) использует не криптографически безопасную случайную функцию для генерации мнемонических фраз кошелька, которая также основана на псевдослучайном алгоритме Mersenne Twister (MT19937) (как показано на рисунке ниже), и пространство случайных чисел составляет всего около 2^32 возможностей, что совершенно недостаточно для защиты от атак методом грубой силы.
Злоумышленники могут за ограниченное время перебрать все возможные комбинации мнемонических фраз, чтобы восстановить приватный ключ и украсть активы пользователей. Официальный Trust Wallet затем выпустил объявление, в котором официально подтвердил существование уязвимости и срочно предупредил пострадавших пользователей о необходимости своевременно перенести свои активы. Согласно официальному заявлению на форуме сообщества проекта, эта уязвимость привела к потенциальным убыткам в размере около 170 тысяч долларов, поскольку злоумышленники могли успешно использовать эту уязвимость для проведения целевых атак.
Это событие стало первым случаем уязвимости генератора случайных чисел, затрагивающим конечных пользователей основных кошельков, и впервые привлекло широкое внимание общественности к проблеме «безопасности случайных чисел».
Безопасное событие 3: Libbitcoin Explorer (bx seed) Слабое событие случайных чисел
В августе 2023 года команда исследователей по безопасности Distrust объявила о серьезной уязвимости генерации случайных чисел в командном инструменте Libbitcoin Explorer (bx) версии 3.x. Этот инструмент использует генератор псевдослучайных чисел Mersenne Twister (MT19937) при выполнении команды bx seed для генерации семени кошелька, и использует только системное время в качестве источника семени, что приводит к очень низкой случайности и предсказуемому выводу. Злоумышленники могут перечислить все возможные значения семени за ограниченное время, чтобы восстановить закрытый ключ кошелька и напрямую украсть активы.
Уязвимость затрагивает всех пользователей, использующих Libbitcoin Explorer 3.x для создания кошельков, а также связанные приложения, зависящие от библиотеки libbitcoin-system 3.6. По состоянию на август 2023 года, из-за этой уязвимости было украдено более 900 000 долларов США в криптовалютных активах. Уязвимость была официально зарегистрирована как CVE-2023-39910 после ее раскрытия.
Несмотря на то, что Libbitcoin-explorer своевременно получил правильный патч безопасности, на этом дело не закончилось.
Огромный айсберг, выступающий из воды
После раскрытия инцидента безопасности в Libbitcoin Explorer 3.x команда Distrust во главе с исследователями-«белыми шляпами» создала проект MilkSad, который продолжает отслеживать влияние уязвимостей и продвигает реакцию сообщества.
К 2024 году исследователи впервые систематически исследовали механизмы генерации этих «слабых кошельков», типы кошельков и конфигурацию генераторов псевдослучайных чисел (PRNG), а также раскрыли их потенциальную связь с биткойн-майнинг-пулом Lubian.com и характеристики распределения связанных средств.
В 2025 году, благодаря ключевой подсказке, предоставленной анонимным исследователем-белым хакером, долгожданная аналитическая работа сделала прорыв. Команда MilkSad обнаружила, что затронутое программное обеспечение ввело новый параметр при генерации приватных ключей — смещение PRNG (offset), что позволило исследователям вновь связать ранее разрозненные группы кошельков и выявить единую модель генерации случайных чисел. Это открытие стало ключом к пониманию причин всей «слабой кошельковой» ситуации.
Согласно дальнейшему углубленному анализу команды, первоначально обнаруженные в 2023 году 2630 проблемных кошельков являются лишь верхушкой айсберга. Путем поиска в различных сегментах вывода PRNG исследователи успешно восстановили и идентифицировали более 227200 независимых кошельков (как показано на рисунке ниже), которые все имеют записи об эффективном использовании в основной сети, составляя крупнейший на сегодняшний день кластер “слабых случайных кошельков”.
Данные на блокчейне показывают, что эта партия кошельков, созданная с помощью дефектных случайных чисел, в общей сложности содержит около 137 тысяч биткойнов (BTC). 28 декабря 2020 года в течение всего двух часов эти кошельки были сосредоточенно очищены, и баланс резко упал с 137 тысяч до менее 200 монет, из которых около 9500 BTC были переведены на платежный адрес майнинг-пула Lubian, а оставшиеся около 120 тысяч BTC, как предполагается, были переведены в кошелек, контролируемый атакующим. Все подозрительные транзакции использовали одинаковую плату за услугу и имели явные признаки автоматизированного массового перевода.
В этом деле позже появились новые важные улики, которые дополнительно подтвердили истинное существование этого крупномасштабного кражи. Исследователи обнаружили в основной сети Биткойн, что некоторые кошельки жертв по-прежнему имели аномальную торговую активность 3 июля 2022 года и 25 июля 2024 года. Эти сделки были встроены с помощью механизма OP_RETURN с абсолютно одинаковой информацией:
«Сообщение от LB. Белые хакеры, которые спасают наш актив, вы можете связаться с нами по адресу [email protected], чтобы обсудить возврат актива и вашу награду.»
Исследователи предполагают, что «LB» может представлять Lubian.com, а «saving our asset» может указывать на массовый перевод средств, произошедший 28 декабря 2020 года. Эти сообщения многократно транслировались на разные адреса, и, похоже, что Lubian пытается установить контакт с «белыми шляпами», которые контролируют активы, чтобы обсудить публичные попытки возврата активов и вознаграждений.
Однако, поскольку закрытые ключи этих кошельков уже были скомпрометированы, теоретически любой может инициировать транзакцию или записать сообщение с этих адресов, поэтому в настоящее время невозможно с уверенностью подтвердить, действительно ли эта информация исходит от команды Lubian, или это является дезинформацией или шуткой.
Итак, основная часть айсберга наконец-то всплыла на поверхность — этот системный уязвимость, вызванная дефектом случайного числа, превратилась в одно из крупнейших и наиболее значительных событий безопасности в истории биткойна.
Технические детали: Полный процесс взлома 220000 BTC кошельков
Итак, как были сгенерированы эти 220000 слабых случайных кошельков BTC? Давайте подробно рассмотрим конкретный процесс технического поиска.
Первый шаг: выберите один и тот же генератор псевдослучайных чисел (PRNG) MT19937 для генерации случайных чисел. Подчеркнем еще раз, что этот PRNG совершенно не обладает криптографической безопасностью.
Шаг 2: Инициализируйте MT19937 с помощью семени с очень низкой энтропией (от 0 до 2^32-1). Эти приватные ключи BTC могут быть предсказаны так быстро, что семя с низкой энтропией является главным виновником.
Шаг 3: MT19937 на каждом раунде выдает одно 32-битное целое число, но не все используются, а только выбираются старшие 8 бит, то есть на каждом раунде MT19937 будет получен один байт.
Шаг 4: Ввести функцию OFFSET для расширения диапазона закрытых ключей. Необходимо помнить, что семя закрытого ключа BTC составляет 32 байта (что эквивалентно 24 мнемоническим словам, то есть 256 бит), эти 32 байта получаются с 轮 (32 * OFFSET) по 轮 (32 * OFFSET + 31), что позволяет генерировать семя закрытого ключа BTC. Следует помнить, что семя закрытого ключа BTC составляет 32 байта, конкретно:
(1) С 0 по 31 раунд, выход 32 байта закрытого ключа.
(2) Раунды с 32 по 63, вывод 32 байт закрытого ключа.
(4) Таким образом, OFFSET может достигать максимум 3232.
Шаг пятый: на основе семени закрытого ключа используйте открытый алгоритм деривации кошелька BIP32, используя путь деривации m/49'/0'/0'/0/0 для получения пар открытых и закрытых ключей.
Шаг шестой: на основе дочернего публичного ключа сгенерируйте адрес кошелька типа P2WPKH-nested-in-P2SH с префиксом 3.
Шаг 7: Если сгенерированный адрес действительно имеет записи в цепочке, это означает, что мы успешно нашли кошелек с слабым случайным числом, запишите его адрес и соответствующий приватный ключ.
Весь процесс поиска выше является детерминированным, единственной переменной является выбор низкоэнтропийного семени, всего 2^32 вариантов, что значительно меньше, чем пространство стандартных приватных ключей BTC в 2^256, поэтому можно с помощью брутфорса получить все 220000 слабых случайных кошельков и их соответствующие приватные ключи.
Полная история: предыстория и последствия
Давайте полностью разберем развитие событий.
Еще несколько лет назад (самое раннее — в 2018 году) некоторые проекты цифровых активов ошибочно внедрили криптографически небезопасные генераторы псевдослучайных чисел (PRNG) в процессе разработки и применили их для генерации закрытых ключей кошелька, что является крайне чувствительным этапом. Поскольку разработчики в то время не имели достаточного понимания криптографической безопасности, эта ошибка не была обнаружена, но заложила основу для последующих массовых уязвимостей.
К сожалению, со временем эту проблему постепенно обнаружили и злоупотребили хакеры. Разные атакующие группы последовательно инициировали несколько известных атак на основе одного и того же принципа — включая кражу Wintermute, уязвимость случайных чисел Trust Wallet и событие с слабыми кошельками Libbitcoin. Эти атаки в совокупности привели к убыткам в сотни миллионов долларов и сделали «безопасность случайных чисел» технической деталью, которая ранее игнорировалась, центром внимания в индустрии.
Исследователи, анализируя общие черты этих событий, обнаружили, что все пострадавшие кошельки имеют схожие дефекты случайности, которые можно проследить до более раннего инцидента с кражей в майнинг-пуле Lubian. После глубокого исследования они подтвердили, что кошельки, используемые Lubian, также полагаются на ненадежный механизм генерации случайных чисел и являются частью группы «слабых кошельков». Последующий систематический анализ выявил еще более удивительный факт: в сети всего около 220 000 слабых случайных кошельков, сумма которых составляет 120 000 BTC, что составляет крупнейшее и наиболее значительное событие по безопасности случайных чисел на сегодняшний день.
Что касается распространенного мнения о том, что «Министерство юстиции США стало инициатором кражи Lubian.com», то оно в основном основано на тонком факте: в процессе официального вмешательства министерства в управление связанными активами, изначально находившиеся долгое время в состоянии покоя адреса биткойна, связанные с Lubian, внезапно подверглись масштабному перемещению активов. Совпадение этого временного момента с прямой связью адресов в блокчейне вызвало у многих наблюдателей подозрения, что правительство могло использовать методы насильственного взлома для восстановления соответствующих приватных ключей. Существует и другая возможность — что правительство США не прибегло к насильственному взлому приватных ключей, а лишь контролировало лиц или организации, обладающие приватными ключами, что способствовало перемещению средств.
Несмотря на то, что эта партия кошельков относится к подверженным атакам слабым случайным кошелькам, их приватные ключи теоретически действительно могут быть воспроизведены с помощью технических средств, на данный момент все же нет никаких общедоступных и проверяемых доказательств того, что правительство США возглавило «грубой» взлом соответствующих приватных ключей. Если соответствующие учреждения официально не признают факт вмешательства технологий, истинный ход событий останется в тени загадки.
Как получить криптографически безопасные случайные числа?
Теперь мы осознали важность безопасных случайных чисел, так как же правильно их получать в реальной разработке и приложениях? Необходимо соблюдать следующие принципы:
(1) Предпочитайте использовать безопасные интерфейсы, предоставляемые операционной системой, для генерации случайных чисел на основе системного пула энтропии.
(2) Используйте аппаратные источники энтропии, такие как аппаратные инструкции генератора случайных чисел Intel SGX CPU, когда это возможно.
(3) В сценарии MPC можно объединить несколько источников энтропии для повышения общей безопасности, например, совместное использование пула энтропии системы Linux и аппаратного генератора случайных чисел Intel SGX CPU, чтобы избежать рисков, связанных с выходом из строя или предсказуемостью единственного источника энтропии.
(4) Используйте интерфейсы генерации безопасных случайных чисел из широко проверенных криптографических библиотек, таких как libsodium, BoringSSL, OpenSSL и др.
(5) Гарантируйте, что энтропия семени составляет не менее 128–256 бит, запрещается использовать временные метки, номера процессов и другие низкоэнтропийные источники в качестве семени.
(6) Запрещается использование небезопасных с точки зрения криптографии псевдослучайных генераторов чисел (не CSPRNG), таких как Mersenne Twister (MT19937), Math.random(), rand().
Преимущества многопоточной энтропии MPC
По сравнению с односторонними системами, MPC обладает естественным преимуществом слияния энтропии: каждая участвующая сторона может независимо предоставлять случайный источник энтропии, а окончательный случайный результат генерируется совместно всеми сторонами. Если хотя бы одна из сторон остается честной, предсказуемость или манипуляция случайностью всей системы становится невозможной. Эта структура многопоточного случайного источника значительно повышает общую безопасность системы и устойчивость к подделкам, что является одним из ключевых преимуществ протокола MPC в области безопасности.
Safeheron построил протокол безопасного хранения цифровых активов на основе технологий MPC и TEE. В этом решении участники протокола MPC используют различные независимые источники безопасной энтропии, включая пул энтропии системы Linux и аппаратные источники энтропии TEE (такие как аппаратные инструкции генерации случайных чисел Intel SGX). Этот механизм слияния многосource энтропии не только усиливает безопасные границы системы, но и закладывает более высокую безопасность для создания доверенной среды выполнения (TEE) и распределенной системы подписания.
Заключение
Это событие, которое на первый взгляд кажется таинственным, «кража 120 000 биткойнов», на самом деле выявляет не то, что какой-то алгоритм был взломан, а то, что ранние разработчики ошибочно использовали не криптографически безопасный алгоритм генерации случайных чисел при создании приватных ключей, что в корне ослабило безопасность всей системы.
Безопасность криптоактивов в конечном итоге зависит от строгости реализации криптографии; любая незначительная ошибка в проектировании может быть успешно использована хакерами и в конечном итоге определить принадлежность цифровых активов. Только обеспечив безопасность случайных чисел с самого начала, используя доверенные источники энтропии и проверенные криптографические библиотеки, можно вернуть «случайность» к ее истинному значению — непредсказуемости и невозможности подделки.
На этой странице может содержаться сторонний контент, который предоставляется исключительно в информационных целях (не в качестве заявлений/гарантий) и не должен рассматриваться как поддержка взглядов компании Gate или как финансовый или профессиональный совет. Подробности смотрите в разделе «Отказ от ответственности» .
Когда случайные числа больше не случайны: правда о краже 120000 BTC
Исходный текст: Max He@Safeheron Lab
Недавно в криптовалютном сообществе активно обсуждается важная новость: предполагается, что правоохранительные органы США могут обладать приватными ключами к примерно 120 000 биткойнов, которые были тайно переведены в 2020 году, что эквивалентно 15 миллиардам долларов. Согласно отчету Elliptic, эти активы изначально были связаны с майнинг-пулом Lubian.com и позже были официально конфискованы Министерством юстиции США. Внешние наблюдатели в основном предполагают, что правоохранительные органы могли воспользоваться уязвимостью случайных чисел при генерации кошельков для восстановления или захвата приватных ключей, также есть мнение, что это была операция по техническому взлому, инициированная правительством США.
После появления этой новости в криптовалютной индустрии возникли сильные волнения, и она быстро стала темой обсуждения в отрасли. Это вызвало широкое обсуждение не только в технической и безопасности, но и новые опасения у инвесторов относительно надежности и рисков криптоактивов. В данной статье мы систематически рассмотрим это событие и его безопасные корни с двойной точки зрения: технической и фактической, глубоко проанализируем ключевые технические детали, полностью вспомним эволюцию события и обсудим его возможные далеко идущие последствия.
Случайные числа и безопасность приватных ключей: жизненная линия мира блокчейна
В мире блокчейна случайные числа можно считать основой криптобезопасности. Каждый закрытый ключ кошелька Bitcoin или Ethereum генерируется с помощью случайных чисел — как только случайные числа теряют достаточную «случайность», хакеры могут предсказать закрытый ключ и таким образом непосредственно украсть цифровые активы. Чтобы эффективно избежать этого риска, кошелек должен использовать генератор случайных чисел с криптографической безопасностью (CSPRNG), чтобы гарантировать, что сгенерированные случайные числа действительно являются непредсказуемыми и невоспроизводимыми.
Те кошельки, которые полагаются на небезопасные случайные алгоритмы, на первый взгляд выглядят нормально, но на самом деле скрывают опасности: как только случайность будет успешно предсказана, потеря активов станет необратимой.
Историческая повторяемость: Уроки из нескольких крупных инцидентов безопасности
С 2022 по 2023 годы было раскрыто множество серьезных инцидентов безопасности, вызванных одной и той же уязвимостью случайных чисел, что в полной мере продемонстрировало серьезность и широко распространенность этой проблемы.
Безопасное событие 1: Урок на 160 миллионов долларов от Wintermute
20 сентября 2022 года известный маркет-мейкер Wintermute столкнулся с серьезным инцидентом безопасности, в результате которого было украдено около 160 миллионов долларов цифровых активов. Злоумышленники искусно воспользовались уязвимостью инструмента генерации адресов Profanity — этот инструмент в некоторых случаях полагался на Mersenne Twister (MT19937) в качестве псевдослучайного источника для генерации «красивых адресов».
Поскольку вывод MT19937 предсказуем при недостаточной инъекции энтропии, злоумышленники смогли воспроизвести часть процесса генерации адресов/приватных ключей, что позволило им успешно вычислить соответствующий приватный ключ и перевести средства. Этот случай стал знаковым событием в истории криптографии, поскольку это первый случай, когда из-за неправильного использования случайных чисел была взломана институциональная кошелек, что указывает на то, что проблема случайности превратилась из простой недосмотра разработчиков в системный риск безопасности.
! zFxMzJ8scYA8LqmIuqxhaAMB8wwmtd8gVvhIthv8.jpeg
По поводу этой атаки Safeheron тогда проанализировал подробные технические детали атаки и воспроизвел процесс атаки.
Безопасное событие 2: Кризис доверия, вызванный уязвимостью случайных чисел Trust Wallet
В апреле 2023 года исследователи безопасности обнаружили, что браузерное расширение Trust Wallet (версии 0.0.172–0.0.182) использует не криптографически безопасную случайную функцию для генерации мнемонических фраз кошелька, которая также основана на псевдослучайном алгоритме Mersenne Twister (MT19937) (как показано на рисунке ниже), и пространство случайных чисел составляет всего около 2^32 возможностей, что совершенно недостаточно для защиты от атак методом грубой силы.
Злоумышленники могут за ограниченное время перебрать все возможные комбинации мнемонических фраз, чтобы восстановить приватный ключ и украсть активы пользователей. Официальный Trust Wallet затем выпустил объявление, в котором официально подтвердил существование уязвимости и срочно предупредил пострадавших пользователей о необходимости своевременно перенести свои активы. Согласно официальному заявлению на форуме сообщества проекта, эта уязвимость привела к потенциальным убыткам в размере около 170 тысяч долларов, поскольку злоумышленники могли успешно использовать эту уязвимость для проведения целевых атак.
! X1IA68D6xKfdDmtZLF6JF0tru2PIfNgd98oGCFYJ.jpeg
Это событие стало первым случаем уязвимости генератора случайных чисел, затрагивающим конечных пользователей основных кошельков, и впервые привлекло широкое внимание общественности к проблеме «безопасности случайных чисел».
Безопасное событие 3: Libbitcoin Explorer (bx seed) Слабое событие случайных чисел
В августе 2023 года команда исследователей по безопасности Distrust объявила о серьезной уязвимости генерации случайных чисел в командном инструменте Libbitcoin Explorer (bx) версии 3.x. Этот инструмент использует генератор псевдослучайных чисел Mersenne Twister (MT19937) при выполнении команды bx seed для генерации семени кошелька, и использует только системное время в качестве источника семени, что приводит к очень низкой случайности и предсказуемому выводу. Злоумышленники могут перечислить все возможные значения семени за ограниченное время, чтобы восстановить закрытый ключ кошелька и напрямую украсть активы.
! u4KBm4P8ULfEoyCB0AJK8AO3UPhy2ELXZcFmxJsQ.jpeg
Уязвимость затрагивает всех пользователей, использующих Libbitcoin Explorer 3.x для создания кошельков, а также связанные приложения, зависящие от библиотеки libbitcoin-system 3.6. По состоянию на август 2023 года, из-за этой уязвимости было украдено более 900 000 долларов США в криптовалютных активах. Уязвимость была официально зарегистрирована как CVE-2023-39910 после ее раскрытия.
Несмотря на то, что Libbitcoin-explorer своевременно получил правильный патч безопасности, на этом дело не закончилось.
Огромный айсберг, выступающий из воды
После раскрытия инцидента безопасности в Libbitcoin Explorer 3.x команда Distrust во главе с исследователями-«белыми шляпами» создала проект MilkSad, который продолжает отслеживать влияние уязвимостей и продвигает реакцию сообщества.
К 2024 году исследователи впервые систематически исследовали механизмы генерации этих «слабых кошельков», типы кошельков и конфигурацию генераторов псевдослучайных чисел (PRNG), а также раскрыли их потенциальную связь с биткойн-майнинг-пулом Lubian.com и характеристики распределения связанных средств.
В 2025 году, благодаря ключевой подсказке, предоставленной анонимным исследователем-белым хакером, долгожданная аналитическая работа сделала прорыв. Команда MilkSad обнаружила, что затронутое программное обеспечение ввело новый параметр при генерации приватных ключей — смещение PRNG (offset), что позволило исследователям вновь связать ранее разрозненные группы кошельков и выявить единую модель генерации случайных чисел. Это открытие стало ключом к пониманию причин всей «слабой кошельковой» ситуации.
Согласно дальнейшему углубленному анализу команды, первоначально обнаруженные в 2023 году 2630 проблемных кошельков являются лишь верхушкой айсберга. Путем поиска в различных сегментах вывода PRNG исследователи успешно восстановили и идентифицировали более 227200 независимых кошельков (как показано на рисунке ниже), которые все имеют записи об эффективном использовании в основной сети, составляя крупнейший на сегодняшний день кластер “слабых случайных кошельков”.
! cNOM0XUq9qXdYFAjEWUve8yDBfF4z58rLL9Erikg.jpeg
Данные на блокчейне показывают, что эта партия кошельков, созданная с помощью дефектных случайных чисел, в общей сложности содержит около 137 тысяч биткойнов (BTC). 28 декабря 2020 года в течение всего двух часов эти кошельки были сосредоточенно очищены, и баланс резко упал с 137 тысяч до менее 200 монет, из которых около 9500 BTC были переведены на платежный адрес майнинг-пула Lubian, а оставшиеся около 120 тысяч BTC, как предполагается, были переведены в кошелек, контролируемый атакующим. Все подозрительные транзакции использовали одинаковую плату за услугу и имели явные признаки автоматизированного массового перевода.
В этом деле позже появились новые важные улики, которые дополнительно подтвердили истинное существование этого крупномасштабного кражи. Исследователи обнаружили в основной сети Биткойн, что некоторые кошельки жертв по-прежнему имели аномальную торговую активность 3 июля 2022 года и 25 июля 2024 года. Эти сделки были встроены с помощью механизма OP_RETURN с абсолютно одинаковой информацией:
«Сообщение от LB. Белые хакеры, которые спасают наш актив, вы можете связаться с нами по адресу [email protected], чтобы обсудить возврат актива и вашу награду.»
Исследователи предполагают, что «LB» может представлять Lubian.com, а «saving our asset» может указывать на массовый перевод средств, произошедший 28 декабря 2020 года. Эти сообщения многократно транслировались на разные адреса, и, похоже, что Lubian пытается установить контакт с «белыми шляпами», которые контролируют активы, чтобы обсудить публичные попытки возврата активов и вознаграждений.
Однако, поскольку закрытые ключи этих кошельков уже были скомпрометированы, теоретически любой может инициировать транзакцию или записать сообщение с этих адресов, поэтому в настоящее время невозможно с уверенностью подтвердить, действительно ли эта информация исходит от команды Lubian, или это является дезинформацией или шуткой.
Итак, основная часть айсберга наконец-то всплыла на поверхность — этот системный уязвимость, вызванная дефектом случайного числа, превратилась в одно из крупнейших и наиболее значительных событий безопасности в истории биткойна.
Технические детали: Полный процесс взлома 220000 BTC кошельков
Итак, как были сгенерированы эти 220000 слабых случайных кошельков BTC? Давайте подробно рассмотрим конкретный процесс технического поиска.
Первый шаг: выберите один и тот же генератор псевдослучайных чисел (PRNG) MT19937 для генерации случайных чисел. Подчеркнем еще раз, что этот PRNG совершенно не обладает криптографической безопасностью.
Шаг 2: Инициализируйте MT19937 с помощью семени с очень низкой энтропией (от 0 до 2^32-1). Эти приватные ключи BTC могут быть предсказаны так быстро, что семя с низкой энтропией является главным виновником.
Шаг 3: MT19937 на каждом раунде выдает одно 32-битное целое число, но не все используются, а только выбираются старшие 8 бит, то есть на каждом раунде MT19937 будет получен один байт.
Шаг 4: Ввести функцию OFFSET для расширения диапазона закрытых ключей. Необходимо помнить, что семя закрытого ключа BTC составляет 32 байта (что эквивалентно 24 мнемоническим словам, то есть 256 бит), эти 32 байта получаются с 轮 (32 * OFFSET) по 轮 (32 * OFFSET + 31), что позволяет генерировать семя закрытого ключа BTC. Следует помнить, что семя закрытого ключа BTC составляет 32 байта, конкретно:
(1) С 0 по 31 раунд, выход 32 байта закрытого ключа.
(2) Раунды с 32 по 63, вывод 32 байт закрытого ключа.
(3) 32 * 2 ~ 95 раунд, вывод 32 байта закрытого ключа.
(4) Таким образом, OFFSET может достигать максимум 3232.
Шаг пятый: на основе семени закрытого ключа используйте открытый алгоритм деривации кошелька BIP32, используя путь деривации m/49'/0'/0'/0/0 для получения пар открытых и закрытых ключей.
Шаг шестой: на основе дочернего публичного ключа сгенерируйте адрес кошелька типа P2WPKH-nested-in-P2SH с префиксом 3.
Шаг 7: Если сгенерированный адрес действительно имеет записи в цепочке, это означает, что мы успешно нашли кошелек с слабым случайным числом, запишите его адрес и соответствующий приватный ключ.
Весь процесс поиска выше является детерминированным, единственной переменной является выбор низкоэнтропийного семени, всего 2^32 вариантов, что значительно меньше, чем пространство стандартных приватных ключей BTC в 2^256, поэтому можно с помощью брутфорса получить все 220000 слабых случайных кошельков и их соответствующие приватные ключи.
Полная история: предыстория и последствия
Давайте полностью разберем развитие событий.
Еще несколько лет назад (самое раннее — в 2018 году) некоторые проекты цифровых активов ошибочно внедрили криптографически небезопасные генераторы псевдослучайных чисел (PRNG) в процессе разработки и применили их для генерации закрытых ключей кошелька, что является крайне чувствительным этапом. Поскольку разработчики в то время не имели достаточного понимания криптографической безопасности, эта ошибка не была обнаружена, но заложила основу для последующих массовых уязвимостей.
К сожалению, со временем эту проблему постепенно обнаружили и злоупотребили хакеры. Разные атакующие группы последовательно инициировали несколько известных атак на основе одного и того же принципа — включая кражу Wintermute, уязвимость случайных чисел Trust Wallet и событие с слабыми кошельками Libbitcoin. Эти атаки в совокупности привели к убыткам в сотни миллионов долларов и сделали «безопасность случайных чисел» технической деталью, которая ранее игнорировалась, центром внимания в индустрии.
Исследователи, анализируя общие черты этих событий, обнаружили, что все пострадавшие кошельки имеют схожие дефекты случайности, которые можно проследить до более раннего инцидента с кражей в майнинг-пуле Lubian. После глубокого исследования они подтвердили, что кошельки, используемые Lubian, также полагаются на ненадежный механизм генерации случайных чисел и являются частью группы «слабых кошельков». Последующий систематический анализ выявил еще более удивительный факт: в сети всего около 220 000 слабых случайных кошельков, сумма которых составляет 120 000 BTC, что составляет крупнейшее и наиболее значительное событие по безопасности случайных чисел на сегодняшний день.
Что касается распространенного мнения о том, что «Министерство юстиции США стало инициатором кражи Lubian.com», то оно в основном основано на тонком факте: в процессе официального вмешательства министерства в управление связанными активами, изначально находившиеся долгое время в состоянии покоя адреса биткойна, связанные с Lubian, внезапно подверглись масштабному перемещению активов. Совпадение этого временного момента с прямой связью адресов в блокчейне вызвало у многих наблюдателей подозрения, что правительство могло использовать методы насильственного взлома для восстановления соответствующих приватных ключей. Существует и другая возможность — что правительство США не прибегло к насильственному взлому приватных ключей, а лишь контролировало лиц или организации, обладающие приватными ключами, что способствовало перемещению средств.
Несмотря на то, что эта партия кошельков относится к подверженным атакам слабым случайным кошелькам, их приватные ключи теоретически действительно могут быть воспроизведены с помощью технических средств, на данный момент все же нет никаких общедоступных и проверяемых доказательств того, что правительство США возглавило «грубой» взлом соответствующих приватных ключей. Если соответствующие учреждения официально не признают факт вмешательства технологий, истинный ход событий останется в тени загадки.
Как получить криптографически безопасные случайные числа?
Теперь мы осознали важность безопасных случайных чисел, так как же правильно их получать в реальной разработке и приложениях? Необходимо соблюдать следующие принципы:
(1) Предпочитайте использовать безопасные интерфейсы, предоставляемые операционной системой, для генерации случайных чисел на основе системного пула энтропии.
(2) Используйте аппаратные источники энтропии, такие как аппаратные инструкции генератора случайных чисел Intel SGX CPU, когда это возможно.
(3) В сценарии MPC можно объединить несколько источников энтропии для повышения общей безопасности, например, совместное использование пула энтропии системы Linux и аппаратного генератора случайных чисел Intel SGX CPU, чтобы избежать рисков, связанных с выходом из строя или предсказуемостью единственного источника энтропии.
(4) Используйте интерфейсы генерации безопасных случайных чисел из широко проверенных криптографических библиотек, таких как libsodium, BoringSSL, OpenSSL и др.
(5) Гарантируйте, что энтропия семени составляет не менее 128–256 бит, запрещается использовать временные метки, номера процессов и другие низкоэнтропийные источники в качестве семени.
(6) Запрещается использование небезопасных с точки зрения криптографии псевдослучайных генераторов чисел (не CSPRNG), таких как Mersenne Twister (MT19937), Math.random(), rand().
Преимущества многопоточной энтропии MPC
По сравнению с односторонними системами, MPC обладает естественным преимуществом слияния энтропии: каждая участвующая сторона может независимо предоставлять случайный источник энтропии, а окончательный случайный результат генерируется совместно всеми сторонами. Если хотя бы одна из сторон остается честной, предсказуемость или манипуляция случайностью всей системы становится невозможной. Эта структура многопоточного случайного источника значительно повышает общую безопасность системы и устойчивость к подделкам, что является одним из ключевых преимуществ протокола MPC в области безопасности.
Safeheron построил протокол безопасного хранения цифровых активов на основе технологий MPC и TEE. В этом решении участники протокола MPC используют различные независимые источники безопасной энтропии, включая пул энтропии системы Linux и аппаратные источники энтропии TEE (такие как аппаратные инструкции генерации случайных чисел Intel SGX). Этот механизм слияния многосource энтропии не только усиливает безопасные границы системы, но и закладывает более высокую безопасность для создания доверенной среды выполнения (TEE) и распределенной системы подписания.
Заключение
Это событие, которое на первый взгляд кажется таинственным, «кража 120 000 биткойнов», на самом деле выявляет не то, что какой-то алгоритм был взломан, а то, что ранние разработчики ошибочно использовали не криптографически безопасный алгоритм генерации случайных чисел при создании приватных ключей, что в корне ослабило безопасность всей системы.
Безопасность криптоактивов в конечном итоге зависит от строгости реализации криптографии; любая незначительная ошибка в проектировании может быть успешно использована хакерами и в конечном итоге определить принадлежность цифровых активов. Только обеспечив безопасность случайных чисел с самого начала, используя доверенные источники энтропии и проверенные криптографические библиотеки, можно вернуть «случайность» к ее истинному значению — непредсказуемости и невозможности подделки.