Uwierzytelnianie dwuskładnikowe

Uwierzytelnianie dwuskładnikowe

hejto.pl
Niektórzy mówią, że nie można dawać się oszukać i podać swojego loginu i hasła na fałszywej stronie, ale to nieprawda, można tylko trzeba używać klucza u2f, na tym polega odpowiedzialność.
Ale 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:
  1. Coś, co wiesz.- najczęściej wykorzystywana metoda, podajemy w niej informację, którą w domyśle znamy tylko my, np. hasło.
  2. Coś, co masz- używamy przedmiotu, który jest tylko w naszym posiadaniu, np. Token.
  3. Coś, czym jesteś- potwierdzamy naszą tożsamość za pomocą np. odcisku palca.
Na końcu dochodzi do autoryzacji, podczas której następuje sprawdzenie informacji i udzielenie odpowiedniego dostępu do danych na serwerze.

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.
Właśnie udało nam się przeprowadzić udane dodanie klucza U2F do naszego konta. Jak pewnie zauważyłeś, powiedziałem, że klucz nie potrzebuje zapisywać żadnych nowych danych. I jest to prawda, po zakończeniu operacji, żadna nowa informacja nie zostaje zapisana w pamięci klucza. Identyfikator, klucz publiczny i prywatny przepadają.
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.
Na stronie phishingowej klucz nie otrzyma od przeglądarki, prawidłowej paczki oraz pasującego do niej identyfikatora. Podrobienie “paczki” i umieszczenie w niej fałszywych informacji, również jest praktycznie niemożliwe, dlatego że została ona zaszyfrowana znanym tylko kluczowi hasłem. Istnieją również implementacje, które nie wymagają przesyłania zaszyfrowanego klucza prywatnego (generują go na podstawie otrzymanych danych).
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.

Komentarze (6)

Tomek07

Na wykopie Rumunii i tak to ominął

barthas

Fajny tekst! Tak tylko napomknę, że używanie "autentykacja" w kontekście uwierzytelnienia nie jest do końca poprawne po polsku, natomiast nagminnie słyszę to w odniesieniu do "authentication" (głównie w pracy). Sory, ale jestem strasznie wyczulony przez profesora na studiach, który nas zawsze prostował

dupaXDDDDD

O takie Hejto nic nie robiłem, czekam na więcej

polutt

Często się zastanawiam skąd ta - chyba - uparta niechęć banków do wprowadzenie U2F przy logowaniu się do banku przez stronę czy apkę?

doki16

@polutt Dobre pytanie niestety nie znam na nie odpowiedzi ¯_(ツ)_/¯ być może wyszły z założenia, że taka funkcjonalność nikogo nie przekona do założenia konta.

Nebthtet

@doki16 O tym jak działa właśnie to uwierzytelnianie to też kiedyś skrobałam - jak ktoś jest zainteresowanym, to polecam doczytać. Pisałam na podstawie info znalezionego w sieci, ekspertem nie jestem, więc jeśli ktoś tam widzi jakieś babole to pisać https://www.hejto.pl/wpis/w-sumie-nikt-nie-popelnial-chyba-jeszcze-wpisu-o-yubikeyach-wiec-potencjalny-aut


@polutt podejrzewam, że dług technologiczny. Banki to w sumie mocno skostniałe lodowce, gdzie zmiany zachodzą powoli. My i tak mamy fajnie, bo e-płatności weszły w PL dość późno. Ale popatrz na USA - tam ciągle (o zgrozo) używa się czeków, są miejsca wymagające wypukłych CC, czy brak możliwości płatności zbliżeniowych. Aby nie szukać tak daleko - w Niemczech w ogromnej liczbie miejsc płacić można TYLKO gotówką.

Zaloguj się aby komentować