是否可以检查LUKS设备是否被外国人损坏?

是否可以检查LUKS设备是否被外国人损坏?

假设我丢失了一个 LUKS 加密 USB 随身碟。我认为文件系统类型(ext4/fat32/...)不起作用。一个外国人发现了它。当然,他无法访问我的数据,因为他没有密码。但他可以更改“原始”数据中间的单个字节,从而损坏数据。

随身碟归还给我后,是否可以验证我的数据是否损坏?

我认为读取整个映射器设备会导致 I/O 错误,但不幸的是它不会。我也检查过dmesg

# create an all zero 100MiB file
dd if=/dev/zero of=moh bs=100M count=1

# format it as LUKS device
/usr/sbin/cryptsetup luksFormat moh

# map it to /dev/mapper/moh
sudo cryptsetup luksOpen moh moh

# initialize mapper file to zero
sudo dd if=/dev/zero of=/dev/mapper/moh

# close LUKS device
sudo cryptsetup luksClose moh

# overwrite 1MiB with zeroes at offset 10MiB. After this the LUKS device is damaged.
sudo dd if=/dev/zero of=moh conv=notrunc bs=1M seek=10 count=1

# open LUKS device and see if it complains
sudo cryptsetup luksOpen moh moh

# read all data to see if it complains
sudo dd if=/dev/mapper/moh of=/dev/null

上述命令证明打开和读取损坏的 LUKS 设备不会产生任何错误。

请注意,我不想执行任何文件系统检查。相反,我想验证 LUKS 设备的加密级别是否未受影响。

因为我正在寻找一个命令来验证 luks 设备,所以我希望你明白这不是一个更适合 SO 的编程问题。

答案1

这是可能的,但对于“普通”LUKS 来说不行,您需要设置经过身份验证的加密。这对于 LUKS v2--integrity来说是可能的,您需要使用luksFormat.这基本上会为加密数据添加校验和以确保完整性,没有它,LUKS/dm-crypt 根本不关心(或知道)磁盘上有什么,如果你用零覆盖它,它会“解密”这些零。请参阅经过身份验证的磁盘加密部分在cryptsetup 手册页更多细节。

相关内容