FIDO2(YubiKey)在 Fedora 36 上启动时解锁 LUKS 不起作用

cloud_hack

我正在尝试在 Fedora 36 上使用 FIDO2 (YubiKey 5) 在系统启动时解锁 LUKS 卷,但没有成功,因为它一直要求输入常规的 LUKS 密码,而不是使用令牌来解锁 LUKS 卷。

在他的博客上按照Lennart Poettering 的示例systemd-cryptenroll注册了 YubiKey,然后/etc/crypttab使用适当的配置修改了文件。cryptsetup luksDump显示令牌已添加到 LUKS 标头。但是,在系统启动时,会显示 Plymouth 闪屏,提示输入常规 LUKS 密码来解锁卷。

我认为 Plymouth 可能没有显示输入 FIDO2 PIN 的提示,所以我删除并重新添加了带有额外参数的 LUKS 键槽和令牌,以不需要用户存在或 PIN:

systemd-cryptenroll --fido2-device=auto --fido2-with-user-verification=false --fido2-with-client-pin=false /dev/sda3

这仍然不起作用,它仍然提示输入 LUKS 密码。

Fedora 36 正在运行 systemd 版本 250。

任何想法为什么 FIDO2 无法解锁 LUKS 卷?

cloud_hack

TL;DR 运行dracut --regenerate-all --force

所以我发现了问题,我在重启前dracut --regenerate-all --force修改后没有执行。/etc/crypttab我相信您需要运行基于 Debian 的发行版update-initramfs -u当需要 FIDO2 PIN 时,请在 Plymouth 界面输入。它看起来与输入 LUKS 密码时相同,但如果您按 Esc,您将看到提示要求输入 FIDO2 令牌 PIN。

作为参考,这里是配置 FIDO2 令牌(例如 YubiKey)以解锁 RH/Fedora 发行版上的 LUKS 卷的完整过程(注意:这仅支持 systemd 版本 248。systemctl --version检查。)

  1. 查看现有的 LUKS 键槽信息。如果最初配置为仅使用密码,您将只看到一个密钥槽(槽 0)和零个令牌。

cryptsetup luksDump /dev/sda3(将 sda3 替换为您的块设备)

  1. 注册令牌。在此示例中,指定 FIDO2 PIN 和用户存在(例如“触摸”)的要求。

systemd-cryptenroll --fido2-device=auto --fido2-with-client-pin=true --fido2-with-user-presence=true /dev/sda3

  1. 再次检查 LUKS 令牌和键槽。这次您应该会看到一个附加的密钥槽(槽 1)和一个新的令牌(令牌 0),如果在注册期间指定,它们还将列出上述参数。

cryptsetup luksDump /dev/sda3

  1. 修改 /etc/crypttab。默认情况下,Fedora 36 将使用 UUID。

vim /etc/crypttab

修改使其看起来像这样。

luks-a6c32afd-3c35-4628-8653-5be499eaf0ce UUID=a6c32afd-3c35-4628-8653-5be499eaf0ce - fido2-device=auto

  1. 生成新的 initramfs 映像

dracut --regenerate-all --force

  1. 重新启动并测试。如前所述,普利茅斯启动画面看起来相同,但不是输入 LUKS 密码,而是输入 FIDO2 PIN。或者,如果需要,按“Esc”确认它实际上是在提示输入 FIDO2 PIN。如果指定了存在要求,您将需要触摸令牌。系统应该启动。

附加功能:

从 LUKS 卷中删除令牌。

cryptsetup token remove --token-id 0 /dev/sda3

并取出相应的键槽。

systemd-cryptenroll --wipe-slot=1 /dev/sda3

如果注册多个 FIDO2 令牌并指定 PIN 和存在要求,我注意到的一个特点是您需要触摸令牌 X 次,其中 X 是已注册的第 n 个令牌。例如,如果您注册了四个令牌,当使用第 4 个注册令牌时,您需要在系统启动前触摸它四次。我认为这与SYSTEMD-CRYPTENROLL(1) 中的提及有关:

另请注意,对注册多个 FIDO2 令牌的支持目前不太有用,因为解锁 systemd-cryptsetup 无法识别当前插入的令牌,因此不知道向设备发送哪个身份验证请求。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章