146 / 736SLIP39

SLIP-39

Záloha peněženky rozdělená do obnovovacích podílů

Jak obnovit peněženku z potřebného počtu částí zálohy a proč to není rozstříhaná Seed Phrase ani Multisig.

SLIP-39 je standard pro zálohu peněženky pomocí několika seznamů slov, kterým se říká obnovovací podíly. Předem určíte, kolik různých podílů bude k obnově potřeba. Například v uspořádání dvě ze tří lze jeden ztratit a peněženku přesto obnovit. Jeden samotný k obnově nestačí. Standard vytvořený SatoshiLabs používá Shamir’s Secret Sharing, matematickou metodu sdílení tajemství; běžnou Seed Phrase podle BIP 39 však jeho podíly nenahrazují prostým přepisem slov.

Anna zvolí zálohu dvě ze tří. Peněženka je aplikace nebo zařízení pro přijímání a odesílání bitcoinů. Peněženka vytvoří tři různé podíly a libovolné dva umožní obnovu; tomu minimálnímu počtu se říká práh. Dvě fotografie stejného podílu jsou pořád jen jeden podíl. Jednoduché uspořádání používá jednu skupinu. SLIP-39 umí i složitější pravidla: například 2 ze 3 skupin, v každé 2 ze 3 podílů. Dva podíly ze skupiny A a dva z B stačí. Tři z A a jeden z B nestačí, protože úplná je jen skupina A. Proto rozhoduje rozložení, nikoli jen počet papírů. [1] [6]

Každý seznam nese jiná data i informace potřebné k jejich správnému spojení. SLIP-39 používá pevný slovník 1024 anglických slov; slova zálohy se nepřekládají, ani když je peněženka česky. U tajemství dlouhého 128 bitů má podíl 20 slov, u 256 bitů 33. Bit je základní jednotka dat, nikoli další slovo k zapsání. Součástí podílu jsou také označení sady, skupiny a podílu, potřebné prahy a nastavení šifrování. Obnova kontroluje jejich soulad a odlišnost podílů. Náhodně vybrané seznamy stejné délky proto nelze smíchat. [1]

Anna může používat také passphrase, vlastní doplňující heslo. Potřebné podíly ji nenahradí a správná kombinace sama nepozná její překlep: jiná passphrase vytvoří jiné hlavní tajemství, tedy jinou peněženku. Proto se výsledek porovnává se známými adresami, nejen s hláškou o platné záloze. Bez passphrase se používá prázdný vstup. SLIP-39 dovoluje tisknutelné znaky ASCII 32–126, tedy běžné latinské znaky bez diakritiky včetně mezery. To je vlastnost tohoto standardu, nikoli obecné pravidlo pro všechny peněženky. Passphrase není PIN, který odemyká zařízení. [1]

Seed Phrase podle BIP 39 vzniká jinak a používá jiný slovník. Rozdělení jejích slov mezi několik papírů z ní neudělá podíly SLIP-39. Pro zachování stejné peněženky by převod musel zachovat seed, vstupní tajná data pro strom klíčů podle BIP 32, i správnou Derivation Path, tedy cestu k používaným klíčům. Nestačí jinak zapsat původní entropii, náhodná data před vytvořením slov. BIP 39 ze slov a passphrase vytváří seed o 512 bitech; jeho přímá záloha podle SLIP-39 má podíly po 59 slovech. Převod jedné peněženky také automaticky nepřenese další peněženky otevřené jinými passphrase. Konkrétní podporovaný postup je nutné ověřit předem. [1] [3] [2]

Kompatibilní záloha s příznakem extendable umožňuje změnit rozdělení a ponechat stejné peněženky. Trezor takto popisuje přechod z jednopodílové zálohy na více podílů. Anna ale výměnou papírů nezměnila tajemství: stará dostatečná kombinace funguje dál. Nové a staré podíly se nemíchají. Technicky příznak s hodnotou 1 vynechává identifikátor sady z pomocného vstupu šifrování nazývaného salt. Tentýž encrypted master secret (EMS), tedy zašifrované hlavní tajemství, pak lze znovu rozdělit s novým identifikátorem bez znalosti passphrase. Tento postup není způsob, jak napravit únik původní použitelné zálohy. [1] [4]

Soukromý klíč je tajný číselný údaj, kterým peněženka vytváří digitální podpis pro schválení útraty. Jakmile Anna obnoví peněženku, ta může podepisovat běžným způsobem. Držitelé podílů nemusí schvalovat každou platbu: SLIP-39 obnovuje jedno tajemství, zatímco Multisig vyžaduje více podpisů podle podmínek utracení. Tři podíly v jednom bytě může zničit jediný požár. Rozložení má ztížit společnou ztrátu i získání potřebné kombinace útočníkem; složitější schéma však přidává nároky na obnovu. Zkouška patří do podporovaného postupu na důvěryhodném zařízení. Referenční knihovna python-shamir-mnemonic slouží vývojářům ke kontrole shody pomocí veřejných testovacích příkladů, ne ke zpracování vaší skutečné zálohy. Sama upozorňuje, že tajemství dostatečně nechrání. [1] [4] [5] [6]

Pro peněženku BIP 32 je hlavním tajemstvím vstupní seed, nikoli už vypočtený rozšířený soukromý kořen stromu klíčů. Nejprve se seed zašifruje a až výsledný EMS se rozděluje. Šifrování používá čtyři kola konstrukce Feistel; každé obsahuje PBKDF2-HMAC-SHA256 s 2500×2^e opakováními, kde uložený exponent e určuje náročnost. Jde o přesně určené zpracování hesla, ne o přidání nových náhodných slov. Samotné dělení počítá po bajtech v GF(256), matematickém prostředí s 256 hodnotami. V použitém polynomu je tajemství na f(255); při prahu alespoň 2 je na f(254) uložen kontrolní údaj zvaný digest. [1] [2]

Poslední tři slova podílu tvoří kontrolní součet RS1024. Ten zaručeně odhalí chybu zasahující nejvýše tři slova, ale není podpisem autora zálohy ani dokladem vlastnictví. Standard nedoporučuje automatickou opravu: program by mohl vytvořit platná, ale jiná slova. Při spojení pomáhá další 32bitový digest odhalit nesprávnou sadu. Má však i teoretický důsledek: člověk, kterému chybí jeden podíl do požadovaného počtu může při vyčerpávajícím hledání vyloučit část kandidátů na tajemství. Nelze tedy bez výhrady přenést matematické tvrzení, že pod prahem neunikne vůbec žádná informace. To neznamená snadné prolomení; vysvětluje to, proč standard vyžaduje dostatečně silné původní tajemství. [1]

Pro nejúplnější obraz čtěte toto heslo společně s Shamir Secret Sharing, BIP 39, Trezor, Multisig, HD Wallet, Seed Phrase. Opačným směrem na něj odkazují také BIP 39, Trezor, Pavol „Stick“ Rusnák, Shamir Secret Sharing.

DOC · 001SLIP-0039 — Shamir Secret-Sharing for Mnemonic CodesSpecifikace DOC · 002BIP 32 — Hierarchical Deterministic WalletsSpecifikace DOC · 003BIP 39 — Mnemonic code for generating deterministic keysSpecifikace DOC · 004Trezor — Multi-share BackupDokumentace DOC · 005Trezor — python-shamir-mnemonic reference implementationPrimární zdroj DOC · 006Bitcoin Developer Guide — WalletsDokumentace
Revidováno: Primární zdroje · Nejde o investiční doporučení