目录
一、问题说明:
Alice拥有数据X,Bob拥有数据Y,Charlic拥有数据Z,相求X,Y,Z的交集,三方除了交集外的信息不可知。
二、基础知识:
1、OPRF:不经意伪随机函数
Alice有一些输入,Bob有一个key。不经意PRF允许Alice将自己的输入与Bob的key结合经过一系列运算转变成相对应的数。在这个过程中,Alice不能知道Bob的key,Bob也不知道最后的结果F(key,x)。每一个输入xi都可以计算出一个不同于其他输入的数,这些数就可以被看作伪随机数。这里不做详细介绍,只需要知道输入和输出即可,中间的协议可理解成第三方。
2、OPPRF
这里说一种基于多项式的方案,这里详细介绍一下这个协议。
·总体功能:
Alice想要根据自己的x获得对应的y,Bob拥有x-y的对应关系。其中Alice能告诉Bob自己的x以及结果y,Bob不能告诉Alice数据集X。
·如图所示:
Alice要查询x,Bob拥有数据点X={(x1,y1),(x2,y2)...},如果x=xi,Alice查询到对应的yi,否则获得一个随机数。
·这里说一种基于多项式的方案,这里详细介绍一下这个协议。
(1)Receives将自己点中的x输入OPRF协议获得F(x)。而Sender获得k,也就有了F。
(2)Sender拥有图中蓝色的点X={(x1,y1),(x2,y2)...},将原来的yi替换为zi=yi⊕F(xi),根据数据{(x1,z1),(x2,z2)...}建立多项式P(x),可以根据拉个郎日差值法。将P(x)发送给R。
(3)R根据自己的x,计算出对应的P(x)。
(4)R输出P(x)⊕F(x)==========>yi⊕F(xi)⊕F(x),可以看出如果x=xi,则结果为yi。
3、Zero-Sharing
简单理解就是每个人拥有一个数最后所有数加起来为0。(0的秘密分享)
具体原理
三、Multi-party PSI
(1).每个人拥有一个数据集X,和一个0秘密分享对应的集合sh,(X,sh)={(x1,sh1),...,(xn,shn)}, 将集合发送给OPPRF协议,在这参与者相当于Bob,相当于 Alice。
(2).通过OPPRF协议可以获得sh集合。如果集合最后异或结果为0,则说明是交集。
注意:这里一定要和OPPRF协议对应起来,sh等价于y。Zero-sharing还能起到验证的作用,如果结果不正确,可以诊断出来是哪一方的sh出了问题。
参考:
Practical Multi-Party Private Set Intersection from Symmetric-Key Techniques
连载:batch-OPPRF