489 / 736PBKDF2

PBKDF2

Derivasi seed dalam BIP39

Saat memulihkan dompet, kata-kata cadangan dan passphrase yang sama seharusnya menghasilkan kunci yang sama. Dalam BIP39, PBKDF2 menangani sebagian proses itu: menghitung seed, dasar rahasia untuk penurunan kunci berikutnya. Perhitungannya diulang, tetapi tidak menciptakan rahasia baru.

PBKDF2, singkatan dari Password-Based Key Derivation Function 2, mengubah masukan kata sandi dan parameter tambahan bernama salt menjadi kunci turunan. Hasilnya juga bergantung pada jumlah pengulangan, fungsi perhitungan, dan panjang keluaran yang diminta. Masukan dan pengaturan yang sama menghasilkan keluaran yang sama. BIP39 memakai varian khusus PBKDF2-HMAC-SHA512; penggunaan lain bisa memakai parameter berbeda.

Kata-kata pemulihan menjadi masukan bernama password. Salt adalah masukan kedua: teks persis "mnemonic" langsung diikuti passphrase, yaitu kata sandi tambahan yang opsional. Tidak ada pemisah atau salinan kedua kata-kata cadangan yang disisipkan. Tanpa passphrase, salt tetap "mnemonic", bukan teks kosong. Kedua masukan menjalani NFKD, yang menyeragamkan representasi karakter tertentu, lalu dikodekan dengan UTF-8. BIP39 memakai HMAC-SHA512, 2048 pengulangan, dan keluaran sepanjang 64 byte atau 512 bit. Hasil itulah seed; salt bukan cadangan tambahan yang harus Anda buat. [1]

Di dalamnya digunakan HMAC, perhitungan yang menggabungkan kunci dengan pesan. Masukan kata sandi yang sama tetap menjadi kunci pada setiap putaran. Hasil antara pertama memakai salt dan nomor blok keluaran; putaran berikutnya memproses hasil antara sebelumnya. Semua hasil digabungkan dengan XOR, operasi pada bit-bit yang bersesuaian. HMAC-SHA512 menghasilkan 64 byte, sehingga BIP39 hanya memerlukan satu blok seperti ini. Sekadar menerapkan SHA-512 pada teks 2048 kali merupakan perhitungan lain dengan hasil yang berbeda. [2] [1]

Bayangkan Anda memulihkan dana di dompet lain. Untuk memperoleh seed yang sama, dompet itu membutuhkan data yang sudah dinormalisasi dan pengaturan yang sama. Menambah jumlah pengulangan di atas ketentuan 2048 tidak memperbaiki pemulihan: tindakan itu menyimpang dari BIP39 dan menghasilkan nilai berbeda. Menerjemahkan kata-kata ke daftar kata lain juga bukan perubahan yang netral. Pemulihan membutuhkan kesesuaian, bukan modifikasi algoritme sendiri. [1]

Pengulangan perhitungan membuat setiap percobaan lebih mahal, tetapi tidak menghasilkan keacakan independen yang baru. Penyerang yang mengetahui kata-kata Anda dan memiliki informasi untuk mengenali dompet yang benar dapat mencoba passphrase lemah secara offline di komputernya sendiri. Karena itu, seed sepanjang 512 bit tidak berarti ada 512 bit ketakterdugaan. Angka 2048 juga bukan rekomendasi umum untuk sistem baru; di sini angka itu bagian dari standar pemulihan tertentu. [2] [1]

Checksum BIP39 membantu mendeteksi kata-kata yang salah disalin. PBKDF2 menjawab pertanyaan lain: bagaimana menghitung seed dari masukan yang diberikan? Perhitungan itu sendiri tidak memastikan bahwa passphrase cocok dengan dompet asli Anda. Setelahnya, seed dapat diproses oleh BIP32, metode untuk menurunkan satu keluarga kunci. Memeriksa catatan, mengubahnya menjadi seed, dan membuat kunci adalah langkah-langkah yang berkaitan, tetapi tidak bisa saling menggantikan. [1]

Pengembang dapat membandingkan hasil dengan vektor uji publik: masukan yang diketahui beserta keluaran yang diharapkan. BIP39 menerbitkan data acak awal, kata-kata, dan seed lengkap untuk passphrase uji TREZOR. Implementasi yang benar harus menghasilkan nilai yang sama, termasuk penerapan aturan NFKD. Cadangan asli Anda tidak diperlukan untuk pengujian ini. Jangan pernah menggunakan contoh publik untuk menyimpan uang, karena semua orang mengetahuinya. Lolos uji perhitungan juga tidak membuktikan keamanan seluruh aplikasi. [1]

Untuk gambaran yang lebih utuh, baca entri ini bersama BIP 39, BIP39 passphrase, Seed Generation, HD Wallet. Entri ini juga dirujuk dari BIP39 passphrase.

DOC · 001BIP39 — Mnemonic generation and seed conversionSpesifikasi DOC · 002RFC8018 — PBKDF2 constructionSpesifikasi
Direvisi: Utamakan sumber · Bukan nasihat investasi