489 / 691PBKDF2

PBKDF2

Wyprowadzanie seedu w BIP39

PBKDF2 przekształca tekst wejściowy i sól w klucz pochodny poprzez powtarzane obliczenia. BIP39 używa go do zamiany frazy słownej i passphrase w seed; nie generuje nowej losowości.

Password-Based Key Derivation Function 2 jest deterministyczną funkcją o parametrach wejścia, soli, liczby iteracji, funkcji pseudolosowej i długości wyjścia. BIP39 określa konkretny profil PBKDF2-HMAC-SHA512, nie wszystkie możliwe zastosowania PBKDF2.

Wejściem nazywanym password jest fraza słowna w UTF-8 NFKD. Sól to mnemonic + passphrase, również w UTF-8 NFKD; bez passphrase dopisuje się pustą wartość. BIP39 wymaga HMAC-SHA512, 2048 iteracji i 64 bajtów, czyli 512 bitów wyjścia. [BIP39 — Mnemonic generation and seed conversion]

PBKDF2 tworzy pierwszy wynik pośredni z wejścia hasła, soli i indeksu bloku wyjściowego. Kolejne wyniki oblicza tą samą funkcją pseudolosową z poprzedniego wyniku i łączy wartości przez XOR. Przy HMAC-SHA512 blok ma 64 bajty, więc BIP39 potrzebuje jednego bloku. Samo zastosowanie SHA-512 do tekstu 2048 razy nie wystarczy. [RFC8018 — PBKDF2 construction] [BIP39 — Mnemonic generation and seed conversion]

Te same znormalizowane wejścia i parametry dają ten sam seed. Dowolne zwiększenie 2048 iteracji lub zmiana funkcji podczas odzyskiwania nie poprawia bezpieczeństwa istniejącego portfela: wynik przestaje odpowiadać wymaganemu wyprowadzaniu BIP39. Tłumaczenie słów na inną listę też nie jest neutralną zmianą. [BIP39 — Mnemonic generation and seed conversion]

Iteracje zwiększają pracę na próbę, ale nie dodają niezależnej tajnej losowości. Atakujący ze słowami i danymi porównawczymi portfela może sprawdzać słabe passphrase offline. Wyjście 512-bitowe nie oznacza więc ochrony odpowiadającej 512 bitom entropii, a 2048 nie jest uniwersalnym zaleceniem dla nowych systemów. [RFC8018 — PBKDF2 construction] [BIP39 — Mnemonic generation and seed conversion]

Checksum BIP39 pomaga wykrywać błędy słów przed ich użyciem. Samo przekształcenie PBKDF2 jest oddzielone od generowania i sprawdzania frazy; nie potwierdza, że passphrase należy do szukanego portfela. BIP32 lub inne deterministyczne metody mogą potem użyć seedu w kolejnym kroku. [BIP39 — Mnemonic generation and seed conversion]

Publiczne wektory BIP39 podają entropię, słowa i oczekiwany seed z testową passphrase TREZOR. Poprawna implementacja musi odtworzyć całe wyjście i przestrzegać NFKD. Znane wejścia nigdy nie mogą służyć jako własna kopia dla środków; zgodność testu sama nie sprawdza też bezpieczeństwa całej aplikacji. [BIP39 — Mnemonic generation and seed conversion]

Pełniejszy obraz uzyskasz, czytając to hasło razem z BIP 39, BIP39 passphrase, Seed Generation, HD Wallet. Do tego hasła prowadzą również odsyłacze z BIP39 passphrase.

DOC · 001BIP39 — Mnemonic generation and seed conversionSpecyfikacja ↗DOC · 002RFC8018 — PBKDF2 constructionSpecyfikacja ↗
Najpierw źródła · To nie jest porada inwestycyjna