基于区块链和联邦学习的边缘计算隐私保护方法
2021-12-08方晨郭渊博王一丰胡永进马佳利张晗胡阳阳
方晨,郭渊博,王一丰,胡永进,马佳利,张晗,胡阳阳
(1.信息工程大学密码工程学院,河南 郑州 450001;2.郑州大学网络空间安全学院,河南 郑州 450003;3.加利福尼亚大学河滨分校,河滨 CA92521)
1 引言
边缘计算是一种将计算、存储资源从云平台迁移到网络边缘的分布式服务架构,它由多个位于云服务器和本地设备间的边缘节点协同完成数据分析任务。由于其更靠近本地设备,因此能够提供时延更小的服务,如自动驾驶、虚拟现实、智慧城市等[1]。但是由于边缘节点通常位于不可信环境中,也面临各种安全和隐私威胁。如本地设备可能添加投毒样本或者将低质量数据发送给边缘节点,边缘节点可能推测本地设备的数据隐私,或者篡改计算结果来破坏协议的执行。因此设计边缘计算隐私保护的新方法需要考虑数据隐私性、计算结果正确性和数据处理过程可审计性3 个方面。
联邦学习[2]作为一种新型的分布式机器学习框架,可以联合多个本地设备在仅共享模型参数的前提下协同训练机器学习模型,能够有效避免本地设备向边缘节点直接传输数据造成的隐私泄露问题。而区块链作为一种分布式账本,以透明的方式记录数据处理过程,且具有去中心化、可追溯以及难以篡改等一系列特性[3],可以满足边缘计算的可审计性需求。它与联邦学习相结合,可以代替中央服务器执行模型参数聚合,避免单点故障攻击问题。鉴于以上优点,近两年陆续有学者基于区块链和联邦学习对边缘计算的隐私保护展开研究。
Kim 等[4]基于区块链框架提出了一种应用于设备端的联邦学习方法,将每轮迭代的本地梯度经过验证和共识后存储在区块中,并分析了端到端时延和最优的区块生成速率。Qu 等[5]通过结合区块链和联邦学习,为工业4.0 中的认知计算技术开发了一种去中心化数据平台,解决数据孤岛和激励机制的问题。Wang 等[6]提出了支持异构模型的区块链联邦学习系统,并设计了线下和线上2 种挖掘方法抵抗拜占庭攻击。但是上述方法均使用工作量证明(PoW,proof of work)作为共识算法,高强度的计算消耗使其难以适用于计算资源有限且宝贵的边缘计算。为此,Lu 等[7]采用轻量级的委托权益证明(DPoS,delegated proof of stake)作为共识算法,并针对车联网中数据共享的安全需求和效率提出了混合区块链结构。上述方法均将模型参数作为交易记录存储在区块链中,这虽然保证了训练过程的可审计性,但是一旦攻击者获取区块链内容,依然可以发起最新的模型提取攻击和模型逆向攻击,从模型参数中推断出训练数据信息。为了进一步提高隐私安全性,Qu 等[8]设计了一种基于数字签名和加密协议的混合身份机制,以防止攻击者窃取区块链中存储的数据信息。但是当联邦学习迭代次数过多时,这种机制将消耗大量的计算开销,难以部署于本地设备中。Zhao 等[9]为了保护家居场景中用户的隐私数据,在卷积层提取的特征中加入差分隐私噪声后再上传至区块链。Lu 等[10]和Qi 等[11]将本地差分隐私技术应用于区块链联邦学习中,通过在原始数据上添加噪声扰动以保护工业互联网和智慧交通领域的数据隐私。但是在带噪数据上训练得到的联邦学习模型普遍存在准确性较低的问题。另外,如果部分参与训练的设备的数据集质量过低或者被攻击者发起中毒攻击,则其上传的模型参数将导致联邦学习偏离正常的训练方向,这将给边缘计算应用带来极大的安全隐患。Liu 等[12]在执行模型聚合前利用包含验证数据集的智能合约自动评估设备上传的更新,以检测是否存在中毒攻击。Short 等[13]基于验证数据集测试加入设备上传的参数后模型准确性是否有所提升,进而筛选出可靠的更新。但是这2 种方法均需假设提前拥有一个与训练数据集同分布的验证测试集,这会增加许多敏感信息领域如医疗等的隐私泄露风险。
综上所述,当前在边缘计算中应用区块链和联邦学习方法存在以下几个问题。
1) 区块链账本的公开透明性虽然保证了联邦训练的可审计性,但是其以明文形式存储的模型参数会被攻击者利用推测本地设备的数据隐私。
2) 本地设备的数据集中一旦存在投毒样本就会威胁联邦学习的正确性。
3) 本地设备的资源有限性要求区块链与联邦学习结合后的效率需要进一步提高。虽然上述文献针对其中个别问题提出了解决方案,但均存在不足。
为此,本文提出了一种基于区块链和联邦学习的边缘计算隐私保护方法,可以在互不信任的本地设备间构建一个安全可靠的智能边缘计算框架。不需要任何可信的中央服务器,多个分布式设备即可实现高效安全的协同训练。主要贡献有以下几点。
1) 设计了一个基于区块链的联邦学习框架,不仅使联邦学习具备防篡改和抗单点故障特性,还提供了激励机制鼓励更多设备参与联邦训练。
2) 提出了一种自适应差分隐私机制,保护参数隐私的同时可根据训练进度自适应调整裁剪阈值,缓解噪声对模型准确性的负面影响。
3) 设计了梯度验证机制,不仅可以防止恶意设备获取额外奖励,还能够检测一定比例的中毒攻击,确保联邦学习更加安全。
2 相关基础知识
2.1 区块链
区块链作为一种去中心化、难以篡改的数字账本,能够在无信任环境下以安全可验证的方式构建分类账,在物联网、大数据、云计算和边缘计算等领域得到了广泛的应用。在区块链中,所有参与节点都可以进行事务的验证和转发,并通过共识算法维护全网一致的分类账,账本中的每个区块记录一系列事务和前一个区块的散列值,从而将当前区块链接到前一个区块。
共识算法是区块链技术的核心。工作量证明是比特币网络使用的共识算法,它要求网络中的每个节点都计算特定的哈希散列值。哈希散列值满足一定条件的节点得到生成新区块的权利。新区块通过验证后会广播给网络中的所有节点以保持账本的一致性。但是这种共识机制会浪费大量的计算资源,因此以太坊提出权益证明(PoS,proof of stake),节点利用持币数以及持有的时间来竞争生成新区块的权利,相比之下避免了不必要的资源浪费,但仍面临易分叉和扩展性的问题。委托权益证明在PoS 的基础上进行了改进,由节点投票选举出特定数目的代理节点负责区块的生成和验证,因此在牺牲部分去中心化特性的情况下加快了区块的确认速度。拜占庭容错算法(BFT,byzantine fault tolerance)来源于拜占庭将军问题,是考虑在有恶意节点的情况下达成共识。它要求所有节点之间两两通信,因此节点数量不能太多,可扩展性较弱。最新提出的Algorand 协议[14]是一个采用纯PoS 共识的公链项目,其结合密码抽签技术和改进的拜占庭共识协议,能够实现快速的交易确认,并且用户数量可无限扩展,被宣称能解决区块链中“可扩展性、安全性和去中心化”的三角难题。其中,1) 可扩展性:Algorand 采用可验证随机函数(VRF,verifiable random function)选出若干个验证者,无论网络中有多少用户,每生成一个新区块只需要在少数验证者上进行验证,具有较高的吞吐量(TPS,transactions per second)。2) 安全性:只有当区块生产者和验证者确定自己被选中并广播相应的证明信息时才会被披露,攻击者无法提前预测,即使发起攻击也无法阻止新区块在网络中传播。3) 去中心化:Algorand 在每一轮中都重新随机选取区块生产者和验证者,具有较好的去中心化性。
由于区块链天然的泛中心分布式可信机制,为构建更加安全的边缘智能计算框架提供了新的思路,可以有效解决本地设备协作时面临的网络安全攻击问题。
2.2 联邦学习
在分布式场景中,传统的机器学习算法要求用户将数据上传至数据中心再进行训练。然而,数据中可能包含隐私信息,部分用户不愿意共享其数据,这就造成了严重的数据孤岛现象,阻碍了机器学习进一步的发展。为了解决这一问题,谷歌于2016 年提出一种新的分布式机器学习框架——联邦学习,用于在移动终端与服务器间建立共享模型,从而在终端数据不出本地的情况下实现数据“可用不可见”。在该框架下,每个分布式终端基于本地数据集训练机器学习模型,然后将模型参数发送给中央服务器。服务器聚合所有上传的参数后得到全局模型,下发给各个终端,用以更新它们的本地模型。假设联邦学习系统中有K个终端,每个终端持有包含个样本的本地数据集DBi(1≤i≤K),则中央服务器的损失函数为
2.3 差分隐私
差分隐私是一种严格可证明的数学框架,其基本思想是通过对函数的输入或输出结果添加精心设计的噪声,使数据集中任意单个记录的修改都不会对输出结果造成显著的影响,因此攻击者不能通过分析输出结果来推测数据集中的隐私信息。相关定义如下。
定义1[15](ε,)δ-差分隐私。令A:D→R为随机算法,D和D′是最多有一条记录不同的2 个数据集,O∈R为算法A的输出,若算法A满足
则称A满足(ε,)δ-差分隐私。其中,ε为差分隐私预算,该值越小说明隐私保护程度越高,但同时对于算法A的精度损失越大;δ表示允许违背严格差分隐私的概率,一般值较小。
定义 2[15]敏感度。对于任意的查询函数f:D→Rd,D为输入数据集,Rd为函数输出的d维向量,则函数f的敏感度为
其中,D和D′为最多相差一条记录的相邻数据集,表示Lp范数。敏感度反映了查询函数f在一对相邻数据集上输出结果的最大变化范围。敏感度越小,则实现差分隐私时需要向输出结果添加的噪声就越少。
定义3[15]高斯机制。若使用L2范数计算函数f的敏感度,则可以通过向函数f的输出添加高斯噪声来实现(ε,)δ-差分隐私,如式(4)所示。
其中,高斯噪声是满足均值为0、协方差为(Δfσ)2I的高斯分布,I为单位矩阵。
差分隐私满足以下特性。
1) 后处理性。若一个算法的输出结果满足差分隐私,则在这个结果上进行的任何操作都不会造成额外的隐私损失。
2) 序列化组合原理。差分隐私算法的序列化组合依然满足差分隐私性质。
3 方案设计
3.1 系统威胁
本节给出在边缘计算中应用联邦学习面临的安全威胁。
威胁1潜在隐私泄露。虽然联邦学习只传输模型参数而不传输原始数据,但是最新的隐私攻击[16]表明通过利用模型参数依然可以推测出本地设备数据的部分隐私信息。
威胁2中毒攻击。恶意设备可以通过篡改原始数据或者提交错误的本地梯度来破坏联邦学习的正确性。
威胁3单点故障攻击。中央服务器一旦被攻击者瘫痪,则整个联邦学习训练就会失败。
下面介绍本文方案中常用的术语和符号。
本地设备。部署在网络边缘的本地设备,如工业物联网中的传感器、智慧城市中的摄像机、车联网中的汽车等,拥有有限的本地数据集和计算能力,希望在保护数据隐私的前提下和其他设备通过联邦学习构建一个更准确的机器学习模型,以提供更加智能的服务。
矿工。即边缘节点,通常配备了一定的计算资源和通信资源,如工业物联网中的边缘服务器、移动通信网中的基站、车联网中的路边单元等。提供区块链中的验证、共识等服务,并由此获取相应的代币作为收益。
事务。即区块链节点间交互的数据记录,比如比特币中事务记录的是资金转移。在本文中,事务记录的是模型的梯度以及相关训练信息。
协同训练。所有设备以相同的初始化参数为起点,共同迭代训练同一个深度学习模型。在每轮迭代中,设备将本地训练得到的模型更新上传给区块链,然后由区块链完成模型聚合和共识,得到的新区块由设备下载以更新本地模型,接着进行下一轮训练。
代币。本区块链中的资产,主要用于激励设备和矿工参加训练。当设备的更新被验证为合法、矿工参与验证或生成新区块时,都能够获取一定数量的代币作为奖励。这种设置已经在很多基于模型定价的场景中[17-18]进行应用。例如,在车联网场景中[19],汽车积极参与联邦训练以获取代币奖励,路边单元提供有偿的区块链服务以增加自己收益。与现有工作不同的是,本文给代币设置一个有效期,即经过一定轮数的训练后,代币即失效。这将用于后面的共识机制中防止财富过度累积。由于本文使用Algorand作为共识协议,因此为了确保安全性,假设恶意代币(即被恶意矿工持有)的数量不超过1/3[14]。
3.2 系统架构
如图1 所示,假设本系统由K个本地设备和若干个边缘节点充当的矿工组成,其中,本地设备可以是汽车、手机或者摄像头等具备部分计算能力的智能终端,拥有包含ni(1≤i≤K)个样本的本地数据集。其一轮完整的训练流程可概括如下。
步骤1所有矿工和设备向任务发布者申请注册,其中,设备注册信息中含有其本地数据集大小。任务发布者为它们分配用于签名的公钥和私钥,根据训练任务创建创世块(即区块链中第一个区块)并通过安全链路分发给所有本地设备和矿工以执行模型初始化。创世块主要包含以下信息:1) 模型初始化参数w0和总训练轮数T;2) 所有矿工和设备用于签名的公钥;3) 所有设备的本地数据集大小ni(1≤i≤K);4) 所有设备和矿工的初始代币数量;5) 代币抵押和奖励函数;6) 随机数种子seed0,后续每轮训练都会根据前一轮训练的随机种子seedt−1生成seedt,主要用于保证共识阶段选举领导者时的随机性(见3.3.3 节)。本文假设创世块中的信息是可靠且不能被攻击者篡改的,这里的任务发布者仅仅起到一个引导训练过程的作用,可由可信权威代替。
步骤2设备在本地数据集上训练机器学习模型,迭代ni次后在得到的梯度上添加差分隐私噪声(详细介绍见3.3.1 节),以应对威胁1。
步骤3设备将带噪梯度、本地运算时间以及数字签名,以区块链事务的形式上传给关联的矿工。本文假设本地运算时间是可信的,可利用Intel SGX 可信硬件技术下的消耗时间证明机制[20]实现。
步骤4矿工收到数据后,首先验证签名的合法性,以防止攻击者对数据进行篡改。若签名合法,则验证梯度的可靠性,并组成验证委员会检测是否存在恶意更新(详细介绍见3.3.2 节),以应对威胁2。
步骤5基于随机种子和代币数量从矿工中选举领导者,负责计算全局梯度并生成新区块(详细介绍见3.3.3 节)。
步骤6验证委员会对新区块的合法性进行验证,并广播通过验证的区块,同步全网的账本(详细介绍见3.3.3 节),以应对威胁3。
步骤7设备从其关联的矿工处下载新区块,从中获取全局梯度来更新本地模型,并从步骤2开始下一轮训练,直至模型收敛或达到最大训练轮数。
本文使用的主要符号如表1 所示。
表1 主要符号
3.3 方案组件
本文方案主要由3 个关键部分实现基于联邦学习和区块链的隐私保护方法,即自适应差分隐私机制、验证和激励机制以及共识协议。下面分别对其进行详细介绍。
3.3.1 自适应差分隐私机制
所有设备在本地数据集上训练得到模型梯度,将其上传给矿工之前,需对梯度做隐私保护处理以应对威胁1。为此,文献[21]和文献[22]分别提出利用门限Paillier 加密算法和Shamir 秘密共享算法来保护本地梯度,但均存在计算开销过大的问题;相比之下,差分隐私技术计算量小,更适用于资源受限的边缘计算设备。文献[11]利用本地差分隐私技术在原始训练数据上添加噪声以保护隐私,但会造成较大的模型精度损失。文献[23]利用全局阈值C裁剪梯度后添加高斯噪声以保护隐私,但未说明阈值C的选取依据。C值对于深度学习模型来说至关重要:C值过大会添加过量噪声,C值过小会过度裁剪梯度,二者都会造成模型精度严重受损。文献[24]令C值取所有设备梯度范数的中位数,但要求服务器获取所有设备的明文梯度,依然面临威胁1 的挑战。为此,本文借鉴RMSProp 优化算法的思想,提出一种适用于本地设备的自适应差分隐私机制,可根据训练过程灵活调整裁剪阈值,以减小噪声对模型精度的负面影响。
RMSProp 优化算法作为梯度下降算法的一种优化,主要通过调整步长来加快收敛速度。其迭代更新计算式为
其中,θ t代表第t轮训练时的模型参数,gt代表模型梯度,η是学习速率,ε0为了确保除数不为零,一般定为10−8,E[g2]t−1用于估计历史梯度的累积平方。鉴于优化过程的连续性和渐进性,历史梯度通常可用于估计当前梯度的值[25]。因此,RMSProp优化算法中的E[g2]t−1可以看作当前梯度的先验知识。
已有算法[26]令阈值来实现近似最优裁剪效果,而依据3.2 节中的训练流程,本文算法中设备在上传梯度前无法获取当前训练轮次的全局梯度。因此本文借鉴RMSProp 优化算法中的思想,利用先验知识E[]t−1预测本轮的全局梯度,并将其作为本轮的裁剪阈值Ct,即,其中,β为本地裁剪因子,先验知识E[]t−1的计算式为
综上所述,在第t轮训练中,设备i(1≤i≤K)在本地端裁剪梯度gi,t并添加噪声的过程可表示为
3.3.2 验证和激励机制
由于本地设备收集的数据中可能包含用户的隐私信息,且训练模型需要消耗计算资源,因此部分设备不愿意参与联邦训练,甚至会出现部分恶意的设备上传虚假参数误导联邦训练等。为了吸引更多的设备参与训练并诚实地执行计算任务,本文利用Multi-KRUM 算法[27]来检测中毒攻击,并根据区块链的特点设计了激励机制。其中,Multi-KRUM 算法可以解决参与分布式梯度下降算法中的R个设备间存在f个拜占庭设备(需满足2f+2 如3.2 节中的训练流程步骤3~步骤4 所述,当矿工收到其关联设备上传的数据后,首先验证签名的合法性来确保数据传输过程中不被篡改。然后判断本地运算时间是否与该设备的本地数据集大小ni成正比,以验证梯度的可靠性,并将可靠的梯度放入事务池中。接着采用可验证随机函数(VRF,verifiable random function)[14]从矿工中选出验证委员会,通过Multi-KRUM 算法过滤事务池中可能由中毒攻击产生的恶意更新。主要步骤如下。 步骤1假设R为事务池中梯度的总数量,f为拜占庭梯度的数量。将每个梯度与其最近的R−f−2 个梯度的欧氏距离相加,作为该梯度的质量得分。 其中,i→j表示属于离最近的R−f−2 个梯度之一。 步骤2选择质量得分最低的R−f个梯度作为合法更新,并对其进行签名,同时删除其余的梯度。 针对区块链中的设备和矿工,分别设计了2 种不同形式的激励:数据奖励和挖矿奖励。其中,1) 数据奖励用于激励本地设备向联邦学习贡献更多的数据集:在设备向矿工上传数据前,先缴纳一定数量的代币作为押金。若设备的梯度被验证为合法更新,由矿工退还设备的押金,并且分发一定数量的代币作为数据奖励,代币数量与该设备的本地数据集大小ni成正比。为了防止恶意设备通过伪造数据集大小来获取更多的奖励,令设备将梯度与本地运算时间一同上传给矿工,通过比较数据集大小与该运算时间来验证可靠性;若设备的梯度被验证为恶意更新,则扣除该设备缴纳的押金,作为惩罚。当该设备的代币数量归零时,将其加入黑名单不允许参与训练。2) 挖矿奖励用于激励矿工从更多的设备中收集数据并参与区块链验证与共识环节:当矿工完成梯度验证或生成新区块时,区块链向其分发一定数量的代币作为挖矿奖励,代币数量与矿工相关联的设备的数据集总量成正比,即,其中,Nmj代表与矿工mj相关联的设备数量。 3.3.3 共识协议 共识协议对于区块链来说至关重要。PoW 通过让所有矿工计算随机哈希值来争夺记账权,已被文献[4-6]采用作为共识协议,但是其存在浪费计算资源、共识效率慢、吞吐量低的问题。Algorand 协议基于PoS 随机选择区块生产者以及验证者,具有较高的共识效率,且可以通过引入可验证随机函数、种子参数等抵抗DDoS 攻击、女巫攻击等,具有较高的安全性,更加适用于计算资源有限、面临更多复杂攻击的边缘计算场景。文献[9]已将Algorand协议应用于智能家居场景,但是其在共识协议中未设计激励机制。本文将矿工设定为工业物联网中的边缘服务器、移动通信网中的基站、车联网中的路边单元等,他们在提供区块链服务时需要消耗一定的计算、存储、通信等开销,因此,为了维持矿工持续性提供区块链服务的积极性,本文在原有Algorand 协议的基础上增加了相应的代币奖励机制来激励矿工维护区块链。协议主要包含3 个步骤。 步骤1领导者选举。在每一轮训练中,利用Algorand 协议中的加密抽签算法从持有合法更新的矿工中随机选举出领导者,主要包含以下2 个函数。 其中,hashlen 代表hash 的长度,说明该矿工有j个子用户被选择,这也代表该矿工的优先级。可见矿工被选举为领导者的概率与其持有的代币数量w成正比。为了避免财富累积,本共识算法中的w只计算在有效期内的代币。通过上述过程,拥有最高优先级的矿工被选举为本轮训练的领导者,其他矿工可以通过证明proof 对其优先级进行验证。 领导者从事务池中获取所有合法更新,并通过联邦平均算法计算全局梯度,如式(10)所示。 然后领导者生成这一轮训练的区块,如图2 所示。除了包含用于链接前一个区块的哈希值以外,还包含该轮的全局梯度、所有合法更新及其签名,以及用于下一轮领导者选举的随机种子seedt+1等。 步骤2委员会验证。验证委员会对生成的新区块进行验证,主要检查其中包含的梯度更新签名是否合法,以及全局梯度计算是否正确等。只有当超过2/3 的委员验证通过时,该区块才被认定为有效,相应的领导者和验证者从区块链中获取一定数量的代币作为挖矿奖励;否则,生成一个空区块。 步骤3邻居广播。委员会中的每个验证者执行Gossip 协议[28]向邻居广播新区块,同步全网的账本。 在给定隐私预算的情况下,如何计算算法在训练过程中的隐私损失十分关键。本文基于Abadi等[23]提出的时刻统计来计算隐私损失。相关定义如下。 定义4[23]隐私损失。令A:D→R为随机算法,D和D′为相邻数据集,A在输出O∈R处的隐私损失为 定义5[23]时刻统计。算法A在λ时刻的时刻统计为 定理1[23](组合性)若算法A由一系列子算法A1,A2,…,Ak组成,则对于任一时刻λ,算法A的时刻统计上界为所有子算法A1,A2,…,Ak的时刻统计之和。 定理2[23](尾界限)对于任意ε>0,若式(14)成立,算法A满足(ε,)δ-差分隐私。 基于定理1,本文联邦学习算法的隐私损失与设备端总数和全局训练轮数成正比。假设设备数量为K,全局训练轮数为T,算法总的时刻统计为α(λ),第t轮训练时设备i(1≤i≤K)的时刻统计为α i,t(λ),则根据定理1 中的组合性,有 其中,αi,t(λ)主要体现在设备在裁剪后的梯度上添加高斯噪声ξ∼N(0,(Ctσ)2I),如式(7)所示。αi,t(λ)的计算过程如下[23]。 由于所有设备在本地添加的噪声ξ∼N(0,(Ctσ)2I)是一样的,因此所有设备的αi,t(λ)也是一样的。在计算得到总的时刻统计α(λ)后,利用定理2 得到算法满足隐私的形式。算法在实际运行过程中,整数时刻λ的取值范围通常为0≤λ≤100。 实验在Ubuntu 18.04 系统下进行,硬件配置为Intel i7-8700K CPU,GTX 1080T GPU,16 GB RAM。使用Go 语言来处理方案中涉及区块链的部分,使用Pytorch 1.4.0 训练深度学习模型和添加差分隐私噪声,并通过go-python v1.0 库搭建Python 和Go的接口。网络结构采用卷积神经网络(CNN,conventional neural network),由2 个5×5 的卷积层、一个全连接层和一个softmax 输出层组成。模型中的权重初始化为从正太分布N(0,0.022)采样的随机值,并将偏差初始化为0。实验数据集采用MNIST和CIFAR10,这2 个数据集可代表本地设备所收集的复杂度中等的数据,也被大量基于边缘计算场景的联邦学习算法[5-7,9]作为测试数据使用。其中,MNIST 是一个包含60 000 个训练样本和10 000 个测试样本的手写数据集,每个样本是一个28×28 的灰度图像,标签为0~9;CIFAR10 是一个包含50 000 个训练样本和10 000 个测试样本的图像数据集,每个样本是一个32×32 的RGB 图像,标签包含“飞机”“狗”“汽车”等10 类普适物体。实验中令RMSProp优化算法中的γ=0.1,η=0.002,ε0=10−6,自适应差分隐私中的G=10−6,β=1.2,σ=4,δ=10−4。在MNIST 数据集上初始裁剪阈值C=4,隐私预算ε=2;在CIFAR10 数据集上C=3,ε=4。为了模拟联邦学习的分布式环境,假设系统中有20 个本地设备,并将实验数据集随机均匀划分为20 份分给每个设备作为本地数据集。设备在本地训练批次大小为64,通过使用pickle 模块,将梯度参数转换为字节流进行传输,默认采用64 bit 的精度。 为了衡量本算法中自适应差分隐私机制在减少隐私预算消耗方面的作用,采用文献[24]中的差分隐私联邦学习算法(DPFL)作对比,即在MNIST和CIFAR10 数据集上分别将裁剪阈值固定为C=4和C=3,记录2 种算法到达指定准确率时所消耗的隐私预算,如表2 所示,其中,εD和εA分别代表DPFL 和本文算法所消耗的隐私预算。 表2 本文算法和DPFL 所消耗的隐私预算 由表2 可知,当准确率相同时,本文算法在MNIST 和CIFAR10 数据集上比DPFL 平均减小了37%和29%的隐私预算,由此证明了本文算法通过自适应差分隐私机制有效减少了隐私预算的消耗。由于隐私预算越大,隐私保护程度越低,为了在模型准确率和隐私保护之间取得平衡,本文算法在MNIST 数据集上令ε=2,在CIFAR10 数据集上令ε=4。 为了衡量差分隐私机制对于算法准确性的影响,给定相同的隐私预算,将本文算法与DPFL 在准确率上进行对比。同时采用原始联邦学习算法作为比较基准。结果如图3 所示。 根据图3(a)可知,在MNIST 数据集上,原始联邦学习算法取得98.8%的准确率,而由于隐私预算ε=2 的限制,本文算法训练至35 轮时停止,准确率达到96.3%,DPFL 算法训练至26 轮时停止,准确率达到93.7%。如图3(b)所示,在CIFAR10 数据集上,原始联邦学习算法取得72%的准确率,而由于隐私预算ε=4 的限制,本文算法训练至54 轮时停止,准确率达到69.2%,DPFL 训练至46 轮时停止,准确率达到67.8%。 由此可见,通过自适应差分隐私机制,本文算法在相同的隐私预算下能够训练更多轮次,达到更高的准确率,仅略低于原始联邦学习算法。因此本文算法适用于对精度要求高、需要隐私保护的应用场景。 系统吞吐量TPS 是评估区块链性能的重要因素,即区块链每秒处理的事务数。由于本文将区块链与联邦学习相结合应用于边缘计算场景,则一个设备向区块链上传的模型梯度等信息代表一个事务,事务在区块链中的处理流程包括梯度验证和共识2 个阶段。统计在不同的设备数量(即不同的事务数量)下,每一轮训练中梯度验证和共识2 个阶段分别消耗的平均时间,如图4 所示。其中梯度验证阶段对应于3.2 节训练流程中的步骤4,共识阶段对应于步骤5~步骤6。 由图4 可知,梯度验证的时间小于共识阶段的时间,这是因为共识阶段需要执行领导者选举、联邦平均以及委员会验证等操作,需要较大的计算开销。但是梯度验证的运行时间随着设备数量的增加而增加,这是由Multi-KRUM 算法的计算复杂度所决定的。 因此,为了更加直观地反映在共识协议中融入梯度验证后对于区块链TPS 的影响,计算在不同的设备数量下,未加入梯度验证的TPS 和加入梯度验证后的TPS。具体地,未加入梯度验证的TPS 的计算式为,加入梯度验证后的TPS 的计算式为,结果如表3 所示。可以看出,梯度验证机制在一定程度上降低了区块链的TPS,且随着设备数量的增加,对于TPS 的影响越大。说明梯度验证机制以牺牲部分TPS 为代价来强化边缘计算的安全性,但是当设备小于一定数量时,TPS 减少率依然在一个可接受的范围内。如设备数量小于50 时,TPS 减少率小于40%。 表3 梯度验证机制对于区块链TPS 的影响 为了进一步探讨区块链与联邦学习结合后对算法运行效率的影响,将本文算法与原始联邦学习算法[2]在运行时间上进行对比,结果如图5 所示,其中,本文算法的训练曲线在隐私预算消耗完毕时截止,原始联邦学习算法的训练曲线在算法收敛时截止。 由图5 可知,当模型收敛时,对于MNIST 数据集,本文算法的运行时间约为原始联邦学习算法的3.4 倍,分别为1 088 s 和323 s;对于CIFAR10 数据集,本文算法的运行时间约为原始联邦学习算法的2.2 倍,分别为1 825 s 和820 s。可见区块链中的共识和验证机制会增加算法的运行时间,但同时为边缘计算提供了更高的安全性和稳定性。因此,本文算法适用于对安全性要求较高的边缘计算场景。 为了测试本方法抵抗中毒攻击的能力,采用文献[29]中的标签翻转攻击生成投毒样本,即更改训练样本的标签并保持样本特征不变,然后将投毒样本分配给指定的攻击者。具体地,对于MNIST 数据集,将样本中的源标签“1”改为目标标签“8”;对于CIFAR10 数据集,将样本中的源标签“狗”改为目标标签“马”。为了消除其他标签的影响,仅使用带有目标和源标签的样本训练二进制分类器,并从测试数据集中随机选择500 个带有源标签的样本测试攻击成功率,即样本的源标签被预测为目标标签所占的比例。 首先将投毒样本的比例分为设置为30%、40%和50%,运行20 次实验,取平均值,并与原始的联邦学习算法[2]进行对比,如图6 所示。 由图6 可知,由于隐私预算的限制,本文算法在MNIST 和CIFAR10 数据集上迭代至一定轮数时停止。当投毒样本为30%时,本文算法在迭代后期能够逐渐收敛至接近于无投毒样本的原始联邦学习。但是当投毒样本为40%和50%时,本文算法难以收敛。因此可认为本文算法能够抵抗30%的中毒攻击。 图7 进一步展示了30%的投毒样本对于原始联邦学习和本文算法的攻击成功率。可见,由于原始联邦学习无法检测中毒攻击,导致攻击成功率几乎一直大于50%。而本文算法的攻击成功率在迭代后期逐渐降至10%以下。这是因为本文算法在3.3.2 节的激励机制中规定,设备一旦被检测出中毒攻击就会被扣除一定数量的代币,且当代币数量归零时不允许参与训练。实验数据表明,本文算法进入迭代后期时,在MNIST 和CIFAR10 数据集上分别有4 个和5 个设备被禁止参与训练,因此本文算法有效降低了攻击成功率。 本文通过结合区块链和联邦学习提出了一种应用于边缘计算的隐私保护方法。利用联邦学习为多设备建立协同训练平台,引入区块链实现训练过程的去中心化和可审计性。针对攻击者对本地设备发起的中毒攻击,设计梯度验证算法检测恶意更新,并通过激励机制鼓励更多设备加入联邦学习。针对网络边缘处潜在的隐私泄露问题,设计自适应差分隐私机制保护参数隐私并减小噪声对模型准确性的影响。在MNIST 和CIFAR10 数据集上进行实验,与原始联邦学习和基于差分隐私的联邦学习进行对比,表明本文算法能以较高的准确性实现隐私保护和抗中毒攻击能力,且无须依赖可信环境和特殊硬件设施。下一步将考虑设计效率更高的梯度验证算法和共识协议,以应用于时延更小的边缘计算场景。3.4 隐私性分析
4 实验过程及结果分析
4.1 隐私预算消耗
4.2 算法的准确率
4.3 吞吐量和运行时间
4.4 抵抗中毒攻击能力
5 结束语