Page 150 - 《软件学报》2020年第10期
P. 150
3126 Journal of Software 软件学报 Vol.31, No.10, October 2020
实际上只需对内存的计数器进行完整性保护即可.图 3(右)描述了 Bonsai Merkle Tree 方法,其中被保护区域是
普通的需要保护的内存,计数器区域用于存放计算内存块 MAC 值时用到的计数器,最后一个区域存放对计数
器区域进行完整性保护的树节点和所有内存块的 MAC 值.为防止频繁更新内存导致计数器溢出,Bonsai Merkle
Tree 除了为每个内存块设置一个局部计数器,还为较大的内存区域(譬如一个内存页)设置一个全局计数器,局
部计数器达到最大值后将全局计数器加 1,然后局部计数器就可以归零重新计数.这种计数器设置方式避免为
每个内存块设置大的计数器,降低计数器占用的内存.但是这种方式的一个缺点是一旦全局计数器更新,就需要
将其对应的所有内存块(譬如一个内存页)重新加密.Bonsai Merkle Tree 方式极大地降低了需要完整性保护的
内存大小.以内存块为 64B 和局部计数器为 8 bit 为例,计数器所占用内存与普通数据内存比例仅为 1:64.该研究
团队的实验结果表明,Bonsai Merkle Tree 将完整性校验带来的负载从 12.1%降低到 1.8%,并且将完整性保护所
占用的内存(包括树节点和计数器区域等)从 33.5%降低到 21.5%.
3 软件方式的抗板级物理攻击防御技术
软件方式的抗板级物理攻击的操作系统防御技术借助处理器芯片内部的通用存储资源,如 CPU 专用寄存
器、CPU 缓存、片内 RAM 等,无需修改处理器硬件即可提供较高的物理安全性,成为系统安全领域的一个研究
热点.这方面的研究工作按照保护范围可以分为 3 类:第 1 类主要关注密钥等对安全性要求非常高的数据,保障
其存储和相应密码算法实现的安全性;第 2 类从保护安全攸关应用程序出发,借助片内存储资源保护安全应用
的物理安全性;第 3 类从保护整个系统出发,着重考虑运用有限的片内存储空间为包含操作系统和应用程序在
内的完整系统提供安全执行环境.本节按上述分类对已有研究工作进行全面分析和系统总结.
3.1 密钥及密码算法安全保障研究
密钥的安全性是许多系统安全机制的基础,为防止攻击者通过板级物理攻击从片外RAM中获得密钥 [1,2,14,58,59] ,
研究人员提出利用片内存储保护密钥和相应密码算法实现以抵抗板级物理攻击的解决方案,从而保证系统中
密码原语的安全性.这类工作的基本思路是:在系统运行期间,不再将密钥存储在片外 RAM 中,而将其存储在片
内存储中,并确保任何时刻密钥和有助于推测密钥的中间计算结果都不会以明文形式出现在片外 RAM 中.用
于存储密钥和进行加解密计算的片内存储包括 CPU 内部寄存器和缓存、GPU 内部寄存器和缓存,利用这些存
储空间将密钥和加解密过程限制在处理器芯片内部,避免与密钥相关的敏感数据受到板级物理攻击.保护密钥
和密码算法的方案按其实现层次可以分为 3 类:应用层方案、内核层方案和 hypervisor 层方案,本节分别对这 3
类方案进行分析和总结.
3.1.1 应用层密钥和密码算法保护方案
这类方案在用户层实现,利用片内存储资源进行密钥存储和密码学计算,供其他应用程序调用,以保护应用
程序密钥的安全性.基于片内存储的保护方案需要防止普通应用程序访问敏感数据的存储位置读取或者覆盖
密钥,以及防止上下文切换等过程将敏感数据保存到片外 RAM 中,这些限制通常需要 root 权限才能实现,因此
这类方案通常在内核层实现,在应用层实现的密钥和密码算法保护方案较少,目前已知的仅有 Parker 等提出的
方案 [60] 和 Peapods [61] 方案.
Parker 等的方案 [60] 在 x86 架构中利用 SSE(streaming SIMD extension)扩展指令集 [62] 的 XMM 寄存器组实
现 RSA 算法.该方案不将完整的 RSA 私钥明文存储在片外 RAM 中,而是先将其混淆处理后再存储在片外 RAM
中,以防止内存泄露攻击;在进行 RSA 运算时,片外 RAM 中混淆后的私钥先经过重组得到原始私钥再加载到
SSE 寄存器进行密码学计算,以确保私钥明文仅出现在 CPU 寄存器中.该方案通过一个可加载内核模块
(loadable kernel module,简称 LKM)在 RSA 运算期间为不具有 root 权限的应用程序禁用中断,以防止 SSE 寄存
器的内容因上下文切换泄露到片外 RAM 中.该方案基于 OpenSSL 实现,因 SSE 寄存器容量有限,不能使用中国
剩余定理(Chinese remainder theorem,简称 CRT)加速 RSA 的模幂运算,其 RSA-1024 签名操作的性能比 OpenSSL
中常规 RSA 实现低 4.4 倍.该方案的一个安全问题是:如果攻击者得到用于重组私钥的代码,就可以获知私钥混
淆算法,攻击者实施冷启动攻击获得片外 RAM 中经混淆的私钥后,可以通过重组得到 RSA 私钥.