没有合适的资源?快使用搜索试试~ 我知道了~
769→STRO ngBox:ARM端点上的GPU TEE邓云杰南方科技大学可信自治系统研究院南方科技大学计算机科学与工程系宁振宇湖南大学计算机科学与工程学院中国南方科技大学工程系何寿梦严正宇中国蚂蚁集团王晨旭南方科技大学计算机科学与工程系中国香港理工大学凯文·利奇美国范德比尔特大学软件集成系统研究所曹建农中国香港理工大学刘顺昌于世清计算机科学系和中国南方科技大学工程系金立广州大学张峰伟南方科技大学计算机科学与工程系南方科技大学可信自治系统研究院摘要各种Arm端点利用集成和分立GPU来加速图像处理和数值处理应用等计算。然而,尽管有这些重要的用例,Arm GPU的安全性还没有得到社区的审查。通过利用内核中的漏洞,攻击者可以直接访问GPU计算期间使用的敏感数据,例如计算机视觉任务中的个人可识别图像数据。现有的工作使用可信执行环境(TEE)来解决基于英特尔的平台上的GPU安全问题,同时存在许多架构差异,导致在为Arm GPU部署TEE时面临新的技术挑战。此外,现存的基于Arm的GPU防御旨在用于安全的机器学习,并且缺乏通用性。需要一种通用且高效的基于Arm的GPU安全机制。为了解决这些问题,我们提出了StrongBox,这是第一个用于Arm端点上安全通用计算的GPU TEE在Arm GPU上进行机密计算时,StrongBox通过确保对GPU的独占访问来提供我们的方法部分基于动态的细粒度内存保护策略,因为基于Arm的GPU通常与CPU共享统一内存,这与基于Intel的邓云杰和王晨旭是共同第一作者。†Fengwei Zhang为通讯作者。允许免费制作本作品的全部或部分的数字或硬拷贝,以供个人或课堂使用,前提是制作或分发副本的目的不是为了盈利或商业利益,并且副本的第一页上有本声明和完整的引用。必须尊重作者以外的其他人拥有的本作品组件的版权。允许使用学分进行摘要以其他方式复制、重新发布、在服务器上发布或重新分发到列表中,需要事先获得特定许可和/或付费。 请求权限请发邮件至permissions@acm.org。CCS©2022版权归所有者/作者所有。授权给ACM的出版权ACM ISBN 978-1-4503-9450-5/22/11。. . 15美元https://doi.org/10.1145/3548606.3560627平台此外,通过将GPU缓冲区表征为安全和不安全,StrongBox减少了冗余的安全内省操作,以控制对GPU使用的敏感数据的访问,最终降低了运行时开销。我们的设计利用了广泛部署的ArmTrustZone和通用Arm功能,无需硬件修改或架构更改。我们使用现成的Arm Mali GPU对StrongBox进行原型设计,并进行了广泛的评估。我们的研究结果表明,StrongBox在几个指示性基准测试中以较低的开销(4.70%-15.26%)可靠CCS概念• 安全和隐私可信计算;移动平台安全。关键词Arm端点GPU;可信执行ACM参考格式:YunjieDengXiao ,Chenxu WangXiao ,Shunchang Yu ,Shiqing Liu ,Zhenyu Ning,Kevin Leach , Jin Li , Shoumeng Yan ,Zhengyu He ,Jiannong Cao,and FengweiZhang†. 2022年。StrongBox:Arm端点上的GPU TEE 在2022年ACM SIGSAC计算机和通信安全会议(CCS '22)的会议记录中,2022年11月7日至11日,美国加利福尼亚州洛杉矶。ACM,纽约州纽约市,美国,15页。https://doi.org/10.1145/3548606.35606271引言GPU现在广泛用于通用和高性能应用,如3D游戏[17],视频处理和压缩[18],移动虚拟现实[22]以及神经网络训练和推理[28,45,57]。此外,GPU不仅用于服务器和云环境[42,74],还用于小型嵌入式系统[4,77],如智能手机和自动驾驶汽车,以满足日益增长的性能需求。770CCSYunjie Deng等.随着GPU的普及和分布,相关的安全问题尚未得到社区相应程度的审查。 为了访问受攻击应用程序处理的敏感数据,攻击者可以利用操作系统级别的大量漏洞来获得GPU驱动程序的控制权,进而通过内存映射I/O(MMIO)接口访问GPU的内存。此外,攻击者可以通过篡改GPU页表来破坏GPU应用程序之间的隔离,从而泄露受害GPU应用程序上处理的敏感数据。结合个人可识别信息[23,25,82]和使用GPU计算的敏感秘密[29,86]的使用的增加,迫切需要解决无处不在的GPU的可信计算要求研究人员和商业供应商已经提出了许多方法来防止泄漏敏感数据[48,79,81,89]。最近,一种这样的技术是可信执行环境(TEE)[2,5,33,79]。 通过使用专门的硬件和软件,TEE为执行安全关键代码提供了一个隔离的运行时环境。 TEE最近已经被适配为使用修改的Intel Software Guard eXtensions(SGX)[33]、Graviton [90]和HETEE [93]以及定制的TEE来隔离安全GPU计算[ 51 ]。然而,这些技术都没有应用于Arm端点GPU。一个关键的限制在于英特尔和Arm GPU平台之间的架构差异。基于英特尔的设备上的最先进的GPU自然是孤立的,因为分立的GPU设备具有专用内存。相比之下,基于Arm的设备通常采用片上系统(SoC),其中在GPU和CPU之间共享统一的存储器(并且因此,与不受信任的OS)。建筑假设的这一重大变化严重影响了相关保护机制的设计。此外,一些作品[51,90]涉及高度耦合的软件栈(例如,GPU驱动程序和运行时)。 这类工作需要将重型软件移植到安全区,安全区代表受保护的机密GPU应用程序执行。但是,这可能会增加系统中的漏洞一方面,大型软件栈增加了飞地/TEE的可信代码基础另一方面,这种移植软件的实现可能是脆弱的[34-38],这严重威胁了计算过程中的数据安全。最后,基于英特尔的设备上的GPU TEE机制[51,90,93]需要大量的硬件修改,如果采用Arm设备,将导致兼容性差。Arm端点GPU上的现有安全计算需要将整个GPU驱动程序移植到TrustZone中,并且只关注特定应用程序(例如,深度学习推理[64])。这些缺陷尚未得到妥善解决。 至于GPU芯片的防御,英伟达最近提出了H100 GPU [73],以在GPU上建立一个可信的执行环境,但这还没有与Arm端点兼容。我们介绍了StrongBox,第一个GPU TEE,用于Arm端点上的一般计算StrongBox旨在确保Arm端点中GPU上的安全和隔离计算,其中包含与不受信任的操作系统和其他外围设备的统一内存StrongBox实现了三个关键目标。(1)安全性:作为GPU TEE,StrongBox必须将每个安全GPU任务与易受攻击的系统和恶意软件隔离。因此,StrongBox可以防止对手在机密GPU应用程序的生命周期内泄露数据或篡改关键代码。(2)最小TCB:StrongBox必须具有最小的可信计算基础(TCB),以减少潜在的攻击面。为了实现这一目标,StrongBox委托繁重的GPU驱动程序和GPU运行时代码来执行复杂的操作,包括内存分配和释放、I/O和任务调度,而访问敏感数据则由瘦可信组件严格控制。(3)高兼容性:StrongBox保持与无处不在的Arm端点设备的兼容性。特别是,StrongBox既不依赖于特定Arm端点的功能,也不需要对GPU或CPU芯片进行硬件修改。为了满足这些要求,主要的技术挑战是在使用统一内存的同时确保安全GPU执行的排他性。我们必须提供一个隔离的运行时环境,在该环境中,安全的GPU任务可以使用GPU,即使在一个被压缩的操作系统允许攻击者自由支配外围设备、驱动程序和内存的情况下。 在主要挑战之后,我们必须解决机密应用程序中敏感数据和代码的访问控制问题。数据和代码分散在内存中,它们的访问权限必须经常更改,以便与委托的组件进行交互最终,隔离的运行时环境必须提供可接受的健壮性和低性能开销。为此,我们提出以下建议:StrongBox不需要额外的硬件或将GPU驱动程序移植到TEE,而是基于通用Arm功能实现了一种新的访问控制机制(即,信任区和阶段2转换),以限制对GPU MMIO寄存器和统一GPU内存的未经授权的访问。StrongBox的实现引入了一个小的TCB,在第6节中进行了描述。StrongBox为敏感数据和关键代码定义了细粒度的动态访问控制策略在不影响本机系统稳定性的情况下,我们防止了针对GPU任务代码和数据的恶意操作第6节和第7节分别讨论了性能和安全影响的详细分析。为了确保低性能开销,我们通过区分多任务计算的GPU缓冲区来优化冗余的安全检查第6节显示了我们的策略减轻了性能开销。我们使用Arm Juno R2开发板讨论StrongBox的原型实现,该开发板具有Cortex-A53和Cortex-A72处理器集群以及Mali-T624GPU,两者共享统一的内存空间。 我们的原型引入了1,366行代码的TCB,这比将30K LoC Arm Midgard GPU驱动程序移植到TEE的最先进方法小了几个数量级。我们使用一个流行的GPU基准套件来测量我们的原型类型的性能,称为Rodinia[30],该套件已被广泛用于评估Arm设备的性能[24,59,60]。接下来,我们通过三个典型的神经网络模型(LeNet-5 [58],SqueezeNet [49]和MobileNet-v1 [46])来检查Strong- Box的鲁棒性,并评估我们的优化机制的有效性。此外,我们比较了StrongBox和最先进的GPU TEE的不同方面,在假设的对手下的StrongBox的安全性分析。我们的评估结果表明,StrongBox···771○○○○○○○S TRONGBOX:A GPU TEE on Arm EndpointsCCS '22,November7-11,2022,LosAngeles,CA,USA.成功地实现了其安全性保证,同时引入了相当低的性能开销(4.70%-15.26%)我们要求在这项工作中作出以下贡献我们介绍了StrongBox,这是第一个在Arm端点上运行的StrongBox为安全任务提供了一个隔离的执行环境,并保护敏感数据和代码免受受损内核的攻击我们在一个Arm开发板上实现了一个StrongBox的原型,没有任何硬件或架构修改。我们分享StrongBox1的源代码。我们进行了全面的评估StrongBox,我们提出了一个详细的安全分析,我们的原型。2.2 臂地址转换Arm定义了一个两阶段(正式名称为Stage-1和Stage-2)转换机制来映射物理内存中的OS和应用程序的内存空间。阶段1将内核或用户空间的虚拟地址(VA)转换为中间物理地址(IPA),阶段2将IPA映射为真实物理地址(PA)。Stage-2翻译广泛支持Cortex-A系列[12- 14,16]芯片,这是配备GPU的Arm端点的主流处理器。然而,大多数Arm端点禁用此转换,因为它们通常不适合多租户虚拟机管 理程 序 。 在 Strong-Box 中 , 我 们 启 用 此 功 能 以 在 GPUMMIO寄存器和GPU任务内存上进行页面级访问控制。我们的研究结果表明,StrongBox有效地保护了敏感数据,具有相当的性能开销。2背景2.1Arm TrustZoneArm TrustZone [21]是一种基于硬件的安全机制,为Arm设备上TrustZone将执行隔离为两种状态:工作流程RAM分配内存加载数据荷载规范任务提交➄任务完成装载结果(1)安全世界,其为可信应用或可信OS提供TEE,以及(2)正常世界,其用于不可信应用或传统OS。安全世界中的机密计算由TrustZone通过内存中的硬件隔离严格保护,并且可以通过几种机制(例如特权smc指令)在正常世界中请求。作为TrustZone架构一部分的硬件组件确保了正常世界和安全世界的隔离。一个这样的组件是TrustZone 地址空间控制器(TZASC)。TZASC嵌入在内存总线中,位于DRAM和CPU/外围设备之间,监控对安全和非安全地址空间的访问。此外,TZASC向每个不可信的外围设备分配非安全访问身份(NSAID) 当一个外设需要读/写访问一个地址,TZASC查找配置(通常存储在一个寄存器)的相应的内存区域的有效性访问。因此,TZASC提供对由CPU和每个外围设备访问的存储器的访问控制然而,TZASC仅支持配置8个区域,限制了这种存储器保护机制的灵活性我们在第2.2节中提出了一种辅助访问控制机制来解决这一限制。TrustZone还隔离了响应设备I/O的安全和非安全中断具体来说,TrustZone使用通用中断控制器(GIC)[6]来创建两组中断,组0(仅在安全世界中可访问)和组1(在安全和正常世界中均可访问)。当中断发生时,TrustZone识别中断及其组,然后将中断分派到具有相关安全状态的CPU。TrustZone保护此类配置免受恶意非安全组件(例如,应用程序、OS和管理程序)。在现成的Arm设备中,与GPU相关的中断最初被归类为第1组,并由不安全的GPU驱动程序处理本文通过控制GPU中断状态的切换来有效地处理敏感数据和恢复环境。1 https://github.com/Compass-All/CCS22-StrongBox图1:Arm端点GPU上的应用程序工作流程2.3 Arm端点GPU为了在软件层面控制端点GPU, Arm提供了两个GPU软件栈:(1)用户层中的闭源用户运行时(例如, OpenCL [20]),以及(2)内核层中的开源GPU驱动程序。用户级运行时提供各种高级API、内置函数和特定数据结构,以支持开发GPU应用程序。内核级GPU驱动程序主要通过内存映射接口(MMIO)控制内存分配和任务调度与提交。GPU应用程序由一个或多个GPU任务组成,这些任务还包含多个GPU线程。图1显示了Arm端点GPU上GPU应用程序的典型执行:首先,GPU软件堆栈为GPU任务中的基本组件分配内存(即,GPU缓冲区、代码段和非机密元数据),并构建相应的GPU页表(1)。接下来,通过直接存储器访问(DMA)控制器(2)将数据加载到分配的GPU缓冲区中。然后,GPU软件栈将二进制代码加载到GPU存储器中(3)。 之后,通过配置GPUMMIO寄存器发送GPU任务开始命令(4)。 在接收到提交命令后,GPU基于代码和数据计算任务,并将执行结果存储在特定存储器(5)中。 一旦GPU任务完成,GPU发送硬件中断以通知GPU软件栈中的中断处理程序。 对于多任务GPU应用程序,GPU软件堆栈重复加载任务代码,提交任务,并等待完成GPU计算(3 -6)。相比之下,数据通常只加载一次,遵循GPU编程约定[9,76,87]。请注意,大多数Arm端点GPU配备多个着色器核心,同时处理属于同一GPU任务的多个线程[15,77]。然而,GPU任务在Arm端点GPU上顺序执行。与服务器GPU软件栈(如NVIDIA CUDA[72])不同,它可以在没有数据依赖的情况下并发执行任务,研究表明,主流Arm端点GPU [61]和相关·DMADMA➀➁➂➃➆中断GPU数据(结果)代码数据页表➅MMIO··772CCSYunjie Deng等.SDK [53]尚未支持并发执行。 在处理完所有任务后,可通过DMA直接访问或导出结果(○7)。 StrongB ox执行任务执行指令(○4和○6),并为数据传输建立一个执行指令数据路径(○2和○7)。3威胁模型和假设我们假设一个特权攻击者试图泄露或篡改GPU应用程序的敏感数据和执行结果具体而言,攻击者可以控制内核以及整个GPU软件堆栈,包括GPU驱动程序、运行时和其他外围驱动程序。为了篡改GPU应用程序中的敏感数据和代码,攻击者可以直接访问用于GPU任务的统一内存,或者控制外围设备来破坏检测。除了直接访问之外,控制GPU驱动程序的攻击者还可以危害GPU应用程序的内存管理,将敏感数据映射到未受保护的区域。我们还考虑了一个旨在打破受害者GPU应用程序的隔离执行环境的对手,例如提交任意数量的恶意任务。 通过修改相应的GPU页表,攻击者可以要求恶意任务访问受害者任务的内存。遵循基于SGX的GPU TEE的现有最佳实践[ 51 ],我们假设GPU、信任区及其固件是可信的,因为它们可以通过来自可信远程主机的安全引导和证明因此,StrongBox固件通过验证正确加载到Arm端点中。此外,我们信任安全世界,不考虑对受信任的内核或应用程序的威胁。此外,我们认为基于密码的攻击、物理攻击和侧信道/间谍攻击超出了本文的范围 与现有的GPUTEE [51,90,93]一样,我们没有解决针对长时间运行的应用程序的拒绝服务攻击,尽管其他基于TrustZone的TEE [91]是这种攻击的潜在解决方案。4设计StrongBox允许用户在不受信任的系统中使用机密的GPU应用程序 回想一下,这些应用程序包括人脸识别[50],指纹识别[56]和神经网络推理[46,80]等任务,所有这些都需要一定程度的潜在敏感数据。我们设想的场景中,用户执行部署的机密GPU应用程序,以建立加密密钥与StrongBox使用密钥管理协议。 为了防止数据传输过程中的数据泄漏,用户将加密数据发送到StrongBox。然后StrongBox保护和解密数据,允许GPU安全地处理它们。最后,用户从StrongBox中检索加密的结果与Arm端点GPU相比,GPU设备涉及各种架构差异,这种硬件修改会对兼容性产生不利影响。 基于这些问题,我们提出了StrongBox来保护Arm端点上的GPU计算。4.1目标StrongBox的目标是在Arm端点设备上实现有效、轻量级和兼容的GPU TEE,其中操作系统和应用程序可能会受到影响。因此,我们的设计必须实现以下三个关键目标。G1:为安全的GPU任务提供可信的执行环境。 主要目标是保护GPU应用程序的敏感数据。为了实现这一目标,StrongBox必须保护从主机操作系统到执行环境的两种(1)从操作系统到GPU和(2)从操作系统到GPU任务的存储在前一种情况下,StrongBox将GPU的控制流从不受信任的GPU驱动程序转移到TrustZone的安全世界,包括与GPU寄存器和GPU中断的交互(参见第4.3节)。对于后一种情况,StrongBox管理对统一内存的访问,以限制对任务执行环境的不可信访问(参见第4.4节)。G2:减少可信计算基础的规模其次,我们必须保持一个轻量级的TEE。一些GPU TEE和安全计算系统[51,64,90]信任大型软件堆栈(例如,库和驱动程序)用于预处理敏感数据,从而暴露TEE内的大攻击面然而,我们观察到软件栈可以执行其关键功能(例如,GPU任务的存储器管理和调度GPU任务),而无需直接访问敏感数据。因此,我们在正常情况下保留了GPU驱动程序,同时引入了一个轻量级的StrongBox运行时,即使驱动程序被压缩,也可以保护GPU内存。 这种设计实现了一个薄的TCB,而不会破坏现有系统的安全性(在第4.2节中讨论)。G3:确保与组终点的兼容性第三,我们介绍了一个专为Arm端点设计的GPU TEE,对底层平台进行了最小的更改。最先进的GPU TEE [51,90,93]采用额外的硬件组件来确保安全计算。这些专门的硬件要求增加了与迁移系统相关的挑战以及相关的生产成本。因此,我们设计的方法既不依赖于专门的硬件组件,也不依赖于设备的物理修改-相反,我们使用通用Arm设备上广泛可用的功能(在第4.2节中讨论)。4.2ST ronG Box概述在详细介绍StrongBox的设计之前,我们先讨论三种可能的替代设计选择。首先,我们可以将GPU移植到TrustZone [64]。然而,这种隔离需要迁移整个GPU和相关软件组件(例如,GPU驱动程序和运行时)来保护世界,这将总是需要一个大的TCB,并暴露一个大的攻击面。其次,我们可以虚拟化整个GPU。然而,这样的设计需要管理程序来支持存储器虚拟化、GPU状态虚拟化、调度和其他关键功能,因此需要大的TCB和高的运行时开销。第三,我们可以添加额外的硬件来支持GPU的TEE.Graviton [90]和最近的NVIDIA H100 GPU [73]在GPU芯片中添加了额外的硬件,为GPU设计和安排了一个保密的环境。但这种图2说明了StrongBox的设计,它分为软件和硬件组件。如图2-左所示,GPU应用程序(包括非机密和机密)首先由GPU运行时处理(例如,OpenCL [20])和主机操作系统。主机操作系统使用GPU驱动程序通过DMA传输基本数据,以处理内存管理和任务调度。注意,非机密和机密GPU应用中的GPU任务分别被分类为非安全任务和安全任务。然后,非安全任务继续到GPU。然而,当一个安全任务准备好执行时,GPU驱动程序会触发一个smc指令,将控制流转移到我们的StrongBox运行时。StrongBox运行时部署在安全监视器(EL3)中,以保护安全任务,773S TRONGBOX:A GPU TEE on Arm EndpointsCCS '22,November7-11,2022,LosAngeles,CA,USA.软件硬件EL0EL1EL2SEL0SEL1SEL2EL3添加/修改可信不受信任的CPU访问GPU访问图2:ST ronG Box体系结构概述可信模块(例如,安全引导和密钥管理模块)。为了保护安全任务中的数据安全,StrongBox提供了两个主要组件:GPU Guard和任务保护器。GPU Guard提供了一个保护层,确保GPU可以隔离执行,并确保在返回最终计算结果之前完成安全任务。任务保护工程谭- DEM与GPU后卫,以确保敏感数据得到保护,提供保密性。这些组件共同帮助实现我们的独立GPU执行和机密存储目标。此外,我们在操作系统(EL1)中重用GPU运行时和驱动程序软件,以减少整体TCB大小(G2)。 GPU驱动程序和运行时管理机密和非机密GPU应用程序(EL0)的硬件资源和数据传输,而瘦StrongBox运行时则确保数据安全。因此,我们的方法确保GPU可以在隔离的情况下执行安全任务,同时在可能受损的操作系统中执行。请注意,大多数Arm端点上都没有部署虚拟机管理程序,并且StrongBox不需要修改安全世界(即,SEL0–对于硬件组件,StrongBox利用现有的和软件可配置的设备来确保高兼容性(G3)。我们将系统的内存分为(4)安全任务RAM,其是为机密GPU应用保留的固定的非安全存储器区域,以动态地请求存储器并创建GPU页表映射。为了保护这两个可信区域,StrongBox利用了内存管理单元(MMU)和一个专门配置的TZASC。在MMU中,StrongBox执行阶段2转换以控制从主机操作系统到GPU MMIO接口和两个受信任区域的访问。同时,我们利用TZASC来控制GPU和其他外设对这两个可信区域的访问在以下部分中,我们将介绍StrongBox如何与非机密软件堆栈一起工作以保护执行环境,以及软件组件的行为方式。4.3GPU在关键执行上的独占性StrongBox的主要安全目标是提供安全GPU任务的独占执行。也就是说,如果正在执行任何安全任务,在GPU上,不能同时在GPU上调度其它任务如第3节所示,控制GPU MMIO的攻击者可以破坏隔离的执行环境。为了抵御这种攻击者,我们采用了最先进的GPU TEE来武装GPU设备,这需要解决两个问题。首先,虽然现有的GPU TEE将繁重的GPU驱动程序代码迁移到飞地或TEE中以控制GPU,但我们将此代码保留在不受信任的内核中,而是对将控制路由到StrongBox运行时的特定smc事件做出反应。其次,我们使用现有的Arm功能来控制GPU硬件的访问-特别是,Stage-2转换有助于在计算期间锁定GPUMMIO寄存器的系统映射。通过利用自定义smc事件处理程序和Stage-2转换,我们可以防止高特权攻击者获得GPU的控制权或执行恶意任务。StrongBox在不受信任的内核中重用现有的GPU驱动程序,并使用轻量级软件组件来保护执行。 为了实现这一点,我们必须与GPU驱动程序合作,在与安全GPU任务的创建、管理和执行相关的几种情况下重新路由控制。首先,我们设计了一个专用的安全任务调度规则。 一旦安全任务准备好执行,任何非安全计算都将被迫重新调度并等待提交的安全任务完成。对于正在运行的任务,GPU驱动程序反复评估GPU寄存器的内容,以确定是否有任何任务正在执行。一旦我们确定GPU没有执行任何任务 ,GPU 驱 动程 序 将使 用专 用 的 smc 调 用, 该 调用 将在StrongBox运行时发出保护和安全检查的信号相比之下,正常的、不安全的任务可以像往常一样提交-GPU驱动程序不会发出smc调用来与我们的安全组件一起工作回想一下,GPU驱动程序是不受信任的,因为它是不受信任的操作系统的一部分-但是,我们可以减轻危及GPU驱动程序的攻击。 当我们收到smc呼叫时,我们会使用GPU Guard来检测和消除威胁。GPU Guard通过隔离和安全地检查执行环境来防御这些攻击。在向GPU提交安全任务之前,GPU Guard会通过Stage-2转换限制对GPU MMIO的访问,正常世界安全的世界主机OSGPU驱动程序安全监视器Strongbox信任模块安全OS任务保护器GPU GuardDMA控制器存储器管理器任务调度器安全的应用User GPU安全的应用GPU应用CPUGPUAPPNSS任务TaskMMIOTZASCMMUS-2MMUSMC可信RAM正常RAMS任务RAMNS任务RAM774CCSYunjie Deng等.GPU页表区域任务区域申请准备任务1执行任务1切换出任务2执行任务2切换出...所有任务已完成Buf. 1Buf. 2 C1缓冲液3 Buf. 4辆C2任务1在代码中出来Buf. 1C1Buf. 2Buf. 2任务2在代码中出来Buf. 2C2Buf. 3...Buf. 4完全可扩展写保护DMA禁止OS-DMA禁止GPU-DMA禁止OS-GPU-DMA禁止图3:当执行机密GPU应用程序时,安全任务RAM上的访问权限变化任务1和任务2是应用程序中的两个示例任务任务1包含输入Buf。1、Buf。2、输出Buf.2和代码段C1。任务2包含输入Buf。2、Buf。3、输出Buf. 4和代码段C2。禁止来自不可信操作系统的未经授权的访问针对GPU MMIO接口的任何修改GPU寄存器或提交任务)通过生成阶段2页面错误异常来捕获,而StrongBox中的受信任操作不受影响。锁定GPU MMIO后,GPU Guard保证GPU环境安全。首先,GPU Guard检查GPU任务状态寄存器,以确保没有隐藏的任务。接下来,GPUGuard与任务保护器一起工作,以进一步检查其他关键GPU寄存器(例如,页表基址寄存器和GPU任务代码寄存器)。任务保护器还检查包含加载任务的GPU页表、代码和数据区域的内存,如第4.4节所述。页表内存在第一个安全任务执行前被StrongBox锁定和检查,在最后一个安全任务完成后被解锁。该检查可防止攻击者将敏感的GPU缓冲区地址映射到失控的内存中。此外,在将每个安全任务提交给GPU之前,我们会对代码和数据区域执行完整性检查。同时,为了在StrongBox中处理GPU中断,GPU中断的安全状态通过GIC从非安全切换到安全。最后,GPUGuard通过写任务子任务寄存器将准备好的任务提交给GPU然后,GPU将按预期执行准备好的任务提交安全任务后,StrongBox返回GPU驱动程序并释放CPU。因此,StrongBox在GPU计算期间不会阻塞CPU核心 为了安全的任务同步,StrongBox要求GPU驱动程序计划要提交的GPU任务,但它不支持并发提交,因为主流Arm端点GPU [61]和相关SDK [53]尚未支持GPU任务的并发计算(如第2.3节所述)。而且,在处理时,StrongBox不会阻止其他不与GPU交互的smc调用。当计算完成时,GPU发送一个中断(之前配置为安全)来通知StrongBox。因此,StrongBox运行时拦截GPU中断并恢复GPUMMIO和GPU存储器访问权限。此外,GPU Guard配置GIC并切换GPU中断返回到非安全状态,以允许GPU驱动程序处理中断。在恢复MMIO访问权限和中断状态后,允许GPU处理新任务。4.4动态和细粒度保护StrongBox必须确保敏感数据的机密性以及安全任务中存储数据的安全GPU任务的完整性RAM. 因此,攻击者可能尝试访问在GPU缓冲区内存储敏感数据的统一 存 储 器 。 或者, 攻 击 者 可 能 会 尝 试 修 改 GPU 页 表 条 目(PTE),将敏感数据导出到未受保护的区域。 为了保证安全性,一种直接的方法是用一个或多个TZASC槽静态地保护整个任务存储器。然而,这导致了两个具有挑战性的问题。首先,这种静态保护可能严重破坏GPU驱动程序的功能。例如,它阻止GPU驱动程序处理安全任务的非机密元数据。第二,敏感数据和代码的布局在物理上分散,并在不同GPU应用程序的安全任务RAM中动态变化因此,静态TZASC分区可能无法在内存管理必须灵活的统一内存场景中工作。另一个基于现有Arm安全计算的解决方案[64]是将GPU软件栈移植到TrustZone中;然而,这会产生较大的TCB,并打破了我们最小TCB的设计原则。因此,我们需要一种替代静态TZASC分区的方法。相反,我们开发了一个动态的和细粒度的记忆保护机制相结合的阶段2翻译和TZASC。我们明确地将安全任务RAM划分为两个物理上连续的区域:任务区域和GPU页表区域。 对于任务区域,Stage-2转换动态地对包含不同阶段中的数据和代码的关键内存执行页级保护,并且我们使用TZASC插槽来管理来自DMA、GPU和其他外围设备的访问。 对于GPU页表区域,StrongBox采用Stage-2翻译来监控来自不可信操作系统的修改请求。为了避免潜在的外设攻击,我们进一步利用TZASC来禁止外设对GPU页表区域的写访问。如果这些区域中的内容不正确,PTEs密文密文代码密文密文代码PTEs明文明文代码密文密文代码PTEs密文明文代码密文密文代码PTEs密文密文代码密文密文代码PTEs密文明文代码明文明文代码PTEs密文密文代码密文密文代码775S TRONGBOX:A GPU TEE on Arm EndpointsCCS '22,November7-11,2022,LosAngeles,CA,USA.分配后,我们终止应用程序并删除任何敏感数据。我们将这两个区域的访问权限分为六种类型:完全可扩展:允许任何读/写操作。写保护:允许从任何组件的读操作,但监测写操作。DMA Prohibited:禁止通过DMA从不受信任的外设OS-DMA Prohibited:禁止通过DMA从操作系统和不受信任的外围设备GPU-DMA Prohibited:禁止通过DMA从GPU和不受信任的外设OS-GPU-DMAProhibited:禁止通过DMA从OS、GPU和不受信任的外设进行读/写操作。图3显示了机密GPU应用程序生命周期中访问权限的演变安全任务RAM的初始访问权限被配置为完全可扩展,以允许通过GPU软件堆栈准备提交的应用程序。在任务执行和切换期间,GPU页表区域被配置为写保护,以避免敏感数据的潜在泄漏。任务保护器捕获对GPU页表的修改,并引入任何恶意内存映射(例如, 双重映射和映射到不可信区域)。此外,由于GPU页表最初由GPU驱动程序准备,因此任务保护器在运行第一个安全任务之前验证整个页表。至于任务区域,每个GPU缓冲区和代码区域的访问权限可以不同。 在执行安全任务时,我们将整个任务区域配置为DMAProhibited ,但执行任务的 内 存 除外, 该 内 存 为 OS-DMAProhibited,以确保代码和数据区域的后续加密和完整性验证。在任务切换期间,GPU缓冲区默认被加密(例如,任务1中的缓冲区1,以及任务2中的缓冲区2、3和4对于在后续安全任务中使用的任何缓冲器(例如,任务1中的Buffer 2), StrongBox支持保留明文,并将明文内存配置为OS-GPU-DMA Prohibited,除明文数据内存外的所有内存都配置为GPU-DMA Prohibited,直到提交下一个安全任务。所有任务完成后,所有敏感的明文数据都将被加密,整个安全任务RAM将被配置为完全可扩展,以允许用户加载结果。此外,出于安全目的,StrongBox任务保护器恢复执行环境。具体地,在恢复到非安全状态之前,对执行的结果进行加密和散列。因此,数据的明文实例仅在安全任务执行期间存在。4.5多任务计算的优化StrongBox还在GPU应用程序上引入了非平凡的开销。我们观察到,加密功能和访问权限-GPU缓冲区上的场景变化引起最大的开销,这可以在典型的GPU应用程序中在多个任务上聚合。 在各种多任务场景中(例如,图像处理[43,69,75]、机器学习推理[88]、信号处理[41]和密码学加速[65]),来自一个任务的数据可以馈送到下一个任务。默认情况下,任务保护器不必要地加密来自一个任务的所有数据缓冲区,即使随后的安全任务将立即使用数据。因此,我们可以通过利用GPU缓冲区的输入/输出关系来优化这些步骤。StrongBox跟踪GPU应用程序的缓冲区使用情况,并支持灵活的加密策略来处理不同类型的GPU缓冲区。更具体地说,我们在表1中详细介绍了该策略。任务保护器在第一次使用GPU缓冲区时对数据应用三种策略之一。对于需要保密的数据,我们使用加密策略(F1),而策略F2可以应用于仅需要完整性检查的GPU缓冲区对于在GPU计算之前没有有意义数据的GPU缓冲器,可以选择策略F3。在最后一次使用缓冲区后,StrongBox只需要加密和暴露(L1)输出缓冲区,同时擦除(L2)输入数据中的数据和GPU缓冲区上的临时数据。注意,在安全任务执行和任务切换期间,明文缓冲区被维持为具有适当的保护,这仅允许来自安全状态CPU和经认证的安全GPU任务的访问。这些策略允许灵活的内存管理,同时保护敏感数据。表1:ST ronG Box在两个时间戳对不同GPU缓冲区的操作。F1- F3和L1- L2表示在两个时间戳处理GPU缓冲区的GPU缓冲区上的时间戳(F1)强制保护+解密防止不同机密GPU应用程序中的安全任务共享安全任务RAM。任何其他机密任务首次处理时间(F2)强制保护+完整性检查(F3)强制执行保护GPU应用程序在前一个机密GPU应用程序完成所有安全任务并安全终止之前无法启动。这种内存组织为安全GPU任务使用的任何敏感数据提供了强大的接下来,我们设计了一个安全的数据路径,以避免在DMA传输数据泄漏通过DMA传输的任何敏感数据都需要使用基于哈希的消息认证码(HMAC)进行加密和完整性检查。 任务保护器执行安全的介绍,解密或加密的敏感数据与共享密钥,并计算每个HMAC根据明文数据或代码。由于密钥、中间或明文数据以及相应的任务页表的存储器受到我们的Stage-2翻译和TZASC机制的保护,因此针对计算出的哈希值的TOCTTOU攻击是不可行的。接下来,任务保护器通知GPU Guard继续任务提交,或者由于验证失败而中止任务提交。当安全GPU任务完成时,(L1)加密+取消保护(L2)加密+取消保护表1中所示的策略完全可以防止不正确的规范情况和试图通过破坏定义的策略来泄漏敏感数据 StrongBox始终在敏感数据被解密之前保护任何GPU缓冲区,并且始终在终止保护之前加密或擦除GPU缓冲区中的敏感数据。此外,我们考虑攻击者可以提前终止GPU应用程序并将明文数据留在内存中。但是,敏感数据仍然受到保护,并与不受信任的操作系统隔离。为了进一步保证数据安全,我们在创建下一个GPU应用程序之前执行安全终止检查在检查过程中······上次处理时间776CCSYunjie Deng等.被删除.如
下载后可阅读完整内容,剩余1页未读,立即下载
cpongm
- 粉丝: 5
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- Aspose资源包:转PDF无水印学习工具
- Go语言控制台输入输出操作教程
- 红外遥控报警器原理及应用详解下载
- 控制卷筒纸侧面位置的先进装置技术解析
- 易语言加解密例程源码详解与实践
- SpringMVC客户管理系统:Hibernate与Bootstrap集成实践
- 深入理解JavaScript Set与WeakSet的使用
- 深入解析接收存储及发送装置的广播技术方法
- zyString模块1.0源码公开-易语言编程利器
- Android记分板UI设计:SimpleScoreboard的简洁与高效
- 量子网格列设置存储组件:开源解决方案
- 全面技术源码合集:CcVita Php Check v1.1
- 中军创易语言抢购软件:付款功能解析
- Python手动实现图像滤波教程
- MATLAB源代码实现基于DFT的量子传输分析
- 开源程序Hukoch.exe:简化食谱管理与导入功能
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功