王發(fā)星,張 馳
(中國科學(xué)技術(shù)大學(xué),安徽 合肥 230026)
多方安全計算是一種用于隱私計算的密碼學(xué)方法,支持互不信任的數(shù)據(jù)所有者以保護(hù)隱私的方式參與計算。此方法在保證數(shù)據(jù)的所有權(quán)和隱私的同時,能夠打破數(shù)據(jù)之間的物理和法律隔離,充分發(fā)揮數(shù)據(jù)的價值。在百萬富翁[1]問題被提出之后,多方安全計算逐漸走入人們視野。經(jīng)典安全計算的思路是將計算轉(zhuǎn)化為對一個等價電路,然后以保護(hù)參與者隱私的方式對電路求值。多方安全計算經(jīng)過30年發(fā)展,已經(jīng)在實(shí)際生活中有所應(yīng)用[2]。
一方面,多方安全計算被應(yīng)用到隱私數(shù)據(jù)共享,但各方數(shù)據(jù)受限于強(qiáng)有力的隱私保護(hù)法規(guī)而無法實(shí)現(xiàn)聯(lián)動來實(shí)現(xiàn)更高的商業(yè)價值。因此,如何實(shí)現(xiàn)合法的數(shù)據(jù)共享是一個重要且現(xiàn)實(shí)的問題。多方安全計算能夠保護(hù)數(shù)據(jù)隱私和所有權(quán),因此這是解決這類商業(yè)需求的理想方案。另一方面,傳統(tǒng)集中式應(yīng)用被攻擊會導(dǎo)致嚴(yán)重后果,因而人們嘗試?yán)枚喾桨踩嬎愕姆植际教攸c(diǎn)來提升系統(tǒng)的健壯性和安全性。
盡管多方安全計算技術(shù)已經(jīng)被有限地應(yīng)用到實(shí)際生產(chǎn)生活中,但目前多方安全計算在大多數(shù)實(shí)際場景中沒有足夠的實(shí)用性。為了對抗參與者不誠實(shí)的行為,現(xiàn)有方法引入零知識證明[2],使用Cutand-Choose[3]的技術(shù)或者利用混淆認(rèn)證方法[4],但這都會造成了很大的性能開銷。由于移動端用戶天然存在設(shè)備性能和網(wǎng)絡(luò)通信速度限制,因此移動端用戶無法參與到多方甚至兩方安全計算。
Intel 可信硬件(Software Guard Extensions,SGX)作為一個成熟的可信硬件技術(shù)提供了強(qiáng)大的安全計算能力,允許在操作系統(tǒng)上運(yùn)行經(jīng)過硬件隔離保證的用戶級飛地。飛地提供硬件隔離的執(zhí)行環(huán)境,可以保證飛地中數(shù)據(jù)的機(jī)密性和代碼的完整性,并且程序本身可以被遠(yuǎn)程驗(yàn)證,使得處于飛地之外的任何程序都無法訪問和控制飛地。
為支持移動端用戶參與到安全計算,并且對抗安全計算中的惡意參與者,本文通過將混淆電路中預(yù)計算部分外包到一個第三方的SGX 來支持輕量級的計算參與者,并且基于SGX 來限制雙方各自的惡意行為。
本文的結(jié)構(gòu)安排如下:第1 章主要介紹研究背 景及國內(nèi)外研究現(xiàn)狀;第2章主要介紹系統(tǒng)架構(gòu)設(shè) 計;第3 章給出輕量級兩方安全計算方法;第4 章給出了系統(tǒng)的仿真實(shí)驗(yàn)和結(jié)果分析;第5 章得出結(jié)論。
混淆電路[1]是基于布爾電路的兩方安全計算協(xié)議。在混淆電路中,其中一方為電路生成者另一方為電路求值者。生成者A基于他們所要計算的函數(shù)f(x,y)生成相對應(yīng)的電路C(x,y),接著對于兩者的n位輸入x,y∈{0,1}n的第i位,有xi,yi∈{0,1},隨機(jī)選擇對應(yīng)的標(biāo)簽值,其中k為安全參數(shù)。然后隨機(jī)生成電路中需要用到的所有標(biāo)簽L。A生成所有的標(biāo)簽值之后,將每個門電路輸出對應(yīng)的真值表進(jìn)行混淆生成最終的混淆表GT,最后將混淆表GT 和自身輸入對應(yīng)的標(biāo)簽發(fā)送給求值者。求值者使用不經(jīng)意傳輸?shù)玫阶陨磔斎胂鄳?yīng)的標(biāo)簽值,之后求值者可以對混淆電路進(jìn)行求值得到最終結(jié)果。一個混淆電路實(shí)例如式(1)所示。
傳統(tǒng)多方安全計算的性能改進(jìn)已經(jīng)接近瓶頸。值得指出的是,多年以來針對多方安全計算性能優(yōu)化人們做了大量的工作。就混淆電路來說,現(xiàn)在最先進(jìn)的方法是結(jié)合Free-XOR[5]和半門[6]方法。在半門中已經(jīng)證明,要達(dá)到多方安全計算中的隱私性和正確性保證,混淆電路中每次計算與門的通信開銷至少為2?;诿艽a學(xué)方法提升多方安全計算性能已經(jīng)接近極限,SGX 作為處理機(jī)密數(shù)據(jù)的一般化工具,結(jié)合SGX 來提高多方安全計算的性能和安全性是值得探究的研究方向。
人們在這個方向已經(jīng)做了有益的探索。一個方法是將SGX 作為可信第三方[7]。SGX 如同多方安全計算安全定義中理想世界的可信第三方,所有參與者遠(yuǎn)程認(rèn)證SGX 后將自身敏感數(shù)據(jù)發(fā)送給SGX,SGX 計算得到結(jié)果后再將結(jié)果分發(fā)給相關(guān)參與方。無疑這樣的做法是高效的,因?yàn)榧词乖趎方參與的情況下整個協(xié)議的通信復(fù)雜度也只是線性增長,并且作為可信第三方的SGX 避免了較大的計算開銷。
這種做法的問題在于多方安全計算的安全性完全取決于SGX,一旦SGX 出現(xiàn)安全問題就會破壞多方安全計算的安全性。多方安全計算中不僅需要保證用戶輸入的機(jī)密性,還需要保證協(xié)議中間過程值的機(jī)密性。SGX 與理想第三方至少存在兩點(diǎn)不同:實(shí)際擁有SGX 的第三方可以對其進(jìn)行側(cè)信道攻擊,從而獲取所有參與者的隱私數(shù)據(jù)。另外SGX 與外界的通信信道是由SGX 擁有者控制的,SGX 發(fā)送/接收的消息可以被其控制者任意地阻斷。例如在一個拍賣服務(wù)中,SGX 擁有者可以屏蔽所有的出價而導(dǎo)致物件流拍或者自己使用一個基本價格拍得物品。因此如果將存在安全威脅的SGX 中作為可信第三方直接進(jìn)行多方安全計算會降低多方安全計算的安全性。
為了避免多方安全計算的安全性完全依賴于SGX 的安全性,在半誠實(shí)模型下,文獻(xiàn)[8-9]等沒有將SGX 作為一個可信第三方,而是將SGX 作為計算輔助,參與多方安全計算中預(yù)計算過程。SGX由于不接觸用戶數(shù)據(jù)避免了用戶隱私被破壞的風(fēng)險。另外結(jié)合SGX 不僅能夠使得多方安全計算受益,還能夠緩解SGX 側(cè)信道問題。Felsen 等[10]指出通過在SGX 中使用多方安全計算風(fēng)格的電路求值方法,能夠避免產(chǎn)生依賴于數(shù)據(jù)的執(zhí)行路徑,從而阻止針對SGX 的計時攻擊。
本文在兩方安全計算中,引入一個作為第三方的SGX 參與計算。與上文不同的是此方案支持移動端用戶參與計算,并且考慮惡意參與者存在。這個方法是可實(shí)現(xiàn)的,例如可以通過配置第三方公有云平臺,如亞馬遜的EC2 和微軟的Azure 云計算服務(wù)。由于此時SGX 只參與到與輸入無關(guān)的預(yù)計算過程,從而避免了SGX 接觸到任何用戶隱私,進(jìn)而消除了在兩方安全計算中引入SGX 而帶來的安全隱患。
因?yàn)閰⑴c安全計算的實(shí)體都有保護(hù)自身數(shù)據(jù)隱私的需要并且這些數(shù)據(jù)通常價值較高,所以現(xiàn)實(shí)中參與者不會是理想的誠實(shí)協(xié)議執(zhí)行者。參與安全計算的各方或多或少都有動機(jī)通過各種方式來窺探其他參與者的隱私。因此在本文中,假設(shè)雙方參與者的行為是任意的,即雙方可通過各種方式來取得安全計算中的額外優(yōu)勢。
另外,使用SGX 參與兩方安全計算的關(guān)鍵是對SGX 進(jìn)行合理的安全假設(shè)。SGX 的安全保證主要有兩點(diǎn):機(jī)密性和完整性?,F(xiàn)有研究要么假設(shè)SGX 完全安全要么假設(shè)SGX 完全不安全,這在現(xiàn)實(shí)中都很難成立。為了對SGX 作出更現(xiàn)實(shí)合理的安全假設(shè),先討論SGX 面臨的安全威脅。SGX 面臨的主要安全威脅是微體系結(jié)構(gòu)的側(cè)信道攻擊,主要可被分為以下3 個部分:微體系結(jié)構(gòu)競爭側(cè)信道攻擊,受控側(cè)信道攻擊和瞬時執(zhí)行攻擊。前兩種攻擊泄露得到的敏感數(shù)據(jù)是帶有噪聲的,兩者的差別在于受控側(cè)信道攻擊的攻擊者可主動攻擊而競爭性側(cè)信道攻擊的攻擊者是被動攻擊者,因此其攻擊所耗時長相較第一種長。瞬時執(zhí)行攻擊得到的飛地中機(jī)密數(shù)據(jù)是無噪聲的。所有披露的SGX 攻擊都得到了社區(qū)的積極響應(yīng)并且SGX 持續(xù)由Intel 維護(hù)。因此可對SGX 做最小安全假設(shè),即只假設(shè)存在一個保護(hù)完整性的SGX,而對SGX 的機(jī)密性保證不作要求。現(xiàn)有針對完整性的攻擊[11]是通過破壞SGX 遠(yuǎn)程認(rèn)證過程達(dá)成,通過使用數(shù)據(jù)不經(jīng)意技術(shù)和避免Seal功能來保護(hù)遠(yuǎn)程認(rèn)證過程。經(jīng)過驗(yàn)證,此假設(shè)在現(xiàn)實(shí)中能夠成立。
本方案考慮兩方安全協(xié)議中存在惡意參與者。并且假設(shè)SGX 擁有者為高權(quán)限用戶,企圖獲取SGX 中的機(jī)密信息。同時對SGX 進(jìn)行更細(xì)粒度安全假設(shè),拋棄了對SGX 中數(shù)據(jù)機(jī)密性的要求,而只要求SGX 在惡意環(huán)境下保持其完整性。
兩方安全計算的實(shí)體分別為參與者X、Y和一個運(yùn)行在第三方的輔助SGX。雙方使用混淆電路作為兩方安全計算協(xié)議,其中X為輕量級惡意參與者,Y為混淆電路的惡意求值者。在計算開始,雙方分別對云端SGX 發(fā)起遠(yuǎn)程認(rèn)證,驗(yàn)證云端SGX 的行為是否符合預(yù)期。接著SGX 生成混淆電路計算所需數(shù)據(jù),分別將生成數(shù)據(jù)分發(fā)給雙方。在參與者X想要參與安全計算時,基于從SGX 得到的數(shù)據(jù)與自身輸入數(shù)據(jù)X可求得輸入所對應(yīng)的標(biāo)簽值Lx,然后將其標(biāo)簽值Lx直接發(fā)送給參與者Y。參與者Y結(jié)合得到的標(biāo)簽值Lx和Ly之后,對混淆電路進(jìn)行 求值。
移動或物聯(lián)網(wǎng)等設(shè)備常常保留有許多的私密數(shù)據(jù),如個人定位信息或者個人交易數(shù)據(jù)等敏感信息。由于隱私保護(hù)要求而無法分享這些數(shù)據(jù),從而不能發(fā)揮更大價值,提升服務(wù)質(zhì)量。因此一個輕量級的安全計算協(xié)議在現(xiàn)實(shí)中有著實(shí)際的需求??紤]兩方安全計算的場景,使用一個SGX 作為第三方輔助參與計算??紤]到現(xiàn)實(shí)中此類設(shè)備通常為人所控制,因此假設(shè)參與安全計算雙方都存在惡意行為。設(shè)計了一個兩方參與的輕量級安全計算協(xié)議,使得計算能力受限的設(shè)備也能夠參與開銷巨大的安全計算。另外,本協(xié)議在存在惡意參與者且SGX 存在安全威脅情況下仍然能保護(hù)雙方數(shù)據(jù)的隱私。輕量級兩方計算方案如圖1 所示。
圖1 輕量級兩方計算協(xié)議
輕量級兩方計算協(xié)議主要分為6 個步驟,分別為初始化階段、遠(yuǎn)程認(rèn)證階段、混淆電路預(yù)計算、預(yù)計算結(jié)果分發(fā)、輕量級用戶標(biāo)簽生成和混淆電路求值。協(xié)議執(zhí)行流程如下。
(1)初始化階段。SGX 在初始化階段首先將在內(nèi)存區(qū)域?yàn)榛煜娐烦绦騊roggc開辟一塊飛地eid,接著將Proggc加載進(jìn)SGX,有l(wèi)oad(eid,Proggc)。Proggc中包含以下6 個組件:第1 個組件是電路轉(zhuǎn)化器T,T將計算函數(shù)z=f(x,y)轉(zhuǎn)化為其等價的電路表示C(x,y),兩者滿足關(guān)系:
式中,x、y分別為兩者的輸入。第2 個組件是偽隨機(jī)生成器PRG,負(fù)責(zé)生成隨機(jī)數(shù)用于生成混淆電路。第3 個組件是用于生成混淆電路的生成器Gen。第4 個組件是用于外部通信的接口Comm。第5 個組件用于支持不經(jīng)意傳輸OT。第6 個組件用于分發(fā)最終計算結(jié)果。
(2)遠(yuǎn)程認(rèn)證。在遠(yuǎn)程階段,雙方首先對計算函數(shù)f(x,y)達(dá)成一致,接著雙方分別向SGX 進(jìn)行認(rèn)證挑戰(zhàn),。SGX 收到挑戰(zhàn)消息后首先比較雙方計算函數(shù)是否一致,即fx=fy。接著SGX 調(diào)用遠(yuǎn)程認(rèn)證過程attest(eid,report)生成認(rèn)證report,雙方接收到report之后可以自行借助SGX 的IAS 認(rèn)證服務(wù)器完成遠(yuǎn)程認(rèn)證。同時,完成遠(yuǎn)程認(rèn)證之后,雙方可分別與SGX 建立一個可信信道chalx?SGX,chaly?SGX。
(3)混淆電路預(yù)計算。雙方完成對SGX 的遠(yuǎn)程認(rèn)證后,SGX 中開始進(jìn)行混淆電路預(yù)計算。首先對長度為n的移動端參與者Px輸入inpx,生成一個對應(yīng)的隨機(jī)數(shù)種子seedx,接著使用seedx對于輸入的每一位可能值,按照式(3)中生成輸入對應(yīng)的k位隨機(jī)標(biāo)簽值:
按照同樣的方法生成Py輸入對應(yīng)的標(biāo)簽值。在生成完雙方輸入對應(yīng)的標(biāo)簽值以后,SGX調(diào)用飛地中的程序?qū)⒂嬎愫瘮?shù)f(x,y)轉(zhuǎn)化為對應(yīng)的等價電路表示:
得到電路表示后,SGX 對于每一個門g∈C的輸入輸出線w隨機(jī)生成對應(yīng)的標(biāo)簽:
在生成所有標(biāo)簽之后,SGX 調(diào)用混掉過程Gen生成最終的混淆電路GC,過程為:
(4)預(yù)計算結(jié)果分發(fā)。生成混淆電路GC 后,SGX 將預(yù)計算結(jié)果分發(fā)給雙方用于后續(xù)混淆電路求值。SGX 首先通過遠(yuǎn)程認(rèn)證建立的可信信道發(fā)送將隨機(jī)種子seedx給參與者Px:
將Py輸入對應(yīng)的標(biāo)簽值通過不經(jīng)意傳輸發(fā) 送,有:
SGX 在完成上述4 個步驟之后,SGX 清空生成的相關(guān)預(yù)計算數(shù)據(jù),只保留最終輸出值z和其對應(yīng)標(biāo)簽值的映射表OM,如式(10)所示。此后作為輔助的SGX 不會參與后續(xù)混淆電路計算過程。最后SGX只是從Py得到最終輸出結(jié)果對應(yīng)的標(biāo)簽值,恢復(fù)原始值后分發(fā)計算結(jié)果。
(5)輕量級用戶標(biāo)簽生成。Px在接收到SGX發(fā)送的隨機(jī)數(shù)種子seedx后,通過式(11)方法可以生成自身實(shí)際輸入每一位i∈[1,k]對應(yīng)的標(biāo)簽值。
輕量級用戶Px在生成輸入對應(yīng)的所有標(biāo)簽后,可以在想要參與安全計算時將標(biāo)簽值一并發(fā)送給Py。
(6)混淆電路求值。參與者Py作為混淆電路求值者,在收到Px發(fā)送的標(biāo)簽值之后,結(jié)合自身輸入對應(yīng)的標(biāo)簽值即可對接收到的混淆電路GC 進(jìn)行如式(12)所示的運(yùn)算。求值運(yùn)算完成后Py將求得的最終輸出標(biāo)簽值發(fā)送給SGX,如式(13)所示,SGX 通過輸出標(biāo)簽的映射關(guān)系得到最終結(jié)果輸出z,最后SGX 如式(14)所示分發(fā)此次計算結(jié)果。
本方案可以對抗惡意的混淆電路參與者,下面首先對混淆電路中存在的不同惡意行為進(jìn)行討論,基于此進(jìn)而討論基于SGX 的輕量級兩方安全計算方案的安全性。在兩方安全計算中,任何惡意參與者想要獲得額外優(yōu)勢,只能通過不一致輸入、生成不正確的電路以及對電路故意錯誤求值3 種途徑實(shí)現(xiàn)。
不一致輸入。不一致輸入在混淆電路中主要表現(xiàn)在兩個方面:一方面?zhèn)鹘y(tǒng)方法中為對抗惡意參與者需要對同一電路生成多個混淆電路,參與者可在不同混淆電路中使用不同輸入;另一方面惡意的電路生成者可修改電路輸入標(biāo)簽,這會導(dǎo)致最終求值錯誤。上述兩種惡意行為在傳統(tǒng)的方法中都會導(dǎo)致選擇性失敗攻擊從而會破壞另一方隱私。在本方案中,由于電路的生成完全由SGX 完成,因此輕量級用戶失去了傳統(tǒng)方法中作為電路生成者的優(yōu)勢,無法以此來竊取對方隱私。注意不考慮參與者使用無效輸入或使用不真實(shí)數(shù)據(jù)參與計算的情況。
生成不正確的電路。傳統(tǒng)兩方安全計算中,惡意參與者通過修改電路的輸入和電路構(gòu)成來進(jìn)行破壞安全計算的隱私和正確性保證。在上文討論了使用SGX 來生成電路,保證輸入和預(yù)計算階段時雙方只能誠實(shí)參與協(xié)議,可以看到實(shí)質(zhì)上已經(jīng)限制了生成不正確電路的行為。
不誠實(shí)的求值。這種途徑等價于惡意參與者在擁有正確電路情形下惡意對電路進(jìn)行錯誤求值。對于混淆電路中每一個門來說,求值者只能夠得到和自身輸入相關(guān)的一個合法輸出標(biāo)簽,而無法得到其他任何輸出對應(yīng)的標(biāo)簽。最終結(jié)果是由SGX 生成,因此惡意參與者進(jìn)行錯誤求值只會破壞安全計算的正確性,而不會破壞另一方的隱私。更進(jìn)一步,SGX 能夠檢測錯誤的輸出標(biāo)簽,從而可以通知雙方檢測到錯誤?;煜娐繁旧硐拗屏藧阂鈪⑴c者進(jìn)行惡意求值得出合法的輸出標(biāo)簽。
總結(jié)來說,惡意求值者只有GC、從SGX 得到自身輸入的標(biāo)簽以及從對方接收到的輸入標(biāo)簽。由于惡意求值者是通過不經(jīng)傳輸?shù)玫阶陨磔斎雽?yīng)標(biāo)簽,因此惡意求值者不能得知任何其他合法標(biāo)簽的信息。此時求值者有效的惡意行為是進(jìn)行任意求值,但是由于GC的正確求值要求雙方輸入對應(yīng)的合法標(biāo)簽作為輸入,因此求值者只有使用合法標(biāo)簽進(jìn)行正確求值才會得到正確的輸出,任何不正確的求值行為都會被SGX 發(fā)現(xiàn)。另外,對于惡意的輕量級參與者來說,由于其只得到自身所有可能輸入對應(yīng)的隨機(jī)數(shù),因而他唯一的惡意行為是發(fā)送錯誤標(biāo)簽。這種行為會被SGX 檢測,但這并不會破壞對方隱私。除此之外,一個混淆電路只能用于一次求值過程,混淆電路無法復(fù)用,因而輕量級的惡意參與者無法通過發(fā)送不同的標(biāo)簽對同一混淆電路進(jìn)行多次求值。
基于SGX 的輕量級兩方安全計算支持移動設(shè)備等性能受限用戶,同時作為一個簡潔的協(xié)議,輕量級參與者通信和計算開銷與計算函數(shù)的復(fù)雜度無關(guān)。下面分別對參與計算的實(shí)體進(jìn)行性能分析。
輕量級參與者的通信開銷包括發(fā)送自身輸入對應(yīng)的標(biāo)簽,從SGX 接收seedx和最終結(jié)果。在輸入輸出為n位,生成標(biāo)簽為k位,電路復(fù)雜度為G下,可以容易得到通信開銷為k+n×k+nbit 計算開銷為2n次PRG。
SGX 的計算開銷組成包括兩部分:一是生成雙方輸入標(biāo)簽和電路標(biāo)簽的計算復(fù)雜度O(nG);二是生成用于不經(jīng)意傳輸?shù)挠嬎汩_銷O(n)。它的通信開銷也由兩部分組成,即分別與雙方通信的開銷。就輕量級參與者而言,SGX 的通信開銷只需要發(fā)送其所需的隨機(jī)數(shù)種子seedx。SGX 與求值者的通信開銷包括3 部分:一是發(fā)送混淆電路GC 所需的通信復(fù)雜度,與門電路數(shù)成正比;二是通過不經(jīng)意傳輸發(fā)送求值者輸入對應(yīng)的標(biāo)簽所需的通信復(fù)雜度O(n);三是接收最終結(jié)果標(biāo)簽和分發(fā)結(jié)果所需要的開銷n×k+2nbit。可以看到,最終SGX 的通信開銷與雙方輸入和計算函數(shù)f呈線性相關(guān),是可以接受的。
可以看到,求值者的通信開銷為O(n+k),求值的計算開銷包含不經(jīng)意傳輸和混淆電路求值過程,其計算復(fù)雜度為O(n+G)。
另外,對于輕量級參與者來說本方案是能夠擴(kuò)展的,因?yàn)殡S著參與者的增多每一個輕量級參與者的性能保持不變。與之相對比的是傳統(tǒng)多方安全計算方案此時性能開銷與參與者數(shù)目呈非線性增長。
本次實(shí)驗(yàn)使用SGX 的C++開發(fā)包2.7 版本實(shí)現(xiàn),開發(fā)平臺是Ubuntu 18.04。在雙方使用兩方安全計算技術(shù)進(jìn)行求值時,計算函數(shù)f需要被表示為布爾電路,這里使用布里斯托格式的來描述一個電路。
布里斯托電路文件組成如下:第一行記錄電路的門數(shù)目和線路數(shù)目;第二行記錄總體輸入輸出線路數(shù)目;后面按照輸入數(shù)量、輸出數(shù)量、輸入列表、輸出列表、電路類型格式描述每一個門電路。一個布里斯托格式電路例子如圖2 所示。電路由節(jié)點(diǎn)組成,這些節(jié)點(diǎn)可以是輸入、輸出或門。用來解析電路的電路文件按照拓順序包含節(jié)點(diǎn)。生成者根據(jù)布里斯托格式的電路描述生成對應(yīng)的混淆電路。
圖2 布里斯托格式32 位加法的部分電路
本實(shí)驗(yàn)在支持SGX 的英特爾8 代芯片上,配備有2.70 GHz 和3.6 GB 的RAM,執(zhí)行性能測試。函數(shù)f的電路表示可以用HyCC[12]工具來生成,使用ABY(Arithmetic-Boolean-Yao)[13]安全計算框架完成電路求值。參與者對SGX 進(jìn)行遠(yuǎn)程認(rèn)證所需要的通信開銷如表1 所示。
表1 遠(yuǎn)程認(rèn)證通信開銷
可以看到,在使用安全傳輸層協(xié)議(Transport Layer Security,TLS)安全信道進(jìn)行通信和遠(yuǎn)程認(rèn)證的情況下,即使是輕量級參與者也是能夠以很小的通信開銷完成遠(yuǎn)程認(rèn)證過程,這不會給輕量級參與者造成明顯的網(wǎng)絡(luò)負(fù)擔(dān)。為了充分測試輕量級兩方安全計算協(xié)議的性能,在本場景下,考慮到安全計算協(xié)議的性能主要是由計算函數(shù)f復(fù)雜度所影響。兩方安全計算常見的基準(zhǔn)測試包括加法、乘法、AES 加密算法和SHA1 摘要算法。使用HyCC 工具生成了上述算法的電路表示并且匯總了電路實(shí)際大小。不同函數(shù)電路表示的大小如表2 所示。
表2 不同函數(shù)的電路表示大小
另外需要提到的是,一般情況下安全計算協(xié)議的性能開銷測試需要考慮不同網(wǎng)絡(luò)環(huán)境,例如協(xié)議在局域網(wǎng)和廣域網(wǎng)下的表現(xiàn)。本方案是一個異步方法,并且實(shí)際電路求值過程不要求網(wǎng)絡(luò)交互,因此不考慮在不同網(wǎng)絡(luò)環(huán)境下此方法的表現(xiàn)。最后,輕量級兩方安全計算的性能開銷主要在于SGX 和電路求值者,輕量級參與者的實(shí)際計算開銷是可忽略的。由于SGX 參與的所有計算都可以在線下完成并且和雙方輸入無關(guān),因此方案的實(shí)際表現(xiàn)最終是由電路求值者的速度所決定。對比實(shí)驗(yàn)參照參與者在半誠實(shí)假設(shè)下進(jìn)行兩方混淆電路計算。最終結(jié)果如圖3 所示。
圖3 輕量級兩方計算協(xié)議性能開銷
從實(shí)驗(yàn)結(jié)果可以看到,在惡意參與者的情形下,基于SGX 的輕量級兩方安全計算方法能夠以近似半誠實(shí)模型的開銷執(zhí)行整個協(xié)議。這表明本文方法并沒有給求值者更多的計算負(fù)擔(dān)。對于移動端用戶來說,他們的通信和計算開銷都是可忽略的,實(shí)驗(yàn)證明這是一個移動端友好方案,能夠支持輕量級用戶參與者安全計算。
多方安全計算這一強(qiáng)大的隱私保護(hù)方法由于其開銷過大而不適用于計算和帶寬能力受限的移動端用戶。本文從兩方安全計算著手,提出使用SGX 作為輔助參與預(yù)計算過程,從而支持輕量級的用戶參與安全計算過程,同時對抗安全計算中的惡意參與者。實(shí)驗(yàn)證明,基于SGX 的輕量級兩方安全計算性能表現(xiàn)良好,輕量級用戶只需要極低的代價就能夠參與安全計算,并且不會給另一方造成額外的性能開銷。未來的研究方向是將兩方安全計算擴(kuò)展到多方參與的情形,挑戰(zhàn)在于如何在多方參與的情形下仍然支持輕量級用戶以很低的性能開銷參與協(xié)議。