Canokey 的食用日志(一)

Canokey 是开源的安全认证 USB 设备,提供 4 个接口:U2F/FIDO2(HID)、OpenPGP Card(CCID)、PIV+OATH(CCID)和 WebUSB

FIDO2/WebAuthn/U2F

U2F 即「通用第二因素」(Universal 2nd Factor)是一个开放认证标准,使用专门的 USB 或者 NFC 设备来加强和简化两因素验证方式,该标准目前由 FIDO 联盟 管理,根据 Mozilia 文档 WebUSB 目前主流浏览器支持情况如下图所示:(WebAuthn 测试网站

Canokey 支持 USB 以及 NFC 的方式进行 U2F 验证(支持的网站列表 ),主流平台对 NFC/USB 的支持情况如下图所示:

U2F 安全密钥(Security Keys)的一个典型的用途就是作为保护账户的两因素安全密钥,像 Google、GitHub、Twitter、GitLab、DropBox、FaceBook、Bitbucket 等都支持

在这些支持 U2F 的网站上面添加你的 Canokey 作为安全密钥后,一般都会在添加完成后生成一段恢复代码,记得一定要妥善保存,以便如果你的安全密钥损坏、丢失或者遇到各种不可抗力的因素如:黑客物理入侵、王晶上门、第三次世界大战、核战争、陨石坠落你仍然可以通过恢复代码恢复对账户的访问

大多数支持添加 U2F 安全密钥的平台都可以添加多个安全密钥,一般建议添加两个以上的安全密钥(建议至少买两个 Canokey 或者 Yubikey)如果你只有一个安全密钥,建议至少添加另外一种以上的两步验证方式如: SMS、OTP 等保护对你账户的访问😎

博主 平时的主要设备是一台 Windows 10 笔记本电脑、一台 iPad Pro 11、一台 Android 手机(支持 NFC),在笔记本电脑上可以使用 Canokey 插入 USB 接口,触摸 Canokey 中间亮灯的位置完成验证,在 iPad 上通过 USB-C 转接头完成验证,Android 手机上通过 Canokey 的 NFC 或者 USB-C 转接头插入手机进行验证均可

PS: Canokey 的 NFC 功率设计比较小,在不同型号手机上第一次使用 NFC 感应 Canokey 可能会碰到「位置对了,就是进不去」的问题,没错,按照群友说法,你需要慢慢找 Canokey 和 手机 NFC 线圈位置之前契合的「G 点」,博主 大概试了三次就找到了😂

除此外,还可以在 Canokey Web 控制台 按照党主席的说明对 Canokey 的 NFC 功能进行「魔法修复」,可能会更容易找到「G 点」🤣

1
2
3
4
5
6
7
NFC 可能的修复指南:
1. 确定电脑上没有其他程序抢占CCID // $ gpg-connect-agent killagent /bye
2. 进入 WebConsole,选择 admin,然后认证 PIN 通过
3. 不要刷新,直接进入 APDU 界面,分别执行以下两行:
00FF01000603A044000420
00FF01000903B005720300B39900
确认执行结果都是 9000

OATH

Canokey 的 OATH 功能通过 Yubico Authenticator 添加/查看,Canokey 的 OATH 有:

  • 基于时间的一次性密码 TOTP 支持
  • 基于 HMAC 的一次性密码 HOTP 支持
  • 一个 Canokey 最多支持保存 100 个 OATH 令牌
  • USB/NFC 验证支持

Yubico AuthenticatorSettingsAdvancedCustom readerCustom reader filter 输入 Canokey 点击 Save 保存或者在插入 Canokey 的情况下,直接选择已经连接的 Canokey 点击 Use as filter 也可以

NDEF

Canokey 的 NDEF 默认的策略是可读/写(NFC),读写策略可以通过 Canokey Web 控制台 修改,最大消息长度支持 1022 字节,默认值是 Canokey 官网 URL:https://canokeys.org

可以使用 NFC Tools 软件写入 NDEF 消息 | Play Store

PS:NDEF 消息并不具有足够的安全性(几乎没有),所以不要存放敏感数据🤐

PIV

算法支持:

  • RSA2048
  • NIST P-256
  • NIST P-384

博主 暂时还没找到合适的用途,暂时先🕊️🕊️

参考资料:

  • FIDO2: Web Authentication (WebAuthn) - FIDO Alliance

  • U2F - 维基百科

  • WebUSB - 维基百科

  • Canokey | NFC Wiki

  • Canokey | Official Docs