Authenticator оценивает запрос и отвечает, отправляя уведомления по характеристике fidoStatus - PullRequest
2 голосов
/ 01 апреля 2019

Я делаю мобильный аутентификатор, который поддерживает 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. Аутентификатор объявляет службу FIDO.

  2. Клиент выполняет поиск средства проверки подлинности, рекламируя службу FIDO.

  3. Клиент выполняет обнаружение признаков на устройстве проверки подлинности.

  4. Если еще не было сопряжено, клиент иАутентификатор ДОЛЖЕН выполнить сопряжение BLE и создать LTK.Аутентификатор ДОЛЖЕН разрешать подключения только от ранее связанных клиентов без вмешательства пользователя.

  5. Клиент проверяет, присутствует ли характеристика fidoServiceRevisionBitfield.Если это так, клиент выбирает поддерживаемую версию, записывая значение с одним установленным битом.

  6. Клиент считывает характеристику fidoControlPointLength.

  7. Клиентрегистры для уведомлений по признаку fidoStatus.

  8. Клиент записывает запрос (например, запрос на регистрацию) в признак fidoControlPoint.

  9. При желанииклиент записывает команду CANCEL в характеристику fidoControlPoint для отмены ожидающего запроса.

  10. Аутентификатор оценивает запрос и отвечает, отправляя уведомления по характеристике fidoStatus.

  11. Протокол завершается, когда:

    • Клиент отменяет регистрацию для уведомлений по признаку fidoStatus или:
    • Время ожидания истекло и закрывается аутентификатором.

На шаге 8 я получаю сообщение вроде этого: 0x83000700030000000000 , я понимаючто

0x83 - это команда MSG

0x0007 - это длина данных

00030000000000 - это данные

Когда я получаю такое сообщение, я не знаю, чтов ответ на WebAuthn, как указано в шаге 10 «Authenticator оценивает запрос и отвечает, отправляя уведомления по характеристике fidoStatus».

1 Ответ

2 голосов
/ 31 мая 2019

После долгого времени проверки я нашел ответ. Причина в том, что я взаимодействую с WebAuthn на Android Chrome, который поддерживает CTAP1 / U2F. Теперь он работает нормально, когда я работаю с Chrome (версия 75) на рабочем столе, который поддерживает CTAP2.

Точкой для распознавания WebAuthn, поддерживающей CTAP2, является AuthenticatorGetInfo, отправляемая аутентификатору. Это 0x83000104

0x83 - команда MSG

0x0001 - длина контента

04 - AuthenticatorGetInfo

enter image description here

...