Password-Based Key Derivation Function 2 je deterministická derivační funkce parametrizovaná vstupem, solí, počtem iterací, pseudonáhodnou funkcí a délkou výstupu. BIP39 stanovuje konkrétní profil PBKDF2-HMAC-SHA512, nikoli všechny možné aplikace PBKDF2.
Vstupem označovaným password je slovní fráze v UTF-8 NFKD. Sůl tvoří mnemonic + passphrase, rovněž v UTF-8 NFKD; bez passphrase je připojena prázdná hodnota. BIP39 předepisuje HMAC-SHA512, 2048 iterací a 64 bajtů, tedy 512 bitů výstupu. [BIP39 — Mnemonic generation and seed conversion]
PBKDF2 vytvoří první mezivýsledek z heslového vstupu, soli a indexu výstupního bloku. Další mezivýsledky počítá stejnou pseudonáhodnou funkcí z předchozího výsledku; hodnoty kombinuje operací XOR. S HMAC-SHA512 má blok 64 bajtů, takže pro BIP39 stačí jeden blok. Nestačí tedy pouze 2048krát použít SHA-512 na text. [RFC8018 — PBKDF2 construction] [BIP39 — Mnemonic generation and seed conversion]
Stejné normalizované vstupy a stejné parametry dávají stejný seed. Svévolně zvýšit 2048 iterací nebo změnit funkci při obnově není bezpečnostní vylepšení existující peněženky: výsledek přestane odpovídat předepsanému odvození BIP39. Ani překlad slov do jiné slovní zásoby není neutrální úprava. [BIP39 — Mnemonic generation and seed conversion]
Iterace zvyšují práci potřebnou pro jeden pokus, ale nepřidávají nezávislou tajnou náhodnost. Má-li útočník slova a porovnávací údaje peněženky, může slabé passphrase zkoušet offline. Výstup o 512 bitech proto neznamená ochranu odpovídající 512 bitům entropie a údaj 2048 není univerzální doporučení pro nové systémy. [RFC8018 — PBKDF2 construction] [BIP39 — Mnemonic generation and seed conversion]
Kontrolní součet BIP39 pomáhá zjistit chyby ve slovech před jejich použitím. Samotný převod PBKDF2 je od generování a kontroly fráze oddělený; nevydává potvrzení, že passphrase patří hledané peněžence. Odvozený seed pak mohou použít BIP32 nebo jiné deterministické postupy, což je další krok. [BIP39 — Mnemonic generation and seed conversion]
Veřejné testovací vektory BIP39 uvádějí entropii, slova a očekávaný seed s testovací passphrase TREZOR. Správná implementace musí reprodukovat celý výstup a respektovat NFKD. Tyto známé vstupy nesmějí být vlastní zálohou pro prostředky; shoda testu také sama neověřuje zabezpečení celé aplikace. [BIP39 — Mnemonic generation and seed conversion]
Pro nejúplnější obraz čtěte toto heslo společně s BIP 39, BIP39 passphrase, Seed Generation, HD Wallet. Opačným směrem na něj odkazují také BIP39 passphrase.