百萬富翁問題與多方計算


一、 百萬富翁問題

Two parties Alice and Bob, in possession of private variables i and j respectively, wish to communicate so that Alice can evaluate a function f(i, j), and Bob a function g(i, j).

有兩個百萬富翁,想要比較誰更富有,但是不想透露自己的財產數字,如何比較?

二、 解決方案

問題假設如下:

對於以上信息,我們只需要知道,假設兩個百萬服務擁有財產在1到10之間,且財產金額為整數,Ea是Alice的公鑰。

 

 

對於這個問題,我們可以首先撇開數學加密過程,舉一個相對比較簡單的例子。

我們知道,兩個百萬富翁所擁有的財產均為整數,所以每個百萬富翁擁有的財產可能的取值就有1到10十個數字。

我們讓第一個百萬富翁,選擇十個盒子,按照順序排列,分別代表1到10,並用自己的財產數字與盒子的數字進行比較,如果小於該數字,則在盒子里面放一個卡片,如果等於該數字,則在盒子里放一根鉛筆,若大於則什么都不放。(實際操作可能需要三種東西的差異性)。

然后呢,我們請第二個百萬富翁來,讓他選擇自己財產數額對應的箱子(在第一個百萬富翁不參與的情況下)。隨后,第二個百萬富翁把剩余所有箱子銷毀。

最后,兩個百萬富翁一起打開最后剩下的那個箱子,則可以得出誰更富有。

這個例子應該很容易理解,關鍵在於第一個百萬富翁需要首先與每一種可能進行比較,第二個百萬富翁再選擇自己財產數額的箱子。

 

三、 原文解決方案

這里是原論文中提及的解決方案。

 

首先Bob選擇一個隨機數,並使用Alice的公鑰進行加密,並用加密之后的結果,減去自己的財產發給Alice。

Alice收到了結果k-j+1。現在她需要對所有可能的金額進行計算,得到十個結果,然后用自己的私鑰對結果進行加密。

隨后,Alice產出一個隨機素數,並使用加密之后的結果對該素數進行求余數計算。該過程具有不可逆轉性質,保證了信息的安全性。這里需要Zu的結果之間相差超過2,這是因為之后會進行加一操作。

第五步,Alice將p發給Bob,同時,發送取余計算中得到的結果Z,在這一步她將所有大於她資產的Z進行+1操作。

第六步,Bob選擇第j個Zj,然后用yu對p進行取余操作,如果該結果與Zj相等,說明該數字並沒有進行加一操作,換句話說,Alice的資產大於該數字。

以上,完成了計算。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM