设置

设置

例子如何从 YubiKey 添加 FIDO2 密钥,但我不知道如何使用 YubiKey 从命令行解锁它。说明中谈到了启动时解锁——但这不是我想要的。

设置

创建一个 128 MiB 文件,使其成为块设备loop0并设置 LUKS。

$ dd if=/dev/urandom of=disk.bin bs=1M count=128 
128+0 records in
128+0 records out
134217728 bytes (134 MB, 128 MiB) copied, 0.534038 s, 251 MB/s
$ losetup /dev/loop0 disk.bin 
$ cryptsetup luksFormat -y /dev/loop0

WARNING!
========
This will overwrite data on /dev/loop0 irrevocably.

Are you sure? (Type 'yes' in capital letters): YES
Enter passphrase for temp.bin: 
Verify passphrase: 

添加 Yubikey。

$ systemd-cryptenroll /dev/loop0 --fido2-device=auto  --fido2-with-client-pin=yes

答案1

将 FIDO2 安全令牌配置为需要 PIN 时,它与常规 LUKS 密码短语条目冲突,因为两者都是通过键盘在主机上输入的。该选项--token-only用于指示将输入 PIN(而不是密码),并将其传递给(此处假定为单个)安全令牌。

sudo cryptsetup open --token-only /dev/loop0 loop0_encrypted

--token-only对于手动 FIDO2+PIN 使用来说,例如连接外部磁盘/USB 记忆棒等时,使用非常简单。cryptsetup在没有密码短语插槽时自动切换到 PIN 输入听起来确实是一个合理的可用性改进。(TODO:如果默认行为发生变化,请更新答案。)


测试使用密码设置 v2.6.1(标记为2023-02-09);适用于 Debian 12 (Bookworm)、Ubuntu 23.04 (Lunar Lobster)、Fedora F38 等。

从上游cryptsetup open文档。 (强调我的。)

如果存在有效的 LUKS2 令牌,但需要 PIN 码要解锁指定的键槽,它是不使用除非添加以下选项之一:--token-only--token-type其中type匹配所需的 PIN 保护令牌或--token-id匹配id的 PIN 保护令牌。

Debian 12 手册页。 (强调我的。)

--token-only
如果基于令牌的键槽解锁失败,请不要继续执行操作。如果没有该选项,操作将要求输入密码才能进一步进行。

它允许 LUKS2 代币受以下保护PIN 优先于交互式键槽密码提示

答案2

使用systemd-cryptenroll设置加密表明您需要家庭类似的工具systemd来解锁它。

事实证明它本质上是示例 3systemd 特定版本的crypttab(5)手册页。

sudo /usr/lib/systemd/systemd-cryptsetup attach loop0_encrypted /dev/loop0 - fido2-device=auto

等效的/etc/crypttab条目是:

loop0_encrypted /dev/loop0 - fido2-device=auto

请注意,例如,在 Debian 12 上,crypttab(5)手册页显示:

关于不同的 CRYPTTAB 格式

请注意,有几个独立的 cryptsetup 包装器具有自己的crypttab格式。本联机帮助页涵盖了 Debianinitramfs脚本和SysVinitinit 脚本的实现。systemd带来了自己的 crypttab 实现。我们试图在此手册页中涵盖 systemd 和我们的实现之间的差异,但如果有疑问,最好检查 systemd crypttab(5) 手册页,例如在线:https://www.freedesktop.org/software/systemd/man/crypttab.html

相关内容