WebAuthn (Web Authentication) to standard i API umożliwiające stronom internetowym korzystanie z bezpiecznego uwierzytelniania bez konieczności przesyłania tradycyjnego hasła.
WebAuthn jest rozwijany przez W3C (World Wide Web Consortium) we współpracy z FIDO Alliance i stanowi jeden z kluczowych elementów ekosystemu FIDO2.
Dzięki WebAuthn użytkownik może logować się do serwisów internetowych za pomocą między innymi:
- klucza bezpieczeństwa,
- telefonu,
- odcisku palca,
- rozpoznawania twarzy,
- PIN-u urządzenia,
- passkey.
Najważniejszą cechą WebAuthn jest wykorzystanie kryptografii klucza publicznego zamiast tradycyjnego przesyłania hasła.
Jak działa WebAuthn?
Podczas rejestracji użytkownika strona internetowa prosi urządzenie o utworzenie nowego poświadczenia.
Urządzenie tworzy parę kluczy kryptograficznych:
klucz prywatny + klucz publiczny
Klucz prywatny pozostaje na urządzeniu użytkownika.
Klucz publiczny zostaje przekazany serwerowi i zapisany przy koncie użytkownika.
Podczas kolejnego logowania serwer wysyła urządzeniu specjalne wyzwanie kryptograficzne (challenge).
Urządzenie potwierdza swoją tożsamość, podpisując wyzwanie kluczem prywatnym.
Serwer sprawdza podpis za pomocą wcześniej zapisanego klucza publicznego.
Jeżeli podpis jest prawidłowy, użytkownik zostaje zalogowany.
WebAuthn a hasło
W tradycyjnym systemie:
użytkownik → wpisuje hasło → serwer je weryfikuje
W WebAuthn:
serwer → wysyła challenge → urządzenie tworzy podpis → serwer weryfikuje podpis
Klucz prywatny nie musi opuszczać urządzenia.
To fundamentalna różnica między WebAuthn a tradycyjnym uwierzytelnianiem opartym na haśle.
Dlaczego WebAuthn jest odporne na phishing?
Jedną z najważniejszych właściwości WebAuthn jest powiązanie poświadczenia z konkretną domeną internetową.
Załóżmy, że prawdziwa strona znajduje się pod adresem:
bank.pl
Przestępca może stworzyć podobnie wyglądającą stronę:
bank-login.pl
i przesłać użytkownikowi link phishingowy.
W przypadku tradycyjnego hasła użytkownik może nie zauważyć różnicy i wpisać dane logowania.
WebAuthn działa inaczej. Poświadczenie utworzone dla prawdziwej domeny nie powinno zostać użyte przez fałszywą domenę.
Dzięki temu WebAuthn jest odporne na klasyczny phishing, w którym przestępca próbuje wyłudzić dane logowania na fałszywej stronie.
WebAuthn a FIDO2
WebAuthn i FIDO2 są bardzo blisko ze sobą związane, ale nie są tym samym.
WebAuthn jest standardem/API umożliwiającym aplikacjom internetowym korzystanie z mechanizmów uwierzytelniania FIDO.
FIDO2 jest szerszym zestawem standardów, który obejmuje między innymi:
- WebAuthn,
- CTAP.
W uproszczeniu:
FIDO2 = WebAuthn + CTAP
WebAuthn odpowiada przede wszystkim za komunikację pomiędzy stroną internetową, przeglądarką i mechanizmem uwierzytelniającym.
CTAP umożliwia natomiast komunikację klienta z zewnętrznym authentikatorem, np. fizycznym kluczem bezpieczeństwa.
WebAuthn a passkeys
Passkeys są jednym z najważniejszych zastosowań WebAuthn.
Umożliwiają logowanie bez wpisywania tradycyjnego hasła.
Użytkownik może na przykład wejść na stronę i potwierdzić logowanie za pomocą:
odcisku palca
lub:
rozpoznawania twarzy
albo:
PIN-u urządzenia.
W tle wykorzystywane są klucze kryptograficzne zgodne z mechanizmami FIDO.
Dzięki temu użytkownik nie musi pamiętać kolejnego hasła.
WebAuthn a biometria
WebAuthn może korzystać z biometrii, ale sama biometria nie jest podstawą działania WebAuthn.
Przykładowo telefon może wykorzystać odcisk palca do potwierdzenia, że właściwa osoba próbuje się zalogować.
Po pozytywnej weryfikacji urządzenie wykorzystuje klucz prywatny do podpisania challenge.
Serwis internetowy nie musi otrzymywać odcisku palca użytkownika.
Oznacza to, że biometria może pozostać lokalnie na urządzeniu.
WebAuthn a klucz bezpieczeństwa
WebAuthn może współpracować z fizycznymi kluczami bezpieczeństwa.
Klucz może być podłączony do komputera przez:
- USB,
- NFC,
- Bluetooth.
Przykładowo podczas logowania użytkownik może zostać poproszony o podłączenie klucza i dotknięcie go.
Klucz wykonuje operację kryptograficzną, a serwer sprawdza jej wynik.
Jest to szczególnie przydatne w przypadku kont wymagających wysokiego poziomu bezpieczeństwa.
WebAuthn a 2FA
WebAuthn może być wykorzystane jako drugi czynnik uwierzytelniania.
Przykład:
hasło + klucz bezpieczeństwa
W takim przypadku WebAuthn stanowi element 2FA.
WebAuthn może jednak również być używane do logowania bez hasła.
Dlatego WebAuthn nie oznacza automatycznie uwierzytelniania dwuskładnikowego.
WebAuthn a MFA
WebAuthn może być również częścią systemu MFA (Multi-Factor Authentication).
Przykładowo przedsiębiorstwo może wymagać:
hasła + authenticatora WebAuthn
lub wykorzystać bardziej zaawansowaną konfigurację uwierzytelniania.
Ważne jest jednak rozróżnienie pomiędzy samą technologią WebAuthn a sposobem jej wykorzystania. WebAuthn jest mechanizmem uwierzytelniania, natomiast to konkretny system określa, ile czynników musi przedstawić użytkownik.
WebAuthn a SMS
WebAuthn zapewnia znacznie lepszą ochronę przed phishingiem niż tradycyjne kody SMS.
Kod SMS może zostać przechwycony lub wyłudzony.
Możliwe są również ataki związane z przejęciem numeru telefonu, np. SIM swapping.
W przypadku WebAuthn nie ma kodu, który użytkownik musi przepisać na stronie internetowej.
Zamiast tego urządzenie wykonuje operację kryptograficzną powiązaną z właściwą domeną.
WebAuthn a aplikacja authenticator
Aplikacje generujące jednorazowe kody, np. kody TOTP, są popularnym sposobem zabezpieczania kont.
Jednak użytkownik musi taki kod przepisać do formularza.
Jeżeli formularz znajduje się na fałszywej stronie, kod może zostać przechwycony przez atakującego.
WebAuthn eliminuje ten problem poprzez kryptograficzne powiązanie uwierzytelnienia z domeną.
Dlatego jest bardziej odporne na phishing niż tradycyjne kody jednorazowe.
WebAuthn w przeglądarce
WebAuthn jest zaprojektowane przede wszystkim z myślą o aplikacjach internetowych.
Nowoczesne przeglądarki mogą korzystać z WebAuthn poprzez odpowiednie API.
Dla użytkownika cały proces może być bardzo prosty:
kliknięcie „Zaloguj za pomocą passkey” → potwierdzenie na urządzeniu → dostęp do konta
Cała złożona operacja kryptograficzna odbywa się w tle.
WebAuthn i kryptografia klucza publicznego
Podstawą WebAuthn jest kryptografia asymetryczna.
Podczas rejestracji powstaje para:
klucz prywatny
oraz:
klucz publiczny.
Klucz prywatny służy do tworzenia podpisów.
Klucz publiczny umożliwia ich weryfikację.
Serwer nie musi znać klucza prywatnego użytkownika.
Ma to ogromne znaczenie w przypadku wycieku bazy danych.
Nawet jeżeli atakujący uzyska dostęp do zapisanych na serwerze kluczy publicznych, nie otrzyma dzięki temu kluczy prywatnych potrzebnych do uwierzytelnienia.
WebAuthn a bezpieczeństwo kont finansowych
WebAuthn może być szczególnie wartościowe w przypadku:
- bankowości internetowej,
- giełd kryptowalut,
- rachunków maklerskich,
- poczty elektronicznej,
- kont administracyjnych,
- usług przechowujących ważne dane.
Im większe konsekwencje przejęcia konta, tym większe znaczenie ma zastosowanie silnego uwierzytelniania odpornego na phishing.
Czy WebAuthn eliminuje hasła?
Może, ale nie musi.
WebAuthn może być używane razem z hasłem:
hasło + WebAuthn
albo jako metoda logowania bezhasłowego:
WebAuthn/passkey → potwierdzenie na urządzeniu → logowanie
To od konkretnej usługi zależy, w jaki sposób WebAuthn zostanie wykorzystane.
Ograniczenia WebAuthn
WebAuthn znacząco poprawia bezpieczeństwo, ale nie eliminuje wszystkich zagrożeń.
Nadal istotne są między innymi:
- bezpieczeństwo urządzenia,
- złośliwe oprogramowanie,
- bezpieczeństwo konta e-mail,
- procedury odzyskiwania konta,
- socjotechnika,
- fizyczna ochrona urządzeń i kluczy bezpieczeństwa.
Szczególnie ważne są mechanizmy odzyskiwania konta. Jeżeli usługa pozwala ominąć silne uwierzytelnianie poprzez słabo zabezpieczoną procedurę odzyskiwania hasła, bezpieczeństwo całego systemu może zostać osłabione.
Podsumowanie
WebAuthn (Web Authentication) to standard/API umożliwiający stronom internetowym korzystanie z bezpiecznego uwierzytelniania opartego na kryptografii klucza publicznego.
Najważniejsze cechy WebAuthn:
- umożliwia logowanie bez tradycyjnego hasła,
- wykorzystuje parę kluczy kryptograficznych,
- klucz prywatny pozostaje na urządzeniu użytkownika,
- jest odporne na klasyczny phishing,
- może współpracować z kluczami bezpieczeństwa,
- może wykorzystywać biometrię urządzenia,
- stanowi jeden z kluczowych elementów ekosystemu FIDO2,
- jest wykorzystywane przez rozwiązania typu passkey.
Najprościej można powiedzieć, że WebAuthn jest mechanizmem, który pozwala stronie internetowej wykorzystać bezpieczne uwierzytelnianie FIDO bez konieczności przesyłania tradycyjnego hasła. Dzięki temu stanowi jeden z fundamentów współczesnego, bezpiecznego logowania w internecie.


