Author

Topic: [Diskusi][EDUKASI] Membuat Seed Mnemonic Sendiri Dengan Cara Acak (Read 279 times)

legendary
Activity: 2324
Merit: 1604
hmph..
Owalah, Akhirnya masalah terpecahkan, ternyata kesalahan saya tadi untuk melakukan test yang saya masukkan adalah entropynya, sehingga hasil hash selalu yang 44. Setelah saya perhatikan lagi, entropy ini musti di konvert ke hex terlebih dahulu kemudian baru di hash ke SHA-256.

Terima kasih mas atas bantuannya, jadi sekarang udah paham cara menemukan last word pada word ke 24  Wink

copper member
Activity: 2324
Merit: 2142
Slots Enthusiast & Expert
Ndak masalah gan di trit baru ini juga gapapa, maksud ane cuma memberi referensi saja.



EDIT DISCLAIMER & WARNING:
- JANGAN GUNAKAN SITUS-SITUS ONLINE UNTUK MEMBUAT KEY YANG DIPAKAI BENERAN
- KALAU MAU BUAT DOMPET HD, LANGSUNG DI APPSNYA SAJA, JANGAN LUPA PAKAI PASSPHRASE

#2 Menghitung Checksum Length (CL)

CL dihitung dengan membagi panjang bit ENT dengan 32, dalam contoh ini 256/32 = 8 bit checksum

ENT BIN:
Code:
0011001010000101011111010000101111111111101000001001000001001010110100010101111001001011000100111100011110001001111011110111011010010100110011001110111001100010111011010010101101010011110100100110101111110001100101011001000110100010000110110001100101110001

ENT HEX: 32857D0BFFA0904AD15E4B13C789EF7694CCEE62ED2B53D26BF19591A21B1971

#3 Melakukan HASH SHA-256 pada ENT

Menggunakan http://www.fileformat.info/tool/hash.htm hasilnya
SHA 256(ENT): f3f06d74b794b20645460aa0b17d4e7a77eaaea283ee55344adbfcece4a63432

#4 Mengambil dua digit pertama (8 bit) dari SHA 256(HEX) dan menambahkan ke ENT

Nilai di atas yang dibold adalah f3 atau 11110011, tambahkan ke akhir ENT BIN

Code:
001100101000010101111101000010111111111110100000100100000100101011010001010111100100101100010011110001111000100111101111011101101001010011001100111011100110001011101101001010110101001111010010011010111111000110010101100100011010001000011011000110010111000111110011

#5 "Kelompokkan" hasil #4 per 11 bit dan ubah ke integer (angka utuh desimal)
Code:
00110010100 => 404
00101011111 => 351
01000010111 => 535
11111111010 => 2042
00001001000 => 72
00100101011 => 299
01000101011 => 555
11001001011 => 1611
00010011110 => 158
00111100010 => 482
01111011110 => 990
11101101001 => 1897
01001100110 => 614
01110111001 => 953
10001011101 => 1117
10100101011 => 1323
01010011110 => 670
10010011010 => 1178
11111100011 => 2019
00101011001 => 345
00011010001 => 209
00001101100 => 108
01100101110 => 814
00111110011 => 499

#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 404+1 = 405 -> crater
Berikut ini adalah hasil lengkapnya:

Code:
405 => crater
352 => cloud
536 => drill
2043 => young
73 => animal
300 => century
556 => earth
1612 => siren
159 => because
483 => detail
991 => knock
1898 => unfold
615 => error
954 => jaguar
1118 => merry
1324 => pistol
671 => fatigue
1179 => nation
2020 => wise
346 => clinic
210 => boss
109 => assault
815 => grape
500 => dinosaur

PS: besok lagi kalau cari contoh cukup 12 frase saja biar ga terlalu panjang Wink
Kalau mau merubah bin, hex, dec, bisa pakai kalkulator, excel, atau situs ini https://www.rapidtables.com/convert/number/binary-to-hex.html
legendary
Activity: 2324
Merit: 1604
hmph..
Terima kasih mas, saya sudah cek untuk kedua link yang mas berikan, mohon maaf atas thread ganda ini. sebelum saya lock jika memang diperlukan, saya ingin tanya lebih lanjut mengenai poin 4, yang belum saya temukan di post tersebut atau mungkin saya juga masih kelewatan.
copper member
Activity: 2324
Merit: 2142
Slots Enthusiast & Expert
Keknya ane udah pernah buat deh, cek di sini https://bitcointalksearch.org/topic/m.41403564
Penjelasan lanjutannya juga sudah ada: https://bitcointalksearch.org/topic/m.43552511
legendary
Activity: 2324
Merit: 1604
hmph..
DASAR BIP-39: MEMBUAT SEED MNEMONIC SENDIRI SECARA ACAK


Memang utnuk membuat seed sudah ada cara yang lebih mudah, tinggal pakai penyedia, atau bisa juga dengan main angka secara langsung. tetapi disini ada sedikit pelajaran tentang bagaimana cara seed tercipta.

JANGAN GUNAKAN TOOLS ONLINE JIKA AKAN DIGUNAKAN UNTUK WALLET PRIMER/SEKUNDER dst.


Quote
Disclaimer:
Thread ini merupakan thread adopsi dari artikel Coldbit yang dapat Anda baca versi aslinya di halaman ini.
BIP-39 basics. From randomness to mnemonic words.

Terjemahan yang saya buat lebih saya sederhanakan untuk kemudahan pembaca dalam mempelajari. Saya juga masih dalam proses pengenalan mnemonic dan BIP-39 ini untuk pembelajaran yang lebih baik. Apabila ada keterangan yang salah, silakan dikoreksi.



Di awal kehadiran Bitcoin, kita tidak mengenal mnemonic atau cara mudah lainnya untuk membuat backup key wallet. Setiap dompet akan membuat address dan private key yang disimpan pada file wallet dan harus melakukan backup wallet secara berkala. Hal ini pun dianggap tidak ideal atau kurang efektif bagi sebagian pengguna. Karena, mereka dapat dengan mudah lupa untuk membuat backup wallet tersebut, sehingga membuat wallet dan bitcoin yang ada di dalamnya hilang selamanya.

Seiring dengan pengembangan wallet bitcoin, pengembang menemukan cara yang dianggap lebih baik untuk membuat cadangan private key. Salah satu ide tersebut diajukan oleh Pieter Wuille pada tahun 2012 dengan menggunakan BIP-32 yang kemudian diadopsi secara luas dan disebut dengan “Hierarchical Deterministic Wallets”. Dari pengembangan ini, dari yang awalnya harus melakukan backup secara rutin, kini hanya perlu memiliki seed sebagai backup.

Ingin memiliki backup seed yang lebih sederhana, Marek Palatinus, Pavol Rusnakm Aaron Voisine dan Sean Bowe membuat seed dalam BIP-39 dari daftar byte acak menjadi sebuah kata yang dapat dengan mudah di ucapkan maupun dituliskan.

Pada pembahasan yang ada dalam artikel, Coldbit memberikan langkah-langkah mengubah daftar byte secara acak (entropy) menjadi urutan kata dalam mnemonic yang disesuaikan dengan spesifikasi BIP-39

1. ENTROPY
Pertama, kita membutuhkan sesuatu yang dapat membuat hal yang dapat dilakukan secara acak. Dalam hal ini, kita mengambil contoh alat berupa coin yang mana pada sisi 1 adalah ekor dan sisi lainnya adalah kepala. Kemudian, spesifikasi BIP-32 memiliki panjang entropy antara 128 dan 256 bits. Setiap kali kita melemparkan koin akan dihitung sebagai 1 bit entropy. Jika kita ingin memndapatkan 24 kata pada seed, maka kita harus melemparkan koin sebanyak 256 kali dan menuliskan hasilnya dengan angka. Dalam hal ini, jika hasilnya adalah kepala, maka akan diganti dengan angka "0" sedangkan apabila hasilnya ekor, maka kita tuliskan sebagai "1".

Berikut hasil dari lempar koin sebanyak 256 kali yang dipraktikkan oleh Coldbit.

Quote
00110010100001010111110100001011111111111010000010010000010010101101
00010101111001001011000100111100011110001001111011110111011010010100
11001100111011100110001011101101001010110101001111010010011010111111
0001100101011001000110100010000110110001100101110001

Pada tabel di bawah ini, akan menjelaskan relasi antara initial entropy length (ENT), checksum length (CS) dan panjang dari kata mnemonic yang digenerate (MS) pada sebuah kata. Artinya, jika kita ingin mendapatkan 12 kata pada seed, maka kita harus menggenerate 128-bit entropy.

Quote
CS = ENT / 32
MS = (ENT + CS) / 11

|ENT|CS|ENT+CS|MS|
+----------+----------+----------+----------+
|128  |4 |132|12|
|160  |5|165|15|
|192  |6|198|18|
|224  |7|231|21|
|256  |8|264|24|

2. MEMISAHKAN ENTROPI DALAM BEBERAPA GROUP
Selanjutnya, kita dapat memisahkan binary entropi pada beberapa group yang akan menghasilkan 23 grup dengan berisikan panjang 11-bit dan grup ke 24 hanya berisikan panjang 3-bit. Berikut adalah hasilnya:
Quote
00110010100 00101011111 01000010111 11111111010 00001001000
00100101011 01000101011 11001001011 00010011110 00111100010
01111011110 11101101001 01001100110 01110111001 10001011101
10100101011 01010011110 10010011010 11111100011 00101011001
00011010001 00001101100 01100101110 001

3. ENCODE
Setiap group (kecuali yang ke 240 berisikan 11-bit nomer yang isinya antara 0-2047 dalam desimal dan nomer-nomer ini dijelaskan pada index daftar kata BIP-39

Pada binary pertama (berdasarkan grup) adalah 00110010100, Binary ini selanjutnya dikonversi ke desimal dan menghasilkan 404 (Untuk mengubah binary menjadi desimal, Anda dapat menggunakan alat konverter online atau dapat menuliskan secara manual dengan mempelajarinya di Rapidtables)

Dari grup tadi, ini adalah hasil konversi dari Binary menjadi desimal, namun pada hasil ini masih belum menghasilkan kata ke-24.

Quote
crater cloud drill young animal
century earth siren because detail
knock unfold error jaguar merry
pistol fatigue nation wise clinic
boss assault grape

Pada hasil pertama yakni 404, kita akan melihat index kata pada BIP-39 yang berisi CRATER.

4. CHECKSUM UNTUK MENEMUKAN KATA KE 24
Bagian terakhir adalah dengan mengkalkulasi checksum. Ini perlu dilakukan untuk memastikan bahwa semua kata yang dihasilkan sudah benar dan valid atau tidak. Ini juga dapat mendeteksi adanya error yang terjadi misal menggunakan kata yang salah atau posisi yang salah.

Untuk kalkulasi checksum ini membutuhkan 256 entropy bit. Pada contoh ini, coldbit memulainya pada langkah 1 dan menghitung SHA256 dari hasil tersebut. Beirkut adalah hasil pengujiannya

Quote
Code:
$ echo 0011001010000101011111010000101111111111101000001001000001001010110100010101111001001011000100111100011110001001111011110111011010010100110011001110111001100010111011010010101101010011110100100110101111110001100101011001000110100010000110110001100101110001 | shasum -a 256 -0

f3f06d74b794b20645460aa0b17d4e7a77eaaea283ee55344adbfcece4a63432

NB: shasum calculates the SHA digest from the input. Option -a 256 means using the 256 algorithm, -0 means reading the input in BITS mode where each ASCII '0' is interpreted as 0-bit and ASCII '1' is interpreted as 1-bit
Hasil dari checksum merupakan format hexadesimal. Dan kita masih membutuhkan 8 bit laigi untuk melengkapi bit terakhir menjadi 11 bit.

Dari hasil tesebut, ditemukan
Quote
f3 (hex) -> 1111 0011 (binary)
Kemudian, tambahkan bit pada 3 bit terakhir pada bit kata ke 24. yang hasilnya menjadi seperti ini

Quote
00111110011
Biru adalah bit terakhir pada grup, dan orange adalah tambahan dari proses ke-4 ini

Hasil dari bit ini setelah diganti desimal adalah 499 yang pada index kata BIP39 adalah dinosaur.

Full kata pada seed yang dihasilkan adalah
Quote
crater cloud drill young animal
century earth siren because detail
knock unfold error jaguar merry
pistol fatigue nation wise clinic
boss assault grape dinosaur

UPDATE
Untuk poin 4 ini, menggunakan cara yang digunakan oleh Coldbit agak sulit untuk ditemukan. String $ echo pada contoh di atas seperti tiba-tiba ada (karena tutorial kurang lengkap, atau sudah dianggap mengerti oleh penulis). Bagi saya ini menjadi kendala untuk memahami, dan saya pun mencoba menggunakan pearl command line untuk menggunakan command shasum -a 256 -0 tersebut, dan hasilnya nihil, yaitu menghasilkan hash 44f6dafa3d7a1720b5ebbf2adc1663df4dab03776eed48d2cda775237a547e59

SOLUSI
Etropy yang didapat harus di ubah ke HEX terlebih dahulu, kemudian hasil HEX di hash ke SHA-256, maka hasilnya didapat sama persis yaitu f3f06d74b794b20645460aa0b17d4e7a77eaaea283ee55344adbfcece4a63432

Pada bagian 4 ini, saya masih mengalami kesulitan untuk memahami masalah checksum, karena setiap kali saya mencoba, hasilnya berbeda. bagi teman-teman yang paham, silakan tambahkan panduannya

pada hasil SHA26 disebutkan f3f06d74b794b20645460aa0b17d4e7a77eaaea283ee55344adbfcece4a63432
hasil yang saya dapatkan "44f6dafa3d7a1720b5ebbf2adc1663df4dab03776eed48d2cda775237a547e59" saya juga nyoba Saya juga menggunakan Digest:SHA256 terminal bisa di download di sini https://metacpan.org/pod/shasum hasilnya juga sama. Hal ini juga disebutkan pada komentar dan ini respon dari Coldbit

Online SHA256 converters assume the input is a string but in this case it’s a binary (0 and 1) number.

That’s what the shasum -a 256 -0 command line does. The -0 option means “treat the input as a binary number”.


Quote
Dikarenakan saya tidak dapat memecahkan poin ke-4, ini ada software yang bisa Anda gunakan untuk menemukan kata terakhir.

Atau bisa juga menggunakan layanan iancoleman.io dengan mengunjungi halaman https://iancoleman.io/bip39/ dan centang show entropy detail, kemudian paste hasil generate pada langkah pertama.

Apabila ada istilah atau hal apapun yang salah di dalamnya, mohon maaf yang sebesar-besarnya. Seperti kata mas Ljunior, mungkin saya hanya membaca dari 1 buku untuk membuat buku, tak seperti ulama yang membaca ribuan buku untuk 1 kitab. Jadi, yang sudah lebih paham mengenai hal ini, silakan berikan masukan dan koreksi. Agar ketika thread ini mendapat banyak koreksi, tentunya akan ada banyak sekali member Indonesia yang mendapat pelajaran baru dan buku baru untuk dibaca  Wink
Jump to: