YubiKey 5 初步体验
功能
- OTP(One-time passwords):虽然名为 OTP,但不完全是 OTP,此模式下 YubiKey 作为人体学接口设备(Human interface devices),相当于键盘,触摸 YubiKey 后会键入密码。有两个插槽,通过长按和短按区分,可配置为 Yubico OTP、OATH-HTOP、挑战应答(Challenge-response)、静态密码(Static passwords)的其中之一。
- OATH(Open Authentication):YubiKey 支持 OATH 组织的 HTOP(HMAC-based one-time password algorithm)和 TOTP(time-based one-time password algorithm)认证标准。
- FIDO(FIDO alliance):YubiKey 支持 FIDO 联盟的认证标准,FIDO 或 U2F 代表一代,用作第二因素(2nd factor)认证,FIDO2 或 WebAuthn 代表二代,既可以用作第二因素认证也可以用作无密(passwordless)认证。
- PIV(Personal Identity Verification):YubiKey 作为 PIV 智能卡(smartcards),PIV 是美国联邦政府标准,用于联邦政府职员的身份识别和认证。macOS、Linux、Windows 都支持,可以用于本地设备登录。
- PGP:YubiKey 作为 OpenPGP 智能卡(smartcards),能够安全地存储私钥,进行加密、解密、签名、认证等工作。
配置工具
- YubiKey manager:YubiKey 配置工具。(命令行:
ykman
,图形界面:yubikey-manager-qt
) - YubiKey personalization:比 YubiKey manager 更强大但也更复杂。(命令行:
ykpersonalize
,图形界面:yubikey-personalization-gui
)
FIDO 联盟标准
在使用上这是最简单的,用于网站两步验证只需要向网站提供公钥,在登录时触摸 YubiKey。尽管 FIDO2/WebAuthn 允许无密(passwordless)认证,但是一般网站支持的都是第二因素认证1。系统的用户认证可以使用 PAM(pluggable authentication module)和 pam-u2f 实现。
以 Arch Linux 为例:
- 安装
pam-u2f
sudo pacman -S pam-u2f
- 添加 key
mkdir -p ~/.config/Yubico pamu2fcfg -u `whoami` -i pam://`hostname` -o pam://`hostname` >> ~/.config/Yubico/u2f_keys
- PAM 配置文件在
/etc/pam.d
,如果要用 YubiKey 作为 sudo 认证,编辑/etc/pam.d/sudo
如果是 tty 登录编辑/etc/pam.d/login
,其他同理,将下面一行添加到文件中,cue
表示有消息提示:auth sufficient pam_u2f.so cue
OATH 组织标准
YubiKey 支持两种算法 HOTP 和 TOTP,用于网站的两步验证,一般使用 TOTP。此模式下 YubiKey 相当于 Authenticator,最多可存储 30 个凭证。既可以通过 ykman oath
设置也可以通过 Yubico Authenticator 图形界面设置。
将令牌添加到 YubiKey,(-i
添加 issuer):
ykman oath accounts add --touch -i Google <username> <token>
生成(-s
只匹配一条记录并且只输出动态码):
ykman oath accounts code -s Google:username
OTP
- Yubico OTP:Yubico 的 OTP 算法,需要连接到 Yubico 的验证服务器进行验证,更适合登录远程设备,本地可以使用挑战应答模式。
- OATH-HTOP:存储一个 OATH-HOTP 凭证,与 OATH 下的 30 个凭证相比比较浪费,但是可以通过触摸 YubiKey 键入密码。
- 挑战应答(Challenge-response):存储一个 Challenge-response 凭证。一般用作本地认证,KeePass、Password Safe 等密码管理器支持,结合
yubico-pam
可以用作本地设备登录。Challenge-response 有两种一种是 Yubico OTP、一种是 HMAC-SHA1。yubico-pam
和 KeePass 都使用 HMAC-SHA1。Yubico OTP……不知道有谁支持。 - 静态密码(Static passwords):存储一个静态密码,可以配置为主设备的登录密码。
PIV-compatible 智能卡
Yubico 的文档中列出了各种用法,我并没有全部尝试过。由于 macOS 的登录机制不同2,我用它来登录 macOS。参照官方文档配置即可。
OpenPGP 智能卡
已经有了很棒的教程介绍如何将 YubiKey 作为 OpenPGP 智能卡。
略有不同的是,我在 Live 环境的 Tails 上生成私钥。不联网——其实是连不上;没有软件安装——该有的都有了;不需要增熵——已经很高了。
成功完成配置教程后,就可以使用 PGP 密钥进行加密、解密、签名、验证等操作了。PGP 的用途广泛,不仅可以用于安全电子邮件,还可以用于密码管理器。
参考
脚注
-
In addition, WebAuthn can make it possible to support login using your device as a “single-factor” security key with biometric authentication instead of a password. Although we’re not ready to announce further plans, we’ll continue to pursue ways to make secure authentication as easy as possible for everyone on GitHub. – GitHub supports Web Authentication (WebAuthn) for security keys ↩
-
Apple has changed entitlements in authorization and added extra protections to the login process, which prevents it from communicating with USB devices (including the YubiKey). – macOS Login Tool Configuration Guide ↩