安全多方計算:在不可信環境中創建信任
安全的多方計算有助于確保加密貨幣交易安全,此外,它還有其他新興用例。
什么是安全多方計算?
術語“安全多方計算”(Secure Muti-party Computation,簡稱MPC,亦可簡稱SMC或SMPC)是指一組算法,這些算法允許人們通過網絡協同工作,并安全地獲取結果或計算值,且確保這一數值的正確性。
數學描述為:有n個參與者P1,P2,…Pn,要以一種安全的方式共同計算一個函數,這里的安全是指輸出結果的正確性和輸入信息、輸出信息的保密性。
安全多方計算問題首先由華裔計算機科學家、圖領獎獲得者姚期智教授于1982年提出,也就是為人熟知的百萬富翁問題:兩個爭強好勝的富翁Alice和Bob在街頭相遇,如何在不暴露各自財富的前提下比較出誰更富有?
簡單來說,安全多方計算協議作為密碼學的一個子領域,其允許多個數據所有者在互不信任的情況下進行協同計算,輸出計算結果,并保證任何一方均無法得到除應得的計算結果之外的其他任何信息。換句話說,SMPC技術可以獲取數據使用價值,卻不泄露原始數據內容。
數十年來,理論數學家一直在研究多方計算。現在,研究人員研發出了這種算法,并在更復雜的開發中的Web應用程序、API和服務中發揮作用。如今,在不信任環境中也出現了這種算法的使用。
大多數企業堆?;蚨嗷蛏俚囟加羞\行這種算法,員工協同工作并朝著同一個方向努力。一個Web服務查詢可以數據組合完成回答,通過將存儲在一臺設備上的數據與存儲在由模板控制的第三臺設備格式化的另一臺設備上的數據組合,所有這些都由在負載均衡器后面運行的Kubernetes集群管理器進行編排。即使相互連接的臺式機也可以利用CPU芯片與顯卡和網卡的強大功能協同工作,為同一用戶提供服務。
所有這些案例都是在可信環境中運作的。如果軟件堆棧的不同設備和彼此不信任的人員運行又當如何?SMPC算法使員工即使在彼此不信任的情況下也能協同工作。最基本的審計和加密功能的緊密結合,即使戴著偽裝面具的攻擊者試圖竊取數據或者企業出現內鬼,最后輸出的數據也將是正確的和安全的。
安全多方計算的工作原理
大多數加密算法由一名人員操作運行,所有數學計算由該人或在該組織的可信環境中完成。文件可能會在受密碼保護的個人設備上進行安全加密,然后再通過電子郵件發送或存儲在公開的互聯網上。數字簽名是由私人設備使用防止泄露的密鑰創建的,因此其他人會相信只有密鑰的所有者才能創建簽名。
SMPC可以利用這些基本算法來找到政治上更復雜問題的解決方案。雖然他們經常使用相同的標準加密或數字簽名,但他們在可信環境中協調應用它們。
加密貨幣使用的區塊鏈是一個很好的案例,以協調的方式應用基本數字簽名,以在互不相識的人之間建立更強的信任關系。在這些算法中,特定加密貨幣的所有權與密鑰所有者有關,通過添加數字簽名將所有權轉移到其他人的密鑰。通常,這些交易會通過其他人的數字簽名與大區塊中的其他交易進行認證。綜上所述,這個數字簽名網絡可跟蹤貨幣的所有權,并且有朝一日可能成為穩定經濟的基礎。
安全多方計算在理論計算機科學領域也有更精確的定義。一些最早的算法證明,可以將任意計算拆分并獲取安全可信的答案。最早的證據表明它可以用于任何表示為布爾門序列的任意計算。多年來,數學家開發了更復雜、更專注的算法來解決問題。
安全多方計算的類型
在SMPC保護傘下考慮了許多不同的算法組合。最早的算法是在1970年代首次發布的,當時數學家們正在尋找一種方法來進行遠距離玩游戲,比如撲克之類的,且要保證在發牌過程中雙方都無法作弊。此后,這類游戲逐漸演變出解決任意布爾函數的優質算法。
以下常見算法可以單獨用于解決較小的問題,也可以結合使用以解決更復雜的挑戰。
(1) 秘密共享
一個秘密值被分成N個部分,這樣K的任何子集都足以重建秘密。最簡單的示例,在一行的Y軸截距中對秘密進行編碼。線上的N個點是隨機選擇的。任何兩個都足以重建軸并恢復Y軸截距,在本例中K=2。更復雜的數學可以使用更大的K值。隱藏的秘密通常是更大文件的私鑰。一旦數據泄露,原始密鑰被破壞,就必須有K人共同努力才能將其解鎖。
(2) 剪切和選擇
這個基本步驟是許多算法的基礎,因為它允許一方在不泄露秘密信息的情況下審計另一方。一方以某種方式給他們的幾個數據包加擾值。當這些出現時,另一方將通過詢問解密這些數據包的密鑰來隨機選擇一些數據包進行審計。如果雙方一致且數據正確,則無需審計這些未加擾值的數據包,且可以假定未經審核的數據包是正確的。雙方可以承諾共享信息,同時保護這些未經審計的數據。
(3) 零知識證明
存在一些更復雜的數字簽名版本,此類證明的創建者可以在不透露數值本身的情況下展示內容信息。這些在更復雜的算法中通常很有用,因為一方可以在不透露的情況下做出秘密選擇。
一個簡單的版本通常被稱為“比特承諾”,它是許多游戲中的協議。雙方可以通過隨機選擇正面或反面硬幣,從而越過“不安全的線”。每一方都使用一種單向函數,如安全哈希算法 (SHA),以額外的隨機性來擾亂他們的選擇以確保保密。
首先,兩者彼此共享已添加噪音數據版本。雙方都知道兩個加擾值后,可揭示他們的正面或反面的原始隨機值。如果它們匹配,則一方獲勝,如果值不匹配,則另一方獲勝。雙方可以通過重新計算單向函數來相互審計。
(4) 非交互式零知識證明
最早的零知識證明需要兩方進行交互,因為一方會向另一方證明某些陳述。后來,出現了非交互式版本,并被命名為SNARKs或ZK-SNARKS。目標是生成一小部分包含證明的所有信息的位。任何人都可以事后檢查捆綁包,執行類似的計算,并得出相同的結論。
通過證明復雜的事實,同時還保持一些信息的私密性,這些捆綁包通常充當更強大的數字簽名。一個簡單的例子可能是駕照證明一個人年滿21歲并且有資格購買酒類,但是無需透露其實際年齡或生日。
安全的多方計算用例
這些算法在許多商業交易中都很有用,因為它們允許人們相互信任,正如Ronald Reagan的座右銘,“彼此信任且可以驗證他們所做的一切”。用例包括:
(1) 加密貨幣
雖然社會是否應該將經濟信任于數字貨幣的爭論仍然存在,但毫無疑問,市值證明了SMPC的潛力。絕大多數交易如雙方預期的那樣繼續順利進行。許多顯著問題不是由算法失敗引起的,而是由計算機系統的泄漏引起的。
(2) 游戲玩法
隨著人們逐漸轉向網絡娛樂場所,作弊變得更加容易。本地硬件的控制方讓作弊者闖入游戲軟件尋找隱藏的數據,比如地圖。有些人甚至可能會擺弄數據結構以增加額外收入。SMPC算法可以幫助防止這種作弊,而無需特殊的可信硬件。
(3) 合同談判
許多企業經常與一些重要的合作伙伴密切合作,但不能完全信任對方。例如,汽車經銷商與銀行合作貸款,保險公司為資產提供擔保。傳統上,購買需要大量文書工作,因為每一方都試圖保護自己。SMPC可減少繁瑣的文書工作且可完成交易。
(4) 數據收集
人們往往不愿參與研究,因為他們不想透露私人信息。許多市場依賴于有關需求和供應的準確匯總數據。然而,收集這些信息可能很棘手,因為參與者不想分享他們的個人原始數字。安全算法可以幫助以保護隱私的方式收集這些信息。
(5) 自動化市場
傳統市場通常依賴于充當仲裁者的中立角色。比特幣區塊鏈只是算法如何取代交易中間人的一個例子。