我正在尝试设置一个分区,并尝试将 luks 标头放在 USB 设备上,因此我使用了参数--header /path/to/usb-device
,但是我仍然能够在不安装 USB 设备的情况下解密该设备。如何阻止 cryptsetup 在加密设备上创建 luks 标头?
答案1
您一定在某个地方使用了错误的命令...cryptsetup
不会在各处随意创建 LUKS 标头...它只执行您告诉它的操作,并且通常会在执行此操作之前要求确认。
例子:
# truncate -s 8M luksheader luksdevice
# cryptsetup luksFormat --header luksheader luksdevice
WARNING!
========
This will overwrite data on luksheader irrevocably.
Are you sure? (Type uppercase yes): YES
Enter passphrase:
Verify passphrase:
# file -s luks*
luksdevice: data
luksheader: LUKS encrypted file, ver 1 [aes, xts-plain64, sha256] UUID: …
如您所见,之后 luks 设备上没有 LUKS 标头。如果有的话,那么它以前就已经在那里了。
您还可以直接使用luksFormat
外部设备/文件,而无需指定“加密设备”(这仅在 上真正重要luksOpen
)。
简化示例:
# cryptsetup luksFormat luksheader
这几乎相当于上面更复杂的命令,唯一的区别在于Payload offset
您可以在 中看到luksDump
。如果标头首先被创建为外部标头,则该偏移量应该是0
,否则大约是4096
(2 MiB) 。
如果您愿意,任何 LUKS 标头都可以用作外部标头,并且保持Payload offset
完整有其优点。如果您决定更改设置,只需将外部标头放回到原始设备上(反之亦然,切换到现有设备的外部标头)。