安全多方計算(也稱為安全計算,多方計算/ MPC或隱私保護計算)是密碼學的一個領域。MPC處理的問題是在一組可能相互不信任的各方之間共同計算一個函式,同時阻止任何參與者瞭解有關其他方提供的輸入的任何資訊;同時(在可能的範圍內)確保獲得正確的輸出。MPC計算基於計算輸入(和中間結果)的秘密共享。秘密共享最初由Adi Shamir提出,將資料分為幾部分,它們本身是一些隨機數,但是當組合在一起時(例如,透過加法)恢復原始資料。MPC依賴於將每個資料輸入項劃分為兩個或更多份額,並將其分配給計算方。加法和乘法的同態特性使那些當事方可以計算份額以達到共享結果,這些結果相結合可得出計算函式的正確輸出。為了執行MPC所需的共享計算,所有參與計算的方都遵循一個“協議”:一組指令和相互通訊,當這些方遵循時,它們將實現分散式計算機程式能夠抵抗隱蔽或惡意對手的現代MPC協議還依賴於誠實參與者可使用的零知識證明來檢測不良行為(並通常消除不誠實的一方)。應用例項MPC已有許多用例。端到端的加密關聯式資料庫原型,使用MPC來對僅以加密形式儲存在資料庫中的資料計算SQL查詢的答案。統計分析語言(例如R)已經增強了MPC功能,可以在統計和其他計算過程中保護資料。MPC還可用於保護金鑰,同時將這些金鑰用於加密,解密和簽名。MPC還用於流資料環境中,例如處理VoIP資料以進行電話會議,而無需VoIP系統中的任何受信伺服器。最近的一篇論文更詳細地描述了一些主要的用例。MPC的一項有趣的潛在應用是長期共享資料治理。由於MPC依賴於秘密共享,並具有對所有相關方共同控制的那些共享的訪問控制的許可權。因此資料可以以機密共享形式無限期地儲存,並且只有在適當比例的各方同意的情況下,才可以恢復資料。此功能與靜止資料秘密共享的概念有關,而與閾值加密的概念關係更遠。敵手模型和安全性爭論因為MPC假定了互不信任的各方的可能性,所以它也假定了新的一類對手:控制計算中的一個或多個參與者的對手。這樣的對手可能是內部威脅,也可能是組織外部的特洛伊木馬或其他滲透性很長的攻擊。這類新型的攻擊者通常用幾個特徵來描述:誠實度,移動度和受害計算方的比例是文獻中描述的典型特徵。在半誠實的對手模型中,這種控制僅限於檢查損壞的參與者看到的所有資料以及對他們聯合執行的計算程式的無限瞭解。在“隱蔽”模型中,對手通常會將控制權擴充套件到修改或破壞商定的協議,其目的通常是要學習更多的知識,而不僅僅是從觀察中學習到的知識。但是,在這種模型中,攻擊者被激勵保持其存在不被察覺,從而限制了其可能採取的行動。在惡意模型中,攻擊者還可能修改或破壞商定的協議,但無意將其存在隱藏起來。結果,惡意對手可能會採取比秘密對手更大範圍的行動。固定對手模型假設對手選擇了參與者會影響的先驗條件。例如,這種模型可能表示一個計算參與者受到了損害,而其他人則沒有受到損害。此對手移動性特徵的增強版本允許對手在計算期間在參與者之間移動。目前,很難想象這樣一個對手的真實世界。MPC對手的假設屬於兩類之一:誠實多數和不誠實多數就像有各種各樣的MPC參與者對手模型一樣,也有各種各樣的MPC協議提供安全性引數來防禦那些對手。安全性通常是透過顯示MPC協議的實際執行與理想化的模擬器相區分的,在理想化的模擬器中,所有計算方將其私人輸入傳送給可信任的經紀人,該經紀人計算商定的功能並返回輸出。各種MPC協議具有增強安全性的不同屬性。通常描述的那些屬性是:●輸入隱私權,如上文所述●輸出正確性–接收輸出的各方都會收到正確的輸出●公平性–打算接收輸出的所有各方都這樣做,或者沒有接收到●保證輸出–所有誠實的方都得到保證能夠正確完成計算,而不受不誠實方的攻擊行動。雖然當大多數計算方不遵循協議時可以保證輸入隱私和輸出正確性,但是隻有當大多數計算方遵循協議時,才能保證所有四個所需屬性(輸入隱私,輸出正確性,公平性和有保證的輸出交付)的組合。歷史MPC最初於1982年作為安全的兩方計算(2PC)正式推出(針對所謂的百萬富翁問題),1986年由Andrew Yao正式引入。該領域也稱為安全函式計算(SFE)。兩方計算隨後被Goldreich,Micali和Widgerson推廣到多方。應當指出,MPC經常需要計算方之間互動。實際上,使用通訊成本作為唯一估計因子(即完全忽略計算方的計算延遲估計),對MPC協議的執行時間的估計可能非常準確。雙方之間對可用網路頻寬和網路延遲的高度依賴一直使MPC處於理論上的應用。直到2000年代中期,對協議的改進導致人們認識到MPC不僅可能,而且可以在網際網路上進行有用的計算。在一些特定的應用場景下,MPC可以成為有效的解決方案(尤其是那些需要在股票上進行本地操作且各方之間沒有太多互動的場景)。分散式投票,保護隱私的競價和拍賣,共享簽名或解密功能以及密文檢索都是具有這些特性的應用場景。多方計算的第一個大規模實際應用(在一個實際的拍賣問題上展示)於2008年1月在丹麥進行。使用技術成本MPC技術的效能在很大程度上取決於安全計算的功能。MPC效能的典型指標是計算速度,MPC中計算延遲與沒有MPC安全性時完成相同計算的延遲之比。對於一般計算,例如處理典型的關聯式資料庫查詢運算子所需的計算,最新結果顯示速度降低了10000倍。在MPC中,如果計算依賴於加法(例如求和),其通常比常規計算快,而依賴除法或其他更復雜函式的計算通常要慢很多。與依賴浮點計算的計算相比,對整數或定點資料的計算相對較快。對於依賴於生成功能(例如隨機數生成)的計算通常也很慢。下表總結了實際的示例應用程式以及這些計算得出的典型速度下降。
可用性
在大多數情況下,MPC仍然是一個學術研究主題。少數公司使用專門的MPC協議來實現特定功能,而少數公司專門從事此技術的標準或定製產品開發或解決方案諮詢。
儘管MPC的操作理論處於相對較高的技術準備狀態,但終端使用者對計算產品的大多數期望仍處於早期開發階段。
同樣,MPC目前很難正確配置,並且當前需要高度定製的客戶端軟體以及用於部署的伺服器軟體。雖然概念驗證的演示者已經表明可以開發這些重要功能,但從產品意義上來說開發尚處於非常早期的階段。
MPC可以在關聯式資料庫上執行查詢,但只能對關係查詢和資料型別的有限子集執行,而MPC無法容納重要的相關操作,例如資料清理。
MPC系統的效能仍然是一個挑戰,與“明文”計算相比,減速係數要達到100倍,最高可達100000倍或更高。