有两种方法可以解决这个问题,具体取决于您想让数据变得难以访问。
如果您只是想要求了解 LUKS 密码以重新获得对数据的访问权(或多或少是正常情况,但加快了),那么您可以cryptsetup luksSuspend在 dm-crypt 设备名称上使用。根据手册页,这是:
挂起一个活动设备(所有 IO 操作将被阻止并且对设备的访问将无限期地等待)并从内核内存中擦除加密密钥。
要从 luksSuspend 中恢复,请执行 luksResume。
注意:以下假设为 LUKS 1 格式。较新的 LUKS 2 格式不同。
如果您想确保 Trudy无法访问数据,那么您需要更激进的方法。在简单的情况下,我们假设 Trudy 没有 LUKS 标头备份,在这种情况下覆盖 LUKS 标头就足够了。您可以完全覆盖标头而不覆盖其他任何内容(标头的大小是“有效负载偏移量”(由 cryptsetup luksDump 报告)乘以 512 字节,并且它从设备的开头开始),或者您可以放心使用并覆盖更多。覆盖旋转硬盘的前 100 MB 大约需要 1-3 秒,主要取决于驱动器的旋转速度(7200 rpm 驱动器往往能够达到 100-120 MB/s,较慢的驱动器显然更慢):
警告:除非您知道自己想这样做,否则不要这样做
dd if=/dev/urandom of=/dev/sdb1 bs=1M count=100 conv=sync
警告:上面的危险命令
覆盖头部后,确保从内核内存中擦除密钥,以确保无法解密剩余数据。这就像cryptsetup luksSuspend dm-nameor一样简单cryptsetup remove dm-name。完成此操作后,容器仅包含无法解密的随机数据(没有破坏所使用的加密算法)。任何好的加密算法的输出,在没有解密密钥的情况下,在统计上都无法与随机噪声区分开来。
在后一种情况下,如果您真的想让 Trudy 的生活变得困难,那么您可以向底层存储设备发出 ATA 安全擦除。假设安全擦除在驱动器上正确实施,一旦完成(在非自加密旋转 HDD 上可能需要几个小时,但通常一旦启动就不能中断),之前存储的数据将无法访问。然而,对于大多数威胁模型来说,这可能是矫枉过正。覆盖 LUKS 标头并清除 RAM 中的密钥几乎肯定足以防止任何合理的对手访问数据。然而,由于磨损均衡,可能需要安全擦除以确保 SSD 上没有密钥材料残留.