电脑内存中存储着大量非加密信息。幸运的是,一旦停电,内存中的这些信息就随之消失了。不过,这种情况在下一代内存中将不会出现。
动态随机访问存储器(DRAM)也就是我们常说的内存,其动态性就体现在它必须借助外部电力保持芯片中的电容状态。一旦停电,芯片中的电容就会放电,所有数据随之消失。
早在2008年,普林斯顿大学的研究人员就发现,通过“冷冻”DRAM芯片,可以将其中存储的内容在断电后继续保持足够长的时间,从而从中读取信息。所幸是,这种冷冻技术并不简单,因此也没有成为黑客获取信息的主流方案。
在已经过去的2011年中: 研究人员打算尝试将DRAM替换为更有效率同时也对电源依赖度更低的非易失性主内存(Non-Volatile Main Memory,NVMM)。在硬件开发人员眼里,NVMM有如下几个特性:
· 维持存储内容不需要供电
· 即时恢复睡眠或冬眠状态
· 使用现有技术,NVMM能在相同的空间下实现更大的存储容量
但是有利就有弊,对于NVMM来说存储内容不需要电力维持,那就意味着在存储过程中一旦电力丧失,数据会继续保留在NVMM内存中。这就达成了当初普林斯顿大学研究人员,甚至是所有黑客的预期。一旦黑客获得了你的笔记本,就可以有足够的时间将内存中的非加密数据提取出来。
解决方案
本文很高兴向大家推荐了i-NVMM,这是由Intel的Siddhartha Chhabra博士和北卡罗来纳州立大学Yan Solihin博士共同研究的一种针对上文提到的风险解决方案。在这两位开发者的论文《i-NVMM:带增量加密的非易失性主内存系统》中,对于i- NVMM的解释是这样的:“针对NVMM的数据隐私保护系统。I-NVMM基于一种内存端的加密引擎对电脑主内存进行加密,因此不受操作系统和硬件架构限制。”
这段话听上去很简单,但实际上并不简单。首先让我们先看一下下面这个结构图:
下面是这两位开发者的解释:
“图中显示的是在NVMM上添加的一个硬件组件。其中一个组件是页面状态表Page Status Table (PST), 即通过一个SRAM结构随时跟踪每个页面的状态:
· 1-bit表示当前页面是否处于加密状态(Enc-Status)
· 该页面的最后访问时间(LastAcc)
· 该页面被访问的总次数(numAcc)
· 本页之后的下一个访问页(NextPage)
· 1-bit表示一个页面是否正处在加密/解密过程中(Pending)
LastAcc被用于Inert Page Prediction(IPP)技术,用来预测一个非活动页面并进行加密。NumAcc是用来记录某个已加密数据页已经收到了多少访问请求,进而判断是否要将这个加密页进行解密。”
这样看来似乎还是不够明白,于是作者决定直接打电话联系这个技术的研发人员。Dr. Chhabra同意回答作者有关i-NVMM的一些问题。下面是作者对Dr. Chhabra的电话采访记录供读者参考:
Kassner: 首先要说一下,我对非易失性存储器(NVM)比较熟悉,但是之前没有听说过非易失性主存储器(NVMM)。这两者有什么区别吗?
Chhabra: 你可以把NVM看作是电脑中的存储系统,可以在断电后继续保持其中的存储内容不发生改变,目前的U盘还有硬盘等,都可以看作是NVM。因此NVM并不是什么新概念,早在上世纪60年代就已经出现了。而NVMM是一个新的概念。你可以把它想象成目前DRAM的替代品。在其它方面,NVMM包含了NVM的各种技术,类似于相变内存(PCM)或者磁阻RAM(MRAM)等技术。
Kassner: NVM的非易失性特性可以说是一把双刃剑,对于电脑存储来说是好事,但是对于安全来说不见得是好事。我猜上世纪60年代,人们在推出NVM这个概念时没有过多的考虑过安全性问题。你和Solihin博士在这方面给出了解决方案:i-NVMM。你能不能大致的介绍一下i-NVMM的技术原理呢?
Chhabra: 我们意识到对于存储来说,不论是否安全,主内存的非易失性都是一个相当重要的特性。因此我们决定找出一种解决方案,能够在既保证规避安全风险,又能让非易失性这个特性在当今的电脑系统中充分发挥作用。
下面是我们论文中的一段话,也是对于我们的工作最好的总结:
作为一种新出现的技术,非易失性主内存(NVMM)系统存在一个安全隐患,即存储在其中的数据在断电后仍然长时间留存,使得黑客可以在获取物理硬件设备后进行数据提取,获得主内存中的非加密敏感数据。此次研究工作的目的就是要找到一种安全解决方案,避免上述安全隐患。
根据我们的研究,我们推出了i-NVMM,这是一种针对NVMM的数据隐私保护方案,主内存中的数据采用增量(incrementally)方式被加密,即不同的数据在内存中被加密的时间不同,加密时间的选择则是根据其是否还会被处理器使用而定。
之所以采用增量加密方式,是因为每个应用程序在执行过程中,同一时刻需要处理的数据体积远小于程序进入主内存的体积。因此,只要判断出正在接受处理的数据,并把那些暂时不需要处理的数据进行加密,i-NVMM就可以确保内存中的大部分数据都处于加密保护状态,同时也不会对性能造成明显影响。
我们的实验证明这个想法是可行的。根据SPEC2006 benchmarks统计i-NVMM保证了主内存中78%的数据处于加密保护状态,同时程序延迟只比非加密状态多了3.7%,对于NVMM写入次数的影响更是微不足道。所有加密机制都是在内存模块中通过简单的硬件结构实现的。
Kassner: 当你在谈论NVMM和i-NVMM时,你是否建议大家将DRAM替换为NVMM?
Chhabra: NVMM目前还处于研究中,未来有很多种可能。
从物理接口来说,很久前就出现的NVM技术完全可以取代DRAM,但是NVM的读写速度一般来说要比DRAM慢,而且写入次数也不如DRAM。这两大问题,迫使计算机的存储系统成为如今这种混合型的系统。即为了利用DRAM的高速性能和更高的读写耐久度,在主内存系统中使用DRAM,而在对速度要求不高的环境下使用诸如PCM这样的非易失性存储器。
而在我们的加密研究中,我们所说的NVMM是可以完全取代DRAM的。不过这种安全结局方案也可以应用于我上面所说的目前这种混合型的存储系统。
Kassner: 在论文中,您涉及到了i-NVMM在加密和解密数据时,对数据是否需要被加密有一个选择过程。这种选择可靠吗?
Chhabra: i-NVMM通过预测来判断某段数据是否会被程序使用。实际上,一个程序涉及的数据要比他实际运行时需要的数据多很多。程序涉及的数据,我们可以称其为常驻集,而程序在稳定状态下会使用到数据我们称其为工作集。
如果加密方案无法区分程序数据的这种不同,就会将整个内存数据都进行加密。这将导致程序运行效率大大降低,因为程序用到的所有数据都需要随时进行解密供程序使用,然后再被加密存放,有的数据可能因此被反复加密解密。
通过检测不活跃的内存页面(通过内存模块的硬件计数功能),内存端的加密引擎可以预测哪些内存页面数据不属于常驻集(或者叫惰性页面)。一旦某个页面被判断为惰性页面,就会被内存端的加密引擎进行加密。
Kassner: 你是怎么设计i-NVMM的?是通过增加固件的方式,还是在内存模块附加辅助硬件?
Chhabra: 我们认为i-NVMM的实现应该完全在内存模块内部,不需要在内存模块外增加额外的硬件、软件、固件支持等。
Kassner: 除了加密数据外,i-NVMM在安全性方面还做了哪些改进呢?我想既然i-NVMM带有内存预测能力,是否表示它能预防缓冲溢出?
Chhabra: 这个不行,i-NVMM并不是设计用来防止你提到的这种软件攻击的。它只是用来保护NVMM中的非易失数据。看来我应该在人们选择NVMM时明确说明,i-NVMM并不能保护系统数据不被攻击。
Kassner: 当电脑关机时会怎么样呢?内存会彻底清空?或者i-NVMM会将内存中的全部数据都加密储存?这方面的问题才是人们选择i-NVMM时最关心的吧?
Chhabra: 我们不希望在电脑关闭时,内存中的数据出于安全考虑而全部被清空,因为这样就没有必要选择NVM存储技术了。实际上,当电脑关机时, i-NVMM会将内存中未加密的数据进行加密(这些数据是程序正在使用的数据)。
在攻击情节中,攻击者会窃取一个正在运行的系统上的内存,而我们要做的就是确保攻击者无法从该内存中获取任何有用数据。i-NVMM内存中带有一个小型CMOS电池,确保一旦断电后,内存模块有足够的电力维持将其中的未加密数据进行加密。
Kassner: 未来i-NVMM会有什么发展吗?
Chhabra: 目前我们正在寻找对这种技术感兴趣的厂商,对技术进行专利化并生产处原型i-NVMM内存。
总结
本文让我们看到了存储领域的进步,尤其是针对安全实践硬件技术的进步。由此可见,安全已经成为了如今软硬件开发过程中都必须考虑的环节。