安全多方计算新突破!阿里首次实现“公开可验证” 的安全方案
阿里妹導讀:近日,阿里安全雙子座實驗室與馬里蘭大學等高校合作的論文《Covert Security with Public Verifiability: Faster, Leaner, and Simpler 》【1】被歐洲密碼年會(Eurocrypt)2019接收。這是國內公司在安全多方計算領域的第一篇頂會論文(Eurocrypt2018只有3篇大陸作者論文,難度可見一斑)。
今天,我們邀請阿里高級安全專家鴻程,深入解讀業界首個“公開可驗證(PVC)” 的安全兩方計算方案。
安全多方計算介紹
安全多方計算( Secure Multi-Party Computation,MPC)于1986 年由姚期智院士提出【2】。安全多方計算協議允許多個數據所有者在互不信任的情況下進行協同計算,輸出計算結果,并保證任何一方均無法得到除應得的計算結果之外的其他任何信息。換句話說,MPC技術可以獲取數據使用價值,卻不泄露原始數據內容。
互聯網已經完成了從IT時代向DT時代的轉變,數據已經成為DT時代企業的核心競爭力。數據作為一種新能源,只有流動起來才能產生價值。不過,大多數企業考慮到數據安全和個人隱私等問題,對數據共享都非常謹慎。而MPC對打破數據孤島,實現數據的可控共享,具有重要的理論和現實意義。
MPC方案主要可分為基于混淆電路(Garbled Circuit,GC)和基于秘密共享兩種。本文主要關注GC類方案。
不經意傳輸(Oblivious Transfer)
我們首先介紹一種基礎的安全多方計算協議:不經意傳輸(Oblivious Transfer, OT)。
來看一個例子:假設某旅行社擁有N個景點的旅游資料,小淘想去其中的A景點游玩,希望向旅行社購買相關資料做好出游功課。但是小淘非常在意自己的隱私,不希望向旅行社泄露自己的目的地是哪里。因此雙方希望這筆交易能夠滿足以下隱私條件:
粗看起來這種隱私條件似乎是無法滿足的:旅行社只要把景點A的資料給到小淘,就必然了解了“小淘正在關注A景點”這一信息;除非旅行社把所有N份資料都給出,但是這又違背了旅行社的利益;
但是神奇的OT可以讓交易在這種“不可能的條件”下達成。簡而言之,在OT協議中,旅行社把他擁有的N份資料使用某種雙方協商同意的加密算法和參數進行加密,然后發送給小淘;小淘可以從密文中解密出A的資料,而無法解密出其他N-1份資料。
以下以N=2為例,基于Diffie-Hellman密鑰交換協議,給出一種1 of 2 OT實現方法的非正式描述;其中S(Sender)=旅行社,R(Receiver)=小淘,S擁有兩份資料,R希望取得其中的;
如果R希望取得,只需把第2步中的改為即可。
OT除了可以直接用于構造MPC方案之外,也是GC等許多MPC方案的基石。
混淆電路
我們知道,任意函數最后在計算機語言內部都是由加法器、乘法器、移位器、選擇器等電路表示,而這些電路最后都可以僅由AND和XOR兩種邏輯門組成。一個門電路其實就是一個真值表,例如AND門的真值表就是:
例如其中右下格表示兩根輸入線(wire)都取1時,輸出wire=1:即 1 AND 1 = 1。
假設我們把每個wire都使用不同的密鑰加密,把真值表變成這樣:
例如其中右下格表示如果門的輸入是b和d,那么輸出加密的f(密鑰是b和d)。這個門從控制流的角度來看還是一樣的,只不過輸入和輸出被加密了,且輸出必須使用對應的輸入才能解密,解密出的f又可以作為后續門的輸入。這種加密方式就稱為“混淆電路(Garbled Circuit,GC)”。
將電路中所有的門都按順序進行這樣的加密,我們就得到了一個GC表示的函數。這個函數接收加密的輸入,輸出加密的結果。
假設有兩個參與方A和B各自提供數據a、b,希望安全的計算約定的函數F(a,b),那么一種基于GC的安全兩方計算協議過程可以非正式的描述如下:
細心的同學一定會指出:第4步中A怎么可以接觸B的輸入b呢?這不是違背了安全多方計算的假設嗎?這里就需要使用OT,A扮演Sender,B扮演Receiver,讓B從A處得到Encrypt( b),卻不向A透露b的內容。如圖所示:
需要注意的是,上述流程只是最原始的GC方法的不嚴謹描述,GC后續還有Point & Permute、Free XOR、Half Gates等多種細節優化,隨著最近幾年的研究進展,GC的性能已經差不多可以實用了。以求兩個百萬維向量的漢明距離(Hamming Distance)為例(應用場景是兩份數據求相似度,卻互相不泄露數據內容),這樣的安全兩方計算已經可以在1.5秒左右完成。
安全多方計算的安全模型
半誠實行為模型與惡意行為模型
更細心的同學還會進一步提出問題:“怎么確保A給B的就是一個正確的GC呢?例如A和B商定要比a和b的大小,商定了F(a,b)=a>b?1:0,但是A可以制作一個別的函數的GC,例如F(a,b)=b的第1個比特,這樣顯然是會侵害B的隱私的,但是由于函數是以GC形式發給B的,B是沒有辦法發現這個問題?”
這確實是一個安全問題,事實上,GC還存在如selective failure等其他更多的安全問題。在介紹解決方案之前,我們需要先定義安全多方計算的安全模型。
安全多方計算的安全模型包含多個角度的內容,在上述上下文中,我們關注的是其中的“行為模型”,即參與方可能進行何種行為以獲取其他方的隱私。常見的行為模型包括“半誠實(Semi Honest)”和“惡意(Malicious)”兩種。前者假設所有參與方都是忠實的按照協議步驟進行執行,只是想通過協議內容推測其他方的隱私,而后者假設惡意參與方為了獲取其他方的隱私可以不遵循協議內容。
用撲克牌打個不嚴謹的比方,半誠實的牌友會試圖從自己的手牌和已經打出的牌來推測他人的手牌,但是還是遵循撲克牌規則的;而一個惡意的牌友則換牌、偷牌等手段無所不用。
可見,本節開始提出的問題屬于惡意行為的范疇,而原始的GC只能說在半誠實行為模型下是安全的,無法抵御惡意行為攻擊。有許多對GC方案的改進方案可以達到惡意行為模型下的安全性,但是它們都需要付出很大的性能代價:仍然以求兩個百萬維向量的漢明距離為例,其中最快的方法也需要10秒+,比同等的半誠實方案慢7倍以上。事實上,經過我們的調研,若想真正的實現支持大規模數據的MPC產品,基本上只能考慮半誠實方案。這嚴重影響了安全多方計算的實用性。
公開可驗證(Public Verifiable Covert, PVC)行為模型
PVC是在半誠實、惡意之間的一種折中。其主要思想是:每個參與方的所有行為都自動帶有類似簽名的機制以供其他參與方存證。假設某個參與方實施惡意行為,那么其他參與方可以有的概率發現(稱為威懾因子,一般>=50%,不能100%發現,因為100%那就直接滿足惡意行為模型了)這一惡意行為,并將該行為及其簽名公開,令作惡者承受名譽損失。考慮到名譽對一個數據所有者的重要性(例如此后可能再也找不到合作),50%左右的威懾力已經足以讓理性者不考慮作惡。
PVC模型最開始是由學者在Asiacrypt2012【3】提出,Asiacrypt2015【4】上也有學者提出相關的改進方案,但是這些方案不僅效率較低,而且只有復雜的理論描述,實現可能性低。我們提出的新型PVC方案不僅協議簡潔,性能有大幅提升,而且首次進行了完整的代碼實現。仍然以求兩個百萬維向量的漢明距離為例,使用我們威懾因子為50%的PVC方法大概只需要2.5秒。
以下仍假設有兩個參與方A和B各自提供數據a、b,希望安全的計算約定的函數F(a,b),以威懾因子=50%為例,給出我們的PVC方案的非正式描述:
可見,A如果作惡,總有50%的概率被B抽查到(因為A不知道B到底掌握了哪個GC的隨機種子)。因此理性的A會選擇不作惡,忠實的執行安全多方計算協議。
需要再次強調的是,為便于理解,所有的協議都僅僅是非正式描述,有興趣進一步研究細節的同學歡迎參閱我們的論文【1】。
總結
我們與馬里蘭大學等高校合作,首次實現了一種“公開可驗證(PVC)” 的安全兩方計算方案,這種方案的性能接近半誠實方案,同時其PVC特性能夠對作弊行為形成威懾力,令其具有遠強于半誠實模型的安全性,具有很高的實用價值。
原文鏈接
本文為云棲社區原創內容,未經允許不得轉載。
總結
以上是生活随笔為你收集整理的安全多方计算新突破!阿里首次实现“公开可验证” 的安全方案的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 四大维度全景揭秘阿里巴巴智能对话开发平台
- 下一篇: 使用Terraform创建托管版Kube