1. 程式人生 > >安全多方計算技術(Security Multi-Party Computation, SMC)

安全多方計算技術(Security Multi-Party Computation, SMC)

一、 什麼是安全多方計算?

為了說明什麼是安全多方計算,首先我們先介紹幾個實際生活中的例子。

 1. Alice認為她的了某種遺傳疾病,想驗證自己的想法。正好她知道Bob有一個關於疾病的DNA模型的資料庫。如果她把自己的DNA樣品寄給Bob,那麼Bob可以給出她的DNA的診斷結果。但是Alice又不想別人知道,這是她的隱私。所以,她請求Bob幫忙診斷自己DNA的方式是不可行的。因為這樣Bob就知道了她的DNA及相關私人資訊。

2. 經過一次花費昂貴的市場調查後,A公司決定擴充套件在某些地區的市場份額來獲取豐厚的回報。同時,A公司也注意到B公司也在擴充套件一些地區的市場份額。在策略上,兩個公司都不想在相同地區互相競爭,所以他們都想在不洩露市場地區位置資訊的情況下知道他們的市場地區是否有重疊。(資訊的洩露可能會導致公司很大的損失。比如另一家對手公司知道A和B公司的擴充套件地區,提前行動佔領市場;又比如房地產公司知道A和B公司的擴充套件計劃,提前提高當地的房租等等)所以他們需要一種方法在保證私密的前提下解決這個問題。

3. 兩個金融組織計劃為了共同的利益決定互相合作一個專案。每個組織都想自己的需求獲得滿足。然而,他們的需求都是他們自己專有的資料,沒人願意透露給其他方,甚至是“信任”的第三方。那麼他們如何在保護資料私密性的前提下合作專案呢?

以上三個例子的共有特點是:

<1>. 兩或更多方參與基於他們各自私密輸入的計算。

<2>. 而且他們都不想其他方知道自己的輸入資訊。

問題變成了在保護輸入資料私密性的前提下如何實現這種計算? 我們稱之為“安全多方計算(Secure Multi-party Computation)”問題。 通常講,一個安全多方計算問題在一個分佈網路上計算基於任何輸入的任何概率函式,每個輸入方在這個分佈網路上都擁有一個輸入,而這個分佈網路要確保輸入的獨立性,計算的正確性,而且除了各自的輸入外,不透露其他任何可用於推導其他輸入和輸出的資訊。 當前,解決上述問題的策略是假設有可信任的服務提供者或是假設存在可信任的第三方。但是在目前多變和充滿惡意的環境中,這是極具風險的。因此,可以支援聯合計算並保護參與者私密的協議變的日益重要。理論上講,通用的安全多方計算問題是可解決的。但是,正如Goldreich所指出的,源於針對特殊例子的安全多方計算的通用結果的安全多方計算方案是不切實際的。 最後,我們給出安全多方計算的定義:SMC是解決一組互不信任的參與方之間保護隱私的協同計算問題,SMC要確保輸入的獨立性,計算的正確性,同時不洩露各輸入值給參與計算的其他成員。

 姚氏百萬富翁問題

姚氏百萬富翁問題是由華裔電腦科學家、圖靈獎獲得者姚啟智教授首先提出的。該問題表述為:兩個百萬富翁Alice和Bob想知道他們兩個誰更富有,但他們都不想讓對方知道自己財富的任何資訊。該問題有一些實際應用:假設Alice希望向Bob購買一些商品,但她願意支付的最高金額為x元;Bob希望的最低賣出價為y元。Alice和Bob都非常希望知道x與y哪個大。如果x>y,他們都可以開始討價還價;如果z<y,他們就不用浪費口舌。但他們都不想告訴對方自己的出價,以免自己在討價還價中處於不利地位。

1982年,姚啟智教授在提出百萬富翁問題後就給出了該問題的一種解決方案。該方案用於對兩個數進行比較,以確定哪一個較大。Alice知道一個整數i;Bob知道一個整數j, Alice與B0b希望知道究竟i>=j還是j>i,但都不想讓對方知道自己的數。為簡單起見,假設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+w), u=1,2,...,100 其中Db是Bob的私有解密金鑰。B0b選擇一個大素數p(p應該比x稍小一點,Bob不知道x,但Alice能容易地告訴他x的大小),然後計算下面的100個數:Zu=(Yu mod p), u=1,2,...,100。然後驗證對所有的u≠v, |Zu-Zv|>=2,並對所有的u驗證:0<Zu<p—1。如果不成立,Bob就選擇另一個素數並重複驗證;
(4)Bob將以下數列傳送給Alice:Z1,Z2,...,Zj,Zj+1+1...,Z100+1,p;
(5)Alice驗證這個數列的第i個數是否與x模p同餘。如果同餘,她得出的結論是i<=j;如果不同餘,她得出的結論是i>j;
(6)Alice把這個結論告訴Bob。