LUKS标题 – 30kB神秘失踪

我有一个包含(仅)LUKSencryption卷的磁盘。 这是在没有使用cryptsetup v.1.6.1的分区表的裸盘上创build的。 当解锁时,我可以检查解密卷的大小,将其与整个磁盘进行比较,并看到差异正好是2MB。 另一方面,当我备份标题时,使用:

cryptsetup luksHeaderBackup /dev/sda --header-backup-file <filename>

我得到一个比2MB小30kB的文件。 使用dd转储磁盘的前2MB,并将其与备份的头部进行比较,我发现最后30KB缺失,并包含全0。 奇怪的是,我使用cryptsetup 1.4.1和1.4.3备份了各种(其他)LUKS头文件,它们都是2MB。 这与cryptsetup FAQ的第6.2部分是一致的,它说头大小应该是2MB。

有人能帮我理解这30KB是什么吗? (我想用随机数据覆盖标题,因为我已经把它放在一个单独的设备上,并且要确保我知道我在做什么。)

另外作为一个更普遍的问题,是否有一个更容易/自动化的方式,使用luksDump的输出也许,以确切地告诉头在磁盘上的位置? (偏移和大小。)我已经阅读cryptsetup常见问题,但结果肯定不会退出。

而且,有没有更好的方法来覆盖标题,比使用dd?

cryptsetup luksHeaderRestore <file_with_random_data>

不起作用,因为cryptsetup做一些白痴检查,看看是否有任何已经存在的头在主密钥大小和偏移量匹配。

原来30k是未使用的空间,但标题数据已经alignment到1MB。 整个2MB包含在使用早期版本的cryptsetup进行备份的时候,但后来的版本将其保留。

通过使用cryptsetup luksDump (512B扇区数)的payloadOffset输出,可以看到encryption卷开始的偏移量; 所以你可以手动擦拭到那里。 或者,自cryptsetup 1.6.4以来,您可以使用cryptsetup luksErase覆盖所有活动的keyslots。 剩余的可见标题与元数据是磁盘的第一个4KB,所以这将不得不手动擦除。

[感谢米兰,cryptsetup开发者之一,在cryptlab!]