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Первинне джерело ↗
Спочатку джерела · Не інвестиційна порада