Password-Based Key Derivation Function 2 adalah fungsi derivasi deterministik dengan parameter masukan, salt, jumlah iterasi, fungsi pseudorandom, dan panjang keluaran. BIP39 menentukan profil PBKDF2-HMAC-SHA512 tertentu, bukan semua kemungkinan penggunaan PBKDF2.
Masukan bernama password adalah frasa mnemonik dalam UTF-8 NFKD. Salt berupa mnemonic + passphrase, juga dalam UTF-8 NFKD; tanpa passphrase, nilai kosong ditambahkan. BIP39 mensyaratkan HMAC-SHA512, 2048 iterasi dan keluaran 64 byte, atau 512 bit. [BIP39 — Mnemonic generation and seed conversion]
PBKDF2 membuat hasil antara pertama dari masukan kata sandi, salt, dan indeks blok keluaran. Hasil berikutnya dihitung dengan fungsi pseudorandom yang sama dari hasil sebelumnya, lalu nilainya digabungkan dengan XOR. Dengan HMAC-SHA512, blok berukuran 64 byte, sehingga BIP39 membutuhkan satu blok. Sekadar menerapkan SHA-512 pada teks 2048 kali tidak cukup. [RFC8018 — PBKDF2 construction] [BIP39 — Mnemonic generation and seed conversion]
Masukan ternormalisasi dan parameter identik menghasilkan seed yang sama. Menaikkan 2048 iterasi sesuka hati atau mengganti fungsi saat pemulihan bukan peningkatan keamanan dompet yang ada: hasil tidak lagi sesuai derivasi BIP39 yang ditetapkan. Menerjemahkan kata ke daftar lain juga bukan perubahan netral. [BIP39 — Mnemonic generation and seed conversion]
Iterasi menambah kerja per percobaan, tetapi tidak menambah keacakan rahasia independen. Penyerang dengan kata dan data pembanding dompet dapat mencoba passphrase lemah secara offline. Karena itu, keluaran 512 bit tidak berarti perlindungan setara 512 bit entropi, dan 2048 bukan rekomendasi universal untuk sistem baru. [RFC8018 — PBKDF2 construction] [BIP39 — Mnemonic generation and seed conversion]
Checksum BIP39 membantu menemukan kesalahan kata sebelum digunakan. Konversi PBKDF2 sendiri terpisah dari pembuatan dan pemeriksaan frasa; ia tidak memastikan passphrase milik dompet yang dicari. BIP32 atau metode deterministik lain kemudian dapat menggunakan seed sebagai langkah berikutnya. [BIP39 — Mnemonic generation and seed conversion]
Vektor uji publik BIP39 mencantumkan entropi, kata, dan seed yang diharapkan dengan passphrase uji TREZOR. Implementasi benar harus menghasilkan seluruh keluaran yang sama dan mengikuti NFKD. Masukan yang diketahui ini tidak boleh menjadi cadangan pribadi untuk dana; kecocokan tes saja juga tidak memverifikasi keamanan seluruh aplikasi. [BIP39 — Mnemonic generation and seed conversion]
Untuk gambaran yang lebih utuh, baca entri ini bersama BIP 39, BIP39 passphrase, Seed Generation, HD Wallet. Entri ini juga dirujuk dari BIP39 passphrase.