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 会记录本地的私钥和智能卡卡号的关系,而且只能记录一个卡。这样就会出现一个现象,我已经插入一张卡,但系统提示我插另一张卡。

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

bash
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 信息

# 总结

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

USBNFC
FIDO2👍👍
OpenPGP👍👎
PIV
NDEFN/A👍
OATH👍👍
Arch LinuxXiaomi Mi 10S (thyme)
FIDO2systemd 250-4WebAuthn - FIDO2 Example 4.2.1
OpenPGPgnupg 2.2.32-2OpenKeychain: Easy PGP 5.7.5
NDEFN/ANFC Tools 8.6.1
OATHyubioath-desktop 5.1.0-2Yubico 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 来操作。