0
Items : 0
Subtotal : ¥0.00
View CartCheck Out

Biscotti: 用于私密和安全联邦学习的区块链系统

作者与实验室介绍

第一作者:Muhammad Shayan

不列颠哥伦比亚大学网络系统安全(NSS)实验室,主要研究方向为分布式多方系统中的隐私和安全领域。

通讯作者:Ivan Beschastnikh

不列颠哥伦比亚大学计算机科学系副教授,Systopia lab和Software Practices Lab (SPL)成员,研究方向为分布式系统与分布式多方机器学习,其主要学术出版涵盖分布式系统、区块链、机器学习等多个领域。他在顶级会议和期刊如SOSP、OSDI、ACM TOSEM、IEEE TDSC上发表了涉及诸如分布式系统模型编译、联邦学习、区块链共识、深度学习安全等前沿主题的论文。

实验室介绍:

不列颠哥伦比亚大学网络系统安全实验室(Networks, Systems and Security lab)现名为Systopia lab。实验室研究涉及操作系统、分布式系统、安全性、数据来源、程序分析等领域,在顶级系统、网络、安全和机器学习会议和期刊上共发表了127篇文章。

01

背景

多方机器学习方式,如联邦学习的出现可以解决共享数据的机器学习问题,通过一个可信中央节点,可以聚合各个节点的梯度,并训练出一个顶层模型。但随着信息泄露攻击的发展,每个参与训练的节点自己的梯度也成为了隐私,横向联邦学习因为需要共享梯度,如果中央节点是好奇的,或者参与训练的底层模型是恶意的,都会导致严重的安全问题,因此传统的联邦学习也不再安全。

针对上述联邦学习中存在好奇节点和恶意节点的问题,本文将联邦学习与区块链相结合,将区块链作为分布式账本,利用Multi-Krum聚合、shamir秘密共享、密码签名等技术实现了在不可信的P2P环境下的具有隐私保护和安全聚合效果的联邦学习,称为Biscotti。

02

动机

目前以联邦学习为代表的多方机器学习系统在对等网络下主要面临三种攻击:

投毒攻击:参与方通过投喂恶意数据,致使本地训练的模型在特定数据集中受损,表现为模型精确率下降、或留有数据后门,从而影响顶层模型的效果。

女巫攻击:在对等网络中,一个恶意节点可以冒充多个用户,从而利用伪装的多个身份进行恶意攻击,影响顶层模型的梯度聚合,从而降低或损害模型性能。

信息泄露攻击:恶意节点获取受害者本地模型提交给顶层模型的梯度,通过主动的对抗性机器学习或者被动的推测攻击,从而获取关于受害者本地模型的隐私信息,如模型参数、数据集标签等。

因此,本文想要实现在不可信的P2P环境下的具有隐私保护和安全聚合效果的联邦学习,需要同时解决上述三种攻击。

03

贡献

文章提出了两个主要贡献,第一个是针对动机中提到的三个问题,本文分别提出了对应的解决办法:

针对投毒攻击,本文提出使用Multi-Krum算法实现参与全局模型更新的本地模型的更新是否正常,通过算法筛选,选择出所有本地模型更新中大多数的更新方向,从而可以有效排除掉模型中的恶意更新。

针对女巫攻击,本文提出POF共识机制,并利用使用随即可验证函数(VRF)来验证节点身份,实现P2P系统中的权益管理,从而排除掉针对全局模型更新没有贡献的节点,从而排除女巫攻击的可能。

针对信息泄露攻击,文章提出使用预承诺和差分隐私的方式实现Multi-Krum中的计算,并在最终聚合更新时使用秘密共享,使得任何节点无法直接得到单个模型的更新。

第二个主要贡献是将多种现有技术融入到一个 P2P 系统中,如多项式承诺、Shamir 秘密分享等,最终整合成了一个完整的具有隐私计算和安全聚合能力的联邦学习模型,并且完成了部署实验,证明了系统的可行性。

04

系统概述

Biscotti 的设计有以下目标:(1) 收敛到最佳全局模型(在联邦学习环境中没有对手的情况下训练的同一模型),(2) 通过验证对等模型更新来防止中毒,(3) 保持对等训练数据的私密性从而防止信息泄漏攻击,(4) 防止串通同行在没有获得足够权益的情况下影响全局模型。

一、系统角色

Biscotti系统中的节点一共有四个角色:

1. 参与训练的节点:此类角色的节点负责读取分布式账本上最新的区块内容,获取全局模型参数,并根据本地数据集进行本地模型的训练,并将获得的本地模型的训练更新通过后续的加噪、验证、并按照一定的条件进行最终顶层模型的安全聚合策略;

2. 噪声委员会:此类角色负责给参与训练的节点的本地模型更新添加噪声,以实现后续验证委员会的计算中的隐私性;

3. 验证委员会:验证委员会负责筛选添加噪声的本地模型更新,使用Multi-Krum算法来选出最多节点更新的方向,作为最终顶层模型的更新方向,并为对应的节点的更新承诺签名;

4. 安全聚合委员会;此角色的节点

所有角色中,噪声委员会的成员存在于参与训练的节点中,但验证委员会和安全聚合委员会只能由其他节点单独任职,这是为了防止可能的共谋攻击。

二、系统角色选举方法

在 Biscotti 的每次迭代中,由对等权益加权的一致哈希为系统中的某些对等点指定角色(噪音者、验证者、聚合者)。一个哈希环中的面积由文章提出的每个节点POF的大小比例分配,节点权益越大,其在哈希环上所占的面积越大。如下图所示。

在一轮迭代中,所有节点的验证和聚合委员会都是相同的,但每个节点的噪声委员会都是唯一的。在选举验证和聚合委员会时,最后一个区块的初始 SHA-256 哈希值会被重复重新哈希:每个新的哈希结果都被映射到哈希环上,其中环的部分根据节点的权益按比例分配给节点。重复散列,直到获得正确大小的验证者/聚合者委员会。而在选举噪声委员会时,节点通过可验证随机函数 (VRF) 执行节点自身的密钥 SKi 和最后一个块的 SHA-256 哈希来计算出一个哈希,再利用这个哈希进行一致哈希,为自己找到一个独特的委员会。凭借节点自身的密钥,计算出的哈希对于节点来说是唯一的,从而导致不同节点有不同的委员会。

三、系统一次迭代模型

Biscotti系统一次迭代模型如下图所示。

在每次迭代中,对等节点都会在本地计算 SGD 更新(上图中的步骤1)。由于 SGD 更新必须保持私密,因此每个对等方首先使用差分私有干扰来屏蔽其更新。该噪声是从每个客户端特有的一组噪声对等体中收集的,并由VRF(步骤2和3)选择。被屏蔽的更新由验证委员会验证,以防止中毒。验证委员会中的每个成员都签署了对同伴未屏蔽更新的承诺,如果它通过了 Multi-Krum(步骤4)。如果委员会的大多数成员签署了更新(步骤5),则已签署的更新将分为 Shamir 秘密股份(步骤6)并交给聚合委员会。聚合委员会使用安全协议来聚合未屏蔽的更新(步骤7)。所有为最终更新贡献份额的同行,以及为验证和聚合委员会选择的同行,都将获得系统的额外股份。更新的聚合被添加到新创建的区块中的全局模型中,该区块将传播到所有节点并附加到账本中(步骤 8)。使用更新的权益,节点继续重复(步骤 1)。

四、区块链设计

系统中区块链作为分布式账本存在,其设计如下图所示。

每个块都包含一个指向其前一个块的指针,作为其内容的加密哈希值。除了前面的块哈希指针外,Biscotti 中的每个块还包含来自多个对等节点的 SGD 更新的聚合 (∆w) 以及迭代 t 处全局模型 wt 的快照。新附加到账本的区块存储多个对等节点的聚合更新。为了验证聚合是否是诚实计算的,需要在块中包含单个更新。然而,单独存储它们会泄露有关个人私人训练数据的信息。文章通过使用多项式承诺来解决这个问题。通过计算多项式承诺的等式是否成立,可以验证更新列表是否等于等于聚合总和。

五、噪声协议

噪声协议为了防止信息泄露攻击,节点使用差分隐私,通过添加从正态分布中采样的噪声,在验证期间隐藏其更新,确保每个步骤都是差分私有的。使用预先承诺的噪音来阻止中毒。

对于一个可能期望运行特定迭代次数T的ML工作负载,每个节点生成T个噪声的噪声向量,并将向量提交到分类账中,存储一个大小为N的T的表。当一个节点准备在一次迭代中贡献更新时,它运行噪声VRF,并与每个噪声节点取得联系,请求噪声向量。然后节点将得到所有噪声覆盖到原始更新上,成为差分隐私的模型更新,从而防止攻击者窃取隐私消息。

六、验证协议

验证节点在接收到的更新集合上运行Multi – Krum,通过接受每轮接收到的更新中的前大多数来过滤恶意更新。每个验证者从每个节点处接收以下信息:

1. 加噪以后的本地更新;

2. 原始本地更新的预承诺;

3. K个子噪声的承诺集;

4. 证明这K个子噪声提供节点身份的VRF proof。

当一个验证者收到一个节点的掩码更新时,它可以利用承诺的同态性质来确认掩码SGD更新与未掩码更新和噪声的承诺是一致的。如果下面的等式成立,则掩码更新是合法的:

当验证者收到足够多的节点更新后,验证节点使用Multi – Krum算法选择最佳更新,即大多数节点更新的方向,如下图所示,其中图中的点代表本地节点训练以后提供的针对最新全局模型的更新方向,红色的点代表大多数节点所选择的更新方向,蓝色的点代表非大多数节点的更新方向,箭头代表使用Multi-Krum算法以后顶层模型所选择的更新方向。

七、安全聚合协议

所有从验证阶段获得足够签名数量的节点就会提交其本地模型更新以聚合到全局模型中。顶层模型的更新方程可以改写为:

其中wt是第t次迭代后顶层模型的参数,wt+1是第t+1次迭代后顶层模型的参数。

具体说来,每一个聚合节点会收到所有拥有足够签名数量的训练节点的以下信息:

其中,C是参与聚合的本地模型其原始更新的预承诺集合,用于验证处理后新块的最终聚合的正确性;Sm,i是每个本地模型原始更新的秘密份额,witm,i是验证秘密份额属于C中对应承诺的更新;而sig则是用于验证C在验证集中具有多数的签名,确保C通过了验证阶段。

聚合委员会中只要有节点收到了所有的秘密份额,则将它进行相加得和,将秘密份额之和使用gossip协议传播给所有的验证节点。最终,最先得到足够多验证节点的中间信息的节点就能够按照秘密共享的性质计算出顶层模型这一轮次的更新,并以此创建新的区块,并将此区块传播给Biscotti系统中的所有节点,从而达成区块链共识。

05

实验部分

文章的实验部分有以下目标:

(1)比斯科蒂对中毒攻击具有鲁棒性;

(2)比斯科蒂保护了单个客户端数据的隐私;

(3)比斯科蒂具有可扩展性和容错性,可用于训练不同的ML模型。

文章为了在分布式环境中进行实验,将Biscotti部署在20台Azure A4m v2虚拟机上,拥有4个CPU核心和32 GB的RAM。文章在每个VM中部署了不同数量的节点。VM的传播遍及六个地区:美国西部、美国东部、印度中部、日本东部、澳大利亚东部和西欧。每次实验执行100次迭代,并记录全局模型的测试误差。为了评估比斯科蒂的防御机制,文章从先前的工作中运行了对联邦学习的信息泄漏和中毒攻击,并在各种攻击场景和参数下测量了它们的有效性。文章还通过在不同的委员会规模下分离系统的特定组件来评估系统设计的性能影响。下图是文章的默认实验参数与数据集。

一、投毒攻击容忍实验

为了评估攻击的成功与否,文章将攻击率定义为错误预测的目标标签的比例。攻击率为 1 表示攻击成功,而接近零的值表示攻击不成功。实验研究了 Biscotti 成功防御中毒攻击所需的不同参数设置,并与联邦学习基线相比,评估其在 30% 恶意节点攻击下的表现。下图显示了 Biscotti 受到不同数量的投毒者攻击时的总执行时间和最终的攻击率。虽然理论证明Biscotti能够抵御高达30%的投毒者的投毒攻击,但Biscotti甚至在对抗 35%的投毒者时也表现良好。超过35%,Multi-Krum无法阻止中毒攻击的发生,从而影响最终模型性能和总执行时间。

文章将 30% 的节点引入具有相同恶意数据集的系统:对于信用卡数据集,他们将所有默认值标记为非默认值,对于 MNIST,这些节点将所有 1 标记为 7。上图显示了与联邦学习相比的测试误差。结果表明,对于这两个数据集,中毒的联邦学习部署难以收敛。相比之下,Biscotti在测试集上的表现与基线未中毒的联邦学习部署一样好。与未中毒的联邦学习相比,Biscotti需要更多的迭代次数才能收敛。Biscotti的收敛速度较慢,因为使用了由 3 个节点组成的小型验证委员会,这使得中毒节点能够经常控制委员会的多数成员,并接受其他恶意节点的更新。随着时间的推移,诚实的节点获得足够的权益,Biscotti 最终收敛,从而减少了系统中恶意节点的影响。在这个实验过程中,使用恒定的 +5 权益更新函数,诚实客户的权益从 70% 增加到 87%。对于这个实验,我们将节点数量增加到 200,如上图所示。

为了证明委员会规模对攻击下收敛的影响,文章在 MNIST 数据集上重新运行了实验,其中验证和聚合委员会规模更大,为 26 个对等点,我们分析确定该委员会规模足够大,可以针对对手提供保护系统中30%的股份。

二、性能、可扩展性和容错能力实验

文章评估Biscotti中每个阶段的开销,并研究随着对等点数量的增加而产生的影响。文章还通过扩大不同委员会的规模来衡量Biscotti的表现,并将其表现与联邦学习进行比较。最后,文章评估客户流失是否对Biscotti的收敛产生影响。

为了分解Biscotti的开销,文章在不同数量的节点上部署了Biscotti来训练MNIST softmax模型。下图捕获了算法每个主要阶段所花费的时间:从噪声客户端收集噪声、通过MultiKrum进行验证和签名收集以及安全聚合SGD更新。下图显示了在3次运行中部署40、60、80和100个节点时每个阶段的每次迭代的平均成本。

结果表明,当改变系统中对等点的数量时,每个阶段的成本几乎保持不变。Biscotti大部分时间都花在聚合阶段,因为它要求聚合器收集所有已接受更新的秘密份额,并相互共享聚合份额以生成块。

当我们改变噪声器/验证器/聚合器集的大小时,文章评估 Biscotti 的性能。为此,文章在 Azure 上部署Biscotti,其MNIST数据集固定大小为100个对等点,并且仅改变每个SGD更新所需的噪声器数量、每个验证委员会使用的验证器数量以及安全聚合中使用的聚合器数量。

结果表明,增加噪声、验证器或聚合器集的大小会增加每次迭代的时间。由于必须联系其他同行以确定总噪声,因此噪声委员会的迭代时间略有增加。增加聚合器的数量会导致更大的开销,因为秘密共享在更多节点之间交换,并且恢复聚合需要更多节点之间的协调。最后,大量验证者导致聚合阶段频繁超时。聚合器会等待,直到达到更新超时。

最后的基线实验,文章将Biscotti与原始联邦学习基线进行比较,其中使用5个噪声器、26个验证器和26个聚合器执行。在联邦学习中,我们从每轮随机选择的 35% 节点接收更新,而在 Biscotti 中,我们在块中包含前 35% 已验证的更新。两个系统的收敛如下两个图所示,分别显示时间和迭代次数。在此部署中,Biscotti 花费的时间比联邦学习长约 13.8 倍(20.8 分钟 vs 266.7 分钟),但在相同的 100 次迭代后实现了相似的模型性能(92% 准确率)。

Biscotti的P2P设计的一个关键特征是它能够适应节点流失(节点加入和故障)。文章通过与50个对等节点一起执行信用卡部署来评估 Biscotti对节点流失的弹性,以指定的速率随机失败一个节点。在一个指定的时间间隔内,随机选择一个节点使其失效。在下一个时间间隔内,一个新的节点加入网络,从而保持50个Peer节点的恒定总数。下图显示了不同流失率的收敛时间。

可以看到,当流失率增加到35个节点/分钟时,系统不会收敛。即使有客户流失,Biscotti在实现全球目标方面也有不错的表现;文章发现 Biscotti 对每分钟 32 个节点的流失率具有弹性(每1.875秒有 1个节点加入,1个节点失败)。

06

总结

大规模的多方机器学习和用于可扩展的共识性分布式账本是近年来两个流行的方向。Biscotti的设计处于它们的交汇处。据文章统计,这是截止文章发布以来第一个通过设计安全的第1层分布式区块链账本来提供隐私保护P2P机器学习的系统。与以前的工作不同,文章不依赖集中式服务、可信的执行环境或专用硬件来提供对对手的防御。在文章的评估中,证明了Biscotti可以在200个对等节点之间协调P2P 机器学习,并产生一个在效用上与联邦学习相似的最终模型。

这篇文章也存在一定的局限性:

1. 通信开销:由于验证和聚合阶段需要大量的通信开销,Biscotti 目前无法扩展到具有数百万个参数的大型深度学习模型。

2. 顶层模型的信息泄露:由于分布式账本中的更新没有添加任何噪音,因此Biscotti容易受到利用模型本身隐私泄漏的攻击。

3. 权益限制:节点的权益在他们被选为噪音者、验证者或聚合者的机会中起着重要作用。文章假设一个大的利益相关者不会破坏这个系统,因为他们通过参与积累了更多的股份,并且他们的股份与培训结束时的金钱奖励挂钩。然而,恶意客户可能会伪装成诚实的节点来积累股份,并最终转向恶意行为来破坏系统。

Leave a Reply