基本信息
标题:Olive: Oblivious Federated Learning on Trusted Execution Environment Against the Risk of Sparsification
作者:
- Fumiyuki Kato(京都大学)
- Yang Cao(北海道大学)
- Masatoshi Yoshikawa(大阪成蹊大学)
摘要:论文结合联邦学习(FL)和可信执行环境(TEE)提出了一种隐私保护的FL方法。通过在服务器端实现TEE,可以在不暴露客户端梯度信息的情况下进行FL。然而,TEE的漏洞需要考虑,特别是内存访问模式泄露的风险。论文主要贡献包括理论分析TEE在FL中的漏洞,设计推断攻击,以及提出防止内存访问模式泄露的高效聚合算法。实验结果表明,该方法在实际规模上运行高效。
1.联邦学习
1.1 经典机器学习
在开始讨论联邦学习之前,让我们先快速回顾一下目前大多数机器学习的工作原理。
在机器学习中,我们有一个模型和数据。模型可以是一个神经网络(如图所示),也可以是其他东西,比如经典的线性回归。我们使用数据来训练模型,以完成一项有用的任务。任务可以是检测图像中的物体、转录音频或玩围棋等游戏。
实际上,我们使用的训练数据并不来自我们训练模型的机器。它是在其他地方创建的。
它源于智能手机上用户与应用程序的交互、汽车上传感器数据的收集、笔记本电脑上键盘输入的接收,或者智能扬声器上某人试着唱的歌。值得一提的是,这个 “其他地方 “通常不只是一个地方,而是很多地方。它可能是多个运行同一应用程序的设备。但也可能是多个组织,都在为同一任务生成数据。因此,要使用机器学习或任何类型的数据分析,过去使用的方法是在中央服务器上收集所有数据。这个服务器可以在数据中心的某个地方,也可以在云端的某个地方。
1.2 经典机器学习的局限性
我们刚刚看到的经典机器学习方法可以在某些情况下使用。很好的例子包括对假日照片进行分类或分析网络流量。在这些案例中,所有数据自然都可以在中央服务器上获得。但这种方法并不适用于许多其他情况。例如,集中服务器上没有数据,或者一台服务器上的数据不足以训练出一个好的模型。
传统的集中式机器学习方法无法满足现实世界中大量极为重要的使用案例,原因有很多。这些原因包括:
- 法规
- 用户偏好
- 数据量
1.3 联邦学习
联邦学习简单地颠覆了这种方法。它通过将训练转移到数据上,而不是将数据转移到训练上,在分布式数据上实现机器学习。下面是一句话的解释:
- 集中式机器学习:将数据转移到计算中心
- 联邦式(机器)学习:将计算转移到数据上
1.3.1 初始化全局模型
在服务器上初始化模型,做法与传统机器学习一样。
1.3.2 将模型发送到多个连接的组织/设备(客户节点)
将全局模型的参数发送到连接的客户端节点。这是为了确保每个参与的节点都是用相同的模型参数。每次只会选择几个节点进行训练而不是所有节点,因为选择越来越多的客户端节点会导致收益递减,因为每个新加入的节点对全局模型改进的贡献会逐渐减少。
1.3.3 在本地对每个机构/设备(客户端节点)的数据进行模型训练
现在所有客户端节点都有了最新版本的全局模型参数,他们开始进行本地训练,也就是使用本地模型训练本地数据集。
1.3.4 将模型参数更新返回服务器
经过本地训练之后,每个客户节点最初收到的模型参数都会略有不同,这是因为本地数据集不同。客户端节点将这些模型更新发送回服务器(可以使模型参数也可以是模型梯度)
1.3.5 将模型更新聚合到新的全局模型中
服务器从选定的客户端节点接受模型更新。为了得到一个单一的模型,我们必须从客户端节点收到所有的模型参数更新合并起来,这个过程称之为聚合。有许多种不同的方法,最常见的是加权平均。
然后重复以上步骤直至收敛
2.差分隐私
3.可信执行环境(TEE)
TEE 是一种具有运算和储存功能,能提供安全性和完整性保护的独立处理环境。其基本思想是:在硬件中为敏感数据单独分配一块隔离的内存,所有敏感数据的计算均在这块内存中进行,并且除了经过授权的接口外,硬件中的其他部分不能访问这块隔离的内存中的信息。以此来实现敏感数据的隐私计算。
Introduction
原文
在当前的大数据时代,保护隐私的机器学习(ML)技术面临的挑战越来越明显,GDPR[24]的提出就是一个例子。联邦学习(FL)[43]是一种创新的隐私保护ML范式,已在生产中进行了测试[8,53,55]。通常,在FL中,服务器不需要收集用户的原始数据(我们交替使用参与者和客户端),它只收集每一轮模型训练期间在用户的本地数据上训练的梯度(或模型参数delta)。然后服务器将收集到的梯度聚合到全局模型中。因此,FL有望使数据分析人员避免收集和管理包含敏感信息的训练数据的费用和隐私风险。
分析
GDPR:欧洲通用数据保护条例
原文
然而,多项研究表明,由于FL的分散性,它容易遭受各种类型的攻击。其中研究最广泛的漏洞之一是,在聚合阶段,一个不可信的服务器对客户端的敏感训练数据进行推断攻击[21,63,72,79,84]。这种攻击是由于每个客户端都需要与中心聚合服务器共享原始梯度信息,这导致了训练数据的隐私泄露风险,使其成为脆弱的攻击面。这些攻击凸显了FL在不可信服务器上运行的隐私/安全问题。
利用可信执行环境(Trusted Execution Environment, TEE)增强FL是实现隐私保护FL的一种很有前途的方法,近年来受到了广泛关注[45,50,77,78,80]。TEE[18, 57]是一种安全硬件技术,可以在不可信的环境中进行安全计算,而不会将数据或处理暴露给主机(即操作系统或hypervisor)。TEE保证了机密性、完整性、可验证性和远程证明等功能,充分证明了它在FL[29,77,78]中的不可信服务器端使用的合理性。梯度通过安全通道传输到TEE,并在机密内存中进行安全计算,从而消除了上述攻击面。
从几个角度来看,TEE的使用是有利的。尽管基于成对屏蔽的安全聚合(SA)提供了类似的功能,但它牺牲了可用性[10,19,32,40]。这需要在多个客户端之间生成耗时的同步分布式掩码,并且在参与者异步/dropouts[46]方面缺乏鲁棒性,这很难处理,并可能阻碍普通医师的实现。此外,SA不灵活,很难进行扩展,例如拜占庭抵抗[80]和异步[50]。此外,将梯度稀疏化应用于具有SA的FL需要随机稀疏化[19]或多个客户之间共同的稀疏化索引[40],因为成对约束,影响了训练质量。解决这些问题的一个简单而重要的方法是使用TEE,尽管它需要额外的特殊硬件。
分析
SA基本思想: 通过加密技术确保在数据聚合过程中,即使服务器或其他聚合节点不可信,也无法访问或推断出个体数据。
原文
此外,带TEE的FL解决了差分隐私FLs[20,22,44]中的效用差距,即本地DP (LDP)和中央DP (CDP)之间的效用差距。最近研究的Shuffle DP-FL[20,23,38]旨在将最佳的LDP-FL信任模型[73,82]与CDP-FL[3,22,44]的模型效用相结合,但在效用[20]方面与CDP-FL存在差距。如图1所示,TEE促进了在不受信任的服务器上的安全模型聚合,这确保了服务器只能观察到差异私有的模型。在不信任服务器的情况下(如在LDP-FL中),模型实用程序与传统的CDP-FL是等价的,因为TEE中可以实现任何DP机制,而SA[32]则限制了该机制。由于结合CDP-FL和TEE是我们所提出方法的有趣用例之一,为了完整
分析
DP:差分隐私
原文
然而,实现一个服务端TEE来实现上述好处需要仔细分析TEE的漏洞。众所周知,由于侧信道攻击[51,71,76],几个严重的漏洞会影响TEE,即使加密也会导致隐私泄露。特别地,这类攻击可以暴露机密执行中依赖数据的内存访问模式,使攻击者能够窃取敏感信息,如RSA私钥和基因组信息[12]。从这些记忆访问模式中可能被窃取的特定信息是特定于领域的,对于FL还不知道,尽管一些研究试图将TEE用于FL[16, 45, 47, 77, 78]。因此,在这种情况下,对发球上FL的侧信道攻击的威胁程度和可能的攻击类型仍然是关键的开放问题。
分析
目前存在的漏洞:侧信道攻击,这些攻击可以通过内存访问模式泄露敏感信息。
侧信道攻击:利用计算过程中产生的非直接信息(如电磁泄漏、功耗、时间分析和内存访问模式)来推断机密数据。
内存访问模式泄露:在TEE中,尽管数据本身是加密的,但内存访问模式可能仍然是可见的。例如,当一个应用程序访问内存时,不同的内存地址可能会暴露出某些模式,这些模式可以被攻击者利用来推断出数据的某些特征或内容。
原文
Oblivous algorithms[25,52,65]是一种重要的防止泄漏的技术,它只生成与数据无关的内存访问模式。一种通用的方法是使RAM成为遗忘的,例如,oblivious RAM (ORAM)。PathORAM[65]被认为是最有效的技术。然而,它假设有一定大小的私有存储空间,不适用于实际的TEE,如Intel SGX[18]。尽管Zerotrace[59]解决了这个问题,但它仍然会带来很大的开销。因此,设计一种特定于算法的方法来获得高效的算法是一个重要的问题。在这种背景下,[52]针对特定的ML算法提出了一种高效的oblivious算法,并[83]研究了SQL处理。然而,针对FL特有的聚合算法可能成为FL与服务器端TEE的一个脆弱组件的问题,目前还没有一种有效的方法。
分析
Oblivous algorithms:旨在防止敏感信息通过内存访问模式泄露,通过生成与数据无关的内存访问模式,来隐藏数据访问的实际模式,进而保护数据的隐私。
ORAM:一种实现隐蔽算法的通用方法,通过在每次访问内存时隐藏实际的内存地址,从而确保内存访问模式不会泄露数据信息。(PathORAM是一种高效的实现)
Oblivious Sort: 通过固定的步骤和顺序对数据进行排序,无论输入数据是什么,排序过程的内存访问模式都是一样的
内存访问模式:计算机程序在执行过程中对内存进行读取和写入操作的顺序和方式。
原文
在本研究中,我们解决了上述差距:(1) 我们通过设计特定的攻击并在真实世界场景中演示这些攻击,阐明了使用服务器端TEE进行FL时的隐私风险;(2) 我们通过设计高效的隐蔽算法并在实际规模上进行实证评估,提出了一种新型的防御机制。我们的分析显示,在稀疏化环境中执行FL聚合算法时,会泄露参数位置信息。稀疏化是一种常见的技术,用于减少通信成本和/或提高模型精度[19, 37, 40, 58]。我们假设攻击者的目标是推断出目标用户训练数据中包含的一组敏感标签,这与之前关于FL隐私攻击的工作[21, 72]的目标类似。我们进一步假设攻击者可以访问每一轮的内存访问模式、用于模型验证的数据集和训练好的模型。尽管在之前的研究[38, 40]中,FL中的稀疏化索引信息被认为是一些隐私信息,但与我们的研究不同,没有对特定的攻击进行调查。在真实数据集上演示了所提出的攻击后,本文提出高效的隐蔽算法来完全阻止这类攻击。为此,我们精心构建了现有的隐蔽构建模块,如隐蔽排序[6]和我们设计的组件。我们提出的方法Olive,是一种基于服务器端TEE的隐蔽联邦学习系统,能够抵抗侧信道攻击,实现真正的隐私保护FL。除了完全隐蔽的算法外,我们还通过调整enclave中的数据大小进行优化,并通过放宽隐蔽性的定义研究更高效的算法。最后,我们在真实数据集上进行了大量实验,结果表明,设计用于FL聚合的提出算法比通用PathORAM与SGX[59]相比更高效。
分析
稀疏化:在传输模型参数或梯度时,只选择其中的一部分有显著影响的参数进行传输,而不是传输所有参数。
原文
本研究的贡献总结如下:
- 我们调查了在FL中使用TEE进行模型聚合时,内存访问模式暴露给不可信服务器的潜在风险。我们发现了与稀疏化梯度相关的风险,这些梯度在FL中经常被使用。
- 我们开发了一种基于监督学习的敏感标签推断攻击,利用从稀疏化梯度的侧信道获得的索引信息。我们在真实数据集上展示了该攻击的有效性。我们的结果表明,在CIFAR100上使用top-1.25%稀疏化训练CNN时,训练数据中的敏感标签(每个参与者有2个标签,共100个标签)以90%或更高的准确率被泄露(见图6)。
- 我们引入了一种新颖的隐蔽算法,通过巧妙整合隐蔽原语(如隐蔽排序)和我们定制设计的组件,实现高效的模型聚合。我们进行了大量实验展示所提出方法的效率。值得注意的是,它比基于PathORAM的方法快10倍以上,并能在几秒钟内完成具有百万参数模型的聚合过程(见图9)。
本文余下部分的组织如下。第2节介绍了预备知识。第3节描述了所提出系统的概述和问题设置。第4和第5节分别展示了所提出的攻击和防御,并进行了实证评估。第6节讨论了相关工作,第7节总结全文。
原图1
分析
Participants:多个客户端在本地计算出模型更新,然后发送到服务器
Untrusted Server:服务器位于可信边界之外,包括操作系统(OS)和虚拟机监控程序(Hypervisor)等组件。
TEE:负责接受参与者发送的模型更新,并在安全环境中进行计算
Defense Side Channels: 用于保护内存访问模式
聚合操作:所有Participants的模型更新在TEE内合成一个全局模型更新,并加入了噪声进行进一步增强隐私保护
Olive系统:基于TEE的隐蔽FL,能偶在内存聚合过程中因为内存访问模式泄漏而引起的隐私风险的方法。通过在TEE内防止内存访问模式泄漏,Olive系统能够提供类似于中心差分隐私联邦学习(CDP-FL)的效用,而不需要依赖一个可信的服务器(如本地差分隐私联邦学习,LDP-FL)来保证数据的安全性。
PRELIMINARIES
2.1 Federated Learning
原文
联邦学习(FL)[35, 43] 基于分布式优化。基本算法称为FedAVG [43],通过在客户端的本地环境中重复模型优化步骤,并通过在服务器上聚合参数来更新全局模型。FedSGD [43] 基于分布式随机梯度下降法交换本地更新的梯度。总体而言,用户不需要与服务器共享他们的训练数据,这相对于传统的集中式机器学习(ML)是一个主要的优势。
分析
FedAVG:通过聚合参数来更新模型
FedSGD:通过梯度来更新模型
原文
为了减少通信成本和提高模型精度,在传输模型参数到服务器之前进行稀疏化在联邦学习中得到了广泛研究[19, 28, 37, 40, 58, 61, 75]。所有上述方法都在客户端对参数进行稀疏化,并将它们编码为值和索引信息[75],然后传输到服务器并在服务器端聚合成一个密集的全局模型。例外情况是,[28, 40] 使用了所有客户端的共同稀疏化索引,并将它们聚合成一个稀疏的全局模型。然而,正如在[19] 中观察到的那样,在实际数据中,各个客户端的top-𝑘索引之间几乎没有重叠,特别是在非独立同分布(non-i.i.d.)环境中,这在FL中很常见。这突显了基于两两掩码的安全聚合(SA)[19, 40] 的一个局限性(见第6节)。一般来说,top-𝑘稀疏化是标准方法。通过仅传输具有较大绝对梯度的top-𝑘参数到聚合服务器,通信成本可以减少1到3个数量级[58]。这种技术优于随机选择的𝑘索引(random-𝑘)[19],特别是在压缩比小于1%的情况下[28, 40, 58, 75]。其他稀疏化方法,如基于阈值的稀疏化[58],LDP下的top-𝑘稀疏化[39] 和最近提出的卷积核稀疏化[75] 也存在。然而,这些稀疏化梯度可能通过索引导致隐私泄露。在[38, 40] 中,用户特定的top-𝑘索引集被视为隐私信息;然而,没有研究对特定的攻击进行调查。
分析
稀疏化的目的:通过只传输最重要的参数来减少数据传输量,从而降低通信成本,同时保持或提高模型的精度。
方法:稀疏化参数 —encode—> 值和索引 —-服务器聚合—> 全局模型
局限性:使用top-k参数使得不同客户端之间的参数是不同的,但是SA通过生成和交换掩码,需要客户端之间有共同的稀疏化索引,使得服务器在聚合过程中无法获知单个客户端的具体参数值
其他稀疏化方法:
- 基于阈值的稀疏化
- LDP下的top-k稀疏化
- 卷积核额稀疏化
实例演示
假设有三个客户端A,B,C,以下是使用共同稀疏化索引的方法,服务器和全局协定一个全局top-k稀疏化索引集合:1,2,3,4,5.
客户端A:1,2,3
客户端B:1,4,5
服务器接受所有客户端的索引选择,并确定全局稀疏化索引集合:1,2,3,4,5
所有客户端使用1,2,3,4,5传输参数,服务器使用SA方法进行安全聚合
2.2 可信执行环境(TEE)
原文
根据[57]的正式定义,可信执行环境(TEE)在不可信计算机(例如,云虚拟机)内创建了一个隔离的执行环境。我们主要关注一种广为人知的TEE实现——Intel SGX [18]。它是Intel x86处理器的扩展指令集,能够创建一个称为enclave的隔离内存区域。enclave驻留在一个加密和保护的内存区域中,称为EPC。EPC中的数据和程序由内存加密引擎在CPU封装外进行透明加密,使其性能与本地性能相当。SGX假定CPU封装为信任边界——超出此范围的所有内容都被视为不可信的,并禁止任何不可信软件(包括操作系统/虚拟机监控程序)访问enclave。请注意,由于设计原因,用户可用的EPC大小在大多数当前机器上大约限制为96 MB。当内存分配超出此限制时,SGX与Linux提供了一种特殊的分页机制。这会为加密和完整性检查带来显著的开销,导致性能下降[33, 41, 68]。
分析
TEE:在不可信计算机内创建了一个隔离的执行环境。
enclave:在一个加密和保护的内存区域中,即enclave Page Cache
Intel SGX: Intel x86处理器的扩展指令集
原文
SGX支持远程证明(RA),可以验证enclave的正确初始状态和真实性。在请求RA时,会收到一份由可信处理器生成的基于初始enclave状态哈希的报告。这有助于识别程序并完成内存布局。Intel EPID签署此测量值,Intel证明服务作为可信第三方验证签名的正确性。因此,可以在远程enclave中执行可验证和安全的计算。同时,在RA协议中,enclave和远程客户端之间会进行安全密钥交换。因此,在执行RA后,可以通过使用AES-GCM等方法在安全通道上与远程enclave进行通信。
2.3 内存访问模式泄漏
原文
尽管数据在enclaves(隔离区域)中是加密的且不可查看,但无论是否使用可信执行环境(TEE),内存/页面访问模式或指令跟踪都可能会暴露【12, 36, 51, 71, 76】。这可能导致敏感信息从enclaves中被窃取【12】。例如,当恶意操作系统注入页面错误【76】或使用基于页面表的威胁【51, 71】时,会发生缓存行级别的访问模式泄漏。此外,如果可以访问物理机器,则可以直接在内存总线上附加探针。
为了防止此类攻击,提出了隐蔽算法,以在安全执行过程中隐藏访问模式。隐蔽算法定义如下。
分析
内存/页面访问模式:指的是程序在执行过程中对内存或页面的读取和写入的操作模式
指令跟踪:记录程序执行的指令序列
尽管数据是加密的,但这些访问模式和指令跟踪会暴露,攻击者可以分析这些模式来推断出敏感信息
具体实例
即使银行应用程序在enclave中执行,数据是加密的,外部看不到具体内容,攻击者仍然可以通过下面方式获取敏感信息:
- 内存访问模式:攻击者发现高频访问某些内存地址的时候,都伴随者高金额的转账,可以推测处这些内存中存储的可能是重要的账户信息。
- 指令跟踪:攻击者监视到一段特定的指令序列总是在用户进行大额转账的时候进行,可以推测处这段代码和高金额交易处理相关。
原文:隐蔽算法
算法M在统计意义上是𝛿-隐蔽的,如果对于任何两个相同长度的输入数据𝐼和𝐼’及任何安全参数𝜆,以下关系成立:
$\mathbf{Accesses}^{\mathcal{M}}(\lambda,I)\stackrel{\delta(\lambda)}{\equiv}\mathbf{Accesses}^{\mathcal{M}}(\lambda,I^{\prime})$
其中,Accesses((M(𝜆,𝐼)))表示表示内存访问顺序的随机变量。算法M在接收到输入参数𝜆和𝐼后生成。符号“≡”表示两个分布之间的统计距离最多为𝛿(𝜆)。𝛿是一个与密码安全参数𝜆对应的函数。当𝛿可以忽略时,我们称算法M是完全隐蔽的;当𝛿为1时,它不是隐蔽的。
分析
这里定义了什么条件下一个算法可以认为是隐蔽的,从统计距离的方面解释了隐蔽性如何量化,也就是说在处理不同的但长度相近的数据时,其在内存访问模式在统计上是非常相似的。如果$\delta$非常小,就认为是接近的。
原文
构建隐蔽算法的典型方法是使用ORAM(例如PathORAM【65】)。虽然ORAMs设计用于作为通用键值存储,但为了提高性能,还提出了一些特定任务的隐蔽算法,例如机器学习【52】和SQL处理【83】(详情见第6节)。这些算法基于隐蔽排序【6】和/或访问所有内存(即线性扫描)构建,在算法层面上与ORAM不同。此外,ORAM通常假定存在一个受信任的内存空间(例如客户端存储【65】),这与SGX假定enclaves中泄漏访问模式的假设不兼容。因此,只有CPU寄存器应被视为受信任的内存空间【59】。【52】通过使用CMOV(这是一个在CPU寄存器中提供条件复制的x86指令)实现了隐蔽的机器学习算法。CMOV根据寄存器中的条件标志在寄存器之间移动数据,这不会被任何内存访问模式所观察到。使用CMOV指令,可以实现具有恒定内存访问模式的条件分支,而这种模式不依赖于输入,从而消除后续代码地址的泄漏。例如,Zerotrace【59】通过基于CMOV隐蔽地实现客户端存储,在SGX上实现了PathORAM。我们可以构建和使用低级隐蔽原语,例如隐蔽移动(o_mov,见我们完整论文中的列表1【34】)和隐蔽交换(o_swap,见【34】中的列表2)。o_mov(flag,x,y)是一个接受布尔条件标志作为其第一个参数并根据该标志返回x或y的函数。因此,设计适用于SGX的适当隐蔽算法需要结合高级算法设计(如隐蔽排序)和低级原语。
分析
ORAM:精简的构建隐蔽算法的方法。通过重排和混淆数据访问顺序,使得即使外部看到访问模式,也无法推断出具体数据。
ORAM的假设:系统通常假定存在一个受信任的内存空间
SGX的假设:SGX假定即使在enclaves中,访问模式也可能会泄漏。唯一收信人的内存空间是CPU寄存器。
CMOV指令:CPU寄存器中提供条件复制的x86指令。CMOV指令是根据寄存器中的条件标志在寄存器之间移动数据,这种操作在内存访问模式中是不可见的。(只能实现在CPU上)
PROPOSED SYSTEM
原文
在本节中,我们首先阐明我们的场景和威胁模型,然后介绍Olive系统的概述。最后,我们分析潜在隐私风险的细节,并在第4节中讨论特定的隐私攻击和评估。
3.1 场景
原文
我们针对一个典型的联邦学习(FL)场景,包含一个服务器和使用相同格式数据的客户端(即水平FL)。服务器负责训练协调、参数聚合、更新全局模型、选择每轮训练的客户端以及验证模型质量。服务器端机器假设放置在公共或私人环境中【29, 77】,并配备有能够进行远程证明(RA)的可信执行环境(例如,Intel SGX)。
分析
水平FL:数据集之间的特征空间相同,但是数据样本不同。
垂直FL:数据集之间的数据样本相同,但特征空间不同。
原文 威胁模型
我们假设对手是一个半诚实服务器,它允许FL算法按预期运行,同时试图根据共享的参数推断出客户端的敏感信息。这与现有研究中的FL与安全聚合(SA)【10】以及服务器端TEE【45, 77, 78】的威胁模型兼容。尽管使用了TEE,我们还是选择了半诚实威胁模型,因为假设的攻击并没有偏离已建立的FL协议。对手的目标不是像FL上下文中的恶意攻击者那样破坏可用性(例如,拒绝服务攻击)或削弱模型的效用(例如,数据投毒攻击)【5, 66, 80】。需要注意的是,针对TEE的若干侧信道攻击需要恶意(即特权)系统软件,这与攻击者区分开来,并在FL中分类为恶意。然而,【9】报道了恶意服务器提高了FL中的推断攻击效果。在第5.6节中,我们讨论了此类恶意服务器与所提系统的隐私和安全之间的关系。
我们假设服务器拥有
- (1)在每轮FL期间访问训练模型的权限
- (2)访问全局测试数据集的权限
- (3)观察TEE内存访问模式的能力。
这些要求可以如下合理化:
- (1)因为服务器负责模型验证,访问全局模型是合理的。或者,攻击者可以轻松混入客户端以访问全局模型。
- (2)通常,具有公共数据集访问权限的半诚实服务器用于模型验证,覆盖整体数据集分布,这在生产中是必要的。类似的假设已在以前的推断攻击研究中提出【28, 74】。随后,我们通过实验评估所需的数据集规模(图8)。
- (3)这符合TEE的一般威胁假设。SGX将侧信道攻击排除在保护范围之外【18, 51】。除了可信硬件组件(即CPU封装)之外,服务器的所有其他组件,如系统软件(即操作系统/虚拟机监控程序)、主内存和所有通信路径,都被视为不可信。服务器可以通过已知或未知的侧信道攻击观察内存访问模式,如第2.3节所述。
分析
semi-honest server:在服务器上遵守FL协议正常运行,也试图通过分析共享参数来推断客户端的敏感信息。
威胁模型:系统化的方法,用于识别对系统安全构成威胁的前在攻击和攻击者。
3.2 系统概述
原文
提议的系统名为Olive(图1),遵循基本的FedAVG算法,并采用标准的top-𝑘稀疏化。然而,可信执行环境(TEE)位于服务器端,并且配备了抵抗侧信道攻击的服务器端算法。作为初始配置,我们在enclave中提供一个环境,使每个客户端可以通过远程证明(RA)验证在enclave中运行的进程的完整性,并交换共享密钥(AES-GCM)。如果验证失败,客户端必须拒绝在此阶段加入联邦学习。我们假设客户端和服务器之间的通信通过安全通道(TLS)进行,由不可信服务器终止,并且传输的梯度是双重加密的,只有在可信enclave中才能解密。
分析
FedAVG:Server手机客户端的加权平均值,并更新全局模型
top-k稀疏化:FL中,客户端可能产生非常大量的梯度/模型参数更新,为了减少传输的数据量,可以仅传输梯度绝对值最大的k个梯度。
Enclave:保护敏感数据和计算的隔离执行环境
Side-Channel Attack:使用非暴力破解法/算法中的理论性弱点。例如,缓存攻击:通过回去cache的访问权而获取缓存内的一切敏感信息。
远程证明:用于确保设备运行的可信性和完整性。
原文
Olive的整体算法在算法1中展示,其中与基本FedAVG算法的区别用红色标出。初始配置被省略,每个用户的不同共享密钥𝑠𝑘𝑖存储在enclave中(第1行)。在每一轮中,参与者在enclave中被安全地抽样(第4行)。选定的用户被记录在enclave中,并在加密数据加载到enclave后用于客户端验证(第9行和第8行)。在客户端,本地训练的参数进行top-𝑘稀疏化(第21行),然后进行编码和加密(第22行)。加载到enclave中的加密数据被解密和验证(第11行)。验证(第9行和第11行)对于我们的工作不是必需的,但它可以防止中间人攻击和偏见的客户端选择。正如第3.3节所讨论的,聚合操作(第12行)需要是隐蔽的,为此我们在第5节中提出了更低级和详细的算法。按照最小化可信计算基(TCB)的原则,只有聚合操作在enclave中执行。最后,聚合后的参数从enclave加载到外部(第13行)。因此,所有客户端传输的参数对服务器是完全不可见的,只有聚合后的参数是可观察的。
算法
分析
输入参数:
- N:参与者的数量
- ηₜ:学习速率
- ηₛ:学习速率
步骤1:通过远程证明(RA)与所有用户进行远程证明,创建一个密钥-值存储区,在enclave中存储每个用户的共享密钥𝑠𝑘𝑖。用户的共享密钥来自于RA配置。
步骤3:初始化模型参数θ⁰
步骤4-13:每一轮训练的主要循环:
- 步骤5:在enclave中安全地从N个用户中抽样一组用户Qₜ,用于本轮训练。
- 步骤6-7:对于每个选定的用户i,客户端在并行执行Enc(Δᵢₜ) -> EncClient(i, θₜ, ηₜ),将加密的梯度Δᵢₜ加载到enclave中。
- 步骤8:检查用户i是否在Qₜ中。
- 步骤9:从密钥存储区中检索用户i的共享密钥𝑠𝑘𝑖。
- 步骤10:使用共享密钥𝑠𝑘𝑖解密加密的梯度Δᵢₜ。
- 步骤11:隐蔽地执行聚合操作,例如算法3或4所示。聚合后的梯度为Δᵗ。
- 步骤12:加载聚合后的梯度Δᵗ。
- 步骤13:更新全局模型参数θₜ₊₁ = θₜ + ηₛΔᵗ。
步骤15:θ = θₜ
步骤16:将用户的本地数据分成小批次。
步骤17-18:对于每个批次的数据:
- 步骤18:使用梯度下降法更新模型参数。
步骤19:计算模型更新Δ = θ₋θₜ。
步骤20:对梯度进行top-𝑘稀疏化。
步骤21:对稀疏化后的梯度进行编码和加密。
步骤22:返回加密后的梯度。
3.3 安全分析
原文
尽管 TEE 能在保护原始梯度的同时进行模型训练,但如第 2.3 节所述,不可信的服务器可以观察内存访问模式。这里,我们分析基于内存访问模式的威胁。
为了形式化建模,设 𝑔𝑖 表示用户 𝑖 传输的 𝑘 维梯度,设 𝑔∗ 表示聚合后的 𝑑 维全局参数。在典型情况下,使用稠密梯度时 𝑘 = 𝑑。设 G𝑖 和 G∗ 分别表示存储 𝑔𝑖 和 𝑔∗ 梯度所需的内存,并设每轮参与的客户端数量为 𝑛。存储整个梯度的内存表示为 G = G1 ∥ … ∥ G𝑛,其中 ∥ 表示连接。一个内存访问 𝑎 表示为三元组 𝑎 = (A[𝑖], op, val),其中 A[𝑖] 表示内存的第 𝑖 个地址,op 表示内存操作——读或写,val 表示在 op 为写时要写入的值,否则为 null。因此,观察到的内存访问模式,Accesses,可以表示为 Accesses = [𝑎1, 𝑎2, …, 𝑎𝑚],其中内存访问序列的长度为 𝑚。
在 FL 中,服务器端执行的操作通常包括对所有用户的梯度进行求和和平均。我们首先注意到,这个过程对稠密梯度是无泄漏的。如图 2 所示,求和操作包括在线性扫描 G 的同时更新 G∗ 的对应索引值,其中内存访问以固定顺序和固定地址进行,与 G 的内容无关。我们将这一通用求和部分称为线性算法,并在[34]的附录B中完整介绍。
分析
𝑔𝑖 :用户 𝑖 传输的 𝑘 维梯度
𝑔∗ :表示聚合后的 𝑑 维全局参数
G𝑖: 表示存储 𝑔𝑖 梯度所需的内存
G∗: 表示存储 𝑔∗ 梯度所需的内存
n: 每轮参与的客户端数量
G = G1 ∥ … ∥ G𝑛: 存储整个梯度的内存
𝑎 = (A[𝑖], op, val):内存访问的三元组,A[i]表示内存的第i个地址,op表示内存操作(read/write),val表示op要写入的值
Accesses = [𝑎1, 𝑎2, …, 𝑎𝑚]:观察到的内存访问模式,序列长度为m
图片
原文
命题 3.1:线性算法对稠密梯度是完全无泄漏的。(在[34]中提供了正式证明)。
线性算法的执行时间是 𝑂(𝑛𝑑) 因为访问了梯度 G 的所有元素。此外,平均操作仅线性访问 G∗,其时间复杂度为 𝑂(𝑑),显然是完全无泄漏的。
然而,当梯度被稀疏化时(这是 FL 中常见的情景),线性算法的访问模式就不是无泄漏的,敏感信息可能会被泄露。稀疏梯度的权重通常由索引(表示参数的位置)和值(表示梯度值)组成的元组表示。这与量化和/或编码无关,因为它需要计算原始稠密梯度的总和。图 3 显示了在聚合稀疏梯度时的访问模式。
命题 3.2:线性算法对稀疏梯度不是无泄漏的。
证明:稀疏梯度的线性访问发生在访问模式 Accessessparse 满足以下条件时:
$Accessess^{parse} =
(G[1], read, ∗), (G∗[idx11], read, ∗), (G∗[idx11], write, ∗), …,
(G[𝑛𝑘], read, ∗), (G∗[idx𝑛𝑘], read, ∗), (G∗[idx𝑛𝑘], write, ∗) $
其中,用户 𝑖 的稀疏梯度的索引为 idx𝑖1, .., idx𝑖𝑘,适用于所有 𝑖 ∈ [𝑛]。访问模式 Accessessparse 是确定性的,并且与输入数据的索引序列一一对应。考虑两个具有不同索引序列的输入数据 𝐼 和 𝐼′,其输出分布没有重叠。那么,它们之间的统计距离为 1。
在聚合梯度 G∗ 上的访问模式至少揭示了每个用户 𝑖 的一个索引集 {idx𝑖𝑗 | 𝑗 ∈ [𝑑]},这取决于给定的梯度。考虑数据相关的稀疏化,如 FL 中通常使用的 top-𝑘,稀疏梯度的梯度索引可能对训练数据敏感。在下一节中,我们将展示在现实数据集上可能导致的隐私泄露。
分析
假设有两个客户端的数据分别为I和I‘,他们对应的梯度如下:
g1=[0.1,0.8,0.3,0.0,0.2,0.0,0.5,0.9,0.4,0.6]
g2=[0.7,0.1,0.2,0.4,0.0,0.9,0.5,0.3,0.8,0.6]
top-3=[(7,0.9),(1,0.8),(9,0.6)]
索引1=[7,1,9]
top-3=[(5,0.9),(8,0.8),(0,0.7)]
索引2=[5,8,0]
服务器聚合稀疏梯度,内存访问模式如下:
对于索引1: Accessessparse=[(G[7],read,0.9),(G[1],read,0.8),(G[9],read,0.6),(G∗[7],write,0.9),(G∗[1],write,0.8),(G∗[9],write,0.6)]
对于索引2: Accessessparse=[(G[5],read,0.9),(G[8],read,0.8),(G[0],read,0.7),(G∗[5],write,0.9),(G∗[8],write,0.8),(G∗[0],write,0.7)]
g1的访问模式[(7,1,9)],只有当输入数据为I才会出现,I‘同理。
原文
现在让我们澄清稀疏梯度的格式和方法。尽管在 FL 中研究了各种量化和/或编码方法(例如,[60]),但量化与本研究中考虑的泄漏问题无关,因为它仅影响值而不影响索引,编码也无关紧要,因为最终在服务器端解码。例如,在[19, 40]中,索引位置信息编码在 𝑑 维一位数组中,但在聚合期间仍然存在相同的问题。由于聚合是在原始稠密梯度上进行的,每次更新都需要访问稠密梯度(G∗)的特定索引,导致相同的访问模式。还应注意,风险取决于稀疏化。如果客户端的训练数据和观察到的索引不相关,则索引泄漏不被认为是风险。例如,当采用随机-𝑘 时,如[19]所述,不存在风险。虽然阈值稀疏化[58]几乎与 top-𝑘 相同,但 LDP 保证的索引[39]和最近提出的卷积核索引[75]仍然不清楚。这些索引信息在某种程度上可能与客户端的训练数据相关,但不如 top-𝑘 那样相关。我们的研究范围仅限于展示使用标准 top-𝑘 进行攻击的可能性,其他各种稀疏化的研究留待未来进行。
分析
量化:通过减少精度来降低通信成本
稀疏化方法的风险:使用稀疏化方法不一定导致泄漏,因为如果客户端的训练数据和观察到的索引不相关,那么索引泄漏不会被视为风险。(例如,随意k稀疏化方法)
梯度索引攻击
4.1 设计
原文
在本节中,我们设计了一种服务器端攻击,以证明训练数据的隐私泄露可以基于梯度中的索引信息发生。我们假设使用基于 top-𝑘 的稀疏化梯度[37, 58, 62]。假设攻击者满足第3.1节列出的假设。提出的攻击可以用来提高对 TEE 上 FL 安全/隐私风险的认识,这些风险在相关工作中尚未报告[16, 45, 47, 77],并且还可以作为防御评估框架。
攻击的目标是根据训练数据推断目标客户端的敏感标签信息。例如,在训练包含乳腺癌图像数据的 FL 模型时,癌症的标签非常敏感,参与者可能不希望泄露这些信息。类似的攻击目标在[21, 72]中也有考虑。我们设计的攻击基于这样一个直觉:本地收敛模型参数的 top-𝑘 索引与本地训练数据的标签相关。我们训练一个分类器,接受观察到的索引信息作为输入,使用公共测试数据集通过监督学习进行训练,输出是敏感标签集。为了进行模型验证,如第3.1节所述,访问数据集是合理的,先前的推理攻击研究[28, 74]也描述了这一点。
我们设计了两种基本方法:基于 Jaccard 相似度的最近邻方法(Jac)和神经网络(NN)。算法2中提供了详细的算法。以下是这些方法的概述:
(1)准备测试数据:首先,服务器为所有标签 ( l \in L ) 准备带标签的测试数据 ( X_l ),其中 ( L ) 表示所有可能标签的集合。
(2)观察内存访问模式:在每一轮 ( t )(( t \in T )),不可信的服务器通过侧信道观察内存访问模式,获取每个用户 ( i ) 的 top-𝑘 梯度索引 ( \text{index}[i,t] ),并存储这些索引(第4-8行)。
(3)计算全局模型梯度:服务器使用分类标签的测试数据 ( X_l ) 和当前轮次的全局模型参数 ( \theta_t ) 计算梯度,获取每个标签的 top-𝑘 索引 ( \text{teacher}[l,t] ) 作为教师数据(第9-12行)。
(4)计算 Jaccard 相似度:在所有轮次 ( T ) 完成后,在 Jac 方法中,计算每个标签 ( l ) 的 ( \text{teacher}[l,t] ) 与观察到的内存访问模式 ( | \tau \in T_i \text{index}[i,\tau] ) 的 Jaccard 相似度(第15-17行)。选择 Jaccard 相似度是因为在最坏情况下,参与者传输的索引信息可能被随机打乱,导致序列无意义。
(5)训练神经网络:
- 在 NN 方法中,攻击者使用 ( \text{teacher}[l,t] ) 训练神经网络,索引用作特征,标签用作目标(第19行)。模型的输出是标签的得分。随后,使用训练好的模型预测输入索引 ( \text{index}[i] ) 对应的训练数据中的标签。我们设计了两种基于神经网络的方法:
- 第一种方法(NN),在每轮 ( t ) 训练一个模型 ( M_t ),并将模型的输出得分取平均以预测标签。
- 第二种方法(NN-single),使用整个轮次的索引连接作为输入训练一个模型 ( M_0 ),得到一个单一的输出。在实验中,这两种方法都涉及一个包含三层的多层感知机(在[34]的附录F中描述)。需要注意的是,索引信息作为多热向量输入模型。在 NN-single 方法中,每个客户端仅参与一部分轮次——他们未参与的轮次的索引设为零作为模型输入。尽管 NN-single 能更好地捕捉轮次间的相关性,但这种零值化可能降低准确性。最后,如 Jac 方法中一样,我们存储通过模型预测获得的每个标签的得分(第20-21行)。
(6)返回标签:
- 如果目标客户端的标签数量已知,则对得分进行降序排序并返回最高的标签。如果标签数量未知,则对得分应用 K-means 聚类,将其分为两类,并返回具有最高质心的标签(第23-24行)。
最后,侧信道获取的信息还可以用于设计其他目的的攻击,例如重构中的附加特征[27]或其他推理攻击[49]。本研究的目的仅是展示在不可信服务器上可观察到的 top-𝑘 梯度索引包含足够的信息以引发隐私泄漏;因此,不同目的的攻击研究将留待未来进行。
算法
4.2 评估任务
原文
在我们的攻击评估中,服务器对场景中任意客户端执行推理攻击,具体场景如第3.1节所述。客户端有一个标签子集,攻击者的目标是根据目标客户端的训练数据推断其敏感标签集。攻击者可以选择任意子集或所有用户,并对每个用户执行推理攻击。我们使用all和top-1作为评估攻击性能的准确性指标。
- all:定义为推断标签与实际标签完全匹配的客户端百分比。例如,推断出的标签集是{1,3,5},而目标客户端的标签集也是{1,3,5}。
- top-1:定义为包含最高分推断标签的客户端百分比。例如,最高分的推断标签是5,而目标客户端的标签集是{4,5},我们认为这是一种最小化的隐私泄漏。
此外,我们调整标签集的分布,以便客户端能够控制攻击的难度。标签集中的标签数量和固定或随机标签的数量是可配置的。在固定标签的情况下,所有用户展示相同数量的标签,这个数量是攻击者已知的。在随机标签的情况下,分配最大数量,所有用户展示不同数量的标签。一般来说,随机标签和较多数量的标签更难推断。
分析
all:需要推断标签和实际标签完全一致
top-1: 只需要最高分标签在实际标签集中存在
4.3 Empirical Analysis
原文
我们在此展示设计的攻击的有效性。
图表
表1列出了实验中使用的数据集和全局模型。有关模型的详细信息,包括攻击者的神经网络(NN),见[34]的附录F。除了著名的图像数据集MNIST和CIFAR 10和100,我们还使用了Purchase100,这是一种用于成员推理攻击的表格数据集[31]。我们使用表1中列出的不同参数训练全局模型。学习算法基于算法1,其中我们提供稀疏比率𝛼而不是top-𝑘中的𝑘。FL的学习参数包括用户数𝑁、参与率𝑞、轮次数𝑇。默认值为(𝑁,𝑞,𝑇,𝛼) = (1000,0.1,3,0.1)。如前一节所述,我们评估了Jac、NN和NN-single的攻击方法。𝑇小于正常FL场景中的值,这意味着我们的方法只需几轮攻击。所有实验的源代码和数据集都是开放的3。
图表
图4展示了在所有数据集上,使用固定标签数时NN、NN-single和Jac的攻击结果;
图5展示了使用随机标签数时的结果。在CIFAR100中,使用𝑇 = 1,因为模型大小较大。y轴表示攻击的成功率,x轴表示每个客户端拥有的标签数量。当标签数量较小时,所有三种攻击都有很高的成功概率。top-1的成功率不受标签数量的影响,而all随着每个额外标签的增加而减少。在CIFAR10上,相较于CNN模型,MLP模型在标签数量较多时保持了较高的成功率。这表明目标模型的复杂性与索引信息对攻击的贡献直接相关。基于NN的方法在MNIST上更强大,但在其他数据集上表现类似。这表明梯度索引信息并不复杂,可以使用简单的方法(如Jac)进行攻击。NN和NN-single的结果几乎相同,因此在轮次之间没有太多有效的相关性。当类别标签数为100(Purchase100,CIFAR100)时,攻击的成功率降低。特别是,在CIFAR100中,此时的准确性较低。然而,如后文所示,使用较低的稀疏率可以显著提高这一点。
图表
图6展示了稀疏比率与攻击性能之间的关系。客户端标签数量固定为两个。结果表明,稀疏比率与攻击成功率成反比。这是因为随着稀疏度的增加,与标签相关的梯度索引变得更加可区分。特别是,在CIFAR100的情况下,攻击只有在稀疏比率较低时才成功。例如,当稀疏比率为0.3%时,成功率几乎为1.0。因此,稀疏比率是攻击中的一个重要因素。
图表
图7展示了仅基于缓存行粒度(64B)观察到的索引信息的攻击性能比较,这些信息在对抗SGX时可以轻松观察到[76],使用了CIFAR10和CNN。准确性几乎相同。基于NN的方法表现出略高的准确性,而Jac的准确性略低。因此,尽管在缓存行粒度上观察到的攻击仍然可能,这表明SGX的著名漏洞足以完成攻击。
分析
在CIFAR10数据集上,针对CNN模型进行的缓存行级别泄漏攻击的成功率
图表
图8展示了攻击者成功攻击所需数据集大小的评估。攻击者可访问的默认测试数据集如表1所示——我们在此基础上随机减少数据集,同时保持每个标签的样本数量相同。我们使用MNIST和Purchase100数据集分别评估固定标签和随机标签的数量。在MNIST中,即使数据量减少,性能也能保持,这削弱了对数据集大小的假设。例如,令人惊讶的是,即使只有100个样本(即每个标签10个样本,占原始评估的1%),性能也没有显著受到影响。在Purchase100中,影响较小,但通过减少数据量仍可以进行有意义的攻击。
5. 隐蔽算法
原文
在本节中,我们关注一种可能导致隐私泄露的聚合算法(如前一节所述),并讨论潜在的攻击预防途径。这里使用的符号与第3.3节中的符号相同。
首先,我们介绍基于通用ORAM的方法。我们用聚合参数 ( g^ ) 的 ( d ) 个零值初始化ORAM;顺序更新这些值与接收到的 ( nk ) 个梯度 ( g );最后从ORAM中检索 ( d ) 个值。因为ORAM完全隐藏了对 ( g^ ) 的内存访问,所以该算法是完全隐蔽的。然而,如实验部分所述,即使是适用于TEE的最先进的PathORAM [59] 也会带来显著的开销——因此,任务特定的算法更可取。
分析
通过随机访问其他位置,使得观察者无法分辨出哪些访问是真实的
5.1 基线方法
原文
通过访问所有内存地址以隐藏对特定地址的访问,可以简单地实现完全隐蔽。当访问 ( G^[i] ) 时,对每个 ( j \in [d] ) 执行伪访问 ( G^[j] )。对于每次访问,要么写入伪值,要么写入更新后的真实值,写入真实值的时间通过隐蔽移动(o_mov)隐藏。基线算法在算法3中描述。它接受所有参与者传输的连接梯度 ( g ) (一个 ( nk ) 维向量)作为输入,并返回聚合梯度 ( g^ ) (一个 ( d ) 维向量)作为输出。我们对 ( G^ ) 进行的线性访问次数等于 ( G ) 的长度。假设在传统对抗SGX的攻击中,内存地址在缓存行粒度上是可观察的[76],可以进行一些优化。当权重为四字节(32位浮点)且缓存行为64字节时,可以实现16倍的加速。无论是否进行这种优化,计算和空间复杂度分别为 ( O(nkd) ) 和 ( O(nk + d) )。
命题 5.1:算法3在缓存行级别上是完全隐蔽的。(在[34]的附录C中提供了正式证明。)
分析
地址行和缓存行:地址行指的是内存中的具体地址,缓存行指的是一块连续的内存区域。
o_mov:隐蔽移动使得真实写入操作在时间和位置上看起来与伪造访问无异,从而隐藏了真实的写入时间和地址。
算法
分析
有4个客户端,每个客户端上传一个梯度:
g1=[(0,0.1),(1,0.2)]
g2=[(0,0.1),(1,0.2)]
g3=[(0,0.1),(1,0.2)]
g4=[(0,0.1),(1,0.2)]
聚合参数g*=[0,0]
原始算法:
- 访问G[0],执行G[0]=G[0]+0.1,再伪造访问G[1]
- 访问G[1],执行G[1]=G[1]+0.1,再伪造访问G[0]
- 返回g*
优化算法:
- 初始化g’=[(0,0),(1,0)]
- 连接g和g‘得到g:[(0,0.1),(1,0.2),(0,0.1),(1,0.2),(0,0.1),(1,0.2),(0,0.1),(1,0.2),(0,0),(1,0)]
- 对g进行隐蔽排序:[(0,0.1),(0,0.1),(0,0.1),(0,0.1),(0,0),(1,0.2),(1,0.2),(1,0.2),(1,0.2),(1,0)]
- 隐蔽折叠:g=[(0,0.4),(0,0),(0,0),(0,0),(0,0),(1,0.8),(1,0),(1,0),(1,0),(1,0)]
- 再次隐蔽排序:g=[(0,0.4),(1,0.8),(0,0),(0,0),(0,0),(0,0),(1,0),(1,0),(1,0),(1,0)]
- 返回前d个值
5.2 高级方法
原文
这里,我们介绍一种更高级的联邦学习(FL)聚合方法。在模型参数数量庞大的情况下,( k ) 和 ( d ) 是重要因素,基线方法的计算复杂度由于 ( k ) 和 ( d ) 的乘积而变得极高。正如算法4所描述的,我们通过仔细分析梯度操作,设计了一种更高效的高级算法。直观上,我们的方法旨在直接从梯度数据 ( g ) 的操作中计算 ( g^ ),以**消除对聚合梯度 ( g^ ) 每个内存地址的访问*。这避免了基线方法中由于伪访问 ( g^ ) 而产生的开销。该方法分为四个主要步骤:梯度向量 ( g ) 的初始化(第1行)、隐蔽排序(第4行)、隐蔽折叠(第6行)和第二次隐蔽排序(第16行)。对于隐蔽排序,我们使用Batcher的双调排序(Batcher’s Bitonic Sort)[6],该排序在寄存器级以隐蔽交换(oblivious swap, o_swap)方式实现,在排序网络中的所有比较器处隐蔽地进行比较和交换。[34]中的附录E提供了一个运行示例以便更好地理解。
分析
k:每个客户端上传的梯度向量的维度
d:聚合后的全局模型参数的维度
算法步骤:
- g的初始化
- 隐蔽排序
- 隐蔽折叠
- 隐蔽排序
原文
如算法4所示,我们首先对 ( g ) 进行初始化,为1到 ( d ) 之间的每个索引准备零值梯度(声明为 ( g’ )),并将它们与 ( g ) 连接(第1-3行)。因此, ( g ) 的长度为 ( nk + d )。这一过程保证了 ( g ) 至少对1到 ( d ) 之间的每个值都有一个权重索引;然而,连接后的 ( g ) 的聚合结果与原始 ( g ) 完全相同,因为添加的值都是零。然后,我们使用参数的索引对 ( g ) 进行隐蔽排序(第4-5行)。这不仅是为了消除客户端和梯度之间的连接,也是为后续的每个索引聚合值计算做准备。接下来,执行隐蔽折叠例程(第6-14行)。它线性地访问 ( g ) 的值,并累积写入 ( g ) 中每个索引的值的总和。从第一个位置开始,如果相邻索引相同,就将每个值加到后续值上,并在原位置写入零值虚拟索引 ( M_0 ), ( M_0 ) 是一个大整数。否则,如果相邻索引不同,则停止加值,并重新开始新的索引的求和。因此,我们最终得到的 ( g ) 中,每个索引的最后一个权重携带正确的索引和聚合值,其余的都是虚拟索引。此外,上述初始化过程保证了 ( d ) 个不同的索引始终存在。在这一阶段,折叠期间 ( g ) 上的索引变化点被小心地隐藏。如果索引变化点暴露,每个索引对应的数量(即索引的直方图)就会泄露,这可能导致灾难性结果。因此,隐蔽折叠采用 o_mov 使条件更新隐蔽,并不仅隐藏数据的内存访问,还隐藏底层指令。最后,我们对 ( g ) 进行隐蔽排序(第15-16行)。排序后, ( g ) 中索引在1到 ( d ) 之间的权重被单独排列,随后是虚拟索引的权重。最后,取排序后的 ( g ) 的前 ( d ) 个权重值作为 ( g^* )。
命题5.2:算法4是完全隐蔽的。
证明。访问模式Accessesadvanced较为复杂,但可以通过模块化方法考虑隐蔽性。我们的隐蔽排序依赖于Batcher的双调排序,该排序通过以确定性的顺序比较和交换数据来完成排序,与输入数据无关。因此,使用这种方法生成的访问模式始终相同。在隐蔽折叠中,梯度线性访问一次;因此,对于相同长度的所有输入数据,生成的访问模式是相同的。最后,Accessesadvanced在相同长度的输入下是相同且独立的,这意味着0统计隐蔽性。□
整个操作的复杂度在时间上为 ( O((nk + d) \log^2 (nk + d)) ),在空间上为 ( O(nk + d) )。所提算法依赖于隐蔽排序,这主导了渐近计算复杂度。我们使用Batcher的双调排序[6],其时间复杂度为 ( O(n \log^2 n) )。由于消除了 ( kd ) 项,高级方法在渐近上优于基线方法。
5.3 优化
原文
在本小节中,我们描述了一种适应基本SGX内存特征的优化方法。当前的SGX包括两个主要的内存大小优化级别。第一个因素是L3缓存的大小(例如,8 MB)。在SGX中,缓存命中率的提高不仅显著减少了内存访问时间,还减少了数据解密过程的时间。第二个因素是EPC(Enclave Page Cache)大小(例如,96 MB)。如第2.2节所述,访问EPC之外的数据会产生严重的分页开销。与提出的方法相比,基线方法在计算上非常昂贵;然而,大多数内存访问是线性的。因此,通过高缓存命中率和CPU的预取功能,基线方法得到了极大的加速。但是,在高级方法中,Batcher排序的低内存访问局部性降低了缓存和EPC的命中率。
分析
L3缓存:L3缓存是计算机处理器中的第三级缓存存储器,用于在CPU和主存(RAM)之间提供更快的数据访问。
EPC:EPC(Enclave Page Cache)是用于存储SGX(软件防护扩展)环境中受保护内存区域(Enclave)的特定内存区域。
原文
因此,优化是通过在执行高级方法之前引入一个函数将用户分成适当的组来实现的,以保持一次处理的数据在EPC大小内。该过程包括以下步骤:
- 将用户分成每组 ( h ) 个用户;
- 使用高级方法对每组进行值聚合;
- 将聚合值记录在安全区中,并将结果传递到下一组;
- 仅在所有组完成后对结果进行平均,然后将其从安全区加载到不可信区域。
请注意,对高级方法的改进并不改变其安全特性。外部攻击者只能看到加密数据,任何分组数据顺序或内容的不规则性都可以被安全区检测并中止。关键参数是每组中的人数 ( h )。总体计算复杂度略微增加到 ( O(\frac{n}{h}((h k + d) \log^2 (h k + d))) )。然而,这隐藏了由于缓存命中引起的加速和/或由于重复数据加载引起的开销。基本上,尽管降低 ( h ) 提高了缓存命中的好处,但将其降低得过多会导致大量数据加载。 ( h ) 的最佳值独立于数据,可以离线探索。我们的结果表明,在实验中存在一个使效率最高的最佳 ( h ) 值。
5.4 放宽隐蔽性条件
我们通过放宽完全隐蔽性的条件,进一步探讨提高效率的方法。近年来备受关注的一种放宽的安全定义是差分隐蔽(Differentially Oblivious, DO)【2, 14, 17, 42, 54】。DO是将差分隐私(DP)应用于隐蔽性。这种放宽理论上可以提高效率,而不是完全隐蔽性。在实际应用中,对于关系数据库(RDB)查询的改进已经有报道【54】,其安全模型中Enclave内的访问模式泄漏不在考虑范围内,这与我们的情况不同。
然而,DO在联邦学习(FL)环境中可能不起作用。DO方法通常保证观测到的内存访问的直方图具有差分隐私。我们基于【2, 42】构建了一个DO算法。该过程包括以下步骤:填充伪数据、执行显式洗牌(或排序)、通过线性访问G来更新 ( g^* )。观测到的内存访问模式等同于所有梯度对应索引的直方图,并且需要填充足够随机噪声的伪数据以使该直方图满足差分隐私。然而,这在FL环境中不可避免地带来极高的成本。原因如下:
随机化机制:
- 随机化机制只能通过填充伪数据来实现【13】。这意味着只能添加正噪声,并且填充覆盖的算法有限(例如,移位拉普拉斯机制)。
噪声的显著性:
- 在我们的案例中,这一点尤为关键,并且与先前的研究【2, 42】不同。考虑到机器学习模型的维度 ( d ),甚至稀疏化维度 ( k ) 都可能很大,噪声很容易变得显著。例如,考虑由拉普拉斯噪声保证的DO,其中 ( k ) 表示敏感度, ( d ) 是直方图的维度,噪声量与 ( k d ) 成正比,并且由于第一个原因乘以一个不可忽略的常数【2】。这会生成需要应用隐蔽操作的庞大数组数据,导致比完全隐蔽情况更大的开销。
高级方法高效运行。稀疏比率(𝛼)= 0.01,每轮客户数量(𝑛)= 100。
5.5 实验结果
在本节中,我们展示了所设计的防御方法在实际规模上的效率。由于显而易见,所提出的算法能够完全防御我们的攻击方法,因此这里不评估它们的攻击性能。此外,我们之前的算法不会降低实用性——增强安全性的唯一权衡是计算效率。
我们使用一台HP Z2 SFF G4工作站,配备Intel Xeon E-2174G CPU,64 GB RAM和8 MB L3缓存,支持SGX指令集,并具有128 MB处理器保留内存,其中96 MB EPC可供用户使用。我们使用与表1中相同的数据集和合成数据。请注意,所提出的方法是完全隐蔽的,其效率仅取决于模型大小。聚合方法包括非隐蔽(第3.3节中的线性算法)、基线(算法3)、高级(算法4)和PathORAM。我们基于一个开源库实现了PathORAM,该库涉及Zerotrace的Rust实现【59】。暂存大小固定为20。在实验中,我们使用执行时间作为效率指标。我们测量了从加载加密数据到Enclave到聚合完成所需的时间。
图9展示了在合成数据集上进行聚合操作的执行时间与模型大小的关系。 ( \alpha ) 固定为0.01,x轴表示原始模型参数大小 ( d )。提出的高级方法比基线方法快大约一个数量级。此外,高级方法在参数数量增加时更具鲁棒性。只有在参数数量非常少时,基线方法才比高级方法快,因为当模型非常小时,基线方法的简洁性占据优势。PathORAM也带来了很大的开销。原始PathORAM算法的理论渐近复杂度为 ( O((nk) \log(d)) ),因为在ORAM上进行一次更新可以在 ( O(\log(d)) ) 内完成。然而,这是理想情况,当PathORAM适应SGX安全模型(即ZeroTrace【59】)时,常数因子的开销很大。高级方法在具有最佳客户端大小时速度显著更快。当每组客户端数量(x轴表示为h)较小时,向Enclave迭代加载的成本变得占主导地位,开销反而增加。然而,如果h逐渐增加,执行时间会减少。考虑到L3缓存的大小为8 MB且每用户数据大小为 ( d\alpha = 0.04 MB ),L3缓存可以容纳大约200个客户端。MNIST(MLP)的结果表明,在约h = 100时,最低时间约为10秒,相比原始高级方法的290秒有显著改进。图表的微小波动似乎与L2缓存(1 MB)有关,其影响不如L3缓存大。由于EPC分页,效率在h = 2000左右显著下降。右侧图表展示了CIFAR100(MLP)的结果,在 ( \alpha = 0.01 ) 和 ( N = 10^4 ) 时,高级方法最初快得多,但还有一个可以进一步优化的最佳h值。优化前的执行时间为16秒,在大约150个客户端时减少到5.7秒。
5.6 讨论
威胁假设
Boenisch等人【9】报告称,恶意服务器在超越半诚实假设的情况下能够提高推断攻击的性能。这种类型的攻击涉及恶意服务器通过设计全局模型参数(在【9】中称为陷阱权重)并控制每轮的客户端选择来突出目标用户的更新。为防止参数篡改,【11】提出了一种使用加密承诺方案的防御策略。Olive可以采用基于加密签名的类似策略。聚合在Enclave内进行,聚合后的全局模型使用Enclave内的私钥签名。这确保了模型在Enclave外(即恶意服务器)没有被篡改。任何客户端都可以使用公钥验证签名,该公钥可以在远程证明(RA)后轻松分发。此外,TEE通过在Enclave中安全运行来防止恶意客户端选择。因此,至少在这种类型的攻击中,隐私不会被侵犯。其他可能的恶意服务器行为可能影响Olive的安全性,包括拒绝服务(DoS)攻击【30】,这些攻击超出了Olive的威胁模型和TEE的范围,难以防止。
SGX的安全性
最后,我们讨论SGX作为对抗已知攻击的安全原语的使用。根据【51】,针对SGX的攻击目标可以分为以下三类:(1)窃取内存/页面访问模式或指令轨迹【12, 36, 71, 76】,(2)读取内存内容【15, 69】,以及(3)故障注入【48】。(1)是我们防御的目标。(2)中的推测执行攻击大多通过微代码补丁处理。因此,通常不需要在应用程序中进行保护。然而,如果微代码未更新,Enclave的梯度信息可能会被恶意攻击者窃取,这超出了本研究的范围。(3)中的故障注入在微代码/硬件【48, 51】的范围内覆盖,并且不在我们的安全范围内。即使使用TEE,这也可能导致DoS【30】。
此外,如果恶意代码嵌入到Enclave执行的代码中,则存在另一个风险。这可以通过使用RA验证Enclave状态来防止;然而,这需要源代码公开并进行评估。此外,如【70】所讨论的,SDK可能涉及意外的漏洞。为了从SGX的安全性中受益,TCB的代码必须编写得当。
6 相关工作
联邦学习中的安全和隐私威胁
由于联邦学习(FL)的去中心化和协作模式,它包含了许多攻击面。这些攻击大致可以分为半诚实方的推断攻击【21, 49, 72】和恶意方通过降低或控制模型质量的攻击【5, 66, 80】。然而,【9】证明了恶意服务器可以通过设计聚合参数来实现有效的推断攻击。我们的目标是针对半诚实服务器的推断攻击。推断攻击包括重建【7, 27】、成员身份推断【49】和标签推断【21, 72】。特别是,有报告称服务器观察到的共享参数包含大量的私人信息【79, 84】。我们的工作针对基于梯度的标签推断攻击【21, 72】,这些攻击使用梯度本身,关注于值,而不仅仅是我们的方法中从侧信道泄漏的索引。据我们所知,这是第一次仅使用稀疏化的索引信息来演示标签推断。
安全聚合(SA)【46】是一种流行的FL方法,用于隐藏服务器的单个参数,它基于轻量级的两两掩蔽方法【10, 19, 32】、同态加密【4, 26】或TEE【78, 80】。另一种方法是确保参数的(本地)差分隐私,以私有化共享数据;然而,这会牺牲模型的实用性【67, 81, 82】。在本研究中,我们研究了使用TEE的SA——进一步的细节将在下一段提供。最近的研究调查了SA和稀疏化的组合,如random-𝑘【19】和top-𝑘【40】。然而,这些方法并不和谐,因为它们要求客户端之间的相同稀疏化索引以便于掩码消除。【40】提出通过取客户端之间的top-𝑘索引的并集生成公共掩码,这会产生额外的通信成本和强约束。这对于top-𝑘来说是严重的,因为实际上,Ergun等【19】表明,客户端之间的top-𝑘索引几乎没有重叠,这在FL的非独立同分布(non-i.i.d.)情况下尤为明显。在【19】中,只有一对用户表现出共同的索引;然而,这仅适用于random-𝑘稀疏化。在TEE的情况下,不需要公共索引或random-𝑘;但个别索引仍可能通过侧信道泄漏。因此,我们的工作重点是在这一点上的攻击和防御策略。
使用TEE的联邦学习
在FL中使用TEE是一种有前途的方法【16, 45, 47, 77, 78】。除了梯度的机密性(即SA功能),TEE还通过远程证明提供程序完整性和可验证性。与使用TEE的集中式机器学习【29, 52】的主要区别在于,训练数据不会共享到服务器上,也不会集中在服务器上,这对于隐私或合同/监管原因或实际原因(即在多个边缘的海量和快速数据)可能是至关重要的。将机器学习训练所需的繁重计算从TEE的有限计算资源外包给外部客户端也是重要的。PPFL【45】使用TEE隐藏参数,以防止半诚实客户端和服务器对全局模型的攻击。Citadel【77】在使用TEE的协作机器学习中解决了使模型设计保密的重要目标。然而,侧信道攻击并未涵盖。在【78】和【16】中,梯度聚合步骤被认为是分层和/或分区的,使用多个服务器,以便每个服务器只能部分观察到梯度信息。作者假设重建攻击,并且梯度泄漏少于80%是可以接受的,这与我们的假设完全不同。在本研究中,攻击仅基于梯度索引信息,目标是标签推断。此外,我们提出的防御更实用,因为我们只需要一个服务器和一个TEE,而不是假设多个不串通的服务器和TEE的分布式处理方法。Flatee【47】在FL中使用TEE和DP。【47】提到了服务器端的隐蔽性,但没有提供针对侧信道泄漏的分析和解决方案。我们的研究不仅包括FL聚合过程中访问模式的分析,还设计和演示了攻击方法,以全面激发我们的防御措施,并提供比其他单一中心TEE上任何方法更强的安全性。
隐蔽技术
隐蔽算法【25, 52, 65】已知仅为输入数据引入独立的内存访问模式。虽然PathORAM【65】是最有效的ORAM实现,但它假设有一定大小的私有内存空间(称为客户端存储),不适用于Intel SGX【59】。Zerotrace【59】将PathORAM适应了SGX安全模型,其中寄存器是唯一的私有内存。作者使用了【52】中提出的隐蔽原语,其中程序不从CPU寄存器泄漏指令序列,使用x86条件指令。我们提出的算法也使用低级原语;然而,高级算法有很大不同。【83】研究了隐蔽SQL处理。他们的提议包括一个分组查询,在概念上类似于我们提出的算法。我们的聚合算法基于多个稀疏梯度计算汇总的稠密梯度,可以看作是分组查询的特例。但我们的方法更专业,例如,我们首先准备零初始化的稠密梯度,以隐藏包含的所有索引集,然后隐蔽地进行聚合,这在分组查询中是不可能的。此外,上述算法在根本上不同,因为它们关注的是跨节点分布的数据。此外,【83】没有考虑【52】提出的线性访问技术,这可能在条件代码中引入额外的信息泄漏【76】。【56, 64】研究了从高级源代码到低级隐蔽代码的编译和转换方法。他们提出了一种编译器,自动识别原始源代码中的非隐蔽部分并修复它们。但与我们的方法不同,作者没有提供针对特定目的的定制高级算法。差分隐蔽性(DO)【2, 14, 54】在第5.4节中详细描述。
7 结论
在这项研究中,我们分析了在稀疏梯度设置中使用服务器端TEE的联邦学习(FL)的风险,并设计并演示了一种利用从侧信道可观察到的梯度索引信息的新型推断攻击。为了减轻这些风险,我们提出了一种称为Olive的隐蔽联邦学习系统,通过设计完全隐蔽但高效的算法。我们的实验结果表明,所提出的算法比最先进的通用ORAM更高效,可以作为一种实际应用的方法。我们相信,我们的研究对于实现使用TEE的隐私保护联邦学习是有用的。