Review protokol kriptografi dari sistem voting elektronik jarak jauh

Pada artikel ini, kami akan menganalisis detail penerapan protokol kriptografi sistem pemungutan suara elektronik jarak jauh.



Penggunaan mekanisme dan algoritme kriptografi pada berbagai tahapan proses pemilihan memberikan properti yang diperlukan pada sistem pemungutan suara jarak jauh. Mari kita lihat lebih dekat dan pertimbangkan tahapan pemungutan suara yang dijelaskan dalam artikel ikhtisar .



Inisialisasi sistem. Pada tahap inisialisasi pemungutan suara, operasi kriptografi berikut dilakukan:



  • Pengembangan pasangan kunci validator untuk mengeluarkan dan memverifikasi tanda tangan buta, sebagai yang paling gigih dan direkomendasikan oleh komunitas akademis untuk prosedur anonimisasi dalam sistem pemungutan suara elektronik. Saat ini sistem mendukung algoritma tanda tangan buta pada kurva elips dan berdasarkan pada algoritma enkripsi RSA. Pemungutan suara dilakukan dengan menggunakan algoritma untuk mengeluarkan dan memverifikasi tanda tangan buta berdasarkan algoritma enkripsi RSA dengan panjang kunci 4096 bit.
  • Pembuatan kunci enkripsi publik bersama. Untuk keamanan yang lebih baik dalam proses pembuatan kunci, dua algoritme kriptografik digunakan sekaligus: protokol pembuatan kunci terdistribusi DKG Pedersen 91 dan protokol berbagi kunci Shamir. Pembuatan kunci dilakukan baik oleh peserta yang memiliki sarana teknis untuk mengontrol secara langsung node jaringan dan server penghitungan, maupun oleh peserta yang merupakan penjaga kunci yang direkam pada media eksternal. Hasil kerja kedua algoritme tersebut adalah kunci publik umum untuk mengenkripsi surat suara. Selanjutnya, kita akan melihat lebih dekat prosedur untuk menghasilkan kunci ini.


Memberikan akses ke buletin . Pada tahap ini, mekanisme berikut berfungsi:



  • Pembuatan pasangan kunci dari tanda tangan elektronik pada perangkat pemilih sesuai dengan GOST R 34.10-2012
  • Pembuatan tanda tangan buta untuk kunci publik bertopeng pemilih untuk sertifikasi dan verifikasi berikutnya atas haknya untuk mengambil bagian dalam pemungutan suara. Mekanismenya saat ini didasarkan pada algoritma enkripsi RSA. Mekanisme anonimisasi dibahas secara rinci dalam artikel terpisah.


Mengisi dan mengirim buletin . Pada tahap ini, sekumpulan algoritma kriptografi berikut digunakan:



  • Enkripsi kurva eliptik buletin sesuai dengan skema ElGamal. Skema ini digunakan dalam protokol, karena selain itu memiliki properti homomorfik, yang memungkinkan untuk memperoleh hasil pemungutan suara tanpa mendekripsi setiap surat suara.
  • Bukti jarak terputus Chaum-Pedersen digunakan untuk membuktikan kebenaran isi surat suara tanpa mendekripsinya. Kami akan menganalisis mekanisme ini secara rinci di artikel berikutnya.
  • Tanda tangan elektronik dari buletin terenkripsi sesuai dengan GOST R 34.10-2012.


Menghitung totalnya. Pada tahap penjumlahan, berikut ini dilakukan:



  • Penambahan homomorfik dari surat suara terenkripsi.
  • Dekripsi parsial awal dari surat suara yang diringkas akhir oleh bagian-bagian dari kunci privat oleh peserta yang mengontrol node individu dan menghitung server dengan menerima ciphertext dari masing-masing peserta;
  • Merakit kunci pribadi di Komisi Pemilihan dan dekripsi sebagian dari surat suara ringkasan akhir dengan kunci yang dikumpulkan.
  • Penjumlahan akhir dari ciphertext dan penerimaan hasil penghitungan.
  • Generasi dan verifikasi bukti pengetahuan nol Chaum-Pedersen. Digunakan untuk membuktikan kebenaran dekripsi surat suara ringkasan akhir. Kami akan menganalisis mekanisme ini secara rinci di artikel berikutnya.


Audit . Pada tahap ini, pemeriksaan validasi dari semua tahapan protokol dapat dilakukan, dan pada artikel ini kita akan melihat lebih dekat kemungkinan pemeriksaan.



Mari kita lihat lebih dekat mekanisme kriptografi.



Platform blockchain



Sebelum berbicara tentang prosedur untuk menghasilkan kunci, Anda perlu memberikan pengantar tentang implementasi platform blockchain.



Gambar di bawah ini menunjukkan tata letak target yang disederhanakan dari platform blockchain.







Penempatan dan reservasi node blockchain terjadi di pusat data PJSC Rostelecom yang didistribusikan secara geografis. Dalam hal ini, tanggung jawab untuk sekumpulan komponen "atom" yang terlibat dalam penyimpanan semua data pemungutan suara dapat dilimpahkan ke KPU atau berbagai lembaga pemantau publik.



Hal ini dilakukan untuk memberikan kesempatan kepada peserta untuk mengontrol komponen utama sistem dan node jaringan, dan pada saat yang sama tidak menangani masalah dengan keamanan informasi, penyebaran dan pengoperasian sarana teknis, serta memastikan skalabilitas sistem.



Daftar peserta dapat berubah dari waktu ke waktu - dari yang minimal pada tahap peluncuran sistem menjadi operasi industri, menjadi yang cukup luas dan sepenuhnya terdesentralisasi seiring berkembangnya sistem. Dalam hal ini, selalu ada kemungkinan untuk menempatkan sekumpulan komponen di luar pusat data.



Solusi domestik Waves Enterprise digunakan sebagai platform blockchain. Transaksi dan blok ditandatangani sesuai dengan GOST R 34.10-2012.



Menghasilkan kunci enkripsi



Kunci publik untuk enkripsi surat suara dibuat menggunakan dua algoritme kriptografi: Protokol Pembagian Kunci Terdistribusi DKG Pedersen 91 dan Protokol Berbagi Kunci Shamir. Berdasarkan masing-masing algoritme ini, kunci publik "perantara" dibuat. Kemudian kedua kunci ini digabungkan menjadi satu yang sama.



Diagram perakitan kunci ditunjukkan di bawah ini pada gambar.







Secara umum, skema semacam itu mungkin tampak mubazir, tetapi dengan cara inilah kita bisa mendapatkan kerahasiaan maksimum dari pemungutan suara sebelum berakhir. Hal ini disebabkan oleh fakta bahwa kunci pribadi yang dihasilkan menggunakan protokol DKG tidak pernah berada di satu tempat dalam bentuk rakitan dan tidak dapat dicuri dengan jahat sebelum atau sesudah pembuatan, dan bagian-bagiannya dimiliki oleh pihak independen yang berinteraksi satu sama lain hanya melalui blockchain.



Tetapi jika Anda tidak dapat mengumpulkan kuorum peserta independen, rutinitas jaringan blokcheyn mulai memisahkan kunci antara partai independen, yang merupakan penjaga dari masing-masing bagian dari kunci untuk dicatat ke media eksternal (kunci Komisi)



prosedur untuk enkripsi kunci publik umum dimulai pada malam pemungutan suara, membuat prosedur terbuka untuk Komisi kunci... Pada titik waktu tertentu sebelum dimulainya pemungutan suara, di hadapan pengamat dan jurnalis di laptop aman yang tidak terhubung ke jaringan lokal atau Internet, menggunakan utilitas khusus, pasangan kunci dibuat, diikuti dengan membagi kunci pribadi menjadi bagian n1 dan merekamnya di media khusus. Komisi pemilihan, dengan keputusannya, menentukan pembawa bagian-bagian kunci privat. Pada tahap membuat dan menginisialisasi pemungutan suara, kunci publik dari komisi akan dicatat di blockchain.



Kemudian pembuatan pemungutan suara di jaringan blockchain dimulai. Setelah membuat pemungutan suara di server penghitungan, prosedur untuk membuat kunci publik DKG dimulai secara otomatis .



Peserta dalam prosedur pembuatan kunci terdistribusi adalah n server penghitungan suara, yang telah kami tulis sebelumnya di artikel ulasan . Semua operasi interaksi antara server penghitungan, baik perantara maupun final, dicatat dalam blockchain, dan, oleh karena itu, transparan dan dapat diverifikasi. Sistem menerapkan skema ambang batas "k out of n", yaitu saat mendekripsi data, tidak diperlukan partisipasi semua n pihak yang membentuk DKG kunci publik, jumlah peserta k yang lebih kecil sudah cukup. Ini memungkinkan mendekripsi hasil pemungutan suara bahkan jika server penghitung nk tidak tersedia atau kunci pribadinya telah hilang.



Untuk menghasilkan kunci publik, algoritme DKG (Pembangkitan Kunci Terdistribusi) digunakan, yang dijelaskan dalam artikel "Kriptosistem ambang batas tanpa pihak tepercaya" oleh Torben Pryds Pedersen, ditransfer ke kurva elips. Diasumsikan bahwa setiap server memiliki konstanta (dicatat oleh registrar di akuntan) pasangan kunci Diffie-Hellman yang digunakan untuk transmisi data yang aman ke server ini (ekspor / impor key share).



Parameter protokol



  • Kurva eliptik E dan generator P dari subkelompok dari kurva bilangan prima besar q ini. Implementasi saat ini menggunakan kurva secp256k1 .
  • Generator Q lain dari subgrup yang sama yang nilainya x:Q=xβ‹…P tidak diketahui siapa pun.
  • (k, n), di mana n adalah jumlah total peserta yang menghasilkan pasangan kunci, dan k adalah jumlah minimum peserta yang diperlukan untuk memulihkan rahasia bersama, sedangkan k≀(n+1)/2... Artinya, jika peserta k-1 disusupi atau kunci mereka dicuri, ini tidak akan memengaruhi keamanan rahasia bersama dengan cara apa pun.




Secara umum, algoritma untuk mendapatkan titik Q adalah sebagai berikut: urutan byte apa pun yang diambil, misalnya, string "Halo, Dunia!", Dan hash h = Hash ("Halo, Dunia!" mempertimbangkan x0=hmodp, di mana p adalah modulus kurva, kami mengganti x0 ke dalam persamaan kurva: y2=x03+aβˆ—x0+bmodpdan mencoba menyelesaikannya sehubungan dengan y. Dengan tidak adanya solusi, kita menambah x0 dan sekali lagi mencoba menyelesaikan persamaan untuk nilai baru x0, dan seterusnya.



Langkah 0.

Masing-masing dari n server diberi nomor urut unik dari 1 sampai n. Ini diperlukan karena koefisien Lagrange bergantung pada nomor seri server.



Langkah 1 - membuat DKG kunci publik.



Setiap server ke-j, j = 1, ..., n:

1. Menghasilkan sepasang kunci pribadi γ€–privγ€— _j dan kunci publikPubj=privjβ‹…P.

2. Membuat komitmen Pedersen untuk kunci publik:

Menghasilkan angka acak r_j

Menghitung poinCj=rjβ‹…Q+Pubj

Cjditerbitkan menggunakan meter

3. Setelah semua server mempublikasikan nilai C_i mereka, skalar r_j diterbitkan.



Dengan menggunakan skalar, siapa pun dapat memulihkan kunci publik setiap serverPubj=Cjβˆ’rjβ‹…Q dan menghitung DKG kunci publik Pub=βˆ‘(j=1)nPubj...

DKG kunci publik ditulis ke blockchain.



Langkah 2 - menghasilkan polinomial dan mendistribusikan bayangan.



Setiap server ke-j, j = 1,…, n:



1. Menghasilkan polinomial acak dengan derajat k-1:

fj(x)=f(j,0)+f(j,1)β‹…x+β‹―+f(j,kβˆ’1)β‹…x(kβˆ’1),

dimana koefisiennya f(j,0)=privj, dan sisanya adalah elemen acak dari field GF (q).



2. Menghitung nilai polinomialfj(i),i=1,…,n,iβ‰ j.



3. Mengenkripsi nilai fj(i)menggunakan kunci ekspor / impor publik, server ke-i untuk setiap i dan menerbitkan hasil enkripsi menggunakan pengukur.



Langkah 3 - memeriksa koefisien polinomial.



Setiap server ke-j, j = 1, ..., n:



1. Menerbitkan setiap koefisien polinomialnya dikalikan dengan generator P.

F(j,0)=f(j,0)β‹…P,F(j,1)=f(j,1)β‹…P,…,F(j,kβˆ’1)=f(j,kβˆ’1)β‹…P

2. Mendekode semua arti fi(j),i=1,..,n,i≠jdan memeriksa kebenarannya:

MenghitungA=fi(j)β‹…P

Menghitung jumlah

Jika A = B, maka hasilnya diterima, jika tidak ada keluhan yang diterbitkan terhadap server i, dan protokol dimulai dari awal - lanjutkan ke langkah 0.

3. Jika tidak ada yang memiliki keluhan, maka itu menghitung kunci pribadinya.







DKG kunci publik dapat dipulihkan dan diverifikasi terhadap data yang ditulis oleh server penghitung ke blockchain pada tahap inisiasi pemungutan suara. Penting untuk mengambil poin kunci publik dari semua dekripsi dan menambahkannya. Hasilnya akan menjadi nilai yang sama yang dicatat di blockchain sebagai kunci publik DKG.



Selanjutnya, berdasarkan kunci publik dari komisi, yang dimuat ke dalam sistem, dan kunci publik dari server penghitungan, kunci enkripsi publik umum dibuat sesuai dengan rumus berikut:



MainPubKey = Hash (PubDKG, PubCommission) * PubDKG + Hash (PubCommission, PubDKG) * PubCommission



Semua kunci publik ditulis ke blockchain bersama dengan perhitungan menengah untuk memudahkan pemeriksaan oleh pengamat. Kunci enkripsi publik bersama dibaca dari blockchain dan dikirimkan ke perangkat pengguna saat buletin ditampilkan.



Deskripsi Skema Enkripsi Buletin



Berikut adalah uraian prosedur enkripsi surat suara menggunakan skema El-Gamal pada kurva elips.



Skema enkripsi El Gamal pada kurva elips memungkinkan seseorang untuk mengimplementasikan enkripsi yang homomorfik sehubungan dengan penambahan, di mana, sebagai hasil dari operasi penambahan pada teks sandi, diperoleh jumlah terenkripsi dari nilai asli.



Terenkripsi (A) + Terenkripsi (B) = Terenkripsi (A + B).



Untuk menggunakan properti algoritme ini, surat suara elektronik yang lengkap direpresentasikan sebagai rangkaian nol dan satu. Jumlah karakter sesuai dengan jumlah pilihan, sedangkan pilihan yang dipilih diwakili oleh satu, pilihan lainnya diwakili oleh nol.



Panjang kunci privat saat menggunakan algoritma ElGamal pada kurva elips dipilih menjadi 256 bit, sedangkan kunci publik adalah titik pada kurva elips. Ini sesuai dengan tingkat keamanan 128 bit (operasi titik kurva 2 ^ 128 diperlukan untuk memecahkan). Tingkat ini dianggap optimal untuk sebagian besar sistem industri dan keuangan modern, termasuk standar Rusia GOST 34.10-2018 β€œTeknologi informasi. Perlindungan informasi kriptografi. Proses Pembentukan dan Verifikasi Tanda Tangan Digital Elektronik "(versi 256 bit).



Secp256k1 digunakan sebagai kurva elips.



Misalkan kita memiliki pasangan kunci priv, Pub:

Number priv: 0 <priv <q

Point Pub = priv *



Enkripsi Basis :



  • Ada pesan m, angka kecil yang ingin kita enkripsi pada kunci Pub.
  • Hitung titik M = m * Alas
  • Hasilkan nomor acak r: 0 <r <q
  • Hitung titik R = r * Basis dan titik C = M + r * Pub
  • Teks sandi: (R, C)


Dekripsi:



  • Memiliki private key priv dan ciphertext (R, C)
  • Hitung titik M = C - priv * Base
  • Merekonstruksi m: menyelesaikan dengan brute-force ECDLP untuk rasio M = m * Base


Homomorfisme skema.



Kami melihat itu jika kami mengenkripsi dua pesanM1=m1βˆ—Base dan M2=m2βˆ—Base pada kunci Pub:

(R1,C1)=(r1βˆ—Base,M1+r1βˆ—Pub)

(R2,C2)=(r2βˆ—Base,M2+r2βˆ—Pub)



Lalu jumlah mereka (R1+R2,C1+C2) cocok dengan pesan terenkripsi M1+M2...



Dengan demikian, semua surat suara bisa dienkripsi dan dilipat "calon demi calon". Sebagai contoh, biarkan buletin terbuka terlihat seperti ini:



Ivanov Petrov Sidorov



0 1 0




Kemudian, mengubahnya menjadi poin, kita mendapatkan:



Ivanov Petrov Sidorov



ZeroPoint Base ZeroPoint di



mana ZeroPoint adalah titik tanpa batas.



Dan terakhir, kami mengenkripsi buletin pada kunci Pub:



Ivanov Petrov Sidorov



(r1βˆ—Base,r1βˆ—Pub) (r2βˆ—Base,Base+r2βˆ—Pub) (r3βˆ—Base,r3βˆ—Pub)



Katakanlah kita telah melakukan pemungutan suara seperti itu dengan pemilih N. Jika untuk Ivanov, Petrov dan Sidorov kami menambahkan ciphertext secara terpisah dari surat suara yang berbeda, maka kami mendapatkan surat suara ringkasan, yang berisi jumlah terenkripsi untuk masing-masing kandidat. Surat suara ringkasan ini dapat didekripsi dengan kunci dekripsi dan hasil pemungutan suara untuk masing-masing kandidat dapat ditemukan.



Gambar di bawah ini menunjukkan skema penumpukan dan validasi surat suara homomorfik berdasarkan bukti pengetahuan nol.







Seperti yang dapat kita lihat dari diagram, penyerang potensial tidak memiliki cara untuk "memberikan" suara tambahan dengan mengenkripsi nomor yang salah di tingkat protokol kriptografi. Ini dilakukan dengan menggunakan bukti pengetahuan nol, yang akan dibahas nanti di artikel. Selain itu, pemeriksaan yang diperlukan juga diterapkan di aplikasi web pemilih.



Deskripsi prosedur dekripsi



Suara dihitung tanpa dekripsi karena enkripsi homomorfik sesuai dengan skema El-Gamal, yang memungkinkan menjaga kerahasiaan seluruh prosedur pemungutan suara dan setiap suara individu. Selain itu, tidak ada server yang memiliki kemampuan untuk secara independen dan diam-diam mendekripsi hasil pemungutan suara.



Untuk mendekripsi ciphertext (R, C), setiap k dari n server harus menghitung dan mempublikasikan nilainya.sjβ‹…R dan bukti kebenaran dekripsi Chaum-Pedersen (bukti bahwa dihitung sjβ‹…R Tepatnya adalah titik R dikalikan sjtanpa mengungkapkan artinya sj). Juga, untuk ini, perlu untuk mengumpulkan kunci privat komisi dari setidaknya k1 dari t1 bagian dan dengan bantuannya juga melakukan perhitungansjβ‹…Rdengan publikasi ke blockchain.







Dekripsi terjadi dalam beberapa tahap, yang hasilnya masing-masing dicatat di blockchain.



Langkah pertama- dekripsi parsial. Setiap K dari server N sistem menambahkan teks sandi dari suara, menerima ringkasan surat suara, dan mendekripsi kunci suara pribadi di bagiannya. Hasil dari operasi ini akan menjadi ciphertext, yang kombinasi dengan ciphertext yang diperoleh sebagai hasil dari operasi yang sama yang dilakukan pada server penghitungan lainnya, serta dengan ciphertext yang diterima pada kunci pribadi komisi, akan memberikan hasil akhir yang didekripsi. Penting untuk dicatat bahwa jika tidak ada ciphertext yang diperoleh dari dekripsi pada private key komisi, semua ciphertext lainnya menjadi tidak berguna. Tidak mungkin mendapatkan hasil apa pun dari mereka.



Hasil operasi dipublikasikan di blockchain.



Fase kedua- perakitan kunci pribadi komisi dan dekripsi parsial surat suara ringkasan. Operasi ini dilakukan pada PC khusus tanpa koneksi Internet. Setelah kunci dikumpulkan, operasi yang dijelaskan di paragraf sebelumnya berlangsung untuk membentuk teks tersandi pada kunci komisi. Hasil operasi ini juga dicatat di blockchain.



Tahap ketiga adalah decoding terakhir. Server penghitungan suara mengumpulkan hasil K dari server N, hasil dekripsi pada kunci pribadi komisi, dan menghasilkan dekripsi akhir, lalu mempublikasikan hasil pemungutan suara.



Harap dicatat bahwa keberadaan ciphertext yang dihasilkan pada kunci privat dari komisi merupakan prasyarat. Tanpa itu, penghitungan hasil tidak akan terjadi.



Berdasarkan hasil dekripsi parsial yang dipublikasikan, setiap pihak yang berkepentingan dapat mengulangi proses tersebut dan memverifikasi bahwa hasilnya dihitung dengan benar.



Bukti pengetahuan nol



Meskipun sistem DEG dilindungi dari penyusup dan kesalahan pengguna di tingkat perangkat lunak dan infrastruktur, bukti dan pemeriksaan matematis tambahan disediakan di tingkat protokol kriptografi, yang tidak memungkinkan transfer informasi palsu ke sistem. Untuk ini, beberapa mekanisme telah dikembangkan berdasarkan non-interactive zero-knowledge proof (NIZK).



Jenis ZKP (bukti pengetahuan-nol) pertama yang diterapkan dalam sistem adalah bukti jangkauan. Data ZKP digunakan saat menerbitkan surat suara terenkripsi sehingga, jika tidak ada informasi tentang cara pemilih memberikan suara, dapat dipastikan bahwa pemilih tidak merusak surat suara di perangkatnya dengan salah satu cara berikut:



  • peserta tidak mengenkripsi nilai yang lebih besar dari satu dalam surat suara untuk opsi pemungutan suara terpisah, yang akan mempengaruhi hasil pemungutan suara dalam kasus "penambahan terenkripsi";
  • peserta tidak memilih lebih dari satu pilihan untuk setiap pertanyaan dalam surat suara, kecuali ditentukan oleh prosedur pengisian surat suara.


Penjelasan lebih rinci tentang implementasi NIZK, serta verifikasinya, akan dibahas dalam artikel terpisah.



Struktur catatan di blockchain



Semua informasi di blockchain dicatat oleh tiga jenis transaksi:



  • CreateContract - untuk membuat kontrak pintar untuk pemungutan suara tertentu. Lebih lanjut dalam kontrak pintar ini semua informasi tentang pemungutan suara akan dikumpulkan. Jika dua (atau lebih) suara diadakan secara bersamaan, maka dua (atau lebih) salinan kontrak akan dibuat, masing-masing.
  • CallContract - untuk berinteraksi dengan kontrak pintar untuk berbagai operasi, daftarnya diberikan di bawah ini.
  • Transaksi data - untuk merekam daftar pemilih setelah membuat contoh kontrak cerdas pemungutan suara dan sebelum memulai pemungutan suara itu sendiri.


Interaksi dengan kontrak pintar dilakukan sesuai dengan operasi berikut:



  • Menulis data dasar ke kontrak pintar. Kunci publik dari server penghitungan yang akan berpartisipasi dalam protokol kriptografi, skema ambang batas, kunci verifikasi tanda tangan buta, dan data lain yang diperlukan untuk mengatur protokol dan pemungutan suara secara umum disimpan di sini.
  • dkgScalar, dkgCommit, dkgShadows - data yang diperlukan untuk membangun kunci publik untuk enkripsi surat suara dan menerapkan ambang k dari n skema. Kami akan membicarakan lebih lanjut tentang ini nanti di artikel.
  • addMainKey – .
  • blindSigIssue – .
  • vote – .
  • finishVoting – . .
  • Decryption – . .
  • ComissionDecryption – .
  • Results – . , .


Transaksi suara pemilih mencakup alamat blockchain pemilih dan kunci publik, surat suara terenkripsi, tanda tangan buta, dan tanda tangan elektronik yang dibuat pada kunci pribadi anonim pemilih (lihat artikel yang diterbitkan sebelumnya tentang anonimisasi).



Gambar di bawah ini menunjukkan tampilan transaksi dengan suara di klien blockchain.











Semua informasi tentang pemungutan suara dikumpulkan pada kontrak pintar dan akan tersedia melalui klien blockchain untuk pengamat atau dalam bentuk file csv kepada siapa pun.



Gambar di bawah ini menunjukkan tampilan informasi agregat dalam kontrak pintar.





* Data dari server uji.



Fitur platform Waves Enterprise memungkinkan Anda untuk mengimplementasikan logika yang agak rumit dengan model status, verifikasi tanda tangan buta, dan menghitung surat suara yang valid dan rusak.



Protokol kriptografi dan pemeriksaan proses pemungutan suara



Pemeriksaan dasar pertama yang dapat dilakukan menggunakan platform blockchain dan klien blockchain adalah untuk memeriksa apakah jumlah pemilih di daftar pemilih sesuai dengan jumlah surat suara yang dikeluarkan dan jumlah suara yang dicatat.



Pengecekan kebenaran penghitungan dilakukan dengan mengulangi pekerjaan server penghitungan oleh pemantau untuk meringkas surat suara terenkripsi calon per calon. Ini dilakukan dengan menambahkan secara berurutan titik-titik kurva elips yang sesuai dengan masing-masing kandidat.



Kemudian, dengan menggunakan buletin ringkasan terenkripsi yang diterima dan bukti dekripsi yang benar, yang dipublikasikan di blockchain, adalah mungkin untuk memeriksa kebenaran penjumlahan dan dekripsi parsial yang dilakukan oleh setiap server penghitung.



Pada tahap ini, jelas apakah jumlah terenkripsi yang diterima oleh pengamat sesuai dengan apa yang dicatat oleh masing-masing server penghitung.



Setelah itu, Anda bisa mengecek kebenaran dekripsi hasil voting. Untuk melakukan ini, Anda perlu mengambil teks sandi dari transaksi dengan jenis operasi Dekripsi dan Dekripsi Komisi dan, dengan analogi dengan surat suara, tambahkan titik-titik kurva elips untuk setiap kandidat.



Kode sumber untuk operasi kriptografi tersedia di repositori GitHub ini .



All Articles