在加密磁盘上寻找纯文本字符串是一个很好的测试吗?

信息安全 加密 磁盘加密 比特锁
2021-09-01 13:47:47

我有一台双启动 PC,其中 Win10(未压缩)分区使用 BitLocker 加密。我对做这个测试很好奇(而且我认为加密花了很短的时间),所以在运行 Linux 时我这样做了:

# cat /dev/nvme0n1p3 | strings -25       
Remove disks or other media.
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
... some (very few) lines of garbled characters
# 

根据分区大小和磁盘类型以及乱码文本所花费的时间是有意义的,我猜加密数据可能碰巧形成一个短文本字符串的可能性很小

在那个分区中当然有很多纯文本文件,所以可以肯定地说,通过这个测试可以 100% 确定所有信息都被加密了吗?

4个回答

不,这不是一个好的测试,一点也不。

如果您对 zip 文件、docx 或 PNG 执行相同操作,您将看不到文本字符串,但文件未加密。看不到明文并不意味着文件已加密。

相信乱码意味着加密会导致错误假设。如果您使用单字节密钥查看可怕的 XOR 密码,您可能会认为结果是加密的。

大量明文意味着驱动器未加密。缺少明文并不意味着什么。

测试可能好也可能不好,这取决于您需要什么。

如果您需要区分已知良好的加密(bitlocker 在很多情况下几乎可以接受)和纯文本数据,这很好。

这种情况比你想象的要频繁得多。

使用 hexdump -C /dev/nvmexxx | 之类的东西可能会更好。较少的

许多文件系统结构非常容易识别并且熵很低,甚至在访问实际文件数据之前就可以看到。例如,一个 FAT32 表的序列看起来像 xxxAxxxBxxxCxxxDxxxE ...

另一方面,如果您需要区分加密的好坏,它几乎没有用。...除非您是受过训练的密码学家并且您正在寻找特定的模式。在这种情况下,无论如何你都知道这个问题的答案。

在一个字节中的 256 个值中,有 92 个(126-32、13、10)是可见的 ascii 字符。因此,随机值被认为符合条件的概率约为 1/3 strings

因此,连续 25 个字节是可见字符的概率约为 (92/256)^25 =~ 0,000000000007739,约为 10^-11。这相当于一个 TB,因此如果转储一个充满随机分布数据的硬盘驱动器,您应该会看到一些字符串。

Win10 使用 BitLocker 加密。

这意味着磁盘在设计上是完全加密的。除非正在进行加密过程,其中某些文件(尚未)加密,否则您可以放心驱动器是安全的。您可以在 GUID 表中检查 BitLocker 分区 ID

我想加密数据有可能形成一个短文本字符串的可能性很小

这看起来有点像无限猴子定理。理想情况下,加密会生成密文,其中每个比特都有 50% 的概率出现。这意味着一个好的密码就像将所有可能的n字符串(在纸条上键入)放入选票并随机选择一个。直觉上...

因此,密文看起来像纯字符串的可能性无限低,但 > 0 。例如,您甚至可以hello在文本中的某处阅读,只是因为随机字节形成了 ASCII 的 ASCII hello,这并不意味着有人在向您打招呼或存在未加密的文件。

虽然赢得世界上最难的彩票的几率更高(6 位数超过 90),但挖掘大量加密货币,你有> 0机会发现对你来说有意义的文本。

我猜这个实验本身几乎没有科学有效性。