Przejdź do treści
Cyberbezpieczeństwo

FIDO2 — jak działa logowanie bez hasła, klucze bezpieczeństwa i passkeys

Jak działa FIDO2: WebAuthn, CTAP2, para kluczy dla każdej strony i odporność na phishing. Czym różnią się passkeys od kluczy sprzętowych typu YubiKey?

CZCzarek ZawolskiAktualizacja: 7 min czytania
Klucz bezpieczeństwa USB i smartfon używane do logowania bez hasła

W skrócie

  • FIDO2 to otwarty standard FIDO Alliance i W3C składający się z dwóch części: WebAuthn (API w przeglądarce) i CTAP2 (komunikacja z kluczem lub telefonem).
  • Przy rejestracji urządzenie tworzy osobną parę kluczy dla każdej strony; serwer zna tylko klucz publiczny, więc wyciek bazy nie ujawnia niczego, czym da się zalogować.
  • Logowanie polega na podpisaniu jednorazowego wyzwania kluczem prywatnym, a podpis jest powiązany z domeną — dlatego FIDO2 jest odporne na phishing.
  • Passkeys to poświadczenia FIDO2 synchronizowane między urządzeniami (np. przez konto Google lub iCloud); klucze sprzętowe, jak YubiKey, trzymają klucz tylko w jednym urządzeniu.
  • Zawsze zarejestruj co najmniej dwa uwierzytelniacze i zabezpiecz metodę odzyskiwania konta, bo to ona staje się najsłabszym ogniwem.
Spis treści

FIDO2 to standard logowania bez hasła, w którym tożsamość potwierdzasz urządzeniem — telefonem, komputerem z Windows Hello lub Touch ID albo kluczem USB — a nie tajnym ciągiem znaków. Działa w oparciu o kryptografię klucza publicznego: dla każdej strony urządzenie tworzy osobną parę kluczy, klucz prywatny nigdy go nie opuszcza, a serwis przechowuje tylko klucz publiczny.

Dzięki temu FIDO2 rozwiązuje dwa największe problemy haseł: nie da się go wyłudzić na fałszywej stronie i nie da się go wykraść z bazy danych serwisu. Na FIDO2 opierają się passkeys (klucze dostępu), które obsługują dziś m.in. konta Google, Microsoft, Apple i GitHub.

Skąd się wzięło FIDO2

FIDO Alliance to konsorcjum założone w 2013 r. przez firmy z branży płatności i bezpieczeństwa; obecnie należą do niego m.in. Google, Microsoft, Apple, Amazon i producenci kluczy sprzętowych. Pierwsze standardy to UAF (logowanie bez hasła) i U2F (klucz sprzętowy jako drugi składnik), do których powstania przyczyniły się Google i Yubico.

W 2018 r. ogłoszono FIDO2 — następcę obu podejść. Składa się z dwóch specyfikacji:

ElementKto opracowałDo czego służy
WebAuthn (Web Authentication)W3C razem z FIDO AllianceAPI JavaScript w przeglądarce, przez które strona prosi o utworzenie lub użycie poświadczenia
CTAP2 (Client to Authenticator Protocol)FIDO AllianceProtokół, którym przeglądarka lub system rozmawia z uwierzytelniaczem przez USB, NFC lub Bluetooth

FIDO2 nie zostało więc „stworzone przez Yubico”, jak można czasem przeczytać — to otwarty standard wielu firm. Yubico jest jednym z producentów kluczy, które go obsługują.

Jak działa FIDO2 krok po kroku

W procesie biorą udział trzy strony: serwis (w specyfikacji Relying Party), przeglądarka lub system operacyjny oraz uwierzytelniacz — urządzenie przechowujące klucz prywatny.

Rejestracja klucza

  1. Logujesz się do serwisu tradycyjnie i wybierasz „Dodaj klucz dostępu” lub „Dodaj klucz bezpieczeństwa”.
  2. Serwer wysyła losowe wyzwanie (challenge), identyfikator konta i swoją domenę (RP ID).
  3. Przeglądarka przekazuje żądanie uwierzytelniaczowi. Ten prosi Cię o potwierdzenie — dotknięcie klucza, PIN, odcisk palca lub twarz.
  4. Uwierzytelniacz generuje nową parę kluczy przypisaną do tej domeny. Klucz prywatny zostaje w urządzeniu, a klucz publiczny i identyfikator poświadczenia trafiają do serwera.

Logowanie

  1. Serwer wysyła nowe, jednorazowe wyzwanie.
  2. Przeglądarka dołącza do niego domenę, na której faktycznie jesteś, i przekazuje dane uwierzytelniaczowi.
  3. Po Twoim potwierdzeniu uwierzytelniacz podpisuje dane kluczem prywatnym.
  4. Serwer sprawdza podpis kluczem publicznym zapisanym przy rejestracji. Zgodny podpis = zalogowanie.

Podpis tworzony jest najczęściej algorytmem ES256, czyli ECDSA na krzywej P-256 z funkcją skrótu SHA-256. Ponieważ wyzwanie za każdym razem jest inne, przechwycony podpis nie nadaje się do ponownego użycia.

Dlaczego FIDO2 chroni przed phishingiem

Kluczowy jest krok 2 logowania. Przeglądarka sama wpisuje do podpisywanych danych prawdziwą domenę strony, a uwierzytelniacz używa tylko klucza zarejestrowanego dla tej domeny. Jeśli trafisz na goog1e-login.com, klucz dla google.com po prostu nie zostanie użyty — nie ma czego przepisać ani wyłudzić.

To zasadnicza różnica w stosunku do kodów SMS i aplikacji generujących kody TOTP, które oszust może przechwycić w czasie rzeczywistym przez fałszywą stronę pośredniczącą.

Biometria zostaje na urządzeniu

Odcisk palca lub skan twarzy służą wyłącznie do lokalnego odblokowania klucza prywatnego. Serwis dostaje tylko informację, że weryfikacja użytkownika (user verification) się odbyła — nie dostaje żadnych danych biometrycznych.

Rodzaje uwierzytelniaczy: wbudowane, sprzętowe i telefon

TypPrzykładyZaletyWady
Wbudowany w urządzenie (platform authenticator)Windows Hello, Touch ID / Face ID, odblokowanie ekranu w AndroidzieZawsze pod ręką, nic nie trzeba kupowaćZwiązany z jednym urządzeniem lub ekosystemem
Klucz sprzętowy (roaming authenticator)YubiKey, Google Titan, klucze Feitian, Token2Klucz prywatny nie do skopiowania, działa na wielu komputerach, wymagany w części firmTrzeba go mieć przy sobie i kupić zapasowy
Telefon jako uwierzytelniacz (hybrid)Smartfon z Androidem lub iOSLogowanie na cudzym komputerze przez kod QR i BluetoothWymaga włączonego Bluetootha w obu urządzeniach

W trybie hybrydowym komputer wyświetla kod QR, skanujesz go telefonem, a Bluetooth potwierdza, że oba urządzenia są fizycznie blisko siebie. To utrudnia zdalne nadużycia.

Passkeys a klucze sprzętowe — co wybrać

Passkey, po polsku zwykle „klucz dostępu”, to poświadczenie FIDO2, które samo identyfikuje konto — logujesz się bez wpisywania nazwy użytkownika i hasła. Pojęcie spopularyzowali w 2022 r. Apple, Google i Microsoft.

Passkeys występują w dwóch odmianach:

  • synchronizowane — zapisane w menedżerze haseł (Menedżer haseł Google, pęk kluczy iCloud, 1Password, Bitwarden i inne) i dostępne na wszystkich Twoich urządzeniach. Zgubienie telefonu nie oznacza utraty dostępu,
  • przypisane do urządzenia — zapisane na kluczu sprzętowym lub w module TPM jednego komputera. Nie da się ich skopiować, co jest zaletą w firmach o wysokich wymaganiach bezpieczeństwa.

Dla większości osób najwygodniejsze są passkeys synchronizowane w menedżerze, którego już używasz. Klucz sprzętowy ma sens dla kont o najwyższej wartości (poczta główna, konto administratora, menedżer haseł, giełda kryptowalut) oraz tam, gdzie wymaga go pracodawca. Pamiętaj, że klucze sprzętowe mają ograniczoną liczbę miejsc na passkeys — w zależności od modelu i wersji oprogramowania od kilkudziesięciu do około stu.

Praktyczny przegląd kluczy dostępu w popularnych usługach i menedżerach haseł znajdziesz w artykule passkeys — jak działają klucze dostępu.

Jak zacząć korzystać z FIDO2

Ścieżki w serwisach zmieniają się co jakiś czas, ale zwykle opcję znajdziesz w ustawieniach bezpieczeństwa konta:

  1. Konto Google: myaccount.google.com → Bezpieczeństwo → Klucze dostępu i klucze bezpieczeństwa → Utwórz klucz dostępu.
  2. Konto Microsoft: account.microsoft.com → Bezpieczeństwo → Zarządzaj sposobem logowania → Dodaj nowy sposób logowania → Klucz dostępu (twarz, odcisk palca, PIN lub klucz zabezpieczeń).
  3. GitHub: Settings → Password and authentication → Passkeys → Add a passkey.
  4. W Windows 11 zapisane klucze dostępu przejrzysz w Ustawienia → Konta → Klucze dostępu, a PIN klucza sprzętowego zmienisz w Ustawienia → Konta → Opcje logowania → Klucz zabezpieczeń → Zarządzaj.

Ważne: Zarejestruj co najmniej dwa uwierzytelniacze, np. passkey w telefonie i klucz sprzętowy schowany w domu. Jedno urządzenie to ryzyko utraty dostępu do konta po zgubieniu lub awarii.

Ograniczenia FIDO2, o których warto wiedzieć

FIDO2 znacząco podnosi poziom bezpieczeństwa, ale nie rozwiązuje wszystkiego:

  • Odzyskiwanie konta — jeśli serwis pozwala zresetować dostęp SMS-em lub zwykłym hasłem, atakujący spróbuje właśnie tej drogi. Po wdrożeniu passkeys warto usunąć lub wzmocnić słabsze metody.
  • Kradzież sesji — FIDO2 chroni moment logowania. Złośliwe oprogramowanie typu infostealer, które wykrada ciasteczka z przeglądarki, może przejąć już zalogowaną sesję. Więcej o tym mechanizmie w artykule o ataku session hijacking.
  • Zainfekowane urządzenie — jeśli komputer jest pod kontrolą atakującego, może on podsunąć Ci żądanie potwierdzenia w złym momencie. FIDO2 nie zastąpi aktualizacji i ochrony stacji roboczej.
  • Przenoszenie między ekosystemami — przez lata passkeys trudno było przenieść np. z iCloud do innego menedżera. FIDO Alliance opracowała do tego protokół wymiany poświadczeń (Credential Exchange), który stopniowo trafia do systemów i menedżerów haseł.

Hasła na razie nie znikną — wiele serwisów wciąż ich wymaga. Dopóki je masz, twórz je zgodnie z zasadami z poradnika jak stworzyć i zapamiętać bezpieczne hasło i pamiętaj o najczęstszych sposobach kradzieży haseł.

FIDO2 od strony programisty: WebAuthn w przeglądarce

Dla twórców aplikacji webowych FIDO2 to przede wszystkim API navigator.credentials. Rejestracja wygląda w uproszczeniu tak:

const credential = await navigator.credentials.create({
  publicKey: {
    challenge: challengeZSerwera,          // losowe bajty z serwera
    rp: { id: "example.com", name: "Example" },
    user: { id: idUzytkownika, name: "jan@example.com", displayName: "Jan Kowalski" },
    pubKeyCredParams: [
      { type: "public-key", alg: -7 },     // ES256
      { type: "public-key", alg: -257 }    // RS256
    ],
    authenticatorSelection: { residentKey: "required", userVerification: "preferred" }
  }
});

Logowanie to wywołanie navigator.credentials.get() z nowym wyzwaniem i rpId. Weryfikację podpisu, licznika i pochodzenia (origin) wykonuj na serwerze sprawdzoną biblioteką, a nie własną implementacją — zestawienie bibliotek i specyfikacje znajdziesz na stronie FIDO Alliance oraz w dokumentacji WebAuthn na MDN. WebAuthn działa wyłącznie w bezpiecznym kontekście, czyli przez HTTPS (wyjątkiem jest localhost podczas programowania).

Najczęściej zadawane pytania

Co to jest FIDO2 w prostych słowach?

To standard logowania, w którym zamiast hasła używasz urządzenia: telefonu, laptopa z czytnikiem linii papilarnych albo klucza USB. Urządzenie potwierdza Twoją tożsamość kryptograficznie, a hasło nie jest w ogóle potrzebne ani przesyłane.

Czym różni się FIDO2 od passkey?

FIDO2 to nazwa standardu technicznego. Passkey (klucz dostępu) to przyjazna nazwa poświadczenia FIDO2, którym logujesz się bez hasła — może być zsynchronizowane w menedżerze haseł lub zapisane na jednym urządzeniu, np. kluczu sprzętowym.

Czy FIDO2 jest bezpieczniejsze od kodów SMS i aplikacji uwierzytelniających?

Tak. Kody SMS i TOTP można przepisać na fałszywej stronie, a podpis FIDO2 jest powiązany z prawdziwą domeną, więc fałszywa strona go nie wykorzysta. Dodatkowo na serwerze nie ma żadnego sekretu do wykradzenia.

Co się stanie, gdy zgubię klucz FIDO2?

Zalogujesz się drugim zarejestrowanym kluczem lub passkeyem albo przez procedurę odzyskiwania konta. Dlatego zawsze rejestruje się co najmniej dwa uwierzytelniacze, a zapasowy klucz przechowuje w bezpiecznym miejscu.

Czy odcisk palca jest wysyłany do serwisu przy logowaniu FIDO2?

Nie. Biometria służy tylko do odblokowania klucza prywatnego lokalnie na urządzeniu. Serwis dostaje wyłącznie podpis cyfrowy i informację, że weryfikacja użytkownika się odbyła.

CZ

Autor

Czarek Zawolski

Założyciel i redaktor XAD.pl. Pisze o sieciach, bezpieczeństwie IT, administracji systemami Windows i Linux oraz o sprzęcie, który sprawia ludziom problemy na co dzień.