Uwierzytelnianie FIDO z kluczami

Wprowadzenie

Standard uwierzytelniania FIDO (Fast IDentity Online) określa szybki i bezpieczny mechanizm uwierzytelniania użytkowników w celu uzyskiwania dostępu do witryn i aplikacji.

Organizacja FIDO Alliance z przedstawicielami różnych organizacji opracowuje otwarte i skalowalne specyfikacje techniczne, które umożliwiają użytkownikom dostęp do witryn i aplikacji za pomocą wspólnego protokołu. Oznacza to, że każda firma może wykorzystać standardy FIDO do wdrożenia technologii (np. kluczy) do bezpiecznego uwierzytelniania.

Hasło to dane logowania FIDO powiązane z pochodzeniem (witryną lub aplikacją) i urządzeniem fizycznym. Klucze umożliwiają użytkownikom uwierzytelnianie bez konieczności wpisywania nazwy użytkownika i hasła oraz nie są wymagane dodatkowe czynniki uwierzytelniania. Ta technologia ma zastąpić hasła jako główny mechanizm uwierzytelniania.

Dlaczego bezpieczne uwierzytelnianie jest ważne?

Hasła są używane do uwierzytelniania w komputerach od dekad. Uwierzytelnianie na podstawie haseł nie jest jednak najbezpieczniejszą metodą uwierzytelniania, ponieważ bazy danych mogą zostać przejęte, a hasła przechwycone.

Wielu użytkowników loguje się w różnych witrynach przy użyciu tego samego hasła. Oznacza to, że gdy dojdzie do naruszenia bezpieczeństwa jednej witryny, każde inne konto używające tego samego hasła będzie zagrożone. Oznacza to, że nawet jeśli utworzysz bezpieczny system haseł, dla innych użytkowników będzie on narażony na niebezpieczeństwo.

Niektóre witryny i aplikacje wymagają weryfikacji dwuetapowej, wysyłając prośbę o drugie dane uwierzytelniające, które są wysyłane SMS-em, e-mailem, w aplikacji itp. Choć jest to bezpieczniejsze niż samo hasło, ta metoda weryfikacji dwuetapowej jest nadal podatna na phishing, ponieważ użytkownik może być zmuszony do podania szczegółów weryfikacji dwuetapowej na złośliwą stronę.

Jak FIDO zapewnia większe bezpieczeństwo?

Uwierzytelnianie na podstawie FIDO usuwa wiele problemów związanych z uwierzytelnianiem przy użyciu hasła lub uwierzytelnianiem tradycyjnymi. W szczególności:

  • Uwierzytelnianie FIDO używa kryptografii klucza publicznego.
  • FIDO dba o to, aby dane logowania nie były udostępniane złośliwym podmiotom ani innym osobom, które nie są właścicielami takich danych.

Kryptografia klucza publicznego zmniejsza ryzyko naruszenia zabezpieczeń bazy danych. Użytkownik rejestruje się w 1 źródle (witrynie lub aplikacji), co powoduje utworzenie pary kluczy (publiczny i prywatny) na uwierzytelniającym (urządzeniu fizycznym) użytkownika. Klucz publiczny użytkownika jest przechowywany przez serwer pierwotny, ale nie jest on bezużyteczny dla atakującego. Atakujący nie może wyodrębnić klucza prywatnego użytkownika z danych przechowywanych na serwerze, co jest wymagane do ukończenia uwierzytelniania.

W przypadku FIDO użytkownik nie jest odpowiedzialny za potwierdzenie, że witryna lub aplikacja jest faktycznie tym, za kogo się podaje. Użytkownik nie jest też odpowiedzialny za sprawdzanie, czy dane logowania są używane w niewłaściwych miejscach. FIDO wiąże wszystkie dane uwierzytelniające z konkretnym źródłem, co oznacza, że urządzenie (a nie człowiek) jest odpowiedzialne za prawidłową identyfikację witryny lub aplikacji.

Załóżmy na przykład, że użytkownik próbuje zalogować się w aplikacji example.com. Jeśli użytkownik poprosi o dane logowania należące do example.com w phishing-example.com, mechanizm uwierzytelniania odrzuci zaproszenie, chroniąc użytkownika. Proces uwierzytelniania bardzo utrudnia witrynom i aplikacjam wyłudzającym informacje weryfikację innych źródeł.

FIDO i klucze umożliwiają wdrożenie silniejszego uwierzytelniania, które jest nadal łatwe w użyciu i łatwe dla większości użytkowników.

Demo

Co to są klucze?

Hasło to cyfrowe dane logowania zgodne ze standardami FIDO i W3C Web Authentication (WebAuthn). Podobnie jak w przypadku hasła witryny i aplikacje mogą wymagać od użytkownika utworzenia klucza dostępu do konta.

Klucze wymagają odblokowania urządzenia do weryfikacji tożsamości użytkownika. Może to nastąpić za pomocą czujnika biometrycznego (np. odcisku palca lub rozpoznawania twarzy), kodu PIN lub wzoru. Aby wygenerować klucz (jest to para klucz-wartość publiczny-prywatny), użytkownik musi najpierw zarejestrować się w pierwotnym miejscu.

Gdy użytkownik wróci na stronę lub do aplikacji, aby się zalogować, może wykonać te czynności:

  1. Przejdź do aplikacji.
  2. Kliknij Zaloguj się.
  3. Wybierz klucz.
  4. Odblokuj urządzenie, by dokończyć logowanie.

Uwierzytelnianie generuje podpis przy użyciu klucza prywatnego. Ten podpis służy do weryfikowania danych logowania między źródłem a uwierzytelnianiem za pomocą klucza publicznego oraz bez ujawniania klucza prywatnego.

Za pomocą klucza użytkownik może logować się do usług na dowolnym urządzeniu niezależnie od tego, gdzie jest ono zapisane. Na przykład klucz na telefonie komórkowym może służyć do logowania się na stronie na laptopie.

Jak działają klucze?

Klucze są tworzone i synchronizowane w systemie operacyjnym. Niektóre systemy operacyjne mogą umożliwiać automatyczną synchronizację kluczy między urządzeniem z Androidem a urządzeniem z Chrome OS zalogowanym na to samo konto Google.

Klucze są powiązane z systemami operacyjnymi, ale użytkownik może ich używać na telefonie, gdy loguje się na laptopie. Klucze są tworzone zgodnie ze standardami FIDO i W3C, więc mogą je wyświetlać wszystkie przeglądarki. Na przykład site.example odwiedza swojego Chromebooka. Ten użytkownik zalogował się wcześniej w aplikacji site.example na swoim urządzeniu z iOS. Pojawi się prośba o potwierdzenie tożsamości na urządzeniu z iOS. Zazwyczaj site.example tworzy nowy klucz użytkownika na Chromebooku użytkownika, więc ten numer nie będzie już potrzebny do logowania się w przyszłości.

Klucze są w pełni szyfrowane. To oznacza, że chociaż Google jest odpowiedzialny za synchronizację ich z różnymi urządzeniami z Androidem, nie może ich odczytać ani w inny sposób odczytać tych danych.

Proces uwierzytelniania

Wygląd okna uwierzytelniania.

Aby wdrożyć klucze w witrynie lub aplikacji, zapoznaj się z tymi zagadnieniami:

  • Authencjonatory to fizyczne urządzenia należące do użytkownika, które przechowują klucze i pozwalają zidentyfikować użytkownika.
  • Strona zależna to Twoja witryna lub aplikacja, która składa się z aplikacji oraz serwera backendu.
    • Aplikacja frontendowa wywołuje interfejsy API, aby wejść w interakcję z modułem uwierzytelniania i zainicjować proces uwierzytelniania.
    • Serwer backendu pobiera obiekty kryptograficzne wygenerowane przez mechanizm uwierzytelniający i weryfikuje je.

Załóżmy na przykład, że użytkownik chce kupić parę butów w sklepie shoes.example. Użytkownik zarejestrował już konto w aplikacji shoes.example przy użyciu telefonu z Androidem i czujnikiem biometrycznym. Użytkownik loguje się w aplikacji shoes.example na swoim urządzeniu z Androidem, odblokowując urządzenie. Następnie shoes.example weryfikuje kryptograficznie podpisane dane logowania dla znanego klucza publicznego tego użytkownika, aby potwierdzić, że jego tożsamość jest dokładna.

Elementy sterujące

Authenticator to urządzenie zgodne ze standardem FIDO, które służy do potwierdzania tożsamości użytkownika. Obejmuje to urządzenia do specjalnych celów (klucze bezpieczeństwa FIDO), telefony komórkowe i inne komputery, które spełniają wymagania mechanizmu uwierzytelniania. Authenticator wykonuje operacje kryptograficzne opisane w standardach FIDO i WebAuthn.

Urządzenie ma dwie role rejestracji i uwierzytelniania:

  • Gdy użytkownik zarejestruje się w organizacji zależnej, urządzenie wygeneruje unikalną parę kluczy publiczny/prywatny. Obejmuje to telefony i komputery użytkownika.
  • Gdy użytkownik w przyszłości będzie logował się do jednostki zależnej, urządzenie wygeneruje podpis, używając klucza prywatnego.

Obie te operacje są wykonywane po potwierdzeniu, że użytkownik jest właścicielem aplikacji. Ta para kluczy jest zarejestrowana z określonym źródłem i może być używana tylko przez dokładne źródło. Jeśli użytkownik trafi na stronę wyłudzającą informacje, dane logowania będą niedostępne.

Urządzenia zgodne z FIDO

Najczęstsze sposoby uwierzytelniania:

  • Platformy uwierzytelniające: są wbudowane w smartfony i komputery. Uwierzytelniające platformy wykorzystują czujnik biometryczny (np. czytnik linii papilarnych lub aparat z rozpoznawaniem twarzy), kod PIN lub wzór. Zakończenie uwierzytelniania wiąże się z odblokowaniem urządzenia, co potwierdza, że użytkownik jest w posiadaniu urządzenia i może potwierdzić swoją tożsamość za pomocą unikalnych danych biometrycznych.
  • Klucze bezpieczeństwa: zwykle są to urządzenia USB z przyciskiem, który umożliwia uwierzytelnianie. Jeśli używasz hasła wraz z hasłem, klucze bezpieczeństwa mogą być jego składnikiem do uwierzytelniania dwuskładnikowego. Najpopularniejszy przykład to klucz bezpieczeństwa Titan lub YubiKey.

Frontend

Aplikacje korzystają z interfejsów API po stronie klienta, takich jak WebAuthn i FIDO2 na Androida, aby tworzyć i weryfikować dane logowania użytkownika za pomocą mechanizmu uwierzytelniania.

Aplikacja przekazuje uwierzytelnianie kryptograficzne wygenerowane przez serwer backendu do uwierzytelniania. Aplikacja wysyła do serwera odpowiedź uwierzytelniającą, która jest podejmowana w ramach tej weryfikacji.

Optymalizacja

Serwer przechowuje dane logowania do klucza publicznego użytkownika i informacje o jego koncie.

Podczas rejestracji i uwierzytelniania serwer generuje test kryptograficzny. W ramach tego testu sprawdzamy, czy podpis wystawiony przez osobę uwierzytelnijącą, która potwierdza, czy użytkownik jest tym, za kogo się podaje.

Najczęstsze pytania

Kto obsługuje klucze?

Klucze są oparte na standardach FIDO, więc działają na Androidzie i w Chrome, a także w wielu innych popularnych platformach i przeglądarkach, takich jak Microsoft Windows, Microsoft Edge, MacOS, iOS czy Safari.

Aby sprawdzić bieżący stan dostępności, zapoznaj się z dokumentacją udostępnioną przez te platformy.

Na urządzeniach z Androidem zamierzamy udostępnić deweloperom pomoc w postaci kodu na koniec 2022 roku.

Co się stanie, jeśli użytkownik zgubi urządzenie?

Klucze utworzone na urządzeniach z Androidem mają kopie zapasowe i są synchronizowane z urządzeniami z Androidem, na których logujesz się na to samo konto Google – w ten sam sposób co hasła są zapisywane w menedżerze haseł.

Oznacza to, że użytkownicy zastępują klucze, gdy zmieniają urządzenie. Aby logować się w aplikacjach na nowym telefonie, wszyscy użytkownicy muszą tylko go odblokować.

Czy użytkownik może używać klucza na telefonie, aby logować się na urządzeniu znajomego?

Tak. Użytkownicy mogą skonfigurować „jednorazowy link” między telefonem a urządzeniem innej osoby do logowania się.

Dalsze kroki

Wykonaj ćwiczenia z programowania:

Więcej informacji:

Otrzymywanie powiadomień: