隱私集合求交(PSI)-0

在知乎上看到一篇文章,講解PSI的,很好,在這裏簡單摘抄一下學習。來自:隱私計算關鍵技術:隱私集合求交(PSI)原理介紹。對應的開源庫。對應的論文:Efficient Batched Oblivious PRF with Applications to Private Set Intersection

PSI

隱私集合求交(Private Set Intersection)是縱向聯邦學習中的關鍵前置步驟,用於在多家廠商聯合計算前,找到多家共有的數據樣本,並且不暴露每家廠商獨有的樣本。在本文中,我們詳細介紹一種使用不經意傳輸協議(Oblivious Transfer)實現的隱私集合求交方法,該方法在現有的PSI方法中,是速度最快的。

縱向聯邦學習

假設這樣一個場景,淘寶和知乎聯合起來訓練一個模型,預測一個用戶是否對科技類產品感興趣。淘寶有用戶A、B、C三個人的購買歷史數據,而知乎有B、C、D三個人的知乎文章瀏覽數據。使用縱向聯邦學習,在淘寶和知乎都不泄露各自的用戶數據前提下,我們可以整合B、C兩個人的淘寶和知乎數據特徵,共同訓練一個預測模型,由於使用到了兩類數據進行訓練,理論上來說得到的結果應該比淘寶或者知乎各自訓練出的模型更準確。

由於模型訓練需要同時使用淘寶和知乎的數據,我們發現用戶A僅僅有淘寶的數據,沒有知乎的數據,因此用戶A無法做爲訓練樣本使用。同樣的,知乎的用戶D也無法參與訓練。因此在縱向聯邦學習之前,雙方需要計算出共有的樣本(數據對齊),也就是B、C兩人,後續的計算都圍繞BC兩人進行。而隱私集合求交就是雙方通過加密計算,得到B、C兩人這個集合,同時不暴露各自的原始集合的方法。

PSI+hash

PSI是指,參與雙方在不泄露任何額外信息的情況下,得到雙方持有數據的交集。在這裏,額外的信息指的是除了雙方的數據交集以外的任何信息。

隱私集合求交在現實場景中非常有用,比如在縱向聯邦學習中做數據對齊,或是在社交軟件中,通過通訊錄做好友發現(好友推薦)。因此,一個安全、快速的隱私集合求交的算法是十分重要的。

我們可以用一種非常直觀的方法來進行隱私集合求交,也就是樸素哈希(simple hash)的方法。參與雙方A、B,使用同一個哈希函數H,計算他們數據的哈希值,再將哈希過的數據互相發送給對方,然後就能求得交集了。

這種方法看起來非常簡單、快速,但是,它是不安全的,有可能會泄露額外的信息。如果參與雙方需要求交集的數據本身,數據空間比較小,比如說手機號、身份證號等,那麼,一個惡意的參與方,就可以通過哈希碰撞的方式,在有限的時間內,碰撞出對方傳過來的哈希值,從而竊取到額外的信息。因此,我們需要設計出更加安全的隱私集合求交的方法。

所以通過簡單hash實現的PSI,雖然簡單快速,但不安全。

現在已經有了很多種不同的方法來實現隱私集合求交,比如基於Diffie-Hellman密鑰交換的方法、基於不經意傳輸的方法等等。而截至目前,最快速的隱私集合求交方法,是基於不經意傳輸的。下面,我們介紹如何使用不經意傳輸,來實現一個隱私集合求交算法。

目前最快的PSI還是基於OT的。

PSI+OT

OT

不經意傳輸是一種密碼學協議,實現了發送將將潛在的許多信息中的一個傳遞給接收方,但是對接收方所接收的信息保持未知。

一種比較實用的不經意傳輸方案,被稱爲1-2不經意傳輸。在1-2不經意傳輸中,發送方持有兩個數據,接收方可以選擇獲取其中的一個,但是發送方並不知道接收方選擇了哪一個數據。形式化描述如下:

發送方A持有數據\(m_0\)\(m_1\),接收方B持有一個比特\(b\)\(b\in{0,1}\),則1-2不經意傳輸可以描述爲:

\[OT((m_0,m_1),b)=m_b \]

其中,B只知道\(m_b\),不知道\(m_{1-b}\),而A也不知道\(b\)

我們也可以將1-2不經意傳輸擴展爲1-n不經意傳輸,即接收方能從n個數據中選擇獲取一個,且對發送方保密。

不經意傳輸也有很多種實現方式,不過一般都需要使用公私鑰加密的方式來實現,比如RSA、橢圓曲線加密等。 在本篇文章中,我們不介紹具體的不經意傳輸協議,讀者們可以把不經意傳輸當作是一個黑盒子,我們接下來詳細介紹如何實用不經意傳輸,來構造一個隱私集合求交的方法。

使用OT

我們先從最簡單的情況開始。假設參與雙方A、B,都只有一個元素,這時隱私集合求交,就退化成了隱私比較, 即A、B比較持有的元素是否相等,同時不泄露自己持有的元素。

我們假設A持有數據x,B持有數據x。不失一般性,我們假設x與y的字節長度相等,長度爲\(l\),即\(|x|=|y|=l\)。 現在,A爲數據x的每一位,都生成兩個隨機的二進制串(服從均勻分佈),長度爲\(n\),即\(K_{i,0},K_{i,1},i=(0,1,..,l-1),|K_{i,0}|=|K_{i,1}|=n\)

現在,B作爲接收方,A作爲發送方,開始執行1-2不經意傳輸協議。B根據y的每一位\(y_i\),選擇A持有的\(K_{i,0},K_{i,1}\)中的一個,即\(OT((K_{i,0},K_{i,1}),y_i)=K_{i,y_i},i=(0,1,..,l-1)\)。B將接收到的\(l\)個二進制串進行異或,得到一個二進制串\(K_y\),即\(K_y=\bigoplus K_{i,y_1},i=(0,1,..,l-1)\), 其中$\bigoplus $表示異或。

發送方A也可以跟B一樣,根據x的每一位\(x_i\),選擇一個二進制串\(K_{i,x_i}\),將這\(l\)個二進制串進行異或,得到一個二進制串\(K_x=\bigoplus K_{i,x_1},i=(0,1,..,l-1)\)。當然,A生成\(K_x\)的過程不需要使用不經意傳輸,因爲x與K都在A的手中。

之後,A將\(K_x\)發送給B,B即可判斷x與y是否相等。

這個隱私比較的方法,顯然是安全的。

B使用不經意傳輸獲得\(K_y\)的過程中,由於不經意傳輸的特性,A不會知道B的數據y;使用異或得到的\(K_x\)\(K_y\),與一個隨機的n位二進制串是無法區分的,所以B也無法通過\(K_x\)反推出x。A作爲發送方,不經意傳輸保證了A無法得到B的數據y(除非\(x=y\));只要B是誠實的,即不能通過不斷執行這個協議來碰撞A的數據,那麼B也無法得到A的數據x(除非\(x=y\))。

PSI+OPRF(OT)

OPRF

觀察隱私比較,我們可以發現,發送方A持有一組二進制串\(K_{i,0},K_{i,1},i=(0,1,..,l-1)\),我們可以將這些二進制串整體當作一個隨機種子\(K\),由A持有。從B的角度來看,隱私比較的過程,就是B輸入數據y,得到一個隨機二進制串\(K_y\),這個二進制串由A持有的隨機種子\(K\)與輸入y來決定,同時A無法得知B的輸入y。這一過程,就可以看作是不經意僞隨機函數(Oblivious Pseudorandom Function, OPRF)

不經意僞隨機函數是一種密碼學協議[3],發送方可以選擇一個隨機種子\(s\),接收方可以選擇一個輸入\(r\)並得到一個僞隨機函數\(F(s,r)\)的輸出,同時發送方不知道\(r\)。那麼,隱私比較中,接收方B就是執行了一個不經意僞隨機函數\(F(k,y)=K_y\),發送方A可以執行一個普通的僞隨機函數\(F(k,x)=K_x\),通過比較\(K_x\)\(K_y\),即可實現隱私比較。

這樣來看,我們就是使用不經意僞隨機函數,來構建了一個隱私比較算法。接下來,我們要更進一步,看看如何使用不經意僞隨機函數,來構建隱私集合求交。

使用OPRF

這裏的OPRF實際上是使用的OT協議實現的

假設A持有一組輸入X,B持有一組輸入Y,\(|X|=|Y|=n\)。通過不經意僞隨機函數,我們可以構造出一個非常樸素的隱私集合求交算法

  • A構造\(n\)個不經意僞隨機函數的種子\(k_i,i=(0,1,...,n-1)\)
  • B爲Y中的每一個元素y,執行一個對應不經意僞隨機函數,得到集合\(H_B=(F(k_i,y_i)|y_i\in Y)\)
  • A爲X中的每一個元素x,執行每一個不經意僞隨機函數,得到集合\(H_A=(F(k_i,x_i)|x_i\in X)\)
  • A將集合\(H_A\)發送給B,B求交集\(H_A\bigcap H_B\),再將交集映射回Y,即可得到X與Y的交集

這種方法簡單來講,就是B將每一個Y中的每一個元素,都與A的X中的每一個元素,通過不經意僞隨機函數進行隱私比較,進而得到X與Y的交集。

這種方法雖然直觀,但是開銷很大,因爲集合\(H_A\)的大小是\(O(n^2)\),當集合大小n增長時,傳輸量增長很快。

單純使用OPRF,會使得開銷很大

那麼,我們有沒有辦法將集合大小限制在\(O(n)\)呢?答案是可以的。這需要使用到哈希表的思想。這裏,我們使用布穀鳥哈希(Cuckoo hashing)來解決這個問題。

PSI+OPRF(OT)+Cuckoo hash

Cuckoo hash

我們首先簡單介紹一下布穀鳥哈希。

假設我們想要使用布穀鳥哈希,將n條數據放入\(b\)個桶中,則我們首先選擇3個哈希函數\(h_1,h_2,h_3:(0,1)*->[b]\),以及b個空的桶\(B[1,...,b]\)。要放入一條數據\(x\),首先查看3個桶\(B[h_1],B[h_2],B[h_3]\)是否有空的,如果有空的,則將\(x\)放入空桶。如果沒有空桶,則從這三個桶中隨機選擇一個桶\(B[h_i],i\in(1,2,3\),踢出原來在這個桶中的元素\(x'\),並將x放進這個桶中,然後再繼續嘗試插入被踢出的元素\(x'\)。遞歸地執行這一過程,直到元素被放入一個空桶中。如果經過一定輪次後,仍然找不到空桶放入元素,那麼就將被踢出的元素放到一個特殊的桶中,這個桶被稱爲儲藏桶

使用Cuckoo hash

現在回到隱私集合求交的構建中,讓我們看看如何在隱私集合求交中使用布穀鳥哈希。

首先,A、B雙方共同選擇三個哈希函數\(h_1,h_2,h_3\)。然後,B將其持有的\(n\)個元素Y,使用布穀鳥哈希,放入\(1.2n\)個桶與一個儲藏桶中,儲藏桶的大小爲\(s\)。對B來說,現在每個桶中最多隻有一個元素,並且儲藏桶的中,最多有個元素。現在B可以構造假數據,將這些桶和儲藏桶都填滿,使每個桶中都有一個元素,且儲藏同中正好有\(s\)個元素。

然後,A可以生成\(1.2n+s\)個隨機種子\(k_i,i\in(1,2,..,1.2n+s)\),用作\(1.2n+s\)個不經意僞隨機函數的隨機種子。B作爲接收方,爲其桶中的每一個元素\(y\),計算不經意僞隨機函數。如果\(y\)被放在\(i\)號桶中,則計算\(F(k_i,y)\),如果\(y\)被放在了儲藏桶中的第\(j\)個位置,則計算F\((k_{1.2n+j},y)\)

另一邊,A作爲發送方,可以任意地計算僞隨機函數\(F(k_i,x)\),那麼,A可以爲其輸入X計算以下兩個集合:

\[H=(F(k_{h_i(x)},x)|x\in X,i={1,2,3}) \]

\[S=(F(k_{1.2n+j},x)|x\in X,j={1,2,3,...,s}) \]

A將集合\(H\)和集合\(S\)中的元素打亂,並將這兩個集合發送給B。對於B來說,如果一個元素\(y\)被放到儲藏桶中,則B可以在集合\(S\)中查找\(y\)對應的不經意僞隨機函數輸出;否則,就在集合\(H\)中查找。通過查找,就可以得到X與Y的交集。

通過計算,我們可以發現,集合\(H\)的大小爲\(3n\),集合\(S\)的大小爲\(ns\)\(s\)是一個常數,因此A需要傳輸的數據量爲\(n(3+s)\),是\(O(n)\)的。通過結合布穀鳥哈希,我們減少了協議所需要傳輸的數據量,加快了協議的執行速度。

顯然,使用不經意僞隨機函數構造的隱私集合求交算法,是安全的。

由於不經意僞隨機函數的特性,發送方A無法得知接收方B的輸入。同時,對於集合\(X-Y\)中的元素,其經過僞隨機函數的輸出,與一個隨機的二進制串無法區分,因此B也無法從僞隨機函數的輸出中反推出輸入。在B是誠實的條件下(不能無限次地執行不經意僞隨機函數來進行碰撞),這個協議是安全的。

使用OPRF,能抵抗惡意的接收者,雖然安全,但是效率並不高。

現在,我們已經成功地通過OPRF(基於OT),構造了一個安全的隱私集合求交算法。 但是這並不是結束,只是一個開始。因爲我們構造的算法雖然安全,但是並不快速

OPRF的實現有兩種方式,一種是基於DH,一種是基於OT

在這裏,影響隱私集合求交算法速度的主要因素,OPRF的執行速度。回顧上文的內容,在算法中,我們需要執行\(1.2n+s\)次不經意僞隨機函數,而每個不經意僞隨機函數,需要執行\(l\)次1-2不經意傳輸,\(l\)爲求交集的元素的長度,所以,我們一共需要\(O(nl)\)次不經意傳輸。而不經意傳輸,是個很慢的操作,因爲不經意傳輸需要使用到公私鑰加密,公私鑰加密本身就很慢。

根據現在的隱私集合求交的算法,算法的速度取決於求交集的集合元素數量\(n\),以及每個元素的大小\(l\)。這導致了當集合大小變得很大,或者集合中的元素變得很長時,算法的速度會越來越慢

快速的OT,實現快速的OPRF,進而實現快速的PSI!

那麼,我們能不能進一步優化算法呢?在下一篇文章中,我們將繼續這個話題,介紹如何構造大量快速的不經意傳輸,並使用這些快速的不經意傳輸,來實現快速的不經意僞隨機函數,以此來加快隱私集合求交算法。

參考

[1] Kolesnikov V, Kumaresan R, Rosulek M, et al. Efficient batched oblivious PRF with applications to private set intersection[C]//Proceedings of the 2016 ACM SIGSAC Conference on Computer and Communications Security. 2016: 818-829.

[2] Pinkas B, Schneider T, Segev G, et al. Phasing: Private set intersection using permutation-based hashing[C]//24th {USENIX} Security Symposium ({USENIX} Security 15). 2015: 515-530.

[3] Freedman M J, Ishai Y, Pinkas B, et al. Keyword search and oblivious pseudorandom functions[C]//Theory of Cryptography Conference. Springer, Berlin, Heidelberg, 2005: 303-324.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章