Page 159 - 《软件学报》2020年第10期
P. 159
张倩颖 等:抗电路板级物理攻击的操作系统防御技术研究 3135
加载到片上内存,如果片上内存耗尽,那么就将一些暂不需要的段加密暂时备份到片外 RAM 中.这种加载方式
会降低进程运行速度,但是适用于进程较多并且对工作内存需求较大的场景.
国内首都师范大学的研究团队针对实时操作系统对软件隔离和物理安全的要求,基于 ARM TrustZone 和
内存加密技术提出实时任务的物理防护方法 SoftME [112,113] .该方法在 TrustZone 的安全世界运行实时操作系统
FMP [114] 来处理实时任务,并将该实时操作系统运行在片上内存中以抵抗物理攻击.SoftME 在实时操作系统内
核层增加了一个任务调度器和一个内存保护引擎,其中任务调度器负责安全实时任务的调度,内存加密引擎负
责安全实时任务在片上内存和片外 RAM 之间的调度:当某个任务需要从片上内存切换到片外 RAM 时,内存保
护引擎对该任务进行加密并保护数据的完整性;当某个任务需要从片外 RAM 加载到片上内存运行时,内存保
护引擎会对其进行解密并执行完整性检查.为保证普通世界与安全世界之间的通信,SoftME 设计了共享内存机
制来传递信息.
3.3.3 基于请求分页系统的全系统加密
除了一些简单的实时操作系统和嵌入式操作系统,大部分成熟的操作系统运行所需的内存都比片上内存
大,因此无法像轻量级操作系统那样直接加载到片上内存中来抵抗物理攻击.针对该问题,学术界提出了基于请
求分页系统的全系统加密技术.
德国埃尔朗根-纽伦堡大学基于 TreVisor [89] 系统实现了对虚拟机操作系统及上层应用的全系统加密方案
HyperCrypt [115] .该方案利用 x86 架构的二级页表(second layer address translation,简称 SLAT)在虚拟机物理内存
地址和实际物理内存地址转换过程中实现了请求分页系统,然后利用 TreVisor 提供的能够抵抗物理攻击的加
密引擎,在请求分页系统中实现了对虚拟机物理内存页的加密保护:虚拟机访问一个内存页时,HyperCrypt 对该
页进行解密放入滑动窗口,如果滑动窗口已满就加密一个不用的内存页以将其踢出滑动窗口.虽然该方案能够
保证虚拟机的绝大部分内存都处于加密状态,但是滑动窗口仍然暴露给物理攻击者,因此不能算是严格的全系
统加密方案.德国 Fraunhofer 协会的应用集成信息安全研究所几乎同时提出了与 HyperCrypt 类似的方案
TransCrypt [116] .TransCrypt 面向 ARM 架构设计了一个轻量级 hypervisor,基于硬件虚拟化机制实现了请求分页
系统,同样保证只有虚拟机的部分内存页处于明文状态,其他大部分内存被加密保护.与 HyperCrypt 不同的
是,TransCrypt 实现了一个动态的 DMA 内存页检测方法以抵抗 DMA 攻击,另外该方案还提供多核支持和动态
的滑动窗口支持.
中国科学院软件研究所针对 ARM 平台的 TEE 操作系统不能抵抗物理攻击的安全弱点,设计了一种新型的
TEE 操作系统架构 Minimal Kernel [49] .该架构针对大部分 TEE 操作系统镜像较大而片上内存太小的难题,将
TEE 操作系统划分为两部分:一部分只包含维持 CPU 运行软件所必须的核心组件,称为最小核;其余操作系统组
件则由最小核调度运行.为减小最小核的代码量,该方案提出一种构建最小化请求分页系统的原则,基于该原则
确定了最小化请求分页系统所必须包含的内核组件(页表、异常向量表、低层异常处理函数、栈以及这些组件
所依赖的组件).为了抵抗板级物理攻击,最小核运行在片上内存中,其余组件运行在片外 RAM 中,并由最小核提
供机密性和完整性保护.实验表明该方案构建的最小核只需要 100KB,可运行在大部分 ARM 平台的片上内存
中.该团队后续为 ARM CPU 架构提出了高安全 Enclave 架构 SecTEE [52] ,为 ARM 平台提供了抗板级物理攻击
和内存侧信道攻击等现代高威胁性攻击手段的安全能力.SecTEE 在 Minimal Kernel 的抗板级物理攻击基础之
上,扩展了抗内存侧信道的安全能力和可信计算特性:基于 Page coloring 机制和缓存锁定机制将安全敏感应用
固定在不受外部攻击程序影响的缓存上,抵抗基于页表的侧信道和缓存侧信道攻击;并实现可信度量、远程证
明、数据绑定等核心可信计算机制,为用户敏感应用提供高安全并且可证明的可信执行环境.SecTEE 以软件方
式为 ARM CPU 提供了一种与 Intel SGX 方案同等安全水平的安全解决方案,适用于当前主流的 ARM 设备,具
有很好的实际意义和应用前景.Minimal Kernel 和 SecTEE 实现了完整的全系统加密,具有很高的安全性,但是其
带来的系统负载也很高:一般来说 SecTEE 带来约 2 倍以上的性能负载,而对于一些数据密集型程序带来的负载
可能达几十倍.