Слабые сиды кошельков: простое объяснение
Как слабые сиды кошельков ставят биткоин под угрозу
Криптография биткоина может оставаться надёжной, даже если кошелёк создаёт предсказуемый сид. Риск возникает ещё до первой транзакции: если кто-то может воспроизвести сид или приватный ключ, он сможет потратить средства с другого устройства — даже если аппаратный кошелёк не подключён к сети.
Краткий ответ
Почему даже корректный сид может быть небезопасен?
12 или 24 корректных слова лишь подтверждают правильный формат сид-фразы. Это не доказывает, что кошелёк выбрал её из действительно случайного набора. Слабый генератор может создать обычную на вид фразу из ограниченного списка, который могут воспроизвести злоумышленники.
В этих случаях блокчейн биткоина и правила подписей работали корректно. Ошибка возникла на этапе генерации ключей в кошельке, до появления транзакции в блокчейне.
Содержание
Блокчейн и кошелёк
Блокчейн проверяет подписи, а кошелёк создаёт секрет
Это разные задачи: блокчейн проверяет транзакции, а кошелёк создаёт и защищает ключи для их подтверждения. Слабый сид может привести к сбою на уровне кошелька, даже если блокчейн остаётся защищённым.
Блокчейн
Хранит историю транзакций и подтверждает расход при наличии корректной подписи.
Кошелёк
Создаёт сид, генерирует приватные ключи, показывает адреса и подписывает транзакции.
Злоумышленник
Если сид был предсказуем или скопирован, те же ключи можно восстановить на другом устройстве.
Похищение устройства не обязательно. Злоумышленник может импортировать скопированный или предсказуемый сид в совместимое ПО и подписать транзакцию на своём компьютере.
Два распространённых мифа
Аппаратные и холодные кошельки снижают риск, но не делают раскрытые ключи безопасными
Оба подхода полезны, но их эффективность ограничена: секрет должен быть создан безопасно и оставаться тайным.
Никто не сможет потратить без моего устройства
Аппаратный кошелёк изолирует ключи от обычного компьютера при повседневном использовании. Но эти же ключи можно восстановить на другом устройстве, если сид был скопирован или предсказуем.
Устройство защищает только пока сид и приватные ключи остаются в секрете.Оффлайн-кошелёк делает биткоины недоступными
Оффлайн-режим блокирует удалённый доступ к устройству, но не мешает тому, у кого уже есть копия сида или приватного ключа, использовать другое устройство.
Оффлайн-хранение защищает оригинал, но не отменяет существование копии.Где начинается уязвимость
Ошибка может возникнуть ещё до появления сид-фразы
Кошелёк сначала собирает данные, которые никто не должен предугадать. Затем с помощью безопасного генератора случайных чисел формирует сид. Если исходные данные слабы, итоговая фраза может выглядеть корректно, но быть предсказуемой.
Энтропия
Технический термин для обозначения непредсказуемости. Чем больше энтропии, тем больше уникальных вариантов мог выбрать кошелёк.
Безопасный генератор случайных чисел
Программное или аппаратное средство, преобразующее непредсказуемые исходные данные в значения для защищённых ключей.
Сид-фраза
Читаемая резервная копия, позволяющая кошельку восстановить множество приватных ключей. Любой, у кого есть полный сид, может восстановить кошелёк.
Приватный ключ
Секретное значение, позволяющее подтверждать расход средств с определённого адреса. Один сид может создавать множество приватных ключей.
Правильный формат не гарантирует безопасность
Почему 12 корректных слов — не гарантия безопасности
Представьте лотерею, где на билетах длинные номера, но реально используется только 1 000 вариантов. Все билеты выглядят убедительно, но злоумышленнику нужно проверить лишь эти 1 000 комбинаций. Слабый генератор кошелька создаёт такую же лазейку.
Надёжный 12-словный сид должен быть выбран из огромного числа вариантов. Слабый кошелёк может выбирать из скрытого ограниченного списка. По словам или корректности фразы это не определить.
Что видит владелец
12 корректных слов, правильная контрольная сумма и кошелёк, который открывается без ошибок.
Что остаётся скрытым
Генератор использовал слишком мало непредсказуемых данных и мог создавать только ограниченный набор сидов.
Что получает злоумышленник
Значительно меньший список для перебора вместо всех возможных сидов.
Пример с 1 000 билетами — это аналогия, а не оценка для конкретного кошелька. Реальное число зависит от конкретного генератора.
Реальные сбои, разные причины
Слабая случайность уже не раз приводила к утечкам в кошельках
В этих инцидентах были разные продукты и ошибки, но общий вывод один: красивый интерфейс и длинная секретная фраза не гарантируют непредсказуемость секрета.
Milk Sad / Libbitcoin Explorer
Команда bx seed использовала генератор Mersenne Twister с 32 битами системного времени. Результат выглядел как энтропия кошелька, но исследователи смогли воспроизвести ограниченный набор вариантов и связали уязвимость с реальными кражами в разных блокчейнах.
Длина результата не компенсирует предсказуемость исходных данных.RANDSTORM / BitcoinJS
Старые браузерные кошельки могли использовать слабую случайность из JavaScript и среды браузера. Спустя годы исследователи предупредили, что некоторые кошельки того времени всё ещё уязвимы.
Старый ключ остаётся старым, даже если интерфейс кошелька обновился.Android SecureRandom
Уязвимость в генераторе случайных чисел Android поставила под угрозу биткоин-кошельки. Разработчики выпустили исправления, но пользователям пришлось создавать новые адреса и менять ключи, так как обновление не делало старые ключи безопасными.
Исправление генератора защищает только новые ключи, а не уже созданные.COLDCARD RNG
Некоторые прошивки COLDCARD создавали сиды с гораздо меньшей непредсказуемостью, чем предполагалось. Этот случай показал, что даже специализированное оборудование может дать сбой, если реальная цепочка генерации сида использует защищённые источники некорректно.
Аппаратное обеспечение не заменяет проверку всей цепочки генерации ключей.Подробнее о проблеме с COLDCARDПрактическая проверка риска
Когда стоит считать старый кошелёк потенциально небезопасным?
Обычно по словам сида нельзя судить о его надёжности. Важно знать, где, когда и с помощью какого ПО или прошивки он был создан.
Происхождение сида неясно
Вы не знаете, какое приложение, сайт, устройство, прошивка или процедура изначально создали фразу восстановления.
Кошелёк упоминается в уведомлении о безопасности
Сид был создан версией, указанной в предупреждении производителя, CVE, исследовательском отчёте или уведомлении о миграции.
Старый сид был импортирован в новый кошелёк
Перенос той же фразы восстановления в новый аппаратный кошелёк меняет только контейнер, а не сам секрет.
Сид или приватный ключ могли быть раскрыты
Сид был введён на сайте, сфотографирован, сохранён в облаке, передан в поддержку или увиден другим человеком.
Выберите действие по уровню риска
Что делать со старым или сомнительным сидом?
Не паникуйте из-за возраста кошелька. Сначала проверьте, как был создан сид и упоминается ли продукт или версия в надёжных уведомлениях о безопасности. Действуйте по фактам.
Известный источник и нет признаков утечки
Обновляйте кошелёк и прошивку, защищайте резервные копии и следите за надёжными уведомлениями о безопасности. Старый кошелёк не всегда небезопасен.
Происхождение сида неизвестно или указано в предупреждении
Создайте новый сид с помощью актуального, неуязвимого ПО или устройства. Проверьте резервную копию, отправьте тестовую сумму, затем переведите остальные средства.
Кто-то может знать сид или приватный ключ
Считайте средства под угрозой. Переведите их на адреса, созданные новым сидом. Смена PIN, пароля или устройства не меняет раскрытые ключи.
Что не исправляет слабый или раскрытый сид
- Импорт того же сида в новый аппаратный кошелёк
- Изменение только PIN устройства или пароля приложения
- Установка обновления без создания нового сида
- Отключение устройства от сети после раскрытия секрета
Для разработчиков кошельков
Проверьте всю цепочку создания ключа
Безопасный алгоритм на бумаге недостаточен. Необходима проверка всей цепочки — от источника энтропии и генератора случайных чисел до итогового сида, включая прошивку, браузер, ОС, сборку и поведение при сбоях.
- Используйте платформенные или аппаратные источники, предназначенные для криптографической случайности.
- Безопасно завершайте работу при недоступности защищённого источника; никогда не используйте обычный генератор случайных чисел без предупреждения.
- Тестируйте собранный продукт и реальный путь вызова, а не только отдельные исходные файлы.
- Документируйте процесс создания сидов и порядок миграции пользователей при сбоях.
Основные публикации и рекомендации по безопасности
Изучите инциденты и криптографические рекомендации
Пояснения и примеры сверены с рекомендациями NIST, публикацией Milk Sad, уведомлением RANDSTORM от Unciphered, предупреждением Bitcoin.org для Android, Bitcoin Optech и актуальными рекомендациями по безопасности кошельков.
Частые вопросы
Может ли кто-то потратить мои биткоины, если знает мою сид-фразу?
Как правило, да. Полная фраза восстановления позволяет восстановить приватные ключи кошелька. Злоумышленник может импортировать её в совместимое ПО или другое устройство и подписывать транзакции без вашего аппаратного кошелька или PIN.
Хранятся ли биткоины внутри аппаратного кошелька?
Нет. Биткоины записаны в блокчейне. Аппаратный кошелёк хранит и использует ключи для подтверждения расходов. Если кто-то получит копию этих ключей, физическое устройство перестаёт быть единственным способом подписать транзакцию.
Защитит ли холодное хранение известный приватный ключ?
Нет. Холодное хранение защищает только неизвестный ключ. Если кто-то уже знает приватный ключ или сид, он может использовать своё онлайн-устройство для создания и отправки транзакции.
Исправит ли обновление прошивки старый слабый сид?
Нет. Обновление может исправить генерацию новых сидов, но не добавит непредсказуемости уже существующему. Обычно безопасно создать новый сид и перевести средства на новые адреса.
Можно ли определить слабость сида по его словам?
Обычно нет. Слабый сид может содержать нужное число слов и корректную контрольную сумму. Риск зависит от способа и места генерации — проверьте исходное приложение, устройство, прошивку, дату и уведомления о безопасности.
Сделает ли сильный пароль кошелька слабый сид безопасным?
Нет. PIN устройства или пароль приложения защищают только локальный доступ, но не меняют приватные ключи, связанные с сидом. В некоторых кошельках отдельная сильная парольная фраза может добавить ещё один секрет, но это не исправляет уже известный слабый сид.
Открывает ли один утёкший приватный ключ доступ ко всему кошельку?
Не всегда. Приватный ключ обычно даёт доступ только к средствам на своём адресе. Скомпрометированный сид опаснее, так как позволяет восстановить множество приватных ключей. Точный объём зависит от архитектуры кошелька и того, какой секрет был раскрыт.
Может ли 24-словный сид быть слабым?
Да. Большее число слов увеличивает количество возможных вариантов, но только если исходное значение выбрано безопасно. Слабый генератор может создать корректную 24-словную фразу из ограниченного предсказуемого набора.
Перейти к реальному примеру