Uwierzytelnianie dwuskładnikowe
hejto.plAle dobra dobra, jakie fałszywe strony, jakie klucze, jaka znowu odpowiedzialność, spokojnie zaraz wszystko będzie jasne.
Uwierzytelnianie
Logowanie do serwisu internetowego zaczynamy od podania loginu, dochodzi w ten sposób do procesu identyfikacji, podczas której deklarujemy, że my to my. Znajomość loginu nie jest oczywiście wystarczająca, żeby stwierdzić, że mówimy prawdę, dlatego w dalszej kolejności musimy przedstawić na to dowód.W momencie przedstawiania dowodu rozpoczynamy proces uwierzytelniania. Na tym etapie możemy udowodnić naszą tożsamość na trzy sposoby:
-
Coś, co wiesz.- najczęściej wykorzystywana metoda, podajemy w niej informację, którą w domyśle znamy tylko my, np. hasło.
-
Coś, co masz- używamy przedmiotu, który jest tylko w naszym posiadaniu, np. Token.
-
Coś, czym jesteś- potwierdzamy naszą tożsamość za pomocą np. odcisku palca.
Uwierzytelnianie dwuskładnikowe
Oczywiście nic nie jest doskonałe, hasło, które podajemy na stronie internetowej, może wpaść w niepowołane ręce. Najczęściej możemy je utracić w wyniku wycieków baz danych, phishingu lub na skutek działania złośliwego oprogramowania.Zazwyczaj oznacza to utratę dostępu do konta i wszystkich znajdujących się tam danych, chyba że dodatkowo zabezpieczyłeś je drugim składnikiem, bo to zrobiłeś prawda?
No właśnie niekoniecznie, w 2018 roku Google przyznał, że mniej niż 10% użytkowników korzysta z tego zabezpieczenia na kontach Gmail, dodajmy do tego używanie tego samego hasła na każdej stronie i dostaniemy no cóż, małą katastrofę.
Sprawa wygląda jeszcze gorzej w przypadku kont w mediach społecznościowych, Facebook w 2021 roku zadeklarował, że mniej niż 4% użytkowników zdecydowało się na użycie 2fa.
Utrata dostępu do poczty e-mail oznacza możliwość utraty dostępu do większości kont do niej przypisanych, wystarczy skorzystać z funkcji “zapomniałem hasło”. Dostęp do Facebooka jest równie niebezpieczny, poza ujawnieniem naszych danych i prowadzonych konwersacji, umożliwiamy atakującemu podszywanie się pod naszą osobę. Jesteście przekonani że jeżeli znajomi otrzymają wiadomość z twojego konta, w której prosisz o zapłacenie kodem blik, to nikt z nich nie da się oszukać?
https://kolobrzeg.naszemiasto.pl/uwaga-znow-oszukuja-na-blik-kolobrzezanka-stracila/ar/c1-7858369
A to tylko jedna z możliwości, równie popularne są metody nakłaniające do pobrania złośliwego oprogramowania lub wysłania SMS w celu aktywowania usługi premium, pod pretekstem wspólnej gry, przetestowania oprogramowania, lub zobaczenia czegoś interesującego.
https://geekweek.interia.pl/styl-zycia/ciekawostki/news-znajomy-wyslal-wiadomosc-z-linkiem-do-twoich-zdjec-to-moze-b,nId,6355138
(Napiszcie w komentarzu czy dostaliście kiedyś tego typu wiadomość z konta znajomego.)
Wiele z tych sytuacji można było uniknąć, stosując dwuskładnikowe uwierzytelnianie.
Idea jest prosta, jeżeli ktoś pozna moje hasło, będzie musiał poznać również drugi składnik, aby dostać się na moje konto. Czym może być owy drugi składnik? Opcji jest wiele, postaram się przedstawić najpopularniejsze z nich.
Kody SMS
Szczególnie lubiana przez banki metoda autentykacji, po wpisaniu poprawnego loginu i hasła na podany przy rejestracji numer przychodzi SMS z kodem potwierdzającym.Metoda ta ma pewne plusy, głównie związane z wygodą i prostotą korzystania. Wymaga jedynie aktywnego numeru telefonu, który zdecydowana większość osób posiada zawsze przy sobie.
Do minusów zaliczyć można konieczność znajdowania się w zasięgu sieci komórkowej, jak i podatność na niektóre ataki personalizowane, takie jak np. SIM Swap.
Atak ten polega na podszywaniu się pod inną osobę w rozmowie z pracownikami firmy telekomunikacyjnej, celem wyrobienia duplikatu karty SIM. Zastanawiacie się jak trudne jest przekonanie operatora, do tego, że jesteśmy tym za kogo się podajemy. Cóż w niektórych przypadkach wystarczy znajomość numeru telefonu i numeru pesel ofiary…
https://niebezpiecznik.pl/post/tmobile-duplikat-sim-swap/
Kody e-mail
Metoda bardzo podobna do kodów SMS, z tą różnicą, że dostajemy je na e-mail. W porównaniu z poprzednią opcją pozwala na autentykację nawet jeżeli znajdujemy się poza zasięgiem sieci komórkowej, jest również odporna na ataki typu SIM Swap.Nie zastosujesz jej jednak w momencie kiedy chcesz zabezpieczyć jedno z najważniejszych kont, czyli skrzynkę e-mail.
Aplikacje uwierzytelniające
Zazwyczaj rozumiemy ten termin jako aplikacje wykorzystujące mechanizm TOTP (Time-based one-time password). Metoda jest prosta, w końcowym etapie logowania podajemy dodatkowo kilkucyfrowe hasło wygenerowane przez aplikację. Hasło to zmienia się co określony czas (zazwyczaj 30 sekund).Plusem tego rozwiązania jest to, że urządzenie generujące hasła (np. smartfon) nie musi nawiązywać żadnej komunikacji, ani z siecią komórkową ani nawet z internetem.
Jak to możliwe? Wykorzystywany jest tutaj algorytm HOTP (HMAC-based one-time password).
W momencie aktywowania TOTP, na stronie internetowej, wyświetlany jest kod QR. Kod ten zawiera wspólny tajny klucz, licznik (bezpośrednio powiązany z czasem unix), oraz informacje o użytej funkcji skrótu.
Funkcje skrótu cechują się wysoką nieprzewidywalnością, dzięki czemu można je z powodzeniem wykorzystać przy generowaniu “losowych” wartości, wystarczy wspólny stan początkowy (sekret), identycznie zmieniający się w czasie licznik po stronie serwera jak i aplikacji oraz trochę obliczeń.
(dla zainteresowanych: https://garbagecollected.org/2014/09/14/how-google-authenticator-works/)
Używanie tej metody jest bardzo wygodne, oraz nie powoduje “zaśmiecania” swojego urządzenia otrzymanymi kodami.
Warto zaznaczyć, że w przypadku uszkodzenia smartfona, dostanie się na konto, będzie niemożliwe, chyba że posiadasz kopię zapasową. Niektóre aplikacje takie jak Authy umożliwiają przechowywanie jej na serwerze firmy.
Powiadomienia PUSH
Umożliwia uwierzytelnienie poprzez wysłanie powiadomienia push bezpośrednio do aplikacji na urządzeniu użytkownika. Takie powiadomienie pozwala zobaczyć szczegóły dotyczących logowania (godzina, adres IP, szacunkowa lokalizacja) i zatwierdzić lub odmówić dostępu, zazwyczaj poprzez proste naciśnięcie przycisku.
Klucze U2F
Każda z przedstawionych metod jest dobra. Jeżeli zdecydowałeś się aktywować, dowolny rodzaj uwierzytelniania dwuskładnikowego skokowo zwiększyłeś swoje bezpieczeństwo. Zawsze jednak można pójść dalej.
Otóż problemem zarówno w przypadku przepisywania kodu jak i potwierdzania powiadomienia PUSH, jest brak odporności na bardziej przemyślane próby phishingu, jakie dokładnie?
Atakujący może zwyczajnie dodać na stronie phishingowej pole, w którym poprosi o wpisanie kodu uwierzytelniającego, a w momencie gdy go podamy, zalogować się na nasze konto. Istnieją również narzędzia takie jak np. Modlishka, które mogą łatwo uprościć całą procedurę przy użyciu reverse proxy (przechwytując ruch między użytkownikiem a docelową stroną).
Przed taką próbą oszustwa ochroni nas klucz u2f. Czym jest i jak działa taki klucz?
Zacznijmy od samej idei tego rozwiązania, otóż człowiek się myli, często fałszywe strony wykorzystują różne sztuczki, aby przy nieuwadze, użytkownik nie zauważył, że adres domeny internetowej jest inny niż zwykle. Komputer nie ma takiego problemu, domena heito[.]pl zostanie łatwo odróżniona od prawdziwej hejto[.]pl
Zdając sobie sprawę z przewagi komputera w tej dziedzinie, powstało rozwiązanie mające na celu wykluczyć wpływ człowieka na decyzję o użyciu drugiego składnika logowania.
Istnieje wiele rodzajów kluczy U2F, w tym wpisie w uproszczony sposób skupimy się na ogólnym ich działaniu, w najprostszej występującej postaci. (niektóre mają dodatkowe funkcje, inne działają trochę inaczej).
Klucz U2F wyglądem przypomina pendrive, nie posiada ruchomych części ani nie musi posiadać pamięci nadającej się do zapisywania nowych danych (niektóre mają, ale nie jest to wymagane). Każdy klucz posiada procesor, oraz zapisaną przy jego produkcji niemodyfikowalną tajną wartość. Wartość ta cechuje się również tym, że jej odczytanie jest bardzo trudne (prawie niemożliwe).
(Jeżeli nie wiesz, czym jest kryptografia klucza publicznego/asymetryczna zapraszam do przeczytania wcześniej: https://www.hejto.pl/wpis/o-utajnianiu-wiadomosci-w-komunikacji-bezposredniej))
-
W momencie aktywowania uwierzytelniania, za pomocą klucza U2F, strona internetowa wysyła challenge (“źródło entropii” lub inaczej losowe znaki) do przeglądarki.
-
Przeglądarka internetowa odczytuje “identyfikator” połączenia (protokół, nazwa domeny i port), po czym wysyła tę informację wraz z otrzymanym challenge do klucza.
-
Klucz U2F generuje dwa klucze kryptograficzne, prywatny oraz odpowiadający mu klucz publiczny. Informację, które dostał od przeglądarki (“identyfikator”) oraz klucz prywatny, szyfruje za pomocą tajnej wartości, otrzymanej w fabryce.
-
Klucz U2F wysyła do przeglądarki zaszyfrowaną “paczkę” (w środku jest identyfikator i klucz prywatny), oraz klucz publiczny.
-
Przeglądarka przekazuje dane stronie internetowej.
Jak więc przebiega proces uwierzytelniania?
-
Użytkownik otrzymuje prośbę o włożenie klucza U2F.
-
Przeglądarka pobiera “identyfikator” połączenia.
-
Strona internetowa wysyła do przeglądarki otrzymane przy rejestracji dane: “paczkę” (w środku jest zaszyfrowany identyfikator i klucz prywatny), oraz pewną wiadomość (challenge).
-
Przeglądarka przesyła wszystkie informacje do klucza: “identyfikator”, “paczkę” oraz chellenge.
-
Klucz odszyfrowuje otrzymaną “paczkę” za pomocą tajnej znanej tylko jemu (powstała przy produkcji klucza) wartości, i porównuje znajdujący się w niej identyfikator z tym który otrzymał od przeglądarki. Jeżeli dane się zgadzają, klucz U2F szyfruje za pomocą klucza prywatnego (znajdującego się wcześniej w “paczce”), otrzymany challenge i wysyła go do przeglądarki.
-
Przeglądarka przesyła zaszyfrowany challenge do strony internetowej.
-
Strona internetowa odszyfrowuje wiadomość, używając klucza publicznego (zapisała go przy rejestracji). Jeżeli challenge się zgadza, umożliwia dostęp do konta.
Jeżeli zdecydujesz się na ten sposób uwierzytelniania, pamiętaj, że utrata klucza uniemożliwi logowanie. Większość serwisów pozwala na pobranie jednorazowych kodów, które możesz wydrukować, schować i użyć w awaryjnej sytuacji.
Warto przypomnieć, że uwierzytelnianie dwuskładnikowe ma zastosowanie głównie do ochrony przed phishingiem i wyciekami haseł. W przypadku użycia przez atakującego niektórego rodzaju złośliwego oprogramowania (np. za pomocą cookie stealer,RAT itp.), 2FA nie ochroni nas przed przejęciem konta.