Protokol zero pengetahuan adalah metode di mana satu pihak (si pembuktikan) dapat membuktikan kepada pihak lain (si verifikasi) bahwa sesuatu benar, tanpa mengungkapkan informasi apa pun selain fakta bahwa pernyataan spesifik ini benar.
Bukti pengetahuan nol telah meningkat selama bertahun-tahun dan kini digunakan dalam beberapa aplikasi dunia nyata.
Tetapi ada masalah dengan pendekatan ini, terutama kurangnya privasi. Informasi yang Dapat Diidentifikasi Secara Pribadi (PII) yang dibagikan dengan layanan pihak ketiga disimpan di database pusat, yang rentan terhadap peretasan. Dengan pencurian identitas menjadi masalah kritis, ada seruan untuk lebih banyak cara perlindungan privasi dalam berbagi informasi sensitif.
Bukti nol pengetahuan menyelesaikan masalah ini dengan menghilangkan kebutuhan untuk mengungkapkan informasi untuk membuktikan keabsahan klaim. Protokol nol pengetahuan menggunakan pernyataan (yang disebut 'saksi') sebagai input untuk menghasilkan bukti yang ringkas atas keabsahannya. Bukti ini memberikan jaminan kuat bahwa sebuah pernyataan benar tanpa mengekspos informasi yang digunakan dalam membuatnya.
Kembali ke contoh sebelumnya, satu-satunya bukti yang Anda butuhkan untuk membuktikan klaim kewarganegaraan Anda adalah bukti pengetahuan nol. Verifier hanya perlu memeriksa apakah properti tertentu dari bukti tersebut benar untuk diyakinkan bahwa pernyataan yang mendasarinya juga benar.
Protokol pengetahuan nol harus memenuhi kriteria berikut:
Kelengkapan: Jika input valid, protokol zero pengetahuan selalu mengembalikan 'benar'. Oleh karena itu, jika pernyataan dasarnya benar, dan pembuktikan dan verifikator bertindak jujur, bukti dapat diterima.- Kesesuaian: Jika input tidak valid, secara teoritis tidak mungkin untuk menipu protokol pengetahuan nol untuk mengembalikan 'benar'. Oleh karena itu, pihak pembuktian yang berbohong tidak dapat menipu pihak verifikasi jujur untuk percaya bahwa pernyataan yang tidak valid adalah valid (kecuali dengan margin probabilitas yang sangat kecil).- Zero pengetahuan: Pemeriksa tidak mengetahui apa pun tentang sebuah pernyataan selain kebenarannya atau ketidakbenarannya (mereka tidak memiliki "nol pengetahuan" tentang pernyataan tersebut). Persyaratan ini juga mencegah pemeriksa dari menurunkan input asli (isi pernyataan) dari bukti tersebut.Dalam bentuk dasar, bukti pengetahuan nol terdiri dari tiga elemen: saksi, tantangan, dan respons.
Saksi: Dengan bukti pengetahuan nol, pihak pembuktian ingin membuktikan pengetahuan tentang beberapa informasi tersembunyi. Informasi rahasia adalah “saksi” dari bukti tersebut, dan pengetahuan yang diasumsikan oleh pihak pembuktian terhadap saksi tersebut menetapkan serangkaian pertanyaan yang hanya bisa dijawab oleh pihak yang mengetahui informasi tersebut. Dengan demikian, pihak pembuktian memulai proses pembuktian dengan secara acak memilih sebuah pertanyaan, menghitung jawabannya, dan mengirimkannya ke pihak verifikasi.- Tantangan: Verifier secara acak memilih pertanyaan lain dari kumpulan pertanyaan dan meminta prover untuk menjawabnya.- Respons: Si pemberi bukti menerima pertanyaan, menghitung jawabannya, dan mengembalikannya kepada pemeriksa. Jawaban si pemberi bukti memungkinkan pemeriksa untuk memeriksa apakah yang pertama benar-benar memiliki akses ke saksi. Untuk memastikan si pemberi bukti tidak menebak secara buta dan mendapatkan jawaban yang benar secara kebetulan, pemeriksa memilih lebih banyak pertanyaan untuk ditanyakan. Dengan mengulangi interaksi ini berkali-kali, kemungkinan si pemberi bukti meniru pengetahuan tentang saksi menurun secara signifikan hingga pemeriksa puas.Di atas menjelaskan struktur 'bukti pengetahuan nol interaktif'. Protokol nol pengetahuan awal menggunakan pembuktian interaktif, di mana memverifikasi keabsahan pernyataan memerlukan komunikasi bolak-balik antara pembuktian dan pemeriksa.
Sebuah contoh bagus yang mengilustrasikan bagaimana bukti interaktif bekerja adalah terkenal Jean-Jacques Quisquater Kisah Gua Ali Baba
Dalam cerita tersebut, Peggy (si prover) ingin membuktikan kepada Victor (si verifier) bahwa dia tahu frase rahasia untuk membuka pintu ajaib tanpa mengungkapkan frase tersebut.
Untuk menyelesaikan masalah ini, Manuel Blum, Paul Feldman, dan Silvio Micali menyarankan yang pertamabukti pengetahuan nol interaktif
dimana pemberi bukti dan pemeriksa memiliki kunci bersama. Ini memungkinkan pemberi bukti untuk menunjukkan pengetahuan mereka tentang beberapa informasi (yaitu, saksi) tanpa memberikan informasi itu sendiri.
Tidak seperti bukti interaktif, bukti noninteraktif hanya memerlukan satu putaran komunikasi antara partisipan (pengujuk dan verifikator). Pengujuk meneruskan informasi rahasia ke algoritma khusus untuk menghitung bukti pengetahuan nol. Bukti ini dikirim ke verifikator, yang memeriksa bahwa pengujuk mengetahui informasi rahasia menggunakan algoritma lain.
Bukti non-interaktif mengurangi komunikasi antara pemberi bukti dan verifier, sehingga membuat ZK-proof lebih efisien. Selain itu, begitu sebuah bukti dihasilkan, itu tersedia untuk siapa pun lagi (dengan akses ke kunci bersama dan algoritma verifikasi) untuk memverifikasi.
Bukti non-interaktif mewakili terobosan bagi teknologi zero-knowledge dan mendorong perkembangan sistem pembuktian yang digunakan saat ini. Kami akan membahas jenis-jenis bukti ini di bawah ini:
cara untuk mengurangi risiko dalam menghasilkan parameter publik. Beberapa pihak berpartisipasi dalam upacara setup terpercaya
, di mana setiap orang memberikan beberapa nilai acak untuk menghasilkan CRS. Selama satu pihak jujur menghancurkan bagian entropinya, protokol ZK-SNARK tetap memiliki keandalan komputasi.
Pengaturan terpercaya memerlukan pengguna untuk mempercayai peserta dalam pembangkitan parameter. Namun, pengembangan ZK-STARK telah memungkinkan protokol pembuktian yang berfungsi dengan pengaturan non-terpercaya.
Kripto-mata uang dimaksudkan untuk memberikan sarana bagi pengguna untuk melakukan transaksi pribadi, peer-to-peer. Tetapi sebagian besar transaksi kripto-mata uang terbuka secara publik di rantai blok publik. Identitas pengguna sering kali bersifat anonim dan dengan sengaja dihubungkan dengan identitas dunia nyata (misalnya dengan menyertakan alamat ETH di profil Twitter atau GitHub) atau dapat dihubungkan dengan identitas dunia nyata menggunakan analisis data dasar di rantai dan luar rantai.
Ada "mata uang privasi" khusus yang dirancang untuk transaksi yang benar-benar anonim. Blockchain yang berfokus pada privasi, seperti Zcash dan Monero, melindungi rincian transaksi, termasuk alamat pengirim/penerima, tipe aset, jumlah, dan jadwal transaksi.
Dengan menerapkan teknologi zero-knowledge ke dalam protokol, jaringan blockchain yang berfokus pada privasi memungkinkan node untuk memvalidasi transaksi tanpa perlu mengakses data transaksi.
Bukti pengetahuan nol juga diterapkan untuk membuat transaksi anonim pada blockchain publik. Sebagai contoh adalah Tornado Cash, layanan terdesentralisasi dan non-kustodial yang memungkinkan pengguna melakukan transaksi pribadi di Ethereum. Tornado Cash menggunakan bukti pengetahuan nol untuk menyembunyikan rincian transaksi dan menjamin privasi keuangan. Sayangnya, karena ini adalah alat privasi "opt-in", mereka dikaitkan dengan aktivitas ilegal. Untuk mengatasinya, privasi akhirnya harus menjadi default pada blockchain publik.
Bukti pengetahuan nol sangat berguna dalam konteks identitas terdesentralisasiIdentitas terdesentralisasi (juga dikenal sebagai 'identitas berdaulat sendiri') memberikan individu kemampuan untuk mengontrol akses ke pengenal pribadi. Membuktikan kewarganegaraan Anda tanpa harus mengungkapkan rincian ID pajak atau paspor adalah contoh bagus bagaimana teknologi zero-knowledge memungkinkan identitas terdesentralisasi.
Bukti pengetahuan nol, bagaimanapun, dapat menyederhanakan otentikasi untuk kedua platform dan pengguna. Begitu suatu bukti ZK telah dihasilkan menggunakan input publik (misalnya, data yang memberikan bukti keanggotaan pengguna di platform) dan input pribadi (misalnya, detail pengguna), pengguna dapat dengan mudah menyajikannya untuk mengotentikasi identitas mereka saat mereka perlu mengakses layanan. Hal ini meningkatkan pengalaman pengguna dan membebaskan organisasi dari keharusan menyimpan jumlah besar informasi pengguna.
Komputasi yang dapat diverifikasi sangat penting untuk meningkatkan kecepatan pemrosesan pada blockchain tanpa mengurangi keamanan. Memahami hal ini memerlukan pengetahuan tentang perbedaan dalam solusi yang diusulkan untuk memperbesar Ethereum.
Solusi penskalaan on-chain, seperti sharding, memerlukan modifikasi yang luas dari lapisan dasar blockchain. Namun, pendekatan ini sangat kompleks dan kesalahan dalam implementasinya dapat menggoyahkan model keamanan Ethereum.
Solusi penskalaan luar rantaitidak memerlukan merancang ulang protokol inti Ethereum. Sebaliknya, mereka bergantung pada model komputasi yang dioutsourcing untuk meningkatkan throughput pada lapisan dasar Ethereum.
Beginilah cara kerjanya dalam praktek:
Rantai perlu cara untuk memvalidasi transaksi di luar rantai tanpa harus mengeksekusinya ulang, jika tidak, nilai dari eksekusi di luar rantai akan hilang.
Di sinilah komputasi yang dapat diverifikasi masuk ke dalam permainan. Ketika sebuah node menjalankan transaksi di luar Ethereum, ia mengirimkan bukti pengetahuan nol untuk membuktikan kebenaran dari eksekusi di luar rantai. Bukti ini (disebut
bukti keabsahan) menjamin bahwa transaksi valid, memungkinkan Ethereum untuk menerapkan hasilnya ke dalam statusnya sendiri—tanpa harus menunggu seseorang untuk mempertikaikannya.
rollup pengetahuan noldanvalidiumsadalah dua solusi penskalaan off-chain yang menggunakan bukti keabsahan untuk memberikan skalabilitas yang aman. Protokol ini menjalankan ribuan transaksi off-chain dan mengirimkan bukti untuk diverifikasi di Ethereum. Hasil-hasil itu dapat diterapkan segera setelah bukti diverifikasi, memungkinkan Ethereum untuk memproses lebih banyak transaksi tanpa meningkatkan komputasi pada lapisan dasar.
Didefinisikan sebagai "berkoordinasi untuk membatasi persaingan terbuka dengan menipu, menipu, dan menyesatkan orang lain," kolusi dapat mengambil bentuk aktor jahat yang memengaruhi pemungutan suara dengan menawarkan suap. Sebagai contoh, Alice mungkin menerima suap dari Bob untuk memilih opsi B pada surat suara bahkan jika dia lebih memilih opsi A.
Suap dan kolusi membatasi efektivitas dari setiap proses yang menggunakan pemungutan suara sebagai mekanisme sinyal (terutama di mana pengguna dapat membuktikan bagaimana mereka memilih). Hal ini dapat memiliki konsekuensi yang signifikan, terutama di mana suara bertanggung jawab untuk mengalokasikan sumber daya yang langka.
Sebagai contoh, mekanisme pendanaan kuadratik
mengandalkan sumbangan untuk mengukur preferensi terhadap opsi tertentu di antara berbagai proyek kebaikan publik. Setiap sumbangan dihitung sebagai “suara” untuk proyek tertentu, dengan proyek yang menerima lebih banyak suara mendapatkan lebih banyak dana dari kolam pencocokan.
Menggunakan pemungutan suara on-chain membuat pendanaan kuadratik rentan terhadap kolusi: transaksi blockchain bersifat publik, sehingga penyuap dapat memeriksa aktivitas on-chain dari yang diberi suap untuk melihat bagaimana mereka “memilih”. Dengan cara ini, pendanaan kuadratik tidak lagi menjadi sarana yang efektif untuk mengalokasikan dana berdasarkan preferensi yang terkumpul dari komunitas.
Untungnya, solusi terbaru seperti MACI (Minimum Anti-Collusion Infrastructure) menggunakan bukti zero-knowledge untuk membuat pemungutan suara on-chain (misalnya, mekanisme pendanaan kuadratik) tahan terhadap suap dan kolusi. MACI adalah kumpulan kontrak pintar dan skrip yang memungkinkan administrator pusat (yang disebut “koordinator”) untuk menggabungkan suara dan menentukan hasil tanpa mengungkapkan rincian tentang bagaimana setiap individu memberikan suaranya. Meskipun demikian, masih memungkinkan untuk memverifikasi bahwa suara dihitung dengan benar, atau mengkonfirmasi bahwa individu tertentu berpartisipasi dalam putaran pemungutan suara.
Dalam MACI, bukti zero pengetahuan digunakan untuk memastikan kebenaran komputasi dengan membuatnya tidak mungkin bagi koordinator untuk salah memproses suara dan hasil perhitungan. Hal ini dicapai dengan mensyaratkan koordinator untuk menghasilkan bukti ZK-SNARK yang memverifikasi bahwa a) semua pesan telah diproses dengan benar b) hasil akhir sesuai dengan jumlah semua suara yang valid.
Oleh karena itu, bahkan tanpa membagikan rincian suara per pengguna (seperti biasanya), MACI menjamin integritas hasil yang dihitung selama proses penghitungan. Fitur ini berguna dalam mengurangi efektivitas skema kolusi dasar. Kita dapat menjelajahi kemungkinan ini dengan menggunakan contoh sebelumnya di mana Bob memberi suap kepada Alice untuk memilih suatu opsi:
Tetapi dalam kasus di mana koordinator tetap jujur, MACI merupakan alat yang kuat untuk menjamin kesucian pemungutan suara on-chain. Hal ini menjelaskan popularitasnya di antara aplikasi pendanaan kuadratik (misalnya,clr.fund
) yang sangat bergantung pada integritas pilihan suara masing-masing individu.
Pelajari lebih lanjut tentang MACI
.
Namun tidak ada cara bagi pengguna untuk menilai kejujuran peserta dan pengguna harus percaya pada pengembang. ZK-STARKs bebas dari asumsi kepercayaan karena keacakan yang digunakan dalam menghasilkan string dapat diverifikasi secara publik. Sementara itu, peneliti sedang bekerja pada pengaturan tanpa kepercayaan untuk ZK-SNARKs untuk meningkatkan keamanan mekanisme pembuktian.
ECDSA) untuk enkripsi. Meskipun algoritma ECDSA saat ini aman, perkembangan komputer kuantum bisa merusak model keamanannya di masa depan.
ZK-STARK dianggap kebal terhadap ancaman komputasi kuantum, karena menggunakan hash tahan tabrakan untuk enkripsi. Tidak seperti pasangan kunci publik-privat yang digunakan dalam kriptografi kurva eliptik, hashing tahan tabrakan lebih sulit bagi algoritma komputasi kuantum untuk ditembus.





