【MPC技术解读】用安全多方计算保护数据隐私(二)

如上一篇文章“【MPC技术解读】用安全多方计算保护数据隐私(一)”所述,安全多方计算协议是一种分布式协议,允许各参与方在不泄露自身隐私信息的前提下,通过既定逻辑共同计算出一个结果。基于此提出了一个端到端的MPC框架,以实现隐私保护计算。在本文中,我们将详细介绍其工作原理。

在介绍技术细节之前,我们应该先定义安全目标,即密码学中的安全模型。文中主要介绍两种安全挑战敌手模型:半诚实敌手模型和恶意敌手模型。

在半诚实敌手模型中,参与方严格按照协议执行,但对过程中的其他隐私数据仍有些好奇。这适用于一些企业间的业务场景,在这些场景中,企业必须严格遵循协议程序,并且让代码在各参与方都无法接触到的安全环境中运行。

恶意模型则更贴近现实,即参与者会竭尽所能获取其他参与方的隐私信息。安全多方计算协议意味着在两种模型中,所有参与方都无法获得输出结果以外任何的附加信息。注意,这里的“额外信息”并不是指输入的“任何信息”,而是指除去可以直接从输出结果直接推断出的之外的信息。

文中提出了许多具体的技术来构造针对半诚实敌手模型或恶意敌手模型的MPC协议,如加密电路,秘密共享,不经意传输,同态加密及其组合等。在本文中,我们将会着重介绍由姚期智教授发明的针对两方场景的加密电路,这是目前最有效的技术之一。

例如:Alice和Bob都分别拥有各自私有输入信息x和y,他们想通过共同协定的函数f来获得输出结果z= f(x, y),且除了输入结果外不会揭露任何其他额外内容。

首先应该使用电路编译器将函数f转换为由AND和XOR门组成的布尔电路(如图1所示),因为大多数用高级语言编写的程序都包含复杂的数据结构,这在实际的具体应用中其实是一个很复杂的工程任务。

图1

为了便于理解描述,我们假设x,y都是2比特字符串。如上图,x作为左边最开始两根线的输入,y作为最后两根线的输入。

Alice将电路作为输入,并写下每个门的所有真值表。然后它为每个门选择两个均匀分布的随机字符串,称为标签,分别用来代表0或1表示,如图2所示。注意,虽然Alice不知道C,D线的输入,但她仍然在每根线上选择标签来表示0和1。

图2

选择标签后,Alice根据电路的拓扑结构用标签替换真值表。以左上门为例。它有A和B线作为输入,E线作为输出。然后Alice将第一个真值表替换为:

在替换所有真值表后,Alice获得了一个“标签表”,如图3所示。

图3

对于每个门,Alice使用标签对门进行加密。即,对于标签表的每一行,Alice使用输入标签作为双重加密的密钥对输出标签进行加密。更具体地说,对于第一个标签表中的第一行,Alice使用A0和B0作为AES的密钥,并将E0加密为AESA0(AESB0(E0)),所有其他行和门都以类似的方式进行。然后Alice得到一个加密电路,如图4所示。

图4

假设Alice输入了x=10,Bob输入了y=01。然后Alice根据她的输入比特串和输出标签的含义(即关系I0->0; I1->1)将加密电路(所有加密门)与A1和B0一起发送给Bob。请注意,Bob无法从A1和B0获取Alice的任何输入信息,因为它们只是随机字符串,并且电路输出标签的表述关系不会泄漏任何输出值的附加信息。

在Bob解密加密电路之前,他必须根据他的输入信息获得输入标签。由于标签是由Alice选择的,因此他必须与Alice一起运行一个“传输协议”以获取标签而不直接告诉她输入的信息。这种“传输协议”在密码学中称为不经意传输,因为它是一个非常基础的密码学原语,我们不会详细介绍技术细节,而是在下面列出它的性质。

1.Alice将标签X0, X1作为输入,Bob将b=0/1作为输入。在协议结束时,Bob将获得Xb。

2.Alice不知道Bob选择了哪个标签。

3.Bob不知道另一个标签X1-b。

在与Alice运行不经意传输协议之后,Bob根据他的输入获得标签C0, D1,然后他可以开始解密加密电路。对于每个加密门,Bob用输入标签作为AES密钥解密四个密文,注意他只能获得一个有意义的标签,然后迭代地进行解密以获得输出标签I0。由于Bob知道I0的含义,他将获得输出0,并将其发送给Alice。整个求解过程如图5所示。

图5

至此,我们解释了姚期智教授发明的加密电路的基本原理。近40年来,人们也提出了许多优化技术来改进这一基础协议。Free-XOR(不加密异或门),row reduction和half gate(减少每个AND门的数量为2个密文)等技术和硬件加速(使用AES-NI)显着地提高了加密电路的效率。

本文由 区块链技术网 作者:陈琳 发表,其版权均为 区块链技术网 所有,文章内容系作者个人观点,不代表 区块链技术网 对观点赞同或支持。如需转载,请注明文章来源。