如何使用安全多方計算計算安全總和?
假設有三個選民 $ P $ , $ Q $ 和 $ R $ ,並且每個人只會投票給一個候選人 $ X $ , $ Y $ 或者 $ Z $ , 一個 6 位的投票向量對應於 $ X $ , $ Y $ 和 $ Z $ 分別(每個候選者有 2 位。例如, $ ( 01, 00, 00 ) $ 表示投票 $ X $ ).
任何選民如何通過使用安全的多方計算,在不透露他們的偏好的情況下找出每個候選人的總票數?
每個 6 位投票向量被加密並發送給某個第三方,該第三方將獲取密文投票的乘積,然後解密該乘積以產生一個位向量,該位向量顯示每個候選人收到的偏好總數(Paillier 密碼系統)。
密碼系統必須在明文和密文空間中保持什麼同態屬性才能滿足目標?
最後,我需要一些理論解釋來找到使用 SMP(有和沒有隨機種子)和 SMC 對數字進行排序的安全總和。
一般來說,有許多安全多方計算技術。然而,投票的問題遠不止於此,如果你真的感興趣,我建議深入研究投票文獻。
模型是最大的問題之一:通常,您不能執行正常的 MPC 協議,因為這需要各方之間的互動。一種解決方案(這是一項古老的工作,但我真的很喜歡),將選舉服務提供者和正在舉行的實際選舉分開。實際上,該作品談論的是拍賣,但可以使用類似的想法。請參閱隱私保護拍賣和機制設計。
有關選舉的更多現代工作,請參閱Helios(這是 IACR 使用的方案)。我建議查看Wikipedia - 某些來源的端到端可驗証投票,但請注意需要進行大量研究。一般來說,安全計票只是真正選舉所需的一小部分(也是最容易解決的)。
任何選民如何通過使用安全的多方計算,在不透露他們的偏好的情況下找出每個候選人的總票數。?
答案來自語義安全的加法同態方案;允許添加加密數據,假設計數誠實。
- 計數產生 $ pub $ 和 $ prv $ 鍵。
- 計票發布 $ pub $
- 每個選民投票 $ < 01, 00, 00 > $
- 通過使用 $ pub $ 選民加密他們的選票。 $ < 0xfa, 0x14, 0xe3 > $ . 除非基礎方案是安全的,否則計數可以從投票中提取資訊。
- 投票。
- 計數對加密數據執行加法。
- 投票結束後,tally 解密結果並發布。
每個 6 位投票向量都被加密並發送給某個第三方,該第三方將獲取密文投票的乘積,然後解密該乘積以產生一個位向量,該位向量顯示每個候選人收到的偏好總數(Paillier 密碼系統)。密碼系統必須在明文和密文空間中保持什麼同態屬性才能滿足目標?
- 必須對加密數據執行添加
- 必須是語義安全的。
- 為了防止溢出,必須考慮可能的票數以防止溢出。
當然,答案並不是那麼簡單;
- 如果計數不計算誰投票或不投票,則存在多票投票。
- 系統的攻擊者可以使用公鑰更改任何已投的票。因此,必須應用系統的完整性。