基于内存隔离和权限限制的虚拟机保护方法
吴新龙、
龚迅、
杨淼淼、
黄国胜、
史英志、
董平
《Electronics》:Memory Isolation and Privilege Restriction-Based Virtual Machine Protection Method
Xinlong Wu,
Xun Gong,
Miaomiao Yang,
Guosheng Huang,
Yingzhi Shi and
Ping Dong
【字体:
大
中
小
】
时间:2026年03月10日
来源:Electronics 2.6
编辑推荐:
摘要 多租户云环境中的数据在组织间共享越来越普遍,因此强大的内存隔离成为一项关键要求。现有的机密计算机制(如AMD SEV)提供了硬件强制的保护,但它们需要专门的处理器,并会带来非微不足道的性能开销,这限制了它们在异构云中的部署。本文介绍了DASPRI,这
摘要 多租户云环境中的数据在组织间共享越来越普遍,因此强大的内存隔离成为一项关键要求。现有的机密计算机制(如AMD SEV)提供了硬件强制的保护,但它们需要专门的处理器,并会带来非微不足道的性能开销,这限制了它们在异构云中的部署。本文介绍了DASPRI,这是一种基于软件的方法,通过结合双重地址空间和权限限制来为受信任的虚拟机构建一个隔离的执行环境。DASPRI在NUMA系统上将物理内存划分为普通区域和隔离区域,并通过监控页面错误和内核分配路径,将所有受信任VM的内存分配引导到隔离区域。它还通过中介直接和动态的内核映射以及为受信任和普通VM维护独立的页面缓存来加强隔离区域。远程认证被集成进来,以保护用于识别受信任VM的元数据的完整性。我们在运行OpenEuler的华为Kunpeng AArch64服务器上实现了DASPRI,并使用microbenchmarks和UnixBench对其进行了评估。实验结果表明,DASPRI在基本系统操作上实现了强大的内存隔离,开销不到5%,并且宿主整体性能仅降低了1.3%。
1. 引言
随着技术的不断进步,云计算的规模正在迅速扩大,现在被应用于社会生活的各个方面。世界各地的政府都越来越重视云计算。2022年12月,中国国务院发布了《扩大国内需求的战略规划纲要》[1],强调加快信息基础设施建设并促进云计算的更广泛和更深入的应用。同样,2024年7月,美国管理和预算办公室(OMB)发布了指南[2],旨在简化并加速政府机构采用现代云计算技术。
随着云计算规模的持续增长,确保用户上传数据的安全已成为一个关键问题。2023年,白宫发布了《国家网络安全战略》[3],强调了提高关键基础设施(包括云计算基础设施)的网络安全和抗灾能力的重要性。
为了增强云环境中虚拟机内存数据的安全性,研究人员和行业供应商提出了各种解决方案。英特尔的软件保护扩展(SGX)[4]通过CPU指令扩展提供了一个受信任的执行环境,将敏感代码和数据封装在隔离区中,以防止操作系统干扰,从而显著提高了安全性。然而,由于隔离区内可用内存有限,在云环境中处理大规模计算任务时,频繁的页面调度会增加系统开销。ARM的TrustZone技术[5]将系统内存划分为正常世界和安全世界,保护安全世界内的内存和缓存数据。然而,在部署大量虚拟机时,地址转换的效率可能会受到影响。此外,基于内存加密的AMD可信执行环境通过硬件加密来保护整个内存数据的安全,但频繁的加密和解密操作会引入额外的时间开销。
总之,这些解决方案在隔离灵活性、受限的隔离空间和高性能开销方面存在局限性。随着大规模神经网络模型在云计算中的日益普及,越来越多的企业将模型和数据上传到公共云中进行训练。然而,现有的内存数据保护方案在处理大规模数据任务时已被证明不足。因此,需要一种解决方案来为虚拟机内存空间构建一个受信任的环境,同时确保性能,防止底层操作系统或其他进程未经授权访问虚拟机内存数据。本文提出了DASPRI,这是一种基于软件的方法,通过将主机物理内存划分为标准区域和隔离区域来强制执行物理内存隔离。普通进程或虚拟机只能访问标准区域,而隔离区域是不可访问的。即使攻击者获得了特权级的主机侧访问权限(例如,通过利用虚拟机逃逸漏洞)并试图通过主机内存管理接口映射或读取隔离页面,DASPRI也会中介关键的内存分配和映射路径,以防止对受信任VM内存的未经授权访问。本研究的主要贡献如下:
1. 为受信任的VM提供软件强制的物理内存隔离。我们设计了一种考虑NUMA的隔离机制,将受信任VM分配到专用的隔离物理内存区域,同时将普通VM保留在标准区域。
2. 通过中介特权映射路径(例如,直接和动态映射)和防止跨域共享(通过文件备份映射)来限制权限,以增强隔离区域的安全性。
3. 在运行OpenEuler的真实Kunpeng AArch64服务器上实现了DASPRI,并使用microbenchmarks和UnixBench 5.2.1进行了评估,显示出强大的隔离能力和低开销。
2. 相关工作
现有的内存保护和隔离技术大致可以分为两类。第一类依赖于硬件辅助机制,包括孤岛/TEE设计(例如,Intel SGX和ARM TrustZone)和机密虚拟化技术(例如,AMD SEV和Intel TDX)。第二类探索基于软件或混合的方法,旨在通过OS/管理程序机制来减少对硬件的依赖。在本节中,我们首先回顾基于硬件的解决方案,然后讨论基于软件或混合的方法,以突出DASPRI所解决的差距。
英特尔的SGX [6,7] 技术旨在创建一个安全执行环境来保护敏感数据。它允许应用程序将敏感数据和代码存储在称为隔离区 [8] 的受保护内存区域中,确保数据的机密性和完整性。SGX为隔离区分配专用的物理内存区域,从而增强数据安全。然而,SGX的内存容量有限,最多支持256MB,这对于云环境中的虚拟机来说是不够的。为了解决这个问题,Coppolino等人 [9] 在2020年提出了VICE解决方案,将同态加密与SGX结合使用。在VICE中,加密操作在SGX隔离区内执行,而对密文的计算使用同态加密技术在隔离区外进行。该解决方案主要应用于工业云领域,其中数据通过TLS传输到云中,在SGX内进行加密,然后在外部处理。通过这种组合,VICE缓解了SGX的内存限制,但同态加密仍然引入了计算开销。
与第一代相比,英特尔的SGX v2引入了几项旨在提高性能的架构改进 [10]。主要增强包括将隔离区内存容量提高到每个处理器512 GB——在多插槽系统上可扩展到1 TB [11]——以及支持跨NUMA节点的安全扩展和减轻内存保护开销。这些改进理论上解决了SGX v1的问题,但El-Hindi等人的研究 [12] 表明,当数据超出每个NUMA节点的EPC容量时,由于分页机制仍然存在性能损失。因此,尽管SGX v2有所改进,云环境中的虚拟机应用程序仍然面临挑战。
除了性能挑战外,研究人员还探讨了SGX的安全性。例如,Chen等人 [13] 发现,由于英特尔CPU的电压请求是未加密的,攻击者可以利用这一漏洞通过控制电压信号来攻击SGX隔离区,可能窃取加密密钥。为了提高安全性,Wang等人 [14] 建议使用内存安全语言RUST来编写SGX代码,但这种方法依赖于软件安全性,并不完全依赖硬件保护,因此存在一些风险。
与英特尔的SGX技术相比,ARM的TrustZone [15] 在内存保护领域也受到了关注。TrustZone将CPU划分为两种状态:安全世界和普通世界。在普通世界中,应用程序无法访问安全世界的内存资源;然而,当系统进入安全世界时,CPU可以访问并保护其中的数据。虽然TrustZone在数据保护方面具有优势,但它仅限于ARM架构,限制了其在云环境中的广泛应用。
由于依赖于硬件辅助的隔离保护,基于TrustZone的系统 [5,16] 通常假设整个安全世界的可信性,包括在安全世界中运行的受信任应用程序。然而,尽管TrustZone确保了安全世界和普通世界之间的隔离,但仍存在许多基于软件的漏洞,威胁整个安全世界的安全 [17,18,19]。为了保护TrustZone中安全世界的内存安全,Wan等人 [20] 提出了RustTEE。该解决方案使用Rust编程语言为安全世界中的应用程序提供了一个内存安全的开发环境。该解决方案有效地消除了安全世界中的内存漏洞,但没有解决TrustZone与ARM硬件架构紧密耦合的问题。
除了孤岛式的TEE之外,机密虚拟化旨在通过将保护机制移到CPU/固件辅助机制中,来保护虚拟机内存免受潜在不受信任的主机的攻击。AMD安全加密虚拟化(SEV)[21] 通过由安全处理器管理的每个VM密钥来加密虚拟机的内存,当数据在DRAM和CPU之间移动时,加密/解密由硬件透明地执行。因此,主机/管理程序无法直接读取客户内存的明文。然而,SEV需要支持SEV的处理器,并且不能假设在异构云环境中使用。
英特尔的信任域扩展(TDX)[22] 通过一个由CPU管理的模块提供机密VM,该模块对受保护的内存和CPU状态执行访问控制。除了内存加密外,TDX还使用显式的访问控制检查来限制主机/管理程序对受保护域的访问。与SEV类似,TDX依赖于特定的硬件支持,仅在支持的平台上可用。
总之,SEV主要依赖于每个VM的内存加密来防止主机读取客户内存,而TDX结合了内存加密和对受保护域的CPU强制访问控制。尽管这些技术提供了强大的保护,但它们的部署取决于特定硬件的可用性。相比之下,DASPRI是硬件独立的,专注于通过软件机制在普通服务器上强制执行物理内存隔离和特权访问限制,这对于异构云环境特别有用。
为了解决TrustZone依赖于ARM硬件架构的问题,Seungkyun等人 [23] 提出了MyTEE,一种通过软件构建受信任执行环境的解决方案。这种方法通过减少内核权限来防止内核非法访问安全世界的内存资源,从而在某种程度上使安全世界摆脱了对TrustZone硬件的依赖。然而,这种解决方案将普通世界的页表存储在安全世界中,导致为了地址转换而频繁地在普通世界和安全世界之间切换,这会引入额外的时间开销。
此外,Feng等人 [24] 提出了一种新的隔离区方案,该方案通过添加硬件指令来支持动态内存扩展和保护。Xu等人 [25] 提出通过将受保护的过程划分为受信任和不受信任的代码来保护进程安全。然而,这样的解决方案需要特定的硬件支持。Li等人 [26] 使用Rust开发了关键的Linux内核组件来提高内存数据安全。然而,这种解决方案目前只替换了一些组件,无法完全替换Linux内核。
总之,虽然现有的硬件辅助解决方案可以提供强大的隔离,但它们常常受到硬件依赖性、部署可用性或内存容量限制的约束。基于软件的方法减少了这种依赖性,但可能会引入额外的开销或需要非微不足道的系统更改。这些限制促使人们研究一种硬件独立的方法,以在云环境中提供实际的虚拟机内存隔离,这也是本工作的重点。
3. 材料和方法
3.1. 威胁模型和系统概述
本小节定义了本文中使用的威胁模型和术语,并总结了DASPRI的设计目标和整体架构,为后续描述的机制提供背景。
为了明确信任边界,我们区分了两种情况:
(1)运行时权限提升:如果对手(例如,从N-VM逃逸)获得了主机root权限,同时主机内核/管理程序代码的完整性保持不变,DASPRI的权限限制就是为这种情况设计的,防止通过主机侧映射接口对ZONE_ISOLATE进行未经授权的映射/访问。
(2)离线代码篡改:如果主机内核/管理程序或DASPRI代码被任意修补(例如,删除挂钩),这违反了静态完整性假设。在我们的架构中,预期这种篡改行为会在可信虚拟机启动或秘密提供之前被完整性验证/认证机制检测到。因此,我们不默认假设管理程序是可信的;相反,我们在使用时依赖完整性验证,并在运行时执行权限限制。在保密计算架构中,对硬件信任根的信任是一个标准公理。此外,我们假设云管理中心(CMC)是安全的。在现实的公共云部署中,CMC(控制平面)在逻辑上和物理上都与计算节点(数据平面)严格隔离,并在严格的审计和访问控制下运行。因此,攻击者利用多租户计算节点管理程序(例如通过虚拟机逃逸)的概率要比破坏中央CMC的概率高得多。因此,DASPRI专门针对计算节点管理程序被攻破的威胁。
3.1.1 定义
定义1(可信虚拟机(T-VM):设??vm?? ={????,0,????,1,…,????,??}表示要启动的虚拟机i的关键组件,设??vm?? ={????,0,????,1,…,????,??}表示它们预期的基线测量值。这里,i索引虚拟机实例,?? ∈{0,…,??}索引虚拟机i的关键组件。只有当每个组件都由硬件信任根测量并且得到的测量值与基线匹配时,才认为虚拟机是可信的:{???(????,0),…,???(????,??)}={????,0,…,????,??}。(1)等价地,???:(???∈{0,…,??},????(????,??)=????,??)?T-VM??,(2)其中H表示一个抗碰撞哈希函数。此外,由于这项工作强调通过增强物理内存隔离来防止未经授权的访问,我们定义了隔离的概念如下:
定义2(隔离):对于一个物理页面?? ∈???????????????????????????????,只有当访问实体S被授权时,该页面才能被映射。这正式表示为:???∈????????_??????????????:??????????????????(??,??)??????????????????????????????(??,??)(3)在DASPRI中,?????????????????????????????(??,??)由可信虚拟机列表(TVL)和强制执行的主机端分配/映射策略决定。
3.1.2 设计目标
DASPRI旨在解决涉及多个参与者的协作计算场景中的数据泄露风险。具体来说,它旨在实现以下三个安全目标:
1. 系统完整性。设计不得引入新的攻击面,也不应削弱系统的现有保护机制(包括基于硬件的机制,如TPM安全启动和处理器级隔离)。例如,即使攻击者利用系统漏洞将权限提升到主机内核级别,系统内核仍受可信硬件强制执行的安全启动保护,防止主机内核被替换。
2. 隔离。设计必须确保参与者数据存储在物理隔离的内存区域中,防止未经授权的访问。例如,即使远程攻击者控制了与同一主机上的T-VM共驻的N-VM,攻击者也不能通过利用共享硬件资源或权限提升攻击来访问T-VM的内存。
3. 低开销。在实现上述两个安全目标的同时,系统必须保持与未部署DASPRI的标准系统相当的性能水平,确保解决方案的实用性。
3.1.3 架构概述
虽然可信计算技术可以为用户提供可验证的运行时环境,但它们本身并不能防止执行过程中的用户数据泄露。为了解决这一限制,我们提出了DASPRI,这是一种基于内存隔离和权限限制的虚拟机保护机制。DASPRI为T-VM构建了一个隔离的执行环境,以降低数据泄露的风险。
图1展示了DASPRI的整体架构,它包含两个实体和三个核心模块。计算节点托管多个虚拟机以提供基本的云服务,而云管理中心监控和管理计算节点和虚拟机的生命周期。
图1. DASPRI的整体架构。三个核心模块定义如下:
1. 物理内存隔离模块:该模块在NUMA架构下划分连续的物理内存区域,作为T-VM的专用隔离内存区域。它还修改内存解析例程,以确保隔离区域在整个计算节点的运行期间始终保持可用。
2. 内存请求控制模块:该模块在内核中实现,拦截物理内存分配请求并根据每个计算节点上维护的可信虚拟机列表(TVL)进行调度。来自普通虚拟机(N-VM)的内存请求被映射到标准内存区域,而来自T-VM的请求被导向隔离区域。云管理中心使用远程认证定期验证每个节点上本地TVL的完整性。此外,通过修改页面缓存机制,该模块确保只读文件-backed页面在标准区域和隔离区域中分别映射,防止普通进程通过共享只读映射访问隔离内存。
3. 权限限制模块:该模块通过修改直接映射区域和动态映射区域的内存映射逻辑来执行访问控制。它监控关键内核功能,防止特权进程非法映射或访问隔离内存区域的内容。
3.1.4 攻击场景
在现实世界的云部署中,可信虚拟机和潜在的恶意虚拟机共享同一物理主机是不可避免的。这种共驻为攻击者提供了破坏数据保密性或完整性的机会。为了解决这些风险,DASPRI引入了增强的隔离机制和权限控制,并针对三种代表性的威胁场景进行了评估。
第一种场景涉及共驻攻击,攻击者在与目标T-VM相同的主机上部署一个恶意虚拟机。通过利用虚拟机逃逸漏洞,攻击者试图获得特权主机侧能力(例如,root或主机内核级访问),然后通过主机内存映射和检查从T-VM提取数据。DASPRI通过执行物理内存隔离和限制对受保护内存区域的内核级访问来减轻此类攻击,从而即使在权限提升的情况下也能保持隔离。
在第二种场景中,攻击者尝试通过操纵虚拟机描述符和计算节点上的本地T-VM列表来伪造可信虚拟机身份,目的是绕过隔离控制并访问受限制的内存。为了应对这一点,DASPRI采用远程认证技术来确保T-VM元数据的完整性并验证T-VM实例的真实性,有效防止身份伪造。
第三种场景考虑基于Linux的共享页面缓存机制的攻击。为了优化文件I/O和内存利用,Linux允许多个进程共享缓存的文件页面。然而,这一特性引入了安全风险,因为被攻破的N-VM可以篡改后来被T-VM访问的缓存文件数据,从而破坏数据的可用性和完整性。DASPRI通过为T-VM和N-VM维护独立的文件页面缓存来解决这个问题,通过双地址空间映射来确保恶意VM无法影响可信VM使用的内存内容。
通过这些场景,证明了DASPRI在减轻共驻威胁方面的有效性,强调了其在保护虚拟化多租户云环境中的实际价值。
为了确保云环境中不同参与者拥有的T-VM的内存隔离,DASPRI引入了三种核心技术。首先,它建立了一个双地址空间的物理内存布局,将常规内存区域与专用隔离内存区域分开。其次,在T-VM的启动和运行期间,内存请求控制模块利用T-VM识别、物理内存分配和文件页面缓存管理,将所有与T-VM相关的内存内容放置在隔离内存区域内,从而实现与N-VM的物理分离。第三,在主机执行期间,DASPRI通过监控关键内核功能并限制特权操作来增强隔离执行区域的安全性。
3.2 基于双地址空间的隔离执行区域
在NUMA(非统一内存访问)系统中,内核使用Zone_type数据结构将物理内存划分为多个区域。常见的配置包括ZONE_DMA和ZONE_NORMAL。前者代表用于直接内存访问操作的低地址物理内存,而后者对应于可以直接映射到进程地址空间的主要内存区域。
本工作分析了Linux NUMA下的内存分区机制,并从ZONE_NORMAL区域划分出一块连续的物理内存,形成一个名为ZONE_ISOLATE的新隔离区域。这些变化在系统重启后生效。因此,分配给N-VM和T-VM的物理内存位于逻辑上分离的区域,称为双地址空间的物理内存。这些区域满足以下约束:?????????????????????????????(??_??????????????)=??????(??_??????????????)+??????(??_??????????????)(4)。这里,??_??????????????表示该区域中管理的物理页面数量。????????????????????????????表示原始的ZONE_NORMAL,?????是内存隔离后的剩余ZONE_NORMAL,?????是新定义的隔离内存区域。
建立隔离内存区域的配置过程如图2所示,包括以下关键步骤:首先,修改Linux内核配置文件(Kconfig)以包括两个新参数—ZONE_ISOLATE和ZONE_ISOLATE_SIZE。这些参数根据可信执行环境的安全需求动态控制隔离内存区域的激活和大小。zone_ISOLATE参数负责修改Zone_type数据结构以声明系统中存在隔离内存区域。同时,ZONE_ISOLATE_SIZE参数通过调整max_zone_pfns数组来定义该区域的物理页面帧范围。
一旦这些设置完成,物理内存隔离模块必须配置和解释内存区域掩码,以便在内存分配期间区分正常区域和隔离区域。当进程请求物理内存时,内核检查请求中的区域掩码以确定目标内存区域。为此,内存隔离模块为ZONE_ISOLATE区域定义了一个自定义掩码0x10,并修改内核的区域掩码解析器以正确解释它。如果请求中的掩码与隔离区域的掩码匹配,解析器将内部区域掩码设置为0z10。然后通过算法1中描述的移位操作处理此掩码,以确定目标区域索引。当结果对应于ZONE_ISOLATE时,系统成功识别出隔离区域,从而为T-VM启用安全的内存分配。
算法1 内存分配掩码解析算法
输入:????????_???????????
输出:???????????_???????????enum ???????????_??????????????int ???????? ?(__????????????????????)?(????????_???????????&????????_????????????????????)
如果 ????????_???????????&????????_????????????????????
then ???????? ?0????10???
end if
if ?? ?(????????_????????_?????????????? > >(???????? ?????????_???????????_??????????????))&((1 < ???????_???????????_??????????????) ?1)
if ??°????°??°??°??°??°??°??°??°??°??°??°??°??°??°??
then
if z 是 ?????°????°??°??°??°??°?????&&(??°??°??????°??°??°??°??°??°??°??°??) then
return ?????°????°??°??°??°??°??;
end if
end if
return z;
此外,系统还为内存资源管理和回收配置水印(即阈值)。这些水印—最小(min)、低和高等——是Linux内核中维持内存平衡的基本机制。最小自由内存水印min_free_kbytes必须满足以下要求,以防止内存耗尽和虚拟机崩溃:??°??°??°?????≥√?????°(???°??°???°??)+?????°(???°??°???°??)+16??????°(???°???°??)(5)。这里,??°??°??°?????是min_free_kbytes的值,??°??、??°??和??°??分别代表ZONE_DMA、ZONE_NORMAL和ZONE_ISOLATE的页面计数。缩放因子16是从主线Linux内核的原始min_free_kbytes初始化逻辑直接采用的经验常数。通过保留这一上游启发式方法,DASPRI确保了与标准buddy分配器的架构一致性。
基于??°??°??°?????,内存隔离水印按照以下方式计算(使用OpenEuler 20.03 LTS SP4的默认配置):??°??°??°??°??°??°??°??°??=1×??°??°??°?????(6)??°??°??°??°??°??°??°??=1.25×??°??°??°?????(7)?°??°??°?°??°??°??°??°??°??=1.5×??°??°??°?????(8)。当隔离区域中的自由内存量低于低水印时,内核调用kswapd守护进程进行异步内存回收。如果它降至高水印以下,系统将启动文件-backed和匿名页面的直接页面回收,从而保持系统稳定性并确保T-VM操作的不间断。
3.3 内存分配策略
在将物理内存划分为正常区域和隔离区域后,操作系统内核必须能够正确识别T-VM,根据TVL分配适当的内存。本节详细每个计算节点都维护着TVL的本地副本,其结构是完全相同的。????????=???????????(????????????||?????????) (9)图3显示了TVL的结构。一致性比较时序图如图4所示。为了防止重放攻击,云管理中心生成一个随机数??1,并使用以下表达式进行计算:????????′=????????????(????????,??1)(10),??1=??????????????(?????????||???????????????????????????_?????????||???1)(11),其中????是一个对称密钥,CreateTVM_cmd表示创建T-VM的命令。加密后的消息??1被发送到计算节点。图4展示了一致性比较时序图。接收到??1后,计算节点使用????解密它以提取Tid’、Tid、CreateTVM_cmd和??1,然后使用方程(12)验证Tid的完整性。如果方程成立,则认为Tid未被篡改。计算节点继续创建T-VM,并将Tid嵌入到虚拟机的进程控制块中,如图5所示。如果方程不成立,则丢弃??1并发出警告。????????????(????????,??1)=????????′(12)(图5)。进程控制块中嵌入了标签。
在创建T-VM时,主机仅为虚拟机分配虚拟内存。当虚拟机开始运行时,它会触发页面错误来请求物理内存。主机内核中的内存请求控制模块拦截物理内存分配请求,并根据????????和本地TVL来识别请求是否来自T-VM。一旦识别出来,该模块就从隔离内存区域分配物理内存(详细信息见第3.3.2节)。在识别????????的过程中有两种可能的情况:
1. 本地TVL中不存在Tid。
当T-VM第一次触发页面错误时,内存请求控制模块拦截内存分配请求,但在本地TVL中找不到相应的????????′和???????????′。然后,该模块通过以下程序与云管理中心进行身份确认:
首先,内存隔离控制模块计算????????′=???????????(???????????′||?????????′)(13),??2=(???????????′||?????????′||?????????′)(14);
接着生成一个随机数??2,并使用方程(15)计算加密后的消息??3。此消息通过安全传输协议发送给控制器。注意,在云平台的初始化阶段,云控制器和每个计算节点已经交换了各自的公钥:控制器的公钥为????????????????_??,计算节点的公钥为?????????????????????)。
接收到??3后,控制器使用其私钥????????????????_??解密它,并使用公钥????????????????_??验证签名。然后它在TVL中搜索与??????????? ′、???????? ′和??_????? ′匹配的条目。如果找到匹配项,控制器会向计算节点返回确认消息;否则,返回拒绝消息并触发警报。
最后,在收到控制器的确认后,计算节点将T-VM的信息添加到本地TVL中。
2. 本地TVL中存在Tid。
如果T-VM不是第一次触发页面错误,内存请求控制模块拦截内存分配请求,并使用算法2确定请求是否来自T-VM。
算法2 物理内存分配:
1. 输入:???????????_?????????????????, ???????????, 本地TVL
2. 输出:分配的物理页面???????????
3. 如果???????? ?????????_?????????(???????????_?????????????????)
4. 如果!????????
则返回???????????????????????_???????????_??????????????????()
5. 结束if
6. 对于每个????????中的????????
└─ 在TVL中匹配进程属性
7. 如果??????????????(???????????,????????,????????,???????????)
则返回???????????????????????_???????????_?????????????????????()
8. 结束if
9. └─ 本地TVL中未找到????????,与CMC进行验证
10. 如果??????????_???????????_?????????(???????????,????????,????????)
则返回???????????????????????_???????????_?????????????????????()
11. 否
12. 否
└─ 结束
TVL的完整性保护对于确保计算节点能够正确识别????????至关重要。为了防止攻击者通过恶意修改TVL来伪造映射到隔离内存区域的T-VM,DASPRI采用了远程认证(RA)技术来定期验证每个计算节点上的本地TVL的完整性。通过结合时间窗口和基于阈值的T-VM状态转换,DASPRI在RA执行的时机上引入了随机性,从而增加了攻击者利用RA间隔发起攻击的难度。
具体来说,管理中心指定一个时间窗口t和一个阈值v。在此时间窗口内,一旦计算节点上的T-VM状态转换次数累积到阈值v,计算节点就会主动与云管理中心启动RA过程。RA过程如下进行:
首先,计算节点生成一个包含其标识符???????的查询消息并发送给云管理中心。
接收到查询后,云管理中心检查???????是否存在于其管理的计算节点列表中。如果存在,则向计算节点返回一个随机随机数??3;否则,丢弃该消息。
接收到??3后,计算节点收集证据????????,执行哈希操作得到????,并更新本地计数器??????????????,使得?????????????? = ?????????????? +1。这里,??????????????记录了计算节点对????????进行本地完整性验证的次数。然后计算节点调用硬件信任根对????进行签名,生成签名??:?? =????????????(????)????????????????_??。
随后,计算节点使用方程(16)计算消息认证码??′??,并使用方程(17)构建加密的认证报告????,该报告用云管理中心的公钥进行加密。??′??=????????????(????;?????||???3)(16),????=????????????????????????_??2(??′???||??????||????||????????????||????????????????||?????)(17)。
接收到密文????后,云管理中心首先使用其私钥解密它。然后根据最后一次已知的计数来预测计算节点???????的预期RA计数??????????????′。如果??????????????等于??????????????′,云中心通过检查签名??和MAC ??′??来验证数据的真实性和完整性。如果所有验证都通过,则相应地更新??????????????′。
接下来,云管理中心对存储的????????′??执行哈希操作,并将结果与接收到的????进行比较。如果值匹配,则生成远程认证结果???????以确认完整性。否则,对接收到的????????和存储的????????′??进行逐项详细比较,以准确识别异常的虚拟机,从而及时控制和缓解问题。
3.3.2 物理内存分配
在Linux内核中,物理内存分配由buddy系统和Slub分配器管理。在DASPRI架构中,内存请求控制模块利用这些现有分配机制中的监控点来区分来自N-VM和T-VM的内存请求,并据此分配物理内存区域。
**buddy系统**
当进程访问内存页时,它使用虚拟地址查询页面表以检索相应的物理地址,然后访问关联的物理页。如果进程尚未分配到相应的物理页,则触发页面错误中断,提示内核分配新的物理页。当发生页面错误时,Linux内核根据请求的内存类型调用不同的内存分配函数,例如_get_free_page、get_zeroed_page或_getdma_pages。
对于虚拟机,使用Stage-2页面表将客户机物理地址(GPAs)转换为主机物理地址(HPAs)。如果请求的GPA尚未映射,则引发el1_sync异常,由主机内核处理。无论入口点是什么——无论是_get_free_page还是el1_sync——内存分配过程最终都会调用alloc_page函数来获取物理页。
因此,内存请求控制模块监控alloc_page的调用,以实时拦截所有物理内存页分配请求。通过分析标签(例如Tid)并查阅本地维护的TVL,该模块确定请求的虚拟机是否为T-VM。如果是T-VM,则从隔离内存区域分配内存页;否则,从正常内存区域分配内存页。需要注意的是,虽然该模块依赖内核分配路径来正确定位数据,但ZONE_ISOLATE的机密性由权限限制模块(第3.4节)强制执行,即使管理程序尝试未经授权访问这些页面,该机制仍然有效。
**Slub分配器**
对于小规模内存分配,Linux内核使用Slub分配器,它通过预先分配物理页面并将它们划分为固定大小的内存对象来提高效率。在DASPRI架构中,内存请求控制模块修改Slub分配器,使其包含专用于隔离内存区域的Slub缓存。它拦截小规模内存分配请求,并确定请求的虚拟机上下文。根据此识别结果,选择适当的内存区域——为T-VM分配隔离内存区域,为N-VM分配正常内存区域。
通过这两种机制的结合,内存请求控制模块有效地实现了内存隔离:隔离区域内的物理内存专门分配给T-VM,而N-VM仅被允许访问正常内存区域。
**3.3.3 双地址空间页面缓存构建**
当T-VM首次访问共享库代码页时,内核从磁盘检索相应的库文件并将其加载到隔离内存区域,然后将其映射到T-VM的虚拟地址空间。然而,如果N-VM后来访问相同的共享库,内核——利用页面缓存机制——会将已经存在于内存中的数据(包括来自隔离区域的数据)直接映射到N-VM的虚拟地址空间。这种行为破坏了内存隔离,破坏了地址空间之间的分离,对隔离内存的完整性构成安全风险。
禁用页面缓存机制可以防止这种隔离违规,但会大幅降低文件读写操作的性能。页面缓存由文件结构中的f_mapping字段管理,该字段的类型为address_space,表示当前在内存中的缓存。
为了解决这个问题,DASPRI通过引入联合构造扩展了内核的文件结构。这种联合结构保留了表示N-VM内存访问映射的原始f_mapping字段,并添加了一个专用于T-VM内存映射的新字段t_f_mapping。这种设计使内核能够根据请求进程的类型在隔离区域和正常内存区域创建独立的页面缓存,如图6所示。图6展示了独立页面缓存的创建过程。当进程尝试读取文件时,内核首先检查该进程是否来自T-VM。如果是T-VM,则使用t_f_mapping页面缓存;否则,使用f_mapping缓存(算法3中的第4-8行)。然后内核检查相应的文件页是否已经缓存在内存中。如果存在,则直接返回页面;否则,在相应的内存区域创建页面缓存(算法3中的第9-13行)。
算法3 页面缓存创建:
1. 输入:Struct file
2. 输出:Page ? 描述文件和内存之间映射的数据结构,管理文件缓存和内存中的映射
3. struct address_space *?????????????????
4. 如果is_T_vm(????????_???????????)
则
5. ??????????????通过进一步细分NUMA节点并扩展权限限制模块的地址跟踪功能,DASPRI可以在不改变其核心安全理念的情况下支持N个隔离区域。3.4. 隔离执行区域的安全强化Linux系统运行在由用户模式和内核模式组成的权限分离模型下。用户模式进程被限制访问自己的地址空间。在提出的双地址空间内存隔离机制中,用户模式进程无法访问或破坏隔离内存区域。然而,内核模式下的特权进程可以通过直接映射区域或动态映射机制将隔离内存映射到内核空间,从而绕过这些保护措施,从而削弱隔离保障。为了解决隔离内存无法防御特权主机进程的问题,DASPRI引入了一种基于内核监控的安全强化机制。该机制通过拦截关键内核函数来限制内核级别进程的权限,并防止主机上的特权软件访问隔离内存区域。这种设计存在明确的内存使用权衡。如果一个受信任的虚拟机(VM)和一个普通VM访问相同的文件页,DASPRI将维护两个独立的页面缓存(一个在ZONE_ISOLATE中,另一个在普通区域),这可能会导致同一文件内容的页面被重复缓存。我们接受这种开销作为通过基于文件的映射防止跨域共享的成本。实际上,额外的内存消耗受两个域都访问的共享基于文件的页面的工作集限制,并且可以通过ZONE_ISOLATE的大小和普通页面缓存回收策略来控制。3.4.1. 对直接映射区域的限制Linux内核中的直接映射区域通过提供虚拟地址和物理地址之间的线性映射来加速地址转换。在64位系统上,Linux内核为直接映射区域预留了128 TB的虚拟地址空间。鉴于大多数现代云服务器的物理内存通常小于1 TB,直接映射区域实际上覆盖了所有物理内存。如果攻击者获得了内核权限,他们可以利用地址转换函数(例如lm_to_phys)来定位直接映射区域内的隔离内存区域的物理地址。然后,通过检索相应的页面描述符(page)结构,攻击者可以将物理页面映射到内核空间。一旦这些页面可以从内核空间访问,攻击者就可以读取或修改其中的内容,从而破坏隔离内存中数据的机密性和完整性。在Linux内核版本5.10.0中,从直接映射区域中的虚拟地址到物理地址的转换由以下表达式表示: ??????????_???????????=((???????????_???????????)&~???????????_?????????????????)+??????????_????????????????? (18) 这里,???????????_?????????????????表示直接映射区域的基虚拟地址,??????????_?????????????????表示系统内存的起始物理地址。为了防止这种攻击,DASPRI禁用了隔离内存区域的直接映射。具体来说,访问控制模块执行以下操作:1. 首先使用公式(19)计算直接映射区域内的偏移地址: ?????????????????_???????????=(???????????_???????????)&~???????????_?????????????? (19) 其中???????????_???????????是给定的虚拟地址,?????????????????_???????????是其对应的偏移量。2. 如果?????????????????_??????????? >?????_??_???????????,这意味着偏移量被映射到了隔离内存区域。在这种情况下,访问控制模块拒绝转换并返回一个空地址(即0x00)。3. 如果?????????????????_??????????? ≤?????_??_???????????,这表明内存位于普通内存区域。在这种情况下,系统允许转换并返回物理地址。此外,内核提供了几个可以明确将物理页面映射到内核空间的函数。DASPRI拦截并审计这些地址映射函数,以防止N个虚拟机(N-VMs)映射属于隔离内存的页面。以内核函数kmap为例,它接收一个物理页面帧描述符(page)作为参数,并将相应的物理页面映射到内核的虚拟空间供调用者使用。与vmalloc不同,vmalloc可以在内存分配期间被拦截,kmap可能允许攻击者将已分配的页面帧从T-VMs映射到内核空间,从而允许未经授权地访问隔离数据。为了应对这一威胁,DASPRI通过在kmap函数中添加监控检查点来对其进行修改。权限控制模块确保N个虚拟机进程被禁止调用kmap来将隔离内存页面映射到内核空间。3.4.2. 对动态映射区域的限制位于直接映射区域上方的内核空间被称为动态映射区域。在这个区域内,内核主要使用vmalloc函数来映射物理内存。vmalloc的调用流程如图7所示。如图7所示,在内存分配期间,vmalloc仍然会调用alloc_pages函数,因此无法绕过伙伴系统独立分配物理内存。正如3.3.2节所描述的,内存请求控制模块在alloc_pages中放置了一个拦截点,基于伙伴系统。每当vmalloc通过alloc_pages触发物理内存分配时,拦截点就会被激活以检查发起内存分配请求的进程。为了进一步确保安全内存区域的隔离属性得到保持,alloc_pages中加入了额外的拦截逻辑来检查针对动态映射区域的分配请求。这种机制确保当内核使用vmalloc分配物理内存时,这些操作不会破坏安全内存区域的隔离性。4. 结果启用内存请求控制模块和特权函数限制模块不可避免地会给主机操作系统带来开销。为了验证DASPRI是否满足低性能开销的设计目标,本节首先评估了双地址空间内存隔离机制在内存分配期间引入的延迟。随后,我们使用LMbench和UnixBench 5.1.2来评估DASPRI原型系统对主机的整体性能影响。我们使用基于OpenStack Y版本的兩台物理服务器构建了一个真实的云平台。一台服务器配置为云管理节点,另一台作为计算节点。两台服务器都配备了2核HUAWEI Kunpeng 920 5250 CPU @ 2.60 GHz和Trusted Platform Control Module(TPCM)作为物理信任根。我们的详细配置如下表1所示。表1. 实验设置。4.1. 内存分配的开销本小节评估了部署DASPRI前后内存分配的延迟,通过请求不同大小的内存。如图8所示,内存分配时间随请求内存大小的增加而增加。这种趋势是因为较大的内存分配需要合并碎片化的内存块和更新页面表来映射新的物理页面,这两者都会产生额外的开销。尽管有这些因素,原始内核和启用了DASPRI的内核之间的延迟没有显著差异。这是因为内存请求控制模块引入的额外逻辑——主要是VM识别步骤——与内存合并和页面表更新所需的时间相比,开销可以忽略不计。4.2. 基本操作系统操作的评估我们使用LMbench来测量部署DASPRI前后基本操作系统操作的延迟。结果总结在表2中。在“延迟增加”一列中,我们观察到文件映射、保护故障延迟和页面故障延迟分别受到了4.01%、3.68%和4.53%的影响。表2. 操作系统中的基本操作延迟。这种开销的主要原因是双地址空间设计:每个空间维护一个单独的页面缓存,内存请求控制模块在页面故障期间拦截系统调用以执行额外的T-VM识别和隔离物理内存分配。尽管如此,DASPRI在基本系统操作中引入的开销不到5%,同时显著提高了T-VM的隔离性,证明了其实际适用性。此外,我们通过在对修改后的两个内核上运行LMbench来比较DASPRI和MyTEE [23]解决方案。具体来说,我们测量了十次迭代中九个核心系统调用的平均延迟。如图9所示,MyTEE引入的最大延迟开销达到了23%,而DASPRI将最大开销限制在18%。这一优势是因为MyTEE在监控模式下运行,必须模拟关键操作,因此比DASPRI的轻量级拦截和决策机制消耗更多时间。图9. 操作系统中核心系统调用开销的比较。4.3. 主机性能的整体开销我们使用UnixBench基准测试套件来评估DASPRI对主机系统引入的整体性能开销。测试完成后,UnixBench为每个测试项提供了一个分数,分数越高表示性能越好。为了评估在高密度多租户场景下的可扩展性,我们同时在1、2、4、8、16和32个活动的可信虚拟机上执行了应用程序工作负载。如图10所示,部署DASPRI前后的综合系统得分分别为1296.4和1282.9,表明整体基准性能仅下降了大约1.3%。随着并发性的指数级增长,两个系统的性能都出现了预期的下降。在低至中等密度(一到八个虚拟机)下,DASPRI保持了轻微的性能差距,当运行四个并发虚拟机时,整体开销峰值约为3.8%。在极高密度的工作负载(16和32个虚拟机)下,性能差距大幅缩小到不到0.5%。图10. 在高密度多租户场景中评估DASPRI主机性能开销。为了进一步分析同时运行四个虚拟机时性能显著下降的原因,我们对这一场景中的12个子测试的结果进行了细致比较。结果如图11所示。纯计算测试(如Dhrystone和双精度Whetstone)几乎没有受到影响,而性能下降主要集中在I/O密集型测试中,特别是File Copy测试,其中性能下降超过了22%。我们认为这种局部下降主要与DASPRI在频繁I/O请求期间产生的额外管理开销有关,包括拦截和处理动态内存分配行为,以及维护双地址空间机制下页面缓存所需的额外工作。图11. 带有4个并发虚拟机的UnixBench子测试性能比较。结合图1和图2的实验结果,我们可以进一步推断,随着活动虚拟机数量的增加,主机机器的主要瓶颈从DASPRI的检测逻辑转移到了更基本的物理资源限制上,例如频繁的CPU上下文切换和标准内存管理的显著开销。因此,DASPRI相对固定的拦截成本在整体系统延迟中被“稀释”,导致几乎看不见的额外开销。总之,尽管DASPRI在I/O管理中引入了一些局部开销,但其整体可扩展性良好,并且在高并发云环境中不会导致显著的系统级性能下降。5. 讨论本节首先进行安全性分析,以确定所提出的方法是否满足系统完整性和内存隔离的两个设计目标。随后,我们通过模拟各种攻击场景来验证安全性功能。5.1. 安全假设DASPRI假设服务器配备了基于硬件的信任根,云管理中心绝对安全,通信网络可靠。所有在主机上运行的程序——包括固件、核心操作系统组件和用户空间应用程序——都必须通过硬件信任根进行验证。只有那些在白名单上且代码测量符合预定义基线的程序才被允许加载和执行。类似的验证机制在之前的研究[27,28]中得到了广泛支持,可以直接应用于DASPRI。进一步假设部署在计算节点上的应用程序不会故意泄露敏感数据,并且与云管理中心的通信通过SSL加密通道维护。此外,假设攻击者无法物理访问服务器,使得离线物理攻击(如冷启动攻击[29]不可行。我们遵循一个常见的假设,即在今天的云环境中,基于软件的攻击比低级硬件攻击更为普遍。因此,DASPRI专注于防御针对软件的攻击。针对基于缓存的侧信道攻击的保护不在本文的讨论范围内。然而,此类攻击与DASPRI的设计是正交的,可以通过结合之前工作中提出的补充机制[30,31]来缓解。5.2. 安全分析完整性分析:根据定义1,在系统启动或文件加载期间,硬件信任根对关键组件????执行测量操作,生成一个测量摘要???(????)。通过将摘要与参考值????进行比较,系统可以判断组件是否可信。如果所有组件的???(????)都等于????,则允许它们启动和运行;否则,任何???(????)不等于????的组件都被视为受到攻击,并会立即触发警报以强制及时补救。这种机制确保了系统的完整性和可靠性。类似地,在激活之前,DASPRI的所有三个功能模块都必须经过严格的完整性验证。因此,引入这些模块并不会削弱系统原有的防御能力,所提出的方法满足了第3.4节中所述的第一个设计目标。
在DASPRI中,用于映射到T-VM的内存区域ZONE_ISOLATE在映射过程中受到严格控制。具体来说,DASPRI实时监控并拦截关键的内核函数调用,并仅在评估了TVL后允许进行映射。从用户空间的角度来看,内存请求控制模块会拦截对alloc_page等关键函数的调用。该模块使用TVL来评估每个进程(主体),并相应地重定向内存请求,确保未经授权的主体无法映射ZONE_ISOLATE中的内存。在内核空间中,权限限制模块会拦截针对直接映射区域的地址转换请求。它检查地址偏移量,如果偏移量超出了ZONE_NORMAL的范围,则拒绝请求并返回空地址。当一个特权进程试图非法将安全内存区域的数据映射到内核空间时,内存请求控制模块会再次拦截alloc_page调用并通过TVL验证请求进程,从而防止未经授权的映射。
通过这种多层次的防御机制,DASPRI有效地阻止了未经授权的用户空间进程和特权内核空间进程访问隔离的内存区域。如定义2所述,DASPRI满足了第3.4节中定义的第二个设计目标。
5.3 安全功能验证
为了评估DASPRI在实际场景中是否满足了完整性和隔离设计目标,本节分析了与第3.1.4节中描述的攻击场景相关的CVE,并将它们映射到DASPRI架构上。表3总结了过去五年中与KVM安全威胁相关的代表性CVE。这些CVE的主要目的是获得对N-VM的完全控制,以执行任意代码,从而破坏受保护虚拟机的安全防御并窃取T-VM中的数据。
5.3.1 保护关键信息完整性:作为一种纯软件层面的内存管理限制,DASPRI不加密内存内容也不改变CPU缓存行为。因此,它本身无法缓解微架构侧通道攻击(例如,Spectre、Meltdown或Flush + Reload)。防御这些攻击需要正交的硬件补丁或编译器级别的缓解措施。DASPRI使用TVL来确定进程是否属于T-VM,并据此分配内存。攻击者可能会利用CVE-2022-25636等漏洞,通过进行越界内存写操作来篡改TVL。如果攻击者成功注入伪造的TVL条目,系统可能会错误地允许访问隔离的内存区域。然而,根据定义1,任何对TVL的篡改都会导致完整性验证失败,即???(??????????) ≠??????????,如图12所示。此外,如“TVL的完整性保护”部分所述,DASPRI增强了远程认证调度的随机性,这增加了攻击者利用验证之间时间间隙的难度,从而进一步提高了TVL的完整性保障。
5.3.2 防御权限攻击:以CVE-2020-14364为例,攻击者可以利用该漏洞使QEMU进程崩溃,随后以QEMU的权限在主机上执行任意代码。在DASPRI原型中,我们模拟了一个攻击场景,其中攻击者劫持了N-VM并利用此CVE获取主机级别的权限。然后,攻击者尝试使用kmap等函数访问位于同一主机上的T-VM内存数据。如图13所示,进程A(一个T-VM)从主机请求隔离的内存页面,并将重复的字符串值0x83写入分配的物理页面。在没有启用权限限制模块的情况下,攻击者通过被攻击的N-VM进程B成功读取了进程A的数据。然而,在启用了权限限制模块后,相同的攻击尝试失败了,表明即使在主机级别权限提升的情况下,DASPRI也能有效阻止未经授权的内存访问。
5.3.3 保护共享内存数据:以CVE-2022-0847为例,我们模拟了一个攻击场景,其中攻击者控制的N-VM和T-VM从页面缓存中读取相同的文件页面。如图14所示,在没有部署DASPRI的情况下,攻击者利用该漏洞破坏了T-VM读取的页面缓存内容。一旦DASPRI激活,攻击者就无法再访问与T-VM相同的页面缓存,从而消除了这种攻击途径并保护了共享内存的完整性。
5.4 与现有解决方案的比较
本小节将提出的DASPRI架构与现有的保密计算解决方案进行了比较,如表4所示。大多数现有方法,如Intel SGX、AMD SEV、Intel TDX和ARM S-EL2,都是为特定的硬件平台设计的,主要基于x86或ARM架构。Power9 PEF基于Power架构。相比之下,DASPRI设计为与架构无关,可以在x86和ARM平台上运行。在保护目标方面,Intel SGX、Scalable SGX和MyTEE主要集中在进程级别保护,而其他解决方案主要针对虚拟机(VM)隔离。就安全内存容量而言,Intel SGX和Scalable SGX分别限制在128/256 MB和1 TB,而其他解决方案则允许根据主机的物理内存容量灵活分配内存。大多数系统提供页面级别的内存保护,而Power9 PEF和ARM S-EL2实现了区域级别的保护粒度。除AMD SEV外,所有列出的解决方案都能够防御特权软件攻击,这对于维护数据和代码的机密性至关重要。此外,所有解决方案都支持保护关键数据免受篡改,确保了强大的完整性保证。
在共享内存保护的背景下,如AMD SEV、Intel TDX、ARM CCA和TWinVisor等系统提供了强大的防御能力。然而,在这方面,Intel SGX和Panic的效果较差。
总之,现有的保密计算解决方案在不同维度上表现出不同的优势和局限性。所提出的DASPRI架构在主机的物理内存中为T-VM构建了一个隔离的执行区域。通过维护专用页面缓存并监控特权内核函数,DASPRI增强了虚拟机安全性,而无需依赖特定的硬件平台,从而为保护T-VM内的用户数据提供了可靠的安全基础。
5.5 局限性
虽然DASPRI提供了针对典型权限提升和内存内窥攻击的强大软件定义的内存隔离能力,但我们明确承认当前设计的几个界限和限制:
1. 微架构侧通道攻击:作为纯软件层面的内存管理限制,DASPRI不加密内存内容也不改变CPU缓存行为。因此,它本身无法缓解微架构侧通道攻击(例如,Spectre、Meltdown或Flush + Reload)。防御这些攻击需要正交的硬件补丁或编译器级别的缓解措施。
2. 依赖于内核的正确性:DASPRI的安全保障在很大程度上依赖于权限限制模块和修改后的内核分配路径的正确性以及不存在错误。如果我们 hook实现中的任何未被发现的漏洞可能被攻击者利用来绕过隔离。
3. 物理和硬件级攻击:DASPRI假设底层硬件和物理环境是安全的。它不能防御物理攻击(例如冷启动攻击或恶意的DMA设备探测内存),也无法阻止具有物理访问权限的完全恶意的云提供商提取数据。为了绝对防范物理威胁,仍需要硬件辅助的内存加密(例如,AMD SME/SEV)。
5.6 长期碎片化问题
ZONE_ISOLATE中的长期碎片化。该隔离区域由标准的Linux buddy分配器和回收机制管理;因此,碎片化通过操作系统的正常分配/回收/压缩行为来处理。然而,本文没有包含对ZONE_ISOLATE中碎片化的专门长期评估,也没有量化碎片化可能如何影响分配成功率或T-VM在持续高内存压力下的性能。我们当前的实验主要验证了隔离机制的可行性及其即时开销。未来工作将系统研究长期碎片化行为及其对T-VM性能的影响。
6. 结论
本文提出了一种基于双地址空间和权限限制的隔离执行环境构建方法,旨在增强多方协作场景下VM的隔离性。其目标是在各方使用过程中防止数据资产的泄露或误用。在系统启动时,会建立一块独立的内存区域。在VM进程执行期间,会拦截页故障中断以确定虚拟机的类型。根据预定义的策略,在隔离内存区域内分配T-VM的内存数据,从而确保用户空间进程无法访问它。此外,通过内核级监控技术加强了隔离内存区域的安全性,防止特权进程进行未经授权的映射。这进一步增强了受保护虚拟机的内存隔离性。
已经在配备了华为Kunpeng AArch64处理器和OpenEuler操作系统的真实服务器上实现了DASPRI的原型系统。进行了一系列实验来验证所提出方法的有效性和实用性。目前,我们的方法依赖于默认的Linux内存回收机制来管理物理内存页面的重复使用。作为未来工作的一部分,我们计划为隔离区域设计一个专用的内存回收机制,以减轻因内存回收而可能导致的物理地址信息泄露。
最终,本文成功证明了仅通过软件机制即可实现具有强安全保障的VM级别内存隔离。DASPRI造成的性能开销最小,提供了一种高度实用且可扩展的替代方案,适用于异构云环境中的部署。