安全多方計算技術
(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要確保輸入的獨立性,計算的正確性,同時不泄露各輸入值給參與計算的其他成員。一個SMC模型由以下四個方面組成:
l 參與方。
l 安全性定義。
l 通訊網模型。
l 資訊理論安全與密碼學安全。
(未完待續)