Featured image of post CanoKeys 开箱

CanoKeys 开箱

新年第一天,去年年底买的 CanoKey Pigeon 到货了。

新年第一天,去年年底买的 Canokey Pigeon 到货了。不过东西还在学校的菜鸟驿站,所以开箱就只能暂时咕咕咕咕了。


1 月 3 日更新:

终于拿到了鸽了好久的 Canokeys。这里对其做个简单的评测,不会详细介绍每一个功能的使用细节,大部分使用方法可以参考网上的 Yubikeys 指南。

如果你还不知道 Yubikey 、Canokey 或类似的硬件密钥是什么,可以先通过 Zenithal H 同学的博文 『从 Ant Design GitHub 失窃案谈开去:国内有可用的2FA吗』和 公开演讲 『CanoKey 应用、代码与实现』来对其进行了解。

订单 全家福

OpenPGP

这是我目前最常用的,用于给我的提交签名,以及保存我的 ssh 私钥。目前 Canokey 准备做备用 key ,所以需要把我的 GPG 密钥导进去。

Canokey 的第一个签名,十分有仪式感

那么我们先把现在的 ~/.gnupg 备份一遍,然后断网,gpg --import 导入之前雪藏的私钥。然后 keytocard 将私钥写卡。

提示
如果你是新用户的话,可以先在本地生成一对密钥后把子密钥写卡,也可以直接在卡内生成,不过卡内生成的就不能取出来备份了。
需要注意的是卡内不能直接生成 RSA4096 的密钥。

但是这里遇到一个问题,gpg 会记录本地的私钥和智能卡卡号的关系,而且只能记录一个卡。这样就会出现一个现象,我已经插入一张卡,但系统提示我插另一张卡。

这时候可以用这个命令来解决:

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

gpg 2.3 现已直接支持多卡。
好诶,可是 Arch 还没更新 (

至于 Android 手机上的 OpenKeyChain,我插上去就能直接使用了。

FIDO2

用在笔记本的 systemd-cryptenroll 解锁全盘加密,台式机的 systemd-homed 解锁 /home 和 Github、Google 等账号的 WebAuthn/FIDO2 。上述功能 Yubikey 和 Canokey 都能正常使用。

不过 systemd 暂时不太给力,暂时不能注册多个 FIDO2 设备1也不能在启动的时候找不到密钥时自动回落到输入密码2(要输入密码解锁只能去掉 fido2 的启动参数,所以只能预留了一个启动项)。自动回落到输入密码在 systemd 250 已得到了支持,可以参考这里 的方案。

OATH (TOTP)

电脑上使用 Yubico Authenticator 就可以,只需要在设置中打开 Custom reader 来支持 Canokey。

Yubico Authenticator 上使用 Canokey

Android 手机上由于 USB 存在 ID 白名单,会直接忽略 Canokey,群友 @xierch 提供了一个 patch 加上了 Canokey 的支持,需要在 yubioath-android 当前 master 分支的代码基础上修改后自己编译。

点击展开

编译出来的是可以正常使用 USB 读写 TOTP 的。群友 @SparrowHe 提供了一份编译好的版本

1 月 4 日更新

今天在修复 NFC 功能后又测试了一下 Google Play 版的可以使用 NFC。但是由于 USB 有 ID 白名单,所以无法使用,需要用上面的魔改版本,但是我的 Mi 10S 实际测试下来魔改版的 NFC 似乎有些问题,也有群友反应说魔改版 USB 和 NFC 都能正常使用……

NDEF

虽然我暂时还没有这个的使用场景,但在 NFC 可用后也顺手测试了一下这个功能,NFC Tools 可以正常读写 NDEF 信息。

OpenKeychain 解密 PGP 加密信息 NFC Tools 读取 Canokey 的 NDEF 信息

总结

目前已经测试过的功能以及使用的软件如下:

USB NFC
FIDO2 👍 👍
OpenPGP 👍 👎
PIV
NDEF N/A 👍
OATH 👍 👍
Arch Linux Xiaomi Mi 10S (thyme)
FIDO2 systemd 250-4 WebAuthn - FIDO2 Example 4.2.1
OpenPGP gnupg 2.2.32-2 OpenKeychain: Easy PGP 5.7.5
NDEF N/A NFC Tools 8.6.1
OATH yubioath-desktop 5.1.0-2 Yubico Authenticator 2.2.0

由于我暂时没有 PIV 的使用场景,因此该功能暂时没有进行测试。

对了,我好像也没有测过 factory-reset ?

总得来说,这款 Canokey Pigeon 几乎能覆盖我目前手上的 Yubikey 5 NFC 的使用场景了,(都没有 Type-C 支持,需要另外购买转接头),还有少数坑需要填。

NFC

受芯片功耗的限制,CanoKey Pigeon 的 NFC 性能和 YubiKey 确实无法相比。

之前使用 Yubikey 的 NFC 基本没有遇到任何障碍,但是这个 Canokey 我至今没有成功使用,可能是我的姿势有点问题。

不过在群友给了一串神秘代码 后修好了,大家可以参考一下官方对 NFC 的使用建议 修复指南

“找到 G 点后的 NFC 真的很容易识别”

—— 某不愿透露姓名的群友

1 月 4 日更新

今天成功在手机上使用了 NFC 完成了 Github 和 Twitter 的二步验证,也在 Yubico Authenticator 上成功使用了 NFC 的 TOTP 的读取。

Web Console

大部分设置都可以在 Web Console 上管理。需要注意的是 Firefox 不支持 WebUSB3,所以可能需要额外装一个 Chromium。

如果你和我一样用的 Linux,那么很大概率会遇到 device busy 的报错,那是因为 gpg-agent 和它打架了。这时候你只要 killall gpg-agent 就好了。

Web Console 目前不支持 OATH (TOTP/HOTP) 的增删,需要使用其他工具写入。

这个功能在做了.jpg
在这之前请用 ykman 或者 yubico authenticator

使用 ykman 命令来操作,需要 -r canokey 参数来指定 reader。OpenPGP 相关设置也可以直接用 gpg --edit-card 来操作。


  1. RFE: cryptsetup: support automatic LUKS header FIDO2 param discovery even if multiple FIDO2 tokens are enrolled  ↩︎

  2. FIDO2 fallback to password  ↩︎

  3. USB - Web APIs | MDN  ↩︎

Built with Hugo
主题 StackJimmy 设计