Jawaban baru (10/24): Saya pikir makalah berikut ini memberikan solusi yang elegan dan efisien untuk masalah Anda:
Mereka menunjukkan bagaimana membangun algoritma enkripsi kunci-publik dengan dua properti berguna berikut:E(⋅)
Aditif homomorfik. Mengingat dan , siapa pun dapat menghitung .E(x)E(y)E(x+y)
Dapat bertambah banyak (sekali). Diberikan dan (tidak ada yang dihasilkan sebagai hasil dari operasi multiplikasi), siapa pun dapat menghitung . Anda dapat menggunakan hasil dalam operasi penjumlahan, tetapi Anda tidak dapat menggunakannya dalam operasi perkalian mana pun (hasil perkalian ternoda, dan nilai-nilai tercemar tidak dapat digunakan sebagai input untuk perkalian lain).E(x)E(y)E(x⋅y)
Konsekuensinya adalah bahwa, diberi kuadrat multivariat polinomial , dan diberikan , siapa pun dapat menghitung enkripsi dari . Ini sangat berguna untuk situasi Anda.Ψ(x1,…,xn)E(x1),…,E(xn)Ψ(x1,…,xn)
Khususnya, dalam situasi Anda, kami dapat membentuk polinomial
Perhatikan bahwa ini adalah polinomial multivarian kuadratik, sehingga mengingat semua , siapa pun dapat menghitung . Perhatikan juga bahwa , jadi kami mencoba menghitung dengan tepat nilai polinomial ini.
Ψ(b1,b2,…,bN)=∑i≠j[bi(1−bj)].
E(bi)E(Ψ(b1,…,bN))R=Ψ(b1,…,bN)
Ini menyarankan protokol alami untuk masalah Anda, menggunakan versi ambang batas skema enkripsi dalam makalah yang dirujuk di atas:
- Semua orang bersama-sama menghasilkan keypair publik / pribadi untuk versi ambang batas dari skema ini, sehingga kunci publik diketahui oleh semua orang tetapi kunci pribadi dibagikan di antara semua orang (itu membutuhkan kerja sama semua pihak untuk mendekripsi ciphertext yang dienkripsi di bawah kunci publik ini. ). Kunci publik disiarkan ke semua peserta.NN
- Setiap peserta menghitung dan menyiarkan ke semua peserta lainnya. Semua orang memeriksa bahwa ini telah dilakukan dengan jujur.iE(bi)E(bi)
- Setiap peserta menghitung menggunakan properti homomorfik dari skema enkripsi ini dan pengetahuan tentang . Semua orang mengecek bahwa mereka mendapat nilai yang sama.E(R)=E(Ψ(b1,…,bN))E(b1),…,E(bN)
- Para peserta bersama-sama menggunakan protokol dekripsi ambang untuk memulihkan dari . (Perhatikan bahwa mereka hanya akan menerapkan protokol dekripsi ambang batas untuk ciphertext yang satu ini; peserta yang jujur akan menolak untuk berpartisipasi dalam mendekripsi ciphertext lainnya.)NRE(R)
- Semua orang membuktikan entah bagaimana (mungkin melalui bukti ZK) bahwa mereka melakukan setiap langkah dengan benar.
Anda harus mengisi beberapa detail, tetapi saya yakin Anda dapat memperluas sketsa / garis besar ini untuk mendapatkan protokol yang akan menyelesaikan masalah Anda secara efisien dan aman.
Jawaban lama saya:
Saya masih akan mencari protokol multipartai yang aman untuk menghitung jumlah .S=∑jbj
Satu-satunya cara yang kurang dari skema Anda adalah itu mengungkapkan satu bit tambahan: itu mengungkapkan apakah atau tidak. Apakah itu sedikit informasi penting dalam pengaturan Anda?S<N/2
Anda mengatakan jumlah sensitif dalam aplikasi Anda. Saya harap Anda sadar bahwa mengungkapkan nilai mengungkapkan hingga dua kemungkinan (yaitu, mengingat , kita dapat menghitung nilai sedemikian rupa sehingga ).SRSRQS∈{Q,N−Q}
Jika Anda benar-benar harus menyembunyikan informasi ini, berikut adalah pendekatan berbeda yang mungkin dapat Anda lakukan. Untuk setiap pasangan pihak , aman menghitung mana , adalah operasi xor, dan adalah semacam enkripsi aditif-homomorfik tambahan skema. Maka Anda mungkin dapat menghitung dari ini. Ada beberapa detail untuk dikerjakan dan model ancaman mungkin bukan yang Anda harapkan, tetapi mungkin Anda bisa membuat sesuatu seperti ini berhasil.i,jE(ci,j)ci,j=bi⊕bj⊕E∑i<jci,j=R