SLIP-39 je specifikace SatoshiLabs pro interoperabilní slovní podíly založené na Shamir's Secret Sharing. Standardizuje rozdělení, metadata, kontrolu chyb a passphrase; podíly nejsou zaměnitelné s frází BIP 39.
Pro zálohu peněženky BIP 32 je hlavním tajemstvím její vstupní seed, nikoli rozšířený privátní kořen. Nejprve vznikne encrypted master secret (EMS), potom jeho podíly. Výpočty používají GF(256) po jednotlivých bajtech; specifikace ukládá tajemství do f(255) a u prahu alespoň 2 ověřovací digest do f(254). [SLIP-0039 — Shamir Secret-Sharing for Mnemonic Codes] [BIP 32 — Hierarchical Deterministic Wallets]
Nejprve se musí naplnit členský práh každé potřebné skupiny, pak práh skupin. Příklad: 2 ze 3 skupin, každá 2 ze 3 členů. Dva podíly z A a dva z B stačí; tři z A a jeden z B nestačí, přestože jsou také čtyři. Běžné schéma 2 ze 3 používá jednu skupinu. [SLIP-0039 — Shamir Secret-Sharing for Mnemonic Codes]
Slovník má 1024 anglických slov a nepřekládá se podle jazyka rozhraní. Tajemství o 128 bitech dává podíly po 20 slovech, o 256 bitech po 33. Podíl obsahuje také identifikátor, příznak extendable, exponent iterací, indexy a prahy. Při kombinování se ověřuje shoda metadat a jedinečnost členských indexů; dvě kopie stejného podílu nejsou dva členové. [SLIP-0039 — Shamir Secret-Sharing for Mnemonic Codes]
Poslední tři slova tvoří RS1024: zaručeně zachytí chybu zasahující nejvýše tři slova. Neprokazují původ podílu ani oprávnění držitele; doporučením specifikace je chyby automaticky neopravovat. Digest při rekonstrukci pomáhá odhalit nesprávnou sadu. Jeho 32bitová kontrola je důvodem nepřenášet na SLIP-39 bez výhrad ideální tvrzení o nulovém úniku pod prahem. [SLIP-0039 — Shamir Secret-Sharing for Mnemonic Codes]
Šifrování používá čtyři kola Feistel s PBKDF2-HMAC-SHA256, v každém 2500×2^e iterací. Specifikace připouští tisknutelné ASCII 32–126 a bez passphrase používá prázdný řetězec. Správnou passphrase nelze přímo ověřit: jiná vrátí jiné hlavní tajemství. Platné podíly proto nepotvrzují, že jste obnovili zamýšlenou peněženku; ověřte její známé adresy. [SLIP-0039 — Shamir Secret-Sharing for Mnemonic Codes]
BIP 39 má jiný slovník, kontrolní součet a převod fráze na seed. Rozdělit jeho slova na papíry nevytváří SLIP-39 ani jeho prahovou ochranu. Pro zachování stejné peněženky by migrace musela zachovat správný BIP 32 seed a kontext odvození; pouhé překódování původní entropie do jiných slov to nezaručuje. Ověřte konkrétní podporovaný postup. [SLIP-0039 — Shamir Secret-Sharing for Mnemonic Codes] [BIP 39 — Mnemonic code for generating deterministic keys]
Příznak extendable s hodnotou 1 vynechává identifikátor ze soli šifrování. Umožňuje znovu rozdělit stejný EMS s novým identifikátorem bez znalosti passphrase. Trezor popisuje rozšíření kompatibilní jednopodílové zálohy na více podílů. Nová sada však nezneplatní starou: kdo má dostatečnou původní kombinaci, stále obnoví stejné tajemství. [SLIP-0039 — Shamir Secret-Sharing for Mnemonic Codes] [Trezor — Multi-share Backup]
SLIP-39 při obnově znovu sestaví jedno tajemství; nevytváří Multisig ani on-chain schvalování každé transakce. Rozmístění musí omezit společnou ztrátu i získání potřebné kombinace útočníkem. Vyzkoušejte obnovu na důvěryhodném zařízení, uchovejte passphrase a kontext peněženky a ověřte kompatibilitu pomocí referenční implementace a testovacích vektorů. Samotný počet podílů nestačí. [SLIP-0039 — Shamir Secret-Sharing for Mnemonic Codes] [Trezor — python-shamir-mnemonic reference implementation]
Pro nejúplnější obraz čtěte toto heslo společně s Shamir Secret Sharing, BIP 39, Trezor, Multisig, HD Wallet. Opačným směrem na něj odkazují také BIP 39, Pavol „Stick“ Rusnák, Shamir Secret Sharing.