一、 百萬富翁問題
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的資產大於該數字。
以上,完成了計算。