ShieldFL: Mitigating Model Poisoning Attacks in Privacy-Preserving Federated Learning

提出问题

此部分总结ShieldFL论文中提出FL模型中存在的安全问题:

  1. 若对梯度进行加密,则由于加密后的梯度无规则性,则会造成加密后的梯度值轻易绕过检测机制。
  2. 若防御策略需要访问梯度原始值,则不可避免会造成梯度的泄漏。
  3. 同时由于联邦学习是分布式的机器学习,训练的数据来自不同的参与方,这些异构数据产生的梯度本身就会产生较大的差异,这使预防有毒梯度更加困难。

解决方案

针对提出的问题,论文中的解决方案如下:

  1. 利用Two-Trapdoor同态加密算法对明文进行加密
  2. 同时基于余弦相似度来识别恶意梯度,抵御中毒攻击
  3. 设计了拜占庭容错聚合机制来应对异构数据场景

技术背景

此部分主要介绍论文中采用的关键算法,在ShiledFL模型中较新颖的技术点是引用了Two-Trapdoor同态加密算法,下面主要介绍这个算法。

Two-Trapdoor同态加密算法

  • KeyGen(ε) → ( pk, sk)  密钥生成算法,生成公私钥对pk、sk
  • Enc(x,pk) →[[x ]]  加密算法,利用公钥pk加密明文x,得到加密后的结果[[x ]]

  • KeySplit(sk) → (sk1, sk2)  密钥分裂算法,利用此函数将一个私钥sk分为两部分sk1、sk2

  • PartDec([[ x ]],ski ) →[x ]i  部分解密算法,利用分裂后的密钥ski解密,得到解密值[x ]i

  • FullDec([x]1, [x]2) → x  完全解密算法,两个私钥的解密值带入算法中,得到最终完全解密后的明文。

对这个算法进行理解:加密算法只需要用到公钥加密即可,但是在解密的过程中,不是通过一个私钥直接解密,而是需要多个参与方同时参与解密,再将分别解密后的结果进行处理得到明文。

简单来说,这个算法的特点就是,解密过程中需要多个参与方同时参加才能获取明文,增大了解密难度以及要求,提高了加密内容的安全性。

  • HE.Mul([[ x ′ 1]] , [[ x ′ 2]] ) →[[xmul]] 同态加密下密文的乘法运算

  • HE.Trun([[ xmul]] , deg) →[[x]] 这个算法的目的简单来理解就是为了降低密文计算过程中的噪声,提高准确度,用到HE.Mul()就需要用到此算法。复杂来说就是由于该HE算法只能计算则整数,利用Appr(x) =x · deg,将x转换为整数x‘,而x’计算过程中会计算两次deg,因此需要去掉一次deg,提高准确性,如下:

  • x′ 1 ∗ x′ 2 =x1 ∗ deg    ∗x2 ∗ deg    ≈x1 ∗ x2 ∗ deg∗ deg

简单来说,上述就是对密文的乘法算法

联邦学习

联邦学习作为基础知识内容,不过多赘述,一笔带过。

系统模型

此部分介绍ShieldFL系统模型,从系统组成,系统各个组成部分的功能、系统执行的大致流程三个方面介绍:

  • 系统组成

KC:密钥生成中心,负责生成公私钥对。

云服务器S1、S2:通过这两个云服务器之间的通信,来实现对恶意梯度的检测并抵御中毒攻击,并对梯度进行聚合,同时传输过程中数据均为加密值。该模型安全架构的主要实现策略就是在这两个服务器上设计实现的。

参与方User:参与联邦学习训练的用户组成。

  • 系统流程

见下图中的序号顺序即位系统执行的大致流程。

系统设计

概述

        在系统设计这一部分,主要主要介绍的是该模型设计过程中主要思想。这些部分是该模型特有的地方,也就是模型的论文的创新点,且具有一定的学习意义。

        在此模型中,可以概括为下面三个部分,Setup、Local Training、Privacy-preserving strategy。Setup阶段是模型开始进行联邦学习之前的进行的,主要用于一些初始化操作分发密钥。Local Training则是联邦学习中进行模型训练的阶段。Privacy-preserving strategy是该模型最具有创新的地方,在不泄漏任何有用信息的情况下,实现了归一化的判断,余弦相似度的计算,识别恶意梯度,同时计算置信度,并实现稳定的聚合算法。

Setup 阶段

简单来说,此阶段就是进行密钥分发,参与方User、服务器S都会分发到一个密钥:

从算法详细看来,在Setup阶段,主要任务是两个:

  1. 密钥分发Key distribution
  2. 模型分发Model distrubution

密钥分发:生成一个公私钥对sk、pk。同时将私钥sk进行分裂,对于云服务器之间,服务器与用户之间均会分裂一次并进行分发。

模型分发:用户从云服务器下载加密模型利用私钥解密一次,同时从S1获取S1解密一次后的模型,将这两次解密后的结果带入FullDec得到解密后的全局模型W。

Local Training 阶段

简单来说,此阶段就是对各个参与方利用本地数据对全局模型进行训练的道本地梯度g,并将本地梯度进行加密得到 [[g]]

从算法详细来看,Local Training阶段有三个部分组成:

良性训练Benign training

梯度归一化Gradient normalization

中毒攻击Model poisoning

良性训练Benign training:就是正常的训练过程,Ui利用本地对模型全局模型W进行训练得到局部梯度gi

梯度归一化Gradient normalization:将梯度向量转换为单位向量(长度为1的向量)

中毒攻击Model poisoning:设计了恶意参与者产生恶意的梯度对模型进行攻击,恶意梯度可能不会进行归一化,而是加密后直接上传,利用加密增加其隐蔽性。

Privacy-Preserving Defense Strategy阶段

简单来说,此阶段做了三件事,归一化判断、余弦相似度计算、聚合局部梯度。

但是需要思考几个问题,梯度是加密的,如何进行归一化判断?如何计算余弦相似度呢?如果直接解密计算就会造成隐私泄漏,那么能不能在加密的情况下实现计算呢?

下面详细介绍这几个算法,从算法中可以体会到模型设计的巧妙之处,如何通过两台云服务S1和S2实现全程加密通信并完成中毒梯度的检测,以及相似度的计算。

归一化判断Normalization judgment

相似度计算Secure cosine similarity

拜占庭容错聚合Byzantine-tolerance aggregation

Normalization judgment

首先明确目的:利用S1和S2两台服务器,实现梯度向量内积的计算判断是否等于1,且在这个过程中不能要确保隐私安全,包括两台服务器也不能知道明文。

通过SecJudge算法进行归一化判断,具体算法实现见下图,在这里我主要介绍其思想:

算法实现:

1、S1首先接受到加密的梯度[[gi]],S1会对向量增加一个噪声rk,将梯度中加入噪声

2、再将这个加入噪声后的梯度发送给S2

3、S2收到加入噪声后的梯度并和S1一同对其进行解密得到g‘i,并计算内积发送给S1

安全性分析:注意这里对梯度进行了解密,这个过程中S1对其进行第一次解密,此时还是处于密文状态,最后发给S2进行FullDec实现完全解密,此时只有S2知道梯度的完全解密值,但是S2不知道噪声,因此无法得知原梯度值,同时虽然S1知道噪声,但是不知道梯度解密值,因此这个过程是安全的。想要攻击就必须同时攻击两台服务器,获取噪声,以及解密后的加入噪声的梯度值,这不切实际,因为这样相当于两个密钥均泄漏了可以直接解密。

4、S1通过S2发来加入噪声后的梯度内积,以及噪声,可以在不解密的情况下计算出[[sum]]值。

5、最后解密判断sum值是都归一化即可。

Secure cosine similarity

明确目的:在没有任何一方知道明文的情况下,实现计算两个梯度向量的余弦相似度。

算法思想:

1、S1接受到两个加密的梯度向量[[ga]]、[[gb]],向两个向量中加入噪声rk,得到[[g‘a]]、[[g’b]]。

2、S1将加入噪声后的梯度向量进行一次解密后发送给S2。

3、S2将加入噪声后的梯度向量完全解密,得到g'a、g'b,并计算其余弦相似度cos’ab。

4、S2将cos’ab加密后发送给S1,S1利用加密后的余弦相似度[[cos’ab]],和噪声rk,计算出原向量的余弦相似度[[cosab]]

5、S1发送给S2进行一次解密,S1在进行一次解密得到余弦相似度cosab。

注:在这个过程中没有泄漏任何梯度信息,S2接收到的梯度解密值为加入噪声的。

Byzantine-tolerance aggregation

明确目的:找出恶意梯度,同时让低质量的梯度在聚合时起到较小的作用,而高相似度的梯度聚合时起到较大的作用。

算法思想:

1、选择判断梯度好坏的基准梯度:上一次迭代的聚合梯度中,选择与局部梯度中具有最低余弦相似度的毒性基线[[g∗]],这样做是为了识别本轮中潜在的毒性梯度。选出了上一轮较差质量的梯度,在本轮中与这个梯度越相似说明更有可能是恶意梯度。

2、相似度测量:利用Secure cosine similarity算法计算:定义噪声向量,两个梯度均加入噪声值,解密一次发送给S2,S2解密得到加噪声后的两个梯度,计算余弦相似度cos1,将cos1加密发送给S1,S1利用[[cos1]]和原加密梯度向量即可求出,原梯度向量余弦相似度cos

3、置信度设置:接着,计算置信度ηj = 1 * deg - cos j,而不是丢弃异常梯度。这个置信度被用作估计所有局部梯度的判别器。余弦相似度越高,置信度越低,权重越小。

4、安全聚合:S1使用置信度ηj进行安全聚合,计算总置信度η,并用于加权所有局部梯度。最终的聚合梯度为[[g(t)]]=[[g(t)1]]η1·,...,·[[g(t)n]]ηn,并通过HE.Trunc函数进行修剪。其中g(t) = ∑ni=1 ηi / η · g(t)i。

系统总结

        此模型中最具有创新意义的地方是第四步,在不泄漏任何有用信息的情况下实现了梯度归一化的判断,以及余弦相似度的计算,同时为后续进行稳定的聚合算法提供了前提条件。

  • 20
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

0ops7

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值