Сид-фраза это 12 или 24 обычных английских слова, в которых зашит ключ от криптокошелька целиком.

У кого фраза, у того и деньги: не нужен ни пароль, ни телефон, ни само приложение кошелька. Ниже, как она устроена, почему последнее слово нельзя выбрать самому, почему фразу, созданную на странице в интернете, нельзя использовать под реальные деньги, и как её хранить, чтобы одновременно не потерять и не отдать.

  ЧТО ТАКОЕ СИД-ФРАЗА

  12 или 24 слова из словаря на 2048
       └─ внутри: случайный ключ
       └─ последнее слово: проверка
  [!] фраза = кошелёк целиком
      без пароля и без телефона

Как она устроена

Стандарт называется BIP-39. Кошелёк берёт случайное число, 128 бит для двенадцати слов или 256 для двадцати четырёх, и переводит его в слова из фиксированного словаря на 2048 слов. Каждое слово кодирует 11 бит, поэтому по словам можно однозначно восстановить число, а из числа кошелёк выводит все свои ключи и адреса.

Последнее слово не произвольное. В хвост к случайному числу дописывается контрольная сумма (несколько бит от SHA-256 того же числа, проверка на опечатку), и последнее слово содержит именно её. Поменяйте любое слово, и сумма перестанет сходиться, так кошелёк понимает, что вы ошиблись при вводе. Проверить свою фразу на опечатку можно здесь: проверка сид-фразы, сумма считается в браузере, слова никуда не уходят.

Двенадцать слов или двадцать четыре: разница в запасе, а не в безопасности на практике. 128 бит случайности уже вне досягаемости любого перебора. Двадцать четыре берут там, где важны требования регламентов и запас на будущее. Настоящая опасность не в длине фразы, а в том, где она записана.

Почему нельзя генерировать в браузере

Инструмент на нашей странице умеет сгенерировать фразу, и первое, что он говорит: под реальные деньги её использовать нельзя. Не потому, что мы что-то отправляем, страница ничего никуда не отправляет. А потому, что рядом с ней в браузере работают расширения, синхронизация буфера обмена, автозаполнение, и чужие глаза за спиной. Любое из этого может увидеть слова на экране. Фраза, которую кто-то увидел один раз, скомпрометирована навсегда, её не сменишь, как пароль.

Для настоящего кошелька фразу генерирует аппаратный кошелёк (отдельное устройство, из которого ключ никогда не выходит наружу) или приложение кошелька на устройстве без интернета. Наш генератор нужен, чтобы понять, как это устроено, и проверить контрольную сумму уже существующей фразы.

Как хранить: две противоположные опасности

У хранения сид-фразы есть противоречие. Одна копия теряется: залил, сгорело, выбросили при переезде. Много копий, и каждая лишний риск: каждая может попасть не в те руки, а фраза целиком в любой из них.

Простые правила, которые закрывают большую часть случаев:

  • На бумаге или металле, не в файле. Файл лежит в облаке, в бэкапе, в буфере обмена, и утекает, когда утекает устройство. Скриншот фразы в галерее это самый частый способ её потерять.
  • Не в одном месте с устройством. Если телефон и листок с фразой лежат в одной сумке, сумку достаточно украсть один раз.
  • Не в мессенджере «самому себе». Это тот же файл в облаке, только с иллюзией приватности.
  • Не перепечатывать в сервисы, которые просят «подтвердить фразу». Кошелёк спрашивает фразу один раз при восстановлении. Всё остальное, что просит ввести фразу, это кража.
  ГДЕ ФРАЗЕ НЕ МЕСТО

  файл на компьютере     утекает с бэкапом
  скриншот в галерее     утекает с облаком
  «сообщение себе»       то же облако
  рядом с телефоном      крадут одну сумку
  сайт «подтвердите»     это кража
     └─ бумага, отдельно от
        устройства, в двух местах

Как разделить, чтобы ни одна копия не была опасна

Есть способ обойти противоречие «одна копия теряется, много копий опасны»: разрезать секрет так, чтобы любые нужные K частей собирали его обратно, а меньшее число не говорило о нём ничего. Это схема Шамира, ей больше сорока лет, и это математическое свойство, а не обещание.

Работает так. Разделите фразу на части, например на три с порогом два. Три части у трёх близких людей или в трёх местах. Любые две восстанавливают фразу целиком. Одна часть, украденная или найденная, не даёт ничего: даже длину исходного текста по ней не узнать с уверенностью. Потерялась одна, вы всё ещё восстановите по двум оставшимся.

Чем это лучше, чем просто разрезать фразу на три куска по четыре слова: кусок обычной фразы это уже часть ответа. Имея восемь слов из двенадцати, остальные четыре перебирают. Здесь часть по отдельности не содержит информации о секрете.

Одна ловушка: порог, равный числу частей, опасен. Три из трёх значит, что потеря любой части это потеря секрета навсегда. Для дома обычно берут три части и порог два. Всё считается в браузере, ни секрет, ни части никуда не отправляются, и то же предупреждение, что выше: делить настоящую фразу на странице в интернете стоит только на устройстве, которому вы доверяете, без лишних расширений.

Как я бы делал

Скажу прямо. Фразу от настоящего кошелька я бы сгенерировал на аппаратном устройстве, записал на бумагу дважды и положил в два разных места, не там, где живёт телефон. Если сумма такая, что потерять страшно, а доверить одному человеку тоже, разделил бы на три части с порогом два и раздал бы части людям, которые друг с другом не общаются. И никогда, ни в каком виде, не хранил бы её в файле.

  ХРАНЕНИЕ, КОРОТКО

  [ ] сгенерирована не в браузере
  [ ] на бумаге, не в файле
  [ ] две копии в двух местах
  [ ] отдельно от устройства
  [ ] большая сумма: три части, порог два
      └─ фразу не сменить, как пароль

Что фраза не решает

Фраза не защищает от того, что вы сами введёте её на поддельном сайте. Никакая схема хранения не поможет, если попросили «подтвердить фразу», и вы подтвердили. Это самый частый способ потерять всё, и он не технический.

И фраза не имеет отношения к тому, видит ли кто-то ваши переводы. Адреса и транзакции в блокчейне публичны, фраза охраняет только право ими распоряжаться. Как проверить, дошёл ли перевод, и почему монеты «пропадают» в другой сети, отдельная тема, а как безопасно передать саму фразу или её часть другому человеку, разобрано в статье как передать пароль или файл, чтобы их не перехватили.

Если вы нашли старую фразу и не понимаете, что с ней делать, спросите нейросеть, но не вводите саму фразу.

Промт для нейросети
Помоги разобраться с сид-фразой. Саму фразу
я не покажу и вводить никуда не буду.

Сколько слов: (12 / 24 / другое).
Откуда она: (мой старый кошелёк / нашёл /
дали).
Где хранится сейчас: (бумага / файл / скриншот /
мессенджер).

Скажи, как проверить, что фраза целая, не
раскрывая её, как её хранить дальше и что
нельзя делать ни в коем случае.

Коротко

Сид-фраза это кошелёк целиком в 12 или 24 словах, последнее слово проверяет остальные. Генерировать её на веб-странице под реальные деньги нельзя: не из-за отправки, а из-за всего, что видит экран. Хранить на бумаге, в двух местах, отдельно от устройства. Большую сумму разделить по Шамиру: три части, порог два, и ни одна часть по отдельности ничего не значит.