FIDO2 / WebAuthn
| Po angielsku | WebAuthn / FIDO2 |
|---|---|
| Którą formą pisać | bez tłumaczenia Skrót, nazwa własna albo nazwa standardu — nie tłumaczymy w ogóle. |
| Inne formy | standard logowania bez hasła · klucz bezpieczeństwa (nazwa urządzenia, nie standardu) |
| Kategoria | Kryptografia, tożsamość i uwierzytelnianie |
FIDO2 to zestaw standardów logowania kluczem kryptograficznym, na który składają się specyfikacja W3C WebAuthn i protokół FIDO CTAP [1]. WebAuthn opisuje interfejs przeglądarki, przez który strona tworzy i używa poświadczeń opartych na kluczu publicznym [2]. CTAP opisuje komunikację między komputerem a zewnętrznym urządzeniem uwierzytelniającym [3]. Na FIDO2 opierają się passkeye i sprzętowe klucze bezpieczeństwa [1].
Jak działa
FIDO2 stosuje kryptografię asymetryczną. Przy rejestracji uwierzytelniacz (authenticator) tworzy parę kluczy dla konkretnego serwisu. Klucz publiczny trafia do serwisu, prywatny zostaje w urządzeniu użytkownika [1]. Przy logowaniu serwis wysyła losowe wyzwanie, a uwierzytelniacz odsyła je podpisane kluczem prywatnym. Specyfikacja nazywa tę podpisaną odpowiedź asercją [2].
Strona korzysta z dwóch wywołań: navigator.credentials.create() rejestruje poświadczenie, a navigator.credentials.get() służy do logowania [2]. Przebieg logowania kluczem sprzętowym pokazuje schemat poniżej.
Kluczowe jest powiązanie z domeną. Poświadczenie ma zakres wyznaczony przez identyfikator strony ufającej (RP ID), opartym na domenie, co uniemożliwia użycie go na innej witrynie [2]. Operacje WebAuthn wymagają bezpiecznego kontekstu, czyli HTTPS [2].
Przy rejestracji uwierzytelniacz może dołączyć zaświadczenie (attestation), czyli kryptograficzny dowód swojego pochodzenia i właściwości [2]. Serwis może na tej podstawie sprawdzić, jakiego rodzaju urządzenie rejestruje użytkownik, na przykład gdy dopuszcza tylko klucze sprzętowe określonego typu.
Specyfikacja rozróżnia dwa poziomy udziału człowieka [2]. Obecność użytkownika (user presence) to samo dotknięcie lub inna prosta interakcja. Weryfikacja użytkownika (user verification) to sprawdzenie PIN-u albo biometrii wewnątrz uwierzytelniacza [2]. FIDO Alliance podkreśla, że dane biometryczne pozostają w urządzeniu i nigdy nie są wysyłane do serwera [1].
Odmiany
WebAuthn dzieli uwierzytelniacze na platformowe, wbudowane w urządzenie, i przenośne (roaming), takie jak klucze USB [2]. CISA dodaje, że przenośne łączą się przez USB albo NFC [4]. Specyfikacja CTAP przewiduje trzy transporty: USB HID, NFC i Bluetooth Low Energy [3].
Z punktu widzenia historii standardu ważne są dwa pokolenia protokołu.
| Cecha | U2F (CTAP1) | FIDO2 (CTAP2 i WebAuthn) |
|---|---|---|
| Kodowanie komunikatów | binarne, w stylu APDU [3] | CBOR [3] |
| Rola klucza | drugi składnik po haśle [5] | może zastąpić hasło, z PIN-em [5] |
| Odporność na phishing | tak [5] | tak [4] |
Sekurak opisuje różnicę praktycznie: przy U2F użytkownik podaje login i hasło, a potem potwierdza logowanie kluczem; przy FIDO2 wystarczy klucz i krótki PIN [5]. Ten sam mechanizm stoi za passkeyami. FIDO Alliance wyjaśnia, że passkeye wykorzystują te same standardy FIDO2, a użytkownik zatwierdza logowanie tak, jak odblokowuje urządzenie: biometrią, PIN-em albo wzorem [1]. Różnica dotyczy miejsca przechowywania klucza, a nie protokołu. Logowanie bez hasła należy do rodziny uwierzytelniania bez hasła (passwordless).
W WordPressie
Rdzeń WordPressa nie obsługuje WebAuthn. Formularz logowania przyjmuje nazwę użytkownika i hasło, a klucze FIDO2 dodaje się wtyczkami. Wtyczka WebAuthn Provider for Two Factor rozszerza wtyczkę Two Factor o obsługę WebAuthn i passkeyów [6]. Wymaga WordPressa 6.0, PHP 8.1 i połączenia HTTPS [6]. Obsługuje między innymi Windows Hello, Touch ID, klucze YubiKey i klucze FIDO U2F [6].
Przy wdrożeniu na stronie WordPress trzeba pamiętać o kilku sprawach:
- poświadczenie jest związane z domeną [2], więc przeniesienie strony na nową domenę wymaga ponownej rejestracji kluczy;
- bez HTTPS WebAuthn nie zadziała [2], stąd potrzeba poprawnego certyfikatu SSL/TLS;
- w trybie drugiego składnika konto nadal ma hasło, więc limit prób logowania pozostaje potrzebny;
- XML-RPC i hasła aplikacji to kanały logowania poza formularzem; warto sprawdzić, czy nie pozwalają wejść samym hasłem.
Znaczenie
CISA nazywa uwierzytelnianie FIDO/WebAuthn jedyną szeroko dostępną formą uwierzytelniania odpornego na phishing [4]. W zestawieniu metod uwierzytelniania wieloskładnikowego (MFA) stawia je na szczycie jako „złoty standard” [4]. Według CISA ataki push bombing, przez protokół SS7 i wyłudzenie duplikatu karty SIM nie mają zastosowania do tej metody [4].
Różnica względem kodów jednorazowych jest zasadnicza. CISA opisuje typowy phishing, w którym ofiara wpisuje na fałszywej stronie login, hasło i sześciocyfrowy kod z aplikacji [4]. Kodu nic nie wiąże z domeną, więc pośrednik może go przekazać do prawdziwego serwisu, jak w ataku phishing AiTM (adversary-in-the-middle). Asercja FIDO2 jest związana z RP ID [2], więc na obcej domenie klucz jej nie wyda. Sekurak zauważa, że narzędzia pośredniczące, takie jak Evilginx2, w takiej sytuacji zawodzą [5].
Dobre praktyki
- Zarejestrować co najmniej dwa uwierzytelniacze. Sekurak zachęca do zakupu dwóch kluczy, głównego i zapasowego [5].
- Dla kont administratorów wybrać klucz sprzętowy albo passkey; CISA zaleca migrację do MFA odpornego na phishing przede wszystkim administratorom i innym cennym celom [4].
- Zabezpieczyć procedurę odzyskiwania konta, bo słaby reset hasła omija nawet najlepszy składnik.
- Pamiętać o ograniczeniach. Sekurak podkreśla, że klucze sprzętowe nie chronią przed każdym zagrożeniem, na przykład przed socjotechniką nakłaniającą do instalacji złośliwego oprogramowania [5].
FIDO2 jest jedną z metod MFA i dobrze sprawdza się jako składnik logowania przez SSO.
Historia i przykłady
WebAuthn powstał w FIDO Alliance jako część standardów FIDO2, a publikuje go W3C [4]. Drugi poziom specyfikacji W3C wydało jako rekomendację 8 kwietnia 2021 roku [2]. Wersję 2.1 protokołu CTAP FIDO Alliance opublikowało jako proponowany standard 15 czerwca 2021 roku [3]. W październiku 2022 roku CISA wydała zalecenia wdrażania MFA odpornego na phishing, oparte na FIDO/WebAuthn [4].
Przypisy
6- [1] FIDO2: Web Authentication (WebAuthn) and Client to Authenticator Protocol · FIDO Alliance
- [2] Web Authentication: An API for accessing Public Key Credentials, Level 2 · W3C
- [3] Client to Authenticator Protocol (CTAP), Proposed Standard, June 15, 2021 · FIDO Alliance
- [4] Implementing Phishing-Resistant MFA · CISA
- [5] Poradnik o kluczach sprzętowych na przykładzie YubiKey 5 NFC (2FA, U2F, FIDO2) · Sekurak
- [6] WebAuthn Provider for Two Factor · WordPress.org
Hasła w tym artykule
15Linkują tutaj
21- phishing
- uwierzytelnianie
- przejęcie konta
- CAPTCHA
- smishing
- passkey
- kod jednorazowy
- uwierzytelnianie wieloskładnikowe
- pharming
- atak homograficzny
- phishing AiTM (adversary-in-the-middle)
- MFA fatigue
- man-in-the-middle (MITM)
- wyłudzenie duplikatu karty SIM
- quishing
- uwierzytelnianie dwuskładnikowe
- HSM
- SSO
- identity provider (IdP)
- uwierzytelnianie bez hasła
- uwierzytelnianie biometryczne