Page 157 - 《软件学报》2020年第10期
P. 157

张倩颖  等:抗电路板级物理攻击的操作系统防御技术研究                                                      3133


         作系统内核以明文存储在片外内存中并且不被攻击,而物理攻击者完全可以攻破该假设.德国埃尔朗根-纽伦堡
         大学设计了一个可抵抗板级物理攻击的字节码解释器                    [108] .该解释器被实现为一个简易栈图灵机,所有的指令操
         作对象都存储在栈上,同时该团队还设计了一个安全类 C 语言 SCLL.在编译阶段,SCLL 编译器调用抗物理攻击
         的密码算法 TRESOR     [64] 对二进制程序进行加密;在运行阶段,解释器将内存中的指令、操作数解密到 x86 架构
         的 AVX 寄存器中,之后在寄存器中执行指令,最后将运行结果加密后存储到内存中,从而保证程序的指令和数
         据运行时只存储于 AVX 寄存器内,一旦离开 CPU 都以密文形式存在.
             (5)  基于其他硬件机制的防护技术研究
             上海交通大学的研究团队提出软硬件协同的 VM 安全保护方法 Fidelius                   [109] .Fidelius 利用 AMD SEV 的硬
         件内存加密机制保护 VM 内存页,使其免受冷启动和总线监听等物理攻击.为防止恶意 hypervisor 通过操纵关键
         资源绕过内存保护机制,Fidelius 通过不可旁路的内存隔离机制撤销了 hypervisor 对关键资源的访问权限,并提
         供 3 种不同的门机制来确保隔离的地址空间之间的转换,以对关键资源进行保护.此外,Fidelius 通过复用 SEV
         API 实现对 VM 从启动到关闭的寄存器状态、运行时内存、I/O 读写以及内存共享的全生命周期保护.
         SEVGuard [110] 是一个基于 AMD SEV 构建的最小化的虚拟执行环境,旨在保护用户模式应用程序的机密性.该
         方法将加密的应用程序迁移到轻量级 VM 中,使用 SEV 加密其内存和寄存器状态,从而确保其代码和数据的机
         密性.SEVGuard 引入一个主机调用接口,该接口将执行流重定向到主机,以使加密的应用程序可以使用不可信
         的主机功能,如系统调用和库调用.由于重定向机制需要进行上下文切换,SEVGuard 对 I/O 密集型任务的性能影
         响大于对 CPU 密集型任务的性能影响.
         3.2.3    小   结
             应用程序抗物理攻击防御方案主要针对系统休眠时和系统运行时这两种时刻的攻击.系统休眠时的防御
         方案主要目的是解决各种流行的操作系统缺乏内存保护的缺陷:Deadbolt 和 Sentry 方案针对的是安卓系统,德
         国 Fraunhofer 协会应用集成信息安全研究所的方案            [92,93] 针对的是 Linux 操作系统,Hypnoguard 在虚拟层解决的
         是虚拟机的休眠时内存安全.在系统运行时防御方面,最初的方案是基于滑动窗口的思路,只有部分内存页以明
         文状态存在,其他内存页被加密保护以减少攻击者可获得的信息.但是这种思路只能缓解板级物理攻击,无法全
         面抵抗这种攻击.为此,研究人员进一步提出利用芯片内部的存储资源,包括 OCM、Cache 和寄存器,构建安全执
         行环境的思路,基于该思路出现了各种方案:CryptMe、MemVault、ZeroKernel、CaSE 和 Ginseng 等.但是这些
         方案的缺点在于大部分受限于片内存储的容量,只能运行有限大小的程序.值得注意的是,CryptMe 方案采用了
         分页调度机制,可以将应用程序暂时不使用的内存页调度到片外 RAM 中,从而能够运行体积较大的程序.该方
         案出现了全盘加密的影子,但是没有对 OS 内核层进行加密保护,因此在理论上仍存在被攻击的风险.基于其他
         处理器硬件机制保护应用程序的方案虽然不受片内存储容量的限制,但是实际上其采用的硬件机制不属于处
         理器通用资源,因此这类方案只能应用在特定处理器架构中.

         3.3    全系统加密技术研究
         3.3.1    密码算法及应用程序保护方案的安全隐患
             虽然第 3.1 节和第 3.2 节描述的研究工作能够抵抗冷启动攻击等特定类型的攻击,但是理论上他们无法全
         面抵抗板级物理攻击.密钥及密码算法安全保障方面的工作仅仅保护了密钥及密码算法这类高安全要求的数
         据和代码,但是没有保护整个内存空间,物理攻击者仍然可以对片外 RAM 实施攻击,包括获取应用程序的机密
         数据、篡改代码等.应用程序保护方面的工作仅保护了应用层,没有考虑内核遭受物理攻击的情况.另外,这类工
         作局限于片上内存容量,只能保护有限大小的程序,而实际的操作系统通常占用几兆甚至上百兆的地址空间,远
         远超出片上内存的容量,所以这类工作无法直接应用到整个操作系统的保护.
             综上所述,前文介绍的方案均无法对整个操作系统进行保护,所以必然有一部分操作系统内核数据和代码
         以明文形式存放在片外 RAM 中,攻击者完全可以通过板级物理攻击篡改这些数据和代码,CPU 一旦运行被篡
         改的代码即可被攻击者获取内核的控制权,并且如果页表、中断向量表、内核栈、中断处理函数等 CPU 运行
         所必需的基本组件没有被保护,攻击者可利用这些组件加速攻击,一个典型的攻击实例如图 4 所示:CPU 读取片
   152   153   154   155   156   157   158   159   160   161   162