2019·biometric
Cutting edge

WebAuthn / FIDO2

Криптография на устройстве, привязка к origin → unphishable.

Плюсы
  • +Anti-phishing
  • +Без shared secret
Минусы
  • −Управление credentials
  • −Recovery flow
WebAuthn — Register + Authenticate
BrowserAuthenticatorRPPOST /register/beginPublicKeyCredentialCreationOptionsnavigator.credentials.create(opts)gen ECDSA P-256 keypaircredentialId + publicKey + attestationPOST /register/finish (pub)POST /authenticate/beginchallenge + allowCredentialsnavigator.credentials.get(opts)sign(authData ‖ clientDataHash)assertion (signature)POST /authenticate/finishverify ECDSA с сохранённым публичным ключом200 OK
  1. 1.Browser → RPPOST /register/begin
  2. 2.RP → BrowserPublicKeyCredentialCreationOptions
  3. 3.Browser → Authenticatornavigator.credentials.create(opts)
  4. 4.Authenticator ↺ Authenticatorgen ECDSA P-256 keypair
  5. 5.Authenticator → BrowsercredentialId + publicKey + attestation
  6. 6.Browser → RPPOST /register/finish (pub)
  7. 7.Browser → RPPOST /authenticate/begin
  8. 8.RP → Browserchallenge + allowCredentials
  9. 9.Browser → Authenticatornavigator.credentials.get(opts)
  10. 10.Authenticator ↺ Authenticatorsign(authData ‖ clientDataHash)
  11. 11.Authenticator → Browserassertion (signature)
  12. 12.Browser → RPPOST /authenticate/finish
  13. 13.RP ↺ RPverify ECDSA с сохранённым публичным ключом
  14. 14.RP → Browser200 OK
WebAuthn (ECDSA P-256, демо)

Аутентификатор симулируется в браузере через WebCrypto. Сервер хранит publicKey и сверяет наличие challenge в подписи.

Network · DevTools
Запусти демо — сюда упадут все запросы.
Выбери запрос слева, чтобы посмотреть детали.