我会认为全盘加密部署会在每次计算机启动和关闭时引入额外的写入。鉴于固态磁盘在发生故障之前的平均写入容量较低,全盘加密解决方案是否会降低部署它的磁盘的预期寿命?
如果我的假设不正确,那么我认为这是毫无意义的。提前致谢。
答案1
将加密视为适配器。数据在写入之前被简单地编码,或在读取之前被解码。唯一的区别是,在某个时刻(通常是在驱动器/驱动程序初始化时)传递密钥以用于加密/解密。
下面是我画出的一张粗略的图表,用来展示基本模式:
如您所见,不需要执行额外的读取或写入,因为加密模块在将数据写入盘片之前对其进行加密,并在将其发送到执行读取的进程之前对其进行解密。
加密模块的实际位置可能有所不同;它可以是软件驱动程序,也可以是系统中的硬件模块(例如控制器、BIOS、TPM 模块),甚至可以位于驱动器本身中。无论如何,该模块位于执行文件操作的软件和驱动器盘片上的实际数据之间的“线路中间”。
答案2
简短回答:
如果磁盘控制器不使用压缩,那么 Synetech 的答案是正确的,加密不会改变任何东西。如果控制器使用压缩,那么加密可能会缩短磁盘的使用寿命(与未使用加密的相同磁盘相比)。
长答案:
一些 SSD 控制器使用压缩来尽量减少写入实际闪存芯片的数据量并提高读取性能(SandForce 控制器就是一个典型例子,可能还有其他控制器)。如果写入磁盘的数据易于压缩,则压缩效果最佳。文本文件、可执行文件、未压缩图像(例如 BMP)等通常可以压缩很多,而已经压缩或加密的文件几乎不可能压缩,因为数据对于控制器中的压缩算法来说几乎完全是随机的。
Tom's Hardware 在 Intel SSD 520 上对此进行了很好的测试,可在以下网址找到:
http://www.tomshardware.com/reviews/ssd-520-sandforce-review-benchmark,3124-11.html
他们所做的基本上是测量驱动器在写入完全可压缩数据和完全随机数据时的写入放大率(写入闪存的数据量与发送到驱动器的数据量的比率)。对于完全随机数据,写入放大率为 2.9*,这意味着每 GB 发送到磁盘的数据,就有 2.9 GB 写入闪存。文章指出,这似乎与在未使用压缩的驱动器上测得的数字大致相同。对于完全可压缩数据,该比率为 0.17,要低得多。
正常使用情况可能会介于两者之间除非数据已加密。文章中对寿命的预测有些学术性,但表明加密肯定会影响使用 SandForce 控制器的 SSD 的寿命。解决这个问题的唯一方法是控制器本身可以在压缩后进行加密。
*本文没有说明为什么 2.9 被视为正常值,我也没有真正研究过。一个合理的解释可能是大多数 SSD 使用的是 MLC NAND,它容易出现位错误(如果我没记错的话,在写入时,擦除块的其他部分可能会发生位翻转)。为了纠正这个问题,数据可能会被写入多个地方,以便始终可以恢复或纠正。
答案3
全盘加密不会增加写入磁盘的数据量,除了加密层需要与文件系统一起存储的任何元数据(可忽略不计)。如果您加密 4096 个字节,则写入 4096 个字节。
答案4
答案取决于您所说的“全盘加密”是什么意思。
如果您只是意味着所有文件和文件系统元数据都在磁盘上加密,那么不会,它不会对 SSD 寿命产生影响。
但是,如果您的意思是更传统的“磁盘的全部内容,包括未使用的空间,都经过加密”,那么是的,它会缩短使用寿命,或许会显著缩短。
SSD 设备使用“磨损均衡”将写入分散到整个设备,以避免过早磨损某些部分。它们之所以能做到这一点,是因为现代文件系统驱动程序会明确告知 SSD 某个特定扇区中的数据何时不再使用(已被“丢弃”),这样 SSD 就可以将该扇区重新设置为零,并继续使用使用量最少的扇区进行下一次写入。
使用传统的全盘加密方案,所有扇区都将被使用。不包含数据的扇区仍处于加密状态。这样一来,攻击者就不知道磁盘的哪些部分包含数据,哪些部分只是随机噪音,从而使解密变得更加困难。
要在 SSD 上使用这样的系统,您有两种选择:
- 允许文件系统继续执行丢弃,此时没有数据的扇区将为空,攻击者将能够将精力集中在您的数据上。
- 禁止文件系统执行丢弃,在这种情况下您的加密仍然很强大,但现在它无法进行显着的磨损均衡,因此磁盘中最常用的部分将会磨损,并且可能比其余部分磨损得更快。