Od dawna intensywnie pracujemy nad stworzeniem skuteczniejszych oraz bezpieczniejszych sposobów identyfikacji użytkownika niż login i hasło. Wraz z rozwojem takich technologii jak czytniki linii papilarnych czy skanery siatkówki, jesteśmy w stanie zweryfikować tożsamość równie dobrze jak za pomocą loginu i hasła.
Dodatkowo mając wszystkie te urządzenia wbudowane w telefon komórkowy mamy możliwość bezpiecznego potwierdzenia swojej tożsamość.
Aby jednak ustandaryzować sposób w jaki nasza tożsamość jest weryfikowana, organizacja Fidoalliance.org postanowiła utworzyć jeden wzorzec postępowania w przypadku autentykacji użytkowników, jak i autoryzacji wykonywanych przez nich operacji. Protokoły te otrzymały skróconą nazwę – FIDO.
Jak to działa?
Jednym z protokołów standardu FIDO używanym z autentykacji użytkowników na platformach internetowych jest UAF. Po krótce jego działanie opiera się na następującym algorytmie:
- Urządznie klienckie (zwane dalej Klientem UAF), w czasie rejestracji użytkownika, tworzy w swojej pamięci parę kluczy kryptograficznych (publiczny i prywatny) za pomocą autentykatora. Autentykator umożliwia potwierdzenie tożsamości użytkownika. Może nim być np. czytnik odcisków palca.
- Serwer UAF jest odpytywany o listę grup obsługiwanych autentykatorów. Grupy te mogą określać takie parametry jak: producent autentykatora, obsługiwane przez niego algorytmy itp.
- Po pozytywnym zweryfikowaniu możliwości autentykacji za pomocą tego Klienta UAF, klucz publiczny jest wysyłany w procesie rejestracji na serwer UAF i zapisywany w jego bazie danych, która przechowuje go wraz z nazwą użytkownika, identyfikatorem aplikacji, z której rejestruje się użytkownik.
- Dodatkowo informacje o identyfikatorze klucza w pamięci autentykatora i kilka dodatkowych danych zostaje przesłane do serwera UAF.
Przy próbie autentykacji aplikacja kliencka (zwana dalej Klientem UAF) wysyła prośbę o przysłanie listy zarejestrowanych autentykatorów (urządzenie umożliwiające potwierdzenie tożsamości, na przykład: czytnik odcisków) na serwerze UAF dla danego użytkownika. Po otrzymaniu takiej listy Klient UAF sprawdza, czy posiada parę kluczy odpowiadającą wcześniej zarejestrowanej parze na Serwerze UAF. Jeśli tak, za pomocą klucza prywatnego szyfruje tzw. „challenge” (na przykład kawałek losowo wygenerowanego tekstu – może to być jakikolwiek tekst lub ciąg bajtów) przysłany z serwera. Takim zadaniem może być przykładowo część losowo wygenerowanego tekstu lub ciąg bajtów. Następnie, wraz z innymi informacjami taka zaszyfrowana wiadomość jest przesyłana na serwer.
Serwer sprawdza czy wiadomość, którą otrzymał jest zaszyfrowana kluczem, który został zapisany w trakcie procesu rejestracji. Jeśli tak, użytkownik jest pozytywnie weryfikowany i proces autentykacji przebiega pomyślnie.
Co w tym fajnego?
Wiele osób może się zastanawiać czy ten sposób autentykacji jest lepszy niż standardowe login i hasło.
Przede wszystkim jest to sposób, który pozwala uniknąć przechowywania haseł użytkowników lub ich danych na serwerze autentykującym. Wpływa to pozytywnie na bezpieczeństwo aplikacji. Dodatkowo protokół UAF posiada zabezpieczenia przed kradzierzą urządzenia autentykującego, potrafi monitorować ilość autentykacji jaka odbyła się za jego pomocą. Potrafi też w każdej chwili dezaktywować skradziony/zgubiony autentykator, dzięki temu użytkownik nie traci dostępu do swojego konta na danej platformie, a jedynie możliwość potwierdzania swojej tożsamości za pomocą zgubionego autentykatora.
Podsumowując, wraz ze wzrostem dostępności urządzeń autentykujących użytkowników za pomocą czytników biometrycznych, aplikacji na telefonie, skanów siatkówki itp., coraz mniej potrzebujemy haseł, które musimy zapamiętać, a odpowiedzialność za weryfikację możemy przenieść na urządzenia. Pozwala na to m.in. protokół UAF ze zbioru protokołów FIDO. Takie rozwiązanie idealnie sprawdzi się w aplikacjach bankowych, gdzie szczególną uwagę przykłada się do zapewnienia najwyższych standardów bezpieczeństwa. Dużo pewniejsze będzie logowanie się na konto na urządzeniu mobilnym poprzez wykorzystanie odcisku palca czy korzystając z kamerki wbudowanej w laptopa lub komputer skanującej siatkówkę oka.