Разработчик bitcoin Лук Дашджр 9 ноября публично перечислил девять проблем в коде генерации случайных чисел аппаратного кошелька Coldcard от Coinkite, сказав, что ранее сообщал о них компании в частном порядке.
«Я не утверждаю, что все они могут быть использованы в качестве оружия или что они точно все являются уязвимостями», — написал Дашджир в своем раскрытии. Он сказал, что не знает, устранил ли Coinkite эти проблемы, и описал свой обзор как поверхностный осмотр, а не полный аудит.
Его тема ссылается на обновление прошивки в июле. Последующие заметки о выпуске и опубликованный исходный код Coinkite содержат изменения, устраняющие несколько из поднятых им вопросов, включая проверки ошибок семени чипа и тест запуска пути аппаратного RNG.
https://x.com/i/status/2119836060306018364
Раскрытие информации последовало за инцидентом с генерацией семян Coldcard в июле. Coinkite утверждает, что злоумышленники воспользовались ослабленными семенами кошелька, воссоздав частные ключи оффлайн и похитив средства, не получая удаленного доступа к устройствам.
пронумерованные сообщения Dashjr вызвали опасения по поводу кода, использованного после предыдущего исправления:
Он задался вопросом, следует ли отбрасывать первоначальные случайные выборки при запуске, указал на отсутствие проверок семени чипа и ошибки часов, и отметил, что руководство по чипу требует постобработки для криптографических приложений.
Он сказал, что проверки на повторяющийся вывод применяются к буферизованным чтениям, но не к прямым вызовам, и утверждал, что нижнеуровневая процедура обнаружения ошибок сама по себе не была достаточно продемонстрирована.
Он задал вопрос, почему случайность элемента безопасности не сохранила ожидаемую стойкость, настоятельно рекомендовал полностью протестировать недавно включенный путь RNG и потребовал проверку на устройстве, а не полагаться только на средства защиты на этапе сборки.
Он предупредил, что истечение времени, обрабатываемое в контексте, неспособном безопасно обработать исключение Python, может вызвать неопределенное поведение, потенциально приведя к сбою устройства или сделав его непригодным для использования.
Dashjr сказал, что он сделал это публичным, узнав, что NVK утверждает, что люди не могут обнаружить дефект Coldcard. Ранее в тот же день генеральный директор Coinkite Родольфо Новак, известный как NVK, написал, что «для обнаружения того, что не смогли найти люди, потребовалась новая модель ИИ». Пост Новака касался обнаружения предыдущего дефекта генерации семени; технический тред Dashjr касался кода после исправления.
Позже в прошивку были добавлены проверки RNG
Страница загрузки Coinkite download page указывает 5.6.3 в качестве текущей стандартной прошивки для Mk4/Mk5 и 1.5.3Q для Q. История выпусков release history указывает, что обнаружение ошибок семени и самотестирование при запуске с аппаратным RNG были добавлены в версию 5.6.1, выпущенную 20 августа.
Опубликованный исходный код Mk4 для 5.6.3 отбрасывает образцы разогрева, проверяет флаги ошибок семени, повторяет неудачные попытки и проверяет, достигают ли вызовы аппаратного генератора случайных чисел. В примечаниях к выпуску также говорится, что оба безопасных элемента теперь выбираются непосредственно для каждого нового основного семени, а не вносят вклад только через инициализацию RNG при загрузке.
Текущий источник по-прежнему помещает проверку на повторяющийся вывод в процедуру буферизованного чтения, а не в каждый прямой вызов. В комментариях говорится, что флаги ошибок часов намеренно игнорируются, ссылаясь на документацию чипа, согласно которой эти ошибки не делают сгенерированные числа недействительными.
Для пользователей, затронутых инцидентом в июле, текущие рекомендации Coinkite остаются неизменными: обновление прошивки не восстанавливает уже ослабленное семя. Эти пользователи должны следовать рекомендациям по миграции, если только исключение, связанное с независимым кубиком, не применяется.



