Logowanie bez hasła: jak passkeys rozpoznają właściwą stronę i użytkownika

Logowanie bez wpisywania hasła może wyglądać podejrzanie prosto. Strona prosi o odcisk palca, rozpoznanie twarzy albo kod PIN urządzenia, po czym od razu otwiera konto. Nie dostaliśmy jednorazowego kodu, nie przepisaliśmy tajnego ciągu i nie odpowiedzieliśmy na pytanie bezpieczeństwa. Mimo to serwis potrafił sprawdzić, że jesteśmy właściwą osobą.

Za takim procesem coraz częściej stoi passkey, po polsku nazywany kluczem dostępu. Nie jest to hasło zapisane w telefonie i automatycznie wklejane do formularza. To para powiązanych ze sobą kluczy kryptograficznych oraz protokół, który pozwala potwierdzić posiadanie jednego z nich bez ujawniania go stronie. Dzięki temu wyciek bazy serwisu nie daje przestępcy gotowej tajemnicy do wpisania w oknie logowania.

Sprzętowy klucz bezpieczeństwa USB-C i NFC leżący obok zwykłego klucza dla porównania rozmiaru
Sprzętowy klucz bezpieczeństwa jest jednym z urządzeń, które mogą pełnić funkcję uwierzytelniacza. Fot. Daniel Aleksandersen, Wikimedia Commons, CC BY 4.0. Zdjęcie nie zostało zmodyfikowane.

Hasło jest wspólną tajemnicą

W tradycyjnym systemie użytkownik zna hasło, a serwis przechowuje dane potrzebne do sprawdzenia jego poprawności, zwykle bezpieczny skrót wraz z solą. Dobre rozwiązanie nie zapisuje hasła jawnym tekstem, ale nadal opiera się na wspólnej tajemnicy. Użytkownik musi ją podać, a strona musi umieć zweryfikować.

Ten model ma dwie trwałe słabości. Człowiek może wpisać hasło na fałszywej stronie, a po wycieku bazy atakujący może próbować odgadywać słabsze hasła poza serwerem. Dochodzi jeszcze ponowne używanie tych samych ciągów w wielu usługach. Jedno przejęte hasło staje się wtedy kluczem do kilku kont.

Passkey usuwa potrzebę przekazywania wspólnej tajemnicy. Serwis otrzymuje informację wystarczającą do weryfikacji, lecz nie dostaje elementu, którym można później podszyć się pod użytkownika.

Dwa klucze, ale tylko jeden opuszcza urządzenie

Podczas tworzenia klucza dostępu uwierzytelniacz generuje parę asymetryczną. Klucz publiczny trafia do serwisu i zostaje przypisany do konta. Klucz prywatny pozostaje pod kontrolą uwierzytelniacza. Może nim być moduł bezpieczeństwa telefonu lub komputera, menedżer kluczy synchronizujący dane między urządzeniami albo osobny klucz sprzętowy podłączany przez USB lub NFC.

Specyfikacja Web Authentication opracowywana w W3C opisuje klucz prywatny jako związany z konkretnym uwierzytelniaczem i oczekuje, że nie zostanie ujawniony żadnej innej stronie, nawet właścicielowi urządzenia. Publiczna część pary jest zwracana serwisowi podczas rejestracji. Sama nazwa „publiczny” nie oznacza, że klucz ma być opublikowany w internecie. Oznacza, że jego poznanie nie pozwala tworzyć poprawnych podpisów.

Każda witryna otrzymuje odrębny klucz publiczny. Nie ma jednego uniwersalnego passkey, który wysyłamy wszystkim usługom. To ważne również dla prywatności: W3C wymaga, aby dane uwierzytelniające przeznaczone dla różnych stron nie pozwalały łatwo łączyć tożsamości użytkownika pomiędzy serwisami.

Co dzieje się podczas logowania?

Serwer zaczyna od wysłania losowego wyzwania, czyli wartości przygotowanej specjalnie dla bieżącej próby. Przeglądarka przekazuje je uwierzytelniaczowi razem z informacją o stronie, która prosi o logowanie. Użytkownik potwierdza operację odciskiem palca, rozpoznaniem twarzy, kodem PIN albo inną lokalną metodą. Następnie uwierzytelniacz podpisuje wyzwanie kluczem prywatnym.

Serwer sprawdza podpis przy użyciu zapisanego klucza publicznego. Jeśli matematyczna weryfikacja się powiedzie, wiadomo, że odpowiedź utworzył posiadacz właściwego klucza prywatnego. Losowe wyzwanie ma znaczenie, ponieważ przechwyconej odpowiedzi nie da się po prostu odtworzyć przy kolejnym logowaniu. NIST opisuje mechanizm nonce, jednorazowej wartości włączonej do każdej transakcji, jako źródło odporności na ponowne wykorzystanie przechwyconej odpowiedzi.

Strona nigdy nie otrzymuje odcisku palca ani obrazu twarzy. Biometria służy lokalnie do odblokowania uwierzytelniacza. Standard W3C wyraźnie wskazuje, że dane biometryczne nie są ujawniane serwisowi. Witryna dostaje jedynie kryptograficzne potwierdzenie, że urządzenie wykonało wymagane sprawdzenie użytkownika.

Dlaczego fałszywa strona nie wyłudzi klucza?

Hasło można przepisać wszędzie, także do perfekcyjnie skopiowanego formularza pod podobną domeną. Passkey jest natomiast przypisany do konkretnej strony, określanej w WebAuthn jako relying party. Przeglądarka i uwierzytelniacz wspólnie sprawdzają identyfikator domeny. Klucz utworzony dla bank.example nie powinien zadziałać na bank-example.invalid, nawet jeśli wygląd obu stron jest identyczny.

To tak zwane związanie z pochodzeniem i domeną. Według W3C dane uwierzytelniające mogą zostać użyte tylko przez stronę, dla której je zarejestrowano. FIDO Alliance zalicza dzięki temu passkeys do metod odpornych na phishing oraz ataki polegające na masowym sprawdzaniu skradzionych haseł. Użytkownik nie musi sam porównywać każdej litery adresu przed wpisaniem tajemnicy, ponieważ nie istnieje tajemnica, którą można wpisać w obcym formularzu.

Odporność na phishing nie oznacza jednak odporności na każde oszustwo. Przestępca może próbować nakłonić ofiarę do zatwierdzenia innej operacji, przejąć aktywną sesję po zalogowaniu albo wykorzystać słaby mechanizm odzyskiwania konta. Passkey bardzo dobrze chroni etap uwierzytelnienia, ale nie zastępuje aktualnego systemu, ostrożności wobec podejrzanych poleceń i ochrony plików cookie sesji.

PIN urządzenia nie jest nowym hasłem do strony

Podczas logowania komputer może poprosić o PIN. Wygląda to podobnie do wpisania krótkiego hasła, lecz rola kodu jest inna. PIN odblokowuje lokalny uwierzytelniacz. Nie jest wysyłany do serwisu i nie musi być taki sam na innych urządzeniach. Atakujący siedzący po drugiej stronie internetu nie może sprawdzizać kolejnych PIN-ów bez kontaktu z konkretnym sprzętem.

Podobnie działa biometria. Odcisk palca nie staje się kluczem kryptograficznym ani plikiem przesyłanym witrynie. Jest lokalnym czynnikiem aktywującym operację podpisu. Wytyczne NIST dotyczące uwierzytelniaczy kryptograficznych rozróżniają posiadanie klucza od czynnika aktywującego, którym może być sekret lub cecha biometryczna.

Klucz zapisany na jednym urządzeniu czy synchronizowany?

Passkeys występują w dwóch praktycznych odmianach. Dane uwierzytelniające związane z jednym urządzeniem mogą pozostać w kluczu sprzętowym albo chronionym module komputera. Dają dużą kontrolę nad miejscem przechowywania, lecz zgubienie sprzętu wymaga użycia zapasowej metody.

Klucze synchronizowane mogą pojawić się na kilku urządzeniach należących do użytkownika. Dostawca ekosystemu przenosi zaszyfrowany materiał pomiędzy nimi, dzięki czemu wymiana telefonu nie musi oznaczać utraty dostępu. NIST zalicza takie rozwiązania do synchronizowanych uwierzytelniaczy i wskazuje, że prawidłowo skonfigurowane zachowują odporność na phishing, ponieważ każda para pozostaje ograniczona do właściwej domeny. Jednocześnie instytucja zaleca ocenę kompromisu pomiędzy bezpieczeństwem, prywatnością i wygodą.

Synchronizacja przenosi część zaufania na konto u dostawcy platformy i jego procedury odzyskiwania. Klucz sprzętowy ogranicza ten zakres, ale łatwiej go zostawić w domu albo zgubić. Nie ma jednego wariantu najlepszego dla wszystkich. Konto społecznościowe, prywatna poczta i administracyjny dostęp do infrastruktury firmy mogą wymagać różnych decyzji.

Co stanie się po utracie telefonu?

Bezpieczny sposób logowania musi uwzględniać awarię, kradzież i wymianę urządzenia. Przy kluczach synchronizowanych dostęp można zwykle odzyskać na nowym sprzęcie po zalogowaniu do chroniącego je ekosystemu. Przy kluczu związanym z jednym urządzeniem warto wcześniej zarejestrować drugi uwierzytelniacz i przechowywać go osobno.

Dobrym zwyczajem jest dodanie więcej niż jednego passkey do ważnego konta oraz sprawdzenie, jakie metody odzyskiwania oferuje serwis. Jeśli strona nadal pozwala ominąć klucz za pomocą prostego hasła albo łatwego do przejęcia SMS-a, bezpieczeństwo całego konta może zależeć od tego słabszego wyjścia awaryjnego. Sam passkey nie naprawia nieostrożnie zaprojektowanej procedury odzyskiwania.

Czy można już zapomnieć o hasłach?

Jeszcze nie. Nie wszystkie serwisy obsługują klucze dostępu, a część oferuje je tylko jako dodatkową metodę obok hasła. Użytkownik może też posiadać starsze urządzenie bez odpowiedniego oprogramowania. Okres przejściowy oznacza więc mieszankę passkeys, menedżera haseł, kodów jednorazowych i sprzętowych kluczy bezpieczeństwa.

Zmiana jest jednak głębsza niż zastąpienie jednego pola innym. Hasło prosi człowieka o ujawnienie tajemnicy i liczy, że zrobi to we właściwym miejscu. Passkey pozwala urządzeniu udowodnić posiadanie klucza, ale tylko właściwej domenie i tylko po zgodzie użytkownika. To właśnie dlatego logowanie może stać się jednocześnie prostsze i trudniejsze do wyłudzenia.