Multiparty Cardinality Testing for Threshold Private Set-2021:解读

本文记录阅读该论文的笔记。

本文基于阈值加法同态加密方案提出了一个新的允许N方检查其输入集的交集是否大于nt的PSI方案,该协议的通信复杂度为O(Nt2)
注意:N指的是多少个参与方、n是输入集的大小、t是预先设定的阈值,也是阈值。

该方案基于The Communication Complexity of Threshold Private Set Intersection-2019:解读进行的改进。
该协议可以用于各方知道交集很大,但不知道具体多大时,可以使用!

摘要#

image
(1)该协议的通信复杂度不依赖于输入集的大小,而取决于阈值t的大小
(2)基于阈值的PSI协议分为两部分:

  • 交集的势测试(Cardinality Testing ),即测试参与方的交集是否大于nt
  • PSI:计算交集

介绍#

两方阈值PSI:
image
(1)双方先检测交集大小是否>nt
(2)若满足,则求交(获取交集);否则,什么也得不到(获取不到交集)

标准PSI和阈值PSI的对比:

  • 标准的PSI更在乎交集,而不在乎交集的大小,而阈值PSI更关注交集的大小。
  • 阈值PSI的通信量较少,只取决于阈值t的大小;标准的PSI通信量取决于输入集合的大小。

阈值PSI现状:
只有以下方案进行了讨论:
(1)【Privatepool: Privacy-preserving ridesharing-2017】
(2)【An algebraic approach to maliciously secure private set intersection-2019】
(3)【The communication complexity of threshold private set intersection-2019】
其中只有(3)的通信复杂度不依赖于n,方案是两方场景
(4)【Multi-party threshold private set intersection with sublinear communication-2021
这也是一个多方阈值PSI,使用FHE,通信复杂度为O(Nt),也提出了一个TPKE加密方案实现了:只有当各方的交集足够大时,各方才能求交集。还可以秘密的计算汉克尔矩阵的行列式(矩阵大小的线性时间内)。

阈值PSI的应用:
(1)约会APP
(2)生物特征认证
(3)拼车【Privatepool: Privacy-preserving ridesharing 】
假设两个(或更多)方正在使用拼车应用程序,如果他们的路线有很大的交集,它允许他们共享车辆。然而由于隐私问题,他们不想公开他们的行程。阈值PSI可以解决该问题,各方可以联合执行一个阈值PSI协议,了解路线的交叉点,如果交叉点足够大,共享一辆车,否则,他们就不共享一辆车,也能保证用户的路线隐私。

阈值PSI#

image

当前的阈值PSI主要分为两步:
(1)Cardinality Testing:就是各方检测交集是否大于nt
(2)PSI:如果满足(1),则输出交集;否则没有输出

具体:
image
如果起始t=1,则t的取值范围有:1,2,4,8,...,t,2t

通信复杂只取决于t的原因:
image

合适的阈值一定是2的次幂 ,如果交集大于nt,则Cardinality Testing对于阈值t就成功,因为tt>t/2,所以协议的通信复杂度只取决于阈值的大小。


解释有点牵强,或许我没理解
t是什么?


贡献#

(1)多方Cardinality Testing

  • 较上面的Cardinality Testing,这里给出了满足多方的Cardinality Testing
  • 通信复杂度为O(Nt2)
  • 并给出一些新的线性计算(linear algebra):求密文矩阵相乘、求密文矩阵的秩、求密文矩阵的逆等

该协议在【Secure linear algebra using linearly recurrent sequences-2007】【Communication efficient secure linear algebra-2006】的(两方)基础上构建的多方阈值PSI。

(2)多方阈值PSI

这里也是将一个两方的协议改为多方。

回顾一下两方的情况:
两方Alice和Bob各有数据SASB,其大小都是n,阈值t<<n,如果|SASB|nt,则求出交集SASB

我们方案基于【The communication complexity of threshold private set intersection-2019】论文,这是一个两方的阈值PSI协议:
image
(1)若交集大于nt
(2)计算交集
两方将数据编码到多项式中,得到PA(x)=(xai)...(xan)PB=(xb1)...(xbn)在一个大的有限域上F,其中aiSA,biSB,然后只要满足|SASB|nt,则:
image
deg(PA)=deg(PB)=t,所以两方只需要在PA(x)/PB(x)=PAB(x)/PBA上计算O(t)个点。然后将这些点插值得到PA(x)/PB(x),然后求出分母PBA,继而求出交集多项式PAB(x)=PB(x)/PBA


紧接上文问题:具体如何根据PA(x)/PB(x),然后求出分母PBA


Bob不能恢复出分子PAB,否则方案就不安全了,所以这里使用Oblivious Linear Evaluation (OLE)技术用于“掩盖”分子项(随机化)。

该协议只有满足|SASB|nt,才是安全的,否则就会泄露额外的信息,所以双方应该先执行Cardinality Testing操作,来保证协议是满足|SASB|nt的。

扩展到多方的限制:
image
image
这里讲的是Cardinality Testing如何扩展为多方:

参与方先将数据编码到多项式中,得到QA(x)=xai+...+xanQB=xb1+...+xbn,其中aiSA,biSB,检测Q(x)=QA(x)QB(x)是否是一个稀疏多项式(sparse polynomial),若是,则判断集合(SASB)(SASB)是小集合(small),通信复杂度为O(t2)
那问题来了:
(1)如何判断多项式是否时稀疏的?
(2)如何判断集合是小的?

如果将其扩展为多方,对于N个参与者,有:Q~(x)=(N1)Q1(x)Q2(x)...QN(x),如果N很小的话,那该多项式Q~(x)就是稀疏的那我们要是能计算该多项式的稀疏性,那么Cardinality Testing协议的总通信量变为O((Nt)2)

主要方法#

1、安全线性代数(Secure Linear Algebra )
来源【Secure linear algebra using linearly recurrent sequences 】
有两个参与方,一方有矩阵的加密Enc(pk,M),另一方有对应的解密私钥sk,他们想要对这个密文矩阵做运算(线性计算,linear algebra related ),比如:求逆矩阵的行列式、秩或者计算出x,对于Mx=y,给出加密的M,y

我们可以将该问题扩展到方,对于N个参与者P1,...,PN,每人有一份私钥的分享值,此外P1有一个加密的矩阵,目的是要对这个加密的矩阵做运算(线性计算,linear algebra related)。

我们发现可以将【secure linear algebra】协议扩展为多方场景,通过使用具有加法同态性的阈值PKE代替具有加法同态的PKE和GC代替来实现,所以该方案允许N方在阈值PKE下解决这个线性代数问题Mx=y

2、多方势检测(Cardinality Testing via Degree Test of a Rational Function )
对于参与方编码的多项式PSi(x)=(xa1(i))...(xan(i)),i[1,N],有:
image
若交集Si大小大于nt,则deg(PS1(Si))=...=deg(PSN(Si))t

以上是求交的方法!

所以Cardinality Testing有以下问题:
对于有理函数f(x)=P1(x)/P2(x),能否安全的判断deg(P1(x))=deg(P2(x))t,进而通过插值O(t)个点得到f(x)

我们发现,将V=(vi,f(vi))W=(wi,f(wi))(2t个点值),插值为多项式fV(x),fW(x),满足:
image

另外,插值有理函数可以看作是求解线性方程组,所以通过前面介绍的“Secure Linear Algebra”,可以安全(不泄露额外信息)的计算“degree test”,换句话说,这能判断交集大小是否小于nt,同时不泄露额外信息。

3、多方计算交集

这里的方法可以看作是【The communication complexity of threshold private set intersection 】的推广。

各方将其数据进行编码为多项式PSi(x)=(xa1(i))...(xan(i)),i[1,N],并且知道交集大小>nt,各方联合计算出有理函数(PS1+...+PSN)/PS1,然后插值O(t)个点值,P1方恢复出分母,求出交集。

该方案和【The communication complexity of threshold private set intersection】的不同之处就是,将“OLE calls”换成了基于阈值的PKE(具有加法同态性),可以看成多方OLE的替换。

4、安全性
在UC框架下证明了Cardinality Testing的安全,但还存在一个问题,就是“secure linear algebra”协议不能证明是UC安全的,因为输入是在公钥加密的密文,在UC设置中,输入是来自其他地方。

使用Externalized UC框架解决该问题,在该框架下,安全的“linear algebra ideal functionalities”共享公钥,每人一个私钥的分享份,使用这种方法证明协议的安全性。

由于“secure linear algebra”协议是安全的,如果它们都共享相同的公钥,那么在“Cardinality Testing”中,我们只需要创建此公钥并共享,所以我们可以证明“Cardinality Testing”是UC安全的。

其他的证明方式:仅证明住主协议的安全性,而不单独证明每个字协议的安全性。

推荐参考:UC安全,接下来需要看Externalized UC!

基础#

S是一个有限集合,xS表示从S中随机采样,|S|表示S的势(cardinality);N个参与者;给出两个不可区分的分布D1,D2;安全参数λ

阈值的PKE#

image
主要介绍了密钥生成算法判断是否为0的加密算法

UC框架和理想函数#

方案使用UC框架【A new paradigm for cryptographic protocols】分析安全性,在该协议中,只考虑半诚实敌手。
image
其中:

  • Z是环境
  • π是协议
  • A是真实世界
  • F是理想函数
  • SIM是模拟器

理想情况下的基于阈值的多方PSI:

只有当交集够大时,各方才会求交集。

image

Externalized UC of Global Setup:
externalized UC emulation (EUC)来源于【Universally composable security with global setup】,这是全局设置(global setup)的UC框架(简单版)
image

多项式插值#

下面介绍使用一个随机多项式去“混淆/遮盖”一个级数小于t的多项式:
image
这种方式也可以用于多个多项式(多方),只要他们不共享一个因子(common factor)。

什么意思,不能约么?

下面介绍如何通过插值恢复出这个有理函数f(x)=P(x)/Q(x)以及证明该函数是唯一的
image
其中P(x)的级数为mQ(x)的级数为n,则f(x)可一通过插值m+n+1个点唯一的插值出f(x),若P(x),Q(x)是首一的(monic),则只需要m+n个点。

给定集合V=(x,y),大小为m1+m2+1,可以根据这V个点唯一的插值出f(x)=P(x)/Q(x)

引理#

image
image

Oblivious Degree Test for Rational Functions#

下面给出一个多方协议下求线性计算Mx=y,通信复杂度为O(t2kλN)

多方求线性函数(Oblivious Linear Algebra)#

多方求加密矩阵乘#

功能是:
image

具体实现如下:
(1)初始化:各方Pi,共享公钥pk,以及每方各有一份私钥分享份ski
(2)输入:P1输入两个矩阵的加密Enc(pk,Ml),Enc(pk,Mr),其中Ml,MrFtt
(3)输出:各方得到Enc(MlMr)
image
其思想就是:(a1+a2+a3)(b1+b2+b3)a2(b1+b2+b3)a3(b1+b2+b3)=a1b1


但存在一个问题:(以三方为例)

最后得到的e=Enc(MlMr)+Enc(Rr(1)Rr(1))+Enc(Rr(2)Rr(2))+Enc(Rr(3)Rr(3)),因为在上面框红处,没有自乘!


多方求加密矩阵的秩#

功能:
image
具体实现如下:

image
其中FOMM表示的是以O(logt)计算t次乘法


不太懂


多方求线性函数#

思想是将问题约减为最小多项式。
M是一个非奇异矩阵(non-singular matrix),也叫做满秩矩阵。
M,x,y都是密文形式。
功能:
image

具体实现如下:
image

多方势检测(Oblivious Degree Test)#

功能:判断多方的交集数量t是否大于阈值t,若满足,则输出1,否则输出0。
image

主要思想是:
在两个不同数据集上插值出有理函数,并检查两次实验的结果是否相同。
插值有理函数可以看作求解线性函数,因此可以使用“secure linear algebra”求解线性函数。
最后各方只需要安全的检查Cv(1)Cw(2)Cw(1)Cv(2)=0是否成立!

给定有理函数P(x)/Q(x),其中P(x),Q(x)有相同的级数,并给定两个集合V1,V2,下面的协议secDT是判断这个有理数函数的级数是否小于阈值t
image
下面具体来分析一波:
(1)初始化

  • 各方共享公钥pk,且每人有一个私钥份ski
  • 假设各方可以正常执行理想函数:FORank,FOLS,FOMM,FDecZero
  • 各方共享一组随机数(α1,...,α4t+2

(2)参与方P1输入
输入:((α1,Enc(pk,f1)),...,(α4t+2,Enc(pk,f4t+2))),其中fi=P1(αi)/P2(αi)P1(x),P2(x)是两个级数为t的多项式

(3)P1设置
P1的输入((α1,Enc(pk,f1)),...,(α4t+2,Enc(pk,f4t+2)))拆分为两部分(αj,Enc(pk,fj))j[2t+1]=(vj,Enc(pk,fv,j)))j[2t+1](αj,Enc(pk,fj))j(2t+2,...,4t+2)=(wj,Enc(pk,fw,j)))j[2t+1]

所以得到了4t+2对点值(vj,Enc(pk,fv,j)j[2t+1](wj,Enc(pk,fw,j)j[2t+1]

由上面的点值构造两个密态线性系统:
image
其中r=(v,w)Mr是一个维数为2t+1的方阵,yr是一个长度为2t+1的向量。

这样就得到了加密的Mv,yvMw,yw
(4)各方联合计算
计算:Enc(pk,rank(Mr)rank([Mr||y])),如果结果不为0,则停止协议,其中使用了两次FORankFDecZero

即参与方联合测试Enc(pk,rank(Mv)rank([Mv||yv]))Enc(pk,rank(Mw)rank([Mw||yw]))解密后是否为0,若为0,则继续。
(5)各方联合计算
利用FOLS计算上面的两个线性函数,每方得到Enc(pk,(cv(1)||cv(2)))Enc(pk,(cw(1)||cw(2))),其中Mr[cr(1),cr(2)]=yr,r(v,w)cr(1)cr(2)各是长度为t+1t的向量。

这时各方能根据Mr[cr(1),cr(2)]=yr,r(v,w)(yv,Mv)得到密态的cv(1)||cv(2)(yw,Mw)得到密态的cw(1)||cw(2)
(6)各方联合计算
计算出:Cv(1)(x)=j=0tcv,j(1)xtjCv(2)(x)=xt+j=0tcv,j1(2)xtjCw(1)(x)=j=0tcw,j(1)xtjCw(2)(x)=xt+j=0tcw,j1(2)xtj

image
最终计算出密态的z

(7)判断
各方使用FDecZero检查z是否等于0(即对z解密)。如果是,输出0;如果不是,输出1。

优化#

我们考虑在对插值生成f(x)=P(x)/Q(x),当Q(αi)=P(αi)=0时,我们就不能求f(x)了。
image
解决办法就是,去掉该点
使得P~(x)=P(x)/(xαi),Q~(x)=Q(x)/(xαi),f(αi)=P~(αi)/Q~(αi)

具体来讲,就是计算出点值对(αi,Enc(pk,P1(αi)/(xαi))(αi,Enc(pk,P2(αi)/(xαi)))

这里的P1(),P2(X)指的是P(x),Q(x)

然后再分别构造出Enc(pk,Mr),Enc(pk,yr),后面的不变。

另外协议也能推广到deg(P(x))deg(Q(x))的情况。

多方阈值PSI#

该协议的重点就是cardinality test protocol,能够安全的判断N方数据的交集和阈值的大小关系。

安全的势检测(Secure Cardinality Testing)#

1、理想功能
image
2、具体实现
image
总结一下:
(1)各方先各自将数据编码为多项式,然后求出4t+2个点值,加密这些点,得到4t+2个密态值Enc(pk,riPi(αj)),广播出去。
(2)P1得到4t+2ci(j),计算得到d(j),形成密态点值对(αj,d(j)),并和私钥sk1一起发送给理想函数FSDT
(3)其他参与方P2,...,PN也将各自的私钥ski发送给理想函数FSDT,从而判断分子P1(x)和分母P2(x)的级数是否最大为t,然后输出结果。

完整的多方阈值PSI协议#

在该协议中,通过使用TPKE扩展了之前的方案,具体协议如下:
image
总结一下:
(1)各方先将数据发送给理想函数FMPCT,检测交集大小和阈值的大小关系。
(2)再通过理想函数FGen生成密钥:各方共享公钥pk,各自有一个私钥份ski
(3)各方执行:

  • 将数据Si编码为多项式Pi(x),计算出3t+1个点值Pi(αj)
  • 采样Ri(x),使得deg(Ri(x))=t
  • 加密:ci(j)=Enc(pk,Ri(αj)Pi(αj)),然后广播出去。

(4)P1将收到的对应的密文相加得到3t+1个值d(j)=iNci(j),再将其广播出去。
(5)联合解密出V(j)=Dec(sk,d(j))
(6)P1计算点V~(j)=V(j)/P1(αj),得到点值对(αj,V~(j)),将其插值出函数V~(j)(x),再恢复出分母PS1(Si)(x)
(7)P1根据自己数据S1=(a1(1),...,a1(n))计算出PS1(Si)(a1(j)),根据PS1(Si)(a1(j))0,判断a1(j)是否在交集中。
(8)广播交集。

在这里给出了详细如何根据PS1(Si)(x),计算出交集!

正确性证明:
image
image

这样就能根据3t+1个点插值出V~(j)(x),再“恢复”出分母PS1(Si)(x),进而带入数据元素判断是否为交集元素。

总结#

1、关键点“cardinality test protocol”,也是最难理解的
2、如何根据f(x)恢复出分母?


作者:Hang Shao

出处:https://www.cnblogs.com/pam-sh/p/16379470.html

版权:本作品采用「知识共享」许可协议进行许可。

声明:欢迎交流! 原文链接 ,如有问题,可邮件(mir_soh@163.com)咨询.

posted @   PamShao  阅读(753)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)
历史上的今天:
2020-06-30 远程连接云服务器自动断开连接解决办法
点击右上角即可分享
微信分享提示
more_horiz
keyboard_arrow_up dark_mode palette
选择主题
menu