LUKS使用密钥文件自动解密失败,请帮我调试

LUKS使用密钥文件自动解密失败,请帮我调试

我有一个 Raspberry Pi,通过 USB 连接了 Orico 机箱内的 HDD 驱动器,并具有单独的电源。我使用以下命令加密了该驱动器:

cryptsetup luksFormat /dev/sda

然后,我使用命令创建了密钥文件:

dd if=/dev/random bs=32 count=1 of=/home/ubuntu/luks/luks.key

使用命令添加此文件作为第二个密钥:

cryptsetup luksAddKey /dev/sda /home/ubuntu/luks/luks.key

并将这一行添加到/etc/crypttab

vault /dev/sda none

我认为我已尽一切努力使该驱动器在系统启动期间自动解密,但这并没有发生。每次重新启动后我都必须手动执行此操作。另一件让我困扰的是 的输出cryptsetup luksDump /dev/sda。我希望有两个插槽处于“启用”状态,但我在输出中没有看到它:

ubuntu@ubuntu:~$ sudo cryptsetup luksDump /dev/sda
sudo: unable to resolve host ubuntu: Temporary failure in name resolution
LUKS header information
Version:        2
Epoch:          4
Metadata area:  16384 [bytes]
Keyslots area:  16744448 [bytes]
UUID:           ab24c6e5-9286-4e6d-a874-29755338afa1
Label:          (no label)
Subsystem:      (no subsystem)
Flags:          (no flags)

Data segments:
  0: crypt
    offset: 16777216 [bytes]
    length: (whole device)
    cipher: aes-xts-plain64
    sector: 512 [bytes]

Keyslots:
  0: luks2
    Key:        512 bits
    Priority:   normal
    Cipher:     aes-xts-plain64
    Cipher key: 512 bits
    PBKDF:      argon2i
    Time cost:  4
    Memory:     270573
    Threads:    4
    Salt:       b8 50 50 6c b2 54 45 ea 36 45 66 1d 61 d1 e9 94 
                87 7c 67 d3 a8 f3 3b 54 04 b6 46 7b 25 0d d2 89 
    AF stripes: 4000
    AF hash:    sha256
    Area offset:32768 [bytes]
    Area length:258048 [bytes]
    Digest ID:  0
  1: luks2
    Key:        512 bits
    Priority:   normal
    Cipher:     aes-xts-plain64
    Cipher key: 512 bits
    PBKDF:      argon2i
    Time cost:  4
    Memory:     268825
    Threads:    4
    Salt:       55 e6 be a8 55 45 61 3c 1b 6e 6d 7a b3 70 40 32 
                fc 4f 95 71 f0 13 52 c7 a1 69 cb 73 66 0b a9 6f 
    AF stripes: 4000
    AF hash:    sha256
    Area offset:290816 [bytes]
    Area length:258048 [bytes]
    Digest ID:  0
Tokens:
Digests:
  0: pbkdf2
    Hash:       sha256
    Iterations: 39527
    Salt:       62 9b 83 b6 04 f3 b0 aa 36 21 bc bf 28 aa 1d 3c 
                ad 89 8a 5c 0d 7a d2 f4 0f 6e d4 09 b2 33 0b d4 
    Digest:     45 42 fc 30 22 95 12 26 3f 78 8c 56 d7 b0 c3 d9 
                10 4e 32 99 93 3c 10 48 a3 df ab 89 77 89 14 1f 

您认为此问题可能与 HDD 作为 USB 驱动器连接有关吗?如前所述,手动打开此 LUKS 卷效果很好。请帮我调试这个问题。

答案1

您需要在 中指定密钥文件/etc/crypttab,如果您放在none那里,它将被解释为“询问密码”。

man crypttab

第三个字段指定加密密码。如果该字段不存在或密码设置为“none”或“-”,则必须在系统引导期间手动输入密码。否则,该字段将被解释为包含加密密码的文件的绝对路径。

请注意,这luksAddKey并不意味着您要向 LUKS 设备添加新的无密码密钥槽,您要添加一个用新密码保护的新密钥槽,或者在您的情况下是从文件中读取的密码短语/home/ubuntu/luks/luks.key- 这不是 LUKS 使用的密钥/dm-crypt,它只是一个“二进制密码”,解锁/打开 LUKS 设备时仍然需要提供它。

将您的 crypttab 条目更改为

vault /dev/sda /home/ubuntu/luks/luks.key

应该可以解决问题。

输出luksDump正常,它随着 LUKS 版本 2 的变化而变化,不再打印该Key Slot X: ENABLED/DISABLED行(对于 LUKS 2,它仍然为 LUKS 1 打印它)。

相关内容