基础知识
*梯度攻击定义:利用模型的梯度信息进行攻击,主要包括对抗攻击和梯度反演攻击。
目标:对抗攻击:通过对输入数据进行微小扰动,诱使模型产生错误输出。例如,通过微调图片像素让图像分类器误分类。
梯度反演攻击:通过分析模型训练过程中生成的梯度,逆向推断出输入数据,可能导致数据泄露。
*同态加密(Homomorphic Encryption, HE)、差分隐私(Differential Privacy, DP)和安全多方计算(Secure Multi-Party Computation, MPC)是三种用于保护数据隐私的技术。在联邦学习(Federated Learning, FL)的背景下,它们各有优势和局限性。
*Deep Leakage from Gradient(DLG)作者提出一种从梯度反推原数据的方案,首先随机生成一些虚拟的输入和输出,然后把这些虚拟数据放到神经网络中进行训练,计算虚拟梯度,优化虚拟梯度与真实梯度之间的差值平方作为损失函数,然后反向传播,更新虚拟输入输出,使其计算后的梯度能与真实梯度匹配,最终虚拟输入输出就会逐渐逼近真实输入输出,从而反推出原始数据。
然而,DLG在收敛性和和持续发现ground-truth标签方面存在困难。《iDLG: Improved Deep Leakage from Gradients》作者发现在某些情况下共享梯度一定会泄露ground-truth的标签,作者从数学上说明了该方法如何从梯度中提取ground-truth标签,并从经验上证明了它比DLG的优势。
*隐私计算技术常见的实现方式有:安全多方计算(MPC)、联邦学习(Federated Learning)、可信执行环境(TEE)。其中MPC技术主要包括:差分隐私、秘密共享、不经意传输、混淆电路、同态加密、零知识证明等。
*在深度学习中,梯度下降算法用于优化神经网络的参数,包括权重和偏置。梯度的计算涉及到前向传播和反向传播两个过程。
**神经网络中前向传播的基本步骤包括以下几个主要环节:
初始化输入数据:在神经网络的输入层,将输入数据初始化为网络的输入。输入数据可以是图像、音频、文本等多种形式,它们需要被转换为数值型数据,以便神经网络进行处理。
激活函数:激活函数是神经网络中的关键组成部分,它为网络引入非线性,使得网络能够学习复杂的函数映射。常见的激活函数有Sigmoid、Tanh、ReLU等。激活函数的作用是对输入数据进行非线性变换,增加网络的表达能力。
权重和偏置:权重和偏置是神经网络中的参数,它们在训练过程中不断更新,以优化网络的性能。权重决定了输入数据在网络中的权重,而偏置则为网络提供了一个偏移量,使得网络能够更好地拟合数据。
矩阵运算:在神经网络中,每一层的输出都是通过矩阵运算得到的。矩阵运算包括加权求和和激活函数的计算。加权求和是将输入数据与权重相乘,然后加上偏置,得到当前层的输出。激活函数则对加权求和的结果进行非线性变换,得到最终的输出。
逐层传递:神经网络通常由多个隐藏层组成,每个隐藏层都会对输入数据进行处理。前向传播的过程就是将输入数据逐层传递,直到最后一层得到输出结果。前向传播的代码实现示例:
- 初始化权重和偏置:在单层神经网络中,需要为每个输入特征初始化一个对应的权重,并为输出层初始化一个偏置。例如,使用NumPy库进行权重和偏置的初始化。
- 计算加权输入:每个神经元都会对输入特征进行加权求和,并加上一个偏置。这个加权输入将作为激活函数的输入。
- 应用激活函数:常用的激活函数包括Sigmoid、ReLU等。例如,使用Sigmoid函数对加权输入进行处理,得到最终的输出结果。
通过这些步骤,神经网络能够从输入层接收数据,经过一系列处理后得到输出结果,完成前向传播的过程。
联邦学习的部分加密多方计算
Partially Encrypted Multi-Party Computation for Federated Learning
1背景
联邦学习使多个参与者能够在不共享数据的情况下协作构建联合机器学习模型,即不需要将私有数据上传到中心化服务器,也无需在参与者之间交换数据,通过交换模型参数来实现模型的联合训练,从而可以解决数据隐私和数据安全等关键问题。
但是这种框架存在潜在问题,即使是私人数据,也会保留在本地参与者中。即联邦学习可能会泄露原始数据,以往的研究表明,利用梯度深度泄漏算法(DLG攻击)重建私有训练数据集的原始数据是一种可行的方法。在这种情况下,一个自然而然的问题就是如何开发一种保护隐私的分布式机器学习方法,同时避免在传输和聚合过程中可能出现的梯度信息泄露。
多方计算(MPC)提供了一种通用基元,使分布式各方能够在不泄露其私人输入和输出的情况下联合计算任意功能,允许以保护隐私的方式执行分布式机器学习,以便终端主机不知道客户端上的真实模型。然而,MPC协议一般要求每个本地参与者首先要把自己的模型分成m份秘密份额,然后发送(m-1)份给其他参与者,再把汇总后的模型传送给服务器,m代表分布式学习参与者的总数。潜在参与者的数量很大,标准的MPC在参与者之间生成、传输和计算秘密份额时,将不可避免地导致大量的本地计算和通信成本。
文章提出了一种部分加密的MPC解决方案即PEMPC算法,通过加密容易受到隐私保护攻击的模型参数(梯度)的关键部分以降低通信成本,而不是在整个本地模型上应用MPC来实现安全聚合。具体来说,只有本地模型的第一层采用 MPC策略加密,其余部分直接发送到集中节点。
理论分析和实验结果验证了提出的方法可以防止梯度攻击的深度泄漏,从而避免重建单个参与者的原始数据。在MNIST和CIFAR-10数据集上使用深度学习模型进行的实验证明,与传统的MPC相比,提出的部分加密MPC方法可以显著降低通信和计算成本,而且与使用明文聚合局部模型的传统分布式学习方法相比,它可以达到同样高的精度。
2提出的方法
具体来说,根据精心设计的MPC协议,参与者之间通过交换这些秘密份额来计算聚合模型。因此,任何一方都没有足够的秘密份额来重建任何特定的局部模型,从而保护局部模型不泄露给某些方面,而且聚合服务器是适用的。
2.1部分加密的基于MPC的联邦学习系统
图2.1 基于部分加密MPC的分布式机器学习框架
我们提出的部分加密的基于MPC的分布式机器学习的训练过程包含以下:
①每个参与者根据自己的数据集计算模型的本地梯度,记为
②每个参与者生成并向其他本地参与者发送A类梯度的秘密共享。
③每个参与者从其他本地参与者处接收A类梯度的秘密份额,将秘密份额相加以替换的值。
④每个参与者将A类梯度和B类梯度发送给服务器。
⑤服务器将本地参与者的梯度汇总为
⑥服务器将汇总结果发回给参与者。
⑦每个参与者更新模型的权重参数为
上述步骤将反复进行,直到达到终止条件,完成整个训练过程。
2.2部分加密的MPC阻止训练数据的恢复(?)
其中 f(·) 是激活函数,通常设置为sigmoid、ReLu或softmax函数。
通过使用DLG或iDLG,如果参与者仅加密第一隐藏层的权重参数,则服务器可以恢复y的准确结果。那么,如果f(·)绝对单调,也能准确求得z。现在问题转化为在只知道z的情况下恢复式(4)中的x,这是一个盲源分离问题。
假设1 对于每个输入向量 x,有超过 n 个非零元素。
在假设1下,我们有结论:如果 d > n,则线性系统 z = Wx+ b 中 x 存在无限多个解。
为保证当输入数据的维数大于第一隐藏层神经元数量时攻击者无法恢复输入向量提供了理论基础。
3实验研究
部分加密的MPC策略的思想为加密的点对点通信提供了另一种解决方案。通过设计,它可以通过将本地梯度转换为秘密份额(整数)来保护本地参与者的隐私,同时具有高精度、低通信量和低计算要求的优点。本节将通过在具有10个本地参与者和1个中央服务器的系统上进行实验来验证部分MPC的这些属性。
3.1预测精度比较
应用LeNet-5架构对MNIST数据集中的图像进行分类,研究训练和测试期间的损失和准确性曲线如下。(a)结果表明,分布式学习方法,即Non-MPC、MPC和PEMPC,在训练阶段具有相似的收敛速度,但速度略慢于集中式训练。从图(b)的结果中,我们可以看到基于MPC的策略的准确性几乎与非MPC基线(蓝线)相同,这表明在学习过程中,额外的MPC加密步骤不会导致准确率下降。
总而言之,MPC方法允许分布式机器学习以安全的方式进行,同时不会造成损失,即所提出的PEMPC方法可以在不牺牲整体学习性能的情况下保护参与者的隐私。
3.2通信和计算成本
在左图中,观察到完整MPC算法的通信要求明显高于非MPC基线,尤其是在客户端数量较多的系统中。相比之下,PEMPC的曲线几乎与非MPC一致,只有放大这两条曲线,才能观察到点对点模型传输所引发的额外成本。
由于只需在第一层执行本地MPC,因此计算时间从FULL- MPC中生成秘密共享的2.7081s和聚合秘密共享的0.6951s减少到PEMPC中的0.0019s和0.0008s。
3.3通过加密部分权重来提高 DLG 的性能
3.3.1实验解释为什么选择加密第一个隐藏层。
首先通用答案是第一层最接近原始图像,然后从实验方面解释,文章重现了之前的DLG(Deep Leakage from Gradient,梯度深度泄漏)方法及其已发布的源代码,并使用与原始论文中相同的架构。对于MNIST数据集,我们用高斯随机数替换层权重,并测试哪一层可以触发最大的图像MSE,或者换句话说,隐藏该层中的参数可以带来最佳性能。图中报告了DLG的最终性能,结果一致表明加密第一层会触发最大的错误。而且随着迭代次数的增加,误差不断增大。
3.3.2测试部分加密的MPC是否足以抵御来自DLG和iDLG的攻击
用三种方法替换第一隐藏层的梯度(权重和偏置项),以观察 DLG的行为:1)高斯分布(μ= 0,σ= 1)噪声;2)拉普拉斯分布(μ= 0,σ= 1)噪声;3)加法秘密共享MPC协议生成的秘密共享。
从图中可以看出,如果恶意服务器以纯文本的形式接收所有隐藏层的梯度,那么重构过程能够获得梯度损失为零且MSE为零的图像(图中的粉色线),并准确地重构出训练数据(图b中的Non-MPC行)。
当第一层的梯度采用所提出的PEMPC方法进行保护时,就能有效防止信息泄漏。从图a中可以看出,图像(蓝、绿、红线)的梯度损失和MSE都没有趋近于零。同样,当梯度损失和图像的MSE不收敛为零时,DLG算法也不能正确重建私有图像,如图b EPMPC行所示。
我们还将PEMPC与在原始梯度上添加拉普拉斯噪声和高斯噪声的另外两种基线进行了比较,其幅度为10-4。基于上述实验结果,我们验证了PEMPC是防止DLG攻击重建原始数据的有效方法,而且一般只对第一层加密就足以抵御DLG的攻击。
(b)在MNIST上,第一隐藏层未隐藏时和采用三种方法隐藏时的DLG 结果。
3.4总结
在本文中,提出了一种新方法(部分加密的MPC)来防止分布式机器学习系统中梯度的间接信息泄漏。提出的方法仅在模型聚合过程中使用MPC加密部分梯度。通过分析模型聚合的数据流,观察到所提出的方法可以防止从梯度中恢复原始数据。两种广泛使用的深度学习模型(即LeNet-5 和VGG-16)在MNIST和CIFAR-10数据集上的实验结果证明了所提出的部分加密MPC加密策略的有效性,具有较高的预测精度(如非MPC对应),通信成本低,本地计算要求低。
在这项工作中,我们仅提供防止训练数据恢复的原始理论基础。更多关于PEMPC的理论分析和探索将是我们未来工作的重点