会议来源:IEEE TRANSACTIONS ON INFORMA TION FORENSICS AND SECURITY , VOL. 17, 2022

背景原因

1.分布式机器学习在海量数据上实现了更大模型的训练,但仍然容易受到安全和隐私泄露的影响
2.保护隐私的联邦学习方案之一是使用同态加密方案(如Paillier),对局部梯度进行加密,但局部梯度难以计算和传输,开销大(由于Paillier只能对整数进行加密,支持对单个数据进行加密,因此需要先对梯度进行量化,然后逐个加密,这大大增加了计算和通信开销)
3.保护隐私的FL(联邦学习)方案仍然容易受到中毒攻击
4.保护隐私的FL(联邦学习)方案遭受恶意服务器聚合和单点故障威胁

解决方案

我们提出了一个基于区块链的隐私保护拜占庭鲁棒联邦学习(PBFL)方案。具体来说,我们采用余弦相似度作为惩罚恶意客户端的方法。与之前使用余弦相似度机制的方案不同,我们的方案要求服务器收集一个小而干净的根数据集,并为数据集维护一个模型。在确定恶意梯度之前,服务器会考虑本地更新和服务器模型更新,这依赖于可信根,而不是像前面的工作那样只依赖本地更新。与FLTrust一致。在此基础上,采用同态加密技术,在此基础上增加了隐私保护机制。此外,我们使用区块链来促进透明的流程。

工作贡献成果

我们采用全同态加密(FHE)方案CKKS提供了一种隐私保护训练机制,不仅大大减少了计算和通信开销,还防止了攻击者窥探客户端的本地数据。
1.我们提供了一个可信的全局模型,通过余弦相似度去除恶意梯度,从而抵抗中毒攻击。
2.我们使用区块链促进透明的流程和法规的执行。服务器进行链下计算,并将结果上传到区块链,实现了效率和可信度。
3.我们使用两个著名的数据集演示了广泛的实验,并将我们的方案与以前最先进的方案进行了比较。结果表明,该方案具有良好的鲁棒性和效率。

预备知识

联邦学习

在标准的联邦学习设置中,假设我们有一个中央服务器和n个客户端{C1, C2,……Cn},本地数据集D j , j = 1, 2, 3, . . . , n, D = {D1, D2,…Dn}表示联合数据集, 客户的目标是在不泄露本地数据的情况下合作训练一个全局模型。

投毒攻击

投毒攻击: 在投毒攻击中,攻击者通过控制κ客户端来操纵局部模型,最终影响全局模型的准确性

投毒攻击分类

投毒攻击分类:定向攻击,非定向攻击
1.定向攻击: 有针对性的攻击,如缩放攻击,只针对数据集中的一个或多个数据类别,而保持其他类别数据的准确性
2.非定向攻击: 无目标攻击,如Krum攻击、Trim攻击,是一种无差别攻击,目的是降低所有数据类别的准确性。

数据投毒和模型投毒攻击

1.在数据毒害攻击(即标签翻转攻击)中,攻击者通过毒害设备的本地数据间接地毒害全局模型

标签反转攻击:改变样本的标签(给样本使用我们规定的)
标签干净标签攻击:改变样本的输入(将样本的内容修改,标签不变)

2.模型投毒攻击: 在模型投毒攻击中,攻击者可以直接操纵和控制设备与服务器之间通信的模型更新, 直接影响全局模型的准确性

同态加密

同态加密是一种基于数学计算的加密技术。HE满足对明文的加法或乘法等价于对密文的相应运算的性质。完全同态加密是一个既满足加性同态又满足乘性同态的加密函数,可以进行任意次的加法和乘法运算。

本文应用的全同态加密技术ckks(Homomorphic Encryption for Arithmetic of Approximate Numbers),因为该文其中一个实验结果表明,CKKS算法更有效,更适合处理大尺度向量和多参数网络模型

系统模型

在这里插入图片描述
请注意,求解器、计算器和客户需要向智能合约支付定金,我们省略了图中的过程
模型设计:
1.KGC (Key Generation Center):为客户端和服务器生成和分发公私钥对的可信机构。
2.客户端:作为数据所有者,客户端拥有KGC提供的公钥/私钥对(pkx, skx),并旨在从通用的全球模型中受益。
3.求解器:一个拥有小型干净数据集D0的中央服务器负责聚合客户端提交的所有梯度。
4.Verifier:一个非合谋的中央服务器,并与求解器合作执行计算。Verifier有一对KGC生成的公钥/私钥(pkv, skv)。
5.区块链系统:为了避免自私行为,中心服务器需要在SC上存入押金以获得潜在的惩罚。此外,还需要将结果上传到区块链,以便进行透明的计算过程。

威胁模型

1.投毒攻击:恶意客户端的目标是在不被检测的情况下影响全局模型的性能。恶意客户端可以通过多种方式发起投毒攻击。例如,他/她改变了数据的标签,并上传了在有毒数据上训练的梯度。
2.数据泄露:由于梯度是客户端本地数据的映射,如果客户端直接上传明文梯度,攻击者可以在一定程度上推断或获取诚实客户端的原始信息,从而导致客户端数据泄露。
3.推理攻击:在我们的方案中,Solver和Ve交换一些中间结果进行协作,以完成本地更新的聚合。因此,他们可能试图从中间结果中推断敏感信息

在这里插入图片描述

核心系统算法

在这里插入图片描述
PBFL由局部计算、归一化判断和模型聚合三个过程组成

局部计算

在这里插入图片描述

局部梯度

在这里插入图片描述

归一化判断

我们的聚合规则基于余弦相似度策略。为了使聚合规则适用于密文,在加密前对局部梯度进行归一化处理
在这里插入图片描述
因为用ckks加密所以本文向量内积:
向量 [ [ g ~ i j ] ] p k v = [ [ p 1 , p 2 , . . . . . , p n ∗ ] ] p k v 向量 [[ \widetilde g^{j}_{i}]]_{pk_{v}} = [[p_{1},p_{2},.....,p_{n^{*}}]]_{pk_{v}} 向量[[g ij]]pkv=[[p1,p2,.....,pn]]pkv

首先将两个加密向量相乘 : [ [ p 1 2 , p 2 2 , . . . . . , p n ∗ 2 ] ] p k v 首先将两个加密向量相乘 : [[p^{2}_{1},p^{2}_{2},.....,p^{2}_{n^{*}}]]_{pk_{v}} 首先将两个加密向量相乘:[[p12,p22,.....,pn2]]pkv
旋转向量 [ [ p 1 2 , p 2 2 , . . . . . , p n ∗ 2 ] ] p k v − > [ [ p 2 2 , p 3 2 , . . . . p n ∗ 2 , p 1 2 ] ] p k v 旋转向量 [[p^{2}_{1},p^{2}_{2},.....,p^{2}_{n^{*}}]]_{pk_{v}}->[[p^{2}_{2},p^{2}_{3},....p^{2}_{n^{*}},p^{2}_{1}]]_{pk_{v}} 旋转向量[[p12,p22,.....,pn2]]pkv>[[p22,p32,....pn2,p12]]pkv

重复( n ∗ − 1 )次 重复(n^{*}-1)次 重复(n1)次
可以得到 [ [ r 1 , r 2 , r 3 , . . . . r n ∗ ] ] p k v r 1 = p 1 2 + p 2 2 + , . . . . . , + p n ∗ 2 可以得到 [[r_{1},r_{2},r_{3},....r_{n^{*}}]]_{pk_{v}} \quad\quad r1=p^{2}_{1}+p^{2}_{2}+,.....,+p^{2}_{n^{*}} 可以得到[[r1,r2,r3,....rn]]pkvr1=p12+p22+,.....,+pn2
最后我们两个向量相乘 [ [ r 1 ] ] p k v = [ [ r 1 , r 2 , r 3 , . . . . r n ∗ ] ] p k v 乘 [ 1 , 0 , 0 , . . . . , 0 ] 最后我们两个向量相乘 [[r_{1}]]_{pk_{v}}= [[r_{1},r_{2},r_{3},....r_{n^{*}}]]_{pk_{v}} 乘[1,0,0,....,0] 最后我们两个向量相乘[[r1]]pkv=[[r1,r2,r3,....rn]]pkv[1,0,0,....,0]
[ [ r 1 ] ] p k v = [ [ g ~ i j ] ] p k v ⊙ [ [ g ~ i j ] ] p k v [[r_{1}]]_{pk_{v}}= [[ \widetilde g^{j}_{i}]]_{pk_{v}} \odot [[ \widetilde g^{j}_{i}]]_{pk_{v}} [[r1]]pkv=[[g ij]]pkv[[g ij]]pkv

梯度权重

在这里插入图片描述
具体来说,我们的聚合规则依赖于可信根数据集D0及其对应的模型w0,它们用于确定全局模型更新的更“有希望”的方向。局部模型更新,更类似于g的方向,有更高的权重,而被聚合。与前面的工作一样,Solver可以通过手动标记收集可信的根数据集D0。例如,谷歌可以招募其员工输入Gboard在下一个单词预测的联邦任务中创建根数据集。在第VII节中,我们展示了我们只需要一个小的根数据集D0(例如200个数据点),并且数据集的分布可以与客户端的分布不同。因此,对于Solver来说,收集可信根数据集D0和手动标记的成本通常是负担得起的。
方法:余弦相似度

Solver在数据集D0上训练得到梯度更新 g i 0 g^{0}_{i} gi0,然后使用
g ~ i 0 = g i 0 / ∣ ∣ g i 0 ∣ ∣ \widetilde g^{0}_{i} = g^{0}_{i} /|| g^{0}_{i}|| g i0=gi0/∣∣gi0∣∣

g i 0 g^{0}_{i} gi0进行归一化。求解器加密它得到梯度 [ [ g ~ i 0 ] ] p k v [[ \widetilde g^{0}_{i}]]_{pk_{v}} [[g i0]]pkv 然后我们计算这两个向量之间的余弦相似度,其中客户端 C j C_{j} Cj得到 g ~ i j = [ p 1 , p 2 , . . . . . , p n ∗ ] \widetilde g^{j}_{i}=[p_{1},p_{2},.....,p_{n^{*}}] g ij=[p1,p2,.....,pn] g i 0 = [ q 1 , q 2 , . . . . . , q n ∗ ] g^{0}_{i} =[q_{1},q_{2},.....,q_{n^{*}}] gi0=[q1,q2,.....,qn]加密后的梯度为
[ [ g ~ i j ] ] p k v = [ [ p 1 , p 2 , . . . . . , p n ∗ ] ] p k v , [ [ g ~ i 0 ] ] p k v = [ [ q 1 , q 2 , . . . . . , q n ∗ ] ] p k v [[ \widetilde g^{j}_{i}]]_{pk_{v}}=[[p_{1},p_{2},.....,p_{n^{*}}]]_{pk_{v}}, [[ \widetilde g^{0}_{i}]]_{pk_{v}}=[[q_{1},q_{2},.....,q_{n^{*}}]]_{pk_{v}} [[g ij]]pkv=[[p1,p2,.....,pn]]pkv,[[g i0]]pkv=[[q1,q2,.....,qn]]pkv

[ [ c s i j ] ] p k v = [ [ g ~ i 0 ] ] p k v ⊙ [ [ g ~ i j ] ] p k v = [ [ p 1 q 1 + p 2 q 2 + . . . . + p n ∗ q n ∗ ] ] p k v [[cs^{j}_{i}]]_{pk_{v}}= [[ \widetilde g^{0}_{i}]]_{pk_{v}} \odot [[ \widetilde g^{j}_{i}]]_{pk_{v}}=[[p_{1}q_{1}+p_{2}q_{2}+....+p_{n^*}q_{n^*}]]_{pk_{v}} [[csij]]pkv=[[g i0]]pkv[[g ij]]pkv=[[p1q1+p2q2+....+pnqn]]pkv
s . t . , ∣ ∣ g ~ i 0 ∣ ∣ = ∣ ∣ g ~ i j ∣ ∣ = 1 s.t., || \widetilde g^{0}_{i}||=|| \widetilde g^{j}_{i}||=1 s.t.,∣∣g i0∣∣=∣∣g ij∣∣=1
由于归一化,两个向量之间的余弦相似度可以转化为内积。

c s i j cs^j_{i} csij的负值意味着局部梯度 g ~ i j \widetilde g^{j}_{i} g ij的方向与 g ~ i 0 \widetilde g^{0}_{i} g i0的方向相反,这对全局模型产生了负面影响。一个典型的解决方案是在聚合期间丢弃恶意梯度,从而尽可能减少这些梯度的影响。因此,在第i次迭代中,客户端 C j C _{j} Cj的评分 S i j S ^j_{i} Sij由如下定义:
S i j = R e L U ( c s i j ) S ^j_{i}=ReLU(cs^j_{i}) Sij=ReLU(csij)
R e L U = { x , i f x > 0 0 , i f x < 0 ReLU = \begin{cases} x, ifx>0 \\ 0 , ifx<0 \end{cases} ReLU={x,ifx>00,ifx<0
ReLU函数是明文情况下使用的,在密文情况下不适用
下列算法给出了在[0,1]范围内同态密码比较的一种数值方法。两个向量的余弦相似度为[−1,1],这使得我们不能直接将比较方法应用于 [ [ c s i j ] ] 和 [ [ 0 ] ] [[cs^j_{i}]]和[[0]] [[csij]][[0]] 。解决方法之一是将余弦相似度转换为允许的范围。要做到这一点,我们首先加 [ [ 1 ] ] 到 [ [ c s i j ] ] [[1]]到[[cs^j_{i}]] [[1]][[csij]],使结果的明文落在[0,2]上,然后我们将结果乘以 1 2 \frac{1}{2} 21。因此,最终结果满足要求。请注意,通过我们的转换,值0对应于值 1 2 \frac{1}{2} 21。因此,我们将ReLU函数转换为ReLU’。我们在算法4中调用Max来描述同态比较方法。
在这里插入图片描述
R e L U ′ ( [ [ c s i j ] ] ) = { 1 2 ( [ [ c s i j ] ] + [ [ 1 ] ] ) , i f 1 2 ( [ [ c s i j ] ] + [ [ 1 ] ] ) > [ [ 1 2 ] ] [ [ 1 2 ] ] , i f 1 2 ( [ [ c s i j ] ] + [ [ 1 ] ] ) < [ [ 1 2 ] ] ReLU' ([[cs^j_{i}]])= \begin{cases} \frac{1}{2}([[cs^j_{i}]]+[[1]]), if \quad \frac{1}{2}([[cs^j_{i}]]+[[1]])>[[\frac{1}{2}]] \\ [[\frac{1}{2}]] , \quad \quad \quad \quad \quad if \quad \frac{1}{2}([[cs^j_{i}]]+[[1]])<[[\frac{1}{2}]] \end{cases} ReLU([[csij]])={21([[csij]]+[[1]]),if21([[csij]]+[[1]])>[[21]][[21]],if21([[csij]]+[[1]])<[[21]]

聚合算法

在获得客户端的所有分数后,Solver与Verifier一起工作,以获得模型聚合所需的值,而不会泄露隐私。具体来说,为了获得分数的原始值,求解器设置 [ [ S i j ] ] p k v ′ = 2 ⋅ [ [ S i j ] ] p k v − [ [ 1 ] ] p k v [[S^j_{i}]]_{pk_{v}}' = 2·[[S^j_{i}]]_{pk_{v}}−[[1]]_{pk_{v}} [[Sij]]pkv=2[[Sij]]pkv[[1]]pkv。求解器计算 [ [ s u m ] ] p k v = ∑ f = 1 ∣ C ∣ [ [ S i j ] ] p k v ′ [[sum]]_{pk_{v}}=\sum_{f=1}^{|C|}{[[S^j_{i}]]_{pk_{v}}' } [[sum]]pkv=f=1C[[Sij]]pkv ,然后Solver随机选择一个 n ∗ {n^*} n维向量 V n ∗ 和 V ~ V^{n^*}和\widetilde V VnV ,得到 V n ∗ ⋅ [ [ g ~ i j ] ] p k v 和 V ~ ⋅ [ [ S i j ] ] p k v ′ V^{n^*}· [[ \widetilde g^{j}_{i}]]_{pk_{v}}和\widetilde V·[[S ^j_{i}]]'_{pk_{v}} Vn[[g ij]]pkvV [[Sij]]pkv。最后,求解器发送 [ [ s u m ] ] p k v , V n ∗ ⋅ [ [ g ~ i j ] ] p k v 和 V ~ ⋅ [ [ S i j ] ] p k v ′ [[sum]]_{pk_{v}} ,V^{n^*}· [[ \widetilde g^{j}_{i}]]_{pk_{v}}和\widetilde V·[[S ^j_{i}]]'_{pk_{v}} [[sum]]pkv,Vn[[g ij]]pkvV [[Sij]]pkv到区块链。Veifier得到它们并用skv解密,然后Veifier用pkx加密 V n ∗ ⋅ g ~ i j 和 V ~ ⋅ S i j ′ V^{n^*}· { \widetilde g^{j}_{i}}和\widetilde V·{S ^j_{i}}' Vng ijV Sij ,并发送求和(sum), [ [ V n ∗ ⋅ g ~ i j ] ] p k x 和 [ [ V ~ ⋅ S i j ′ ] ] p k x [[V^{n^*}· { \widetilde g^{j}_{i}}]]_{pk_{x}}和[[\widetilde V·{S ^j_{i}}']]_{pk_{x}} [[Vng ij]]pkx[[V Sij]]pkx到区块链。
在这里插入图片描述
该文章大概内容就是这样
其他以后有时间再补

Logo

鸿蒙生态一站式服务平台。

更多推荐