Blog

Głodny wiedzy? Na evoBlogu czekają artykuły napisane przez naszych specjalistów.

Zastosowanie TOTP w uwierzytelnianiu dwuskładnikowym (2FA)

Co to jest 2FA?

2FA (Two-Factor Authentication) lub w szerszym zakresie MFA (Multi-Factor Authentication) jest sposobem uwierzytelniania wykorzystującym dwa (lub więcej) składników.

Przez uwierzytelnianie rozumiemy proces poświadczenia, że dany użytkownik jest tym, za kogo się podaje. Najpowszechniejszym sposobem jest wykorzystanie loginu i hasła. Jednakże zazwyczaj takie zabezpieczenia są niewystarczające i konieczne jest wprowadzenie dodatkowego składnika.

Uwierzytelnianie 2FA / MFA realizują paradygmat, zgodnie z którym użytkownik musi „wiedzieć coś” (znać hasło) i „mieć coś” (posiadać fizyczny dostęp do dodatkowego środka zabezpieczenia). Bardzo często wprowadza się także czynnik w postaci „być czymś/kimś” (w przypadku zabezpieczeń biometrycznych).

Dlaczego należy korzystać z 2FA?

Biorąc pod uwagę stale zwiększającą się liczbę włamań do systemów informatycznych, krytyczne jest zadbanie o bezpieczeństwo swoich danych. Standardowe rozwiązania oparte tylko o login i hasło nie dają odpowiedniego poziomu zabezpieczeń głównie dlatego, że dosyć łatwo złamać lub przechwycić takie poświadczenia.

Jest bardzo wiele metod, za pomocą których potencjalny atakujący może wejść w posiadanie tego typu danych uwierzytelniających. Mogą zostać wykorzystane metody typu 'brute-force’, które są szczególnie przydatne w przypadku słabych haseł. Mogą być przechwycone za pomocą phishingu. Jeżeli ktoś stosuje w różnych miejscach te same hasła, to wyciek hasła w jednym serwisie umożliwia włamanie do innego. Nierzadko wykorzystywane są metody socjotechniki. To oczywiście tylko nieliczne z całego szeregu sposobów uzyskania nieuprawnionego dostępu.

Zastosowanie 2FA w radykalny sposób zwiększa poziom bezpieczeństwa. Osoba próbująca włamać się do danego systemu musi nie tylko znać login i hasło, ale również mieć dostęp do dodatkowego urządzenia, którym dysponuje użytkownik. Wprowadzenie kolejnego składnika do procesu uwierzytelnienia znacznie zmniejsza prawdopodobieństwo udanego ataku.

Rodzaje 2FA

Implementacja 2FA może być zrealizowana na wiele różnych sposobów. Poniżej znajduje się klika najczęściej wykorzystywanych:

SMS – jedna z najpopularniejszych metod uwierzytelniania dwuskładnikowego. Użytkownik potwierdza proces wprowadzając w aplikacji dodatkowy kod, który został przesłany w wiadomości SMS. Jest to wygodny sposób, jednak wiele osobom nie czuje się komfortowo podając swój numer telefonu.

E-mail – podobnie, jak w przypadku weryfikacji za pomocą SMS, wysyłany jest kod lub link w wiadomości e-mail. Jest to jednak znacznie mniej bezpieczna metoda, niż SMS, ponieważ skrzynki pocztowe są zdecydowanie bardziej narażone na przejęcie.

TOTP – sposób uwierzytelniania wykorzystujący kody generowane za pomocą algorytmów bazujących na bieżącym czasie. Kody te są generowane w zewnętrznych aplikacjach i nie wymagają podania przez użytkownika numeru telefonu. Podczas procesu logowania niezbędny jest dostęp do urządzenia (np. smartfonu), na którym generowane są wspomniane kody.- U2F – uwierzytelnienie wykorzystujące zewnętrzny klucz sprzętowy U2F (Universal 2nd Factor). Jest to zdecydowanie najbezpieczniejsza metoda, jednak użytkownik musi posiadać fizyczny token, co wiąże się z dodatkowymi kosztami.

Jak działa TOTP?

Algorytm TOTP (czyli Time-Based One-Time Password) generuje jednorazowe hasła wykorzystując w tym celu aktualny czas. Szczegółowy opis został opisany w osobnym artykule. Ponieważ jego zasada jest dokładnie znana i zdefiniowana przez odpowiedni standard (RFC 6238), to został on zaimplementowany w wielu niezależnych aplikacjach generujących kody dostępu.

Użytkownik, który chce korzystać z tej metody uwierzytelniania musi na swoim urządzeniu (np. smartfonie) zainstalować jedną z takich aplikacji. Przykładami takich narzędzi są np. Microsoft Authenticator, Google Authenticator lub Authy. Ważne jest to, że każdy z tego typu program może służyć do niezależnego zabezpieczenia wielu różnych serwisów, generując niezależnie dla każdego z nich osobne kody dostępu.

Szukasz wykonawcy, który jakość kodu stawia na pierwszym miejscu?

Zapraszamy do bezpłatnej konsultacji – porozmawiamy i sprawdzimy, czy możemy w tym pomóc.

Najczęstsza implementacja 2FA z wykorzystaniem TOTP wygląda w taki sposób, że w zabezpieczanym serwisie generowany jest kod QR, który następnie jest skanowany przez aplikację implementującą TOTP (np. wspomniany Google Authenticator). Od tego momentu aplikacja co określony czas (np. 30 sekund) generuje nowy kod, który należy wprowadzić podczas logowania. Cały proces jest bardzo prosty i szybki.

Podczas procesu konfiguracji (gdy skanowany jest kod QR) wyświetlane są najczęściej także dodatkowe kody bezpieczeństwa, które należy zapisać na wypadek utraty urządzenia generującego kody.

Ważną cechą tego typu rozwiązania jest to, że działa ono off-line, bez połączenia z zabezpieczanym serwisem. Na podstawie algorytmu TOTP oraz aktualnego czasu, zabezpieczany serwis wie, jakiej wartości spodziewa się w danym momencie. Dzięki temu wyeliminowana jest możliwość przechwycenia kodu wysyłanego do użytkownika.

TOTP stanowi bardzo dobry kompromis pomiędzy bezpieczeństwem a wygodą i kosztami. Bezpieczniejszym rozwiązaniem jest z pewnością U2F jest bezpieczniejsze, ale wymaga klucza sprzętowego.

Czy TOTP jest bezpieczniejsze od SMS?

Weryfikacja SMS jest obecnie jedną z najpowszechniejszych metod stosowanych w uwierzytelnieniu dwuskładnikowym. Jest to efektem łatwej dostępności takiego rozwiązania dla użytkowników, którzy nie muszą podejmować żadnej dodatkowej czynności, żeby korzystać z tego typu zabezpieczenia (oprócz podania numeru telefonu).

Popularność tego sposobu oraz wykorzystanie niezależnego kanału komunikacji powoduje, że zastosowanie SMS ma opinię bardzo bezpiecznego rozwiązania. Czy tak jest rzeczywiście? I jak to wygląda w porównaniu do TOTP?

Przede wszystkim w przypadku TOTP, kod weryfikacyjny nie jest przesyłany do użytkownika, ale jest wyliczany bezpośrednio na urządzeniu danej osoby. W ten sposób eliminuje się miejsce, gdzie kod mógłby być przechwycony.

W przypadku SMS kod jest wysyłany w treści wiadomości. Niezależny kanał komunikacji zwiększa poziom bezpieczeństwa, jednak nie chroni przed przechwyceniem SMS, co może być zrealizowane na kilka różnych sposobów. W tym celu może być zastosowany duplikat karty SIM lub też wiadomości SMS mogą zostać przekierowane na inny numer. Wiadomości mogą być także przechwycone przez aplikacje trzecie, które użytkownik nieświadomie zainstalował.

Słabym punktem, w przypadku weryfikacji za pomocą SMS, jest także protokół SS7, który stosowany jest w sieciach telekomunikacyjnych. Powstał on w latach osiemdziesiątych ubiegłego wieku i nie był projektowany do zastosowań związanych z bezpieczeństwem. W związku z tym posiada sporo luk, które mogą być wykorzystywane podczas potencjalnego ataku.

Brak przesyłania kodu w przypadku TOTP zwiększa poziom bezpieczeństwa w stosunku do SMS. Oczywiście, mamy tu na myśli przypadek wysyłania tej danej do użytkownika. Kod ten musi być następnie wprowadzony w serwisie, do którego dana osoba próbuje się zalogować i w tym miejscu obie te metody zabezpieczenia są narażone na ataki wykorzystujące phishing (przed którym chroni token sprzętowy U2F).

Wiele osób nie czuje się komfortowo podając numer telefonu w serwisach, których jeszcze nie zna i nie ma pełnego zaufania. Często zdarza się tak, że potencjalni użytkownicy rezygnują z planów korzystania z danego serwisu, jeżeli muszą podać swój numer. Implementacja 2FA z wykorzystaniem TOTP eliminuje tego typu niedogodność.

Realizacja w danym serwisie 2FA za pomocą SMS zwiększa koszty utrzymania serwisu ze względu na konieczność ponoszenia dodatkowych opłat związanych z wysyłką wiadomości. Wdrożenie uwierzytelniania dwuskładnikowego za pomocą TOTP zmniejsza późniejsze koszty utrzymania.

Podsumowanie

Wdrożenie w danym serwisie internetowym 2FA za pomocą TOTP zwiększa w sposób istotny poziom bezpieczeństwa użytkowników nie narażając ich na konieczność poniesienia dodatkowych kosztów.

Tego typu uwierzytelnienie może być zastosowane w większości serwisów i nie generuje później dodatkowych kosztów związanych z obsługą bramek SMS.

Przed wyborem mechanizmów uwierzytelniania dla Twojej aplikacji i zabezpieczeniem jej danych, warto skonsultować się z ekspertami w dziedzinie bezpieczeństwa.


Zachęcamy do darmowej konsultacji z naszymi specjalistami, aby dowiedzieć się, które rozwiązania 2FA najlepiej będą odpowiadać Twoim potrzebom.

{Również może Ci się spodobać}