Баг RNG в Coldcard ослабляет ключи для брутфорса
Может, я просто не видел, но не нашёл объяснений уязвимости Coldcard, поэтому пишу здесь.
В марте 2021 года Coldcard выпустили обновление прошивки версии 4.0.0 и заменили встроенный генератор случайных чисел MicroPython на собственный. Чтобы отключить генератор MicroPython, они установили параметр MICROPY_HW_ENABLE_RNG в значение 0.
Проблема в том, что этот параметр проверялся не по значению, а по факту наличия. В итоге считалось, что генератор заменён на собственный, но на деле всё это время продолжал использоваться старый генератор из MicroPython.
В результате ключи всё это время генерировались с помощью Yasmarang — это псевдослучайный генератор (не true random), который берёт на вход всего три значения: chip ID, регистр таймера и внутренние часы.
Устройства, которые должны были иметь сложность на уровне 128 бит, в старых версиях получили 40 бит, а в новых — 72 бита. Даже у новых размер пространства возможных приватных ключей сократился до нескольких миллиардов вариантов.
Поэтому сейчас атаки на Coldcard сводятся к простому брутфорсу. Если кто-то успел вывести средства до атаки — повезло, но у биткоин-максималистов цель обычно держать BTC на кошельке, а не снимать, так что реакция могла запоздать.
Проблемный коммит: https://github.com/Coldcard/firmware/commit/37e4af5451c260c1e7d429fe8972c4cb5e68ee59





