SLIP-39 и BIP39: чем схема Шамира отличается от обычной сид-фразы
SLIP-39 — это стандарт резервной копии по схеме Шамира: он может разделить главный секрет кошелька на несколько списков слов — долей — так, что кошелёк восстанавливает заданное их число, например любые 2 из 3, а меньшее число долей ничего о секрете не раскрывает. BIP39 записывает секрет одной сид-фразой из 12–24 слов. У стандартов разные списки слов, контрольные суммы и способ получения сида, поэтому копию SLIP-39 восстановит только кошелёк с его поддержкой, а превратить её в сид-фразу BIP39 того же кошелька нельзя. Ниже — сравнение стандартов, что означают слова доли, пример схемы 2 из 3, кошельки с поддержкой SLIP-39 и что выбрать. Если вы впервые слышите о BIP39, начните со статьи что такое сид-фраза.
SLIP-39 и BIP39 в одной таблице
Павол Руснак и Марек Палатинус из SatoshiLabs — соавторы обоих стандартов: BIP39, описанного в 2013 году, и SLIP-39, созданного в декабре 2017 года и сейчас имеющего статус Final. SLIP-39 задуман главным образом как замена BIP39, и по большей части стандарты несовместимы.
| BIP39 | SLIP-39 | |
|---|---|---|
| Список слов | 2048 слов, 10 официальных языков | 1024 слова, только английский |
| Бит на слово | 11 | 10 |
| Длина | 12, 15, 18, 21 или 24 слова | 20 слов (секрет 128 бит) или 33 слова (256 бит) в каждой доле; обе длины обязана поддерживать любая реализация |
| Контрольная сумма | 4–8 бит в последнем слове | Последние 3 слова (RS1024) |
| Разделение | Нет, одна фраза | До 16 групп по 16 долей, у каждой свой порог |
| Сид кошелька | PBKDF2-HMAC-SHA512 от слов, 2048 итераций: 64 байта | Сам главный секрет: 16 или 32 байта |
| Парольная фраза | Любой текст в Юникоде | Только печатные символы ASCII |
| Поддержка | Большинство кошельков | Trezor и ещё несколько кошельков |
Случайная ошибка в одном слове проходит проверку BIP39 примерно в одном случае из 16 во фразе из 12 слов (в одном из 256 — во фразе из 24), а три проверочных слова SLIP-39 гарантированно ловят любую ошибку, затронувшую до трёх слов, и пропускают более крупные реже чем раз на миллиард. Проверка сид-фразы считает контрольную сумму BIP39, а при длине 20 или 33 слова сообщает, что перед ней доля SLIP-39, а не фраза с опечатками.
Слова SLIP-39 длиной от 4 до 8 букв, первые четыре буквы у каждого свои, а 553 слова из 1024 есть и в английском списке BIP39, так что на первый взгляд доля похожа на сид-фразу. Выдаёт её число слов, а у доли с одной группой — ещё и третье слово academic, которого в списке BIP39 нет.
Как работает SLIP-39
Доли, порог и группы
Схема разделения секрета, которую в 1979 году предложил Ади Шамир (Википедия), хранит секрет как значение случайного многочлена, а долям раздаёт другие его значения: любые T долей восстанавливают секрет, меньшее число не говорит о нём ничего. SLIP-39 фиксирует все детали, вплоть до арифметики в поле GF(256), чтобы доли, созданные одним кошельком, восстанавливались в другом. Каждая копия устроена в два уровня:
- Доли участников. Схема «T из N», например 2 из 3, внутри группы. Обычную копию «T из N» делают одной группой, как и рекомендует спецификация.
- Группы. Необязательный порог групп поверх. В примере из спецификации кошелёк восстанавливают любые 2 группы из 4: две группы по одной доле хранит сам владелец, друзья составляют группу «3 из 5», а родственники — «2 из 6». Даже все шестеро родственников не восстановят секрет без трёх друзей или одной из долей владельца.
Простейший случай — одна доля: схема «1 из 1» в одной группе, которой пользуются как обычной сид-фразой. Группу с порогом 1 спецификация советует составлять из одной доли: несколько долей «1 из N» отличаются только номером и контрольной суммой и защиты не добавляют.
Что означают слова доли
Доля — это строка бит, разрезанная на 10-битные слова. В доле из 20 слов:
| Слова | Что в них |
|---|---|
| 1–2 | Случайный 15-битный идентификатор, флаг расширяемой копии, показатель числа итераций |
| 3–4 | Номер группы, порог групп, число групп, номер доли, порог долей |
| 5–17 | Значение доли: 128 бит и 2 бита выравнивания |
| 18–20 | Контрольная сумма RS1024 |
В доле из 33 слов значение занимает слова 5–30: 256 бит и 4 бита выравнивания. Три признака видны на глаз:
- Слова 1 и 2 совпадают у всех долей одной копии. Доли, которые начинаются по-разному, не сложить.
- Слово 3 совпадает у долей одной группы.
- У копии из одной доли слова 3 и 4 — всегда academic academic: все поля групп и долей в них нулевые, а academic — нулевое слово списка. На этот же признак указывает Trezor. Так начинается официальный тестовый вектор:
duckling enlarge academic academic agency result ….
Парольная фраза и шифрование
Перед разделением SLIP-39 шифрует главный секрет парольной фразой (или пустой строкой) — четырёхраундовой сетью Фейстеля на основе PBKDF2-HMAC-SHA256. Показатель e задаёт объём работы: 10 000 × 2ᵉ итераций; прошивка Trezor использует e = 1, то есть 20 000. Как и у парольной фразы BIP39, правильность ничем не проверяется: любая парольная фраза расшифровывает какой-то действительный секрет, поэтому опечатка без всякой ошибки открывает другой, пустой кошелёк. Спецификация допускает только печатные символы ASCII с кодами от 32 до 126, так что кириллица в парольной фразе SLIP-39 недопустима.
Расширяемые копии
В мае 2024 года в спецификацию добавили флаг расширяемой копии (история изменений). Если он установлен, идентификатор больше не участвует в шифровании, поэтому тот же главный секрет с той же парольной фразой можно заново разделить на новый набор долей с новым идентификатором. Trezor пользуется этим с июня 2024 года: к копии из одной доли (Single-share Backup) позже можно добавить копию из нескольких долей (Multi-share Backup) того же кошелька, не переводя средства, — в Trezor Suite это «Настройки» → «Устройство» (Settings → Device), пункт Create Multi-share Backup. Старая копия при этом остаётся действительной и по-прежнему восстанавливает кошелёк одна; Trezor советует уничтожать её, только убедившись, что новая работает (Trezor). Доли из разных наборов между собой не складываются. Контрольную сумму расширяемых долей считают со строкой shamir_extendable вместо shamir, поэтому программы, написанные до этой правки, такие доли отвергают.
Пример: схема 2 из 3
Допустим, восстановить кошелёк должны любые два места из трёх: домашний сейф, банковская ячейка и дом родственника.
- Создание. Аппаратный кошелёк создаёт случайный 128-битный секрет и делит его по схеме 2 из 3 в одной группе. Каждую из трёх долей по 20 слов вы записываете на отдельную карточку.
- Как узнать доли. Все три карточки начинаются с одних и тех же двух слов. Третье слово на каждой — academic, потому что группа одна, а четвёртые различаются: в них номер доли и порог 2.
- Раздача. Карточки расходятся по трём местам. Вор, нашедший домашнюю карточку, не восстановит кошелёк и ничего не узнает о секрете.
- Потеря одной доли. Если дом сгорит, кошелёк восстановят две другие карточки, введённые в любом порядке: устройство проверит контрольную сумму каждой, восстановит зашифрованный секрет, сверит записанный в долях дайджест и расшифрует секрет парольной фразой. После этого создайте новый набор. Если карточку украли, а не уничтожили, надёжнее перевести средства в новый кошелёк: новый набор не отменяет старые карточки.
- Восстановление без устройства. То же сделает любой кошелёк с поддержкой SLIP-39; порядок действий — в статье как восстановить кошелёк по сид-фразе.
Как это выглядит, показывают официальные тестовые векторы, на которые ссылается спецификация. Вектор 4 — публичный набор 2 из 3 с парольной фразой TREZOR — приводит доли 1 и 3:
доля 1: shadow pistol academic acid actress prayer class unknown …
доля 3: shadow pistol academic always adequate wildlife fancy gross …
Здесь acid кодирует долю 1 с порогом 2, а always — долю 3; неопубликованная доля 2 начиналась бы словами shadow pistol academic agency. Вместе две доли дают 16-байтный главный секрет b43ceb7e57a0ea8766221624d01b0864. Эти доли опубликованы, поэтому никогда не храните на них средства.
Почему долю SLIP-39 нельзя превратить в сид-фразу BIP39
Стандарты превращают слова в кошелёк противоположными способами. В BIP39 слова — входные данные: фраза и парольная фраза проходят через PBKDF2-HMAC-SHA512 с 2048 итерациями, и 64-байтный результат становится сидом BIP32. В SLIP-39 сидом служит сам главный секрет: спецификация требует, чтобы кошельки использовали его напрямую как главный сид BIP32, — 16 байт за долями из 20 слов и 32 байта за долями из 33 слов. Отсюда, как поясняет спецификация, два следствия:
- Из SLIP-39 в BIP39 — невозможно. Фраза BIP39 всегда даёт 64-байтный сид через одностороннюю функцию: по сиду фразу не вычислить, и никакая фраза не даст 16- или 32-байтного сида, который стоит за долями.
- Из BIP39 в SLIP-39 — только доли по 59 слов. 512-битный сид BIP39 разделить можно, но каждая доля займёт 59 слов, а если с одной фразой использовались разные парольные фразы, перенести удастся только один из кошельков. Авторы стандарта и Trezor советуют вместо этого перевести средства в новый кошелёк со SLIP-39.
Разделить вместо сида энтропию фразы — то самое случайное число, из которого по BIP39 получаются слова (это показывает страница как работает BIP39), — тоже не выйдет: кошелёк SLIP-39 возьмёт эти байты как сид и откроет другой кошелёк. Вот как это выглядит на публичной тестовой фразе; не отправляйте средства ни на один из этих адресов:
abandon abandon … about (публичная тестовая фраза BIP39)
энтропия 00000000000000000000000000000000 (16 байт)
сид BIP39 5eb00bbddcf069084889a8ab91555681… (64 байта)
m/84'/0'/0'/0/0 bc1qcr8te4kr609gcawutmrza0j4xv80jy8z306fyu
те же 16 байт как главный секрет SLIP-39, пустая парольная фраза
m/84'/0'/0'/0/0 bc1qsqs4ja3sm84vhtc7k3palld0nwga7tf47azjsq
После сида оба вида кошельков выводят ключи одинаково — по BIP32 и тем же путям деривации.
Какие кошельки восстанавливают SLIP-39
Каждая строка проверена по руководствам, заметкам к выпускам или исходному коду проекта в октябре 2026 года. Пользуйтесь актуальными версиями: старые не принимают расширяемые доли, которые Trezor создаёт с середины 2024 года.
| Кошелёк | Тип | Поддержка SLIP-39 |
|---|---|---|
| Trezor Safe 3, Safe 5, Safe 7, Model T | Аппаратный | Создаёт и восстанавливает копии из одной и из нескольких долей |
| Electrum | Компьютер | Восстанавливает доли (тип SLIP39) с версии 4.1.5, расширяемые — с 4.5.5 (заметки к выпускам); в приложении для Android такого типа нет (исходный код) |
| Sparrow | Компьютер | Восстанавливает доли с версии 2.0.0 |
| BlueWallet | Телефон | Импортирует доли, по одной на строку (исходный код) |
| Wasabi | Компьютер | Создаёт и восстанавливает копии из нескольких долей с версии 2.6.0 |
| Rabby | Расширение браузера, сети EVM | Импортирует доли SLIP-39 с паролем и без (исходный код) |
| Keystone 3 Pro | Аппаратный | Создаёт доли и импортирует доли из 20 или 33 слов |
| OneKey Pro | Аппаратный | Создаёт и восстанавливает доли из 20 слов с версии 4.15.0 |
Кошелёк, который знает только BIP39, долю не восстановит: 20 и 33 слова — недопустимые для BIP39 длины, а 471 из 1024 слов SLIP-39 в его списке нет. Парольную фразу SLIP-39 принимают Trezor, Electrum, Sparrow, BlueWallet и Rabby.
Что по умолчанию создаёт Trezor
Формат копии зависит от модели и от того, когда устройство настраивали (руководство Trezor):
| Модель | Копия по умолчанию | SLIP-39 |
|---|---|---|
| Model One | BIP39, 24 слова | Не поддерживается |
| Model T | BIP39, 12 слов | По выбору |
| Safe 3, настроенный до июня 2024 года | BIP39, 12 слов | По выбору |
| Safe 3, настроенный с июня 2024 года | SLIP-39 из одной доли, 20 слов | По умолчанию |
| Safe 5, Safe 7 | SLIP-39 из одной доли, 20 слов | По умолчанию |
Другой формат можно выбрать при создании кошелька в Trezor Suite, в списке Backup format, а к кошельку с расширяемой копией SLIP-39 позже добавить новые копии из одной или нескольких долей. Кошельку с копией BIP39 или с копией SLIP-39, созданной до июня 2024 года, для перехода нужен новый кошелёк и перевод средств.
Чем SLIP-39 лучше деления фразы на части и чем отличается от мультиподписи
Разрезать фразу BIP39 на части — плохая замена: в каждой части настоящие слова. Если разложить 12 слов на три листа по 8 так, чтобы любые два листа давали фразу целиком, вору с одним листом останется перебрать около 2⁴⁰ — примерно 1,1 триллиона — вариантов вместо 2¹²⁸. Для 24 слов лист из 16 слов оставляет 2⁸⁰ вариантов. Доли SLIP-39 числом меньше порога не раскрывают о секрете ничего.
Мультиподпись делит другое — право тратить, а не резервную копию:
| Слова, разделённые вручную | SLIP-39, несколько долей | Мультиподпись 2 из 3 | |
|---|---|---|---|
| Одна украденная часть | Сужает перебор | Ничего не раскрывает | Ничего не потратит |
| Тратит одно устройство | Да | Да | Нет |
| Что ещё хранить | Ничего | Ничего | Дескриптор: порог и публичные ключи всех участников |
| Где восстановить | В любом кошельке BIP39 | В кошельках с SLIP-39 | В кошельках с мультиподписью |
SLIP-39 защищает резервную копию, мультиподпись — ещё и траты. Способы сочетаются: долями SLIP-39 можно сохранить один из ключей мультиподписи.
Что выбрать
- BIP39 — если важна совместимость с любым кошельком и хватает одной фразы в одном надёжном месте; против того, кто найдёт слова, добавьте парольную фразу. Работающий кошелёк BIP39 переносить незачем, если доли вам не нужны.
- SLIP-39 из одной доли — если ваш Trezor создаёт такую копию по умолчанию. Она хранится как одна фраза, контрольная сумма у неё надёжнее, и позже её можно разделить на доли, не переводя средства, но восстанавливает её меньше кошельков.
- SLIP-39 из нескольких долей — если ни одно место не должно в одиночку ни потерять, ни выдать кошелёк, или для наследования, когда наследники вместе хранят пороговое число долей. Запишите порог и каким кошельком созданы доли.
- Мультиподпись — для крупных сумм, когда ни одно устройство не должно тратить в одиночку, если вы готовы обслуживать несколько устройств и их копии.
- Никогда не делите фразу BIP39 на части вручную.
Каждую долю храните как сид-фразу: офлайн, на бумаге или металле, не фотографируйте и не держите в облаке или мессенджерах; подробнее — в статье как хранить сид-фразу. Доли не нужны ни службе поддержки, ни «сервису восстановления»: тот, кто их просит, хочет забрать средства.
Частые вопросы
Можно ли восстановить 20 слов Trezor в кошельке BIP39?
Нет. Доля SLIP-39 из 20 слов — не фраза BIP39, и превратить её в такую фразу нельзя. Восстановите её на Trezor или в другом кошельке из таблицы выше. Если кошелёк пишет «неверная сид-фраза», разобраться с форматом поможет статья неверная сид-фраза.
Надёжнее ли доля из 20 слов, чем фраза из 12?
Секрет у них одинаковый — 128 бит. Лишние слова несут идентификатор, параметры долей и более длинную контрольную сумму. Доля из 33 слов хранит 256 бит, как фраза из 24 слов; что дают дополнительные биты, разобрано в статье 12 или 24 слова.
Что будет, если потерять больше долей, чем допускает порог?
Копия больше не восстановит кошелёк. Если устройство ещё работает, сразу переведите средства в новый кошелёк с новой резервной копией.
Нужна ли каждой доле своя парольная фраза?
Нет. Парольная фраза относится к секрету, который восстанавливают доли, а не к отдельной доле, поэтому одна парольная фраза действует на весь набор; неверная откроет другой, пустой кошелёк.
Можно ли записать доли SLIP-39 русскими словами?
Нет. Локализацию спецификация не поддерживает: список слов один, английский. Записывайте слова точно, латиницей, и отмечайте, что это доля SLIP-39, а не фраза BIP39: многие слова есть в обоих списках.