出于安全考虑,我们需要在即将安装的服务器上实施完整的文件系统加密。我们使用 CentOS 7 附带的默认加密设置。
我的问题是:由于我们的服务器使用 SSD 驱动器,我是否应该担心加密/解密系统会给驱动器带来额外的压力,因为标准 I/O 访问需要额外的读/写?我有预感,如果有的话,它应该会给 CPU 而不是 SSD 带来压力,但我想详细了解它。
答案1
答案取决于加密的设计方式。大多数块级加密在逻辑扇区和物理扇区之间具有 1:1 映射。这意味着从逻辑设备读取一个明文扇区相当于从物理设备读取一个密文扇区。将一个明文扇区写入逻辑设备相当于将一个密文扇区写入物理设备。我预计 CentOS 上的默认设置属于此类。
这是效率和安全性之间的折衷。这种方法存在某些类型的漏洞,但解决这些漏洞会增加很多复杂性和相当多的开销。对于任何密码学家来说,很明显,由于明文和密文的大小完全相同,因此无法获得语义安全性。
乍一听,这种方法似乎意味着加密层根本不会改变 I/O 效率。然而,你确实失去了使用修剪命令。缺乏 TRIM 支持会降低 SSD 的效率和使用寿命。如果您使用的文件系统不支持 TRIM,则使用加密不会在 I/O 方面造成任何损失。
没有什么可以阻止加密层将 TRIM 命令传递到物理层,但这样做会泄露有关文件系统上数据结构的一些信息。在这里你可以看到一些文档支持此功能但默认情况下不启用它的实现。
更先进的存储加密方案是可行的,虽然在 I/O 和存储容量方面有所成本,但数据泄露的机会较少。此类方案甚至可以支持 TRIM 而不会泄露数据。