Dua hari ini saya membahas pemilihan kriptografi Dusk, dan menemukan satu keputusan yang sangat mudah diabaikan—mengganti kurva eliptik. Sebagian besar orang merasa itu tidak masalah, padahal sekali itu terjadi, efeknya akan merembet ke mana-mana.
//
Pertama, mari kita bahas kenapa tidak bisa langsung memakai skema yang sama seperti Bitcoin Ethereum
secp256k1 adalah kurva yang paling populer di dunia dompet mesin penambang, tapi ia sama sekali tidak didesain untuk pembuktian zk. Sistem pembuktiannya (misalnya BN254 di balik Plonk, atau kurva seperti BLS12-381) semua operasinya dibatasi pada suatu medan skalar tertentu, sehingga penjumlahan dan perkalian di dalam rangkaian (circuit) harus dilakukan di medan tersebut. Medan dari secp256k1 benar-benar tidak cocok dengan medan sistem pembuktian tersebut. Kalau memaksa untuk memverifikasi tanda tangan secp256k1 di dalam rangkaian, harus memakai "operasi non-asli" untuk mensimulasikannya—biayanya bisa berkali-kali lipat dari operasi asli. Bukan berarti tidak bisa dilakukan, tapi terlalu mahal.
//
JubJub adalah kurva yang memang ditujukan untuk menyelesaikan ketidakcocokan ini
Ia adalah kurva twisted Edwards. Intinya, medannya tepat dapat ditanamkan (embedded) ke dalam medan skalar BLS12-381. Artinya, ketika berada di dalam circuit Plonk, operasi pada titik di JubJub dilakukan dengan operasi native, sehingga biayanya langsung turun drastis. Saat menggunakan JubJub untuk pembangkitan kunci, tanda tangan, enkripsi, dan operasi-operasi semacam itu, semuanya saling cocok secara alami dengan sistem pembuktian—tanpa berputar-putar.
//
Sekarang mari bahas masalah yang ingin diselesaikan oleh lapisan abstraksi grup ini
Kurva berbentuk Edwards umumnya punya problem cofactor bukan 1. Secara sederhana, "titik logis" yang sama bisa berkorespondensi dengan beberapa representasi byte yang berbeda di kurva. Ambiguitas representasi seperti ini memang pernah menimbulkan celah keamanan di masa lalu—penyerang bisa memanfaatkan sub-grup kecil yang terkait cofactor, lalu mengonstruksi beberapa skenario batas untuk melewati verifikasi. Solusi yang umum di industri adalah membungkus di atas kurva dengan abstraksi grup lagi, sehingga ambiguitas representasi itu diratakan: memastikan satu titik hanya punya satu penulisan yang baku, sehingga celah jenis ini ditutup dari akar.
//
Kalau membandingkannya dengan secp256k1 yang paling populer di dunia mesin penambang, maka semuanya akan terlihat jelas: satu kurva ditujukan untuk efisiensi verifikasi tanda tangan dan kompatibilitas ekosistem, sementara yang satu lagi ditujukan untuk biaya operasi di dalam sistem pembuktian dan batas keamanan—dua kurva ini pada dasarnya tidak mengejar tujuan yang sama. Keputusan untuk mengganti kurva terdengar teknis dan rinci, tapi keputusan itu langsung menentukan apakah seluruh pipeline zk berikutnya menjadi murah atau mahal, bersih atau menyisakan risiko.
@Dusk_Foundation $DUSK #dusk
Mengapa kurva JubJub bisa begitu selaras dengan sistem pembuktian Dusk?
//
Pertama, mari kita bahas kenapa tidak bisa langsung memakai skema yang sama seperti Bitcoin Ethereum
secp256k1 adalah kurva yang paling populer di dunia dompet mesin penambang, tapi ia sama sekali tidak didesain untuk pembuktian zk. Sistem pembuktiannya (misalnya BN254 di balik Plonk, atau kurva seperti BLS12-381) semua operasinya dibatasi pada suatu medan skalar tertentu, sehingga penjumlahan dan perkalian di dalam rangkaian (circuit) harus dilakukan di medan tersebut. Medan dari secp256k1 benar-benar tidak cocok dengan medan sistem pembuktian tersebut. Kalau memaksa untuk memverifikasi tanda tangan secp256k1 di dalam rangkaian, harus memakai "operasi non-asli" untuk mensimulasikannya—biayanya bisa berkali-kali lipat dari operasi asli. Bukan berarti tidak bisa dilakukan, tapi terlalu mahal.
//
JubJub adalah kurva yang memang ditujukan untuk menyelesaikan ketidakcocokan ini
Ia adalah kurva twisted Edwards. Intinya, medannya tepat dapat ditanamkan (embedded) ke dalam medan skalar BLS12-381. Artinya, ketika berada di dalam circuit Plonk, operasi pada titik di JubJub dilakukan dengan operasi native, sehingga biayanya langsung turun drastis. Saat menggunakan JubJub untuk pembangkitan kunci, tanda tangan, enkripsi, dan operasi-operasi semacam itu, semuanya saling cocok secara alami dengan sistem pembuktian—tanpa berputar-putar.
//
Sekarang mari bahas masalah yang ingin diselesaikan oleh lapisan abstraksi grup ini
Kurva berbentuk Edwards umumnya punya problem cofactor bukan 1. Secara sederhana, "titik logis" yang sama bisa berkorespondensi dengan beberapa representasi byte yang berbeda di kurva. Ambiguitas representasi seperti ini memang pernah menimbulkan celah keamanan di masa lalu—penyerang bisa memanfaatkan sub-grup kecil yang terkait cofactor, lalu mengonstruksi beberapa skenario batas untuk melewati verifikasi. Solusi yang umum di industri adalah membungkus di atas kurva dengan abstraksi grup lagi, sehingga ambiguitas representasi itu diratakan: memastikan satu titik hanya punya satu penulisan yang baku, sehingga celah jenis ini ditutup dari akar.
//
Kalau membandingkannya dengan secp256k1 yang paling populer di dunia mesin penambang, maka semuanya akan terlihat jelas: satu kurva ditujukan untuk efisiensi verifikasi tanda tangan dan kompatibilitas ekosistem, sementara yang satu lagi ditujukan untuk biaya operasi di dalam sistem pembuktian dan batas keamanan—dua kurva ini pada dasarnya tidak mengejar tujuan yang sama. Keputusan untuk mengganti kurva terdengar teknis dan rinci, tapi keputusan itu langsung menentukan apakah seluruh pipeline zk berikutnya menjadi murah atau mahal, bersih atau menyisakan risiko.
@Dusk_Foundation $DUSK #dusk
Mengapa kurva JubJub bisa begitu selaras dengan sistem pembuktian Dusk?
A. 域嵌在BLS12-381标量域里运算走原生路径,成本低
B. 它是secp256k1的升级版,兼容性更好
C. 它算力消耗更大,安全性更强
3 hari lagi
