在之前的文章中 reizhi 给大家介绍了 YubiKey Manager 的使用方法,算是一篇入门基础。而今天的系列第二篇 Yubico Authenticator 会更加偏向实际应用,下载和安装直接在官网解决就好,这里不赘述了。
1.Authenticator 有什么用
基于时间的动态密码器相信很多人在旧的网银盾上都见到过,打开后它会显示一个随机的6位数,并且随着时间的推移不断变化。由于动态密码的有效期很短(一般是半分钟),所以即便泄露,攻击者也后续无法重复使用。除此之外,动态密码的标准和算法(RFC 6238)得到了行业一致认可,这使得不同的厂商都能够推出自己基于硬件或者软件的解决方案,而无需考虑兼容性的问题。
正因如此,动态密码目前被广泛的作为两步验证因素使用。而 Authenticator 则是 Yubico 所推出的基于软件和硬件的动态密码客户端。之所以说基于软件和硬件,是因为所有的动态密码都储存在 YubiKey 中,但读取需要通过配套软件来进行(显然,YubiKey 没有显示屏)。
因为密钥储存在 YubiKey 的硬件中,所以 Authenticator 没有备份和导出功能。只要硬件在手,在任意的电脑(或支持 NFC 的手机)上安装 Authenticator 后,都能够进行读取。
2.动态密码的运行原理
以下内容只是做个科普,需要详细了解算法可以自行搜索 RFC 6238 。
首先,RFC 6238 定义了一个算法,我们不妨叫它 TOTP 。这个算法接受两个参数:密钥和时间,所以动态密码的生成过程可以简化写作:TOTP(密钥,时间) = 动态密码。
其中,密钥由服务器端生成,并且在绑定验证器时提供给客户端。时间一般是时间戳整除30的商,这样一来动态密码每30秒就会变化并且允许一定的时间误差。同时这个 TOTP 算法能够保证:1.已知动态密码无法反推出密钥;2.如果给定密钥和时间,输出结果是唯一确定的。
这样一来,只要服务器端和客户端都保存着相同的密钥,并且确保时间较为准确,就能够在任意时间获得相同的计算结果。
3.绑定流程
下面我们以 Google 为例来示范绑定动态密码器的操作流程。在 账号 – 安全性 – 两步验证 的菜单下可以看到“身份验证器”的选项,点击进入。
之前已经提到过,动态密码的标准和算法已经达成了行业统一,所以我们无需下载指定的 app ,直接使用 Authenticator 即可。
此时页面会显示一个包含密钥的二维码,我们可以直接打开 Authenticator 进行扫描。由于这个二维码不会再次显示,建议下载保存在安全可靠的位置作为备份。如果之后需要绑定新的 YubiKey 或是其他的 app ,还可以重复使用,并不会过期。
首先点击 Authenticator 右上角的设置图标,选择 Add account ,再点击 Scan QR code 即可。如果有需要还可以勾选 require touch ,最后点击 save 保存。如果有多个 YubiKey 的话建议此时逐一全部绑定。
因为密钥保存在硬件内,所以每个 YubiKey 5 最多只能保存32个动态密码。
除了可以扫码之外,在图1的界面也支持点击“无法扫描”来手动配置密钥。将页面所显示的密钥复制到 Secret key 中,填写 Issuer / Account name 用来标识和区分,最后 save 即可。手动配置请注意务必标明动态密码所归属的网站,否则后续将无法区分。
4.使用流程
在登陆网站提示输入动态密码时,点击 Authenticator 中对应的项目即可显示动态密码。如果在初始设置时勾选了 require touch ,还需要触摸一下 YubiKey 上的感应区。
五个按钮从左到右依次为:复制密码,刷新密码,置顶,编辑,删除。
其中刷新按钮在超时后才能点击,编辑按钮仅能够修改标识名称,无法修改密钥。
如果需要的话,可以为 Authenticator 单独设置密码。默认不需要密码即可显示动态密码。
5.Webauthn
之前的两篇文章中 Webauthn 都有被反复提及,这里再稍作展开。 Webauthn 无密码认证包含两种方式:需要输入用户名或不需要输入用户名。如果是前者则不需要占用存储空间,在 Authenticator 中也不会显示;而后者将占用存储空间,上限为25个。
Microsoft 账号目前已经支持 Webauthn 无密码登录。
6.总结
虽然 YubiKey 的动态密码(TOTP)存储容量有限,但对于大多数人来说应该足够日常使用了。顺带一提 WinAuth 还支持绑定 Steam 的专有动态密码,可以省去每次打开手机 Steam APP 的麻烦。在之前一篇文章中 reizhi 提到过 YubiKey 配合 WinAuth 来使用的方法,有需要可以前往查看。