安全多方计算简介


一、安全多方计算定义

安全多方计算(Secure Multi-Party Computation,SMPC)用于解决一组互不信任的参与方各自持有秘密数据,协同计算一个既定函数的问题。安全多方计算在保证参与方获得正确计算结果的同时,无法获得计算结果之外的任何信息。在整个计算过程中,参与方对其所拥有的数据始终拥有绝对的控制权。
举例来说,在一个分布式网络中,有n个互不信任的参与方P1,P2,…,Pn,每个参与方Pi持有秘密数据Xi(i=1,2,3,…,n)。这n个参与方协同执行既定函数,f(x1,x2,…,xn) -> (y1,y2,…,yn),其中yi为参与方Pi得到的输出结果。任意参与方Pi除yi之外无法获得关于其他参与方Pj(i !=j)的任何输入信息。如果y1 = y2 = … =yn,则可以简单表示为f:(x1,x2,…,xn) -> y。


二、安全多方计算安全模型

当前存在多种维度来评价安全多方计算方案安全性,其中最主要的是行为模型和安全门限。

1.行为模型

根据安全多方计算参与方的可信程度,可以将安全多方计算的行为模型分为半诚实敌手模型和恶意敌手模型。 半诚实敌手模型(Semi-Honest Adversary Model):各参与方严格遵循协议的要求,执行协议要求的各项步骤,但是会尽可能从获得数据中挖掘其他参与方的隐私。 恶意敌手模型(Malicious Adversary Model):恶意参与方输入通过改变协议甚至采取任意的行为获取其他参与方的隐私多方。

2.安全门限

假设一个SMPC协议的总参与方数目为n,根据安全多方计算参与方是否有合谋可能,可将安全多方计算的安全门限分为诚实大多数和不诚实大多数: 诚实大多数(Honest Majority):可能合谋的人数小于n/2。 不诚实大多数(Dishonest Majority):可能合谋的人数大于等于n/2。

三、安全多方计算关键技术

1.秘密共享(Secret Sharing, SS)

秘密共享通过将秘密信息分割成若干的秘密份额并分发给多人掌管,以此来达到风险分散和容忍入侵的目的。一般来说,一个秘密共享方案由一个秘密分割算法和一个秘密重组算法构成,包含秘密分发者、秘密份额持有者和接收者三类角色。秘密分发者持有秘密信息并且负责执行秘密分割算法,并将秘密份额分发给秘密份额持有者。接收者是试图重组秘密信息的一方。当接收者希望重组秘密信息时,将从一组授权的秘密份额持有者中收集秘密份额,并执行秘密重组算法计算秘密信息,当有充足的秘密份额就可以重新恢复出秘密信息。一个参与方可以承担多个角色。

2.不经意传输(Oblivious Transfer, OT)

如下图所示,该协议中发送方Alice拥有两个秘密消息x0和x1,接收者Bob选择并且仅能恢复其中的一个秘密消息xb(b∈{0,1}),但无法得到关于x1-b的任何消息,Alice无法知晓接收方选择的是哪一个消息。
2取1不经意传输协议

3.混淆电路(Garbled Circuit, GC)

混淆电路是由姚期智先生提出的针对半诚实敌手模型的两方安全计算协议,核心思想是将任何函数的计算问题转化为由“与门”、“或门”和“非门”组成的布尔逻辑电路,再利用加密技术构建加密版本的布尔逻辑电路。姚氏混淆电路包含布尔逻辑电路构建和布尔逻辑电路计算两部分。下图为一个AND门及其所对应的真值表。
AND门
如下图所示Alice和Bob想要计算一个AND门,该AND门包含两个输入线x,y和一个输出线z,每条线包含0和1两个可能的输入值,Alice为每条线指定两个随机的key,分别对应0和1。
在这里插入图片描述
Alice使用这些密钥对真值表进行加密,加密过程即为使用真值表每一行对应x,y的密钥加密z所对应的密钥。加密结束后,对加密后的真值表进行打乱操作,并将打乱后的表发送给Bob。加密及打乱操作如下图所示。
在这里插入图片描述
Alice将自己输入值对应的key1以及与Bob有关的key发送给Bob,Bob通过OT操作选择一个key2,并使用上述key1和key2尝试解密表(Garbled truth table)的每一行,最终只有一行能够解密成功,从而提取出k_z。Bob将得到的k_z发送给Alice,Alice通过对比从而得知计算结果。

参考资料

1.https://blog.csdn.net/qq_38798147/article/details/110727263
2.中国信息通信研究院、阿里巴巴(中国)有限公司、北京数牍科技有限公司 隐私保护计算技术研究报告(2020年)

猜你喜欢

转载自blog.csdn.net/WuwuwuH_/article/details/121330076