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.
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.
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:
Dalam bentuk dasar, bukti pengetahuan nol terdiri dari tiga elemen: saksi, tantangan, dan respons.
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.
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
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:
ZK-SNARK adalah singkatan dari Zero-Knowledge Succinct Non-Interactive Argument of Knowledge. Protokol ZK-SNARK memiliki kualitas berikut:
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.
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.
ZK-STARK adalah singkatan dari Zero-Knowledge Scalable Transparent Argument of Knowledge. ZK-STARK mirip dengan ZK-SNARK, kecuali bahwa mereka:
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.
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.
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.
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 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:
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.
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
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.
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:
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
) yang sangat bergantung pada integritas pilihan suara masing-masing individu.
Pelajari lebih lanjut tentang MACI
.
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.
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.
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.
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.
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.
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.
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:
Dalam bentuk dasar, bukti pengetahuan nol terdiri dari tiga elemen: saksi, tantangan, dan respons.
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.
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
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:
ZK-SNARK adalah singkatan dari Zero-Knowledge Succinct Non-Interactive Argument of Knowledge. Protokol ZK-SNARK memiliki kualitas berikut:
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.
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.
ZK-STARK adalah singkatan dari Zero-Knowledge Scalable Transparent Argument of Knowledge. ZK-STARK mirip dengan ZK-SNARK, kecuali bahwa mereka:
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.
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.
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.
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 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:
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.
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
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.
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:
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
) yang sangat bergantung pada integritas pilihan suara masing-masing individu.
Pelajari lebih lanjut tentang MACI
.
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.
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.
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.
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.