Apa itu bukti pengetahuan nol?

Pemula1/4/2024, 6:21:16 PM
Artikel ini memberikan bukti terperinci tentang Bukti Tanpa Pengetahuan (ZKP).

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.

Mengapa kita membutuhkan bukti pengetahuan nol?

Bukti nol pengetahuan mewakili terobosan dalam kriptografi terapan, karena mereka menjanjikan untuk meningkatkan keamanan informasi bagi individu. Pertimbangkan bagaimana Anda mungkin membuktikan klaim (mis., 'Saya adalah warga negara X') kepada pihak lain (mis., penyedia layanan). Anda perlu memberikan 'bukti' untuk mendukung klaim Anda, seperti paspor nasional atau SIM.

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.

Bagaimana bukti pengetahuan nol bekerja?

Bukti pengetahuan nol memungkinkan Anda membuktikan kebenaran suatu pernyataan tanpa harus membagikan isi pernyataan atau mengungkapkan bagaimana Anda menemukan kebenarannya. Untuk membuat hal ini mungkin, protokol pengetahuan nol mengandalkan algoritma yang mengambil beberapa data sebagai input dan mengembalikan 'benar' atau 'salah' sebagai output.

Protokol pengetahuan nol harus memenuhi kriteria berikut:

  1. 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.
  2. 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).
  3. 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

(buka di tab baru)

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.

Bukti pengetahuan nol interaktif

Meskipun revolusioner, bukti interaktif memiliki kegunaan terbatas karena memerlukan ketersediaan dan interaksi berulang kali antara kedua pihak. Bahkan jika verifikasi meyakini kejujuran pemberi bukti, bukti tersebut tidak akan tersedia untuk verifikasi independen (menghitung bukti baru memerlukan serangkaian pesan baru antara pemberi bukti dan verifikasi).

Untuk menyelesaikan masalah ini, Manuel Blum, Paul Feldman, dan Silvio Micali menyarankan yang pertamabukti pengetahuan nol interaktif

(buka di tab baru)

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:

Jenis-jenis bukti pengetahuan nol

ZK-SNARKs

ZK-SNARK adalah singkatan dari Zero-Knowledge Succinct Non-Interactive Argument of Knowledge. Protokol ZK-SNARK memiliki kualitas berikut:

  • Zero-knowledge: Seorang verifier dapat memvalidasi integritas suatu pernyataan tanpa mengetahui hal lain tentang pernyataan tersebut. Satu-satunya pengetahuan yang dimiliki verifier tentang pernyataan tersebut adalah apakah itu benar atau salah.
  • Singkat: Bukti pengetahuan nol lebih kecil dari saksi dan dapat diverifikasi dengan cepat.
  • Non-interaktif: Bukti ini 'non-interaktif' karena pemberi bukti dan verifikator hanya berinteraksi sekali, tidak seperti bukti interaktif yang memerlukan beberapa putaran komunikasi.
  • Argumen: Bukti tersebut memenuhi persyaratan 'kesesuaian', sehingga kecurangan sangat tidak mungkin terjadi.
  • Pengetahuan: Bukti pengetahuan nol tidak dapat dibangun tanpa akses ke informasi rahasia (saksi). Sulit, jika tidak mustahil, bagi seorang pembuktikan yang tidak memiliki saksi untuk menghitung bukti pengetahuan nol yang valid.

Kunci bersama yang disebutkan sebelumnya mengacu pada parameter publik yang disepakati oleh pihak pengaju dan pemeriksa untuk digunakan dalam menghasilkan dan memverifikasi bukti. Menghasilkan parameter publik (secara kolektif dikenal sebagai Common Reference String (CRS)) adalah operasi yang sensitif karena pentingnya dalam keamanan protokol. Jika entropi (keacakan) yang digunakan dalam menghasilkan CRS jatuh ke tangan pengaju yang tidak jujur, mereka dapat menghitung bukti palsu.

Komputasi Multipihak (MPC)

(buka di tab baru)

cara untuk mengurangi risiko dalam menghasilkan parameter publik. Beberapa pihak berpartisipasi dalam upacara setup terpercaya

(buka di tab baru)

, 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.

ZK-STARKs

ZK-STARK adalah singkatan dari Zero-Knowledge Scalable Transparent Argument of Knowledge. ZK-STARK mirip dengan ZK-SNARK, kecuali bahwa mereka:

  • Skalabel: ZK-STARK lebih cepat daripada ZK-SNARK dalam menghasilkan dan memverifikasi bukti ketika ukuran saksi lebih besar. Dengan bukti STARK, waktu pembuktian dan verifikasi hanya sedikit meningkat saat saksi bertambah (waktu pembuktian dan verifikasi SNARK meningkat secara linear dengan ukuran saksi).
  • Transparan: ZK-STARK mengandalkan keacakan yang dapat diverifikasi secara publik untuk menghasilkan parameter publik untuk pembuktian dan verifikasi daripada konfigurasi yang terpercaya. Oleh karena itu, mereka lebih transparan dibandingkan dengan ZK-SNARK.

ZK-STARK menghasilkan bukti yang lebih besar dibandingkan dengan ZK-SNARK yang berarti secara umum memiliki overhead verifikasi yang lebih tinggi. Namun, ada kasus (seperti membuktikan kumpulan data besar) di mana ZK-STARK mungkin lebih hemat biaya daripada ZK-SNARK.

Kasus penggunaan untuk bukti nol-pengetahuan

Pembayaran anonim

Pembayaran kartu kredit sering terlihat oleh beberapa pihak, termasuk penyedia pembayaran, bank, dan pihak-pihak lain yang tertarik (misalnya, otoritas pemerintah). Meskipun pengawasan keuangan memiliki manfaat untuk mengidentifikasi aktivitas ilegal, hal ini juga merusak privasi warga biasa.

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.

Perlindungan identitas

Sistem manajemen identitas saat ini mengancam informasi pribadi. Bukti pengetahuan nol dapat membantu individu memvalidasi identitas sambil melindungi rincian sensitif.

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.

Otentikasi

Menggunakan layanan online memerlukan bukti identitas dan hak Anda untuk mengakses platform-platform tersebut. Hal ini sering kali memerlukan penyediaan informasi pribadi, seperti nama, alamat email, tanggal lahir, dan sebagainya. Anda juga mungkin perlu menghafal kata sandi yang panjang atau berisiko kehilangan akses.

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

Komputasi yang dapat diverifikasi adalah aplikasi lain dari teknologi zero-knowledge untuk meningkatkan desain blockchain. Komputasi yang dapat diverifikasi memungkinkan kita untuk mengalihkan komputasi ke entitas lain sambil tetap memastikan hasil yang dapat diverifikasi. Entitas tersebut mengirimkan hasil bersama dengan bukti yang memverifikasi bahwa program tersebut dieksekusi dengan benar.

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:

  • Alih-alih memproses setiap transaksi, Ethereum memindahkan pelaksanaan ke rantai terpisah.
  • Setelah memproses transaksi, rantai lain mengembalikan hasil untuk diterapkan pada status Ethereum.

Manfaat di sini adalah bahwa Ethereum tidak perlu melakukan eksekusi apa pun dan hanya perlu menerapkan hasil dari komputasi yang dioutsourcing ke dalam statusnya. Hal ini mengurangi kemacetan jaringan dan juga meningkatkan kecepatan transaksi (protokol off-chain dioptimalkan untuk eksekusi yang lebih cepat).

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.

Mengurangi suap dan kolusi dalam pemungutan suara on-chain

Skema voting blockchain memiliki banyak karakteristik yang menguntungkan: mereka sepenuhnya dapat diaudit, aman dari serangan, tahan terhadap sensor, dan bebas dari kendala geografis. Namun, bahkan skema voting on-chain pun tidak kebal terhadap masalah kolusi.

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

(buka di tab baru)

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.

Bagaimana MACI bekerja dengan bukti pengetahuan nol?

Pada awalnya, koordinator mendeploy kontrak MACI di Ethereum, setelah itu pengguna dapat mendaftar untuk memilih (dengan mendaftarkan kunci publik mereka di kontrak pintar). Pengguna memberikan suara dengan mengirim pesan yang dienkripsi dengan kunci publik mereka ke kontrak pintar (suara yang valid harus ditandatangani dengan kunci publik terbaru yang terkait dengan identitas pengguna, di antara kriteria lainnya). Setelah itu, koordinator memproses semua pesan setelah periode pemungutan suara berakhir, menghitung suara, dan memverifikasi hasil secara on-chain.

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:

  • Alice mendaftar untuk memilih dengan mengirimkan kunci publik mereka ke kontrak pintar.
  • Alice setuju untuk memberikan suara pada opsi B sebagai imbalan suap dari Bob.
  • Alice memberikan suara untuk opsi B.
  • Alice secara diam-diam mengirim transaksi terenkripsi untuk mengganti kunci publik yang terkait dengan identitasnya.
  • Alice mengirim pesan (terenkripsi) lain ke kontrak pintar memilih opsi A menggunakan kunci publik baru.
  • Alice menunjukkan kepada Bob sebuah transaksi yang menunjukkan dia memilih opsi B (yang tidak valid karena kunci publik tidak lagi terkait dengan identitas Alice dalam sistem)
  • Saat memproses pesan, koordinator melewati suara Alice untuk opsi B dan hanya menghitung suara untuk opsi A. Oleh karena itu, upaya Bob untuk berkolusi dengan Alice dan memanipulasi suara on-chain gagal.

Menggunakan MACI membutuhkan kepercayaan pada koordinator untuk tidak berkolusi dengan penyuap atau berusaha menyuap pemilih sendiri. Koordinator dapat mendekripsi pesan pengguna (diperlukan untuk membuat bukti), sehingga mereka dapat memverifikasi dengan akurat bagaimana setiap orang memberikan suara.

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

(buka di tab baru)

) yang sangat bergantung pada integritas pilihan suara masing-masing individu.

Pelajari lebih lanjut tentang MACI

(buka di tab baru)

.

Kekurangan menggunakan bukti pengetahuan nol

Biaya perangkat keras

Menghasilkan bukti pengetahuan nol melibatkan perhitungan yang sangat kompleks yang paling baik dilakukan pada mesin khusus. Karena mesin-mesin ini mahal, mereka seringkali di luar jangkauan individu biasa. Selain itu, aplikasi yang ingin menggunakan teknologi bukti pengetahuan nol harus memperhitungkan biaya perangkat keras—yang mungkin meningkatkan biaya bagi pengguna akhir.

Biaya verifikasi bukti

Memverifikasi bukti juga membutuhkan komputasi kompleks dan meningkatkan biaya penerapan teknologi bukti nol dalam aplikasi. Biaya ini sangat relevan dalam konteks komputasi pembuktian. Misalnya, ZK-rollups membayar ~ 500.000 gas untuk memverifikasi satu bukti ZK-SNARK di Ethereum, dengan ZK-STARKs memerlukan biaya yang lebih tinggi.

asumsi kepercayaan

Dalam ZK-SNARK, String Referensi Umum (parameter publik) dihasilkan sekali dan tersedia untuk digunakan kembali oleh pihak yang ingin berpartisipasi dalam protokol pengetahuan nol. Parameter publik dibuat melalui sebuah upacara setup terpercaya, di mana para peserta diasumsikan jujur.

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.

Ancaman komputasi kuantum

ZK-SNARK menggunakan kriptografi kurva eliptis

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.

Disclaimer:

  1. Artikel ini dicetak ulang dari [ Ethereum]. Semua hak cipta adalah milik penulis asli [Ethereum]. Jika ada keberatan terhadap pencetakan ulang ini, harap hubungi Gate Belajartim, dan mereka akan menanganinya dengan cepat.
  2. Penolakan Tanggung Jawab atas Liabilitas: Pandangan dan opini yang terungkap dalam artikel ini semata-mata milik penulis dan tidak merupakan saran investasi apa pun.
  3. Terjemahan artikel ke dalam bahasa lain dilakukan oleh tim Gate Learn. Kecuali disebutkan, menyalin, mendistribusikan, atau menjiplak artikel yang telah diterjemahkan dilarang.

Apa itu bukti pengetahuan nol?

Pemula1/4/2024, 6:21:16 PM
Artikel ini memberikan bukti terperinci tentang Bukti Tanpa Pengetahuan (ZKP).

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.

Mengapa kita membutuhkan bukti pengetahuan nol?

Bukti nol pengetahuan mewakili terobosan dalam kriptografi terapan, karena mereka menjanjikan untuk meningkatkan keamanan informasi bagi individu. Pertimbangkan bagaimana Anda mungkin membuktikan klaim (mis., 'Saya adalah warga negara X') kepada pihak lain (mis., penyedia layanan). Anda perlu memberikan 'bukti' untuk mendukung klaim Anda, seperti paspor nasional atau SIM.

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.

Bagaimana bukti pengetahuan nol bekerja?

Bukti pengetahuan nol memungkinkan Anda membuktikan kebenaran suatu pernyataan tanpa harus membagikan isi pernyataan atau mengungkapkan bagaimana Anda menemukan kebenarannya. Untuk membuat hal ini mungkin, protokol pengetahuan nol mengandalkan algoritma yang mengambil beberapa data sebagai input dan mengembalikan 'benar' atau 'salah' sebagai output.

Protokol pengetahuan nol harus memenuhi kriteria berikut:

  1. 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.
  2. 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).
  3. 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

(buka di tab baru)

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.

Bukti pengetahuan nol interaktif

Meskipun revolusioner, bukti interaktif memiliki kegunaan terbatas karena memerlukan ketersediaan dan interaksi berulang kali antara kedua pihak. Bahkan jika verifikasi meyakini kejujuran pemberi bukti, bukti tersebut tidak akan tersedia untuk verifikasi independen (menghitung bukti baru memerlukan serangkaian pesan baru antara pemberi bukti dan verifikasi).

Untuk menyelesaikan masalah ini, Manuel Blum, Paul Feldman, dan Silvio Micali menyarankan yang pertamabukti pengetahuan nol interaktif

(buka di tab baru)

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:

Jenis-jenis bukti pengetahuan nol

ZK-SNARKs

ZK-SNARK adalah singkatan dari Zero-Knowledge Succinct Non-Interactive Argument of Knowledge. Protokol ZK-SNARK memiliki kualitas berikut:

  • Zero-knowledge: Seorang verifier dapat memvalidasi integritas suatu pernyataan tanpa mengetahui hal lain tentang pernyataan tersebut. Satu-satunya pengetahuan yang dimiliki verifier tentang pernyataan tersebut adalah apakah itu benar atau salah.
  • Singkat: Bukti pengetahuan nol lebih kecil dari saksi dan dapat diverifikasi dengan cepat.
  • Non-interaktif: Bukti ini 'non-interaktif' karena pemberi bukti dan verifikator hanya berinteraksi sekali, tidak seperti bukti interaktif yang memerlukan beberapa putaran komunikasi.
  • Argumen: Bukti tersebut memenuhi persyaratan 'kesesuaian', sehingga kecurangan sangat tidak mungkin terjadi.
  • Pengetahuan: Bukti pengetahuan nol tidak dapat dibangun tanpa akses ke informasi rahasia (saksi). Sulit, jika tidak mustahil, bagi seorang pembuktikan yang tidak memiliki saksi untuk menghitung bukti pengetahuan nol yang valid.

Kunci bersama yang disebutkan sebelumnya mengacu pada parameter publik yang disepakati oleh pihak pengaju dan pemeriksa untuk digunakan dalam menghasilkan dan memverifikasi bukti. Menghasilkan parameter publik (secara kolektif dikenal sebagai Common Reference String (CRS)) adalah operasi yang sensitif karena pentingnya dalam keamanan protokol. Jika entropi (keacakan) yang digunakan dalam menghasilkan CRS jatuh ke tangan pengaju yang tidak jujur, mereka dapat menghitung bukti palsu.

Komputasi Multipihak (MPC)

(buka di tab baru)

cara untuk mengurangi risiko dalam menghasilkan parameter publik. Beberapa pihak berpartisipasi dalam upacara setup terpercaya

(buka di tab baru)

, 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.

ZK-STARKs

ZK-STARK adalah singkatan dari Zero-Knowledge Scalable Transparent Argument of Knowledge. ZK-STARK mirip dengan ZK-SNARK, kecuali bahwa mereka:

  • Skalabel: ZK-STARK lebih cepat daripada ZK-SNARK dalam menghasilkan dan memverifikasi bukti ketika ukuran saksi lebih besar. Dengan bukti STARK, waktu pembuktian dan verifikasi hanya sedikit meningkat saat saksi bertambah (waktu pembuktian dan verifikasi SNARK meningkat secara linear dengan ukuran saksi).
  • Transparan: ZK-STARK mengandalkan keacakan yang dapat diverifikasi secara publik untuk menghasilkan parameter publik untuk pembuktian dan verifikasi daripada konfigurasi yang terpercaya. Oleh karena itu, mereka lebih transparan dibandingkan dengan ZK-SNARK.

ZK-STARK menghasilkan bukti yang lebih besar dibandingkan dengan ZK-SNARK yang berarti secara umum memiliki overhead verifikasi yang lebih tinggi. Namun, ada kasus (seperti membuktikan kumpulan data besar) di mana ZK-STARK mungkin lebih hemat biaya daripada ZK-SNARK.

Kasus penggunaan untuk bukti nol-pengetahuan

Pembayaran anonim

Pembayaran kartu kredit sering terlihat oleh beberapa pihak, termasuk penyedia pembayaran, bank, dan pihak-pihak lain yang tertarik (misalnya, otoritas pemerintah). Meskipun pengawasan keuangan memiliki manfaat untuk mengidentifikasi aktivitas ilegal, hal ini juga merusak privasi warga biasa.

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.

Perlindungan identitas

Sistem manajemen identitas saat ini mengancam informasi pribadi. Bukti pengetahuan nol dapat membantu individu memvalidasi identitas sambil melindungi rincian sensitif.

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.

Otentikasi

Menggunakan layanan online memerlukan bukti identitas dan hak Anda untuk mengakses platform-platform tersebut. Hal ini sering kali memerlukan penyediaan informasi pribadi, seperti nama, alamat email, tanggal lahir, dan sebagainya. Anda juga mungkin perlu menghafal kata sandi yang panjang atau berisiko kehilangan akses.

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

Komputasi yang dapat diverifikasi adalah aplikasi lain dari teknologi zero-knowledge untuk meningkatkan desain blockchain. Komputasi yang dapat diverifikasi memungkinkan kita untuk mengalihkan komputasi ke entitas lain sambil tetap memastikan hasil yang dapat diverifikasi. Entitas tersebut mengirimkan hasil bersama dengan bukti yang memverifikasi bahwa program tersebut dieksekusi dengan benar.

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:

  • Alih-alih memproses setiap transaksi, Ethereum memindahkan pelaksanaan ke rantai terpisah.
  • Setelah memproses transaksi, rantai lain mengembalikan hasil untuk diterapkan pada status Ethereum.

Manfaat di sini adalah bahwa Ethereum tidak perlu melakukan eksekusi apa pun dan hanya perlu menerapkan hasil dari komputasi yang dioutsourcing ke dalam statusnya. Hal ini mengurangi kemacetan jaringan dan juga meningkatkan kecepatan transaksi (protokol off-chain dioptimalkan untuk eksekusi yang lebih cepat).

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.

Mengurangi suap dan kolusi dalam pemungutan suara on-chain

Skema voting blockchain memiliki banyak karakteristik yang menguntungkan: mereka sepenuhnya dapat diaudit, aman dari serangan, tahan terhadap sensor, dan bebas dari kendala geografis. Namun, bahkan skema voting on-chain pun tidak kebal terhadap masalah kolusi.

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

(buka di tab baru)

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.

Bagaimana MACI bekerja dengan bukti pengetahuan nol?

Pada awalnya, koordinator mendeploy kontrak MACI di Ethereum, setelah itu pengguna dapat mendaftar untuk memilih (dengan mendaftarkan kunci publik mereka di kontrak pintar). Pengguna memberikan suara dengan mengirim pesan yang dienkripsi dengan kunci publik mereka ke kontrak pintar (suara yang valid harus ditandatangani dengan kunci publik terbaru yang terkait dengan identitas pengguna, di antara kriteria lainnya). Setelah itu, koordinator memproses semua pesan setelah periode pemungutan suara berakhir, menghitung suara, dan memverifikasi hasil secara on-chain.

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:

  • Alice mendaftar untuk memilih dengan mengirimkan kunci publik mereka ke kontrak pintar.
  • Alice setuju untuk memberikan suara pada opsi B sebagai imbalan suap dari Bob.
  • Alice memberikan suara untuk opsi B.
  • Alice secara diam-diam mengirim transaksi terenkripsi untuk mengganti kunci publik yang terkait dengan identitasnya.
  • Alice mengirim pesan (terenkripsi) lain ke kontrak pintar memilih opsi A menggunakan kunci publik baru.
  • Alice menunjukkan kepada Bob sebuah transaksi yang menunjukkan dia memilih opsi B (yang tidak valid karena kunci publik tidak lagi terkait dengan identitas Alice dalam sistem)
  • Saat memproses pesan, koordinator melewati suara Alice untuk opsi B dan hanya menghitung suara untuk opsi A. Oleh karena itu, upaya Bob untuk berkolusi dengan Alice dan memanipulasi suara on-chain gagal.

Menggunakan MACI membutuhkan kepercayaan pada koordinator untuk tidak berkolusi dengan penyuap atau berusaha menyuap pemilih sendiri. Koordinator dapat mendekripsi pesan pengguna (diperlukan untuk membuat bukti), sehingga mereka dapat memverifikasi dengan akurat bagaimana setiap orang memberikan suara.

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

(buka di tab baru)

) yang sangat bergantung pada integritas pilihan suara masing-masing individu.

Pelajari lebih lanjut tentang MACI

(buka di tab baru)

.

Kekurangan menggunakan bukti pengetahuan nol

Biaya perangkat keras

Menghasilkan bukti pengetahuan nol melibatkan perhitungan yang sangat kompleks yang paling baik dilakukan pada mesin khusus. Karena mesin-mesin ini mahal, mereka seringkali di luar jangkauan individu biasa. Selain itu, aplikasi yang ingin menggunakan teknologi bukti pengetahuan nol harus memperhitungkan biaya perangkat keras—yang mungkin meningkatkan biaya bagi pengguna akhir.

Biaya verifikasi bukti

Memverifikasi bukti juga membutuhkan komputasi kompleks dan meningkatkan biaya penerapan teknologi bukti nol dalam aplikasi. Biaya ini sangat relevan dalam konteks komputasi pembuktian. Misalnya, ZK-rollups membayar ~ 500.000 gas untuk memverifikasi satu bukti ZK-SNARK di Ethereum, dengan ZK-STARKs memerlukan biaya yang lebih tinggi.

asumsi kepercayaan

Dalam ZK-SNARK, String Referensi Umum (parameter publik) dihasilkan sekali dan tersedia untuk digunakan kembali oleh pihak yang ingin berpartisipasi dalam protokol pengetahuan nol. Parameter publik dibuat melalui sebuah upacara setup terpercaya, di mana para peserta diasumsikan jujur.

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.

Ancaman komputasi kuantum

ZK-SNARK menggunakan kriptografi kurva eliptis

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.

Disclaimer:

  1. Artikel ini dicetak ulang dari [ Ethereum]. Semua hak cipta adalah milik penulis asli [Ethereum]. Jika ada keberatan terhadap pencetakan ulang ini, harap hubungi Gate Belajartim, dan mereka akan menanganinya dengan cepat.
  2. Penolakan Tanggung Jawab atas Liabilitas: Pandangan dan opini yang terungkap dalam artikel ini semata-mata milik penulis dan tidak merupakan saran investasi apa pun.
  3. Terjemahan artikel ke dalam bahasa lain dilakukan oleh tim Gate Learn. Kecuali disebutkan, menyalin, mendistribusikan, atau menjiplak artikel yang telah diterjemahkan dilarang.
Bắt đầu giao dịch
Đăng ký và giao dịch để nhận phần thưởng USDTEST trị giá
$100
$5500