2

我正在制作一个支持 CTAP BLE 与 WebAuthn 通信的移动身份验证器。我遵循此文档:https ://fidoalliance.org/specs/fido-v2.0-id-20180227/fido-client-to-authenticator-protocol-v2.0-id-20180227.html#ble-protocol-overview

协议概述如下:

  1. Authenticator 发布 FIDO 服务。

  2. 客户端扫描广告 FIDO 服务的身份验证器。

  3. 客户端对认证者进行特征发现。

  4. 如果尚未配对,客户端和验证器应执行 BLE 配对并创建 LTK。Authenticator 应仅允许来自先前绑定的客户端的连接,而无需用户干预。

  5. 客户端检查 fidoServiceRevisionBitfield 特征是否存在。如果是这样,客户端通过写入具有单个位集的值来选择支持的版本。

  6. 客户端读取 fidoControlPointLength 特征。

  7. 客户端注册有关 fidoStatus 特征的通知。

  8. 客户端将请求(例如注册请求)写入 fidoControlPoint 特征。

  9. 可选地,客户端向 fidoControlPoint 特征写入 CANCEL 命令以取消挂起的请求。

  10. Authenticator 评估请求并通过 fidoStatus 特征发送通知来响应。

  11. 协议在以下任一情况下完成:

    • 客户端取消注册有关 fidoStatus 特征的通知,或者:
    • 连接超时并被身份验证器关闭。

在第 8 步,我收到这样的消息:0x83000700030000000000,我明白

0x83 是味精指令

0x0007 为数据长度

00030000000000 是数据

当我收到这样的消息时,我不知道如何响应 WebAuthn,因为第 10 步说“Authenticator 评估请求并通过通过 fidoStatus 特征发送通知来响应”。

4

1 回答 1

2

经过长时间的检查,我找到了答案。原因是我在支持 CTAP1/U2F 的 Android Chrome 上与 WebAuthn 交互。现在,当我在支持 CTAP2 的桌面上使用 Chrome(版本 75)时,它工作正常。

识别 WebAuthn 支持 CTAP2 的要点是 AuthenticatorGetInfo 发送到身份验证器。它是 0x83000104

0x83 是味精指令

0x0001 是内容的长度

04是AuthenticatorGetInfo

在此处输入图像描述

于 2019-05-31T14:44:40.557 回答