Tips & Trik

Celah Normalisasi Unicode BIP-39 pada Coldcard: Mengapa Passphrase Beraksen Ditolak Total demi Keamanan Dompet Bitcoin

Infografis perbedaan derivasi passphrase BIP-39 akibat normalisasi Unicode NFKD pada Coldcard

Bacotan Online – Bagi para pemilik aset kripto yang memprioritaskan kedaulatan finansial, hardware wallet besutan Coinkite, Coldcard, telah lama diposisikan sebagai standar emas dalam penyimpanan dingin (cold storage). Keandalan perangkat fisik yang bersifat air-gapped ini dipercaya mampu melindungi kunci privat dari pelbagai vektor serangan siber berbasis jaringan. Namun, di balik reputasi keamanan tingkat tingginya, sebuah anomali kriptografi terkait penerapan standar BIP-39 sempat menyisakan celah teknis yang berpotensi fatal: hilangnya akses terhadap dana secara permanen akibat ketidakkonsistenan penanganan karakter beraksen pada passphrase.

Melalui pembaruan kode sumber di repositori resmi GitHub Coinkite (commit c1a6766), tim pengembang akhirnya menutup celah tersebut pada lini firmware versi Mk 5.6.2 dan Q 1.5.2Q. Menariknya, alih-alih menambahkan mesin pemroses aksen yang rumit ke dalam perangkat, Coinkite mengambil langkah radikal: menolak seluruh karakter non-ASCII dan simbol non-cetak secara total dari fungsi masukan passphrase BIP-39. Keputusan arsitektur ini menyimpan konsekuensi krusial bagi siapapun yang mengelola dompet Bitcoin dengan tingkat keamanan berlapis.

Akar Masalah Kriptografi: Standar BIP-39 dan Normalisasi Unicode NFKD

Untuk memahami mengapa celah ini sangat berbahaya, pengguna perlu menelisik mekanisme kerja matematika di balik pembuatan dompet deterministik hirarkis. Sesuai dengan spesifikasi resmi BIP-39 (Bitcoin Improvement Proposal 39), sebuah dompet kripto dibentuk melalui konversi frasa pemulihan (seed phrase 12 atau 24 kata) menjadi sebuah master seed berukuran 512-bit menggunakan fungsi peregangan kunci (key derivation function) berbasis PBKDF2-HMAC-SHA512 sebanyak 2.048 iterasi.

Ketika pengguna menambahkan passphrase opsional (sering disebut sebagai ‘kata ke-25’ untuk proteksi tambahan), rumus turunan kunci tersebut memproses dua parameter utama: frasa mnemonik berperan sebagai kata sandi, sedangkan gabungan kata harfiah mnemonic ditambah dengan nilai passphrase pengguna berfungsi sebagai garam pengacak (salt). Spesifikasi BIP-39 secara eksplisit mewajibkan bahwa sebelum string passphrase digabungkan dengan salt, teks tersebut wajib dinormalisasi terlebih dahulu menggunakan format Unicode normalization NFKD (Compatibility Decomposition) dan dienkode ke dalam format UTF-8 standar.

Dilema teknis muncul karena karakter huruf dalam bahasa non-Inggris—seperti huruf beraksen é, ü, atau ñ—dapat direpresentasikan ke dalam memori komputer melalui dua cara berbeda. Pada papan ketik modern dan sistem operasi umum, huruf é kerap diketik dalam bentuk tersusun tunggal (precomposed atau NFC / Canonical Composition) dengan satu titik kode U+00E9, yang dalam representasi byte UTF-8 bernilai heksadesimal 0xC3 0xA9 (dua byte). Sebaliknya, proses normalisasi NFKD mengurai karakter tersebut menjadi huruf dasar Latin e (titik kode U+0065, satu byte 0x65) yang ditempeli tanda aksen terpisah (titik kode U+0301, dua byte 0xCC 0x81), menghasilkan total tiga byte.

Sebelum rilis perbaikan teranyar, firmware Coldcard yang berjalan di atas lingkungan MicroPython tidak menjalankan algoritma normalisasi NFKD saat menerima passphrase dari jalur USB (melalui utilitas ckcc), pemindai kode QR (pada varian Coldcard Q), maupun pemulihan berkas catatan terenkripsi. Perangkat langsung meneruskan urutan byte mentah apa adanya ke dalam fungsi PBKDF2.

Studi Kasus Uji Coba: Satu Frasa, Dua Dompet yang Saling Terisolasi

Perbedaan urutan byte pada salt secara matematis memicu efek longsoran (avalanche effect) pada algoritma hashing SHA-512. Satu byte saja yang berbeda akan memuntahkan 512-bit master seed yang sepenuhnya berlainan, sehingga menghasilkan rangkaian kunci privat dan alamat dompet yang sama sekali terputus. Hal ini dapat dibuktikan secara presisi menggunakan vektor uji standar BIP-39 bahasa Inggris (frasa 11 kali kata abandon diakhiri kata about) dengan passphrase café:

  • Derivasi Firmware Coldcard Lama: Ketika kata café dimasukkan dalam bentuk precomposed (NFC), Coldcard membaca salt mentah 63 61 66 C3 A9. Hasil perhitungan menghasilkan master fingerprint kunci utama senilai 2f918343.
  • Derivasi Perangkat Lunak BIP-39 Standar: Ketika kata café yang sama dimasukkan ke aplikasi dompet yang patuh spesifikasi resmi (seperti Sparrow Wallet, Electrum, Trezor, maupun Ledger), perangkat lunak secara otomatis menormalisasi teks ke format NFKD menjadi 63 61 66 65 CC 81. Hasil perhitungan menghasilkan master fingerprint senilai 75902abe.

Kondisi ini menciptakan jebakan tak terlihat bagi pemilik dana. Karena algoritma NFKD tidak pernah menghasilkan titik kode U+00E9 dalam bentuk tunggal, aplikasi dompet standar di pasaran tidak akan pernah bisa merekonstruksi nilai master fingerprint 2f918343 melalui antarmuka normal. Jika pemilik Coldcard lama menyimpan saldo Bitcoin dalam dompet tersebut, lalu sewaktu-waktu perangkat fisiknya rusak dan ia mencoba memulihkan dana menggunakan kata sandi yang sama di aplikasi lain, saldo yang muncul di layar adalah nol koin. Fenomena ini kerap disalahartikan sebagai insiden peretasan, padahal dana tersebut terjebak dalam cabang derivasi non-standar.

Pertimbangan Rekayasa: Alasan Coinkite Menolak Non-ASCII

Bagi praktisi yang mendalami pengembangan perangkat lunak berbasis open-source, muncul pertanyaan logis: mengapa Coinkite tidak sekadar menyematkan pustaka normalisasi NFKD penuh ke dalam firmware MicroPython mereka?

Jawabannya terletak pada kompromi rekayasa perangkat keras tertanam (embedded systems) dan prinsip pertahanan kriptografi:

  • Keterbatasan Memori Mikrokontroler: Menanamkan tabel konversi Unicode NFKD lengkap membutuhkan alokasi memori kilat (flash ROM) dan RAM yang sangat besar pada mikrokontroler perangkat keras, yang justru berisiko mengurangi stabilitas performa sistem operasi mikro.
  • Bahaya ‘Unicode Drift’: Standar Unicode terus diperbarui dari waktu ke waktu. Konsorsium Unicode secara berkala merilis revisi titik kode. Jika implementasi normalisasi pada firmware tertinggal dibanding pustaka komputer desktop, ketidakcocokan derivasi kunci di masa depan tetap dapat terulang kembali.
  • Penegakan Determinisme Mutlak: Melalui fungsi baru validate_bip39_passphrase() yang memanggil to_ascii_printable(pw, allow_tab_nl=False), Coldcard kini secara tegas membatasi karakter passphrase hanya pada rentang ASCII 32 hingga 126 (heksadesimal 0x20 sampai 0x7E). Seluruh karakter di luar rentang cetak standar ini—termasuk emoji, karakter beraksen, tabulasi, dan jeda baris—langsung ditolak di tingkat antarmuka.

Keputusan tersebut sejalan dengan filosofi standar arsitektur keamanan data dan kriptografi ketat: memangkas permukaan ambiguitas data jauh lebih unggul daripada menoleransi fleksibilitas masukan yang rentan memicu kegagalan sistem.

Prosedur Mitigasi dan Langkah Pemulihan Darurat

Bagi komunitas pengguna dompet dingin, khususnya pemilik Coldcard Mk3, Mk4, maupun Coldcard Q, langkah mitigasi terukur harus segera diambil guna menghindari insiden penguncian aset di masa mendatang:

  • Verifikasi Master Fingerprint: Setiap kali mengaktifkan passphrase pada perangkat, selalu cocokkan nilai master fingerprint 8 digit heksadesimal yang tertera di layar fisik Coldcard dengan nilai yang terbaca pada aplikasi koordinator desktop Anda (misalnya Sparrow Wallet). Jika kedua nilai sidik jari tersebut tidak identik, jangan pernah menyetorkan dana ke alamat penerima yang dihasilkan.
  • Gunakan Karakter ASCII Murni: Dalam merancang passphrase baru, batasi kombinasi hanya pada huruf kapital, huruf kecil, angka, dan simbol tanda baca standar papan ketik QWERTY bahasa Inggris. Hindari penggunaan aksen bahasa asing, huruf non-Latin, maupun karakter khusus tak kasat mata.
  • Prosedur Pemulihan Dana Terdampak: Pengguna yang di masa lalu telanjur menggunakan passphrase beraksen pada firmware lama dan kini ingin memindahkan dana ke dompet standar dapat menerapkan prosedur audit keamanan terisolasi. Gunakan skrip Python mandiri di komputer air-gapped untuk menghitung turunan kunci menggunakan garam precomposed mentah, mengekstraksi kunci privat turunan (extended private key / xprv), dan menandatangani transaksi sapu bersih (sweep transaction) menuju dompet baru yang sepenuhnya mematuhi standar ASCII.

Pembaruan firmware pada ekosistem dompet dingin menegaskan kembali kaidah fundamental dalam pengamanan aset digital: keamanan sejati tidak hanya bertumpu pada ketahanan fisik perangkat terhadap peretasan, melainkan juga pada ketelitian matematis di tingkat representasi byte yang konsisten di seluruh spektrum perangkat lunak pendukung.

Kang Bakso

About Author

Leave a comment

Your email address will not be published. Required fields are marked *

You may also like

Ilustrasi keamanan password manager dan authenticator
Tips & Trik

Password Manager vs Authenticator: Mana yang Lebih Aman?

Password manager dan authenticator bukan pengganti satu sama lain. Pahami risiko TOTP, passkey, phishing, dan cara migrasi tanpa kehilangan akses.
Pivot table Excel dengan urutan kuartal kustom yang dipertahankan saat dibuka di Google Sheets
Tips & Trik

Google Sheets Makin Kompatibel dengan Excel, Urutan Pivot Table Kini Tetap Utuh

Google Sheets kini mempertahankan urutan kustom pivot table saat file Excel diimpor maupun diekspor kembali. Simak fungsi baru, batasannya, dan