头图

集合运算

集合可以通俗地描述为确定的一堆东西。如有一个集合𝐴,一个元素𝑐要么属于集合𝐴,记做𝑐∈𝐴;要么不属于集合𝐴,记做𝑐∉𝐴,元素𝑐不能既属于集合𝐴又不属于𝐴。

集合的并集是对两个集合中的所有元素进行合并,并集运算的符号为∪;集合的交集是取这两个集合中的公共元素,交集运算的符号为∩。假设有两个集合𝐴={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掌握的集合本身。


PlatON技术团队
23 声望164 粉丝

PlatON技术团队,⼀群专注于技术、玩转算法、追求⾼效的⼯程师。