在正式开展本篇论文之前呢,发一点小小的牢骚;密码学这个方向学的时候真的太让人头大了,研一搞了一年后,感觉整个人的精神状态快要差到爆炸了,导师批评的也很严厉,开组会的时候看到导师脑门就犯晕,一看论文脑子就变浆糊,痛苦无法感同身受,不确定自己的精神状态是否出问题.....哈哈哈哈,牢骚发完了,论文还是要继续讲解的,在看过各种OTe,oprf,cuckoo hash,psi,psu甚至抗量子的论文之后,觉得标签PSI这个方向可以帮助博主水一篇期刊,观看的朋友们如果感兴趣的话可以一起学习讨论,如果觉得晦涩难懂的话也欢迎批评指正,作为密码小白,非常期待和各位朋友一同砥砺前行。
一、基础知识介绍
本篇是在2018年发表在CCS上的第一篇以标签PSI为主要应用方向的论文,在17年以同态加密为基础的快速PSI(Fast private set intersection from homomorphic encryption)背景下,对通信和计算两大方面做了显著的优化。首先呢是要介绍一下本文所做出的主要贡献,在利用全同态加密的情况下,实现了第一篇标签psi,并且可以在恶意的模型下实现UC安全。
那么从标题中我们就可以看出,有三个重要的知识点十分关键:标签private set intersection,FHE,恶意安全。
1、PSI
PSI:什么叫做PSI呢?private set intersection,私有集合交集,在本论文中我们主要研究两方的非平衡私有集合交集;此时会有一个发送方,一个接收方,我们用S和R来分别表示前后者,在非平衡场景中,接受方一般都是小集合n,而发送方拥有一个远比n要大的集合m,在执行完协议之后,接收方会得到两方集合的交集,而发送方并不知情。这就是私有集合交集的大致定义...
2、FHE
FHE:什么叫做FHE呢?full homomorphism encrypt,全同态加密,意味着同时包括同态加法和同态乘法的加密过程;本论文中主要对发送方hash后的集合映射成多项式,再和接收方进行一些的同态加解密运算,等下会详细展开该协议过程。同态的大致意思是,S和R各自都有一组明文,对他们的明文进行加密得到密文,密文之下展开并进行的计算和明文是一致的,也就是在明文和密文之间形成了同态。
3、恶意安全
恶意安全:什么叫做恶意安全呢?这主要涉及的情况是在模拟方面,敌手是否会破坏协议过程,在执行协议期间是否恶意篡改输入。如果在模拟视图的过程中,篡改后加密的数据和原本没错的数据在计算上是不可区分的,那便说明该过程满足恶意安全。
二、论文内容
1、贡献
使用oprf预处理过程实现抗恶意安全的模拟;使用SIMD加密算法改进可进行比较的元素的长度;扩展协议到Lable PSI,并且可以抵抗恶意的发送方。
2、相关工作
在该部分介绍了oprf的预处理过程,sender得到密钥k,receiver自己的集合Y经过(不经意为随机函数)oprf的加密后得到Y`,同时sender可以用密钥k来加密自己的集合X得到X`,在发送X`给receiver之前先对其进行压缩,以减少通信量。
PSI的通信:30论文协议中指出了PSI-SUM的概念,以及门限PSI的概念。
3、关键字PIR
PIR协议也是一个十分重要的,用于非平衡PSI中的组件。接收方拥有一个小集合x,发送方有一个大集合y;把x视作关键字,把y视作标签数据库,我们对y用x做检索即可得到交集 。
4、协议中主要用到的参数
1、sender集合X,receiver集合Y,由于是非平衡场景,此时|x|>>|y|
2、δ代表X和Y中元素的长度
3、L代表标签的长度,n代表全同态中的环域,q代表密文,t代表明文
4、d代表SIMD加密扩展的深度,m是cuckoo hash表大小
5、i,j代表序数
5、17年协议的大致方案
接收方对自己的元素Y构建cuckoo hash表,使用3个hash函数h1,h2,h3和一个向量Br[m],最终y的映射结果是Br[hi(y)];同样的sender也对自己的元素X进行hash,最终所呈现的映射结果为Bs[hi(x)];
在后面协议的过程中,我们便可以得到一个等价的交集协议
我们所要求得的两集合的交集,便是每个bin中元素的交集的并集,可是这里哪里又体现到恶意了呢?我们接下来看另外一个公式
[y]所指的是对元素y加密后的结果,[y]-x便是HE加密中的同态加运算,在对所有的x进行连乘运算,如果最终得到的[z]值为0的话,则代表找到了交集,在此时的连乘运算,也正是HE加密中的同态乘法运算。
6、完整协议的过程
我们在该篇论文中可以看到完整的PSI协议分为两个过程,首先呢,第一个是预处理的过程,第二个是协议执行的过程。此处我先把两个阶段的流程图展示出来,然后再进行下一步的详细介绍。
这里有一个我自己画的流程图,大家来看一下
其实在线预处理的过程并不困难,主要是对sender的数据做的处理,其余的便是一些对数据参数的应用。我们可以看到接收方有自己的元素Y,发送方的元素X首先呢进行oprf的操作,得到X`,所生成的密钥我们给接收方,接下来再用三个hash函数h1,h2,h3对X`映射到三个bin中;然后我们再对每个B[i]执行分割的操作,即对每个元素划分,此时这些划分后的元素是接下来我们所要构造的对称多项式的根,当然了标签元素我们也构造他们相应的标签多项式。
下面是在线阶段
在线阶段主要是针对接收方,以及双方交互时所做的一些操作,我们也用流程图来做表示
首先用离线阶段oprf过程中生成的公钥k加密R的元素yi为[yi],然后用yi对sender中的Si,j(x)做评估,若为交集则返回0的加密值并返回发送给R,在用自己的私钥来对0的加密值进行解密,后得到交集。
好嘞,如果朋友们也耐心读到了这个部分,那么接下来我们应该解决的问题便是如何抵抗恶意安全模型,该部分内容相较于别的稍作复杂,因为要涉及到一些模拟的过程,不过不着急我们一起来看看是如何抵抗恶意模型的。
我们首先看单边模拟过程,我们先从步骤开始说起。首先呢,在协议过程中的离线阶段,大多数地方没有涉及到receiver,故这这一部分我们不做讨论;我们主要看协议的在线阶段,步骤7a里,接收方对自己的数据做了N次的oprf,7e中,对查询同态加密并发送给sender,在此过程模拟器S对其做了提取Y*,并自己做交集运算,将加密后的结果发送给receiver。
7、带有泄露的完整PSI协议
最后针对我们的完整协议内容,做一点泄露下安全的补充,下面我们首先展示一下新的完整的协议过程
可以看到本协议与原来的协议不同点在于两处,首先是在5(b)处,sender定义了每个元素的标签x;另外在7(a)处提供了一个零知识证明;用这两个效果来实现抗恶意安全。
三、总结
18年ccs的这篇基于同态加密的基础上实现恶意安全模型下的标签PSI大致设计到的内容就这些了,博主花了大概一周的时间来弄明白。不得不说,发在顶汇上的期刊理解起来确实很有难度的,不过尽力而为吧,我仅仅也只是一个身体比较弱的,精神力一般的普通人罢了。晚上七点要去开组会了,祝自己好运,阅读的朋友们如果有问题可以私信,我们一起讨论,有需要ppt的也可以私信分享。不管怎样,密码学的道路确实艰辛,希望自己缝缝补补,平平安安,顺顺利利的度过这段科研时光吧。加油,朋友们~