我对硬盘的所有分区都启用了BitLocker加密。在微博上谈及此事时,和人讨论到了这个功能对性能的影响。虽然之前看微软的文档,那里说这个功能对性能降低的百分率在个位数,不过也有人说影响挺大的,于是我打算仔细研究一下。
首先,在网上进行了一下搜索,找到了一篇文章,其中给出的数据比较触目惊心,开启BitLocker,并使用不同加密算法时,对性能的影响在30%左右。下列两个图片来自原文网页。
由于上述结果是在一台CPU为Atom N260的,应该是上网本的设备上测得的,这样的配置和现在主流笔记本的配置相差较远,于是我打算亲自测试一下。
但首先,如果你对这个功能感兴趣,想要使用,也可以先看看我之前写的一篇介绍性文章,介绍了使用该功能的前提条件,以及具体的开启方式:BitLocker使用揭秘。这篇文章是三年前写的,以Vista为例进行介绍。不过该功能的大致思路和用法在Windows 7中并没有太大变化。
BitLocker所支持的不同加密算法
还是根据微软文档的介绍,BitLocker支持128位与256位两种强度的AES加密算法。密钥越长,安全性越高,被攻破的难度也就越大,但是密钥越长,数据加密和解密所需的时间也就越长。除此之外,BitLocker还可以使用一种额外的Diffuser算法防范通过Ciphertext进行的攻击。
默认情况下, Windows中的BitLocker使用128位AES加密,同时使用Diffuser。不过具体使用哪种算法,以及是否使用Diffuser,都可以通过组策略进行调整。不过一般从性能的角度考虑,128位加密强度足矣,同时最好启用Diffuser,但如果是企业用户,由于合规性要求,必须遵守美国联邦信息处理标准(FIPS),则就不能使用Diffuser。
具体来说,这些策略位于 【管理模板-Windows组件-BitLocker驱动器加密】节点下,通过“选择驱动器加密方法和密钥长度”策略进行配置。另外在这个节点下还有更多可以对BitLocker进行配置的策略,具体用途和使用方法请参阅说明信息。
典型的BitLocker环境对数据的解密可通过三种途径进行:
TPM芯片:这是一种专用芯片,需要固话或额外安装在主板上,用于存储加解密过程中所需的全部密钥和其他信息。Windows的BitLocker功能必须使用1.2版以上TPM芯片。不过这种芯片通常只出现在针对商业用户的高端电脑中,而且貌似在中国大陆因为政策方面的原因,行货可能无法装备此类芯片。
PIN码:如果没有TPM芯片,则可以使用PIN码。简单来说这就是一个密码,需要用户手工输入,以解密数据。
启动密钥:这实际上是一个文件,需要保存在可移动存储设备中,该密钥需要配合TPM芯片或者PIN码才能使用,不能单独使用。
因此取决于具体的硬件配置及安全需求,可以将上述三种解密途径进行排列组合(下图来自微软网站)
具体环境
我这台本子的硬盘是一块320GB容量,7200rpm的日立硬盘,具体型号为HTS723232A7A364,缓存16MB。CPU则为Intel Core I7-2620M,双核心四线程,4MB缓存,主频2.7GHz,通过睿频功能最多可自动超频到3.4GHz。CPU的规格中列出了支持AES New Instructions技术,简单来说,这个技术等于是给CPU中添置了专门负责AES相关操作的指令集,因此可以加速有关AES操作的运算速度。
根据Intel白皮书的介绍,在使用这个功能后,使用McAfee Endpoint Encryption for PC 6.0软件以及McAfee ePolicy Orchestrator 4.5对一块32GB X25E SSD硬盘进行全盘加密,分别使用3.33 GHz Intel Xeon X5680处理器(带有该功能)和2.93 GHz Intel Xeon X5570处理器(不带该功能),速度提升高达42%。
言归正传。因为之前我的硬盘已经被加密完成,因此打算使用D盘作为测试目标,分别测试加密状态以及解密后的速度。测试环境使用64位Windows 7旗舰版,内存8GB,系统和驱动都升级到官方最新版。测试软件使用了2.47版ATTO Disk Benchmark。
因为这是证明在实际使用环境中的测试结果,因此我没有使用干净的系统,而是使用我已经安装好所需软件,并且必要软件都运行起来后的测试结果。只不过这些软件都保存在C盘,可以保证在进行测试的过程中,不会有其他程序想要读写D盘内容。
结论
在开启BitLocker,并保持分区为加密状态下测试的参数和测试结果如下左图。随后用了将近三小时对D盘进行解密,解密完成后重启动系统,然后获得了下列右图的结果。
观察发现,无论是加密或是解密状态下,数据的读取速度影响并不是很大,但在写入数据时却有比较明显的差异。根据我平时的使用特点,以8MB、16MB、64MB,以及512MB这几个区块大小时的写入速度进行一个简单的对比。
从结果中可以看出,对于写入速度,BitLocker的影响还是很大的,除了8MB大小区块的结果异常,估计可能是误差或其他因素影响,毕竟我不是在干净环境中进行的测试,而且取的关键点也太少。不过应该能够说明问题了,BitLocker对写入速度确实有不容忽视的影响,并且绝不像微软所宣称的那样“个位数的百分率”,不过对读取速度的影响基本可以忽略不计。考虑到一般应用,都以读操作为多,写操作相对较少,因此可以认为,BitLocker对性能的整体影响基本不那么纠结了。尤其是需要考虑到以牺牲性能为代价所获得的其他好处。
当然,也许我的上述测试过程本身存在一些尚未发现的缺陷或不足,因此如果有筒子对此有更好意见,也欢迎留言告诉我。
最后,其实这次测试的起源是一位朋友说对U盘启用BitLocker To Go加密后,性能下降严重,无法接受。其实我一直觉得,虽然名字中都带有BitLocker字样,但这两个功能从工作原理上看截然不同,进而并不适合直接将一个功能的感受套用到另一个功能中。本还想对U盘进行一下类似的测试,但我突然发现自己手边连一块U盘都没有,因为我现在已经很少使用U盘了,大部分文件交换工作都是通过网络进行。因此暂时没法测试。不过感兴趣的筒子也可以自己试试看。
花了三个多小时解密,两分钟测试完毕,又得重新加密起来了。幸亏加密和解密过程中正常操作不太受影响,要不然真要命了。