Hypnoguard: 保护待机状态下的内存数据
作者 : 赵连莹 (Viau),Ph.D. Candidate,现就读于Concordia University (加拿大)
留在计算机内存中的敏感数据,在系统处于待机状态(ACPI S3)时极易通过旁路攻击(side-channel attacks)被窃取。这类敏感数据包括但不限于全盘加密秘钥(如TrueCrypt) 以及正在被查看的保密文件 (尽管它们在磁盘上已加密) 。当计算机被偷盗或丢失以及机主被威胁时,由于攻击者得到几乎不受限制的物理便利,他有条件利用系统DMA 漏洞直接访问内存数据或者冷起动内存映像攻击 (cold boot attack) 等旁路攻击来窃取数据。
应对这类威胁的一个挑战是由于计算机不能直接运行加密指令,系统内存中无论待机中或系统苏醒时敏感数据已经明文存在,操作系统提供的重新鉴权保护无法奏效。一些解决方案选择将秘钥暂存在CPU寄存器等特殊位置以躲避攻击,但一方面这种方案只能处理极少量的敏感数据 (如只针对数个字节大小的加密秘钥) ,另一方面在系统苏醒时或者不对用户重新鉴权 (被攻击者直接获取) 或者鉴权受限于用户密码的有限的entropy (可被字典攻击)。另一些产品如BitLocker虽然可以解决这个问题但是是通过强制计算机进入休眠状态 (hibernation, 即ACPI S4) 来实现,由于硬盘性能的瓶颈严重影响可用性,即使SSD通常也要接近十秒左右。
鉴于待机状态的普遍性,我们提出data-in-sleep的概念,来区分于data-at-rest,data-in-transit以及data-in-use等已经被广泛关注的问题。我们解决data-in-sleep问题的两个原则是:1-在整个待机期间没有敏感数据以明文形式暴露于内存中;2-当系统苏醒时对用户的重新鉴权必须可以承受字典攻击且不可绕开。
基于这两个原则,我们设计并实现了Hypnoguard,以保护data-in-sleep为目的的工具。它利用现代CPU的AES-NI硬件加速指令集、多核并行处理以及合适的AES工作模式,在进入待机前实现高速的完全内存加密 (对于8GB内存加密或解密只需要一秒左右) 。而在系统苏醒时,我们整合CPU的可信计算运行环境(如Intel TXT)和TPM安全芯片来达到绑定系统硬件平台的用户重鉴权。Hypnoguard的核心特性即这种不可绕开的系统硬件平台绑定:正确的软硬件运行环境决定正确的秘钥被释放(而不是完全取决于相对较弱的用户密码),错误的环境(即绕开Hypnoguard)无论密码猜测正确与否都无法得到正确秘钥。
在系统部署时,一对公钥和私钥被生成(足够的长度),其中公钥被明文保存在公共区域。而私钥直接被封存(Seal) 在TPM的NVRAM中,绑定于正确的Hypnoguard运行环境以及用户密码。每次待机前,一个足够强的随机对称秘钥(如128bit以上,只一次性使用) 被用来加密整个内存。而后此对称秘钥立即被上述公钥加密存放于公共区域。系统进入待机。
至此,整个系统内存为加密状态,攻击者无法直接窃取。由于我们选择的秘钥长度适当(和用户的密码强度无关),绕过Hypnoguard进行字典攻击通常是是不现实的。如果他进入正确的Hypnoguard环境,虽然此时的保护只取决于用户密码,但猜测密码会以很高概率触发对TPM中的私钥的永久性删除。我们可以配置特定的策略(如错误次数) 来决定对删除秘钥的触发;也可以设置一定范围的密码为删除密码 (deletion passwords) ,既可用于提高攻击者触发删除的概率也可用于用户在被胁迫时提供给攻击者。
在系统从待机状态恢复时,Hypnoguard进入TXT环境,并提示用户输入密码。此密码和当前正确的软硬件环境一起用于释放上述私钥。私钥解密对称秘钥后立即被从临时内存中删除。随即,对称秘钥解密整个内存并将控制权交回操作系统。恢复时的用户密码输入可以取代操作系统的用户密码输入来完全保持现有的用户体验:待机时无需密码,唤醒时输入一次。这种优势得益于公钥系统的引入,即进入待机时无需密码和TXT环境释放秘钥 (使用公钥即可),而只在唤醒时需要。
在此项目中,我们开创性地解决了一些技术问题,如系统唤醒状态下的显示和输入(一直存在但未被解决的问题);我们也依据Hypnoguard的特定需求提出了我们改进版的AES GCM解密过程。
论文链接: Hypnoguard: Protecting Secrets across Sleep-wake Cycles
http://dl.acm.org/citation.cfm?id=2978372
部分参考文献:
Guan, L., Lin, J., Luo, B., and Jing, J. Copker: Computing with private keys without RAM. In NDSS’14 (San Diego, CA, USA, Feb. 2014).
Müller, T., Dewald, A., and Freiling, F. C. AESSE: A cold-boot resistant implementation of AES. In European Workshop on System Security (EuroSec’10) (Paris, France, Apr. 2010).
Müller, T., Taubmann, B., and Freiling, F. C. TreVisor: OS-independent software-based full disk encryption secure against main memory attacks. In Applied Cryptography and Network Security (ACNS’12) (Singapore, June 2012).
Tang, Y., Ames, P., Bhamidipati, S., Bijlani, A., Geambasu, R., and Sarda, N. CleanOS: Limiting mobile data exposure with idle eviction. In USENIX Operating Systems Design and Implementation (OSDI’12) (Hollywood, CA, USA, Oct. 2012).
Vidas, T. Volatile memory acquisition via warm boot memory survivability. In Hawaii International Conference on System Sciences (HICSS’10) (Honolulu, HI, USA, Jan. 2010).
Xia, Y., Liu, Y., Tan, C., Ma, M., Guan, H., Zang, B., and Chen, H. TinMan: Eliminating confidential mobile data exposure with security oriented offloading. In EuroSys’15 (Bordeaux, France, Apr. 2015).
Zhao, L., and Mannan, M. Gracewipe: Secure and verifiable deletion under coercion. In NDSS’15 (San Diego, CA, USA, Feb. 2015).
Zhao, L., and Mannan, M. Hypnoguard: Protecting secrets across sleep-wake cycles. Tech. Rep. 981477, Concordia University, Aug. 2016. http://spectrum.library.concordia.ca/981477/.
作者简介 : 赵连莹 (Viau),Ph.D. Candidate,现就读于Concordia University (加拿大) 。毕业于天津大学获得通信与信息系统硕士学位。此前的工作领域包括嵌入式系统软硬件以及大型主机(Mainframes),在业内从事相关工作6年 (IBM China) 。当前主要研究方向为信息系统安全,包括硬件/系统相关的安全问题,基于密码的鉴权,可信计算等。并发表多篇文章于ACM CCS, NDSS, NSPW以及IEEE TIFS。