本人最近购入了一个 YubiKey 5 NFC, 发现除了常用的 U2F/FIDO2 登录以外,YubiKey 还有更多有趣的玩法。

通过 U2F/FIDO2 协议登录在线服务

这可能是 YubiKey 最常用、最广为人知的用法了。目前,一些规模较大的在线服务与身份平台提供了基于 U2F 或 FIDO2 协议的双重验证与免密登录功能。需要登录时,只要将 YubiKey 接入设备,触碰一下上面的按键,并输入访问 PIN,即可实现身份验证。无需记忆与输入复杂的密码,也无需启动验证器应用或接收短信验证码,有效地防范了偷窥、键盘记录等攻击。

目前本人已启用 U2F/FIDO2 验证的服务包括:

使用 OTP 实现双重验证

不得不说,目前支持 U2F/FIDO2 登录的服务相对有限,但是绝大多数支持双重验证的服务都支持使用一次性验证码 (OTP) 进行登录。多数情况下,一次性验证码是通过手机等设备上的验证器应用生成的,或是通过邮件、短信等渠道发送的。前者的密钥存储在手机软件中,密钥失密的风险较高;后者则易遭受中间人攻击。而 YubiKey 也可以充当一个验证器,其密钥存储在硬件中,只能通过特定的方式读取,因而能有效降低密钥失窃风险。

YubiKey 支持基于计数器的 HOTP 和基于时间的 TOTP. 需要注意的是,由于 YubiKey 内部没有实时时钟,因此需要通过手机或计算机应用向 YubiKey 同步时间,才能生成与使用 TOTP.

输入静态密码

即使是对于只支持传统密码登录的应用,使用 YubiKey 仍然可以提供一定的安全优势。YubiKey 中可以存储一到两个静态密码,当用户将 YubiKey 连接到计算机并触碰按钮时,YubiKey 可以模拟出一个键盘并输入指定的静态密码,从而有效地防范偷窥攻击。用户还可以在 YubiKey 上存储的密码的基础上,为每个帐户添加不同的前缀或后缀,进而保证各个帐户不使用重复密码。

需要指出的是,由于静态密码通过模拟键盘实现,因而它并不能防范基于软件的键盘记录攻击。如果攻击者通过任何方式获知了密码,也完全可以绕开 YubiKey 进行登录。

OpenPGP 集成

YubiKey 还支持与 OpenPGP 集成,进而延伸到各类使用 OpenPGP 加密的应用,如邮件加密等。本人主要使用该功能为 Git 提交签名,其配置方法可参见文档

模拟智能卡

在本人看来,这可能是 YubiKey 最有趣的功能了。YubiKey 可以模拟一个支持 PIV 协议的智能卡,在智能卡上可以存储若干证书,用于身份验证、数字签名、加密解密、见证等用途。由于 PIV 智能卡应用广泛,因此具备许多用法。以下介绍两种我个人认为较为实用的具体用法。

解锁 BitLocker 外置驱动器

BitLocker 支持使用智能卡解锁外置可移动驱动器。当需要在非本人的计算机上解密驱动器时,只需插入智能卡并输入 PIN 即可,而无需输入密码。这种解密方式既形成了双重验证,又规避了偷窥攻击,也能降低键盘记录攻击带来的损害。

BitLocker 智能卡解锁对智能卡上存储的证书有一定要求。具体地,证书必须具备一定的用途属性。关于对证书的详细要求与具体的配置方法,可以参见文档。

需要注意的是,BitLocker 默认不支持添加非受信的证书作为解锁方式。要使用自签名的证书,必须将其添加到受信证书存储中,或按照文档的指示修改注册表以允许使用非受信证书。不过经过本人测试,这一限制只在添加解锁方式时实施。后续解锁时,将不再验证证书链,因此即使使用自签名证书,也可以顺利地在其它设备上解锁驱动器。

实现 macOS 的双重验证登录

在 Windows 10 中,只需简单的配置,即可通过 Windows Hello 实现双重验证的系统登录。此外,BitLocker 还支持通过 PIN + 密钥文件 的形式实现双重验证的主驱动器解锁。macOS 不支持双重验证解锁 FileVault 驱动器,但通过智能卡可以实现双重验证的系统登录。启用基于智能卡的双重验证登录后,用户密码和 Touch ID 将被禁用,用户必须插入智能卡并输入智能卡 PIN 才能登录系统,由此实现双重验证。

该用法对证书没有特别限制,因此可以复用解密 BitLocker 驱动器所使用的证书。如果没有其它证书,也可以使用 YubiKey Manager 生成一个。将存有证书的 YubiKey 连接到设备,系统将显示配对通知,提示用户将证书绑定到用户。配对后,用户便可以使用智能卡及其 PIN 登录。

接下来,可以通过添加配置文件的方式,强制用户使用智能卡登录,进而实现强制双重验证。为此,Apple 提供了官方的示例配置文件。只需将文档底部的示例配置保存为 .mobileconfig 文件并安装,即可完成配置。

总结

以上介绍了本人个人感兴趣的几种 YubiKey 玩法。当然,YubiKey 的功能不仅局限于此。关于 YubiKey 的更多功能,可以参考 Yubico 的文档