把玩 YubiKey
偶然机会,入手了一个 Yubico YubiKey 5C NFC。没想道卖家还是一个集团的,只不过不在一个子公司下。玩了 2 小时,有些心得分享下。
市面上安全类解决方案很多,比如 2FA,双因素验证,或者叫两步验证,是最常见的。一般是登录输入账号密码后,还需要二次输入验证信息。
也有叫做 MFA 的,Multi-Factor-Authentication,多因素验证。
常见的 2FA 方式有:
- 短信验证码
- 邮箱验证码
- OTP(One-Time-Password)方案。一般是 APP 内显示 6~8 位随机数,有 TOTP 和 HOTP 两种实现
- FIDO 类方案
- 指纹等生物特征信息
本文的 Yubico,是使用 FIDO 方案。
名词解释
MFA 与 OTP
OTP 是 MFA(Multi-Factor-Authentication)的一个实现模型。
来源:https://blog.csdn.net/qq_35714301/article/details/111407136
OTP TOTP HOTP
OTP 是 One-Time Password的简写,表示一次性密码。 HOTP 是HMAC-based One-Time Password的简写,表示基于HMAC算法加密的一次性密码。 是事件同步,通过某一特定的事件次序及相同的种子值作为输入,通过HASH算法运算出一致的密码。 TOTP 是Time-based One-Time Password的简写,表示基于时间戳算法的一次性密码。 是时间同步,基于客户端的动态口令和动态口令验证服务器的时间比对,一般每60秒产生一个新口令,要求客户端和服务器能够十分精确的保持正确的时钟,客户端和服务端基于时间计算的动态口令才能一致。
FIDO2 与 FIDO U2F
2012 年,Yubico 和 Google 设计了 U2F 协议,第二年 U2F 成为 FIDO 组织的标准,之后加入了 NFC 的支持。之后,FIDO2 作为替代 U2F 的新标准产生,原来的 U2F 以兼容的方式成为了 CTAP1,而采用 CBOR 封装格式的 CTAP(CTAP2) 则是 FIDO2 的主要协议。
Yubico 介绍
2023 年现在可以买到的 Yubico 产品很多。但实际广泛使用的型号 并不多。我看到了 3 款感觉还算有价值的。
YubiKey 5 Series
配置高,存储大,支持多种协议(FIDO2、FIDO U2F、Yubico OTP、OATH-TOTP、OATH-HOTP、Smart card (PIV)、OpenPGP、和挑战响应功能),价格贵,50 美元起售。
有多款设备:
5
第五代产品标准版,默认 USB 口5 NFC
带有 NFC 功能,手机可用5C
更换为 type-C 口5C NFC
更换为 type-C 口,并带有 NFC 功能,手机可用5 Nano
标准版的缩小5C Nano
标准版更换为 type-C 口的缩小5Ci
标准版,接口有两个,type-C 和苹果的 Lightning
大部分都是买这个系列。其中 5 NFC
5C
5C NFC
比较主流。
Security Key Series
只支持 FIDO 协议。价格便宜。全系列都支持 NFC。
有两款设备:
Security Key NFC
Security Key C NFC
YubiKey Bio Series
带有指纹识别,价格贵。还不支持 PIV 协议。
YubiKey 使用
要想配置 YubiKey,需要在下载 YubiKey Manager 工具。
之后打开 APP,赋予相应权限,插入硬件,即可看到如下效果:

Interfaces 功能开启配置
点击 Interfaces
,可以看到开启了哪些协议,不需要的可以关闭,也可以像我一样都开启:

Application OTP
点击 Application - OTP
后,可以看到如下界面:

默认下,Slot 1 是出厂配置好的。Slot 2 是我自己配置过了。
这两个都是触摸硬件按钮,把 YubiKey 模拟成键盘,触发输出字符。
Slot 1 是触摸硬件中心 1 秒,之后手移开。
Slot 2 是触摸硬件中心 3 秒,或者一直摸不松手,等到内容输出到屏幕上。
点击 Configure
配置,可以看到支持 4 种类型。

Yubico OTP,需要具体业务进行配合集成,不能直接使用的。
Challenge-response,我没有用到过。
Static password,输出指定的静态内容。可以把常用的密码写进去,之后触摸即可输出密码了。
OATH-HOTP,我接触的业务上没有用到过这个类型的。
可惜没有被广大网站等业务支持的 TOTP。
因为 YubiKey 没有时钟,导致不能直接使用。 虽然可以下载 Yubico Authenticator 来配合使用。但不太推荐这么做。
移动端 2FA 类软件非常多,而且都带有人脸、指纹等认证,没必要特意用 Yubico Authenticator,它只不过把认证方式改为物理的 type-C 或 NFC。而且如果使用 NFC 方式,YubiKey 还必须从电脑上拔下来,否则 NFC 不能开启。
而电脑端,类似软件也有一些,安全性也不差。一般还带有浏览器插件等,方便复制粘贴。而且移动端 2FA 很便利了,我还没见过有人用电脑端这类软件的。
Application FIDO2
点击 Application - FIDO2
后,可以看到如下界面:

可以设置 FIDO2 PIN,也可以进行重置。
建议使用前设置好 PIN。如果不设置,上来就去网站进行绑定的话,浏览器也会弹窗让你设置 PIN。
这个功能非常实用,国外主流的大网站很多都支持 FIDO2。比如:Microsoft、google、Github、Gitlab、Cloudflare、FaceBook、Twitter 等。
使用方法也很简单,比如 Microsoft,访问 账户管理页面后,选择"安全" - "其他安全选项"。

点击"添加一种新的登录或验证方法"

选择"使用安全密钥"

之后按照提示即可完成绑定。
如果 YubiKey 没有设置过 FIDO2 PIN,浏览器会要求先设置一个,再进行绑定。有 PIN 的话,则会直接要求输入 PIN 进行绑定。
Application PIV
点击 Application - PIV
后,可以看到如下界面:

PIN 管理。包括 PIN PUK。
- PIN,用于 PIV 证书智能卡等使用,默认密码
123456
。 - PUK,当 PIN 被锁定后,重置 PIN 时候使用,默认密码
12345678
。 - 注意,此处 PIN 和 FIDO2 PIN 是没有关系的。
Certificates 管理。主要是实现 ssh 远程登录、系统登录、代码提交签名等,需要使用命令行工具生成证书等,这里不详细介绍了。
小结
功能上,主要使用了网站 FIDO 的二次验证。由于 HTOP 不能直接支持,所以不能取代现有的大部分 2FA,使用范围大大受限。
选择上,如果用到了智能卡 PIV 系列,那么只能购买 YubiKey 5 系列。否则可以选择 Security Key 系列,其更为划算。
安全上,这个一言难尽。因为只是登录多了一次强验证,需要购买额外的硬件设备,还要考虑随身携带,只能是见仁见智。而且如果是丢失了登录后的 cookie(参考 AK 的 Youtube 被盗),一样防不住。
并且 FIDO 方案主要在国外的网站上,国内基本上很少有,更多的是短信验证码和 TOTP 方案。这两种方案也比较安全,并且手机随身携带的。国内来看的话,短时间不会有太大前景。