Неполная реализация протокола CTAP2 (FIDO2) в Chrome?

Я изучал реализацию протокола CTAP2 с Google Chrome (протокол между Fido Authenticator и Fido Client (например, Chrome)), который должен поддерживаться в Chrome начиная с версии 69.

Таким образом, я сбросил запрос chrome на аутентификатор в двух случаях:

1. U2F (CTAP1) с демонстрационным сайтом yubico.

Здесь все идет как положено, и Chrome следует протоколу CTAP1.

2. FIDO2 / Webauthn (CTAP2) с https://webauthn.org/

И браузер ведет себя странно:

  • Он начинается с следования протоколу CTAP2 путем отправки AuthenticatorGetInfoRequest
  • Аутентификатор отвечает AuthenticatorGetInfoResponse
  • Но затем Chrome переключается на протокол CTAP1, отправляя сообщение с запросом регистрации (U2F_REGISTER)

Это проблема с реализацией Chrome: CTAP2 еще не полностью включен (кажется, он реализован в источниках Chromium)?

Или проблема связана с аутентификатором: отправкой ответа, который заставляет Chrome переключиться на CTAP1?

Или что-то еще целиком?

0 ответов

В AuthenticatorGetInfoRequest аутентификатор должен ответить строковым списком поддерживаемых версий среди "U2F_V2" и "FIDO_2_0". Обратите внимание также, что в случае NFC или CCID аутентификатор только "FIDO_2_0" (CTAP2) должен отвечать непосредственно "FIDO_2_0" по команде SELECT. Я не знаю насчет HID и BLE.

Так что, возможно, ваш аутентификатор перечисляет "U2F_V2" в списке версий протокола в AuthenticatorGetInfoRequest.

Я также полагаю, что кодовая база Chrome по этому поводу развивалась быстро и может быть частичной или не строгой. По моим тестам в начале 2020 года, возможности Chrome CTAP теперь кажутся стабильными и совместимыми.

Другие вопросы по тегам