把玩 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秒产生一个新口令,要求客户端和服务器能够十分精确的保持正确的时钟,客户端和服务端基于时间计算的动态口令才能一致。

来源:https://www.cnblogs.com/voipman/p/6216328.html

FIDO2 与 FIDO U2F

2012 年,Yubico 和 Google 设计了 U2F 协议,第二年 U2F 成为 FIDO 组织的标准,之后加入了 NFC 的支持。之后,FIDO2 作为替代 U2F
的新标准产生,原来的 U2F 以兼容的方式成为了 CTAP1,而采用 CBOR 封装格式的 CTAP(CTAP2) 则是 FIDO2 的主要协议。

来源:https://jia.je/hardware/2020/05/18/fido-u2f-fido2-ctap/

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 方案。这两种方案也比较安全,并且手机随身携带的。国内来看的话,短时间不会有太大前景。

–END–