何為安全多方計(jì)算?
安全多方計(jì)算(secure multiparty computation,SMPC)意為在無無可信第三方的情況下,如何通過一系列的算法,讓不同人員達(dá)成共識或者計(jì)算出一個(gè)可信的最終的結(jié)果;在這環(huán)節(jié)中,每個(gè)人都公平公正地付出,并且沒有作弊行為。
這個(gè)想法是在密碼學(xué)家們通過網(wǎng)絡(luò)在創(chuàng)建一些算法游戲的時(shí)候誕生的。最開始的時(shí)候,計(jì)算機(jī)都是各自工作;而當(dāng)網(wǎng)絡(luò)出現(xiàn)的時(shí)候,程序員開始想辦法讓計(jì)算機(jī)協(xié)同工作。如今,人們會(huì)把一堆虛擬機(jī)放一起工作,以發(fā)現(xiàn)正確的結(jié)果。但是難點(diǎn)在于,如何確保這個(gè)流程是安全的,同時(shí)其中沒有一方作弊了。
理論數(shù)學(xué)家們已經(jīng)研究多方計(jì)算數(shù)十年。現(xiàn)在,這些算法已經(jīng)可以從實(shí)驗(yàn)室中走出來,在更為復(fù)雜的網(wǎng)站應(yīng)用、API和服務(wù)中找到自己的位置——哪里缺少信任,哪里就有新的位置。
大部分企業(yè)堆棧都是由大量代碼合作而成。舉個(gè)例子,響應(yīng)一個(gè)網(wǎng)站服務(wù)請求可能需要將A機(jī)器上的數(shù)據(jù)和存儲(chǔ)在B機(jī)器上的數(shù)據(jù)組合,然后用C機(jī)器上的模板進(jìn)行格式處理——同時(shí),這些行為都由在一個(gè)負(fù)載均衡器后的一個(gè)K8s節(jié)點(diǎn)編排而成。甚至一個(gè)筆記本電腦能夠運(yùn)行,都是基于CPU、顯卡和網(wǎng)卡等設(shè)備能配合工作的信任。
以上的例子都需要建立在信任的泡沫之上。如果使用不同的機(jī)器以及軟件堆棧層的人們不相互信任呢?也許他們因?yàn)橐恍┱瘟鲈蛐枰x擇自己的站邊,又或者他們受制于不同的委托要求,也可能僅僅是因?yàn)樗麄兿嗷ビ憛挕?/p>
安全多方計(jì)算算法使得人們和他們的計(jì)算機(jī)即使相互不信任都可以一起合作。這些算法結(jié)合了足夠的基礎(chǔ)審計(jì)和密碼能力,從而讓每一方都能夠確信結(jié)果是正確的,哪怕他們網(wǎng)絡(luò)另一側(cè)的敵人試圖背叛他們并且竊取所有內(nèi)容——當(dāng)然,也可能是他們所謂的朋友對他們進(jìn)行了背刺。
安全多方計(jì)算如何實(shí)現(xiàn)?
大部分加密算法都是由一個(gè)人進(jìn)行,所有的數(shù)學(xué)計(jì)算都在某個(gè)人或者某個(gè)實(shí)體的信任泡沫中完成。一個(gè)文件可能在對某個(gè)人安全的環(huán)境或者被密碼保護(hù)的機(jī)器中加密,然后再被作為郵件附件發(fā)出,或者存儲(chǔ)在野外未保護(hù)的互聯(lián)網(wǎng)環(huán)境中。數(shù)字簽名是由有防泄密保護(hù)的隱私機(jī)器創(chuàng)建,這樣其他人才會(huì)相信是密鑰的所有人創(chuàng)建了這個(gè)簽名。
安全多方計(jì)算可以綜合這些基礎(chǔ)的算法,從而發(fā)現(xiàn)更復(fù)雜問題的解決方式。安全多方計(jì)算經(jīng)常使用同樣標(biāo)準(zhǔn)的加密方式或者數(shù)字簽名方式,但是會(huì)進(jìn)行調(diào)整,從而擴(kuò)展它們的信任泡沫。
區(qū)塊鏈就是一個(gè)數(shù)字簽名調(diào)整以后,如何將信任泡沫擴(kuò)大到大量不認(rèn)識人之間的好例子。在許多這類型的算法中,某種加密貨幣的擁有權(quán)和密鑰關(guān)聯(lián),而貨幣的消耗則是通過額外增加一個(gè)數(shù)字簽名來表明將所有權(quán)轉(zhuǎn)讓。這類操作通常和其他操作一起,在一個(gè)大的區(qū)塊中被其他人的數(shù)字簽名所驗(yàn)證。當(dāng)聚合到一起時(shí),就可以通過數(shù)字簽名追蹤貨幣的所有權(quán),最終某一天有機(jī)會(huì)形成一個(gè)穩(wěn)定的經(jīng)濟(jì)體系。
安全多方計(jì)算在理論計(jì)算機(jī)科學(xué)領(lǐng)域有一個(gè)更深入的研究。一些早期的算法證明,任意的計(jì)算都能在被分割之后,依然生成一個(gè)可以相信的答案。最早期的證明任何布爾型的計(jì)算都適用于此原則。多年來,數(shù)學(xué)家已經(jīng)研究了更復(fù)雜、更深入的算法,來解決這類問題。
安全多方計(jì)算的類型
許多算法都被被認(rèn)為能用于安全多方計(jì)算。這些算法中,時(shí)間最久遠(yuǎn)的可以追溯到上世紀(jì)七十年代,數(shù)學(xué)家在想一種遠(yuǎn)距離的撲克游戲時(shí)候發(fā)明。那種時(shí)候的遠(yuǎn)距離撲克無法看到對方是否在處理撲克牌的時(shí)候動(dòng)手腳。因此,他們就著手思考一種能解決任意布爾型函數(shù)的算法。
以下是幾種常見的算法。這些算法自身就能夠解決一些小問題,合并起來能處理更多的難題:
•秘密分享:一個(gè)機(jī)密的信息被分成N部分,從而任何K個(gè)子集都可以重建這個(gè)信息的內(nèi)容。最簡單的例子就是直線的截距。任何在該直線上的兩點(diǎn)都能重構(gòu)該直線,然后得出截距;在這個(gè)例子中,K就是2。更復(fù)雜的數(shù)學(xué)可以得到更大的K值。
一般這個(gè)機(jī)密信息都是一個(gè)大型文件的密鑰。一旦這些被拆分的部分分發(fā)出去,原始的密鑰就會(huì)被銷毀,必須有K個(gè)人一起協(xié)作才能解鎖。
•分隔選擇法:這一步驟是許多算法的基礎(chǔ),因?yàn)樗试S一方審計(jì)另一方而不需要在過程中泄露機(jī)密信息。一方會(huì)把他們的數(shù)據(jù)打包成多個(gè)數(shù)據(jù)包。當(dāng)這些數(shù)據(jù)包被提交的時(shí)候,另一方會(huì)要求密鑰對部分?jǐn)?shù)據(jù)包隨機(jī)解包。如果被解包的內(nèi)容中所有東西都一致并且正確,那么未被解包的部分會(huì)被舍棄,同時(shí)未審計(jì)的數(shù)據(jù)包會(huì)被認(rèn)為是正確的。這樣,雙方都能共享信息,但是未審計(jì)部分依然能確保私密性。
•零知識證明:這是數(shù)字簽名更復(fù)雜的版本,需要證明者在不顯示證明過程的情況下,顯示出他掌握了相關(guān)知識。這在更復(fù)雜的算法中經(jīng)常會(huì)很有用,因?yàn)橐环娇梢栽诓唤沂久孛艿那闆r下證明自己了解相關(guān)內(nèi)容。
一個(gè)簡單的版本經(jīng)常被稱為是“比特承諾”,并且在很多游戲被作為協(xié)議應(yīng)用。雙方能夠投擲一枚硬幣,隨機(jī)選擇正反面。每一方會(huì)用一種單向加密方式(比如SHA),將他們的選擇加密。首先,雙方互相共享他們加密后的信息。在雙方都知道對方加密后的數(shù)據(jù)后,雙方展示最初選擇的正反面結(jié)果,判定誰猜對了。雙方可以通過單向加密函數(shù)來審計(jì)對方的結(jié)果。
•無交互零知識證明:最早的零知識證明要求雙方進(jìn)行交互,因?yàn)樾枰环较蛄硪环阶C明。之后,無交互零知識版本出現(xiàn)了,并且有了像SNARKs或者ZK-SNARKS的名字。這個(gè)目標(biāo)是產(chǎn)生一些小信息包,會(huì)包含所有證明需要的信息。任何檢查了這些包的人執(zhí)行相似的計(jì)算,都會(huì)有相同的結(jié)果。
這些包往往作為更有效的數(shù)字簽名,可以證明一些復(fù)雜的事實(shí),同時(shí)對一些信息進(jìn)行保密。一個(gè)簡單的例子是駕照——它可以證明一個(gè)人過了購買酒的年齡,但是卻不用表示這個(gè)人真實(shí)的年齡。
安全多方計(jì)算用例
這些算法在許多業(yè)務(wù)交互中能夠產(chǎn)生價(jià)值,因?yàn)楦鶕?jù)Ronald Reagan的銘言,它們能讓人們相互信任的同時(shí),還能驗(yàn)證做的每一件事。安全多方計(jì)算的用例包括:
•加密貨幣:盡管說關(guān)于社會(huì)是否應(yīng)該信任數(shù)字貨幣帶來的經(jīng)濟(jì)體系依然存疑,但是毫無疑問,當(dāng)下加密貨幣的資本情況是安全多方計(jì)算能力的證明。大量的處理行為都在按預(yù)期平滑地進(jìn)行。許多有影響力的問題并非因?yàn)樗惴ǖ氖Фl(fā)生,而是因?yàn)橹車?jì)算系統(tǒng)的泄露而導(dǎo)致。
•游戲:隨著人們轉(zhuǎn)向在線游戲進(jìn)行娛樂,作弊變得更為容易了。讓每一方都能夠控制自己本地的硬件相當(dāng)于在邀請作弊者們破解游戲軟件發(fā)現(xiàn)像地圖那樣的隱藏信息。有些人甚至能夠修改數(shù)據(jù)結(jié)構(gòu),增加額外的能力或者金錢。
安全多方計(jì)算算法可以在不需要額外可信任的硬件的情況下放置這類作弊行為。
•合約協(xié)商:許多企業(yè)都有一些雖然不能完全相互信任,但是必須近距離合作的關(guān)鍵伙伴。比如車行,需要和銀行合作進(jìn)行貸款,和保險(xiǎn)工作合作保障資產(chǎn)。一般情況下,購買行為需要雙方大量的紙面文件。多方安全計(jì)算可以讓更多方面的人一同參與到交易之中,但是卻不需要進(jìn)行紙面工作協(xié)同。
•數(shù)據(jù)收集:人們往往不愿意參與調(diào)研,因?yàn)樗麄儾⒉幌胄孤蹲约旱乃饺诵畔ⅰTS多市場需要有關(guān)供需的準(zhǔn)確總體信息。但是,收集這些信息會(huì)很麻煩,因?yàn)閰⑴c者并不想分享他們的原始數(shù)據(jù)。安全算法可以在保護(hù)隱私的條件下幫助收集這些信息。
•自動(dòng)化市場:傳統(tǒng)的市場需要人來承擔(dān)一個(gè)中立仲裁的角色——比特幣是一個(gè)如何用算法取代中間人的一個(gè)實(shí)例。