加密前覆盖磁盘

加密前覆盖磁盘

我将在我的磁盘上创建加密的 lvm。作为加密机制,我选择 dmcrypt 和 LUKS。

这是我的问题 - 我应该在创建加密容器之前覆盖(出于安全原因)整个磁盘,还是覆盖已经加密的容器(有一些信息位于cryptsetup 常见问题解答 - 步骤 6) 或两者?有关系吗?

答案1

如果你不要覆盖磁盘上以前的内容,任何旧信息都将以普通(仅软件)可读的形式保留,直到它被覆盖,这可能是很长一段时间(接近永远)。

如果你覆盖磁盘上以前的内容零点在磁盘上创建 LUKS 数据结构之前,您已经在很大程度上消除了从磁盘读取旧数据的可能性(使用软件这将是一项绝对不简单的任务,但是可能可以通过专门的硬件、大量的时间和大量的金钱来实现),但由于任何长度的数据加密为全零的可能性可以忽略不计,因此很容易确定磁盘的哪些部分保存了实际的加密数据。因此,坚定的对手可以将注意力集中在磁盘上实际保存数据的部分。

如果你覆盖磁盘上以前的内容随机的数据在磁盘上创建 LUKS 数据结构时,很难确定磁盘的哪些区域保存实际数据,哪些区域只是噪声,因为它们看起来基本相同。 (没有密钥,正确加密的数据与噪声无法区分。)攻击者可能能够根据其固有的数据结构判断出那里有 LUKS 数据容器,但无法判断磁盘的哪些部分是值得进行密码攻击。

如果你如果用零或随机数据填充加密容器,则该容器之外的任何内容仍将保留以前的数据,并且容易受到与未对磁盘内容进行任何覆盖一样的相同风险。使用覆盖整个磁盘的加密容器,这将是一个微不足道但仍然不为零的数据量。

其中哪一项适合您是风险分析的问题。任何覆盖都需要一段时间,但相比之下,用零覆盖和用伪随机数据覆盖之间的时间差异相当小。

覆盖磁盘还有一个额外的好处:它会使用磁盘的整个物理区域,允许驱动器在写入任何重要内容之前识别并重新定位损坏的区域。由于加密(如压缩)数据的任何一位错误都会迅速增加,因此其潜在的好处是非同小可的,并且成本相对适中。

当然,我用随机数据覆盖整个磁盘将其初始化为 LUKS 设备,因为我觉得这种方法的好处超过了成本(成本主要是首次使用新驱动器的时间)。

如果您覆盖整个磁盘(使用类似dd if=/dev/urandom of=/dev/sdb bs=1M-警告,不要运行该命令除非您确切知道为什么要这样做!),那么您不需要单独覆盖加密的 LUKS 分区,因为它看起来已经足够随机了。

当然,还有强制性的 XKCD 参考:给他下药,用这个 5 美元的扳手打他,直到他告诉我们密码。但我相信您知道,即使是全盘加密也不是万能的。

相关内容