[Known Issue] Canokey Pigeon 1.6.2 及以前的固件版本,FIDO 注册后可能无法使用 #19
z4yx
announced in
Announcements
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
问题现象
由于固件bug,这些 Key 有一定概率出现如下故障:在网站注册 FIDO Key 时表现为成功,但是实际产生了无效的密钥数据。随后用该 Key 进行认证时,浏览器报告错误,无法通过认证。
该缺陷不会导致其他安全问题。
规避措施
请用户在注册 Key 后,立即尝试能否正确通过认证(测试时注意保留其他可以通过二步认证的方式)。如果不能通过认证,可以删除该 Key 并重新注册再测试,直到成功通过认证。
受影响固件版本
1.6.2 及以前
修复版本
2.0.0+
详细说明
ECDSA 密钥生成时,可能存在多次迭代,以保证随机数满足算法要求。即下面的循环:
https://github.com/canokeys/canokey-core/blob/0b95f06dabe681eb2230c62d116c99abd01c2f70/applets/ctap/secret.c#L57
当循环到第二次时,
pubkey
变量中存储的KH_KEY
被前一次生成的公钥覆盖,导致第二次生成的 credential 中的 nonce 字段无效。当该 credential 用于认证时,固件用正确的KH_KEY
校验 nonce 字段,发现其错误,于是阻止后续步骤执行,导致认证失败。Beta Was this translation helpful? Give feedback.
All reactions