文章:Privacy-Preserving Byzantine-Robust Federated Learning via Blockchain Systems
背景原因解决方案工作贡献成果预备知识联邦学习投毒攻击投毒攻击分类数据投毒和模型投毒攻击 同态加密 系统模型威胁模型核心系统算法局部计算局部梯度归一化判断梯度权重聚合算法会议来源:IEEE TRANSACTIONS ON INFORMA TION FORENSICS AND SECURITY , VOL. 17,
背景原因
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,.....,pn∗2]]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,.....,pn∗2]]pkv−>[[p22,p32,....pn∗2,p12]]pkv
重复( n ∗ − 1 )次 重复(n^{*}-1)次 重复(n∗−1)次
可以得到 [ [ 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+,.....,+pn∗2
最后我们两个向量相乘 [ [ 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+....+pn∗qn∗]]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=1∣C∣[[Sij]]pkv′ ,然后Solver随机选择一个 n ∗ {n^*} n∗维向量 V n ∗ 和 V ~ V^{n^*}和\widetilde V Vn∗和V ,得到 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]]pkv和V ⋅[[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]]pkv和V ⋅[[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}}' Vn∗⋅g ij和V ⋅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}} [[Vn∗⋅g ij]]pkx和[[V ⋅Sij′]]pkx到区块链。
该文章大概内容就是这样
其他以后有时间再补