【隱私計算筆談】MPC系列專題(十):安全多方計算下的集合運算

學習&轉載文章:【隱私計算筆談】MPC系列專題(十):安全多方計算下的集合運算

集合運算

集合可以通俗地描述爲確定的一堆東西。如有一個集合\(𝐴\),一個元素\(𝑐\)要麼屬於集合\(𝐴\),記做\(𝑐\in 𝐴\);要麼不屬於集合\(𝐴\),記做\(𝑐∉𝐴\),元素\(𝑐\)不能既屬於集合\(𝐴\)又不屬於\(𝐴\)

集合的並集是對兩個集合中的所有元素進行合併,並集運算的符號爲\(∪\)集合的交集是取這兩個集合中的公共元素,交集運算的符號爲\(∩\)

假設有兩個集合\(𝐴={1,2,3,4} , 𝐵={1,4,7,9}\)。集合\(𝐴\)\(𝐵\)中的公共元素爲\(1,4\)。若集合\(𝐴\)和集合\(𝐵\)進行並集運算,則結果爲\(𝐶=𝐴∪𝐵 = {1,2,3,4,7,9}\)

图片

若集合\(𝐴\)和集合\(𝐵\)進行交集運算,則結果爲\(𝐶={1,4}\)

图片

PSI

安全多方計算的目標是在不泄露各個參與者隱私信息的前提下完成目標函數的計算隱私保護集合交運算(Private Set Intersection,PSI可以看成是以參與者各自的隱私信息爲集合,目標函數所實現的功能爲集合交的安全多方計算。

隱私保護集合交的應用有通訊錄匹配,如現在很多手機應用可以通過手機通訊錄查找同樣使用這個軟件的好友,如聊天軟件、具有社交屬性的遊戲等,用戶肯定不希望自己的通訊錄中的所有聯繫人都被軟件所得知,軟件則掌握有所有註冊用戶的手機號。

因此可以通過隱私保護集合交,計算軟件註冊用戶手機號集合和用戶自己的通訊錄的交集,來尋找到同樣使用該軟件的好友,又不會泄露各自所掌握的手機號信息

图片

本次要介紹的隱私保護集合交協議是Pinkas-Schneider-Segev-Zohner (PSSZ)【Phasing: Private Set Intersection using Permutation-based Hashing-2015】 ,其基於不經意僞隨機數函數OPRF(Oblivious Pseudo-random Function)來構造PSI。

首先介紹一下布穀鳥哈希(Cuckoo Hashing):

布穀鳥哈希需要\(𝑏\)個普通箱子和\(1\)個貯存區,以及\(𝑛\)個元素,將這\(𝑏\)個空箱用\(𝐵(1),…,𝐵(𝑏)\)表示。還需要三個哈希函數,記爲\(ℎ1(𝑥),ℎ2(𝑥),ℎ3(𝑥)\),這三個哈希函數是將一個比特串映射到\(1,2,…,𝑏\)之間。

图片

首先對這\(𝑏\)個空箱進行初始化,之後使用哈希函數\(ℎ1(𝑥),ℎ2(𝑥),ℎ3(𝑥)\)計算元素\(𝑥\)的哈希值,檢查\(𝐵(ℎ1(𝑥)),𝐵(ℎ2(𝑥)),𝐵(ℎ3(𝑥))\)這三個箱子是否是空箱子, 如果這三個箱子中至少有一個箱子是空箱子,就把\(𝑥\)放到這個空箱子中。

如果這三個箱子都已經有元素放入了,就隨機選擇\(𝐵(ℎ1(𝑥)),𝐵(ℎ2(𝑥)),𝐵(ℎ3(𝑥))\)這三個箱子中的一個\(𝐵(ℎ𝑖(𝑥)),𝑖∈{1,2,3}\),用\(𝑥\)替換箱子\(𝐵(ℎ𝑖(𝑥))\)裏面原來裝的元素\(𝑥′\)

图片

接着計算\(𝑥′\)的哈希值並檢查箱子\(𝐵(ℎ1(𝑥′)),𝐵(ℎ2(𝑥′)), 𝐵(ℎ3(𝑥′))\)中是否都有空箱子,有一個空箱子則把\(𝑥\)放入其中,否則在\(𝐵(ℎ1(𝑥′)),𝐵(ℎ2(𝑥′)), 𝐵(ℎ3(𝑥′))\)中隨機選擇一個替換其中的元素,如此開始迭代。需要預先設定一個最大迭代次數\(𝑘\),如果迭代次數超過了\(𝑘\)就把最後被替換出來的元素放入到貯存區,貯存區最多可放入\(𝑠\)個元素,箱子最多可放入1個元素。

下面使用布穀鳥哈希進行PSI

兩個參與者Alice的輸入集合爲\(𝑋\),Bob的輸入集合爲\(𝑌\),集合\(𝑋\)和集合\(𝑌\)中都只有\(𝑛\)個元素。兩人首先爲布穀鳥哈希選擇三個哈希函數\(ℎ1(𝑥),ℎ2(𝑥),ℎ3(𝑥)\)。設置的箱子數量爲\(1.2𝑛\),貯存區的大小爲\(𝑠\)

Bob對其的集合\(𝑌\)中的每個元素執行布穀鳥哈希。執行完畢之後,Bob的每個箱子中最多隻有一個元素,這是箱子的大小限制的,貯存區最多有\(𝑠\)個元素。由於箱子的數量爲\(1.2𝑛\),集合𝑌中只有\(n\)個元素,因此此時必定有箱子是空的。

之後Bob產生隨機元素,用隨機元素填滿所有的箱子和貯存區,使得每個箱子裏都有一個元素,貯存區中有\(𝑠\)個元素。

OPRF的介紹

不經意僞隨機數函數OPRF可以通過\(𝑘𝑖\)將輸入映射成一個僞隨機數,任意給一個隨機數\(𝑟1\)和一個由輸入映射成的僞隨機數\(𝑟2\),攻擊者無法區分出輸入映射成的是\(𝑟1\)還是\(𝑟2\)。所需要使用的OPRF函數雙方已經事先商議好了。

Bob在用隨機元素填滿所有的箱子和貯存區後,和Alice間進行\(1.2𝑛+𝑠\)次的OPRF。用\(𝑦𝑖\)表示Bob第\(𝑖\)個箱子中的元素,用\(𝑦1.2𝑛+𝑗\)表示貯存區中的第\(𝑗\)個元素。

因此在\(1.2𝑛+𝑠\)次的OPRF結束後,Bob會掌握\(𝐹(𝑘𝑖,𝑦𝑖), 𝑖∈[1,1.2𝑛+𝑠]\)

Alice則可以根據任意的\(𝑖\)計算:

\(𝐻={𝐹(𝑘ℎz(𝑥𝑖),𝑥𝑖)|𝑥𝑖∈𝑋,𝑧∈{1,2,3}},𝑆={𝐹(𝑘1.2𝑛+𝑗,𝑥1.2𝑛+𝑗)|𝑥1.2𝑛+𝑗∈𝑋,𝑗∈ {1,…,𝑠}}\)

並打亂𝐻和𝑆中的數據順序。Alice將\(𝐻\)\(𝑆\)發送給Bob,Bob將\(𝐻\)\(𝑆\)中的值與他自己在箱子和貯存區中的\(𝐹(𝑘𝑖,𝑦𝑖), 𝑖∈[1,1.2𝑛+𝑠]\)進行對比,如果Bob的\(𝑦𝑖\)對應的OPRF值\(𝐹(𝑘𝑖,𝑦𝑖)\)\(𝐻\)或者\(𝑆\)中,那麼就說明元素\(𝑦𝑖\)屬於Alice和Bob的集合交集。

Alice的集合\(𝑋\)中的每個元素\(𝑥𝑖\)都被\(𝐹(𝑘ℎz(𝑥𝑖),𝑥𝑖)\)映射成了一個僞隨機數,若Bob的集合\(𝑌\)中有和Alice集合相同的元素,假設\(𝑦*m*=𝑥𝑛\),那麼有\(𝐹(𝑘ℎz(𝑥𝑖),𝑦𝑖)= 𝐹(𝑘ℎz(𝑥𝑖),𝑥𝑖)\),因此Bob能夠通過Alice發來的\(𝐻\)\(𝑆\),在其中找到二者集合的交集元素,而無法知道Alice掌握的集合本身。

總結一下:就是雙方將各自數據藏在了OPRF中,對比OPRF值進而求出交集。

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