YubiKey 初体验
内容提要
本文介绍了YubiKey在不同应用程序中的使用方式,包括在Arch Linux上的安装和配置,以及在WebAuthn、SSH、LUKS cryptsetup和OpenPGP中的应用。YubiKey的Yubico OTP功能可以禁用,而WebAuthn/Passkey功能可以在火狐、Google Chrome和Android中使用。SSH OpenSSH客户端需要安装libfido2包才能支持。OpenPGP可以使用ykman管理,PIV涉及PKCS#11。
延伸解读
Yubico OTP 的局限与禁用
Yubico OTP 通过模拟键盘发送一次性密码,但验证依赖 Yubico 服务器,且使用 AES 对称加密意味着服务器持有私钥。作者认为该功能实用性低,且容易误触,在 Android 上还可能干扰输入法。因此通过 ykman 命令禁用了 OTP,仅保留 FIDO+CCID 模式。
SSH 密钥的两种使用模式与权衡
YubiKey 支持 ed25519-sk 和 ecdsa-sk 类型的 SSH 密钥。resident 模式将密钥存储在设备上,但必须验证 PIN 以防止丢失后权限泄露;no-touch-required 模式便于自动化,但需要服务端支持,而 GitHub 和 GitLab 并不支持。作者因不愿增加 PIN 输入而放弃使用。
LUKS 解密与密码遗忘风险
cryptsetup 不直接支持 FIDO2,需通过 systemd-cryptenroll 添加 keyslot 和 token。配置后可用 YubiKey 解密 LUKS 设备,避免输入长密码。但作者提醒应定期验证密码记忆,以防长期不用而遗忘。作者仅将此法用于备份硬盘,系统盘因解密次数少而未采用。
OpenPGP 应用的 PIN 与触摸设置
OpenPGP 应用有独立的 PIN 和管理 PIN,默认各可尝试三次。使用密钥时需 PIN,导入密钥时需管理 PIN。初次使用应通过 ykman 修改默认值。导入密钥后可用 ykman 设置触摸要求,默认无需触摸。注意 YubiKey 仅存储私钥,换系统使用时需导入公钥。
Q&A
YubiKey 在 Arch Linux 上如何安装和配置?
在 Arch Linux 上,YubiKey 插上后即可使用,无需特别的驱动设置,但某些程序可能需要安装 libfido2 包。
Yubico OTP 功能是什么?
Yubico OTP 功能通过发送一串字符进行验证,使用 AES 对称加密,但可以禁用。
如何在 SSH 中使用 YubiKey?
在 SSH 中使用 YubiKey 需要安装 libfido2 包,并可以选择 resident 密钥和多种 key 类型。
WebAuthn 和 Passkey 在 YubiKey 中的使用方式是什么?
WebAuthn 和 Passkey 可以在火狐和 Google Chrome 中使用,支持二步验证和直接登录。
如何在 LUKS 中使用 YubiKey?
在 LUKS 中使用 YubiKey 需要通过 systemd-cryptenroll 添加 keyslot,解密时需输入 PIN。
OpenPGP 如何与 YubiKey 配合使用?
OpenPGP 应用需启用 pcscd 服务,使用 ykman 管理,并且不同应用的 PIN 是分开的。