Generalnie korzystanie wyłącznie z haseł to zły pomysł. Zabezpieczenie w dzisiejszych czasach za pomocą hasła to zdecydowanie za mało, dlatego powinniśmy uruchomić na swoim koncie dwuskładnikowe uwierzytelnianie (2FA – Two-factor authentication). Jak nazwa sugeruje chodzi o potwierdzenie naszej tożsamości drugim składnikiem.

Jeśli włączysz weryfikację dwuetapową dla swojego konta, za każdym razem, gdy będziesz się logować oprócz podania hasła będziesz musiał wykonać dodatkowy krok weryfikacyjny. Generalnie wyróżniamy 5 możliwych składników:

  • coś co wiemy – hasło
  • coś co mamy – token 
  • coś czym jesteśmy   faceID, tęczówka, skaner linii papilarnych 
  • coś gdzie jesteśmy – pozwalamy logować się wyłącznie z biura 
  • coś co robimy – musimy wykonać jakąś czynność

Najpopularniejszym rozwiązaniem jest połączenie hasła (coś co wiemy) oraz jednorazowych kodów (coś co mamy – np. telefon z aplikacją). Nawet jeśli przestępcy uda się wyłudzić nasze hasło, to bez drugiego składnika nie uda mu się zalogować na konto. A zdobycie go jest dużo trudniejsze.

W ramach ciekawostki: 2FA możemy wykorzystać przeciwko właścicielowi konta. Jeśli nie miał on włączonego dwuskładnikowego uwierzytelnienia, a udało nam się przejąć jego konto to możemy mu je włączyć. Ale… podając nasz numer telefonu / podpinając nasz Yubikey. Wymusi to na nim konieczność kontaktu z supportem, co da nam trochę czasu na operacje na jego koncie.

Uwierzytelnianie dwuskładnikowe

Zasadniczo istnieją dwa najpopularniejsze rodzaje implementacji 2FA: oparte na czasie jednorazowe hasło (TOTP) i uniwersalny drugi czynnik (U2F).

Time-based One-time Password (TOTP) jest tym popularniejszym wariantem. Jego działanie polega na konieczności potwierdzenia naszego logowania drugim składnikiem w postaci jednorazowego kodu. Zazwyczaj realizowane jest to poprzez wiadomości SMS, bądź aplikację, taką jak Google Autenthicator.

Czyli wpisujemy login oraz hasło, a następnie musimy wpisać kod, który wygenerowaliśmy / otrzymaliśmy. Dopiero po takiej operacji zostaniemy uwierzytelnieni. Z definicji, poświadczenie TOTP jest ważne tylko dla jednego logowania, zanim stanie się nieważne.

Zasada działania

Hasło jednorazowe (TOTP) weryfikuje tożsamość na podstawie wspólnego sekretu. Posiada go zarówno użytkownik jak i usługodawca. Podczas logowania do witryny na podstawie wspólnego sekretu oraz aktualnego czasu generujemy unikalny kod. Serwer robi to samo, bazując na tym samym sekrecie, aby następnie porównać obie wartości.

Niestety, ale rozwiązanie to ma pewne wady. Technologia wymaga przechowywania sekretów na serwerze, dodając ryzyko ataku. Atakujący, który wykradnie wspólny sekret może wygenerować kod w dowolnym momencie. Stanowi to poważny problem, jeśli przestępcy uda się wykraść bazę danych.

Rozwiązaniem na problemy jednorazowych kodów jest U2F.

U2F (Universal 2nd Factor) – jak działa?

U2F to otwarty standard autentykacyjny, który zapewnia urządzeniom bezpieczny dostęp do serwisów. Działa na każdym systemie operacyjnym, nie wymaga sterowników ani dodatkowego oprogramowania. Twórcami U2F jest Google oraz Yubico.

Całość działania opiera się na użyciu klucza PGP o szyfrowaniu RSA 4096. Urządzenie podczas logowania weryfikuje adres URL dzięki czemu nie będziemy mogli zalogować się w fałszywym serwisie. W przeciwieństwie do TOTP, użytkownik jest jedynym, który zna sekret (klucz prywatny).

Zasada działania

Nie będę zagłębiał się mocno w techniczne działanie tej technologii. Po szczegóły odsyłam do źródła [1],[2]. W artykule zamieściłem pomocne infografiki.


Czyli logujemy się, wsadzamy klucz, naciskamy przycisk na obudowie i gotowe. Jesteśmy zalogowani. W momencie przyłożenia palca do klucza generowany jest ładunek elektrostatyczny, który aktywuje klucz.

Kiedy przypisujemy urządzenie do konta generowana jest para kluczy, co pozwala nam korzystać z klucza z dowolną ilością usług. Klucz prywatny przechowywany jest na Yubikeyu, a klucz publiczny na serwerze. Dodatkowo podczas dodawania urządzenia generowany jest KeyHandle, który również wysyłany jest do usługodawcy. KeyHandle zawiera informacje o stronie internetowej (protokół, adres oraz port).

Logowanie

Gdy wejdziemy na stronę logowania, po przesłaniu loginu oraz hasła, przeglądarka od serwera otrzymuje KeyHandle dla danego użytkownika. W tym momencie wyświetli się komunikat z prośbą o naciśnięcie przycisku na urządzeniu. Po wciśnięciu, Yubikey sprawdza, czy ten KeyHandle odpowiada temu, który został zapisany dla tej nazwy strony (wysyłanej przez przeglądarkę).

Gdyby się nie zgadzał, klucz po prostu nie odpowiada, a więc uwierzytelnienie nie powiedzie się. Właśnie w ten sposób jesteśmy chronieni przed phishingiem.

Zalety

U2F zapewnia wiele korzyści w kontekście bezpieczeństwa w porównaniu z jednorazowymi kodami. Tak jak wspomniałem wyżej, najważniejszą zaletą jest ochrona przed phishingiem.

Jest on łatwy w użyciu, konfiguracji, szeroko wspierany oraz pozwala na obsługę nielimitowanej ilości usług obsługiwanych przez jedno urządzenie.

Poza tym, ponieważ mamy dedykowane, bezpieczne urządzenie, nawet jeśli Twój komputer zostanie zainfekowany złośliwym oprogramowaniem, napastnik nie będzie mógł ukraść sekretu z urządzenia.

Korzystanie z kryptografii asymetrycznej (klucz prywatny i publiczny) oznacza, że nawet jeśli atakujący w jakiś sposób zdołał wykraść twój klucz publiczny z serwera, nadal nie byłby w stanie użyć go do podpisania wyzwania i zalogowania się.

U2F chroni również Twoją prywatność: nic nie identyfikuje do kogo należy klucz.

Wszystko ma wady

Niektóre przeglądarki oraz oprogramowanie nie wspiera standardu U2F. Aktualnie z klucza możecie skorzystać jedynie w Chrome, Firefoxie oraz Operze. Safari oraz pozostałe przeglądarki niestety nie są kompatybilne.

Dla niektórych minusem może być konieczność noszenia urządzenia przy sobie. Ale wystarczy np. przypiąć go do kluczy od domu.

Wadą może być również cena. W momencie pisania artykułu wynosi ona około 200 zł. Oczywiście możemy znaleźć tańsze alternatywy niż Yubikey (kosztujące od kilku do kilkunastu dolarów).

Co jeśli zgubię klucz?

Jeśli serwis wspiera alternatywne metody logowania problemu nie ma. Wystarczy, że wcześniej skonfigurowałeś np. kody SMS, bądź wydrukowałeś kody zapasowe. Jeśli jednak strona nie wspiera alternatywnych metod możesz podpiąć do konta drugi klucz, który odpowiednio zabezpieczysz fizycznie (chowając go w bezpieczne miejsce). Oczywiście generuje to dodatkowe koszty.

Jeśli nie posiadasz ani kodów zapasowych ani drugiego klucza prawdopodobnie będziesz musiał zgłosić się do supportu. Naturalnie może być to czasochłonne.

Chcę wdrożyć U2F na swojej stronie

Yubico udostępnia dokumentację oraz API co pozwoli deweloperom na szybkie wdrożenie U2F. Więcej informacji znajdziesz tutaj.

Praktyka czyni mistrza, czyli Yubikey w akcji!

Pokażę na kilku przykładach jak wygląda procedura przypisania klucza do konta. U2F jest wspierany przez największe usługi, takie jak Facebook, Google, GitHub, Dropbox, OneLogin, Docker itp.

WordPress

Dostępny jest plugin, który wystarczy skonfigurować, aby połączyć WordPressa z kluczem. Wtyczkę dodajemy do naszej strony, a następnie konfigurujemy konto przypisując do niego klucz. Teraz po standardowym zalogowaniu się będziemy musieli użyć naszego klucza.

Po wprowadzeniu loginu i hasła włóż klucz i przyłóż palec do złotego „przycisku”.

Facebook

Po podpięciu klucza następnym razem, kiedy będziemy chcieli się zalogować zostaniemy poproszeni o dotknięcie urządzenia.

3 KOMENTARZE

  1. U mnie w firmie każdy dev dostał Yubikey

    Nie musimy za każdym razem korzystać z Yubikeya. Przy pierwszym logowaniu możemy zapamiętać przeglądarkę na x dni

    Głównie używam go do logowania na serwery

ZOSTAW ODPOWIEDŹ

Proszę wpisać swój komentarz!
Proszę podać swoje imię tutaj