新年第一天,去年年底买的 Canokey Pigeon 到货了。不过东西还在学校的菜鸟驿站,所以开箱就只能暂时咕咕咕咕了。
1 月 3 日更新:
终于拿到了鸽了好久的 Canokeys。这里对其做个简单的评测,不会详细介绍每一个功能的使用细节,大部分使用方法可以参考网上的 Yubikeys 指南。
如果你还不知道 Yubikey 、Canokey 或类似的硬件密钥是什么,可以先通过 Zenithal H 同学的博文 『从 Ant Design GitHub 失窃案谈开去:国内有可用的2FA吗』和 公开演讲 『CanoKey 应用、代码与实现』来对其进行了解。
OpenPGP
这是我目前最常用的,用于给我的提交签名,以及保存我的 ssh 私钥。目前 Canokey 准备做备用 key ,所以需要把我的 GPG 密钥导进去。
那么我们先把现在的 ~/.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。
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 信息。
总结
目前已经测试过的功能以及使用的软件如下:
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
来操作。