486 / 736SEED-GEN

Seed Generation

Pembuatan seed dompet

Saat membuat dompet baru, kata-kata cadangannya harus berasal dari keacakan yang tidak dapat diprediksi orang lain. Seed Generation adalah proses menciptakan dan mengolah titik awal rahasia tersebut. Dompet yang menerima susunan dengan jumlah kata yang benar belum tentu aman digunakan.

Dalam proses BIP39 yang umum, data acak diubah menjadi kata-kata cadangan, atau Seed Phrase. Kata-kata itu dan passphrase opsional, yaitu kata sandi tambahan, menghasilkan seed: data rahasia yang dapat digunakan BIP32 untuk menurunkan pohon kunci dompet. Data acak, kata-kata, seed, dan kunci merupakan tahap berbeda dalam satu rangkaian. Format cadangan lain bisa bekerja secara berbeda.

Bayangkan Anda memilih kata dari buku favorit agar cadangan dompet mudah diingat. Kata-kata itu mungkin terasa unik bagi Anda, tetapi penyerang bisa mencoba kutipan dan pola kebiasaan manusia. Karena itu, BIP39 dimulai dengan keacakan yang dihasilkan komputer, lalu menyajikannya sebagai kata-kata. Entropi menggambarkan seberapa sulit hasilnya diprediksi. Kata-kata tersebut adalah catatan data rahasia yang mudah dibaca, bukan kesempatan untuk mengarang kalimat sendiri. [1]

Dompet harus benar-benar memperoleh data acak, bukan sekadar memanggil fungsi dengan nama yang tepat. Linux, misalnya, menyediakan getrandom(), yang secara bawaan menunggu sumber sistem siap. Dengan GRND_NONBLOCK, fungsi ini bisa melaporkan EAGAIN tanpa menunggu: datanya belum tersedia. Program harus memeriksa hasil dan jumlah byte, yaitu unit data yang diterima. Melanjutkan setelah kegagalan seolah masukan rahasia berhasil dibuat bisa menghasilkan dompet yang tampak berfungsi, tetapi tidak aman. [2]

Peramban juga menyediakan antarmuka untuk data acak yang aman. Web Crypto getRandomValues() mengisi array bilangan bulat dengan byte yang aman secara kriptografis; permintaan di atas 65536 byte gagal dengan QuotaExceededError. Namun, itu menjelaskan satu fungsi, bukan membuktikan keamanan seluruh situs. Sebuah halaman dapat memperoleh keacakan yang baik, lalu membocorkan kata-kata cadangannya. Kode yang dimuat dan cara kode itu menggunakan hasilnya juga perlu diperiksa. [3]

Jika Anda salah menyalin kata, dompet mungkin mendeteksinya lewat checksum: pemeriksaan singkat yang dihitung dari data asli. BIP39 menambahkan 4 bit pemeriksaan pada 128 bit masukan untuk membentuk 12 kata; 256 bit ditambah 8 bit pemeriksaan membentuk 24 kata. Bit adalah unit dasar informasi. Bit pemeriksaan berasal dari sidik jari data yang dihitung dengan SHA256, bukan entropi independen tambahan. Checksum yang valid tidak membuktikan bahwa kata-katanya rahasia atau dibuat dengan aman. [1]

Kata-kata memudahkan pencadangan; perangkat lunak perlu mengubahnya menjadi data yang ditentukan secara tepat. BIP39 memakai fungsi derivasi PBKDF2-HMAC-SHA512 dengan 2048 pengulangan untuk menghasilkan seed 512 bit. Selain frasa, digunakan parameter bernama salt: di sini, teks literal mnemonic diikuti passphrase, atau string kosong jika passphrase tidak digunakan. Frasa dan parameter ini diproses dalam UTF-8 NFKD, yang menyeragamkan representasi karakter. Keluaran yang lebih panjang tidak menciptakan keacakan yang hilang: panjangnya tidak membuktikan 512 bit entropi masukan. [1]

BIP32 menjelaskan tahap berikutnya. Ia menurunkan kunci privat master dan chain code, data pendamping untuk menurunkan kunci lain. Dengan begitu, dompet dapat membuat alamat baru dari satu titik awal. Secara teknis, prosesnya menggunakan HMAC-SHA512 dengan teks tetap Bitcoin seed sebagai kunci fungsi tersebut, lalu membagi hasilnya. Teks publik itu bukan rahasia Anda. Kunci privat hasil derivasi yang bernilai nol atau di luar rentang yang diizinkan tidak valid. Jadi, seed bukan sekadar berganti nama menjadi kunci privat. [4]

Pengembang perlu memastikan program menghitung dengan benar. Vektor uji menyediakan masukan yang diketahui dan hasil yang diharapkan. BIP39 menerbitkan kumpulan entropi, kata-kata, dan seed, termasuk passphrase uji TREZOR. Hasil yang cocok memverifikasi konversi masukan tersebut; itu tidak membuktikan bahwa generator sebenarnya menghasilkan rahasia yang tak terduga. Karena data uji bersifat publik, data itu tidak boleh dijadikan cadangan rahasia untuk dana sungguhan. [1]

Ada beberapa tahap antara sumber keacakan, kata-kata, dan penyimpanan cadangan. NIST SP 800-90C menjelaskan penggabungan sumber entropi dengan mekanisme pembangkitan data acak. Penilaian dompet juga harus mencakup versi perangkat lunak yang digunakan, penanganan kesalahan, dan perpindahan data antartahap. Komponen yang telah diperiksa dengan baik tidak menjamin bagian lain tidak kehilangan atau membocorkan rahasia. Tujuannya adalah menelusuri seluruh proses, bukan mencari satu nama yang terdengar meyakinkan. [5]

Untuk gambaran yang lebih utuh, baca entri ini bersama Random Number Generator, BIP 39, HD Wallet, Seed Phrase. Entri ini juga dirujuk dari Random Number Generator, CSPRNG, Deterministic RNG, Entropy Mixing.

DOC · 001BIP39 — Mnemonic generation and seed conversionSpesifikasi DOC · 002Linux getrandom — Initialization and return valuesDokumentasi DOC · 003W3C Web Crypto — getRandomValues contractSpesifikasi DOC · 004BIP32 — Master key generationSpesifikasi DOC · 005NIST SP 800-90C — Random bit generator constructionsSpesifikasi
Direvisi: Utamakan sumber · Bukan nasihat investasi