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

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


         理机制实现了在保持 RAM 内存页为密文状态的情况下将明文写入二级缓存的技术,使得在安卓系统锁屏后内
         存数据为密文的情况下后台程序仍能正常运行,该方案采用禁止中断的方式防止 AES 中间计算结果被切换到
         片外 RAM.
             为增强 Linux 操作系统休眠时的物理安全性,德国 Fraunhofer 协会的应用集成信息安全研究所将 Linux 的
         全盘加密机制从磁盘加密扩展到了内存加密                 [92] .设备休眠和启动时 Linux 操作系统会转换所有进程状态,该方
         案在进程转换状态之前调用全盘加密机制的加解密接口对进程的虚拟内存地址空间进行加解密,之后清空磁
         盘加密密钥以及相关密码算法的数据结构以防止攻击者从内存镜像中获取该密钥.该团队后续又基于 Linux
         CGroup 的 freezer 子系统实现了对进程组的内存加密方案 Freeze&Crypt          [93] .该方案的技术思路是在 freezer 子系
         统停止和启动进程组的流程中加入进程加密和解密步骤,从而达到同时加密保护一个进程组的目标.该方案适
         用于移动设备等活动进程和休眠进程共存的场景.该团队在安卓容器场景中展示了方案的可行性,只有活动的
         安卓容器在内存中处于明文状态,其他后台容器均被加密以抵抗物理攻击.
             另外也有研究人员提出使用底层 hypervisor 来对上层操作系统进行内存加密的思路,从而使内存保护与操
         作系统无关.加拿大康考迪亚大学提出了一个与操作系统无关的计算机内存加密方案 Hypnoguard                              [94] .该方案利
         用 Intel 的动态信任链技术 TXT 构建了一个动态可信执行环境 Hypnoguard 对休眠前的内存进行加密.该方案
         的加密密钥由安全芯片 TPM 保护,以此抵抗物理攻击.同时该方案使用了可信计算的封装机制和用户的口令认
         证机制,保证只有未被篡改的 Hypnoguard 和合法用户才能解密内存唤醒计算机.为提高加密速度,该方案使用
         了 AES-NI 硬件加密指令和多核计算,保证在 1s 之内实现对 8G 内存的保护,降低用户等待时间.
         3.2.2    系统运行时应用程序保护方案
             在系统休眠时提供物理防护只能解决一部分场景的安全问题,实际上并没有为设备提供全面的物理防护:
         攻击者在设备运行时仍可以实施物理攻击.为解决该问题,研究人员提出能够在设备运行时对安全敏感应用进
         行保护的方案.这些方案中,一部分是通过内存滑动窗口技术来减缓物理攻击的威胁;一部分是通过片上内存、
         缓存和寄存器等处理器片内存储来保护应用的关键数据或代码,从而更加安全的抵抗物理攻击;还有一部分是
         利用处理器其他硬件机制来保护应用程序免受物理攻击.本节按照方案采用的内存滑动窗口、片上内存、缓存、
         寄存器以及其他硬件机制这 5 类进行划分对相关方案进行分类总结.
             (1)  基于内存滑动窗口的内存防护技术研究
             减缓针对内存的物理攻击的一个方法是减少内存中明文内存页的比例,基于该思路研究人员提出了滑动
         窗口技术.该技术的主要思路是只保持一部分内存页为明文状态,为应用提供工作内存,其余内存页均处于加密
         状态.CryptKeeper [95] 实现为一个具有加解密功能的虚拟内存管理器,保证任何时刻只有一小块固定大小的内存
         处于明文状态用以支撑系统运行,其他片外 RAM 上的所有数据都处于加密状态,以缓解物理攻击.由于部分数
         据仍在片外 RAM 中以明文状态存储,因此该方案并没有彻底解决板级物理攻击问题.德国埃尔朗根-纽伦堡大
         学提出了 RamCrypt 方案     [96] ,目标是保护进程私有数据在运行时的安全性.该方案借助 TRESOR                 [64] 等方案的抗
         物理攻击密码算法,对进程地址空间中的 BSS 以及堆栈等私有数据空间进行加密保护,并基于操作系统的请求
         分页机制保证这些地址空间中的内存页只有被操作系统访问时才被解密,从而大大降低了数据在内存中以明
         文形式存在的时间.为降低性能损失,该方案实现了一个滑动窗口,保证进程在任意时刻只有滑动窗口内的内存
         页处于明文状态,是安全与性能的折衷方案.实验结果表明,一些密钥等机密数据只有 3%的时间处于明文状态,
         大大减少了物理攻击者的攻击时机.
             (2)  基于片上内存的防护技术研究
             CryptMe 方案 [97] 将通用操作系统的进程迁移到 ARM TrustZone 的安全世界来运行,并设计了一个特权软
         件来维护进程在安全世界的执行环境.该特权软件首先通过同步进程在两个世界间的进程结构体和页表等关
         键数据结构体以及转发系统调用来维持进程在安全世界的执行环境;其次,将受保护进程的数据段映射到片上
         内存以抵抗物理攻击,并在片内 RAM 上设计滑动窗口机制以解决片上内存无法同时加载进程全部数据的问
         题.MemVault 是针对安卓设备的细粒度片外 RAM 加密方案                [98] .该方案利用安卓的动态污点跟踪和分析工具
   150   151   152   153   154   155   156   157   158   159   160