Lompat ke konten

Bukti nirpengetahuan

Panduan akurat tentang bukti nirpengetahuan: kelengkapan, kesahihan, simulasi, saksi, asumsi penyiapan, penggunaan blockchain, dan risiko verifikasi.

Diperbarui

Hanya untuk edukasi; bukan saran investasi atau keamanan. Bukti yang valid hanya menjamin pernyataan yang dikodekan berdasarkan asumsi sistem pembuktian.

Jawaban langsung

Bukti nirpengetahuan (ZKP) memungkinkan pembukti meyakinkan pemverifikasi bahwa suatu pernyataan benar tanpa mengungkap saksi rahasia yang membuktikannya. Jaminan formalnya bukan bahwa transkrip sama sekali tidak memuat informasi. Artinya, semua yang dipelajari pemverifikasi yang diizinkan dapat disimulasikan tanpa saksi, selain hal yang memang mengikuti pernyataan publik.

Sistem pembuktian dinilai lewat tiga sifat terpisah: kelengkapan, agar pembukti jujur dengan saksi valid diterima; kesahihan, agar pernyataan palsu hanya diterima dengan probabilitas yang dapat diabaikan; dan nirpengetahuan, agar saksi tetap tersembunyi dalam model ancaman yang ditentukan. Banyak sistem praktis merupakan argumen komputasional: kesahihannya berlaku terhadap lawan dengan kemampuan komputasi terbatas dan bergantung pada asumsi kriptografi yang dinyatakan.

Nirpengetahuan juga berbeda dari keringkasan dan validitas. Bukti dapat bersifat ZK tetapi mahal diverifikasi, ringkas tetapi menampilkan data publik, atau membuktikan relasi yang dikodekan dengan benar namun tidak sesuai aturan yang dimaksud aplikasi.

1
Menjalankan

Pembukti menjalankan batch atau komputasi dan mencatat transisi keadaan yang dihasilkan.

Cara kerja

Mulailah dengan pernyataan publik x, saksi privat w, dan relasi yang didefinisikan tepat R. Pembukti menghasilkan bukti dan pemverifikasi menilainya dengan parameter publik atau kunci verifikasi. Klaim kesahihannya dapat diringkas sebagai:

Verify(vk, x, proof) = 1 => exists w: R(x, w) = 1

Persamaan ini hanya mengatakan bahwa ada saksi yang cocok untuk relasi yang dikodekan. Persamaan tidak mengungkap saksi, mengautentikasi input offchain, atau membuktikan bahwa R mencakup seluruh aturan bisnis yang dimaksud.

  • Interaktif dan noninteraktif. Protokol ZK awal bertukar tantangan dan jawaban. Sistem noninteraktif mengemas bukti dalam satu objek dan biasanya mengandalkan materi penyiapan, model random oracle, atau keduanya.
  • Model penyiapan. Groth16 memberi bukti sangat kecil tetapi memakai penyiapan terstruktur khusus sirkuit. Sistem bergaya PLONK dapat memakai string referensi terstruktur yang universal dan dapat diperbarui. STARK menghindari trusted setup terstruktur, tetapi biasanya menghasilkan bukti lebih besar serta bergantung pada hash dan uji derajat rendah.
  • Aritmetisasi dan komitmen. Implementasi menerjemahkan program menjadi batasan aljabar, membuat komitmen atas nilai turunan saksi, lalu memakai pemeriksaan acak agar pemverifikasi tidak perlu mengulang komputasi atau melihat saksi.
  • Bukti pengetahuan. Sebagian sistem juga mengklaim bahwa pembukti yang diterima mengetahui saksi, yang diformalkan melalui ekstraktor. Ini sifat terpisah dan tidak boleh disimpulkan hanya dari label “nirpengetahuan”.

Contoh

Misalkan x memuat komitmen dan ambang 100 units, sedangkan w memuat saldo yang dikomitmenkan dan faktor penyamaran. Relasi memeriksa bahwa komitmen dapat dibuka dengan benar dan saldo sedikitnya 100 units. ZKP valid dapat membuktikan relasi itu tanpa mengungkap saldo tepatnya.

Hasil tersebut tidak dengan sendirinya membuktikan kepemilikan akun, bahwa dana bebas beban, atau komitmen yang sama tidak digunakan ulang. Klaim itu memerlukan batasan dan input publik tambahan.

Pada mata uang kripto terlindung, sirkuit dapat menegakkan otorisasi, konservasi nilai, dan pencegahan duplikasi sambil menyembunyikan detail tertentu. Pada validity rollup, bukti dapat mengesahkan transisi status batch; data transaksi masih dapat dipublikasikan, jadi “ZK Rollup” tidak otomatis berarti transaksi privat.

Risiko

  • Sirkuit yang tidak lengkap atau salah dapat membuktikan aturan yang salah secara sempurna.
  • Kurangnya pemisahan domain, ID chain, root, atau komitmen dapat mengikat bukti pada konteks yang salah.
  • Penyiapan yang bocor atau toxic waste yang tersisa dapat merusak kesahihan sistem yang membutuhkan trusted setup.
  • Bug pada pembukti, pemverifikasi, transkrip, kurva, hash, compiler, atau smart contract dapat membatalkan jaminan teori.
  • Input publik, waktu bukti, grafik transaksi, biaya, dan metadata jaringan dapat membocorkan informasi di luar pernyataan ZK formal.
  • Side channel pada pembuatan saksi, browser, hardware, atau layanan pembuktian jarak jauh dapat membuka rahasia sebelum bukti dibuat.
  • Verifikasi bukti tidak menyediakan ketersediaan data, liveness sequencer, finalitas settlement, ketahanan sensor, atau upgrade aman.
  • Asumsi dan margin keamanan konkret berbeda; ukuran bukti atau kecepatan verifikasi saja bukan peringkat keamanan.

Kesalahpahaman umum

  • “Nirpengetahuan berarti tidak ada data yang diungkap.” Pernyataan publik dan output yang sengaja dibuka tetap terlihat; metadata di luar model dapat bocor.
  • “Bukti valid berarti aplikasinya benar.” Yang diterima adalah relasi yang dikodekan; kesalahan sirkuit, integrasi, dan kebijakan tetap mungkin.
  • “Semua sistem ZK punya asumsi kepercayaan yang sama.” Upacara penyiapan, kurva, hash, model transkrip, dan kontrol upgrade sangat berbeda.
  • “ZK adalah enkripsi.” Enkripsi menyembunyikan data agar pihak berwenang dapat mendekripsinya; ZKP menetapkan klaim tanpa mengirim saksi untuk didekripsi.

Topik terkait

Sumber

Navigasi

Cari di wiki...