Przejdź do treści
Uwierzytelnianie

FIDO2

FIDO2 to otwarty standard uwierzytelniania opracowany przez FIDO Alliance, umożliwiający bezhasłowe logowanie przy użyciu kluczy kryptograficznych, biometrii lub fizycznych kluczy bezpieczeństwa. Jest następcą standardów U2F i UAF.

Co to jest FIDO2?

Definicja FIDO2

FIDO2 (Fast Identity Online 2) to otwarty standard uwierzytelniania opracowany przez FIDO Alliance we współpracy z W3C. Umożliwia bezhasłowe, odporne na phishing uwierzytelnianie przy użyciu kryptografii klucza publicznego, biometrii lub fizycznych kluczy bezpieczeństwa.

Komponenty FIDO2

WebAuthn (Web Authentication API)

Standard W3C do uwierzytelniania w przeglądarkach:

  • API JavaScript dla stron internetowych
  • Obsługa przez wszystkie główne przeglądarki
  • Komunikacja z authenticatorami

CTAP (Client to Authenticator Protocol)

Protokół komunikacji między urządzeniem a authenticatorem:

  • CTAP1 - kompatybilność wsteczna z U2F
  • CTAP2 - pełna funkcjonalność FIDO2

Jak działa FIDO2?

Proces rejestracji

1. Użytkownik wybiera "Zarejestruj klucz bezpieczeństwa"
2. Serwer wysyła challenge (losowe dane)
3. Authenticator generuje parę kluczy (publiczny + prywatny)
4. Klucz prywatny pozostaje na urządzeniu
5. Klucz publiczny jest wysyłany do serwera
6. Serwer zapisuje klucz publiczny dla użytkownika

Proces logowania

1. Użytkownik podaje nazwę użytkownika
2. Serwer wysyła challenge
3. Authenticator podpisuje challenge kluczem prywatnym
4. Podpis jest weryfikowany kluczem publicznym na serwerze
5. Użytkownik jest zalogowany

Typy authenticatorów

Roaming Authenticators (zewnętrzne)

Fizyczne klucze bezpieczeństwa:

ProducentModelCechy
YubicoYubiKey 5USB-A/C, NFC, biometria
GoogleTitanUSB-C, NFC, Bluetooth
FeitianePassUSB, NFC
SoloKeysSolo V2Open source

Platform Authenticators (wbudowane)

Authenticatory zintegrowane z urządzeniem:

  • Windows Hello - biometria, PIN
  • Touch ID / Face ID - Apple devices
  • Android Biometrics - fingerprint, face
  • Passkeys - synchronizowane między urządzeniami

Passkeys - ewolucja FIDO2

Co to są Passkeys?

Passkeys to implementacja FIDO2 z synchronizacją:

  • Przechowywane w chmurze (iCloud, Google)
  • Synchronizowane między urządzeniami użytkownika
  • Backup i recovery
  • Pełna kompatybilność z FIDO2

Passkeys vs tradycyjne klucze FIDO2

AspektKlucze FIDO2Passkeys
PrzechowywanieFizyczne urządzenieChmura + urządzenie
SynchronizacjaBrakAutomatyczna
BackupBrak (celowo)Tak
PrzenośnośćWymaga kluczaKażde urządzenie
BezpieczeństwoBardzo wysokieWysokie

Bezpieczeństwo FIDO2

Odporność na ataki

Phishing:

  • Origin binding - klucz działa tylko na zarejestrowanej domenie
  • Atakujący nie może przechwycić credentials

Man-in-the-Middle:

  • Kryptograficzna weryfikacja serwera
  • Challenge-response uniemożliwia replay

Credential stuffing:

  • Unikalne klucze dla każdego serwisu
  • Brak współdzielonych sekretów

Brute force:

  • Klucze kryptograficzne (nie hasła)
  • Ograniczenia prób (lockout)

Model bezpieczeństwa

Klucz prywatny nigdy nie opuszcza authenticatora

Serwer przechowuje tylko klucz publiczny

Nawet przy wycieku bazy - brak zagrożenia

FIDO2 vs inne metody

FIDO2 vs hasła

AspektHasłaFIDO2
PhishingPodatneOdporne
ReuseCzęsty problemNiemożliwy
Brute forceMożliwyNiemożliwy
WygodaSłabaBardzo dobra
WyciekiDuże ryzykoBrak ryzyka

FIDO2 vs SMS/TOTP

AspektSMS/TOTPFIDO2
PhishingPodatne (real-time)Odporne
SIM swapPodatne (SMS)Odporne
WygodaŚredniaDobra
KosztySMS ma kosztyJednorazowy zakup

Implementacja FIDO2

Wsparcie przeglądarek

  • Chrome 67+
  • Firefox 60+
  • Safari 13+
  • Edge 18+

Platformy

  • Windows 10/11 (Windows Hello)
  • macOS Big Sur+ (Touch ID)
  • iOS 14+ / Android 7+

Przykład implementacji (JavaScript)

Rejestracja:

const credential = await navigator.credentials.create({
    publicKey: {
        challenge: serverChallenge,
        rp: { name: "Example Corp" },
        user: {
            id: userId,
            name: "user@example.com",
            displayName: "User"
        },
        pubKeyCredParams: [
            { type: "public-key", alg: -7 },  // ES256
            { type: "public-key", alg: -257 } // RS256
        ],
        authenticatorSelection: {
            userVerification: "preferred"

});

Logowanie:

const assertion = await navigator.credentials.get({
    publicKey: {
        challenge: serverChallenge,
        allowCredentials: [{
            type: "public-key",
            id: credentialId
        }]

});

Przypadki użycia

Enterprise

  • Logowanie do stacji roboczych
  • VPN i dostęp zdalny
  • Aplikacje wewnętrzne
  • Zgodność z regulacjami (PCI DSS, HIPAA)

Consumer

  • Logowanie do serwisów (Google, Microsoft, GitHub)
  • Bankowość online
  • E-commerce
  • Media społecznościowe

Wysokie bezpieczeństwo

  • Infrastruktura krytyczna
  • Systemy finansowe
  • Administracja publiczna
  • Healthcare

Wyzwania i ograniczenia

Wyzwania

  • Adoption - wymaga wsparcia serwisów
  • Recovery - co gdy zgubisz klucz?
  • Koszt - fizyczne klucze kosztują
  • Edukacja - użytkownicy przyzwyczajeni do haseł

Rozwiązania

  1. Backup authenticator - drugi klucz zapasowy
  2. Recovery codes - jednorazowe kody
  3. Passkeys - synchronizacja w chmurze
  4. Stopniowe wdrażanie - MFA przed passwordless

Przyszłość uwierzytelniania

Trendy

  • Passkeys jako domyślna metoda
  • Eliminacja haseł
  • Biometria + FIDO2
  • Integracja z identity providers

Standardy i regulacje

  • NIST 800-63-4 - rekomenduje FIDO2
  • PSD2/SCA - spełnia wymagania silnego uwierzytelniania
  • Zero Trust - FIDO2 jako fundament

FIDO2 reprezentuje przyszłość uwierzytelniania, oferując znacznie wyższe bezpieczeństwo niż hasła przy jednoczesnej poprawie wygody użytkownika.

Tagi:

fido2 u2f uwierzytelnianie bezhasłowe klucze bezpieczeństwa webauthn

Chcesz obniżyć ryzyko i koszty IT?

Umów bezpłatną konsultację - odpowiemy w ciągu 24h

Odpowiedź w 24h Bezpłatna wycena Bez zobowiązań

Lub pobierz bezpłatny przewodnik:

Pobierz checklistę NIS2