Как «не доверяй, но проверяй» сломалось на первом шаге
Coldcard построил репутацию на принципе Don't Trust, Verify. Открытый код, воспроизводимая прошивка, возможность проверить всё самостоятельно.
Проблема оказалась в самом первом действии - это в создании сид-фразы.
У Coldcard было три варианта: довериться аппаратному генератору случайных чисел, добавить к нему броски игральных костей или собрать сид полностью на костях.
Последний способ позволял вообще не доверять железу, но почти все выбирали дефолт: нажимали кнопку и полагались на устройство.
В 2021 году в прошивку попала ошибка, отключившая аппаратный генератор случайности.
Вместо него устройство использовало слабый программный генератор MicroPython. Никаких предупреждений не появлялось. Пользователь получал обычные 24 слова - они проходили контрольную сумму, восстанавливали кошелёк и могли годами храниться на металлической пластине.
Но безопасность сида определяется не словами, а энтропией - размером пространства, из которого их выбрали. На части устройств оно сократилось примерно до 40 бит, на других до 72.
Для человека это всё ещё огромные числа, но для хорошо организованного перебора уже достижимые.
По оценке Galaxy Research, с уязвимых адресов вывели около 1 367 BTC - это почти $90 млн.
Тут я пошёл проверять свою Coldcard. Да, моя версия оказалась ровно из уязвимых. Кости для честной энтропии я в своё время, конечно, поленился использовать и нажал кнопку, как все.
Повезло дважды: денег на кошельке было мало, и их не увели.
Отдельная история - это роль AI.
Coinkite сама предположила, что атакующий мог найти ошибку AI-анализом открытого кода. При этом собственный AI-аудит компании несколькими неделями ранее ничего не нашёл. Защитнику нужно найти все ошибки, атакующему хватает одной.
Много лет главным страхом криптографии считались квантовые компьютеры. Но здесь никто не ломал Bitcoin и не перебирал полноценные 256-битные ключи.
Взломали слабую генерацию, созданную обычной ошибкой в коде и, вполне возможно, найденную и масштабированную с помощью AI.
Воспроизводимая сборка доказала, что прошивка соответствует исходному коду. Но не то, что сам код безопасен.
@maxvotek | linkedin | substack
Post #517
3.6K

- 👍 21
- 🔥 15
- ❤ 14