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

3134                                  Journal of Software  软件学报 Vol.31, No.10, October 2020

         上内存中的指令时,需要读取页表获得指令虚拟地址对应的物理地址,攻击者可以篡改页表中映射该虚拟地址
         的 Entry,将该虚拟地址映射到已经植入恶意代码的内存,从而获得系统的控制权.虽然 CaSE 方案                           [103] 提出将被
         保护程序的地址映射锁定在 TLB 中以防止攻击者篡改的思路,但是一般来说操作系统的地址空间远远大于
         TLB 所能保护的地址空间,因此同样存在由于部分地址空间没有被保护而受到攻击的缺陷,譬如以下攻击:
         (1)  一旦 CPU 执行片外 RAM 中的指令,攻击者即通过总线向 CPU 注入清空 TLB 指令,使得锁定的 TLB 失效,
         而 CPU 再次建立地址映射时页表已经被攻击者篡改;(2)  如果中断处理代码没有受到完整的保护,攻击者可
         以向 CPU 发起硬件中断,将未被保护的中断处理代码(即位于片外 RAM 中的代码)篡改为清空 TLB 指令或其
         他恶意代码来控制系统.






















                                  Fig.4    An example of board level physical attacks
                                           图 4   板级物理攻击实例
             第 3.1 节和第 3.2 节的密码算法保障和应用程序保护类工作无法从根本上抵抗板级物理攻击的主要原因
         在于防御组件无法对其所在的地址空间进行整体保护(如果防御组件实现为内核模块,那么其所在地址空间就
         是内核地址空间).虽然部分方案提出将所有的代码特别是管理代码全部放入片内存储的思路,但是图 4 描述的
         攻击表明这种思路对实际的操作系统内核是不可行的:由于操作系统内核体积较大无法全部放入片内存储,攻
         击者可以攻击未受保护的那些代码和数据,并且如果防御组件缺乏对页表、中断处理等关键数据和代码的保护
         则会加速攻击过程,而这恰恰是当前众多方案所缺乏的.针对该安全问题,学术界提出了全系统加密技术,该技
         术的思路是对防御组件所在的地址空间进行整体防护.一般来说防御组件位于内核层,因此这类工作基本上对
         操作系统内核进行了整体防护,并向上对应用层内存也进行了加密和完整性保护.根据技术实现思路的不同,全
         系统加密技术可分为轻量级操作系统全系统加密和基于请求分页系统的全系统加密两类.
         3.3.2    轻量级操作系统全系统加密
             这类方案面向的是实时操作系统、嵌入式操作系统等轻量级操作系统.这类操作系统运行所需工作内存较
         小,完全可以整体放入片上内存中来抵抗物理攻击.在此基础上,内核为应用程序提供物理防护机制.
             美国达特茅斯学院的研究团队设计并实现了一个运行在片上内存的轻量级操作系统 Bear OS                              [111] 来抵抗板
         级物理攻击.该操作系统内核使用微内核架构来减少自身 TCB 以便运行在容量有限的片上内存中.Bear OS 限
         定进程只能运行在片上内存中,并设计了进程静态加密和动态加密两种进程保护方式.进程静态加密的技术思
         路是只将进程的二进制镜像加密,进程的数据段,包括 heap、stack、data 等,直接在片上内存中分配,内核在加载
         进程时直接从磁盘中读取加密镜像,解密后放入片上内存.静态加密方式在进程初次运行时整体加载至片上内
         存,对进程性能影响较小,但是对片上内存容量要求较大,需要容纳整个进程空间.动态加密方式将进程的不同
         段分别进行加密,包括 code、data、heap、stack 等段都分别加密,在进程运行过程中需要哪个段就将该段解密
   153   154   155   156   157   158   159   160   161   162   163