COLDCARD RNG Incident (2026) — инцидент, раскрытый в июле 2026 года, когда программная ошибка ослабила создание seed. Seed — секретная основа, из которой выводятся ключи кошелька; RNG означает генератор случайных чисел. Для оценки риска нужно знать способ создания seed и использованную тогда прошивку. Это не было нарушением правил Bitcoin или удалённым захватом устройства.
Coinkite и Block опубликовали первые разборы 30 июля 2026 года после сообщений о потерях. По данным производителя, злоумышленникам не требовалось управлять чужим устройством: они могли воспроизвести слабо созданные секреты и получить соответствующие приватные ключи. Эти ключи позволяют подписывать переводы, поэтому отключения от интернета было недостаточно. Однако описание инцидента не устанавливает причину каждой отдельной потери; одной марки устройства для этого недостаточно. [2] [3]
Кошелёк должен был использовать аппаратный источник случайности, TRNG. Но после подключения библиотеки libNgU вызов ngu.random.bytes попадал в функцию rng_get из MicroPython и её программный генератор Yasmarang. При сборке программы связали не те компоненты. MICROPY_HW_ENABLE_RNG имело значение 0, тогда как #ifndef проверяло только существование настройки, но не её значение. Правильный аппаратный код мог присутствовать в файле, но не использоваться для создания seed. Это не была поломка чипа или намеренный аварийный режим. [1]
Злоумышленнику легче, если секрет выбирают из меньшего числа возможностей. Здесь состояние программы зависело от данных устройства, таймеров и прошлых вызовов. Для Mk4, Mk5 и Q Block описывает дополнительное обновление состояния, ограниченное 32 битами: максимум 2^32 различных выходных последовательностей при неизменной остальной части. Coinkite предварительно оценивала общую энтропию, то есть меру неопределённости, примерно в 40 бит для Mk2/Mk3 и 72 бита для новых моделей. Цифры основаны на разных предположениях. Они не определяют стоимость каждой атаки и не доказывают, что любой кошелёк можно взломать мгновенно. [3] [1]
Официальное предупреждение указывает Mk2/Mk3 с 4.0.1–4.1.9. Первый разбор Block включает уже 4.0.0 и изменение в марте 2021 года. Таким образом, источники расходятся в начальной границе; заменять эту неопределённость догадкой не стоит. При неясном происхождении seed руководство по миграции рекомендует считать кошелёк затронутым. Mk4/Mk5 и Q также были затронуты до исправления своей ветки прошивки. Тогдашнее утверждение обо всех производственных версиях не описывает позднейшие исправленные выпуски. [2] [3] [5]
Первые исправленные версии: Mk2/Mk3 4.2.0, Mk4/Mk5 Standard 5.6.0, Q Standard 1.5.0Q, Mk4/Mk5 Edge 6.6.0X и Q Edge 6.6.0QX. Standard и Edge — отдельные ветки; больший номер другой ветки сам по себе ничего не доказывает. Во время этой ревизии производитель рекомендует Standard 5.6.3 для Mk4/Mk5 и 1.5.3Q для Q. Перед установкой проверьте актуальную официальную страницу, хеш файла и подпись выпуска. Хеш — отпечаток содержимого, подпись помогает проверить происхождение. Даже правильно установленное обновление не меняет существующий seed. [4]
Представьте, что слабо созданный seed восстановлен на новом устройстве. Устройство другое, но секрет тот же. Это относится и к клонированию или переносу кошелька. Хеширование, вычисление отпечатка данных, не добавляет возможных входов; BIP39 Checksum помогает замечать ошибки в словах, а не восполняет недостающую случайность. И наоборот: seed, безопасно созданный в другом месте, не становится слабее из-за этой конкретной ошибки лишь от импорта в COLDCARD. Важно его происхождение. [3] [5]
Исключение производителя требует не менее 50 независимых бросков правильного, несмещённого кубика, введённых исходной функцией Add Dice Rolls. Последовательность не должна была записываться или раскрываться, а кошелёк должен использовать окончательные слова после добавления бросков. При меньшем числе или сомнениях рекомендуется миграция. BIP39 Passphrase — другая мера: дополнительный секретный текст, который вместе с seed определяет иной кошелёк. Сильная уникальная passphrase добавляет препятствие, но seed не исправляет; производитель советует миграцию и её пользователям. PIN защищает только доступ к устройству. Сегодняшние правила для новых seed отличаются от этого исторического исключения. [2]
Сначала убедитесь, что резервная копия исходного кошелька пригодна для восстановления. Затем по руководству миграции создайте действительно новый seed на исправленной прошивке и проверьте его копию. Сверьте fingerprint, короткий идентификатор кошелька, и адрес получения на экране устройства. Отправьте небольшую тестовую сумму; лишь после проверки назначения и поступления переводите остальное. Учтите все счета со средствами, кошельки с passphrase, производные кошельки и схемы multisig. Сохраните старую копию до подтверждения всего переноса. При несовпадении ничего не отправляйте и не стирайте. Никогда не вводите секреты восстановления в веб-форму. [5]
Multisig требует для перевода заданное число подписей от нескольких ключей. Если злоумышленник получил достаточно ключей для выполнения правила, защиты уже недостаточно. Нужно оценить остальные ключи, подготовить и проверить на устройстве новое правило подписания и перевести средства. Block описывает и другие применения того же генератора: отдельные ключи Paper Wallet и некоторые временные ключи шифрования. Последствия зависят от конкретного использования и доступных злоумышленнику данных; они не одинаковы для всех функций. [3] [5]
Страница состояния перечисляет испытание аппаратного генератора на настоящем Mk4, проверку исходного кода и независимое повторение сборки конкретного исправления. Это помогает проверить описанный механизм, но не доказывает безопасность каждого опубликованного файла. Нынешний Standard также требует собственного вклада случайности пользователя при создании seed. Старый совет о том, что вклад всегда необязателен, поэтому не является актуальной процедурой этой ветки. Страница отражает ход исправлений; отдельный подробный технический отчёт о причинах всё ещё обозначен как готовящийся. [4]
Устройство обновлено, проблема осталась
Владелец создал seed на Mk3 4.1.9 без собственных бросков кубика. Он устанавливает 4.2.0 и восстанавливает те же слова на другом устройстве, но продолжает использовать прежний секрет. По руководству миграции нужен новый seed на исправленной прошивке, проверка копии и адреса, затем небольшой пробный перевод. Только после этого переводят остальное. Старую копию сохраняют до полного подтверждения переноса.
Для полной картины прочитайте эту статью вместе с Cryptographic Entropy, Deterministic RNG, Seed Generation, BIP39 checksum, BIP39 passphrase, Dice Roll Entropy.
01Достаточно купить новое устройство?+
Нет, если восстановить на нём тот же затронутый seed. Новое оборудование не меняет способ первоначального создания секрета. Процедура зависит от происхождения и точных условий исключения для независимых бросков. Для затронутого seed речь идёт о переходе в новый кошелёк, а не просто о замене устройства.
02Означают ли 32 бита одинаково простую атаку на все модели?+
Нет. В анализе Block число относится к дополнительному изменению состояния генератора при фиксированной остальной части и истории вызовов. Неизвестные данные устройства или временные параметры меняют задачу злоумышленника. Это не универсальное измерение скорости атаки и не гарантия безопасности конкретного seed.