Homomorphic-Encryption

如何使用安全多方計算計算安全總和?

  • October 8, 2018

假設有三個選民 $ 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 密碼系統)。密碼系統必須在明文和密文空間中保持什麼同態屬性才能滿足目標?

  • 必須對加密數據執行添加
  • 必須是語義安全的。
  • 為了防止溢出,必須考慮可能的票數以防止溢出。

當然,答案並不是那麼簡單;

  • 如果計數不計算誰投票或不投票,則存在多票投票。
  • 系統的攻擊者可以使用公鑰更改任何已投的票。因此,必須應用系統的完整性。

引用自:https://crypto.stackexchange.com/questions/62952