- Dalam proses implementasi Go untuk ML-DSA, algoritme tanda tangan tahan kuantum yang ditetapkan NIST, muncul masalah verifikasi tanda tangan yang gagal
- Claude Code v2.0.28 hanya dengan kode uji dan path sumber berhasil menemukan bug kompleks tingkat rendah dengan cepat
- Penyebabnya dipastikan sebagai kesalahan penggabungan fungsi yang menghitung ulang bit atas dari w1 pada tahap
Verify
- Dalam eksperimen kedua yang menyusul, Claude juga menemukan kesalahan perhitungan konstanta Montgomery dan bug ketidakcocokan panjang tanda tangan
- Ketiga percobaan berhasil mengidentifikasi bug, menunjukkan potensi pemanfaatan AI untuk debugging tingkat rendah
Implementasi ML-DSA dan masalah awal
- Penulis mengimplementasikan ulang ML-DSA (Post-Quantum Signature Algorithm) yang ditetapkan NIST dalam bahasa Go
- Setelah 4 hari live coding, pengujian memunculkan masalah bahwa fungsi Verify menolak semua tanda tangan
- Di log pengujian, error
invalid signature terus muncul berulang
- Karena kelelahan, debugging dihentikan dan Claude Code diminta menganalisis masalah tersebut
Debugging pertama oleh Claude Code
- Claude Code v2.0.28 (model Opus 4.1, tanpa system prompt) diberi informasi berikut
- Perintah menjalankan tes (
bin/go test crypto/internal/fips140/mldsa)
- Lokasi kode (
src/crypto/internal/fips140/mldsa)
- Penjelasan bahwa “tanda tangan selalu ditolak” dan petunjuk bahwa “w1 berbeda”
- Dalam hitungan menit, Claude mengembalikan usulan perbaikan yang lengkap
- Penyebabnya adalah setelah
HighBits dan w1Encode digabung menjadi satu, hasil UseHint yang pada Verify sudah menghasilkan bit atas kembali diambil bit atasnya sekali lagi
- Dengan kata lain, ini adalah kesalahan struktural karena bit atas dari w1 dihitung dua kali
- Claude memahami penyebabnya segera setelah selesai memuat kode, lalu menulis tes sendiri untuk memverifikasi hipotesis
- Perbaikan yang diusulkan tidak sepenuhnya sempurna, tetapi identifikasi akar masalahnya mempersingkat waktu debugging
- Setelah itu penulis merombak
w1Encode agar menerima bit atas sebagai input, sekaligus mempersingkat proses konversi representasi Montgomery
Eksperimen kedua: bug pada tahap pembuatan tanda tangan
- Implementasi pembuatan tanda tangan juga mengalami kegagalan tes
- Bug pertama: kesalahan perhitungan konstanta (1, -1) di domain Montgomery
- Ini masalah yang sulit ditemukan, membutuhkan banyak
printf dan tebakan, serta memakan waktu sekitar 1~2 jam
- Bug kedua: kesalahan panjang nilai yang dimasukkan ke tanda tangan (32-bit, bukan 32-byte)
- Ini relatif mudah ditemukan karena perbedaan panjang tanda tangan
- Penulis menilai dua bug ini cocok untuk menguji performa Claude, lalu menjalankan ulang Claude Code pada versi kode sebelumnya
Hasil debugging kedua oleh Claude Code
- Pada prompt pertama, Claude melakukan debugging dengan
printf dan pelacakan nilai, lalu menemukan konstanta yang salah dan memperbaikinya
- Waktu pemrosesannya lebih singkat daripada manusia, dan penyebab kegagalan tes berhasil diidentifikasi dengan tepat
- Pada prompt kedua, Claude menemukan masalah ketidakcocokan panjang tanda tangan
- Setelah menelusuri beberapa jalur, Claude mengusulkan perbaikan yang hanya mengubah panjang alokasi
- Perbaikan yang diusulkan tidak sepenuhnya sempurna, tetapi berhasil menunjuk lokasi inti kesalahannya dengan akurat
- Dalam tiga percobaan independen, Claude sendiri berhasil menemukan penyebab bug yang benar
Efisiensi debugging AI dan implikasinya
- Pendekatan Claude efektif sebagai asisten otomatis yang khusus menelusuri penyebab kegagalan tes
- Pengguna tidak langsung menerapkan usulan perbaikan Claude, melainkan memeriksa lokasi bug lalu memperbaikinya sendiri
- Penulis menyinggung perlunya alat yang “secara otomatis membuat LLM menganalisis dan memberi tahu penyebab saat tes gagal”
- Dibanding chat sederhana atau pembuatan PR otomatis, bentuk agen debugging berbasis tes dinilai lebih ideal
Dukungan dan informasi lain
- Pemeliharaan open source penulis didukung melalui Geomys,
dengan sponsor seperti Smallstep, Ava Labs, Teleport, Tailscale, dan Sentry
- Ava Labs menekankan pentingnya pengembangan open source berkelanjutan untuk protokol kriptografi
- Teleport memperkenalkan platform Teleport Identity untuk mencegah pengambilalihan akun pengguna dan memperkuat kontrol akses
Lampiran: gambar dan penyebutan pribadi
- Artikel ini menampilkan Clippy dari Microsoft Office dengan balon kata yang mengatakan “bit atas w1 diambil dua kali”
- Di bagian akhir juga ada foto kucing, disajikan sebagai humor untuk meredakan perdebatan emosional tentang AI
Belum ada komentar.