我有一台运行 CentOS7 的机器,其主分区通过 crypt-setup / luks 加密;启动时系统提示我输入加密密码。
这是一台要移交给另一方的机器 - 我的问题是
不需要可启动的 USB,我该如何扰乱加密分区?
我曾经希望/假设加密密码多次失败会引起混乱,但似乎直到重新启动后它才会停止接受密码。
答案1
这很容易做到:
sudo cryptsetup luksErase /dev/sdXY
/dev/sdXY
用加密分区替换。
您将收到如下提示:
deltik@node51 [~]$ sudo cryptsetup luksErase /dev/sda1
WARNING!
========
This operation will erase all keyslots on device /dev/sda1.
Device will become unusable after this operation.
Are you sure? (Type uppercase yes):
输入“ YES
”并按Enter。你的电脑将继续运行,但一旦重新启动,你将再也无法访问数据。
您可以通过运行以下命令以另一种方式完成相同的目标,而无需提示:
sudo dd if=/dev/zero of=/dev/sdXY bs=1M count=2
它将覆盖分区的前两兆字节/dev/sdXY
,这应该覆盖整个 LUKS 加密标头。
答案2
要擦除任何内容(磁盘,分区,文件),可以使用以下良好启动命令:
dd if=/dev/random of=<TheFullPath> bs=1M
从控制台中的任何 LiveCD 运行它,但请确保您正在做什么,特别是确保路径是正确的。
但是如果您希望数据无法恢复,则需要更复杂的技术,如果磁盘使用内部重新映射来扩大其寿命,并且您尝试擦除文件而不是整个分区或磁盘,则需要更多复杂的技术。
更糟糕的是,在实验室中,磁盘可以被扫描并可以获得很多最后的状态,对于磁盘,记录大约是最后 500 个状态,对于固态磁盘,记录大约是最后 100 个状态。
因此,为了确保真正“销毁”了“数据”,您必须在磁性介质上至少执行 500 次以上的擦除,或在固态介质上执行 100 次以上的擦除。警告:这样做会严重短路。
因此,如果您从来没有将数据以明文形式(未加密)保存过,您可能会认为不需要进行那么多擦除操作,这样就安全了,但您错了,未加密的数据将无法读取,但可以获取加密数据,还有您已擦除的 LUK 标头,因此破解加密只是时间和精力而已。
因此,您可能会想,如果我仅对 LUK 标头执行 >500 次擦除,我将处于安全线上,但又错了,加密数据仍然可以恢复,并且使用所有可能的 LUK 标头进行测试(大量工作)可以像上一段一样对每个进行测试,同样,这只是时间问题。
为了100%确保数据不会被泄露,你必须这样思考:
- 攻击者拥有无限的计算能力和无限的金钱
因此,实现“100%安全”擦除的唯一方法只有:
- 将整个磁盘转换为 GAS,因此无法恢复任何数据
没有其他方法可以保证 100% 的安全,无论其他人怎么说,如果磁盘没有被破坏,数据将来就是可以恢复的。
想想看,几年前最后状态的记录只有不到 10 个,而现在已经增加了很多,固态为 100 个,磁性为 500 个;假设一百万年后会达到什么水平!
如果您只需要重新使用磁盘(您不出售磁盘),那么您不必太担心,只需对 LUK 标头进行一次擦除即可。
额外:在大多数现代磁盘上(大约十年以来),它们都有一个“保留”区域,当磁盘的一个扇区无法正常工作时(通常这种情况显示在 SMART 数据中);当发生这种情况时,可能会发生这样的扇区仍然可读但不可写,因此擦除该扇区是不可能的。
当我想使用磁盘来存储“安全”数据时,我采取的最佳规则是:
- 购买新品(一手或二手)
- 短了很多,它的生活通过做一千次擦拭
- 加密它(仍然没有任何数据)并用垃圾填充它,因此垃圾被加密
- 贴上“已安全”标签
- 删除垃圾并利用它
- 当我不想使用它时(一段时间后,我认为两千次擦拭后它可能会失效),我会通过以下步骤摆脱它
- 将所有文件克隆到我按照以下步骤创建的另一个“安全”文件夹中
- 它的生命很短暂,通过无限次擦拭直到失败而结束
- 返回步骤 1,以便新的将用作下一步 7 的命运
这有点偏执,但你要求擦拭一些东西。
现在说说另一部分,只擦除 LUKS 标头,正如您所想象的,也正如我所说的,如果您让其他人(拥有无限的时间、金钱和资源)接触这些数据,这不足以阻止他们获得这些数据。如果您不再拥有该磁盘,最好全部擦除。
关于最后一部分,在预启动时执行此操作,我不知道有任何工具可以在该阶段运行并执行此类擦除,并且我认为没有人可以这样做,因为:
- 预启动代码在 16 位模式下运行,也可以跳转到 32 位模式,但不能跳转到 64/128 位模式(实际上 128 位处理器很少,大多数只是原型),因此运行速度要慢很多倍,而且由于你需要进行随机数学运算或模式运算,因此 CPU 使用率很高
另一件事是从小型 Linux 发行版或旧的 MS-DOS 启动,对于它们来说,有可以擦除的工具,Linux dd 很慢但足够了。
以防万一,你的问题的标题不太好,我想你可能真的想问:
- 我怎样才能在无法再次安装此类 LUK 的 LUK 上运行 Linux?
对此,有两种解决方案:
- 您希望能够再次安装该 LUK,但只有您自己可以,其他任何人都不能:不要将 LUK 标头存储在这样的磁盘上,而应将它们存储在您随身携带的外部介质上
- 你不希望任何人(包括你自己)能够再次挂载该 LUK:删除 LUK(如果 Linux 允许在正在运行的系统中这样做,我表示怀疑)或使用 dd 擦除 Linux 标头
希望我能帮助您和其他人解决这些“安全”问题。
注意:我不明白为什么真正的专家不向人们传授安全知识(我所知道的都是通过最艰难的方式学到的!),以及为什么小学不教授安全知识?
PD:在一些非常专业的商店里,有带有硬件加密的磁盘,里面有炸药,如果连续 N 次出现故障,或者磁盘被打开、在低级别读取等情况下,磁盘就会被炸毁,这并不便宜,非常昂贵,而且您需要获得授权才能携带它们,在航班上它们必须放在特殊的容器中,等等。我以前用过其中一个,但吃过苦头才知道这种炸药意味着什么……电脑被彻底毁了,放它的桌子上也被炸了一个大洞,所以要小心你买的东西和你怎么用它(不要让家人碰它,等等),个人使用太危险了。