本文向我展示了如何查看 Ubuntu 是否有加密交换分区。我想知道的是如何确定交换分区(或任何其他分区)是否真正加密。我希望看到的是,某些磁盘实用程序尝试读取加密内容,显示乱码,但在输入正确的密码后,它会按预期显示文件。
由于 crypttab 使用随机密钥,因此这对于交换来说会很困难,但我/应该/能够看到表明它已被加密的乱码。
编辑:我正在添加 testdisk 的输出。我不知道在这里要寻找什么。
Disk /dev/sda - 500 GB / 465 GiB - ST3500413AS
Disk /dev/mapper/cryptswap1 - 4008 MB / 3823 MiB
Disk /dev/mapper/vg_doulos-home - 453 GB / 422 GiB - ST3500413AS
Disk /dev/mapper/vg_doulos-root - 39 GB / 37 GiB - ST3500413AS
Disk /dev/mapper/vg_doulos-tmp - 1996 MB / 1904 MiB - ST3500413AS
Disk /dev/sr0 - 735 MB / 701 MiB (RO) - hp DVD D DH16D6SH
Disk /dev/dm-0 - 39 GB / 37 GiB - ST3500413AS
Disk /dev/dm-1 - 1996 MB / 1904 MiB - ST3500413AS
Disk /dev/dm-2 - 453 GB / 422 GiB - ST3500413AS
Disk /dev/dm-3 - 4008 MB / 3823 MiB
此时,我应该选择检查什么?例如,我选择了/dev/mapper/vg_doulos_home
。然后我得到一个如下所示的屏幕:
Please select the partition table type, press Enter when done.
[Intel ] Intel/PC partition
[EFI GPT] EFI GPT partition map (Mac i386, some x86_64...)
[Humax ] Humax partition table
[Mac ] Apple partition map
>[None ] Non partitioned media
[Sun ] Sun Solaris partition
[XBox ] XBox partition
[Return ] Return to disk selection
我自动选择,Non partitioned media
因为这是这里的默认设置。我在这里列出文件:
P ext4 0 885940223 885940224
Directory /
>drwxr-xr-x 0 0 4096 30-May-2012 11:33 .
drwxr-xr-x 0 0 4096 30-May-2012 11:33 ..
drwx------ 0 0 16384 30-May-2012 11:03 lost+found
dr-x------ 1000 1000 4096 30-May-2012 11:33 averyc
drwxr-xr-x 0 0 4096 30-May-2012 11:33 .ecryptfs
我仍然能够深入到主averyc
目录,找到此目录布局,但无法复制任何文件:
P ext4 0 885940223 885940224 目录 /averyc
>dr-x------ 1000 1000 4096 30-May-2012 11:33 .
drwxr-xr-x 0 0 4096 30-May-2012 11:33 ..
lrwxrwxrwx 1000 1000 32 30-May-2012 11:33 .ecryptfs
lrwxrwxrwx 1000 1000 31 30-May-2012 11:33 .Private
lrwxrwxrwx 1000 1000 52 30-May-2012 11:33 README.txt
lrwxrwxrwx 1000 1000 56 30-May-2012 11:33 Access-Your-Private-Data.desktop
有人能解释一下这是怎么回事吗?我如何验证这个分区是否真的加密了?
答案1
您可以启动实时 CD 并尝试几乎任何数据恢复工具,例如 testdisk。当您运行数据恢复工具时,它将识别各种文件。打开其中任何一个,您都会看到随机数据。
答案2
简短的一般性回答
你不能。加密的目的是使有效数据看起来像乱码,即尽可能与随机数据难以区分。
适合大多数情况的长答案
另一方面,大多数有用的数据(例如文件系统)都是结构化的和非随机的。考虑到这一点,您可以:
尝试将其与已知模式(如众所周知的文件格式或文件系统标头)进行匹配。适合的工具是
file(1)
(通用文件格式)和blkid(8)
(文件系统和分区表)。另外,一些加密协议(例如 LUKS)将标头附加到加密数据,前面提到的工具可以识别这些标头。
对数据进行统计分析,看看是否出现足够随机,但这并不能证明加密,只能提供一点提示。数据实际上可能是一系列随机事件的未加密记录。
这是我之前编写的一个 C 程序,用于实现这个目的:https://gist.github.com/davidfoerster/079b6d8c92fb702b89aa
尝试一堆加密协议和密钥并尝试解密。问题是,大多数常见协议无法告诉您密文是否使用特定协议和密钥加密。
作为一种解决方法,使用点 1 来查看解密的数据是否符合已知模式(它不必如此;请参阅点 2。一些加密协议(例如 TrueCrypt)使用加密标头,因此工具可以快速查看解密是否成功。