天天看點

全面概述七類隐私計算技術:零知識證明、MPC與同态加密等

作者:CIO之家

在大資料時代中,由于對資料安全和隐私的考慮,例如政府、營運商、網際網路公司收集到的資料,不能透露給第三者,是以形成了一個個資料孤島,資料之間不能互通,資料的價值無法展現。如何應用海量的資料,實作資料流動,同時能夠保護資料隐私安全、防止敏感資訊洩露是目前大資料應用中的重大挑戰。隐私計算就是為了解決這些問題應運而生。

隐私計算從技術的分類來看,有以下幾個主要方向:首先是以密碼學為核心的隐私計算技術棧,包括安全多方計算、零知識證明以及同态加密等,其次是聯邦學習、可信執行環境以及差分隐私等技術。

差分隐私

差分隐私是一種偏統計學的概念,最早在醫療行業有需求。它的意思是我對一個資料庫加入一些噪聲進行擾動,加完噪聲之後的資料庫和和原始資料庫相比,查詢的準确性仍然很高,同時新資料庫被識别出隐私的機率被最大限度地降低。

差分隐私這個技術的使用場景相對比較有限。比如說當醫院擷取到一些病人的基因資料,但不希望任何人通過這些病人基因資料關聯一些外部的資料庫(比如病人在某個醫院的醫療資訊),識别到病人的身份。當類似于資料庫之間需要做這種聯立攻擊的情況下,可以用差分隐私來保護。但這種技術不屬于主流的隐私計算,因為它沒有辦法去做一些像聯合模組化或者資料交集計算這些常用的任務。

全面概述七類隐私計算技術:零知識證明、MPC與同态加密等

TEE

通俗地說,TEE是将所有的任務都丢到一個黑盒子裡面去計算。通常我們會将計算的時候用到代碼和資料放在作業系統層面。黑盒子是在作業系統裡面的一個特殊的可信執行環境。那這種可信執行環境使得你可以将涉及敏感資料的計算任務都丢到這個盒子裡面。在可信執行環境裡面跑的可信應用是無法和普通的應用做資料互動的。當它跟外部的資料作互動的時候,需要通過特殊的一些安全接口,同時它的運作時安全也做得比較好。

目前,這個技術比較大的問題是它的安全性完全建立在對TEE産品的信任上。國際上Global Platform國際标準化組織最早做這塊的标準。目前實作技術主要有英特爾的SGX、AMD的SEV和還有ARM的Trust Zone等。

隐私計算裡面需要用到的任務,TEE差不多都能跑起來,但是它會有一些局限性。因為它是一個硬體部署,是以硬體的更新改造通常沒有軟體那麼輕量級和友善。如果硬體出了一個漏洞的話,出現的問題會比較大;以及TEE有時候無法處理一些對網絡帶寬和計算資源要去比較高的任務。TEE的好處就是它的設計和架構部署相對比較簡單。

聯邦學習

聯邦學習(Federated Learning, FL)最早是由谷歌提出來的,他們當時要解決的一個問題:谷歌希望将每個人分布式手機上的資料彙總到一起,然後做一個模型的訓練。是以谷歌一開始提出的聯邦學習的開源架構是基于移動的環境下的。發展到現在,像微衆銀行、百度,包括谷歌自己,都提出了各自的聯邦學習的技術架構。聯邦學習其實主要解決的就是怎麼樣在一個分布式的環境下,各個參與方有各自的資料,如何将這些資料充分運用起來進行模型訓練,又能滿足各個參與方的隐私訴求(參與方不希望把自己的資料告訴剩餘方,甚至是可信平台)。

聯邦學習的算法需要用到一些機器學習的模型模組化的:比如說神經網絡、邏輯回歸或是線性回歸。聯邦學習中,多個資料源在分布式的條件下,希望僅通過傳遞梯度來保護資料隐私和完成模型訓練。并且假設中間層的梯度值洩露出來不影響安全性,不會導緻攻擊者對原始資料的擷取。

聯邦學習它有很多優點,比如支援比較多的AI算法,且效率比較高。聯邦學習的缺點在于這套技術是AI專家提出來的,它的安全性基礎缺乏理論支撐。目前業界也會對一些聯邦學習的方案做攻擊,并且基于梯度安全性的攻擊,已經有一些成果出來了。

從具體的聯邦學習分類來看,因為每一方的資料分布不同,其架構設計也是有差異的。通常分為橫向聯邦和縱向聯邦,分别面向相同次元但是不同使用者組,和不同次元但是相同使用者組的模組化場景。

全面概述七類隐私計算技術:零知識證明、MPC與同态加密等

同态加密

同态加密是一種特殊的加密技術。加密是如何将明文進行變換,變成密文的一個過程。同态加密是什麼意思呢?它的本質就是說我可以對密文做計算。密文本身它是一個無序、内容随機分布的一串“code”,是以對密文計算是比較難的事情,但是同态加密就可以實作。同态加密的意思是,對兩個密文進行操作的結果,等于對這兩個密文對應的明文m1、m2進行操作後再加密的結果。舉個例子。假設Alice希望工匠幫她把兩個金塊加工成手镯。在這個加工過程中,她希望工匠無法把這個金塊的碎片收集起來。是以工匠需要借助一個特殊的裝置。這個裝置是透明的并且帶了一把鎖(僅有Alice可以打開這把鎖拿到裝置内部的物體),并且固定了一個手套,工匠可以将雙手放到手套裡,隔着裝置進行精細的加工,但是戴着手套,并且手套無法離開裝置,工匠實際上無法觸碰到任何的金塊和金塊碎片。在這個例子裡,裝置裡的兩個金塊可以看成原始密文Encrypt(m1)和Encrypt(m2),工匠所做的事情,就好像是他在盒子的遮擋下在操作密文,而Encrypt(m1+m2)就是裝置裡的手镯,Alice通過解鎖獲得了手镯,即m1+m2。

同态加密需要解決的一個核心問題是可以支援任意類型的計算。任意的意思是指加法和乘法,因為所有的計算程式抽象為算術電路表示都可以用加法和乘法實作。傳統的聯邦學習用的一般是加法同态加密系統,而著名的商用密碼算法RSA就是一個乘法同态加密算法。最厲害的是全同态加密,指的是對于既支援加法操作又支援乘法操作,并且計算次數沒有限制的加密算法。這種方案特别非常少,直到2009年第一個全同态加密方案被Gentry等人提出來。現代的全同态加密系統,一般基于格理論等基礎工具,可以對抗量子攻擊。

安全多方計算

安全多方計算(MPC)是由圖靈獎獲得者,中國科學院院士姚期智先生最早提出來的。姚先生當時提出了一個百萬富翁問題,兩個富翁非常有錢,他們互相之間要比較誰更富有,但是又不想告訴對方自己具體的财富數,同時他們不希望依托一個可信的第三方來完成問題的回答。事實上,MPC要解決的就是多個參與方在不洩露隐私資料的前提下,如何協作,完成對一個問題的求解。當然,各方要計算的任務是公開的。比如說多方之間想要做一個聯合的加法或者聯合的模組化,模型是邏輯回歸,需要多少輪等這些細節是約定好的。MPC的結果輸出一般是可以指定的,可以以明文形式輸出,也可以以密文形式輸出并且分割在多方進行儲存。

MPC有兩個模式,一個模式就是使用者有一個隐私輸入x ;然後服務提供商有一個隐私輸入y,根據一個公開的計算函數f, 兩方協作最後會輸出一個f(x,y)。還有一種模式是,使用者輸入x,然後服務提供商提供計算函數f,服務提供商希望把函數f 藏起來,最後兩方協作輸出f(x,y)。這兩種模式在業務上是有差别的,一種是算法是公開的,另一種是算法是隐藏的,但是對于MPC底層電路而言,其本質是一樣的,算法設計部分其實沒有太大差别。

傳統的MPC技術路線分為兩類,分别針對兩類不同的電路系統。 一類叫布爾電路,指的是每一個計算單元的表示形式是布爾門(與門、或門、非門);這類布爾電路,會有一套專門的MPC密碼協定來處理。另一類叫算術電路,指電路完全由加法和乘法組成。出于性能效率的原因,不同的電路類型任務需要用選用不同的密碼協定來實作。

安全兩方計算所使用的協定一般為混淆電路(GC)結合不經意傳輸(OT);而安全多方計算(指三方或者三方以上)所使用的協定一般為秘密分享(SS)結合不經意傳輸。前者(GC+OT)主要的問題在于計算開銷會比較大,而且一般比較适合于做兩方之間的隐私計算。它的好處在于需要的通訊輪數比較少。後者的問題在于通常需要疊加多輪OT,會引入非常高的通訊輪數;它的好處在于計算開銷比較小。對于網絡要求比較高的這種場景裡面不太适合用這種SS+OT的方法。

從目前的工程經驗來看,業界用SS+OT實作基于算術電路的MPC方案較多。當然本質上技術的選取還是跟計算任務相關。很多情況下,比如說你要做AI模組化涉及較多的乘法、線性運算,更适合用算術電路來實作;而如果要做一些比較查詢,更适合用混淆電路來處理。

在實際的MPC部署問題上,我們通常會把資料方和計算方分開。這樣可以盡可能地支援更多的參與方,并且實際的計算節點不會太多,一般會有兩個或者三個。否則增多計算節點,會導緻通訊輪數指數級的上升,網絡開銷無法承擔。

零知識證明

零知識證明(ZKP)是反直覺的,簡單來說是證明者向驗證者進行證明“我知道問題的解”,但不直接透露解,驗證者完成驗證後會确信前者知道解但是無法獲得任何解的資訊。通常ZKP的兩方之間需要進行互動通信,屬于一種“互動式證明系統”。實際的設計裡,出于通訊效率的考慮,可以将各類ZKP系統轉成非互動式。零知識證明目前主要還是用來做認證相關的場景。

傳統的零知識證明系統裡,一般是形如證明者提供承諾-驗證者發出随機挑戰-證明者完成應答的互動式“三步曲”。通常證明者可以用類似随機猜測的辦法以一定機率完成驗證者的挑戰,需要把這個三步曲過程重複很多輪,來盡可能降低證明者欺詐的機率。目前ZKP的非常熱門,湧現了如zk-SNARKs, zk-STARKs, bulletproof等非常優秀的通用類ZKP系統,可以實作對任意論述的證明。

零知識證明在區塊鍊中用的最多的就是做隐私交易,主要是指隐藏交易三要素——付款人,收款人以及金額。目前像ZCash、Monero等隐私代币都有很不錯的隐私交易技術。在聯盟鍊裡,需要考慮審計等第三方介入的場景,是以需要将零知識證明與審計需求進行技術上的結合。

從技術路線來看,目前零知識證明的算法有個主要的問題是,——一去建立零知識證明系統的時候,整個系統它會有一些初始化的參數,這些參數的建立過程其實是需要一定的信任假設的。比如可以找一個可信的第三方來建立,建立過程中會用到一些随機數,那這些随機數如果持續不删除的話,獲得了這些随機數的人就可以成功地僞造證明。這也就是所謂trust setup問題。各類通用ZKP系統目前均無法很好地解決這個問題,有些是需要通過一個額外機制來實作這個可信的初始化過程,有些是無需可信初始化但是會造成很嚴重的效率問題。

全面概述七類隐私計算技術:零知識證明、MPC與同态加密等

代理重加密

代理重加密解決的是一個資料外包共享的問題。一個典型的例子是, a想要把她的資料儲存到雲端,同時不想讓雲看到這個資料,是以她的資料顯然是需要加密再放到雲端的。某個時刻,b需要向a獲得這個資料,a又不想自己直接把這個資料下載下傳下來解密後再傳給b,那麼有沒有什麼辦法完成業務需求?代理重加密就是解決這個問題的。首先,雲端有這個a的加密資料,雲會借助代理重加密技術把a的密文轉成b(能夠解開)的密文。是以這裡面有一個顯式的密文轉換操作。b經過a的授權,從雲端下載下傳了轉換後的密文,再用自己的密鑰解開,就可以獲得a的資料明文。a是一個輕計算節點,所有的重型計算都是在雲端操作,然後這裡面借助一個授權過程,雲端把這個密文進行計算轉換(并不是簡單地将a的密文解密後用b的公鑰加密,而是一種特殊的密文計算)。

從計算類型來看,隐私計算其實是關聯實際的業務場景的。前面提到的是機器學習相關的計算是一大類;還有一類叫集合運算,其中典型的問題就是兩方之間做集合的交集:a有一個集合x,b有一個集合y;a 作為發起方,b作為協作方,然後計算完成後,發起方a能夠得到中間的這部分交集x∩y,但是她無法知道y中的剩餘元素;另一方面,b全程無感,即b不知道x∩y。這個就是所謂的隐私集合求交問題(PSI)。PSI涉及的具體場景很多,例如兩個資料庫撞庫,黑名單查詢等。

本文作者:夏伏彪 來源:分布式資本

CIO之家 www.ciozj.com 微信公衆号:imciow

繼續閱讀