保护待机状态下的内存数据
2017-01-27赵连莹
中国教育网络 2017年4期
文/赵连莹
保护待机状态下的内存数据
文/赵连莹
留在计算机内存中的敏感数据,在系统处于待机状态(ACPI S3)时极易通过旁路攻击(side-channel attacks)被窃取。这类敏感数据包括但不限于全盘加密秘钥(如TrueCrypt) 以及正在被查看的保密文件 (尽管它们在磁盘上已加密) 。当计算机被偷盗或丢失以及机主被威胁时,由于攻击者得到几乎不受限制的物理便利,他有条件利用系统DMA 漏洞直接访问内存数据或者冷起动内存映像攻击 (cold boot attack) 等旁路攻击来窃取数据。
应对这类威胁的一个挑战是由于计算机不能直接运行加密指令,系统内存中无论待机中或系统苏醒时敏感数据已经明文存在,操作系统提供的重新鉴权保护无法奏效。一些解决方案选择将秘钥暂存在CPU寄存器等特殊位置以躲避攻击,但一方面这种方案只能处理极少量的敏感数据(如只针对数个字节大小的加密秘钥) ,另一方面在系统苏醒时或者不对用户重新鉴权 (被攻击者直接获取) 或者鉴权受限于用户密码的有限的entropy (可被字典攻击)。另一些产品如BitLocker虽然可以解决这个问题但是是通过强制计算机进入休眠状态 (hibernation, 即ACPI S4) 来实现,由于硬盘性能的瓶颈严重影响可用性,即使SSD通常也要接近十秒左右。
鉴于待机状态的普遍性,我们提出data-in-sleep的概念,来区分于data-atrest,data-in-transit以及data-in-use等已经被广泛关注的问题。我们解决data-insleep问题的两个原则是:一是在整个待机期间没有敏感数据以明文形式暴露于内存中;二是当系统苏醒时对用户的重新鉴权必须可以承受字典攻击且不可绕开。……
登录APP查看全文
