安全多方計算新突破!阿里首次實現「公開可驗證」 的安全方案

阿里妹導讀:近日,阿里安全雙子座實驗室與馬里蘭大學等高校合做的論文《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)ui

咱們首先介紹一種基礎的安全多方計算協議:不經意傳輸(Oblivious Transfer, OT)。加密

來看一個例子:假設某旅行社擁有N個景點的旅遊資料,小淘想去其中的A景點遊玩,但願向旅行社購買相關資料作好出遊功課。可是小淘很是在乎本身的隱私,不但願向旅行社泄露本身的目的地是哪裏。所以雙方但願這筆交易可以知足如下隱私條件:spa

  1. 小淘不但願向旅行社泄露「我準備去A景點」這一信息;
  2. 旅行社只但願出售小淘出錢購買的那份資料,而不泄露小淘未購買的N-1份資料;

粗看起來這種隱私條件彷佛是沒法知足的:旅行社只要把景點A的資料給到小淘,就必然瞭解了「小淘正在關注A景點」這一信息;除非旅行社把全部N份資料都給出,可是這又違背了旅行社的利益;ci

可是神奇的OT可讓交易在這種「不可能的條件」下達成。簡而言之,在OT協議中,旅行社把他擁有的N份資料使用某種雙方協商贊成的加密算法和參數進行加密,而後發送給小淘;小淘能夠從密文中解密出A的資料,而沒法解密出其餘N-1份資料。rem

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方案的非正式描述:

  1. A選擇兩個隨機種子s1和s2, B和A運行OT隨機選擇其中一個(不妨設B獲取了s1);
  2. A使用s1和s2分別生成GC1和GC2;
  3. B和A運行OT獲取GC1中B輸入wire的加密值(咱們後面能夠看到GC1不會真正被使用,所以這裏能夠不與b對應,好比是任意常數值的密文);
  4. B和A運行OT獲取GC2中B輸入wire對應的b的加密值;
  5. A對GC1進行Hash,並把Hash發給B;
  6. A對GC2進行Hash,並把Hash發給B;
  7. A對上述全部流程進行簽名,並把簽名發送給B;
  8. B因爲有s1,所以能夠自行生成GC1,能夠本身模擬第3步和第5步;若是結果與A發的不一致,則公佈相關簽名做爲A做惡證據。若是一致,就用GC2進行真實計算。

可見,A若是做惡,總有50%的機率被B抽查到(由於A不知道B到底掌握了哪一個GC的隨機種子)。所以理性的A會選擇不做惡,忠實的執行安全多方計算協議。

須要再次強調的是,爲便於理解,全部的協議都僅僅是非正式描述,有興趣進一步研究細節的同窗歡迎參閱咱們的論文【1】。

總結

咱們與馬里蘭大學等高校合做,首次實現了一種「公開可驗證(PVC)」 的安全兩方計算方案,這種方案的性能接近半誠實方案,同時其PVC特性可以對做弊行爲造成威懾力,令其具備遠強於半誠實模型的安全性,具備很高的實用價值。



本文做者:鴻程

閱讀原文

本文來自雲棲社區合做夥伴「 阿里技術」,如需轉載請聯繫原做者。

相關文章
相關標籤/搜索