146 / 736SLIP39

SLIP-39

Kopia portfela podzielona na udziały odzyskiwania

Jak odzyskać portfel z wymaganej liczby udziałów i dlaczego nie jest to pocięta Seed Phrase ani Multisig.

SLIP-39 to standard kopii portfela w postaci kilku list słów zwanych udziałami odzyskiwania. Z góry ustala się, ile różnych udziałów będzie potrzebnych. W układzie dwa z trzech można na przykład zgubić jeden i nadal odzyskać portfel. Jeden udział sam nie wystarczy. Standard opracowany przez SatoshiLabs korzysta z Shamir’s Secret Sharing, matematycznej metody dzielenia sekretu. Jego udziały nie są po prostu innym zapisem zwykłej Seed Phrase według BIP 39.

Anna wybiera kopię dwa z trzech. Portfel to aplikacja lub urządzenie do odbierania i wysyłania bitcoinów. Portfel tworzy trzy różne udziały, a dowolne dwa pozwalają go odzyskać. Ta minimalna liczba to próg. Dwa zdjęcia tego samego udziału nadal liczą się jako jeden. Prosty układ wykorzystuje jedną grupę. SLIP-39 obsługuje też bardziej złożone reguły: na przykład 2 z 3 grup, w każdej wymagane 2 z 3 udziałów. Dwa udziały z grupy A i dwa z B wystarczą. Trzy z A i jeden z B nie, ponieważ kompletna jest tylko grupa A. Liczy się więc rozkład, nie sama liczba kartek. [1] [6]

Każda lista zawiera inne dane oraz informacje potrzebne do ich poprawnego połączenia. SLIP-39 używa stałej listy 1024 angielskich słów. Słów kopii nie tłumaczy się, nawet gdy interfejs portfela jest po polsku. Sekret o długości 128 bitów daje udziały po 20 słów, a 256-bitowy po 33. Bit to podstawowa jednostka danych, nie kolejne słowo do zapisania. Udział zawiera też oznaczenie zestawu, grupy i pozycji, wymagane progi oraz ustawienia szyfrowania. Odzyskiwanie sprawdza ich zgodność i odrębność udziałów. Nie można więc mieszać dowolnych list tylko dlatego, że mają tę samą długość. [1]

Anna może stosować także passphrase, własne dodatkowe hasło. Wystarczająca liczba udziałów go nie zastąpi, a poprawny zestaw sam nie rozpozna literówki: inna passphrase da inny główny sekret, czyli inny portfel. Dlatego wynik porównuje się ze znanymi adresami, zamiast poprzestać na komunikacie o poprawnej kopii. Bez passphrase używana jest pusta wartość. SLIP-39 dopuszcza drukowalne znaki ASCII 32–126, czyli podstawowe znaki łacińskie bez znaków diakrytycznych, ze spacją włącznie. To reguła tego standardu, a nie wszystkich portfeli. Passphrase nie jest PIN-em odblokowującym urządzenie. [1]

Seed Phrase według BIP 39 powstaje inaczej i korzysta z innej listy słów. Rozpisanie jej słów na kartkach nie tworzy udziałów SLIP-39. Aby zachować ten sam portfel, konwersja musiałaby zachować seed, tajne dane wejściowe drzewa kluczy BIP 32, oraz właściwą Derivation Path, ścieżkę do używanych kluczy. Samo przekodowanie pierwotnej entropii, losowych danych sprzed utworzenia słów, nie wystarczy. BIP 39 tworzy ze słów i passphrase seed o długości 512 bitów; bezpośrednia kopia tego seedu w SLIP-39 daje udziały po 59 słów. Konwersja jednego portfela nie przenosi też automatycznie innych portfeli otwieranych innymi passphrase. Najpierw trzeba sprawdzić konkretną obsługiwaną procedurę. [1] [3] [2]

Zgodna kopia z flagą extendable pozwala zmienić podział i zachować te same portfele. Trezor opisuje w ten sposób przejście od jednego udziału do wielu. Anna nie zmieniła jednak sekretu, wymieniając kartki: wystarczająca stara kombinacja nadal działa. Nie należy mieszać starych i nowych udziałów. Technicznie flaga o wartości 1 wyłącza identyfikator zestawu z pomocniczego wejścia szyfrowania nazywanego salt. Ten sam encrypted master secret (EMS), czyli zaszyfrowany główny sekret, można wtedy podzielić ponownie z nowym identyfikatorem bez znajomości passphrase. Nie usuwa to skutków ujawnienia starej, użytecznej kopii. [1] [4]

Klucz prywatny to tajna wartość liczbowa, której portfel używa do utworzenia podpisu cyfrowego zatwierdzającego wydanie środków. Po odzyskaniu portfel Anny może podpisywać w zwykły sposób. Posiadacze udziałów nie muszą zatwierdzać każdej płatności: SLIP-39 odtwarza jeden sekret, natomiast Multisig wymaga wielu podpisów zgodnie z warunkami wydawania. Jeden pożar może zniszczyć trzy udziały przechowywane w tym samym mieszkaniu. Rozmieszczenie powinno utrudniać zarówno wspólną utratę, jak i zebranie potrzebnych udziałów przez napastnika; bardziej złożony schemat utrudnia jednak także odzyskiwanie. Próbę należy przeprowadzić obsługiwaną metodą na zaufanym urządzeniu. Biblioteka referencyjna python-shamir-mnemonic służy programistom do sprawdzania zgodności za pomocą publicznych przykładów testowych, nie do przetwarzania prawdziwej kopii. Wyraźnie ostrzega, że nie chroni sekretów w wystarczającym stopniu. [1] [4] [5] [6]

W portfelu BIP 32 głównym sekretem jest wejściowy seed, a nie już obliczony rozszerzony prywatny korzeń drzewa kluczy. Najpierw szyfruje się seed, a dopiero powstały EMS jest dzielony. Szyfrowanie wykorzystuje cztery rundy konstrukcji Feistela; każda zawiera PBKDF2-HMAC-SHA256 z 2500×2^e powtórzeniami. Zapisany wykładnik e określa koszt obliczeń. To ściśle określone przetwarzanie hasła, a nie dodawanie losowych słów. Podział działa bajt po bajcie w GF(256), strukturze matematycznej z 256 wartościami. Wielomian umieszcza sekret w f(255); przy progu co najmniej 2 w f(254) znajduje się wartość kontrolna zwana digest. [1] [2]

Ostatnie trzy słowa udziału tworzą sumę kontrolną RS1024. Gwarantuje wykrycie błędu obejmującego najwyżej trzy słowa, ale nie jest podpisem autora kopii ani dowodem własności. Standard odradza automatyczne poprawianie: program mógłby utworzyć poprawne, lecz inne słowa. Podczas łączenia dodatkowy 32-bitowy digest pomaga wykryć niewłaściwy zestaw. Ma też teoretyczną konsekwencję: ktoś mający o jeden udział mniej niż wymagany próg może podczas wyczerpującego przeszukiwania odrzucić część kandydatów na sekret. Dlatego matematyczna teza o całkowitym braku wycieku informacji poniżej progu wymaga zastrzeżenia. Nie oznacza to łatwego złamania zabezpieczeń; wyjaśnia, dlaczego początkowy sekret musi być wystarczająco silny. [1]

Pełniejszy obraz uzyskasz, czytając to hasło razem z Shamir Secret Sharing, BIP 39, Trezor, Multisig, HD Wallet, Seed Phrase. Do tego hasła prowadzą również odsyłacze z BIP 39, Trezor, Pavol „Stick” Rusnák, Shamir Secret Sharing.

DOC · 001SLIP-0039 — Shamir Secret-Sharing for Mnemonic CodesSpecyfikacja DOC · 002BIP 32 — Hierarchical Deterministic WalletsSpecyfikacja DOC · 003BIP 39 — Mnemonic code for generating deterministic keysSpecyfikacja DOC · 004Trezor — Multi-share BackupDokumentacja DOC · 005Trezor — python-shamir-mnemonic reference implementationŹródło pierwotne DOC · 006Bitcoin Developer Guide — WalletsDokumentacja
Zaktualizowano: Najpierw źródła · To nie jest porada inwestycyjna