В свете катастрофического бага с низкой энтропией в аппаратных кошельках Coldcard, связанного с публично наблюдаемыми кражами, начавшимися 30 июля, держатели биткойнов начали пересматривать доверительные предположения в своих настройках аппаратных кошельков.
Как работал недостаток энтропии Coldcard
Устройства Coldcard были оснащены, по-видимому, функциональными «генераторами истинно случайных чисел» (ГИСЧ) STM32, которые полагаются на физические процессы для создания не угадываемой сид-фразы.
Однако после того, как создатель Coldcard NVK решил начать переписывание прошивки для перехода с модели свободного ПО под лицензией GPL на модель только для чтения, была, по-видимому, внедрена серьёзная уязвимость.
Начиная с версии прошивки 4.0.1, выпущенной в марте 2021 года, устройство использовало генератор псевдослучайных чисел Yasmarang от MicroPython вместо правильного использования аппаратного ГСЧ STM32.
Генерация случайных чисел — неразрешимая проблема в информатике, поэтому создание безопасных, не угадываемых приватных ключей всегда в некоторой степени должно полагаться на внешние физические процессы.
Использование ГПСЧ Yasmarang широко характеризовалось аналитиками в этой сфере как запрограммированный запасной вариант. Однако Coinkite оспорила эту характеристику в недавнем посте в X:
Предположение о том, что Coldcards были запрограммированы по умолчанию использовать очевидно незащищённый метод генерации сида, также породило спекуляции в X о том, был ли это преднамеренно размещённый бэкдор.
Расследующий журналист по биткойну Hodlnaut предположил, что ошибка произошла из-за небрежной практики разработки и попыток подавления ошибок случайными изменениями.
Coinkite оценила, что устройства Mk2 и Mk3 генерировали сиды с энтропией в 40 бит, в то время как Mk4, Mk5 и Q достигали около 70 бит. И то, и другое значительно меньше 128 бит, необходимых для безопасной сид-фразы из 12 слов.
С тех пор злоумышленники успешно подбирают приватные ключи методом грубой силы, похитив более чем на 100 миллионов долларов BTC. Вероятность обнаружения кошелька зависит от того, была ли добавлена дополнительная энтропия с помощью игральных костей, использовалась ли BIP-39-фраза-пароль и нестандартный путь.
По теме: Хакеры Coldcard переводят 64 BTC и 200 ETH в криптовалютные микшеры
С тех пор Джеймс О'Бейрн создал сайт с адресами-ловушками под названием cktripwire, чтобы оценить, какие типы кошельков злоумышленники эффективно вычищают.

Ловушки, отслеживаемые cktripwire. Источник: cktripwire.com
Как физическая энтропия спасла некоторые кошельки
Эксплойт Coldcard ещё раз болезненно напомнил один из основополагающих принципов сообщества: Не доверяй, проверяй.
Те пользователи, которые не полагались на непрозрачный инженерный компонент для генерации энтропии в наиболее критичной для безопасности части процесса, а использовали достаточное количество бросков игральных костей, спасли свои монеты от эксплойта.
Бросок игральных костей — это простой, визуально прозрачный процесс, который обычный пользователь может проверить самостоятельно и интуитивно понять. Проверка же ГИСЧ потребовала бы детального физического осмотра электроники и изучения прошивки.
Хотя некоторые использовали недавние события как предлог, чтобы объявить о конце самостоятельного хранения, следование этой лучшей практике оставляет очень мало возможностей для удалённого злоумышленника.
Если сид-фраза генерируется с помощью физической энтропии без опоры на безопасность аппаратного кошелька, единственная истинная точка отказа в генерации кошелька устраняется.
По теме: Означают ли атаки на Coldcard, что все аппаратные кошельки теперь небезопасны?
Расширенный публичный ключ (xpub) и адреса для получения, производные от сида, могут быть перепроверены путём его импорта в другие устройства.
Экстракция одноразового числа (nonce) через воздушный зазор также может быть обнаружена путём проверки, генерируют ли два устройства одинаковую подпись, соответствующую RFC 6979, при получении идентичной неподписанной транзакции.
Безопасная генерация энтропии, таким образом, является абсолютным предварительным условием для безопасного кошелька. Различные методы и предложения по её генерации стали распространяться в X с момента публичного раскрытия эксплойта Coldcard.
Самый популярный метод — перепроверить способность устройства правильно преобразовывать грани игральных костей в BIP-39 сид-фразу, применяя хэш SHA-265. Использование более 100 бросков костей затем достаточно для генерации энтропии для сид-фразы из 24 слов.
Простые бумажные методы, такие как таблица, опубликованная Bitbox, разделяют пространство слов BIP-39 таким образом, что комбинация шести бросков костей и подбрасывания монеты может быть напрямую сопоставлена слову сид-фразы без использования электроники.
Более сложные шаблоны, такие как рабочая таблица для устранения смещения костей codex32, используют экстрактор фон Неймана, который можно вычислить вручную, чтобы сгенерировать безопасную сид-фразу даже с предвзятыми костями.
Альтернативой броскам костей является распечатать слова BIP-39, разрезать их на одинаковые маленькие кусочки бумаги, тщательно перемешать их, а затем вытащить случайные 24 слова. Такие продукты, как Seedsticks или Entropia, делают это более удобным и надёжным.
Специализированное оборудование, такое как Frostsnap, пытается верифицируемо распределить генерацию энтропии между устройствами.
Некоторые пользователи занялись разработкой собственных устройств физической энтропии, которые могут генерировать сид-фразу почти так же быстро, как электронное оборудование.
По теме: Означают ли атаки на Coldcard, что все аппаратные кошельки теперь небезопасны?





