SPDZ 学习笔记-part2
离线阶段
同态加密同态加密方案未提出具体方案,可参考BGV[1]等同态加密方案(在后续SPDZ改进论文中,使用了一层的BGV方案)。
Reshare协议
1.各参与方随机选择,记。
2.各参与方计算,并将结果发送给其他参与方。
3.各参与方生成的零知识证明,并发送给其他参与方进行验证(零知识证明为一种密码协议,可以在不泄漏秘密值的情况下证明秘密值的正确性)。
4.所有参与方计算, 。
5.所有参与方运行分布式解密算法,解密,得到。
6.参与方计算,其他参与方计算。
7.若,则所有参与方计算。
1.对于, 所有参与方计算;各参与方计算,因此各参与方得到了的秘密值份额。
2.输出。
PAngle协议
1.所有参与方计算;
2.各参与方计算,因此各参与方得到了的秘密值份额。
3.输出。
离线完整协议
1.初始化。生成全局MAC密钥和参与方密。
所有参与方运行分布式密钥生成算法,得到公钥;
各参与方生成;
各参与方生成,记,为全局MAC密钥;
各参与方计算并广播密文,,其中;
各参与方使用零知识证明协议验证,为正确性;
所有参与方计算,生成秘密分享值。
2.生成随机值的秘密共享值。
各参与方生成,记;
各参与方计算并广播密文,记;
各参与方使用零知识证明验证密文的正确性;
所有参与方计算。
3.生成乘法三元组。
各参与方生成,记,;
各参与方计算并广播密文;
各参与方使用零知识证明协议验证密文的正确性;
所有参与方计算;
所有参与方计算;
所有参与方计算;
所有参与方计算;
所有参与方计算。
3
在线阶段完整协议
在现阶段主要完成计算以及中间值和结果的MAC校验等,基础计算主要包括加法、乘法等。
在现阶段主要过程如下:
1. 初始化。准备全局MAC密钥,随机数秘密分享值、,乘法三元组等参数。
2. 输入阶段。设参与方的输入为,向打开,然后广播,各参与方计算。输入阶段主要是将输入值分片,产生对应的秘密分享值。
3. 加法计算。设输入为,计算。
4. 乘法计算。设输入为,则计算分为两步:1)使用三元组校验;2)计算。
5. 输出阶段。再输出最终结果前,需要对中间值、结果进行MAC校验,SPDZ 协议 MAC 验证时为了提高效率,可以在打开多个秘密分享值后通过一次MAC批量校验。
设在此次验证 MAC 前已有个秘密分享值被打开,即有个MAC 未验证,记为,其中对应的秘密分享值为,需要先打开一个随机值,然后各参与方计算,最后各参与方计算;
各参与方使用对和输出值进行“承诺”,“承诺”函数包括承诺阶段和打开阶段,承诺阶段对秘密值进行“混淆”,生成承诺值,并发送给验证方;打开阶段,发送方将秘密值发送给验证方,验证方使用秘密值(通常也会加入随机数)验证承诺值。“承诺”函数可由Paillier加密、离散对数、哈希等方法构造。
打开全局MAC密钥。
各参与方通过承诺函数,打开,然后所有参与方验证,若公式成立,则验证通过,即输出结果正确,否则,终止协议。
打开最终结果前,需要对的承诺值进行验证。验证通过后,计算,然后验证,验证通过,则即为最终正确结果。
参考文献
[1] Z. Brakerski, C. Gentry, and V. Vaikuntanathan. (leveled) fully homomorphic encryption without bootstrapping. In ITCS, pages 309–325. ACM, 2012.
本文来自知乎作者:小明原文链接:https://zhuanlan.zhihu.com/p/534036153
往期推荐
横向联邦学习下隐私保护安全聚合:问题,方法,与展望
SPDZ学习笔记-part1
为下一代可信计算设计更好的数据中心(arxiv)