数据加密时的 SSD(闪存)安全性

信息安全 硬件 磁盘加密 USB驱动器 记忆
2021-08-18 09:09:33

我正在调查有关闪存安全性的当前技术。我了解到闪存的非就地更新使我们无法采用我们在硬盘上使用的相同加密技术 - 请参阅闪存 (SSD) 架构会影响加密技术吗?- 我想知道正在使用什么样的机制来解决这个问题。

为了清楚地表达我的问题,假设数据“a”存储在地址“x”中,但加密后数据“a”不能存储在同一地址“x”中(因为没有-将更新放在闪存中)。所以我们所做的就是加密数据,比如“ a' ”,并将其存储在另一个地址“ x' ”中。由于未加密的数据“a”仍然可用,我们必须将其删除(注意,在 SSD 中,我们一次只能擦除整个块),这会导致擦除和替换与“a”相同的块中的所有数据”。问题是,这将导致大量的擦除操作,如果以这种方式继续下去,内存将在有限次数的擦除后磨损。

我想知道这个问题是否有任何解决方案。

3个回答

我认为这个问题更多地询问了当您在之前未加密数据的设备上加密数据时会发生什么。SSD 单元和 HDD 单元遭受与此相关的不同可能的妥协。这基本上被称为(至少在古老的维基百科上)数据剩磁那篇文章提供了大量有关数据在硬盘上保留或泄漏的各种方式的信息。

在 SSD 存在特殊问题的地方,它还提出了一个新的解决方案:“安全擦除”命令来弥补,就像 TRIM 帮助弥补删除一样。

但是,如果您的安全问题足够高以至于您担心未加密数据的块级活动,我建议如下:考虑任何曾经以未加密状态保存敏感数据的驱动器被污染使用分区或设备级别的整个磁盘加密。

这适用于 HDD 系统和 SSD 系统。特殊情况将是一个被覆盖的文件。理论上,先进的恢复技术可以读取被覆盖的数据(因此安全擦除模式算法:DoD 5220.22-M),尽管这可能是低密度驱动器的产物(http://computer-forensics.sans.org/blog/2009/ 01/28/spin-stand-microscopy-of-hard-disk-data/http://www.securityfocus.com/brief/888)。尽管如此,高级文件系统可能会处理对另一个位置的覆盖,或者在未加密时捕获数据的快照。

我认为对当前 SSD 上的数据加密方式存在误解。数据以 8bit/10bit 格式从主机写入设备。在链接层级别,数据被转换回 8 位/字节格式,然后发送到缓存(DRAM 或 SRAM)。如果控制器支持加密(大多数都支持),则数据会被即时加密,并且在数据之前为加密数据生成奇偶校验信息,并且奇偶校验信息以循环方案写入实际的 NAND 闪存页(在多路复用可用通道之后)。

换句话说,如果需要加密,数据不会以非加密格式写入,而是在线完成加密。如果不这样做,每个块只能写一个页面,然后加密数据,将它们写入下一页并使前一页无效,这仍然会将未加密的数据留给任何可以通过执行访问它们的人全局清除或下载 IC 的全部内容。因此,有必要写入一个页面,对其进行加密(并将其写入同一块的下一页),然后擦除整个块并仅将加密的页面复制到另一个块。如果有人这样做,写入放大将是天文数字。

问候,迈克尔

有意的非就地更新通常用于关键软件或 BIOS 等数据。无意的非就地通常由磨损均衡算法完成。对于某些类型的闪存控制器上的正常文件访问,您可以编写驱动程序以允许在擦除后写入相同地址。块大小通常为 128kB,考虑到典型闪存组件和文件的大尺寸,这还不错。

如果您需要字节级擦除,您可以使用串行EEPROMEEPROM是闪存的始祖。它具有更快的读写时间,并且在写入之前不需要块级擦除。EEPROM的最大缺点是容量。最大的 EEPROM 为 8 MB,而闪存为 256GB!EEPROM 的寿命约为 100,000 次写入/擦除周期,这与普通闪存相似,但远远落后于具有更多周期(1,000,000 次)的高耐久性闪存。

FRAM(铁电随机存取存储器)是一种不太受欢迎的选项,它还具有快速的读写速度以及字节级访问,但可用性低且在工具和软件方面的支持很少。它具有更长的使用寿命和更低的功耗,但它主要用于片上系统 (SoC) 组件,而不是作为独立内存。