多方安全计算(4):MPC万能积木-秘密共享

多方,安全,计算,mpc,万能,积木,秘密,共享 · 浏览次数 : 541

小编点评

**密文加法与乘法策略** **简介** 密文加法与乘法是两方安全计算中的一种重要工具,它可以用于加密和计算密文。 **密文加法** 密文加法是一种在两个密文之间加密计算的算法。它使用密文的密钥进行加密操作,从而使密文无法被第三方访问。 **密文乘法** 密文乘法是一种在两个密文之间计算乘积的算法。它使用密文的密钥进行加密操作,从而使密文无法被第三方访问。 **密文加法与乘法的计算方法** 密文加法与乘法的计算方法通常使用秘密共享技术。在秘密共享过程中,每个方之间共同计算一个密文加法或乘法操作的结果。 **示例** 假使两个方之间共同计算一个密文加法操作的结果。 **密文加法操作** 密文加法操作的结果是密文的加法结果。 **密文乘法操作** 密文乘法操作的结果是密文的乘法结果。 **结论** 密文加法与乘法是两方安全计算中的一种重要工具,它可以用于加密和计算密文。

正文

学习&转载文章:多方安全计算(4):MPC万能积木-秘密共享

前言

在之前的文章(多方安全计算(3)MPC万能钥匙:混淆电路中,我们对MPC中一类通用方案混淆电路(GC)与密文比较策略做了介绍。混淆电路通过将任务抽象为电路以及对基础电路提供加密方案达到了万能钥匙的效果。在姚期智先生提出GC方案不久后,Goldreich等人[1]提出了GMW范式,给通用的密文计算任务指明了一条新的方向。

与GC不同,GMW范式认为既然一个电路可以由与门或者或门组成,那么如果对与门和或门都可以做到输入与输出都为密文形式,且加密形式相同,那么就可以将初始的计算任务拆解为若干子计算步骤,通过逐步的完成密文计算就可以做到在密文下完成整个计算任务。当然,一个真实的计算任务从与门、或门出发是不合适的;一个更自然的出发点是加法计算与乘法计算,而本文将介绍如何通过秘密共享(也常被称为秘密分享)技术在MPC任务中完成加法与乘法计算。读者可以想象,这类似于搭积木,而基础的积木块就是密文加法与密文乘法。

  • GC是通过与门或者或门构造任意计算
  • SS是通过加法和乘法构成任意计算

宏观上说,如图一所示,多方安全计算以不经意传输为根基,基于此可以构造出混淆电路与秘密共享两类通用方案。值得注意的是,此三类方案在理论上都可以完成任意的密文计算任务;但在实际的方案中,往往由于效率上的取舍而构造更定制化的协议。

图片

图1 多方安全计算概览

秘密共享

秘密共享技术事实上早于MPC被提出,其最初是为了解决密钥存储相关的问题,其最初的设计思路可参考文章(秘密共享—隐私计算和区块链共识中的榫卯)。简单起见,本文直接给出秘密共享的通用定义形式。

定义1:(接入结构)

定义\(p_1,...,p_n\)为参与方集合,\(A\in 2^{p_1,...,p_n}\)为参与方集合的一个集族。如果集合\(B\in A\)\(B\in C\)可推出\(C\in A\),那么集族\(A\)就是单调的。接入结构定义为\(p_1,...,p_n\)的非空子集的一个单调集族\(A\)。接入结构\(A\)内的集合被称为授权集合,接入结构外的集合被称为未授权集合

此处通过定义授权集合来确定秘密应该被哪些参与方知晓。

定义2:(秘密共享)

如果以下条件成立,那么分配方案是在秘密的给定概率分布\(S\)上实现接入结构\(A\)的一个秘密共享方案,此处\(H\)表示信息熵。

正确性:对于每个授权集合\(B\in A\),有\(H(S|S_B)=0\)

安全性:对于每个未授权集合\(T\notin A\),有\(H(S|S_T)=H(S)\)

即对授权集合用户来说,更多的其它参与方也不能得到额外的信息;而对未授权集合,他们事实上未得到任何信息。因为上述定义需要绝对的正确性与安全性,以上定义也常被称为完美秘密共享;如将上述公式中的等号换成约等号,则相应方案常被称为统计秘密共享;在MPC计算中通常只关注于完美秘密共享方案。

以上定义是从信息论层面定义的秘密共享,即只有授权的参与方才能得到有用的信息。

密文加法

完美秘密共享有多种构造方法,通常也对应着不同的密钥管理需求;但在MPC中通常不聚焦于此;与同态类似,我们更关注于其计算的同态性。如本文开头所述,我们需要让单步计算的输入与输出保持同样的密文格式

在MPC计算中,我们通常使用最简单的秘密共享方案:加法秘密共享

可参考:Shamir秘密共享

例如,有原始的秘密值4,有两个参与方\(S_1\)与,\(S_2\),那么在经过加法秘密共享后,参与方\(S_1\)可能得到分享值3, \(S_2\)对应得到分享值1。当然,实践中我们通常选用一个较大的环(比如uint64)来完成秘密共享,需保证原始秘密值在这个环中,而分享值等可能的为环上的任意数;方便起见,后文中所述运算都为环中的运算,不再显式说明。

那么加法秘密共享是如何保证自然的保证加法同态性的呢?

有原始两份秘密\(a\)\(b\);那么由于输入时秘密已被分享,比如\(S_1\)方持有\((a_1,b_1)\)\(S_2\)方持有\((a_2,b_2)\) ,那么由于有\(a_1+b_1+a_2+b_2=a+b\)那么每一方无需与另一方通信,即可在不暴露原始明文的情况下完成密文加法,计算完后\(S_1\)方持有\(a_1+b_1\)\(S_2\)方持有\(a_2+b_2\)。特别的,如果是已知的明文与秘密值相乘,也可以视为密文加法运算

密文乘法

上一节中我们描述了加法秘密共享方案如何自然的完成密文加法,然而此类方案在不交互的情况下完成密文乘法是不可能的。早期文献往往通过OT等方案辅助完成密文乘法;幸运的是,Beaver[2]提出一种被称为beaver triples的策略来更加优雅与一致的解决了这个问题。

  • 目的计算:\(xy\)

具体来说,Beaver将密文计算过程分为离线阶段与在线阶段;离线阶段即获得实际秘密之前的阶段。 beaver triples通过在离线阶段生成一个三元组\((a,b,c)\),保证\((c=ab)\);然后让参与方\(S_1\)\(S_2\)分别获得\((a_1,b_1,c_1)\)\((a_2,b_2,c_2)\)

  • 需要引入一个三元组:\((a,b,c)\),满足\(c=ab\),参与方\(S_1\)\(S_2\)分别有\((a_1,b_1,c_1)\)\((a_2,b_2,c_2)\)

然后在某个时间点,参与方分别获得了实际秘密与的分享值\((x_1,y_1)\)\((x_2,y_2)\)。容易注意到,存在如下公式:\((x-a)(y-b)=x y-a(y-b)-b(x-a)-ab\)

  • 进行秘密分发:\(S_1\)有秘密分片\((a_1,b_1,c_1,x_1,y_1)\)\(S_2\)有秘密分片\((a_2,b_2,c_2,x_2,y_2)\)

此时,两参与方\(S_i(i=1,2)\)只需分别计算如下步骤(注:步骤中\(=\)为赋值运算符):

\(S_i\)在本地计算 \(e_i=x_i-a_i,f_i=y_i-b_i\)

\(S_i\)通过一轮交互【加法】恢复出\(e\)\(f\)

\(S_i\)在本地计算\(xy_i=c_i+b_ie+a_if\),然后\(S_1\)进一步计算\(xy_1=xy_1+ef\)

  • 进行秘密重构:引入辅助信息(\(e=x-a\)\(f=y-b\)),所以\(ef=(x-a)(y-b)=x y-a(y-b)-b(x-a)-ab\),即\(xy=ef+af+be+c\)
    • 其中\(e,f\)可以通过加法恢复出来,接下来各方通过\(xy=x(y_1+y_2)=xy_1*xy_2\)完成乘法计算。

其过程如下图所示。

图片

图2 两方密文乘法过程

容易注意到,上述步骤实质上构造出了公式中除\(xy\)外每一项的加法分享;通过离线阶段的乘法替代了在线阶段的乘法。该方案也是两方(也可拓展为任意多方)秘密共享策略密文乘法的通用策略,但如何快速的在离线阶段生成beaver triples是一个十分有趣艰深且仍在不断探索的问题。

例子

本节中我们描述一个简单的使用场景:安全地提取传感器收集信息的特征。简单来说,系统模型如下:

这也是一个边缘计算的例子

图片

图3 传感器信息密文特征提取

1、传感器搜集原始图像信息,然后借助两个边缘服务器完成信息的处理,并将结果反馈给用户。此处由于传感器无力完成信息的处理步骤,而不得不借助外部服务器;而传感器直接搜集的信息往往敏感而不能直接公开,因而需要保证边缘服务器们只能得到密文的输入。

2、针对图像的特征提取往往使用卷积神经网络

卷积神经网络常常由全连接层、卷积层、激活函数层与池化层组成。

  • 卷积层与全连接层仅涉及乘法与加法。例如,某卷积层的神经元共享同样的权重和偏置值;在计算这一层时,第\((j,k)\)个输出神经元是通过计算\(y_{j, k}=\sum_{l=0}^{n-1} \sum_{m=0}^{n-1} w_{l, m} x_{j+1, k+m}+b\)得到的,其中\(w_{l,m}\)\(x_{j+1,k+m}\)为权重矩阵\(W\)与输入神经元对应位置的值。当使用预训练神经网络时,权重\(W\)\(b\)为已知值。全连接层的计算与之类似,不再赘述。

  • 激活函数层为神经网络提供非线性。常见的激活函数,一类如sigmoid,其涉及指数运算与除法运算;另一类如ReLU,其仅涉及比较运算。诸如前者,通常可使用泰勒展开等方式将其转换为多项式,然后即可使用密文乘法与加法完成。而后者由于涉及比较运算,可借助于混淆电路中的方案完成;在之后的文章中,我们也将进一步介绍如何仅使用秘密共享完成比较计算。

  • 池化层分为最大池化与平均池化。最大池化层首先将输入分为若干个非重叠的小块,然后找出每个小块中最大的值并保留该值,而将其余值都置为0;平均池化计算每个小块中值的平均值,并用该平均值替换原来的值。对于前者同样涉及密文比较计算,而后者只是一个普通的密文加法运算,可在秘密共享中各方独立完成。

就这样,依靠本文所介绍的密文加法与乘法策略,再简单结合之前文章中的GC比较策略,我们就可以做到密文神经网络的计算,从而进一步完成密文传感器信息的特征提取,而只需传感器进行简单的加法秘密共享计算。

熟悉联邦学习的朋友可能注意到,上述策略如果应用于密文神经网络训练则与联邦建模目标一致;但请注意两类方案有着本质的不同:

  • MPC对每一步基础计算都做了密文替换,而联邦学习通常只对梯度等信息做了一定程度的遮掩
  • MPC类方案输入信息与神经网络参数的安全性由严格的困难性假设保证,但在效率上也仍有较大的改善空间。

总结

本文简要的介绍了多方安全计算中另一个重要工具秘密共享,并以加法秘密共享这一最简形式为例,介绍了密文加法与密文乘法的计算方法。值得注意的是,相比于GC类方案,秘密共享更符合直觉,也更多停留在数值计算的层次,因而在实际编码实现与应用中更占优势。虽然通过本文介绍的方案,在理论上已可以计算任意的密文计算,然而更高效的计算方式往往需要更定制化的密文计算协议,在真实的计算机中往往也有着更复杂的取舍。在之后的文章中,我们将介绍诸如比较与除法等基础计算模块的密文协议构造方法,也将介绍更多已有的开源密文计算框架。

参考文献

[1] Micali S, Goldreich O, Wigderson A. How to play any mental game[C]//Proceedings of the Nineteenth ACM Symp. on Theory of Computing, STOC. ACM, 1987: 218-229.

[2] Beaver D. Efficient multiparty protocols using circuit randomization[C]//Annual International Cryptology Conference. Springer, Berlin, Heidelberg, 1991: 420-432.

与多方安全计算(4):MPC万能积木-秘密共享相似的内容:

多方安全计算(4):MPC万能积木-秘密共享

学习&转载文章:多方安全计算(4):MPC万能积木-秘密共享 前言 在之前的文章(多方安全计算(3)MPC万能钥匙:混淆电路中,我们对MPC中一类通用方案混淆电路(GC)与密文比较策略做了介绍。混淆电路通过将任务抽象为电路以及对基础电路提供加密方案达到了万能钥匙的效果。在姚期智先生提出GC方案不久后

多方安全计算(3):MPC万能钥匙-混淆电路

学习&转载文章:多方安全计算(3):MPC万能钥匙-混淆电路 前言 我们在讲解不经意传输(Oblivious Transfer,OT)的文章(安全多方计算(1):不经意传输协议)中提到,利用n选1的不经意传输可以解决百万富翁问题(两位富翁Alice和Bob在不泄露自己真实财富的情况下比对出谁更有钱)

多方安全计算(6):MPC中场梳理

学习&转载文章:多方安全计算(6):MPC中场梳理 前言 诚为读者所知,数据出域的限制约束与数据流通的普遍需求共同催生了数据安全计算的需求,近一两年业界又统将能够做到多方数据可用不可见的技术归入隐私计算范畴。粗略来说,隐私计算可分为以联邦学习为代表的机器学习类升级方案、以可信硬件为基础的可信执行环境

对于多方安全计算,你是否也有这样的疑惑?

学习&转载文章:对于多方安全计算,你是否也有这样的疑惑? 问题 假设多方安全计算中有两个参与方$P_0$和$P_1$,其中$P_0$拥有$x$,$P_1$拥有$y$,双方想要在不暴露自己拥有的数据的同时计算一个结果$z$,且$z=x+y$。那么不管用哪种协议进行计算得到最终结果$z$,并且公布给双方

隐私计算之多方安全计算(MPC,Secure Multi-Party Computation)

如今,组织在收集、存储敏感的个人信息以及在外部环境(例如云​​)中处理、共享个人信息时, 越来越关注数据安全。这是遵守隐私法规的强需求:例如美国加利福尼亚州消费者隐私法 (CCPA)、欧盟通用数据保护条例 (GDPR) 和世界各地的其他新兴法规,以及中国的《数安法》《个保法》等,都对安全处理敏感数据提出了要求。

京东云开发者|经典同态加密算法Paillier解读 - 原理、实现和应用

随着云计算和人工智能的兴起,如何安全有效地利用数据,对持有大量数字资产的企业来说至关重要。同态加密,是解决云计算和分布式机器学习中数据安全问题的关键技术,也是隐私计算中,横跨多方安全计算,联邦学习和可信执行环境多个技术分支的热门研究方向。 本文对经典同态加密算法Pailier算法及其相关技术进行介绍,重点分析了Paillier的实现原理和性能优化方案,同时对基于公钥的加密算法中的热门算法进行了横向

安全多方计算(1):不经意传输协议

学习&转载文章:安全多方计算(1):不经意传输协议 前言 在安全多方计算系列的首篇文章(安全多方计算之前世今生)中,我们提到了百万富翁问题,并提供了百万富翁问题的通俗解法,该通俗解法可按图1简单回顾。 图1 百万富翁问题通俗解法 百万富翁问题通俗解法场景中,我们可以将Alice和Bob的诉求总结如下

安全多方计算(2):隐私信息检索方案汇总分析

> 学习&转载文章:[安全多方计算(2):隐私信息检索方案汇总分析](https://mp.weixin.qq.com/s/7JF-g6m8RLPWf0QgbYE-7g) ## 前言 **多头贷问题**是网络小额贷款平台放款时所要考虑的一个重要问题。假设银行A有一潜在贷款客户小张,银行A为了足够多的

安全多方计算(5):隐私集合求交方案汇总分析

学习&转载文章:安全多方计算(5):隐私集合求交方案汇总分析 前言 随着数字经济时代的到来,数据已成为一种基础性资源。然而,数据的泄漏、滥用或非法传播均会导致严重的安全问题。因此,对数据进行隐私保护是现实需要,也是法律要求。隐私集合求交(Private Set Intersection, PSI)作

【隐私计算笔谈】MPC系列专题(十):安全多方计算下的集合运算

学习&转载文章:【隐私计算笔谈】MPC系列专题(十):安全多方计算下的集合运算 集合运算 集合可以通俗地描述为确定的一堆东西。如有一个集合$𝐴$,一个元素$𝑐$要么属于集合$𝐴$,记做$𝑐\in 𝐴$;要么不属于集合$𝐴$,记做$𝑐∉𝐴$,元素$𝑐$不能既属于集合$𝐴$又不属于$