
Kata checksum dalam frasa pemulihan Anda: cara BIP-39 menangkap kesalahan
Frasa pemulihan tampak seperti daftar kata sehari-hari yang dipilih acak. Sebenarnya itu adalah angka yang dikodekan, dan kata terakhir punya tugas tambahan: membawa checksum yang memungkinkan perangkat lunak dompet menyadari bila frasa disalin dengan keliru.
Memahami cara kerjanya menjelaskan mengapa salah ketik biasanya ditolak, mengapa Anda tidak boleh mengarang frasa sendiri, dan mengapa situs "generator seed" adalah ide buruk.
Frasa adalah angka yang menyamar
Sebagian besar dompet, termasuk SSP, mengikuti standar bernama BIP-39. Semuanya dimulai dari entropi: angka acak yang dihasilkan perangkat Anda. Frasa 12 kata mengodekan 128 bit entropi; frasa 24 kata mengodekan 256 bit.
Daftar katanya berisi tepat 2.048 kata, dan 2.048 adalah 2¹¹, jadi setiap kata mewakili 11 bit. Namun hitungannya tidak pas: 12 kata × 11 bit = 132 bit, bukan 128, dan 24 kata × 11 bit = 264 bit, bukan 256.
Kelebihan 4 atau 8 bit itulah checksum-nya.
Dari mana checksum berasal
Dompet memproses entropi dengan SHA-256 dan mengambil bit-bit pertama hasilnya: satu bit checksum untuk setiap 32 bit entropi. Artinya 4 bit untuk 12 kata dan 8 bit untuk 24 kata. (Fungsi hash dijelaskan membahas SHA-256 jika ini hal baru bagi Anda.)
Bit-bit itu ditambahkan di akhir entropi, lalu seluruh rangkaian dipotong menjadi bagian 11 bit, masing-masing dipetakan ke satu kata. Jadi kata terakhir adalah campuran:
- 12 kata: 7 bit entropi ditambah 4 bit checksum.
- 24 kata: 3 bit entropi ditambah 8 bit checksum.
Itulah sebabnya hanya beberapa kata yang bisa mengakhiri frasa tertentu. Untuk 11 kata pertama apa pun, hanya 128 dari 2.048 kata yang membentuk kata ke-12 yang valid. Untuk 23 kata pertama apa pun, hanya 8.
Apa yang ditangkap checksum, dan apa yang tidak
Saat memulihkan, perangkat lunak menghitung ulang checksum dari kata-kata yang Anda ketik lalu membandingkannya. Jika satu kata diganti dengan kata acak lain, frasa yang salah tetap lolos pemeriksaan dengan peluang sekitar:
- 1 banding 16 (2⁴) untuk 12 kata
- 1 banding 256 (2⁸) untuk 24 kata
Jadi sebagian besar kesalahan pada satu kata akan tertangkap. Pengujian penggantian acak dengan pustaka yang sama yang dipakai SSP menghasilkan tingkat lolos sekitar 6,4% dan 0,4%, sesuai teori.
Masih ada dua batasan. Checksum memberi tahu bahwa frasa itu cacat, bukan kata mana yang salah. Dan frasa yang lolos belum tentu milik Anda. Salah ketik yang "beruntung" akan memulihkan dompet lain yang valid dan kosong. Jika setelah pemulihan saldo terlihat nol, periksa ulang kata-kata Anda terlebih dahulu.
Aturan empat huruf
Daftar kata bahasa Inggris dipilih sehingga empat huruf pertama setiap kata bersifat unik, dan kata pendek seperti "act" dan "add" sudah unik dengan sendirinya. Anda bisa mengetok hanya empat huruf pertama setiap kata pada pelat logam tanpa kehilangan apa pun. Praktik terbaik frasa seed membahas cara menyimpan salinan tersebut.
Jangan pernah mengarang frasa sendiri
Memilih kata sendiri berbahaya karena dua alasan.
Tidak acak. Keamanan sepenuhnya bergantung pada entropi. Kata-kata pilihan manusia, seperti hal favorit atau lirik lagu, mengikuti pola yang bisa ditelusuri penyerang, dan bot terus-menerus menyisir frasa "brain wallet" semacam itu.
Kemungkinan besar bahkan tidak valid. Daftar 12 kata pilihan sendiri hanya lolos checksum sekitar 1 dari 16 kali. Hal itu menggoda orang untuk "memperbaiki" kata terakhir, atau melempar dadu untuk kata-kata awal lalu mencari kata terakhir yang valid.
Memilih kata terakhir sendiri pada dasarnya berisiko kecil, karena kata itu hanya berisi 7 atau 3 bit entropi. Bahayanya ada pada cara orang menemukan pilihan yang valid. Menghitung SHA-256 secara manual tidak praktis, sehingga orang menempelkan kata-kata mereka ke situs "kalkulator checksum". Saat itu juga, frasa tersebut sudah lepas dari kendali Anda. Halaman bisa mencatatnya, situsnya bisa tiruan, atau ekstensi peramban bisa membacanya.
Cara aman membuat frasa adalah membiarkan perangkat lunak dompet yang teruji membuatnya di perangkat Anda sendiri.
Cara SSP menanganinya
SSP Wallet dan SSP Key sama-sama memakai pustaka sumber terbuka @scure/bip39 dengan daftar kata bahasa Inggris. Kedua aplikasi membuat frasa 24 kata (256 bit) untuk dompet baru, sehingga setiap frasa membawa checksum 8 bit secara penuh.
Saat memulihkan, kedua aplikasi memeriksa frasa sebelum melanjutkan. Jika frasa gagal dalam pemeriksaan tetapi panjangnya standar (12, 15, 18, 21, atau 24 kata), Anda akan melihat peringatan bahwa frasa seed tidak standar, bukan sekadar pesan galat. Peringatan itu menyebutkan kata-kata yang tidak ada di daftar kata bahasa Inggris, atau menyatakan bahwa frasa tidak lolos checksum BIP-39, dan mengingatkan bahwa SSP tidak pernah membuat frasa seperti itu. Anda tetap bisa melanjutkan pemulihan setelah konfirmasi yang tegas. Opsi ini ada untuk frasa yang dibawa dari dompet lain, misalnya frasa dari daftar kata bahasa lain. Jika Anda melihat peringatan ini untuk frasa yang diberikan SSP, berhenti dan periksa ulang: hampir pasti ada satu kata yang salah atau tertukar, dan memulihkannya tetap saja akan membuka dompet lain yang kosong.
SSP adalah 2-dari-2, jadi SSP Wallet dan SSP Key masing-masing punya frasa sendiri. Frasa seed, kunci privat, dan xpub menjelaskan apa yang bisa dilakukan setiap bagian.
SSP Key juga menyediakan Verifikasi cadangan seed di Pengaturan → Keamanan, dan kartu "Pemeriksaan cadangan" menyarankannya setiap 30 hari. Setelah membuka kunci dengan biometrik atau kata sandi, Anda mengenali tiga kata seed Anda, dari posisi acak, di antara kata pengecoh dari daftar yang sama. SSP Wallet memiliki pemeriksaan serupa dengan satu kata. Keduanya tidak menampilkan frasa di layar. Uji pemulihan penuh tetap menjadi pemeriksaan terkuat, dan menguji cadangan Anda memandu Anda langkah demi langkah.
Ringkasan jujur
Frasa pemulihan Anda adalah angka acak yang ditulis sebagai kata-kata 11 bit. Kata terakhir menyertakan checksum SHA-256, 4 bit untuk 12 kata dan 8 bit untuk 24 kata. Checksum ini menangkap sebagian besar kesalahan penyalinan, tetapi tidak semuanya, dan tidak pernah memberi tahu kata mana yang salah.
Biarkan dompet Anda yang membuat frasa, tulis dengan teliti (empat huruf per kata sudah cukup), dan jangan pernah mengetikkannya ke situs web untuk "melengkapi" atau "memeriksanya". SSP membuat frasa 24 kata, memperingatkan Anda sebelum memulihkan frasa yang tidak standar, dan memungkinkan Anda mengonfirmasi cadangan tanpa menampilkannya di layar.


