Владелец аппаратного кошелька уверен в главном: ключ никогда не покидает устройство, значит украсть его нельзя. Обещание честное и выполняется буквально. Только вот ключу и не обязательно куда-то уходить, чтобы посторонний его узнал — достаточно, чтобы он был предсказуемым в момент создания. Разберём, откуда берётся случайность внутри кошелька, чем измеряется её качество и почему провал этого механизма невидим снаружи. Это аналитический обзор, а не инвестиционная рекомендация.
Что на самом деле создаёт кошелёк
При первом включении устройство не придумывает адрес и не связывается с сетью. Оно выбирает одно очень большое случайное число. Из него по строго определённым правилам получается приватный ключ, из ключа — публичный ключ, из публичного — адрес.
Вся цепочка после первого шага полностью детерминирована: одно и то же исходное число всегда даст один и тот же адрес. Никакой дополнительной защиты по пути не добавляется, и это принципиально важно. Стойкость всей конструкции равна стойкости самого первого шага — выбора числа.
Двенадцать или двадцать четыре слова, которые устройство просит записать, — это то же самое число, записанное словами из фиксированного словаря. Сид-фраза не защищает число и не шифрует его, она лишь делает его переносимым и удобным для записи на бумаге.
Что происходит, когда первый шаг сделан плохо, отрасль наблюдала этим летом: разбор одного из инцидентов с аппаратными кошельками показал, что обновление прошивки пятилетней давности перенесло генерацию секрета с аппаратного источника на программный и обрушило стойкость со ста двадцати восьми бит до величин порядка сорока.
Что означают биты стойкости
Энтропия — мера непредсказуемости, и измеряют её в битах. Каждый бит удваивает число возможных вариантов. Показатель в сорок бит означает не «в три раза хуже», чем сто двадцать восемь, а разницу, которую человеческое воображение вмещает с трудом.
| Стойкость | Число вариантов | Что это значит на практике |
|---|---|---|
| 40 бит | около триллиона | Перебирается обычным оборудованием |
| 64 бита | около 18 квинтиллионов | Дорого, но для крупной цели возможно |
| 128 бит | 3,4 с тридцатью восемью нулями | Перебор неосуществим |
| 256 бит | запредельная величина | Стандарт для 24 слов |
Разница между строками таблицы не количественная, а качественная. При ста двадцати восьми битах перебор невозможен не потому, что дорого, а потому, что на него не хватит ни времени существования вселенной, ни энергии. При сорока задача сводится к вычислительной работе, посильной для одного человека с обычным оборудованием.
Откуда устройство берёт непредсказуемость
Здесь и находится корень проблемы: компьютер по своей природе предсказуем. Программа, запущенная дважды с одинаковыми входными данными, даёт одинаковый результат — на этом строится вся вычислительная техника. Настоящая случайность внутри такой системы не возникает.
Поэтому её приходится брать снаружи, из физических процессов. Аппаратный источник измеряет то, что принципиально непредсказуемо: тепловой шум в полупроводнике, дрожание тактового генератора, дробовой шум. Такой блок — отдельная деталь схемы, и его наличие отличает серьёзное устройство от программы на телефоне.
Программный генератор устроен иначе. Он берёт исходное значение — время, серийный номер, состояние счётчиков — и разворачивает его в длинную последовательность, которая выглядит случайной. Выглядит, но не является: зная исходное значение, всю последовательность можно повторить. Именно так восстанавливали ключи в летнем инциденте — по серийному номеру устройства и состоянию его часов, без всякого доступа к самому кошельку.
Почему плохой генератор невозможно заметить
Вот свойство, которое делает эту категорию уязвимостей особенно неприятной. Устройство с испорченным источником случайности работает совершенно нормально: показывает адреса, принимает переводы, подписывает транзакции, проходит все проверки.
Сид-фраза из двенадцати слов выглядит точно так же независимо от того, откуда взялись эти слова. По внешнему виду набора слов определить качество источника нельзя в принципе — это не текст с орфографическими ошибками, а корректный результат неправильного процесса.
Обнаружение поэтому всегда приходит извне и с опозданием: либо от исследователя, изучившего исходный код, либо по факту массовых краж, когда кто-то замечает, что средства уходят с адресов, объединённых одной моделью устройства.
Мы приучили людей проверять не то. Пользователь сверяет адрес на экране, пересчитывает слова, прячет металлическую пластину в сейф — и всё это осмысленно ровно до тех пор, пока секрет действительно случаен. Вопрос «откуда ваш кошелёк берёт случайность» звучит как придирка теоретика, но именно он определяет, защищает вас криптография или просто аккуратно оформляет чужую предсказуемость.
Что может сделать владелец
Проверить качество генератора самостоятельно нельзя — это работа для исследователей с доступом к исходному коду. Зато можно выстроить защиту так, чтобы отказ одного источника случайности не означал потери средств.
- Добавьте собственную энтропию. Многие устройства позволяют дополнить машинную случайность броском игральных костей или собственной последовательностью. Это снимает зависимость от единственного источника.
- Используйте несколько подписей. В схеме с мультиподписью для перевода нужны подтверждения с разных устройств, желательно разных производителей: компрометация одного генератора тогда не открывает доступ к средствам.
- Следите за сообщениями производителя. Уязвимости такого рода раскрываются публично, и промежуток между раскрытием и массовыми кражами измеряется днями.
- Не переиспользуйте старый секрет. При любых сомнениях создавайте новую сид-фразу, а не переносите прежнюю на новое устройство.
- Разделяйте суммы. Основной запас на холодном хранении с независимой схемой, рабочие суммы отдельно.
Общая логика такая же, как в любой инженерии: если один элемент нельзя проверить, конструкция не должна зависеть от него целиком. Практические шаги по первичной настройке подробно разобраны в отдельном руководстве по аппаратным кошелькам.
Частые вопросы
Можно ли самому придумать сид-фразу+
Хватает ли двенадцати слов вместо двадцати четырёх+
Безопасность кошелька определяется не хранением ключа, а качеством случайности в момент его создания: вся дальнейшая цепочка преобразований детерминирована и слабость первого шага доносит до адреса без изменений. Проверить генератор самостоятельно владелец не может, а испорченный источник внешне неотличим от исправного — устройство работает нормально ровно до момента кражи. Отсюда практический вывод: не полагаться на единственный источник случайности, добавлять собственную энтропию и распределять доступ между несколькими независимыми устройствами.
Следите за тем, начнут ли производители публиковать независимый аудит генераторов случайных чисел, — вместе с остальными сдвигами, собранными в обзоре ключевых трендов рынка. Разборы по горячим следам — в закрытом канале ПРИВАТ.
0 комментариев к “Энтропия ключа: откуда кошелёк берёт случайность”
Добавить комментарий