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

PlatON技術團隊發表於2023-01-17

集合運算

集合可以通俗地描述為確定的一堆東西。如有一個集合?,一個元素?要麼屬於集合?,記做?∈?;要麼不屬於集合?,記做?∉?,元素?不能既屬於集合?又不屬於?。

集合的並集是對兩個集合中的所有元素進行合併,並集運算的符號為∪;集合的交集是取這兩個集合中的公共元素,交集運算的符號為∩。假設有兩個集合?={1,2,3,4} , ?={1,4,7,9}。集合?和?中的公共元素為1,4。若集合?和集合?進行並集運算,則結果為?=?∪? = {1,2,3,4,7,9};
圖片
若集合?和集合?進行交集運算,則結果為?={1,4}。
圖片

隱私保護集合交

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

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

因此可以透過隱私保護集合交,計算軟體註冊使用者手機號集合和使用者自己的通訊錄的交集,來尋找到同樣使用該軟體的好友,又不會洩露各自所掌握的手機號資訊。
圖片
本次要介紹的隱私保護集合交協議是Pinkas-Schneider-Segev-Zohner (PSSZ) ,其基於不經意偽隨機數函式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個元素。

兩個參與者Alice的輸入集合為?,Bob的輸入集合為?,集合?和集合?中都只有?個元素。兩人首先為布穀鳥雜湊選擇三個雜湊函式\( ℎ_1(?),ℎ_2(?),ℎ_3(?) \)。設定的箱子數量為1.2?,貯存區的大小為?。

Bob對其的集合?中的每個元素執行布穀鳥雜湊。執行完畢之後,Bob的每個箱子中最多隻有一個元素,這是箱子的大小限制的,貯存區最多有?個元素。由於箱子的數量為1.2?,集合?中只有n個元素,因此此時必定有箱子是空的。

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

不經意偽隨機數函式OPRF可以透過\( ?_? \)將輸入對映成一個偽隨機數,任意給一個隨機數\( ?_1 \)和一個由輸入對映成的偽隨機數\( ?_2 \),攻擊者無法區分出輸入對映成的是\( ?_1 \)還是\( ?_2 \)。所需要使用的OPRF函式雙方已經事先商議好了。

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

因此在1.2?+?次的OPRF結束後,Bob會掌握\( ?(?_?,?_?), ?∈[1,1.2?+?] \)。

Alice則可以根據任意的?計算:

image.png

並打亂?和?中的資料順序。Alice將?和?傳送給Bob,Bob將?和?中的值與他自己在箱子和貯存區中的\( ?(?_?,?_?), ?∈[1,1.2?+?] \)進行對比,如果Bob的\( ?_? \)對應的OPRF值\( ?(?_?,?_?) \)在?或者?中,那麼就說明元素\( ?_? \)屬於Alice和Bob的集合交集。

Alice的集合?中的每個元素\( ?_? \)都被\( ?(?_{ℎz(??)},?_?) \)對映成了一個偽隨機數,若Bob的集合?中有和Alice集合相同的元素,假設\( ?_m=?_? \),那麼有\( ?(?_{ℎz(??)},?_?)= ?(?_{ℎz(??)},?_?) \),因此Bob能夠透過Alice發來的?和?,在其中找到二者集合的交集元素,而無法知道Alice掌握的集合本身。

相關文章