安全多方計算——百萬富翁問題

安全多方計算(SMC)是解決一組互不信任的參與方之間保護隱私的協同計算問題,SMC要確保輸入的獨立性,計算的正確性,同時不泄露各輸入值給參與計算的其他成員。主要是針對無可信第三方的情況下,如何安全地計算一個約定函數的問題,安全多方計算在電子選舉、電子投票、電子拍賣、祕密共享、門限簽名等場景中有着重要的作用。

百萬富翁問題

 

1982年,姚啓智教授在提出百萬富翁問題後就給出了該問題的一種解決方案。該方案用於對兩個數進行比較,以確定哪一個較大。Alice知道一個整數i;Bob知道一個整數j, Alice與Bob希望知道誰的數最大,但都不想讓對方知道自己的數。爲簡單起見,假設j與i的範圍爲[1,100]。Bob有一個公開密鑰Eb和私有密鑰Db。

 

百萬富翁問題協議

(1)  Alice選擇一個大隨機數x,並用Bob的公開密鑰加密c=Eb(x);

(2)  Alice計算c-i,並將結果發送給Bob:

(3)  Bob計算下面的100個數:Yu=Db(c-i+u),(u=1,2,...,100 )其中Db是Bob的私有解密密鑰。Bob選擇一個大素數p(p應該比x稍小一點,Bob不知道x,但Alice能容易地告訴他x的大小),然後計算下面的100個數:Zu=(Yu mod p),。然後驗證對所有的u≠v, |Zu-Zv|>=2,並對所有的u驗證:0<Zu<p—1。如果不成立,Bob就選擇另一個素數並重複驗證;

(4)  Bob將以下數列和p發送給Alice:[Z1Z2,...  ,Zj + 1,Zj+1 +1, ..., Z100 +1],p;就是所從第j位對Zu數列+1操作;

(5)  Alice驗證這個數列的第i個數是否與x模p同餘。如果同餘,她得出的結論是i<=j;如果不同餘,她得出的結論是i>j;

(6)  Alice把這個結論告訴Bob。

大富翁問題演示實例

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章