The Communication Complexity of Threshold Private Set Intersection-2019:解读
记录阅读论文的笔记。
什么是阈值PSI?
Alice和Bob当两者的交集大小不小于\(n-t\)时(两者的不同元素的数量不大于阈值\(2t\)时),才会求交集。
所以阈值PSI会分为两步:
1、检测
2、求交
主要内容:
基于阈值的两方PSI协议(HE)构造,并给出扩展为多方的设想,通信复杂度是亚线性的(sublinear)(集合大小有关)。
摘要
1、简单介绍了阈值PSI
2、分析了阈值PSI协议的通信复杂度的上下界。
3、两方协议可以扩展到多方
4、阈值PSI应用广泛
5、给出协议的通信复杂度取决于阈值\(t\),并和集合大小\(n\)呈亚线性关系(对数)
介绍
1、阈值PSI的应用
(1)生物特征认证
对于给定指纹与数据库中的指纹进行匹配,不关心具体的交集是什么,也不关心具体的交集大小,只需要得到是/否的答案,表示指纹是否在库中。
(2)隐私拼车
假设两个(或更多)方正在使用拼车应用程序,如果他们的路线有很大的交集,它允许他们共享车辆。然而由于隐私问题,他们不想公开他们的行程。阈值PSI可以解决该问题,各方可以联合执行一个阈值PSI协议,了解路线的交叉点,如果交叉点足够大,共享一辆车,否则,他们就不共享一辆车,也能保证用户的路线隐私。
(3)在线聊天好友发现
聊天软件中对于共同兴趣爱好较多(存在阈值)的两人,会互相推荐。
2、以往的PSI的通信复杂度分析
(1)通信复杂度与最小输入集合大小呈线性
(2)而阈值PSI通信复杂度只取决于阈值大小,而与输入集合大小无关。
3、主要技术
(1)Cardinality Testing
(2)Linear Algebra
(3)Additively Threshold Homomorphic Encryption
(4)Secure Two-Party Computation
(5)Oblivious Linear Function Evaluation
(6)set reconciliation【Set reconciliation with nearly optimal communication complexity】
4、文章框架
(1)先介绍基础知识
(2)再分析文章的通信复杂度
(3)再基于FHE和set reconciliation构造的协议
(4)再介绍不安全的Cardinality Testing
(5)再介绍安全的Cardinality Testing
(6)再给出不安全的两方阈值PSI
(7)再给出安全的两方阈值PSI
(8)最后给出扩展多方阈值PSI的设想方案
基础知识
Alice将集合\(S_A=(a_1,...,a_n)\)编码为多项式\(p_A(x)=\prod_{i=1}^{n}(x-a_i)\),Bob将集合\(S_B=(b_1,...,b_n)\)编码为多项式\(p_B(x)=\prod_{i=1}^{n}(x-b_i)\)
代数基础
1、多项式
(1)单项式(monomials)
对于多项式\(P_A(x)=\sum_{i=1}^{n}x^{a_i}\)中的每一项\(x^{a_i}\)就是一个单项式
(2)多项式级数(deg(p))
最高次项的幂
(3)首一多项式(monic)
首项系数为1的多项式
(4)多项式的稀疏性(t-sparse)
若多项式\(p(x)\)中的单项式最多为\(t\)个,则该多项式就叫做\(t-sparse\)
(5)有理多项式(rational polynomial或rational function)
\(h(x)=p(x)/q(x)\)就是有理多项式,其中\(p(x)\)和\(q(x)\)的级数分别为n和m
(6)多项式插值
一个级数为\(d\)的多项式,需要\(d+1\)个点值对插值,若该多项式是首一多项式,则只需要\(d\)个点值对。
2、矩阵
(1)奇异矩阵(singular)
就是不可逆矩阵,即行列式为0的方阵
(2)汉克尔矩阵(Hankel matrix)
引理
1、引理1
在后面计算点加噪音时用到。
2、引理2
表明\(p(x)\)和\(R(x)\)是互素的,即没有公共元素。
set reconciliation
来自【Set reconciliation with nearly optimal communication complexity】
主要思想是:将集合\(S_A=(a_1,...,a_n)\)编码为一个首一多项式(monic polynomials)\(p_A(x)=\prod_{i=1}^{n}(x-a_i)\)。
多项式的级数(deg(pA))为\(n\),所以也可以由\(n\)个点值对插值而来。
从上面可以看出,有理函数(rational function)\(p(x)\)由\(P_A(x)/P_B(x)\)构成,消去交集,剩下的分子是集合\(S_A\)除去交集的部分\(S_{A\setminus B}\),分母是集合\(S_B\)除去交集的部分\(S_{B\setminus A}\)。
满足\(|S_{A\setminus B}\)+\(S_{B\setminus A}|\leq 2t\),即可以用\(2t\)个点值对插值出\(p(x)\)。
那如何才能插值呢?
假设已经经过了检测,接下来就是求交了。
首先,两方各自将集合编码为多项式,协商出一组计算点\((\alpha_1 ,...,\alpha_n )\),并分别求值\((p_A(\alpha_{1}),...,p_A(\alpha_{2t}))\)和\((p_B(\alpha_1),...,p_B(\alpha_{2t}))\)。
然后双方经过通信后可以根据\(p(x)=p_{A\setminus B}(x)/p_{B\setminus A}(x)\)的关系,再利用那些点得到\(2t\)个点\((p(\alpha_1),...,p(\alpha_{2t}))\),即可插值出多项式\(p(x)\)。
如何求交呢?
以Alice为例,根据\(p(x)\)他可以得到\(p_{A\setminus B}(x)\),然后就可以得到交集多项式\(p_{A\cap B}(x)=p_A(x)/p_{A\setminus B}(x)\)。
这里存一个问题,如何根据\(p(x)\)得到\(p_{A\setminus B}(x)\)?
基于上述思想,我们可以结合安全的两方计算(secure two-party computation)构造一个亚线性的PSI协议:
(1)双方输入多项式的计算点
(2)使用安全两方计算对\(p(x)\)进行插值
(3)两方分别输出\(p_{A\setminus B}(x),p_{B\setminus A}(x)\)
但存在问题是,该协议并不实用或者说不满足高效渐进性(asymptotically efficient)。
如何优化?
我们给出了一种不同的方法,仅使用“minimal secure two-party computation”获得带噪音的点值,进而插值出$p(x),之后求出交集。
具有过程见:
安全的两方计算(Secure Two-Party Computation)
主要讲的是UC安全模型,即方案的安全性证明方法。
更多的UC安全见:安全性证明
加法同态加密
这里的加法同态性,可以立即为密文相乘,解密相等于明文相加。
不经意的线性计算(Oblivious Linear Function Evaluation)
主要功能就是receiver只能得到\(f(x)\),sender不知道\(x\),和OPRF是不是很像!
Cardinality Testing
Cardinality Testing,可以翻译为集合势检测,主要就是求交前的检测。
集合的势可以从这里多了解一些:
- 集合交集问题的安全计算:解读
- 云环境下集合隐私计算-解读
- 有理数域上两方集合的高效保密计算-2020
以上三篇论文是一个实验室的哟!
对于:
- 判断交集大小是否不小于\(n-t\),即\(S_A\cap S_B\geq (n-t)\)
- 判断集合不同元素(sets do not differ)的数量是否不大于\(n-t\)即$|(S_A\setminus S_B)\cup (S_B\setminus S_A)|\leq 2t $
两种说法是一样的!
如何检测呢?
通常是先将集合\(S_A=(a_1,...,a_n)\)编码到多项式中,之前方案是将元素作为多项式的根,即\(Q(x)=(x-a_1)...(x-a_n)\),而这里是将每个元素单独编码到一个多项式(polynomial)中的单项式(monomials)中,即\(p_A(x)=\sum_{i=1}^{n}x^{a_i}\)。
检测的核心思想是:求多项式\(p(x)=P_A(x)-P_B(x)\)中的单项式的个数是否小于\(2t\),因为\(p(x)\)中的单项式最多为\(2t\)个。通过这种编码方式,再利用一种多项式的稀疏性检测方法【polynomial sparsity test】,来自【A local decision test for sparse polynomials】。
多项式的稀疏性:
若多项式\(p(x)\)中的单项式最多为\(t\)个,则该多项式就叫做\(t-sparse\),【A local decision test for sparse polynomials】给出了一种随机化算法(randomized algorithm),只需要\(2t\)次计算就可以检测出\(p(x)\)是否是\(t-sparse\)。
最后结合加法同态加密和隐私线性计算实现检测,通信复杂度为\(\widetilde{O}(t^2)\)
不安全的
上面介绍了cardinality testing protocol,这是阈值PSI协议的核心部件,这里提出一个基于多项式稀疏性检测的方式实现cardinality testing protocol,通过检测矩阵的行列式是否为0,判断矩阵是否是奇异矩阵,进而判断两个集合是否相似!
多项式稀疏性检测来自【A local decision test for sparse polynomials】,这是对该技术的直接应用。
安全的
安全的cardinality testing是指加入了加密运算,下面是理想情况下的cardinality testing协议:
这里的\(F_{INV}\)可以当作一个可信第三方。
协议通信量
1、使用FHE构造的阈值PSI的通信复杂度最多为\(\widetilde{O}(t)\),但在密文下进行插值多项式,计算量巨大。
将set reconciliation和FHE结合,构造阈值PSI协议。
这里利用了同态性质,即计算\(Enc(p_A(\alpha _i))/p_B(\alpha _i)\)时,\(p(x)\)需要\(2t\)个点值对同态插值得到。
2、使用GC构造的阈值PSI的通信协议为\(\widetilde{O}(t^3)\)。
基于GC+OT+单项函数构成的阈值PSI,实用性不大。
3、我们的协议介于两者之间,比2更优,同时使用加法同态(部分同态)在保证计算复杂度可控内,实现高效通信。
主要内容
两方阈值PSI
还是两步走,先检测,再求交。
理想情况下的两方阈值PSI协议为:
检测使用的是\(F_{PICT}^{2t}\)协议,然而在求交时,协议还是不安全,以Alice为例,他不仅能从\(p(x)\)中得到\(P_{A\setminus B}\)还能得到\(P_{B\setminus A}\),这就获取了Bob的额外信息。
我们采用的方法是,使用带噪音的计算点(evaluation points),从而掩盖了对方信息,这里关键点就是\(V(x)=p_A(x).R_1(x)+p_B(x).R_2(x)\)的构造。
注意这里插值\(p(x)\)时有\(3t+1\)个点,我们选择\(2t\)个分子分母互素的点即可。
正确性证明:
这里依旧存有疑问:如何根据\(p(x)\)求\(P_{A\setminus B}\)?
非对称场景下
上面介绍协议都是假设在对称场景下,即参与方的数据集大小相同,那如果在非对称场景下,两方的数据集大小一致,如何解决?
这里给出的方法是:填充
假设Alice的集合位\(S_A\),Bob的集合为\(S_B\),且\(|S_A|<|S_B|\),则两个集合中不同的元素至少为\(t_{min}=|S_B|-|S_A|\),将对\(S_A\)进行填充\(|S_B|-|S_A|\),如下:
这样无疑通信复杂度会增加。
加入“噪音”
在上面提到,Alice不仅会得到\(P_{A\setminus B}\)还能得到\(P_{B\setminus A}\),这就获取了Bob的额外信息,所以需要加入“噪音”掩盖\(P_{B\setminus A}\),在协议中体现在\(V(x)=p_A(x).R_1(x)+p_B(x).R_2(x)\),下面介绍如何构造\(V(x)=p_A(x).R_1(x)+p_B(x).R_2()\)!
理想情况的功能:
该思想来自【An algebraic approach to maliciously secure private set intersection】:
1、输入
sender:编码得到多项式\(p_A(x)\)和随机多项式\(R(x)\)
receiver:编码得到多项式\(p_B(x)\)
2、输出
返回给sender:\(p_A(x)+R(x).p_B(x)\)
具体协议:
感觉很像密钥协商,最后双方都得到了\(S_A'(\alpha_i)+S_B'(\alpha_i)\),即\(p(\alpha_i)\)。
对于Alice而言,因为\(U_B(x)\)是随机的,所以根据\(s_B'(\alpha_i)\)得不到额外的信息。Bob同样也是。
注意这里的,\(R_1^A(x)+R_1^B()\)相当于\(R_1()\),\(R_2^A(x)+R_2^B()\)相当于\(R_2()\)
多方阈值PSI
这篇论文还是以介绍两方为主,最后给出一个扩展多方的想法。这里以三方为例:
Alice,Bob,张三,数据集分别是\(S_A,S_B,S_C\)(大小为n),编码为多项式\(p_A(x)=\prod_{i=1}^{n}(x-a_i),p_B(x)=\prod_{i=1}^{n}(x-b_i),p_C(x)=\prod_{i=1}^{n}(x-c_i)\)。
方案中给出的基于阈值的FHE方案是来自【Threshold cryptosystems from threshold fully homomorphic encryption-2018】。
多方也是两步走,先检测,后求交。
检测(Cardinality Testing)
就是判断\(|S_A \cap S_B \cap S_C|\)是否大于\(n-t\)。
三方的多项式满足:
需要\(2t\)个点就能插值出来。但是存在一个问题就是,分子和分母中可能会约有公共的根(share additional roots),这样就会影响分子分母约分。
这点我不太明白,公共的根肯定是会约去的,怎么会影响呢?
解决的办法就是加入随机值:
这样,Alcie、Bob和张三,协商出一个公钥\(pk\),每人一个私钥分割值\(sk_A,sk_B,sk_C\),解密时需要所有人的私钥分割值。
1、Bob和张三分别发送加密的\((p_B(\alpha_1),...p_B(\alpha_{2t}),p_B(z)),(p_C(\alpha_1),...p_C(\alpha_{2t}),p_C(z))\)给Alice,其中\(z\)是一个随机值。
2、Alice使用这\(2t\)个点值对进行同态插值,求出\(p(x)\),并带入\(z\),判断\(p(z)\)是否等于\((p_B(z)+rp_C(z))/p_A(z)\),如果相等则为1的加密,否则是0的加密。
3、最后三方联合解密,做最后判断。
这里留一个疑问:如何判断\(p(z)\)是否等于\((p_B(z)+rp_C(z))/p_A(z)\),做同态减法,同态除法?
总的来说,检测步骤的通信复杂度为\(\widetilde{O}(t)\)。
求交
理想情况下的功能:
具体过程:
1、Alice,Bob,张三输入自己的数据:\((p_A(x),R_1^A(),R_2^A(),R_3^A(),U_A()),(p_B(x),R_1^B(),R_2^B(),R_3^B(),U_B()),(p_C(x),R_1^C(),R_2^C(),R_3^C(),U_C())\)
2、各自得到\(3t+1\)个点\((\alpha_1,...,\alpha_{3t+1})\)值对\(p_A(x)R_1(x)+p_B(x)R_2(x)+p_C(X)R_3(x)\)
3、以Alice为例,Alice最后插值出\(p(x)\),进而求出\(p_{A\setminus (A\cap B \cap C)}(x)\),最后求出交集。
总结
1、插值是在密文域,所以计算量很大
2、检测和求交中的同态加密方案,可以用同一个,比如TFHE
3、该论文只是给出一个模型、思路,具体实用性不强。
4、后续在下一篇论文介绍改进,增强实用性!
参考
1、什么是亚线性和超线性?
(1)线性
数学上看:一阶导数不随自变量的变化而变化
例如:\(y=a+bx\)
亚线性和超线性都称为非线性
(2)亚线性
数学上看:一阶导数随自变量的增大而减少
例如:\(y=ln x\)
(3)超线性
数学上看:一阶导数随自变量的增大而增大
例如:\(y=a+bx^n\)
2、数学当中的非平凡解和平凡解如何理解?非平凡性呢?
(1)平凡
平凡解就是显而易见的解、没有讨论的必要但是为了结果的完整性仍需要考虑的结果。
通常我们运用数学归纳法解题的时候,会先讨论\(n=0\)或者\(n=1\)时的简单情况,然后假设\(n\)时成立,那么对于\(n+1\)时也成立。\(n=0\)或1时的解就是平凡解。
比如Ax=0中的零解,即x=0,即为平凡解。
(2)非平凡
我们更关心的是非平凡(nontrivial)解,也就是非零解。
比如求一个数的因子,正负的1和它本身是这个数最显而易见的解,所以这两个因子就是平凡解,其他的是不平凡的。
3、渐进标准