BIP-39 mendeskripsikan implementasi dari frasa mnemonic untuk membuat dompet deterministik.
Frasa: gabungan dua kata atau lebih yang bersifat nonpredikatif
Dompet deterministik: sistem penurunan kunci-kunci dari sebuah titik awal yang disebut dengan "seed."
Privkey-pubkey yang sebelumnya kita buat pada thread ini merupakan dompet yang nondeterministik, artinya kita tidak menggunakan seed, dari sebuah pelemparan uang logam sebanyak 256 kali, kita hanya dapat membuat satu buah pasangan privkey-pubkey.
Dompet-dompet bitcoin saat ini sudah mengimplementasikan BIP-39 sehingga kita umumnya akan menuliskan frasa ketika kita membuat (atau membackup) dompet pertama kali.
Misalnya menggunakan mycelium, berikut ini adalah frasa yang harus ane simpan:
Berikut ini adalah cara sistem dompet menghasilkan frasa mnemonic:
#1 Membuat angka acak atau Entropi (ENT)
ENT berukuran 128-256 bit, mycelium pada saat uji coba pembuatan artikel ini menghasilkan ENT acak sepanjang 128 bit.
Dalam hex:
#2 Menghitung Checksum Length (CL)
CL dihitung dengan membagi panjang bit ENT dengan 32, dalam contoh ini 128/32 = 4 bit checksum
#3 Melakukan HASH SHA-256 pada ENT
Menggunakan http://www.fileformat.info/tool/hash.htm hasilnya HASH:
b47f2a00e4a94dd707b000de88fc56263b6a76bb2f1aad80c957a42a3d40d317
#4 Mengambil 4 bit HASH dan menambahkan ke ENT
Karena CL 4 bit maka kita hanya perlu menggunakan 4 bit HASH (1 buah karakter HASH pertama) untuk ditambahkan di akhir ENT
hex b = bin 1011
1101110010000111111100100010101010100011011111111010010111011011101010101100011 11000010000101111100010111111000110001010101011011011
#5 "Kelompokkan" hasil #4 per 11 bit dan ubah ke integer (angka utuh desimal)
00111111100 = 508
10001010101 = 1109
01000110111 = 567
11111010010 = 2002
11101101110 = 1902
10101011000 = 1368
11110000100 = 1924
00101111100 = 380
01011111100 = 764
01100010101 = 789
01011011011 = 731
#6 Cari hasil integer #5 pada daftar kata
Daftar kata ada di https://github.com/bitcoin/bips/blob/master/bip-0039/english.txt
Ingat bahwa daftar kata seharusnya dimulai dari indeks 0 (bukan 1), sehingga tambahkan 1 pada hasil perhitungan #5 misalnya 1764+1 = 1765 -> symptom
Berikut ini adalah hasil lengkapnya:
509 -> display
1110 -> melt
568 -> eight
2003 -> where
1903 -> universe
1369 -> prison
1925 -> vacuum
381 -> convince
765 -> garbage
790 -> glance
732 -> fork
Kombinasi frasa yang dapat dibentuk dari 12 frasa mnemonic adalah 204812 yang didesimalkan sekitar 5.4 x 1039 ini berarti dompet yang dibuat dengan 12 frasa mnemonic memiliki tingkat keamanan yang lebih rendah dari dompet pada artikel sebelumnya yang sekitar 1077. Namun demikian dompet yang dibuat dengan cara ini lebih mudah untuk dibackup, bahkan frasa-frasanya dapat dihafalkan.
Dari frasa di atas dapat diturunkan:
Menggunakan Password-Based Key Derivation Function 2 (PBKDF2), frasa mnemonic, dan salt, lalu iterasi diset ke 2048 dan HMAC-SHA512, kita dapat menghitung seed. Gunakan online tools https://iancoleman.io/bip39/
Seed*:
Extended Privkey (BIP-44)*:
Extended Pubkey (BIP-44)*:
*Dijelaskan pada https://bitcointalksearch.org/topic/m.43552511
Program yang digunakan:
http://www.fileformat.info/tool/hash.htm
https://iancoleman.io/bip39/
Referensi:
https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki
https://github.com/bitcoin/bips/blob/master/bip-0039/english.txt
https://www.youtube.com/watch?v=hRXcY_tIlrw