1.什么是Private Set intersection(PSI)?
用英文定义是:A private set intersection protocol consists of two parties,a Sender and a Receiver, each having a set as input, which respectively are denoted X and Y . Together they want to compute the intersection of their sets,X ∩ Y , without revealing elements not contained in the intersection. Usually the Receiver will learnX ∩ Y and |X| without learning X \ Y , while the Sender learns|Y | and nothing else.
简单中文来说就是两个数据集求他们的交集的协议,但是却不泄露任何一方除了交集之外的信息!
有什么用呢?总之就是为了找相同敏感的元素。比如可以让两个公司找出他们共同的客户而不必要泄露所有的用户给对方。政府特工判断恐怖分子是否在航空名单上。
2.有哪些PSI协议呢?
到现在为止,PSI协议种类很多,但是主要还是分为以下几个部分:
(1)基于天真的哈希解决方案的PSI:这种方案主要是应用加密的哈希函数,然后计算哈希结果。缺点是安全性很差。
(2)基于公钥加密的PSI:有基于Diffie-Hellmann(DH)的,有基于RSA盲签名的,有基于bloom filter的,基于OPRF的,基于多项式插值的。
(3)基于电路的PSI:这个主要分为两个小部分,一个是基于GoldreichMicali-Wigderson protocol 计算协议,另外一个是基于姚期智教授的混淆电路计算协议。
(4)基于遗忘传输的PSI。这也现在比较流行的PSI协议,并且有文献优化算法成为了如今最快的PSI协议。最新的基于OT的PSI协议B.Pinkas, T.Schneider, M. Zohner.Scalable Private Set Intersection Based on OT
Extension.Availableat http://eprint.iacr.org/2016/930.并且作者给出了源码,笔者在ubuntu上跑,效果可以。源码链接:https://github.com/encryptogroup/PSI
如表8是各种协议的运算时间比较,在上面这篇论文中可以找到。
3.资料分享
AU UNIVERSITY 的硕士论文:Breaking and Fixing Private Set Intersection Protocols。