e1f0dfd6ab2b03aaea1b8262b32b3d92

何為安全多方計算?

安全多方計算(secure multiparty computation, SMPC)意為在無無可信第三方的情況下,如何通過一系列的算法,讓不同人員達成共識或者計算出一個可信的最終的結果;在這環(huán)節(jié)中,每個人都公平公正地付出,并且沒有作弊行為。

這個想法是在密碼學家們通過網絡在創(chuàng)建一些算法游戲的時候誕生的。最開始的時候,計算機都是各自工作;而當網絡出現(xiàn)的時候,程序員開始想辦法讓計算機協(xié)同工作。如今,人們會把一堆虛擬機放一起工作,以發(fā)現(xiàn)正確的結果。但是難點在于,如何確保這個流程是安全的,同時其中沒有一方作弊了。

理論數(shù)學家們已經研究多方計算數(shù)十年?,F(xiàn)在,這些算法已經可以從實驗室中走出來,在更為復雜的網站應用、API和服務中找到自己的位置——哪里缺少信任,哪里就有新的位置。

大部分企業(yè)堆棧都是由大量代碼合作而成。舉個例子,響應一個網站服務請求可能需要將A機器上的數(shù)據和存儲在B機器上的數(shù)據組合,然后用C機器上的模板進行格式處理——同時,這些行為都由在一個負載均衡器后的一個K8s節(jié)點編排而成。甚至一個筆記本電腦能夠運行,都是基于CPU、顯卡和網卡等設備能配合工作的信任。

以上的例子都需要建立在信任的泡沫之上。如果使用不同的機器以及軟件堆棧層的人們不相互信任呢?也許他們因為一些政治立場原因需要選擇自己的站邊,又或者他們受制于不同的委托要求,也可能僅僅是因為他們相互討厭。

安全多方計算算法使得人們和他們的計算機即使相互不信任都可以一起合作。這些算法結合了足夠的基礎審計和密碼能力,從而讓每一方都能夠確信結果是正確的,哪怕他們網絡另一側的敵人試圖背叛他們并且竊取所有內容——當然,也可能是他們所謂的朋友對他們進行了背刺。

安全多方計算如何實現(xiàn)?

大部分加密算法都是由一個人進行,所有的數(shù)學計算都在某個人或者某個實體的信任泡沫中完成。一個文件可能在對某個人安全的環(huán)境或者被密碼保護的機器中加密,然后再被作為郵件附件發(fā)出,或者存儲在野外未保護的互聯(lián)網環(huán)境中。數(shù)字簽名是由有防泄密保護的隱私機器創(chuàng)建,這樣其他人才會相信是密鑰的所有人創(chuàng)建了這個簽名。

安全多方計算可以綜合這些基礎的算法,從而發(fā)現(xiàn)更復雜問題的解決方式。安全多方計算經常使用同樣標準的加密方式或者數(shù)字簽名方式,但是會進行調整,從而擴展它們的信任泡沫。

區(qū)塊鏈就是一個數(shù)字簽名調整以后,如何將信任泡沫擴大到大量不認識人之間的好例子。在許多這類型的算法中,某種加密貨幣的擁有權和密鑰關聯(lián),而貨幣的消耗則是通過額外增加一個數(shù)字簽名來表明將所有權轉讓。這類操作通常和其他操作一起,在一個大的區(qū)塊中被其他人的數(shù)字簽名所驗證。當聚合到一起時,就可以通過數(shù)字簽名追蹤貨幣的所有權,最終某一天有機會形成一個穩(wěn)定的經濟體系。

安全多方計算在理論計算機科學領域有一個更深入的研究。一些早期的算法證明,任意的計算都能在被分割之后,依然生成一個可以相信的答案。最早期的證明任何布爾型的計算都適用于此原則。多年來,數(shù)學家已經研究了更復雜、更深入的算法,來解決這類問題。

安全多方計算的類型

許多算法都被被認為能用于安全多方計算。這些算法中,時間最久遠的可以追溯到上世紀七十年代,數(shù)學家在想一種遠距離的撲克游戲時候發(fā)明。那種時候的遠距離撲克無法看到對方是否在處理撲克牌的時候動手腳。因此,他們就著手思考一種能解決任意布爾型函數(shù)的算法。

以下是幾種常見的算法。這些算法自身就能夠解決一些小問題,合并起來能處理更多的難題:

? 秘密分享:一個機密的信息被分成N部分,從而任何K個子集都可以重建這個信息的內容。最簡單的例子就是直線的截距。任何在該直線上的兩點都能重構該直線,然后得出截距;在這個例子中,K就是2。更復雜的數(shù)學可以得到更大的K值。

一般這個機密信息都是一個大型文件的密鑰。一旦這些被拆分的部分分發(fā)出去,原始的密鑰就會被銷毀,必須有K個人一起協(xié)作才能解鎖。

? 分隔選擇法:這一步驟是許多算法的基礎,因為它允許一方審計另一方而不需要在過程中泄露機密信息。一方會把他們的數(shù)據打包成多個數(shù)據包。當這些數(shù)據包被提交的時候,另一方會要求密鑰對部分數(shù)據包隨機解包。如果被解包的內容中所有東西都一致并且正確,那么未被解包的部分會被舍棄,同時未審計的數(shù)據包會被認為是正確的。這樣,雙方都能共享信息,但是未審計部分依然能確保私密性。

? 零知識證明:這是數(shù)字簽名更復雜的版本,需要證明者在不顯示證明過程的情況下,顯示出他掌握了相關知識。這在更復雜的算法中經常會很有用,因為一方可以在不揭示秘密的情況下證明自己了解相關內容。

一個簡單的版本經常被稱為是“比特承諾”,并且在很多游戲被作為協(xié)議應用。雙方能夠投擲一枚硬幣,隨機選擇正反面。每一方會用一種單向加密方式(比如SHA),將他們的選擇加密。首先,雙方互相共享他們加密后的信息。在雙方都知道對方加密后的數(shù)據后,雙方展示最初選擇的正反面結果,判定誰猜對了。雙方可以通過單向加密函數(shù)來審計對方的結果。

? 無交互零知識證明:最早的零知識證明要求雙方進行交互,因為需要一方向另一方證明。之后,無交互零知識版本出現(xiàn)了,并且有了像SNARKs或者ZK-SNARKS的名字。這個目標是產生一些小信息包,會包含所有證明需要的信息。任何檢查了這些包的人執(zhí)行相似的計算,都會有相同的結果。

這些包往往作為更有效的數(shù)字簽名,可以證明一些復雜的事實,同時對一些信息進行保密。一個簡單的例子是駕照——它可以證明一個人過了購買酒的年齡,但是卻不用表示這個人真實的年齡。

安全多方計算用例

這些算法在許多業(yè)務交互中能夠產生價值,因為根據Ronald Reagan的銘言,它們能讓人們相互信任的同時,還能驗證做的每一件事。安全多方計算的用例包括:

? 加密貨幣:盡管說關于社會是否應該信任數(shù)字貨幣帶來的經濟體系依然存疑,但是毫無疑問,當下加密貨幣的資本情況是安全多方計算能力的證明。大量的處理行為都在按預期平滑地進行。許多有影響力的問題并非因為算法的失效而發(fā)生,而是因為周圍計算系統(tǒng)的泄露而導致。

? 游戲:隨著人們轉向在線游戲進行娛樂,作弊變得更為容易了。讓每一方都能夠控制自己本地的硬件相當于在邀請作弊者們破解游戲軟件發(fā)現(xiàn)像地圖那樣的隱藏信息。有些人甚至能夠修改數(shù)據結構,增加額外的能力或者金錢。

安全多方計算算法可以在不需要額外可信任的硬件的情況下放置這類作弊行為。

? 合約協(xié)商:許多企業(yè)都有一些雖然不能完全相互信任,但是必須近距離合作的關鍵伙伴。比如車行,需要和銀行合作進行貸款,和保險工作合作保障資產。一般情況下,購買行為需要雙方大量的紙面文件。多方安全計算可以讓更多方面的人一同參與到交易之中,但是卻不需要進行紙面工作協(xié)同。

? 數(shù)據收集:人們往往不愿意參與調研,因為他們并不想泄露自己的私人信息。許多市場需要有關供需的準確總體信息。但是,收集這些信息會很麻煩,因為參與者并不想分享他們的原始數(shù)據。安全算法可以在保護隱私的條件下幫助收集這些信息。

? 自動化市場:傳統(tǒng)的市場需要人來承擔一個中立仲裁的角色——比特幣是一個如何用算法取代中間人的一個實例。

密碼學始終都是信息安全中重要的基礎——不僅僅依靠加密解密的函數(shù)保障信息的隱秘性,還通過各種算法,確保信息交互的安全。信任的問題最終依然可以落在數(shù)學層面,通過算法的方式去解決——而這也是未來的趨勢。傳統(tǒng)的安全模式里講究信任,各個行為都是基于信任,或者信任的程度進行的;而隨著越來越多方面的實體加入到協(xié)作當中,未來的合作會趨向于基于“不信任”進行——這時,就需要安全多方計算來解決信任的問題。

來源:數(shù)世咨詢