WebAuthn과 통신하기 위해 CTAP BLE를 지원하는 모바일 인증기를 만들고 있습니다. 이 문서를 따릅니다 : https://fidoalliance.org/specs/fido-v2.0-id-20180227/fido-client-to-authenticator-protocol-v2.0-id-20180227.html#ble-protocol-overview
다음과 같이 프로토콜 개요 :
인증자는 FIDO 서비스를 광고합니다.
클라이언트는 FIDO 서비스를 광고하는 인증자를 스캔합니다.
클라이언트는 인증 자에서 특성 발견을 수행합니다.
아직 페어링되지 않은 경우 클라이언트와 인증자는 BLE 페어링을 수행하고 LTK를 생성합니다. 인증자는 사용자 개입없이 이전에 본딩 된 클라이언트의 연결 만 허용해야합니다.
클라이언트는 fidoServiceRevisionBitfield 특성이 있는지 확인합니다. 그렇다면 클라이언트는 단일 비트 세트로 값을 작성하여 지원되는 버전을 선택합니다.
클라이언트는 fidoControlPointLength 특성을 읽습니다.
클라이언트는 fidoStatus 특성에 대한 알림을 등록합니다.
클라이언트는 요청 (예 : 등록 요청)을 fidoControlPoint 특성에 기록합니다.
선택적으로 클라이언트는 보류중인 요청을 취소하기 위해 fidoControlPoint 특성에 CANCEL 명령을 작성합니다.
인증자는 요청을 평가하고 fidoStatus 특성을 통해 알림을 전송하여 응답합니다.
프로토콜은 다음 중 하나 일 때 완료됩니다.
8 단계에서 다음과 같은 메시지가 나타납니다. 0x83000700030000000000 , 이해합니다.
0x83은 MSG 명령입니다.
0x0007은 데이터 길이입니다.
00030000000000은 데이터입니다.
이러한 메시지를 받았을 때 10 단계에서 "Authenticator가 요청을 평가하고 fidoStatus 특성을 통해 알림을 전송하여 응답합니다."라는 메시지를 표시하므로 WebAuthn에 대한 응답을 알 수 없습니다.
오랜 시간 확인 끝에 답을 찾았습니다. 그 이유는 CTAP1 / U2F를 지원하는 Android Chrome에서 WebAuthn과 상호 작용하고 있기 때문입니다. 이제 CTAP2를 지원하는 데스크톱에서 Chrome (ver 75)으로 작업 할 때 제대로 작동합니다.
WebAuthn이 CTAP2를 지원한다는 것을 인식하는 포인트는 인증 자에게 전송 된 AuthenticatorGetInfo입니다. 0x83000104입니다.
0x83은 MSG 명령입니다.
0x0001은 콘텐츠 길이입니다.
04는 AuthenticatorGetInfo입니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다