版本31和114间的区别 (跳过第83版)
于2020-04-21 00:12:08修订的的版本31
大小: 3822
编辑: czk
备注:
于2022-11-26 06:59:54修订的的版本114
大小: 12719
编辑: czk
备注:
删除的内容标记成这样。 加入的内容标记成这样。
行号 1: 行号 1:
= YubiKey = Yubico公司生产的一种安全密钥,可用于多种身份认证、二次认证、公钥加密场景。
行号 3: 行号 3:
Yubico公司生产的一种安全密钥,支持的功能包括: Secure Static Passwords, Yubico OTP, OATH – HOTP (Event), OATH – TOTP (Time), Smart Card (PIV-Compatible), OpenPGP, FIDO U2F, FIDO2 <<TableOfContents>>
行号 5: 行号 5:
{{attachment:account_take_over_success_rate.jpg}} = 功能接口 =
行号 7: 行号 7:
== 官方文档 == YubiKey总共有三种功能接口:OTP、FIDO和CCID。一个YubiKey 5系(比如YubiKey 5 NFC等)同时支持三种接口,而Yubico Security Key只支持FIDO接口。
行号 9: 行号 9:
 * 官方使用向导 https://www.yubico.com/setup/
 * 不同型号特性比较 https://www.yubico.com/products/compare-products-series/
 * 官方手册 https://support.yubico.com/support/solutions/articles/15000014219-yubikey-5-series-technical-manual
 * 固件5.2.3 https://www.yubico.com/blog/whats-new-in-yubikey-firmware-5-2-3/
 * OTP:静态密码, Yubico OTP, Challenge-Response, 传统的OATH-HOTP
 * FIDO:FIDO2,U2F
 * CCID:OpenPGP, PIV, OATH
行号 14: 行号 13:
== 使用说明 ==
 * [[https://www.dongleauth.info/|USB-Dongle Authentication]] 支持硬件安全密钥的网站清单
 * [[https://twofactorauth.org/|Two Factor Auth]] 支持二次验证的网站清单
 * Wikipedia https://en.wikipedia.org/wiki/YubiKey
 * 维基百科 https://zh.wikipedia.org/wiki/YubiKey
 * [[https://wiki.archlinux.org/index.php/YubiKey|YubiKey - ArchWiki]]
 * [[https://ruimarinho.gitbooks.io/yubikey-handbook/content/|Yubikey Handbook]] (Yubikey 4 非官方说明书) 中文版: [[https://github.com/iamtwz/yubikey-handbook-chinese/|Yubikey 使用手册]]
 * Yubikey原理、开箱、使用介绍 https://www.bilibili.com/video/av16371482
 * USB令牌登录是啥? https://www.bilibili.com/video/av24152863
 * 如何创建OpenPGP密钥并将其移动到Yubikey https://www.bilibili.com/video/av71115681
 * YubiKey 初使用 & GPG 使用教程 https://haoyu.love/blog523.html
 * LastPass的Yubikey认证 https://helpdesk.lastpass.com/zh/multifactor-authentication-options/yubikey-authentication/
 * 1Password账户的Yubikey二次验证 https://support.1password.com/security-key/
 * YubiKey 和 Dashlane 搭配使用,顺畅登录 https://www.dashlane.com/zh/features/fido-u2f
 * 使用YubiKey登录Windows http://rohos-cn.com/support/knowledge-base/windows-logon-with-yubikey/
 * Yubikey登录Microsoft账户: https://www.microsoft.com/zh-cn/microsoft-365/blog/2018/11/20/sign-in-to-your-microsoft-account-without-a-password-using-windows-hello-or-a-security-key/
 * 在 Windows 上愉快的使用 Yubikey 登录 SSH https://www.v2ex.com/t/607418
 * yubikey使用初体验 https://totoro.ink/yubikey.html
 * 详解 Yubikey 5 NFC 的工作原理(整理) https://moego.me/yubikey_5_nfc_functions.html
 * 使用 Yubikey 加固你的系统 https://green-m.me/2018/08/28/secure-system-with-yubikey/
 * 可能是最好的 Yubikey + GPG/SSH 智能卡教程 https://mechanus.io/ke-neng-shi-zui-hao-de-yubikey-gpg-ssh-zhi-neng-qia-jiao-cheng/
 * YubiKey 4 简介与配置 https://bigeagle.me/2016/02/yubikey-4/
 * Yubikey 4入手 https://medium.com/@clarkzjw/yubikey-4%E5%85%A5%E6%89%8B-51ec9f8c92eb
 * 入手yubikey,一点小心得 https://bigeagle.me/2012/05/yubikey/
 * 如何使用U2F密钥或YubiKey保护您的账户 http://www.howtoip.com/how-to-secure-your-google-dropbox-and-github-accounts-with-a-u2f-key/
功能接口不同于物理接口。不同型号的YubiKey可能会有不同的物理接口,比如USB-A、USB-C、NFC、Lightning等。

通过YubiKey Manager -> Interfaces 可以设置各个接口和功能的开启状态(OTP接口下的四种功能只能一起关闭或者打开)。

== FIDO ==

系统将YubiKey的FIDO接口识别为一个HID设备。YubiKey通过该接口来支持FIDO联盟的[[https://zh.wikipedia.org/wiki/%E9%80%9A%E7%94%A8%E7%AC%AC%E4%BA%8C%E5%9B%A0%E7%B4%A0|U2F协议]]以及更新版的[[https://zh.wikipedia.org/wiki/FIDO2|FIDO2协议]],提供网站登录的二次验证(2FA)以及无密码登录功能。该二次验证方式比传统的TOTP更加安全(防止MITM)、更加方便(只需轻触无需输入)。

支持该功能的网站包括Google、Twitter、Facebook、Github等等(完整列表详见 [[https://www.yubico.com/ca/works-with-yubikey/catalog/?series=1&sort=popular|1]] 以及 [[https://www.buybitcoinworldwide.com/dongle-auth/#|2]] )。该功能也需要设备和浏览器的支持,最新版本的各种浏览器以及Android(无谷歌框架的安卓系统无法支持)、iOS系统(13+)均支持该功能。

许多其他厂商的硬件密钥也支持FIDO U2F或者FIDO2协议,比如[[https://solokeys.com/|SoloKeys]]和[[https://www.nitrokey.com/|Nitrokey]]等。

=== FIDO2 ===

FIDO2需要浏览器支持Webauthn协议(现代浏览器都支持)。

这是YubiKey使用最方便的一种模式。

 1. 第一次使用可以在 YubiKey Manager -> Applications -> FIDO2 中设置FIDO2 PIN。
 1. 在支持该功能的网站中找到二次验证或者无密码登录设置,选择添加YubiKey
 1. 登录时在看到浏览器提示后轻触YubiKey,然后输入FIDO2 PIN。

FIDO2的应用场景

 * 与LUKS集成 [[https://0pointer.net/blog/unlocking-luks2-volumes-with-tpm2-fido2-pkcs11-security-hardware-on-systemd-248.html]]
 * SSH登录 [[https://wiki.archlinux.org/title/SSH_keys#FIDO/U2F]]
 * 支持FIDO2的服务 https://www.yubico.com/ca/works-with-yubikey/catalog/?protocol=5&sort=popular

=== U2F ===

U2F是FIDO2的前身,基本上已经被FIDO2取代。使用方法和FIDO2几乎一样,主要用于二次验证,但不支持PIN保护和无密码登录。

不同于FIDO2的Webauthn标准协议,U2F需要浏览器有针对U2F的特殊支持。兼容U2F的硬件密钥都可以兼容FIDO2,但反之不然。

== CCID ==

系统会将YubiKey的CCID接口识别为一个智能卡读卡器,不同的YubiKey功能会被识别为读卡器上不同的智能卡。YubiKey通过该接口支持PIV、OpenPGP以及OATH三种功能。

=== OATH ===

OATH是一种生成二次验证码的标准,包括TOTP和HOTP两种验证码。通过这个接口使用OATH功能可以存储32组密钥,与此相对的,通过OTP接口使用OATH-HOTP只能存储一组密钥。

 * TOTP: 此模式即Google Authenticator等二次验证应用所使用的算法,此算法依赖当前时间,而YubiKey没有内建时钟,所以依赖YubiKey所连接的设备的时间。
 * HOTP: 此模式和TOTP类似,但不依赖时间而是依赖计数器来生成验证码。每生成一次验证码,内部计数器加1。

以上两种验证码,都可以通过Yubico Authenticator应用来输入密钥及生成二次验证码,具体方法参考 https://github.com/iamtwz/yubikey-handbook-chinese/blob/master/oath/yubico-authenticator.md

支持TOTP的服务非常多,就不在此举例。支持HOTP的服务可在此找到列表: https://www.yubico.com/ca/works-with-yubikey/catalog/?protocol=2&sort=popular

=== PIV ===

PIV模块可用于存储非对称加密密钥,并可进行登录、验证、加密解密等操作。

PIV模块共有四个可以直接存储的槽可以储存四个证书。此外还有20个槽用于存储历史证书,以方便解密过去的密文。

 * 9a 插槽:PIV 验证。验证智能卡和持卡人(比如用于操作系统登录、ssh、wifi、OpenVPN、curl、Android code、Mac code、屏幕自动解锁)。通常 PIN 只会请求一次,在后续操作中可能会被重复使用。
 * 9c 插槽:电子签名。签名对象(Android code 签名、Mac code 签名、储存中间 CA 私钥签名)。一般来说,每次操作都需要验证 PIN。
 * 9d 插槽:钥匙管理。以保密为目的加密对象时,通常 PIN 只需要请求一次,在后续操作中可以重复使用。
 * 9e 插槽:安全卡验证。当需要物理手段进行验证时(比如门锁),通常情况不需要验证 PIN。

第一次使用PIV功能,需要设置PIN。
 * 打开YubiKey Manager -> Applications -> PIV,点击Configure PINs
 * 分别设置PIN,PUK和Management Key。默认的PIN、PUK和Management Key分别为:123456,12345678和010203040506070801020304050607080102030405060708。

基于PIV的应用场景很多,可以实现SSH登录、操作系统登录、全盘加密等,以下就常见应用举例。

 * MacOS登录: 打开 YubiKey Manager -> Applications -> PIV,点击Setup for macOS可以完成配对。配对完成后下次登录,只需要输入PIV PIN而无需输入系统密码。
 * Windows登录: [[https://support.yubico.com/hc/en-us/articles/360013708460-Yubico-Login-for-Windows-Configuration-Guide]]
 * SSH登录:
   * [[https://ruimarinho.gitbooks.io/yubikey-handbook/content/ssh/authenticating-ssh-with-piv-and-pkcs11-client/|ssh-agent + opensc]]
   * [[https://developers.yubico.com/PIV/Guides/SSH_with_PIV_and_PKCS11.html|ssh-agent + pkcs11]]
   * [[https://github.com/FiloSottile/yubikey-agent|yubikey-agent]]
   * [[https://github.com/TritonDataCenter/pivy#using-pivy-agent|pivy-agent]]
 * 其它支持PIV的服务和应用可在此找到列表: https://www.yubico.com/ca/works-with-yubikey/catalog/?protocol=6&sort=popular

=== OpenPGP ===

YubiKey的这个接口兼容OpenPGP标准,配合GnuPG等软件可以进行邮件签名加密解密等操作。

 * 导入密钥: https://github.com/iamtwz/yubikey-handbook-chinese/blob/master/openpgp/importing-keys.md
 * 设置PIN: https://github.com/iamtwz/yubikey-handbook-chinese/blob/master/openpgp/editing-metadata.md
 * 为密钥设置触摸保护: https://github.com/a-dma/yubitouch
 * 使用多个Yubikey: https://github.com/drduh/YubiKey-Guide#using-multiple-keys
行号 41: 行号 98:
== iOS == 在切换多个Yubikey时,使用如下命令
行号 43: 行号 100:
Yubikey对iOS支持比较有限,官方说明: https://support.yubico.com/support/solutions/articles/15000006479-getting-started-on-ios {{{
gpg-connect-agent "scd serialno" "learn --force" /bye
}}}
行号 45: 行号 104:
 * 在Safari浏览器中通过Yubikey登录支持Webauthn的网站
 * 可以装Yubico Authenticator代替google authenticator生成TOTP
 * 可以装Google Smart Lock支持google账户登录
 * 其它整合了ios SDK的app: 1Password, Bitwarden, Brave, Dashlane, Idaptive, Keeper, Lastpass, Okta, Secmaker, ...
OpenPGP的应用场景很多,以下仅就常见的应用举例。
行号 50: 行号 106:
== 购买 ==
 * https://www.yubico.com/store/
 * https://item.taobao.com/item.htm?id=596985460225
 * SSH登录 https://github.com/iamtwz/yubikey-handbook-chinese/blob/master/openpgp/authenticating-ssh-with-gpg.md
 * Git签名 https://ruimarinho.gitbooks.io/yubikey-handbook/content/openpgp/git-signing/
 * Docker内容信任 https://ruimarinho.gitbooks.io/yubikey-handbook/content/docker-content-trust/
行号 54: 行号 110:
== OTP ==
行号 55: 行号 112:
== 其它 ==
 * [[https://www.thestandnews.com/technology/yubico-%E8%B4%8A%E5%8A%A9%E9%A6%99%E6%B8%AF%E6%8A%97%E7%88%AD%E8%80%85%E4%B8%96%E4%B8%8A%E6%9C%80%E5%BC%B7%E7%B6%B2%E4%B8%8A%E4%BF%9D%E5%AE%89%E9%8E%96%E5%8C%99-yubikey/]]
这是从最初版本的YubiKey继承下来的传统接口,系统会将该接口识别为一个键盘设备。该接口的名字因为最初只支持Yubico OTP而命名,如今它具有误导性,因为它支持静态密码、Yubico OTP、Challenge-Response以及传统的OATH-HOTP(新的OATH通过CCID接口实现)四种功能。

OTP接口有两个槽,分别对应轻触和长按YubiKey。每个槽都可以配制成四个功能中的任意一个。

注意:如非必要,尽量使用前面两种模式而不是这种模式。

 * OTP下的模式要么无加密(Static password),要么功能受限(OATH-HOTP仅支持一组密钥),要么使用对称加密(密钥不仅存储在Yubikey中,也存在验证服务器上,验证服务器本身的安全性限制了这种模式的安全性),而且Yubico OTP协议容易受到依赖目标系统与验证服务器的连接安全,因此需要目标系统通过HTTPS或者HMAC来验证验证服务器。总之相对U2F等更现代的协议,此协议相对更不安全。
 * 由于键盘布局的问题,这种模式能完全正常使用的字符是有限制的。Yubico OTP通过使用!ModHex[[https://resources.yubico.com/53ZDUYE6/as/9hccqgx9bwwqq96mhkk8jb4h/Static_Password_Function.pdf|1]]绕过了这种限制,但静态密码就没有这么幸运了。

=== 静态密码 ===

通过YubiKey Manager可以设置静态密码。使用时轻触或者长按YubiKey即可在当前光标处输入提前设置的密码。

=== Yubico OTP ===

这种模式下,YubiKey通过对称加密算法生成一次性的token发送给服务器进行验证。服务器拥有和YubiKey一样的对称加密密钥,通过解密token来验证用户身份。

YubiKey在出厂时已经内置了一组密钥。如果使用Yubico提供的!YubiCloud服务器进行验证,则无需任何配置。

注意:出厂密钥具有一个特殊的前缀CC,如果清除后则无法再生成。某些服务强制需要使用CC前缀的密钥。

支持该模式的服务有: https://www.yubico.com/ca/works-with-yubikey/catalog/?protocol=3&sort=popular-for-individuals

=== Challenge-Response ===

这个模式下YubiKey可以根据事先存储的密钥对输入值进行变换,输出一个哈希值。YubiKey支持HMAC-SHA1和Yubico OTP两种算法。

使用方法

 * 在YubiKey Manager -> Applications -> OTP -> Configure 选择 Challenge-response,生成一个新密钥或者输入一个以前的密钥。

主要使用场景有

 * LUKS Full Disk Encryption [[https://github.com/agherzan/yubikey-full-disk-encryption]]
 * 登录Mac https://developers.yubico.com/yubico-pam/MacOS_X_Challenge-Response.html
 * 在KeepassXC中保护密码数据库 https://keepassxc.org/docs/KeePassXC_UserGuide.html#_database_settings
 * 其它支持该协议的服务有: https://www.yubico.com/ca/works-with-yubikey/catalog/?protocol=8&sort=popular

=== OATH-HOTP ===

这个功能和基于CCID接口的[[#OATH|OATH-HOTP]]所提供的功能相同。区别是这个功能只支持一组密钥,CCID接口支持32组密钥;这个功能激活更方便,只需要轻触或者长按即可,无需软件支持,而CCID接口需要Yubico Authenticator应用支持。

使用方式
 * 在YubiKey Manager -> Applications -> OTP -> Configure选择OATH-HOTP,然后输入密钥。
 * 在需要输入验证码时,轻触或者长按YubiKey。

支持HOTP的服务列表: https://www.yubico.com/ca/works-with-yubikey/catalog/?protocol=2&sort=popular

= 应用下载 =

 * [[https://www.yubico.com/support/download/yubikey-manager/|YubiKey Manager]]: YubiKey配置工具
 * [[https://www.yubico.com/products/yubico-authenticator/|Yubico Authenticator]]: 二次验证码生成工具
 * [[https://www.yubico.com/support/download/smart-card-drivers-tools/|YubiKey Smart Card Minidriver (Windows)]]: Windows智能卡驱动

= 固件版本 =

Yubico [[https://support.yubico.com/hc/en-us/articles/360013708760-YubiKey-Firmware-Is-Not-Upgradeable|声称]]为了安全起见,YubiKey的固件是无法升级的。所以购买YubiKey时除了留意硬件规格,还要留意固件版本。

 * 有些固件版本有已知的安全漏洞: https://www.yubico.com/support/security-advisories/
 * 有些功能只在新版本的固件中支持
   * https://docs.yubico.com/hardware/yubikey/yk-5/tech-manual/yk5-overview-5.4.html#
   * https://www.yubico.com/blog/whats-new-in-yubikey-firmware-5-2-3/

= 参考资料 =

 * 官方使用向导 [[https://www.yubico.com/setup/]]
 * https://docs.yubico.com/hardware/yubikey/yk-5/tech-manual/index.html
 * 不同型号特性比较 [[https://www.yubico.com/products/compare-products-series/]]
 * 官方手册 [[https://support.yubico.com/support/solutions/articles/15000014219-yubikey-5-series-technical-manual]]
 * 固件5.2.3 [[https://www.yubico.com/blog/whats-new-in-yubikey-firmware-5-2-3/]]
 * YubiKey Handbook [[https://ruimarinho.gitbooks.io/yubikey-handbook/content/]] - [[https://github.com/iamtwz/yubikey-handbook-chinese|中文版]]
 * YubiKey Guide [[https://github.com/drduh/YubiKey-Guide]]
 * [[https://wiki.archlinux.org/title/YubiKey#OTP_slot_implementation]]
 * [[https://developers.yubico.com/PIV/Guides/Securing_SSH_with_OpenPGP_or_PIV.html|三种SSH登录方式比较]]

Yubico公司生产的一种安全密钥,可用于多种身份认证、二次认证、公钥加密场景。

功能接口

YubiKey总共有三种功能接口:OTP、FIDO和CCID。一个YubiKey 5系(比如YubiKey 5 NFC等)同时支持三种接口,而Yubico Security Key只支持FIDO接口。

  • OTP:静态密码, Yubico OTP, Challenge-Response, 传统的OATH-HOTP
  • FIDO:FIDO2,U2F
  • CCID:OpenPGP, PIV, OATH

功能接口不同于物理接口。不同型号的YubiKey可能会有不同的物理接口,比如USB-A、USB-C、NFC、Lightning等。

通过YubiKey Manager -> Interfaces 可以设置各个接口和功能的开启状态(OTP接口下的四种功能只能一起关闭或者打开)。

1. FIDO

系统将YubiKey的FIDO接口识别为一个HID设备。YubiKey通过该接口来支持FIDO联盟的U2F协议以及更新版的FIDO2协议,提供网站登录的二次验证(2FA)以及无密码登录功能。该二次验证方式比传统的TOTP更加安全(防止MITM)、更加方便(只需轻触无需输入)。

支持该功能的网站包括Google、Twitter、Facebook、Github等等(完整列表详见 1 以及 2 )。该功能也需要设备和浏览器的支持,最新版本的各种浏览器以及Android(无谷歌框架的安卓系统无法支持)、iOS系统(13+)均支持该功能。

许多其他厂商的硬件密钥也支持FIDO U2F或者FIDO2协议,比如SoloKeysNitrokey等。

1.1. FIDO2

FIDO2需要浏览器支持Webauthn协议(现代浏览器都支持)。

这是YubiKey使用最方便的一种模式。

  1. 第一次使用可以在 YubiKey Manager -> Applications -> FIDO2 中设置FIDO2 PIN。

  2. 在支持该功能的网站中找到二次验证或者无密码登录设置,选择添加YubiKey

  3. 登录时在看到浏览器提示后轻触YubiKey,然后输入FIDO2 PIN。

FIDO2的应用场景

1.2. U2F

U2F是FIDO2的前身,基本上已经被FIDO2取代。使用方法和FIDO2几乎一样,主要用于二次验证,但不支持PIN保护和无密码登录。

不同于FIDO2的Webauthn标准协议,U2F需要浏览器有针对U2F的特殊支持。兼容U2F的硬件密钥都可以兼容FIDO2,但反之不然。

2. CCID

系统会将YubiKey的CCID接口识别为一个智能卡读卡器,不同的YubiKey功能会被识别为读卡器上不同的智能卡。YubiKey通过该接口支持PIV、OpenPGP以及OATH三种功能。

2.1. OATH

OATH是一种生成二次验证码的标准,包括TOTP和HOTP两种验证码。通过这个接口使用OATH功能可以存储32组密钥,与此相对的,通过OTP接口使用OATH-HOTP只能存储一组密钥。

  • TOTP: 此模式即Google Authenticator等二次验证应用所使用的算法,此算法依赖当前时间,而YubiKey没有内建时钟,所以依赖YubiKey所连接的设备的时间。

  • HOTP: 此模式和TOTP类似,但不依赖时间而是依赖计数器来生成验证码。每生成一次验证码,内部计数器加1。

以上两种验证码,都可以通过Yubico Authenticator应用来输入密钥及生成二次验证码,具体方法参考 https://github.com/iamtwz/yubikey-handbook-chinese/blob/master/oath/yubico-authenticator.md

支持TOTP的服务非常多,就不在此举例。支持HOTP的服务可在此找到列表: https://www.yubico.com/ca/works-with-yubikey/catalog/?protocol=2&sort=popular

2.2. PIV

PIV模块可用于存储非对称加密密钥,并可进行登录、验证、加密解密等操作。

PIV模块共有四个可以直接存储的槽可以储存四个证书。此外还有20个槽用于存储历史证书,以方便解密过去的密文。

  • 9a 插槽:PIV 验证。验证智能卡和持卡人(比如用于操作系统登录、ssh、wifi、OpenVPN、curl、Android code、Mac code、屏幕自动解锁)。通常 PIN 只会请求一次,在后续操作中可能会被重复使用。
  • 9c 插槽:电子签名。签名对象(Android code 签名、Mac code 签名、储存中间 CA 私钥签名)。一般来说,每次操作都需要验证 PIN。
  • 9d 插槽:钥匙管理。以保密为目的加密对象时,通常 PIN 只需要请求一次,在后续操作中可以重复使用。
  • 9e 插槽:安全卡验证。当需要物理手段进行验证时(比如门锁),通常情况不需要验证 PIN。

第一次使用PIV功能,需要设置PIN。

  • 打开YubiKey Manager -> Applications -> PIV,点击Configure PINs

  • 分别设置PIN,PUK和Management Key。默认的PIN、PUK和Management Key分别为:123456,12345678和010203040506070801020304050607080102030405060708。

基于PIV的应用场景很多,可以实现SSH登录、操作系统登录、全盘加密等,以下就常见应用举例。

2.3. OpenPGP

YubiKey的这个接口兼容OpenPGP标准,配合GnuPG等软件可以进行邮件签名加密解密等操作。

在切换多个Yubikey时,使用如下命令

gpg-connect-agent "scd serialno" "learn --force" /bye

OpenPGP的应用场景很多,以下仅就常见的应用举例。

3. OTP

这是从最初版本的YubiKey继承下来的传统接口,系统会将该接口识别为一个键盘设备。该接口的名字因为最初只支持Yubico OTP而命名,如今它具有误导性,因为它支持静态密码、Yubico OTP、Challenge-Response以及传统的OATH-HOTP(新的OATH通过CCID接口实现)四种功能。

OTP接口有两个槽,分别对应轻触和长按YubiKey。每个槽都可以配制成四个功能中的任意一个。

注意:如非必要,尽量使用前面两种模式而不是这种模式。

  • OTP下的模式要么无加密(Static password),要么功能受限(OATH-HOTP仅支持一组密钥),要么使用对称加密(密钥不仅存储在Yubikey中,也存在验证服务器上,验证服务器本身的安全性限制了这种模式的安全性),而且Yubico OTP协议容易受到依赖目标系统与验证服务器的连接安全,因此需要目标系统通过HTTPS或者HMAC来验证验证服务器。总之相对U2F等更现代的协议,此协议相对更不安全。
  • 由于键盘布局的问题,这种模式能完全正常使用的字符是有限制的。Yubico OTP通过使用!ModHex1绕过了这种限制,但静态密码就没有这么幸运了。

3.1. 静态密码

通过YubiKey Manager可以设置静态密码。使用时轻触或者长按YubiKey即可在当前光标处输入提前设置的密码。

3.2. Yubico OTP

这种模式下,YubiKey通过对称加密算法生成一次性的token发送给服务器进行验证。服务器拥有和YubiKey一样的对称加密密钥,通过解密token来验证用户身份。

YubiKey在出厂时已经内置了一组密钥。如果使用Yubico提供的!YubiCloud服务器进行验证,则无需任何配置。

注意:出厂密钥具有一个特殊的前缀CC,如果清除后则无法再生成。某些服务强制需要使用CC前缀的密钥。

支持该模式的服务有: https://www.yubico.com/ca/works-with-yubikey/catalog/?protocol=3&sort=popular-for-individuals

3.3. Challenge-Response

这个模式下YubiKey可以根据事先存储的密钥对输入值进行变换,输出一个哈希值。YubiKey支持HMAC-SHA1和Yubico OTP两种算法。

使用方法

  • 在YubiKey Manager -> Applications -> OTP -> Configure 选择 Challenge-response,生成一个新密钥或者输入一个以前的密钥。

主要使用场景有

3.4. OATH-HOTP

这个功能和基于CCID接口的OATH-HOTP所提供的功能相同。区别是这个功能只支持一组密钥,CCID接口支持32组密钥;这个功能激活更方便,只需要轻触或者长按即可,无需软件支持,而CCID接口需要Yubico Authenticator应用支持。

使用方式

  • 在YubiKey Manager -> Applications -> OTP -> Configure选择OATH-HOTP,然后输入密钥。

  • 在需要输入验证码时,轻触或者长按YubiKey。

支持HOTP的服务列表: https://www.yubico.com/ca/works-with-yubikey/catalog/?protocol=2&sort=popular

应用下载

固件版本

Yubico 声称为了安全起见,YubiKey的固件是无法升级的。所以购买YubiKey时除了留意硬件规格,还要留意固件版本。

参考资料

ch3n2k.com | Copyright (c) 2004-2020 czk.