撰文:錢柏均,就職于 HashKey Capital Research
審校:鄒傳偉,萬向區(qū)塊鏈、PlatON首席經(jīng)濟(jì)學(xué)家
本文對安全多方計算做出技術(shù)及應(yīng)用分析。結(jié)論是,安全多方計算能夠解決互不信任的參與方之間保護(hù)隱私的協(xié)同計算問題。安全多方計算拓展了傳統(tǒng)分布式計算的邊界以及信息安全范疇,對解決網(wǎng)絡(luò)環(huán)境下的信息安全具有重要價值。安全多方計算能夠結(jié)合多行業(yè)領(lǐng)域進(jìn)行數(shù)據(jù)融合,對數(shù)據(jù)市場的發(fā)展十分重要。
數(shù)據(jù)是一個復(fù)雜概念,有多種類型和豐富特征。隨著時代從互聯(lián)網(wǎng)轉(zhuǎn)變至區(qū)塊鏈,數(shù)據(jù)即將成為可產(chǎn)生經(jīng)濟(jì)價值的資產(chǎn)。但是,大多數(shù)企業(yè)考慮到數(shù)據(jù)安全和個人隱私等問題,對數(shù)據(jù)共享都非常謹(jǐn)慎。對個人數(shù)據(jù)而言,控制權(quán)和隱私保護(hù)的重要性超過所有權(quán)。
因此,企業(yè)在面臨數(shù)據(jù)輸入的隱私及輸出的結(jié)果上常常遇到平衡上的困難。
舉例來說 : 醫(yī)院需要與保險公司分享病患數(shù)據(jù),但是又不能泄露病患的個人隱私。
安全多方計算(Secure Muti-party Computation)提供了一種技術(shù)上的解決方案,能夠在無可信第三方的情況下安全地進(jìn)行多方協(xié)同的計算。
本文分為三個部分 : 第一部分探討安全多方計算的架構(gòu)。第二部分研究安全多方計算的技術(shù)實現(xiàn)方式。第三部分分析安全多方計算應(yīng)用及未來發(fā)展。
安全多方計算定義與架構(gòu)
定義
安全多方計算可以定義為在一個分布式網(wǎng)絡(luò)且不存在可信第三方的情況下,多個參與實體各自持有秘密輸入,并希望共同完成對某函數(shù)的計算并得到結(jié)果,前提是要求每個參與實體均不能得知除自身外其他參與實體任何輸入信息。
以下為安全多方計算的數(shù)學(xué)表述:
安全多方計算架構(gòu)
安全多方計算主要分為兩個參與方 :參與節(jié)點及樞紐節(jié)點。各個參與節(jié)點地位相同,可以發(fā)起協(xié)同計算任務(wù),也可以選擇參與其他方發(fā)起的計算任務(wù)。樞紐節(jié)點不參與實際協(xié)同計算,主要用于控制傳輸網(wǎng)絡(luò)、路由尋址及計算邏輯傳輸。此外,在去中心化的網(wǎng)絡(luò)拓?fù)淅?,樞紐節(jié)點是可以刪減的,參與節(jié)點可以與其他參與節(jié)點進(jìn)行點到點連接,直接完成協(xié)同計算。
安全多方計算過程中,每個數(shù)據(jù)持有方可發(fā)起協(xié)同計算任務(wù),并通過樞紐節(jié)點進(jìn)行路由尋址,選擇相似數(shù)據(jù)類型的其余數(shù)據(jù)持有方進(jìn)行安全的協(xié)同計算。參與協(xié)同計算的多個數(shù)據(jù)持有方的參與節(jié)點會根據(jù)計算邏輯,從本地數(shù)據(jù)庫中查詢所需數(shù)據(jù),共同就安全多方計算任務(wù)在密態(tài)數(shù)據(jù)流間進(jìn)行協(xié)同計算。整個過程各方的明文數(shù)據(jù)全部在本地存儲,并不會提供給其他節(jié)點。在保證數(shù)據(jù)隱私的情況下,樞紐節(jié)點將計算結(jié)果輸出至整個計算任務(wù)系統(tǒng),從而各方得到正確的數(shù)據(jù)結(jié)果。
安全多方計算主要有三個特性 :
隱私性。安全多方計算首要的目的是各參與方在協(xié)作計算時如何對隱私數(shù)據(jù)進(jìn)行保護(hù),即在計算過程中必須保證各方私密輸入獨立,計算時不泄露任何本地數(shù)據(jù)。正確性。多方計算參與各方通過約定安全多方計算協(xié)議發(fā)起計算任務(wù)并進(jìn)行協(xié)同計算,運算數(shù)據(jù)結(jié)果具備正確性。去中心化。安全多方計算中,各參與方地位平等,不存在任何有特權(quán)的參與方或第三方,提供一種去中心化的計算模式。
圖 1: 安全多方計算技術(shù)框架圖,來源:中國信息通信研究院云計算與大數(shù)據(jù)研究所
安全多方計算信任環(huán)境
安全多方計算的信任環(huán)境或者說整體安全定義通常由真實-理想模型 (Real-Ideal Paradigm) 來表達(dá)。在真實-理想模型中,存在一個虛擬的「理想」環(huán)境,與真實環(huán)境進(jìn)行比較。在理想環(huán)境里,所有參與方都會將各自的秘密數(shù)據(jù)發(fā)送給一個可信第三方,由可信第三方完成計算。而在真實環(huán)境下,不存在這樣的可信第三方,所有參與方通過互相交換信息,完成協(xié)同計算,并且會存在敵手進(jìn)行控制其中部分參與方的情況。
一個安全多方計算系統(tǒng)滿足在真實-理想模型下的安全性,是指真實環(huán)境下的敵手無法產(chǎn)生比理想環(huán)境下的攻擊者更多的危害;換言之,如果存在敵手可以對真實環(huán)境造成危害,那么也存在敵手可以對理想環(huán)境造成同等效果的危害。由逆否命題可知,事實上,不存在敵手能對理想環(huán)境造成危害,從而可以得出結(jié)論:不存在真實環(huán)境下的成功的敵手。
一般而言,在安全多方計算中,根據(jù)攻擊者的能力差異可以定義兩種不同的攻擊者相關(guān)的安全模型。
半誠實模型 (Semi-Honest Adversaries’ Security)。在半誠實行為模型中,假設(shè)敵手會誠實地參與安全多方計算的具體協(xié)議,遵照協(xié)議的每一步進(jìn)行,但是會試圖通過從協(xié)議執(zhí)行過程中獲取的內(nèi)容來推測他方的隱私。惡意行為模型 (Malicious Adversaries’ Security)。在惡意行為模型中,惡意節(jié)點可能會不遵循協(xié)議,采取任意的行為(例如偽造消息或者拒絕響應(yīng))獲取他方的隱私。
目前有許多安全多方計算的改進(jìn)方案,可以達(dá)到惡意行為模型下的安全性,但是都需要付出很大的性能代價,大規(guī)模的安全多方計算產(chǎn)品,基本上通常只考慮半誠實模型,惡意行為模型的解決方案會嚴(yán)重影響效率和實用性。
安全多方計算的實現(xiàn)形式
秘密共享
秘密共享是在一個常被應(yīng)用在多方安全簽名的技術(shù),它主要用于保護(hù)重要信息被丟失、或篡改。通過秘密共享機制,秘密信息會被拆分,每個參與者僅持有該秘密的一部分,個人持有部分碎片無法用于恢復(fù)秘密,需要湊齊預(yù)定數(shù)量 (或門限) 的碎片。
不經(jīng)意傳輸 (Oblivious Transfer)不經(jīng)意傳輸是一種密碼學(xué)協(xié)議,被廣泛應(yīng)用于安全多方計算領(lǐng)域,它解決了以下問題 :
舉例來說,Alice 手上有兩組密封的密碼組合,Bob 只能獲得一組密碼且 Bob 希望 Alice 不知道他選擇哪一組密碼。這時候就能利用不經(jīng)意傳輸來完成交易。
圖 2: 不經(jīng)意傳輸示意圖,來源 : 鏈聞
不經(jīng)意傳輸存在雙方角色,發(fā)送者與接收者。一個可行的具體實現(xiàn)過程,分為四個步驟:
混淆電路 (Garbled Circuit)
混淆電路是姚期智教授在 80 年代提出的安全多方計算概念。混淆電路是一種密碼學(xué)協(xié)議,遵照這個協(xié)議,兩個參與方能在互相不知曉對方數(shù)據(jù)的情況下計算某一函數(shù)。
舉姚氏百萬富翁問題(Yao's Millionaires' Problem)
為例,兩個百萬富翁 Alice 和 Bob 想在不知道對方精準(zhǔn)財富值的情況下比較誰的財富值更高。比如 Alice 的財富值是 20,Bob 的財富值是 15。藉由混淆電路,Alice 和 Bob 都可以知道誰更富有,但是 Alice 和 Bob 都不知道對方的財富值?;煜娐返暮诵倪壿嬍窍葘⒂嬎銌栴}轉(zhuǎn)換為由與門、或門、非門所組成的布爾邏輯電路,再通過公鑰加密、不經(jīng)意傳輸?shù)燃夹g(shù)來擾亂這些電路值以掩蓋信息,在整個過程雙方傳輸?shù)亩际敲艽a或隨機數(shù),不會有任何有效信息泄露。因此雙方在得到計算結(jié)果的同時,達(dá)到了對隱私數(shù)據(jù)數(shù)據(jù)保護(hù)的目的。
假設(shè)存在雙方 Alice 及 Bob 進(jìn)行混淆電路協(xié)議?;煜娐穼崿F(xiàn)過程分為四個步驟 :
Alice生成混淆電路。由圖 4 可知,Alice 生成的混淆電路中間會連接許多邏輯門,每個邏輯門都有輸入線及輸出線,且都有一組真值表 (Truth table)。Alice 與 Bob 通信。Alice 將邏輯門的真值表對稱加密并將真值表的行列打亂成混淆表 (Garbled table) 傳送至 Bob。Bob 在接收到加密真值表后,對加密真值表的每一行進(jìn)行解密,最終只有一行能解密成功,并提取相關(guān)的加密信息。其中,Bob 通過不經(jīng)意傳輸協(xié)議從 Alice 獲得對應(yīng)的解密字符串。不經(jīng)意傳輸能夠保證 Bob 獲得對應(yīng)的解密字符串,且 Alce 無法得知 Bob 獲得哪一個。最后,Bob 將計算結(jié)果返回給 Alice,雙方共享計算結(jié)果。由于雙方需對電路中每個邏輯門進(jìn)行幾個對稱密鑰操作,因此使用混淆電路的方案的計算復(fù)雜度相對也較高,并且當(dāng)擴展到參與方較多的計算場景時會更加復(fù)雜。
圖 3: 一般電路、門及真值表,來源 : 安全計算與密碼學(xué)
零知識證明
零知識證明指的是示證者能夠在不向驗證者提供任何有用的信息的情況下,使驗證者相信某個論斷是正確的。零知識證明存在雙方或多方角色:示證者 (prover)
與驗證者 (verifier)。示證者宣稱某一命題為真,而驗證者確認(rèn)該命題是否為真。
經(jīng)典的零知識證明(Sigma 協(xié)議)通常包含三個步驟 :
示證者先根據(jù)命題內(nèi)容向驗證者發(fā)送命題論述,這個論述必須經(jīng)過處理轉(zhuǎn)換成密態(tài)論述(一般稱為「承諾」),且命題內(nèi)容無法在后續(xù)的某一時刻進(jìn)行篡改和抵賴。驗證者隨機生成一個挑戰(zhàn)并發(fā)給示證者。示證者根據(jù)挑戰(zhàn)和命題論述生成證明信息發(fā)給驗證者。驗證者利用證明信息判斷示證者是否通過了該次挑戰(zhàn)。
重復(fù)多次這三個步驟,可以降低示證者是因為運氣的成份通過挑戰(zhàn)的概率。示證者提供的密態(tài)命題論述有兩個作用,一來可以防止示證方對命題內(nèi)容臨時造假,二來可以讓驗證者無法得知全部信息,保持隱私性。
零知識證明具備三個屬性 :
完備性。如果論述命題確實為真,那么誠實的驗證者一定會被誠實的示證者說服??煽啃裕绻撌雒}為假,那么示證者只能以很小的機率欺騙誠實的驗證者。零知識。驗證者只能知道論述命題是否為真這一結(jié)果,而無法從整個交互式證明過程里獲得其它任何有用的訊息。安全多方計算通常會利用零知識證明作為輔助手段,舉例來說,驗證惡意節(jié)點發(fā)送虛假數(shù)據(jù)或是做節(jié)點身份證明等等。
安全多方計算應(yīng)用與困難
目前來說,安全多方計算主要是通過混淆電路及秘密共享兩個方式實現(xiàn)?;诨煜娐返膮f(xié)議更適用于兩方邏輯運算,通訊負(fù)擔(dān)較低,但拓展性較差。而基于秘密分享的安全多方計算其拓展性較強,支持無限多方參與計算,計算效率高,但通訊負(fù)載較大。
目前安全多方計算的應(yīng)用可以分為兩個部分 :數(shù)據(jù)融合及數(shù)據(jù)資產(chǎn)化。
數(shù)據(jù)融合
讓雙方或多方數(shù)據(jù)融合并合作是目前安全多方計算能夠發(fā)揮最大價值之處。舉例來說,聯(lián)合征信。
銀行擁有用戶金融行為相關(guān)數(shù)據(jù),而互聯(lián)網(wǎng)公司一般擁有用戶網(wǎng)絡(luò)的使用數(shù)據(jù),如何讓兩方的數(shù)據(jù)合作,共同建立一個信用模型,是數(shù)據(jù)協(xié)作的一個關(guān)鍵的問題。
利用安全多方計算,可以在雙方保留隱私的情況下找到共用的數(shù)據(jù)集,并且在多方數(shù)據(jù)基礎(chǔ)上訓(xùn)練出的信用模型將更加準(zhǔn)確,從而對未知情形提供更加合理的預(yù)測,減少數(shù)據(jù)融合的外部性。
除此之外,數(shù)據(jù)安全存儲也是一大應(yīng)用。
企業(yè)可使用秘密共享技術(shù)將數(shù)據(jù)以秘密的方式存儲,有效防止內(nèi)部人員非法盜用數(shù)據(jù)的情況發(fā)生。
同時,存儲的數(shù)據(jù)無需解密即可進(jìn)行其他計算,既保證了安全性,又提升了計算效率。
數(shù)據(jù)資產(chǎn)化
安全多方計算有機會能夠促進(jìn)未來數(shù)據(jù)資產(chǎn)化及數(shù)據(jù)市場的發(fā)展。由于安全多方計算能夠在數(shù)據(jù)傳輸?shù)倪^程中從技術(shù)層面保證數(shù)據(jù)確權(quán)的問題,使數(shù)據(jù)的所有權(quán)與使用權(quán)劃清界線,因此企業(yè)或個人將可以通過安全多方計算將有價值的數(shù)據(jù)視為資產(chǎn),并在市場上流動或進(jìn)行交易。數(shù)據(jù)提供方可以規(guī)定數(shù)據(jù)的用途、用量、有效期等使用屬性,數(shù)據(jù)的使用者在拿到數(shù)據(jù)后只能在授權(quán)范圍內(nèi)合理地使用數(shù)據(jù),并能將剩余數(shù)據(jù)的使用權(quán)量化或做進(jìn)一步流通。
安全多方計算可以將數(shù)據(jù)市場的本質(zhì)由數(shù)據(jù)所有權(quán)轉(zhuǎn)向數(shù)據(jù)使用權(quán),保障原始數(shù)據(jù)所有者的權(quán)益,有效遏制原始數(shù)據(jù)泄漏,降低數(shù)據(jù)泄漏引起的數(shù)據(jù)流通風(fēng)險,促進(jìn)數(shù)據(jù)的大規(guī)模應(yīng)用。
未來挑戰(zhàn)
隨著區(qū)塊鏈和大數(shù)據(jù)等技術(shù)的逐漸發(fā)展,我們對數(shù)據(jù)及計算的要求相對更高。比如:區(qū)塊鏈要求匿名性,數(shù)據(jù)計算需要隱私保護(hù)等等。因此類似安全多方計算等密碼學(xué)技術(shù)在實際使用過程中,就會出現(xiàn)解釋成本非常高,且效率低的問題。
安全多方計算會涉及龐大的計算量及通信量,尤其是涉及公鑰運算。目前安全多方計算單個運算可以達(dá)到毫秒級,也就是說每秒鐘最多能做幾百次計算。但是在大數(shù)據(jù)的場景下,一個數(shù)據(jù)應(yīng)用或模型訓(xùn)練往往涉及數(shù)十萬單位的數(shù)據(jù)樣本及特征量,運算效率會是一個問題。除此之外,對于某些在線或需要實時計算并且計算任務(wù)較復(fù)雜的應(yīng)用場景,安全多方計算目前可能難以負(fù)擔(dān)。
聯(lián)系客服