Как кошельки OneKey генерируют твою сид-фразу и откуда берётся случайность

OneKeyTeam
/Обновлено 6 авг. 2026 г.
Как кошельки OneKey генерируют твою сид-фразу и откуда берётся случайность

Ключевые выводы

  • Безопасность кошелька начинается с энтропии — непредсказуемых случайных бит; сид-фраза лишь их читаемое кодирование.
  • Разные модели OneKey берут случайность из разных источников: THD89 SE TRNG у Pro, Classic 1S и Classic 1S Pure, ATECC608A SE TRNG у Classic и STM32 MCU TRNG у Mini.
  • Нашумевшая проблема связана с неверно настроенным Yasmarang PRNG в libngu, который в обход TRNG чипа; пути создания кошелька в OneKey этот код не используют.
  • Прошивки OneKey не зависят от libngu, Coinkite, Coldcard или CKCC и реально обращаются к аппаратному TRNG либо TRNG защищённого элемента — это подтверждено несколькими раундами аудита.
  • SHA-256 в BIP39 считает только контрольную сумму и не является генератором случайных чисел; надёжность фразы держится исключительно на исходной энтропии.

Эта статья показывает, как каждая модель OneKey получает энтропию и сид-фразу при создании нового кошелька, и почему недавние опасения вокруг некоторых программных реализаций ГСЧ не относятся к путям создания кошелька в OneKey.

Безопасность кошелька начинается со случайности, которую никто не сможет предсказать

Безопасность кошелька начинается с одной вещи — энтропии: непредсказуемых случайных бит, из которых он создаётся. Сид-фраза — это всего лишь читаемое человеком кодирование этой энтропии. Если в момент создания энтропия предсказуема, то ничто из того, что ты добавишь потом — PIN, место хранения фразы, способ деривации адресов — уже не исправит ситуацию.

Разные модели OneKey берут случайность не из одного и того же места. Ниже — точно, откуда на каждом устройстве приходит энтропия, стоящая за твоей сид-фразой.

МодельЧто происходит при создании нового кошелька
ProСлучайность даёт THD89 SE TRNG; MCU кодирует BIP39 / SLIP39
Classic 1SСлучайность даёт THD89 SE TRNG; MCU кодирует фразу BIP39
Classic 1S PureСлучайность даёт THD89 SE TRNG; MCU кодирует фразу BIP39
ClassicСлучайность даёт ATECC608A SE TRNG; MCU кодирует фразу BIP39
MiniСлучайность даёт STM32 MCU TRNG; MCU кодирует фразу BIP39

Проблема, попавшая в новости, восходит к неверно настроенному Yasmarang PRNG в libngu, где некоторые сборки в итоге обходили TRNG чипа. Соответствующие пути прошивки OneKey не используют libngu, Coinkite, Coldcard или какую-либо зависимость CKCC, и несколько раундов аудита подтверждают, что они действительно обращаются к аппаратному TRNG или TRNG защищённого элемента. Ниже разбираем устройство за устройством, какой именно аппаратный интерфейс случайности использует каждое из них.

Что такое энтропия и почему без неё кошельку не жить?

Представь энтропию как измеримое количество непредсказуемости, обычно измеряемое в битах. 128 бит энтропии означают 2^128 возможных стартовых значений; если нет какого-то другого изъяна, атакующему остаётся только гадать. Твои приватные ключи, твои адреса и твоя способность подписывать транзакции детерминированно выводятся из этого единственного стартового секрета.

Поэтому надёжность сид-фразы идёт не от того, что дюжина английских слов «выглядит внушительно». Она идёт от того, насколько непредсказуема сырая энтропия, стоящая за ними:

  • 128 бит энтропии → 12 слов BIP39;
  • 192 бита энтропии → 18 слов BIP39;
  • 256 бит энтропии → 24 слова BIP39.

Слабая случайность позволяет атакующему воспроизвести входные данные с момента создания твоего кошелька и выйти ровно на ту же фразу и приватный ключ. Никакой объём SHA-256, защита PIN-кодом или хранение в защищённом элементе не превратят предсказуемый вход в по-настоящему непредсказуемую энтропию.

От случайного числа к сид-фразе: как на самом деле работает математика

Детали отличаются от модели к модели, но у любого кошелька BIP39 одна и та же вычислительная модель:

Аппаратный генератор истинно случайных чисел (TRNG)
        ↓
Взять 128 / 192 / 256 бит энтропии (ENT)
        ↓
Взять первые ENT / 32 бита SHA-256(ENT) как контрольную сумму (CS)
        ↓
Разбить ENT || CS на группы по 11 бит, сопоставить каждую с одним из 2048 слов BIP39
        ↓
12 / 18 / 24 слова → seed → приватные ключи, адреса и ключи подписи

Например, фраза из 12 слов использует 128 бит энтропии плюс 4-битную контрольную сумму — итого 132 бита, которые ровно делятся на 12 групп по 11 бит. Каждая группа — это индекс в списке слов BIP39.

Шаг SHA-256 здесь лишь вычисляет контрольную сумму BIP39; это не генератор случайных чисел. Случайность фразы по-прежнему целиком опирается на сырую энтропию, захваченную в момент создания.

Так почему же реализация OneKey не затронута проблемой ColdCard? Ниже разбираем устройство за устройством, как получается первоначальное случайное число каждой модели и попадает ли оно вообще в затронутый участок кода.


OneKey Pro

OneKey ProOneKey Pro

Затронута ли модель?

Нет — проблема ColdCard libngu / Yasmarang её не касается. Текущая сборка Pro по умолчанию включает THD89. Когда ты создаёшь кошелёк на устройстве, TRNG THD89 даёт случайный вход, а прошивка выполняет последующее кодирование BIP39 или SLIP39.

Как это генерируется

THD89 TRNG → энтропия инициализации кошелька → прошивка кодирует BIP39 или SLIP39.

У Pro random.bytes() по умолчанию использует source=1, что при сборке по умолчанию с USE_THD89=1 вызывает se_random_encrypted().

Замечания о случайности

  • Сборка Pro по умолчанию включает THD89, и случайные байты приходят из se_random_encrypted() — а не из программного пути PRNG Yasmarang или libngu.
  • По данным Справочного центра OneKey, TRNG в современном защищённом элементе EAL6+ основывает свою случайность на физических процессах, таких как электронный шум.

OneKey Classic 1S

OneKey Classic 1SOneKey Classic 1S

Затронута ли модель?

Нет — проблема ColdCard libngu / Yasmarang её не касается. Текущий, публично доступный процесс создания на устройстве Classic 1S берёт энтропию из TRNG защищённого элемента THD89, а строку фразы BIP39 кодирует прошивка MCU.

Как это генерируется

THD89 TRNG → 128 / 192 / 256 бит энтропии → MCU кодирует фразу BIP39.

Замечания о случайности

  • Говорить «фразу генерирует THD89» не совсем точно: THD89 поставляет случайный вход, а кодирование слов BIP39 происходит в прошивке MCU.
  • Прошивка вызывает интерфейс se_random_encrypted() THD89 и не использует Yasmarang или libngu. По данным Справочного центра OneKey, TRNG в современном защищённом элементе EAL6+ вырабатывает случайность из физических процессов, таких как электронный шум.

OneKey Classic 1S Pure

OneKey Classic 1S PureOneKey Classic 1S Pure

Затронута ли модель?

Нет — проблема ColdCard libngu / Yasmarang её не касается. Публичный код не выделяет для Classic 1S Pure отдельную ветку генерации энтропии; она использует ту же кодовую базу firmware-classic1s, что и Classic 1S. Поэтому, когда ты создаёшь кошелёк, энтропия Pure тоже приходит из TRNG THD89 и кодируется в фразу BIP39 силами MCU.

Проверенный процесс

THD89 TRNG → 128 / 192 / 256 бит энтропии → MCU кодирует фразу BIP39.

То, что Pure — устройство без батареи, не меняет этот публичный путь создания.

Замечания о случайности

  • Не думай, что у Pure другой механизм энтропии только потому, что она продаётся как отдельная модель.
  • Как и у Classic 1S, публичный код создания вызывает интерфейс случайности THD89 и не использует Yasmarang или libngu.

OneKey Classic

OneKey ClassicOneKey Classic

Затронута ли модель?

Нет — проблема ColdCard libngu / Yasmarang её не касается. На пути прошивки Classic с включённым защищённым элементом именно SE поставляет случайный материал, используемый для создания кошелька, а MCU превращает его в фразу BIP39.

Как это генерируется

SE поставляет случайный материал → первые 32 байта берутся как энтропия → MCU кодирует фразу BIP39.

Замечания о случайности

  • Этот путь получает случайный материал через интерфейсы инициализации и экспорта SE и не вызывает реализацию ГСЧ Yasmarang или libngu — поэтому он никогда не попадает в обсуждаемый затронутый участок кода.
  • Публичный код не позволяет для каждой партии Classic по отдельности точно определить модель SE и её сертификацию. Описывая это публично, ориентируйся на документацию чипа конкретной партии, а не переноси сертификацию другой модели на Classic.

OneKey Mini

OneKey MiniOneKey Mini

Затронута ли модель?

Нет — проблема ColdCard libngu / Yasmarang её не касается. Процесс создания на устройстве Mini берёт энтропию из аппаратного генератора случайных чисел MCU STM32, а затем MCU кодирует её в фразу BIP39.

Как это генерируется

STM32 MCU TRNG → 128 / 192 / 256 бит энтропии → MCU кодирует фразу BIP39.

В более старой прошивке Mini random32() напрямую читает периферию RNG STM32 и отбрасывает подряд идущие одинаковые выходы. Процесс создания на устройстве использует именно эту случайность для генерации фразы.

Замечания о случайности

  • MCU напрямую читает аппаратную периферию RNG STM32, а прошивка ещё и отбрасывает подряд идущие одинаковые выходы. Этот путь не использует Yasmarang или libngu.

Советы по безопасности для пользователей

  • Откуда бы ни бралась энтропия, стоит сид-фразе утечь — и восстановить кошелёк сможет кто угодно. Сделать её резервную копию офлайн и без ошибок — всегда твоя ответственность.
  • Если сид-фраза потеряна, ни устройство, ни приложение, ни производитель не восстановят её за тебя.

Дополнительные материалы и источники

Защитите свое криптопутешествие с OneKey

View details for Магазин OneKeyМагазин OneKey

Магазин OneKey

Самый продвинутый аппаратный кошелек в мире.

View details for Загрузить приложениеЗагрузить приложение

Загрузить приложение

Торгуйте глобальными активами. Начните за несколько минут, используя только email.

View details for OneKey SifuOneKey Sifu

OneKey Sifu

Ясность в криптовалюте — на расстоянии одного звонка.

Читать дальше