146 / 691SLIP39

SLIP-39

Пороговые словесные доли для резервирования секрета

SLIP-39 хранит секрет в словесных долях с порогами групп и участников; восстановление определяет правильная комбинация, а не число бумажек.

SLIP-39 — спецификация SatoshiLabs для совместимых словесных долей на основе Shamir's Secret Sharing. Она стандартизирует разделение, метаданные, проверку ошибок и passphrase; доли не взаимозаменяемы с фразой BIP 39.

При резервировании кошелька BIP 32 главным секретом служит его входной seed, а не расширенный приватный корень. Сначала создаётся encrypted master secret (EMS), затем его доли. Вычисления идут побайтово в GF(256); спецификация хранит секрет в f(255), а при пороге не ниже 2 — проверочный дайджест в f(254). [SLIP-0039 — Shamir Secret-Sharing for Mnemonic Codes] [BIP 32 — Hierarchical Deterministic Wallets]

Сначала должен выполняться порог участников каждой нужной группы, затем порог групп. Пример: 2 из 3 групп, каждая 2 из 3 участников. Двух долей из A и двух из B достаточно; трёх из A и одной из B нет, хотя их тоже четыре. Простая схема 2 из 3 использует одну группу. [SLIP-0039 — Shamir Secret-Sharing for Mnemonic Codes]

Словарь содержит 1024 английских слова и не переводится вместе с интерфейсом. Секрет на 128 бит даёт доли по 20 слов, на 256 — по 33. Доля содержит также идентификатор, флаг extendable, показатель итераций, индексы и пороги. При объединении проверяют совпадение метаданных и уникальность индексов участников; две копии одной доли не являются двумя участниками. [SLIP-0039 — Shamir Secret-Sharing for Mnemonic Codes]

Последние три слова образуют RS1024, гарантированно обнаруживающий ошибки не более чем в трёх словах. Они не подтверждают происхождение или полномочия владельца; спецификация не рекомендует автоматическое исправление. Дайджест реконструкции помогает обнаружить неверный набор. Из-за его 32-битовой проверки идеальное утверждение о нулевой утечке ниже порога нельзя безоговорочно переносить на SLIP-39. [SLIP-0039 — Shamir Secret-Sharing for Mnemonic Codes]

Шифрование использует четыре раунда Feistel с PBKDF2-HMAC-SHA256, по 2500×2^e итераций. Спецификация разрешает печатные ASCII 32–126 и пустую строку без passphrase. Правильность passphrase напрямую не проверить: другая даёт другой главный секрет. Поэтому корректные доли не подтверждают нужный кошелёк; проверьте его известные адреса. [SLIP-0039 — Shamir Secret-Sharing for Mnemonic Codes]

BIP 39 имеет другой словарь, контрольную сумму и преобразование фразы в seed. Распределить его слова между бумажками — не значит создать SLIP-39 или его пороговую защиту. Сохранение кошелька при миграции потребовало бы правильного BIP 32 seed и контекста вывода; простое перекодирование исходной энтропии другими словами этого не гарантирует. Проверьте конкретную поддерживаемую процедуру. [SLIP-0039 — Shamir Secret-Sharing for Mnemonic Codes] [BIP 39 — Mnemonic code for generating deterministic keys]

Флаг extendable со значением 1 исключает идентификатор из соли шифрования. Это позволяет заново разделить тот же EMS с новым идентификатором без знания passphrase. Trezor описывает расширение совместимой однодолевой копии до нескольких долей. Новый набор не отменяет старый: достаточная исходная комбинация по-прежнему восстановит тот же секрет. [SLIP-0039 — Shamir Secret-Sharing for Mnemonic Codes] [Trezor — Multi-share Backup]

SLIP-39 при восстановлении собирает один секрет; он не создаёт Multisig или on-chain одобрение каждой транзакции. Размещение должно ограничивать совместную потерю и получение достаточной комбинации злоумышленником. Испытайте восстановление на доверенном устройстве, сохраните passphrase и контекст кошелька, проверьте совместимость эталонной реализацией и тестовыми векторами. Одного количества долей недостаточно. [SLIP-0039 — Shamir Secret-Sharing for Mnemonic Codes] [Trezor — python-shamir-mnemonic reference implementation]

Для полной картины прочитайте эту статью вместе с Shamir Secret Sharing, BIP 39, Trezor, Multisig, HD Wallet. На эту статью также ссылаются BIP 39, Pavol “Stick” Rusnák, Shamir Secret Sharing.

DOC · 001SLIP-0039 — Shamir Secret-Sharing for Mnemonic CodesСпецификация ↗DOC · 002BIP 32 — Hierarchical Deterministic WalletsСпецификация ↗DOC · 003BIP 39 — Mnemonic code for generating deterministic keysСпецификация ↗DOC · 004Trezor — Multi-share BackupДокументация ↗DOC · 005Trezor — python-shamir-mnemonic reference implementationПервичный источник ↗
Сначала источники · Не является инвестиционной рекомендацией