SSD加密的陷阱

信息安全 加密 linux AES
2021-09-05 01:37:30

加密 SSD 是一个有时被警告应谨慎执行的过程。例如, http ://en.gentoo-wiki.com/wiki/DM-Crypt_with_LUKS 提到 SSD 如何保留用于磨损均衡的隐藏空间,其中可以在任何给定时间存储任意数据,例如覆盖的数据。

我的问题如下:这种攻击场景是否仅限于 SSD 先前在某个时候包含未加密的敏感数据并且只有在未加密存储之后,整个设备才加密的情况?换句话说,如果 SSD 自从它是新的以来除了加密数据之外从未包含任何东西,那么(加密的)数据可能存在或不存在于这个隐藏空间中又有什么关系呢?

如果SSD始终包含加密数据,这对我来说似乎很明显可以丢弃,但是我错过了什么吗?

假设任何特定示例都使用带有 luks 和 256 位 AES 的 GNU/Linux,但是是否有任何其他特别危险的软件/SSD 组合?该软件在任何阶段都会向 SSD 提供未加密的数据,这似乎很离谱。

3个回答

请记住,现代 SSD已经在固件级别加密您的数据,因此只需丢弃内部密钥即可完成重新格式化操作,而不是擦除每个扇区。这并不意味着您的数据始终会自动加密 - 加密仅用于解决 NAND 磨损问题。但是,这确实意味着正确的固件级格式化操作会使磁盘上的数据完全销毁,以用于所有意图和目的。如果您要丢弃 SSD,我强烈建议您使用此选项。大多数主要操作系统都识别并支持适当的固件命令,但它的使用可能会有所不同 - 请查看相应的文档。

就磨损均衡备用扇区而言,实际上,无论存储的数据是否加密,您都应该是安全的。由于内部加密,磨损均衡区域中的孤立数据块不应该是可恢复的,因为 IV 和同级块被破坏/丢失。但是,这并不是说您可能不走运——很可能最终会保留一些文件数据块,从而导致可以恢复少量明文的情况。很难说。

暂时忽略内部加密,另一个有趣的攻击与旧的密文残余块有关。如果您使用特定密钥和 IV 加密一段数据,然后使用相同的密钥和 IV 加密一段新数据,则可能会使用差分密码分析或其他攻击来攻击该数据。它还演示了对某些数据区域的主动修改,根据您的威胁场景,这可能对您有问题,也可能没有问题。

在 Flash 块上,可以进行两种操作:将一位从 0 转换为 1,或者将整个块重置为 0(当然,0 和 1 的角色可以互换)。每个块在失败之前仅维持有限数量的重置,因此“磨损均衡”试图传播“重置”操作。此外,纠错码用于避免一些错误位。

一种可能的磨损均衡算法(或更广泛算法的一部分)是在读取时检查每个块中的误码率;当速率变得太高(太接近纠错码可以管理的上限)时,该块被声明为“失败”,并且该块的下一个重置操作将改为“重新映射”:另一个块,从备用区域,将在以后使用。结果是“失败”块中的数据仍然存在;它无法从逻辑上访问(SSD控制器显示重新映射的块,而不是这个),但可以通过提取闪存芯片并直接访问它来读取它。

这意味着操作系统级别的擦除策略不能 100% 有效。

许多(但不是全部)现代 SSD 实现了“安全擦除”功能,其中所有数据都使用随机密钥加密,当机器要求安全擦除时,该密钥会被更改。这相当于销毁所有块中的数据,包括现在无法访问的块中的数据,因此是非常有效的全盘擦除。但是,里程可能会因触发此类擦除的方式而异(本质上,格式化分区不会触发整个磁盘擦除,并且更改分区表通常也不会这样做)。此外,此过程的安全性取决于磁盘使用的加密质量,这不一定很好,并且在任何情况下都很少记录(大多数供应商只是说“AES”而没有任何其他精度)。使用操作系统级加密,您可以更好地控制发生的情况。

如果磁盘上发生的每一次数据写入都使用了适当的加密(当然,使用的密钥不在磁盘本身上),那么是的,您可以丢弃磁盘而不再考虑它。SSD“安全擦除”功能可能体现了这个概念,假设它不会破坏加密部分(但你很少能确定这一点)。

SSD内部的加密似乎被人们视为一种无稽之谈的安全机制。作为所有者,您几乎无法访问加密实施的内容和方式的规范(可能是错误的或过时的),无法审核制造商提供的是否是纸上的内容(请参阅对英特尔兰特的指控),没有控制加密密钥(您没有生成它们,也无法检查它们)。如果我在任何方面有错误,请告诉我。

本质上,我们谈论的是一个黑盒子,上面有一个贴纸,上面写着“专有”或“魔法发生在这里”。还有第二个标签,上面写着“受信任”,可能是公关部门发明的。