2

我一直在研究使用 Google Chrome 实现 CTAP2 协议(Fido Authenticator 和 Fido 客户端(例如 Chrome)之间的协议),Chrome从版本 69 起应该支持该协议。

所以我在两种情况下将 chrome 请求转储给了身份验证器:

1. U2F (CTAP1) 与yubico 演示网站

这里一切都按预期进行,chrome 遵循CTAP1 协议

2. FIDO2/Webauthn (CTAP2) 与webauthn.org

浏览器有一个奇怪的行为:

  • 它首先通过发送 AuthenticatorGetInfoRequest 遵循 CTAP2 协议
  • Authenticator 回复 AuthenticatorGetInfoResponse
  • 但随后 Chrome 通过发送注册请求消息 (U2F_REGISTER) 切换到 CTAP1 协议

Chrome 实现是否有问题:CTAP2 尚未完全启用(它似乎在 Chromium 源代码中实现)?

还是来自身份验证器的问题:发送使 Chrome 切换到 CTAP1 的响应?

还是完全不同的东西?

4

1 回答 1

2

在 AuthenticatorGetInfoRequest 中,验证者必须以“U2F_V2”和“FIDO_2_0”之间的支持版本的字符串列表进行响应。还要注意,在 NFC 或 CCID 的情况下,仅“FIDO_2_0”(CTAP2)的身份验证器应在 SELECT 命令上直接回答“FIDO_2_0”。我不知道 HID 和 BLE。

因此,也许您的身份验证器在 AuthenticatorGetInfoRequest 的协议版本列表中列出了“U2F_V2”。

我还想象有关这方面的 Chrome 代码库正在快速发展,可能是部分的或不严格的。根据我在 2020 年初的测试,Chrome CTAP 功能现在看起来稳定且合规。

于 2020-02-14T20:13:41.273 回答