497
备注:
|
7167
|
删除的内容标记成这样。 | 加入的内容标记成这样。 |
行号 1: | 行号 1: |
Yubico公司生产的一种安全密钥,可用于多种身份认证、二次认证、公钥加密场景。 <<TableOfContents>> = 功能接口 = YubiKey总共有三种功能接口:FIDO、OTP和CCID。一个YubiKey 5系(比如YubiKey 5 NFC等)同时支持三种接口,而Yubico Security Key只支持FIDO接口。 * FIDO:FIDO2,U2F * CCID:OpenPGP, PIV, OATH * OTP:Static Password, Yubico OTP, Challenge-Response, Legacy OATH-HOTP 功能接口不同于物理接口。不同型号的YubiKey可能会有三种不同的物理接口: * USB * 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+)均支持该功能。 === FIDO2 === 这是使用最方便的一种模式。 1. 第一次使用可以在 YubiKey Manager -> Applications -> FIDO2 中设置FIDO2 PIN。 1. 在支持该功能的网站中找到二次验证或者无密码登录设置,选择添加YubiKey 1. 登录时在看到浏览器提示后轻触YubiKey,然后输入FIDO2 PIN。 ==== 与LUKS集成 ==== [[https://0pointer.net/blog/unlocking-luks2-volumes-with-tpm2-fido2-pkcs11-security-hardware-on-systemd-248.html]] === U2F === U2F和FIDO2的使用方法几乎一致,只是不支持PIN和无密码登录。 == 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应用来输入密钥及生成二次验证码。 === 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可以实现SSH登录、操作系统登录、全盘加密等。 ==== 初始化 ==== 第一次使用PIV功能,需要设置PIN。 * 打开YubiKey Manager -> Applications -> PIV,点击Configure PINs * 分别设置PIN,PUK和Management Key。默认的PIN、PUK和Management Key分别为:123456,12345678和010203040506070801020304050607080102030405060708。 ==== MacOS登录 ==== 打开 YubiKey Manager -> Applications -> PIV,点击Setup for macOS可以完成配对。配对完成后下次登录,只需要输入PIV PIN而无需输入系统密码。 ==== SSH登录 ==== |
|
行号 3: | 行号 82: |
* 第三方说明书 https://github.com/iamtwz/yubikey-handbook-chinese/ * Yubikey原理、开箱、使用介绍 https://www.bilibili.com/video/av16371482 * USB令牌登录是啥? https://www.bilibili.com/video/av24152863 * 如何创建OpenPGP密钥并将其移动到Yubikey https://www.bilibili.com/video/av71115681 |
=== OpenPGP === |
行号 8: | 行号 84: |
== iOS == 对iOS支持比较有限 |
==== 初始化 ==== |
行号 11: | 行号 86: |
* 可以装Yubico Authenticator代替google authenticator生成TOTP * 可以装Google Smart Lock支持google账户登录 |
==== SSH登录 ==== ==== Git签名 ==== ==== Docker内容信任 ==== == OTP == 这是从最初版本的YubiKey继承下来的传统接口,系统会将该接口识别为一个键盘设备。该接口的名字因为最初只支持Yubico OTP而命名,如今它具有误导性,因为它支持静态密码、Yubico OTP、Challenge-Response以及传统的OATH-HOTP(新的OATH通过CCID接口实现)四种功能。 OTP接口有两个槽,分别对应轻触和长按YubiKey。每个槽都可以配制成四个功能中的任意一个。 注意:如非必要,尽量使用前面两种模式而不是这种模式。 === 静态密码 === 通过YubiKey Manager可以设置静态密码。 使用时轻触或者长按YubiKey即可在当前光标处输入提前设置的密码。 注意事项: * 首先,这是非常不安全的模式,任何人获得你的YubiKey都可以得到你设置的密码。 * 其次,由于键盘布局的问题,这种模式能完全正常使用的字符是有限制。详见 [[https://resources.yubico.com/53ZDUYE6/as/9hccqgx9bwwqq96mhkk8jb4h/Static_Password_Function.pdf|1]] === Yubico OTP === ==== 安全风险 ==== 由于Yubico OTP使用对称加密,密钥不仅存储在Yubikey中,也存在验证服务器上,所以验证服务器本身的安全极其关键。而且该协议容易受到依赖目标系统与验证服务器的连接安全,因此需要目标系统通过HTTPS或者HMAC来验证验证服务器。总之相对U2F等更现代的协议,此协议相对更不安全。 === Challenge-Response === ==== LUKS Full Disk Encryption ==== [[https://github.com/agherzan/yubikey-full-disk-encryption]] === OATH-HOTP === = 参考资料 = * 官方使用向导 [[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/]] * YubiKey Guide [[https://github.com/drduh/YubiKey-Guide]] * [[https://wiki.archlinux.org/title/YubiKey#OTP_slot_implementation]] |
Yubico公司生产的一种安全密钥,可用于多种身份认证、二次认证、公钥加密场景。
目录
功能接口
YubiKey总共有三种功能接口:FIDO、OTP和CCID。一个YubiKey 5系(比如YubiKey 5 NFC等)同时支持三种接口,而Yubico Security Key只支持FIDO接口。
- FIDO:FIDO2,U2F
- CCID:OpenPGP, PIV, OATH
- OTP:Static Password, Yubico OTP, Challenge-Response, Legacy OATH-HOTP
功能接口不同于物理接口。不同型号的YubiKey可能会有三种不同的物理接口:
- USB
- 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+)均支持该功能。
1.1. FIDO2
这是使用最方便的一种模式。
第一次使用可以在 YubiKey Manager -> Applications -> FIDO2 中设置FIDO2 PIN。
在支持该功能的网站中找到二次验证或者无密码登录设置,选择添加YubiKey
登录时在看到浏览器提示后轻触YubiKey,然后输入FIDO2 PIN。
1.1.1. 与LUKS集成
1.2. U2F
U2F和FIDO2的使用方法几乎一致,只是不支持PIN和无密码登录。
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应用来输入密钥及生成二次验证码。
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可以实现SSH登录、操作系统登录、全盘加密等。
2.2.1. 初始化
第一次使用PIV功能,需要设置PIN。
打开YubiKey Manager -> Applications -> PIV,点击Configure PINs
- 分别设置PIN,PUK和Management Key。默认的PIN、PUK和Management Key分别为:123456,12345678和010203040506070801020304050607080102030405060708。
2.2.2. MacOS登录
打开 YubiKey Manager -> Applications -> PIV,点击Setup for macOS可以完成配对。配对完成后下次登录,只需要输入PIV PIN而无需输入系统密码。
2.2.3. SSH登录
2.3. OpenPGP
2.3.1. 初始化
2.3.2. SSH登录
2.3.3. Git签名
2.3.4. Docker内容信任
3. OTP
这是从最初版本的YubiKey继承下来的传统接口,系统会将该接口识别为一个键盘设备。该接口的名字因为最初只支持Yubico OTP而命名,如今它具有误导性,因为它支持静态密码、Yubico OTP、Challenge-Response以及传统的OATH-HOTP(新的OATH通过CCID接口实现)四种功能。
OTP接口有两个槽,分别对应轻触和长按YubiKey。每个槽都可以配制成四个功能中的任意一个。
注意:如非必要,尽量使用前面两种模式而不是这种模式。
3.1. 静态密码
通过YubiKey Manager可以设置静态密码。
使用时轻触或者长按YubiKey即可在当前光标处输入提前设置的密码。
注意事项:
首先,这是非常不安全的模式,任何人获得你的YubiKey都可以得到你设置的密码。
其次,由于键盘布局的问题,这种模式能完全正常使用的字符是有限制。详见 1
3.2. Yubico OTP
3.2.1. 安全风险
由于Yubico OTP使用对称加密,密钥不仅存储在Yubikey中,也存在验证服务器上,所以验证服务器本身的安全极其关键。而且该协议容易受到依赖目标系统与验证服务器的连接安全,因此需要目标系统通过HTTPS或者HMAC来验证验证服务器。总之相对U2F等更现代的协议,此协议相对更不安全。
3.3. Challenge-Response
3.3.1. LUKS Full Disk Encryption
https://github.com/agherzan/yubikey-full-disk-encryption
3.4. OATH-HOTP
参考资料
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/
YubiKey Guide https://github.com/drduh/YubiKey-Guide
https://wiki.archlinux.org/title/YubiKey#OTP_slot_implementation