paper:Generic Compiler for Publicly Verifiable Covert Multi-Party Computation
authers: Sebastian Faust, Carmit Hazay, David Kretzler1,and Benjamin Schlosser
publish time:2021.6,publish at EUROCRYPT 2021
1.abstract
这篇文章主要介绍了一种通用的编译器,这个编译器用于在多个参与方安全计算下的公开可验证秘密安全,并且参与方不需要输入秘密。
2.两方的covert security 首先由Aumann and Lindell提出,多方的covert security首次由Goyal 等人提出。
3.协议的具体内容
a.第一步:分布式种子计算
参与方在每一次半诚实实例运行过程中,和其他参与方交互,获得其他参与方的种子。SG协议如下:
SG协议分成2个阶段。承诺阶段:每个参与方h均匀的选择k比特长度的种子,并且对该种子做出承诺c^h,同时给出去除承诺的方法d^h。h把种子的承诺发给所有的其他参与方。扔硬币阶段:对于每个参与方i,参与方h 发送ok给Fcoin函数获得seed^(2,i),ph总共发送n个ok,收到n个seed2。Fcoin函数如下:
该函数实现如果所有的参与方都想继续下去的话,随机选择一个k比特长度的种子,将这个种子发给敌手A(不明白为什么发给A。。。。)。如果敌手A还想继续下去的话,该函数就把种子发送给所有的参与者。也就是每个参与者获得的随机数是一样的。
SG协议的输出阶段:如果ph在某一轮中没有收到所有的信息,或者收到的seed2中存在空的情况下,ph向所有参与方发送停止的信号,并且停止往下执行。如果一切正常的话,就输出(seed1(h),d(j,h):在第j轮中,对seed1(h)的去承诺方法,{seed2(i):在第i次运行Fcoin函数获得的种子,c(i):用户i 对自己选择的随机种子的承诺}0<i<=n。
在第1步执行完之后,参与方h最终获得seed(h)=seed1(h)异或seed2(h)
b.
第2步:执行半诚实协议
所有参与方都要交互执行t次半诚实协议。在第j次实例中,参与方h根据种子seedj(h)生成的随机数和剩下的参与方进行半诚实协议,获得记录了整个半诚实协议执行过程中记录结果的副本trans以及自己的输入对应的输出y。在半诚实协议中,所有参与方的输入都是随机数。
c.
第3步,创建公开可验证的证书。
参与方h首先在1-t中,随机抽样r^h,和随机选择一个k比特长的随机数u^h。这两个数都是一部分,最后需要将所有参与方的数聚合在一起。参与方h把{r,u,d)发送给函数Fpg,然后收到时间锁难题。Fpg函数如下
该函数分别聚集所有参与者的输入:r和u。然后根据公共参数pp,去承诺d和参数聚合后的r',使用随机数u'调用TL.Generate()函数生成时间锁难题p。然后把p发送给敌手A,如果敌手A发送停止的信息给可信任方,则可信任方将停止的信息发送给所有的参与者,并终止执行。否则将p发送给所有的诚实参与方。一旦从每个用户收到”继续“信号,可信任方把(r'和所有的去承诺方法)发送给A,如果有任何参与方向停止该协议执行,就停止该协议的执行。否则把(r'和所有的去承诺方法)发送给所有的诚实的参与者。
第4步,对于第j次半诚实协议的执行,参与方pj都要对自己的数据dataj进行签名,dataj=(h(参与方的编号),j(第j次半诚实协议的执行),seed2,cji, p(时间锁难题),副本trans)。参与方j广播自己的签名,并且验证其他参与方发送过来的签名。
d.积极的情况下
验证阶段
5.如果参与方j在某一轮通信中 第一次协议执行的过程中没有收到有效的信息,或者在时间锁难题生成的过程中收到了”停止“的信号,或者有参与方发送”停止“的信号时,参与方j广播并且输出”停止“信号。否则,参与方j发送”继续“信号给PG函数,收到(r',除了第r'次半诚实协议的去承诺方法),然后根据自己拥有的信息生成证书,及对应的作弊者的序号m。如果证书不等于空,则广播证书,并且输出参与方m作弊的信息,否则输出第r次半诚实协议执行得到的结果y。
Blame算法如下:
大体思路就是根据自己所获得的消息,再重复执行一遍,将自己计算出来的结果和收到的结果相比较,如果相等的话,就没有人作弊,不等的话就存在作弊者。
e.消极的情况下
如果PG函数在第6步中停止,也就是有人担心自己作弊行为暴露,恶意停止函数的执行,此时需需要解决时间锁难题,获得数据的副本,从而证实某个参与方作弊。参与方h调用TL.Solve(pp,p)函数,得到对应的(r',{d}),然后执行balme算法,生成相应的证书,及作弊者的序号)。如果证书不等于空,则广播证书,并且输出参与方m作弊的信息,否则输出“停止”信号。
-----------结束-------------
问题:1.为什么在PG函数中,充当时间锁难题的解不包括第r次的所有参与者的去承诺方法??
2.多方安全计算中,参与者不输入自己的秘密值,怎么进行计算的??在这个编译器下,怎么计算出结果?