Podstawy Bezpieczeństwa: Uwierzytelnianie dwuskładnikowe – po co i jak go używać

dodał 4 maja 2020 o 08:35 w kategorii HowTo, Info  z tagami:
Podstawy Bezpieczeństwa: Uwierzytelnianie dwuskładnikowe – po co i jak go używać

To zdecydowanie najlepsza rekomendacja, jaką możemy wam przekazać, by podnieść bezpieczeństwo waszych kont i danych: stosujcie dwuskładnikowe uwierzytelnienie wszędzie, gdzie to możliwe. Jak? O tym w dzisiejszym artykule.

Nowych rzeczy najłatwiej uczymy się na przykładach. Rozpracujmy więc jeden z ataków, przed którymi w kwietniu ostrzegał CERT Polska. Przestępcy zaczęli rozprzestrzeniać fałszywe wiadomości o likwidacji świadczenia 500+ w związku z trwającą właśnie pandemią. Kliknięcie w podsuwany przez nich link przenosiło użytkownika na złośliwą stronę koniec500plus.eu (szybko dodaną do niedawno uruchomionej listy ostrzeżeń).

Fałszywa strona koniec500plus.eu, źródło: CERT Polska

Celem oszustów było pozyskanie danych logowania do Facebooka. Aby obejrzeć film zawierający rzekomo więcej szczegółów, użytkownik musiał zweryfikować swój wiek poprzez uwierzytelnienie się w popularnym serwisie społecznościowym. Wpisanie loginu i hasła skutkowało przekazaniem ich w niepowołane ręce, co mogło prowadzić do przejęcia konta – ale nie zawsze prowadziło. Wystarczyło, że użytkownik włączył na nim wcześniej uwierzytelnianie dwuskładnikowe (ang. Two-factor Authentication, w skrócie 2FA).

Podstawy Bezpieczeństwa
Artykuł stanowi część nowego cyklu pod patronatem Aruba Cloud, czyli Podstawy Bezpieczeństwa. Doradzamy w nim, jak podnosić bezpieczeństwo codziennego używania komputerów, telefonów i internetu. Nawet jeśli nie znajdziecie w nim niczego nowego (chociaż warto najpierw sprawdzić!), to zawsze możecie te wpisy podsyłać swoim bliskim i znajomym – im na pewno się przydadzą. W poprzednim odcinku pokazywaliśmy, jak używać menedżerów haseł.

Uwierzytelnianie dwuskładnikowe polega na wykorzystaniu w trakcie logowania dodatkowego, opcjonalnego etapu weryfikacji użytkownika. Chodzi najczęściej o wpisanie jednorazowego kodu wysłanego przez usługodawcę za pomocą SMS-a albo hasła generowanego przez aplikację mobilną w oparciu o standard TOTP (ang. Time-based One-time Password Algorithm). Starsi użytkownicy mogą pamiętać odchodzące już do lamusa (a jednak wciąż używane np. przez Inteligo) karty-zdrapki. Na drugim biegunie plasują się fizyczne klucze bezpieczeństwa bazujące na otwartym standardzie U2F (ang. Universal 2nd Factor), które całkiem słusznie zyskują coraz większą popularność.

Wróćmy do naszego przykładu. Mamy stronę, która umożliwia skorzystanie z kilku różnych metod dwuskładnikowego uwierzytelniania (kart-zdrapek nie udostępnia, ale nie ma czego żałować). Przyjrzyjmy się tym metodom po kolei i ustalmy, która zapewnia największe bezpieczeństwo.

Jednorazowe kody wysyłane SMS-em

Korzystają z nich nawet ci, którzy nie słyszeli o dwuskładnikowym uwierzytelnianiu – jeśli tylko mają konto w banku i zdarza się im sprawdzać jego saldo przez internet, nie mówiąc już o wykonywaniu jakichkolwiek transakcji. Unijna dyrektywa PSD2, która weszła w życie w połowie września 2019 r., wymusiła bowiem na bankach wprowadzenie dodatkowego etapu weryfikacji użytkownika. Najprościej było użyć w tym celu SMS-ów i w Polsce zrobiły tak niemal wszystkie banki (choć niektóre poszły dalej i stworzyły bądź zaktualizowały swoje aplikacje mobilne; niestety żaden nie wdrożył obsługi kluczy U2F). SMS-y są rozwiązaniem tanim, oprócz jednorazowych kodów mogą zawierać dodatkowe, istotne dla użytkownika informacje, np. kwotę przelewu i numer konta odbiorcy, same zaś kody działają tylko przez określony czas. Jak można było jednak oczekiwać, przestępcy szybko się dostosowali do wprowadzonych zmian, uzupełniając formularze na fałszywych stronach o dodatkowe pole na kod z SMS-a. W podobny sposób można ominąć dwuetapową weryfikację zarówno w serwisach bankowych, jak i w wielu innych.

Warto też pamiętać o złośliwych aplikacjach mobilnych służących do przechwytywania SMS-ów. Do najstarszych przedstawicieli tego gatunku należy ZitMo, który współpracował z klasycznym koniem trojańskim o nazwie ZeuS i od 2011 r. atakował użytkowników polskich banków. ZeuS podmieniał na komputerze ofiary treść interesującej przestępców strony, prosząc m.in. o podanie numeru telefonu. Atakujący wysyłali na ten numer link do złośliwego oprogramowania – jego otwarcie skutkowało zainfekowaniem urządzenia (na atak okazały się podatne Symbian, BlackBerry, Windows Mobile, a po jakimś czasie także Anroid). Złośliwy duet doczekał się później wielu naśladowców, nawet w marcu tego roku eksperci odkryli złośliwą aplikację na Androida stworzoną przez operatorów bankowego konia trojańskiego TrickBot, którą na zasadzie analogii nazwano TrickMo.

Innym przykładem złośliwego oprogramowania pomagającego ominąć dwuskładnikowe uwierzytelnianie są aplikacje powstałe z myślą o użytkownikach bankowości mobilnej. Na przykład w sierpniu 2018 r. ostrzegaliśmy przed atakami na klientów Banku Zachodniego WBK. W sklepie Google Play pojawiło się wtedy w krótkim odstępie czasu siedem różnych aplikacji podszywających się po tę oficjalną. Wszystkie przechwytywały dane uwierzytelniające w momencie logowania, prosiły też o dostęp do powiadomień, dzięki czemu mogły poznać treść otrzymywanych przez użytkownika SMS-ów. Pozyskane informacje były oczywiście przekazywane przestępcom.

WBK Zachodni mobile – fałszywa aplikacja w sklepie Google Play

Kolejną techniką umożliwiającą wykradanie wysyłanych SMS-em kodów jest tzw. SIM swapping – stosowany na Zachodzie od co najmniej kilku lat, w Polsce mniej popularny, choć i u nas zdarzały się już aresztowania zaangażowanych w ten proceder przestępców. Polega on na przejęciu cudzego numeru telefonu, zwykle poprzez podszycie się pod upatrzoną osobę w salonie operatora, okazanie „kolekcjonerskiego” dowodu zawierającego jej dane i wyrobienie duplikatu karty SIM. Dopóki prawowity właściciel nie zorientuje się, że padł ofiarą oszustwa, atakujący będą mieli dostęp do wszystkich docierających na dany numer SMS-ów, również tych pozwalających ominąć dwuetapową weryfikację w różnych serwisach. Na koniec warto wspomnieć o atakach wykorzystujących znane podatności w zestawie protokołów sygnalizacji telefonicznej występujących pod wspólną nazwą SS7 (ang. Signaling System 7). Jest to technologia sprzed kilkudziesięciu lat, źle zabezpieczona, ale wciąż używana w sieciach mobilnych m.in. do przesyłania SMS-ów. Ataki tego typu nie zdarzają się często, mimo to warto o nich wiedzieć – w 2017 r. ucierpieli z ich powodu klienci jednego z niemieckich banków, w 2019 r. ofiarą przestępców padł bank brytyjski.

Czy to oznacza, że nie powinniśmy używać SMS-ów jako metody dwuskładnikowego uwierzytelniania? To zależy. Jeśli dany serwis nie udostępnia żadnej innej (albo gdy jedynym jej zamiennikiem jest karta-zdrapka), to zalecamy używać – lepsze takie zabezpieczenie niż całkowity brak 2FA. Jeśli do dyspozycji mamy także inne metody, to… zapraszamy do dalszej lektury.

Mobilne aplikacje uwierzytelniające

W polskich bankach funkcjonują najczęściej jako alternatywa dla jednorazowych haseł przesyłanych w SMS-ach. Tymczasem w Niemczech – przed wejściem dyrektywy PSD2 w życie – kilka banków w ogóle zrezygnowało z SMS-ów, uznając tę metodę autoryzacji i potwierdzania transakcji za niezgodną z nowymi wymogami. Ewentualne przeniesienie takich praktyk na polski grunt nie powinno martwić użytkowników. Aplikacje uwierzytelniające są rozwiązaniem tanim (zwykle wręcz darmowym), wygodnym i – co pokazywaliśmy na przykładzie z życia wziętym – bezpieczniejszym niż tradycyjne SMS-y. Oprócz banków dwuetapową weryfikację z użyciem kodów generowanych przez aplikacje mobilne wdrożyło wielu usługodawców, ich listę – z podziałem na kategorie – można znaleźć na stronie TwoFactorAuth.org (rubryka „Software Token”, strona uwzględnia także inne metody dwuskładnikowego uwierzytelniania).

Samych aplikacji do wyboru mamy powyżej setki, część jest dostępna zarówno w Google Play, jak i w App Store. Tak samo jak w przypadku menedżerów haseł, o których pisaliśmy miesiąc temu, warto postawić na rozwiązania sprawdzone i pozytywnie opisywane w branżowych mediach. Najprostszym tego typu programem jest Google Authenticator – z jego obsługą poradzi sobie nawet laik. Więcej możliwości daje Authenticator Plus, który pozwala na zabezpieczenie aplikacji za pomocą PIN-u lub Touch ID, oferuje backupy w chmurze i synchronizację między urządzeniami, ale jest rozwiązaniem bezpłatnym tylko w przypadku urządzeń od Apple’a. Bardziej zaawansowanym użytkownikom do gustu może przypaść Authy, który ma co najmniej tyle samo funkcji i jest za darmo, a występuje nie tylko w wersji mobilnej na Androida i iOS, ale też desktopowej – dla systemów Windows i macOS. Na uwagę zasługuje też otwartoźródłowy, stosunkowo niedawno wydany Aegis, dostępny niestety wyłącznie na Androida. Widzieliśmy ponadto w polskiej sieci sporo pozytywnych opinii na temat aplikacji Microsoft Authenticator, który upraszcza logowanie do usług tej firmy.

Authenticator Plus na iPhonie, Google Authenticator i Aegis
na smartfonie z Androidem

Uważni czytelnicy mogą zacząć się zastanawiać, czy kody generowane przez aplikacje uwierzytelniające nie są aby podatne na phishing, tak jak opisane wcześniej kody zawarte w otrzymywanych SMS-ach. Przestępcy mogą przecież stworzyć fałszywą stronę, na której oprócz danych logowania poproszą o odpowiedni kod 2FA, prawda? Prawda, istnieją zresztą sposoby, by to zautomatyzować. W ubiegłym roku w serwisie GitHub zostało udostępnione narzędzie o nazwie Modlishka, stworzone przez polskiego eksperta Piotra Duszyńskiego. Działa ono jako reverse proxy, czyli pośredniczy w komunikacji między użytkownikami a serwisami, które leżą w obszarze zainteresowań atakujących. Serwowane ofiarom strony w domenach phishingowych zachowują się jak prawdziwe, mogą nawet wyświetlać w pasku przeglądarki charakterystyczne zielone kłódki (dzięki darmowym certyfikatom uzyskiwanym za pośrednictwem Let’s Encrypt). Ofiary mogą bez zakłóceń korzystać z usługi, Modlishka przechwytuje tymczasem ich dane logowania, jednorazowe kody 2FA, a także ciasteczka sesyjne. Na GitHubie znajdziemy również inne projekty wspomagające omijanie dwuskładnikowego uwierzytelniania – stosunkowo nową Muraenę i evilginx2 Kuby Gretzky’ego (wcześniejszą wersją tego narzędzia, powstałą w 2017 r., interesował się nawet Kevin Mitnick).

Na pytanie, czy istnieje złośliwe oprogramowanie potrafiące wykradać kody 2FA z aplikacji uwierzytelniających, do niedawna odpowiedzielibyśmy, że nie. Pod koniec lutego badacze z firmy ThreatFabric poinformowali jednak o wykryciu nowej wersji mobilnego trojana bankowego Cerberus, która wykrada jednorazowe hasła, robiąc zrzuty ekranu. Pozwala na to niezałatany od 2014 r. błąd w aplikacji Google Authenticator. Podobna luka występuje też w Microsoft Authenticatorze. Wybierając aplikację uwierzytelniającą, warto więc sprawdzić, czy możliwość przechwytywania zawartości ekranu jest w niej domyślnie wyłączona. Innym rozwiązaniem, pozbawionym obu opisanych wad, jest skorzystanie z fizycznych kluczy bezpieczeństwa.

Klucze U2F

Choć zyskują na popularności, wciąż jeszcze nie są rozwiązaniem używanym powszechnie – po pierwsze dlatego, że trochę kosztują (ile konkretnie, zależy od producenta i wybranego modelu), po drugie wiele serwisów nadal nie obsługuje tej metody uwierzytelniania. Dowiedzieć się, które już ją wdrożyły, można ze strony DongleAuth.info. Oprócz tego znajdziemy na niej listę producentów tego typu urządzeń. Według serwisu ZDNet, który w marcu dokładniej się im przyjrzał, najbardziej godne polecenia są klucze takich firm jak Yubico, CryptoTrust, Thetis, Google i Kensington (ich ceny wahają się od 20 do 50 dolarów). Jeśli priorytetem jest dla nas niska cena, warto zerknąć na ofertę firmy Feitian.

Różne modele kluczy YubiKey, źródło: yubico.com

Jak widać na powyższym zdjęciu, są to niewielkie urządzenia przypominające pendrive’y, działają bez instalowania sterowników czy oprogramowania klienckiego – w przypadku komputerów od razu po włożeniu do portu USB, w przypadku smartfonów i tabletów za pośrednictwem NFC albo Bluetootha, dostępne są też klucze ze złączem Lightning, których chętnie używają posiadacze iPhone’ów. Ich obsługa jest banalnie prosta. Aby zarejestrować się w serwisie, który wspiera U2F, wystarczy znaleźć w ustawieniach odpowiednią opcję, podłączyć klucz do urządzenia i wcisnąć znajdujący się na nim przycisk. Aby zalogować się – tak jak zawsze, wpisujemy login i hasło, następnie w ramach dodatkowego etapu weryfikacji (zamiast podawać kod z SMS-a lub aplikacji) podłączamy klucz U2F do naszego sprzętu i wciskamy przycisk. Jeśli natomiast dysponujemy kluczem nowszej generacji, opartym na standardzie FIDO2, to podawanie loginu i hasła będziemy mogli pominąć, ponieważ działa on w trybie passwordless. Może też zostać dodatkowo zabezpieczony PIN-em lub odciskiem palca.

Co najbardziej istotne, jest to rozwiązanie, które chroni użytkowników przed phishingiem ukierunkowanym na zdobycie danych uwierzytelniających. Zanim Google wpadł na pomysł stworzenia własnego klucza U2F (znanego jako Titan Security Key), dokładnie przetestował urządzenie firmy Yubico, czyli YubiKey. Poniżej możecie zobaczyć wykres pokazujący, jak spadała liczba incydentów w miarę upowszechniania się tego rozwiązania wśród – wtedy jeszcze – 50 tys. pracowników Google’a (więcej szczegółów znajdziecie w wydanym przez firmę raporcie).

Wyniki wprowadzenia FIDO U2F w Google’u, źródło: yubico.com

Chodzi o to, że podczas rejestracji na dowolnej stronie, która wspiera U2F, przeglądarka wysyła do urządzenia jej adres. W oparciu o niego tworzona jest para kluczy kryptograficznych – prywatny i publiczny. Klucz publiczny jest przechowywany na serwerze, a prywatny nigdy nie opuszcza urządzenia. Gdy będziemy się później logować na tej stronie, klucz prywatny posłuży do zaszyfrowania danych uwierzytelniających, które po przesłaniu do serwera zostaną odszyfrowane przy użyciu klucza publicznego (w przypadku urządzeń nieobsługujących FIDO2 przesyłana jest wartość losowa). Klucze wygenerowane podczas próby logowania na fałszywej, podsuniętej przez atakujących stronie będą się różnić od tych stworzonych na stronie oryginalnej. Przeglądarka zawsze bowiem wysyła do urządzenia U2F adres strony, na której użytkownik naprawdę się znajduje. Inaczej mówiąc, przestępcy mogą zdobyć potwierdzenie logowania zaszyfrowane kluczem prywatnym pasującym do ich własnej strony, ale nie dostaną się na konto ofiary w serwisie oryginalnym (przesłany na serwer kod nie zostanie odszyfrowany przy użyciu jej klucza publicznego). Świetne rozwiązanie chroniące przed phishingiem na dane uwierzytelniające, choć niestety nie zapobiegnie ono np. kradzieży danych kart płatniczych.

Włączamy dwuetapową weryfikację

Jak wygląda proces włączania dwuskładnikowego uwierzytelniania, pokażemy na przykładzie dwóch popularnych usług – Facebooka i Gmaila.

W przypadku Facebooka wystarczy kliknąć strzałkę w prawym górnym rogu i wybrać opcję „Ustawienia”. Następnie przechodzimy do zakładki „Bezpieczeństwo i logowanie”, gdzie odnajdujemy sekcję „Używaj uwierzytelniania dwuskładnikowego”. Po kliknięciu „Edytuj” możemy wybrać metodę uwierzytelniania – za pośrednictwem aplikacji albo SMS-ów.

Wybieramy oczywiście aplikację, następnie musimy wpisać nasze hasło.

Facebook wyświetli wtedy kod QR, który musimy zeskanować, uruchamiając na telefonie aplikację uwierzytelniającą (np. Authenticator Plus). Inną opcją jest przepisanie widniejącego obok kodu.

Aby zakończyć proces, musimy wprowadzić kod potwierdzający, wyświetlony w wybranej przez nas aplikacji uwierzytelniającej.

Dopiero po włączeniu dwuskładnikowego uwierzytelniania za pomocą aplikacji uzyskujemy możliwość zabezpieczenia naszego konta przy użyciu klucza YubiKey – aby tego dokonać, musimy kliknąć przycisk „Skonfiguruj” przy opcji „Klucz zabezpieczeń”. Wkładamy następnie nasz klucz do portu USB i naciskamy znajdujący się na nim przycisk lub złoty krążek. Gotowe!

Nie możemy jednak zapomnieć o wygenerowaniu kodów odzyskiwania dostępu, które mogą się przydać, gdy z jakiegoś powodu nie będziemy mogli skorzystać z naszego telefonu (także w przypadku jego zgubienia bądź kradzieży). Wygenerowane kody warto pobrać i zapisać w bezpiecznym miejscu.

Równie łatwe jest włączenie dwuskładnikowego uwierzytelniania na koncie Google. Aby to zrobić, musimy w dowolnej usłudze, np. w Gmailu, kliknąć w nasze zdjęcie profilowe i wybrać „Zarządzaj kontem Google”. W nowo otwartym oknie przeglądarki przechodzimy do zakładki „Bezpieczeństwo” i odnajdujemy opcję „Weryfikacja dwuetapowa”.

Po kliknięciu zobaczymy informację przybliżającą nam wybrany sposób uwierzytelniania. Podobnie jak w przypadku Facebooka – ze względów bezpieczeństwa – aby przejść dalej, będziemy musieli wpisać nasze hasło. Jeśli nie podaliśmy wcześniej naszego numeru telefonu, zostaniemy poproszeni o jego dodanie.

W odpowiedzi na pytanie „W jaki sposób chcesz dostawać kody?” zaznaczamy „SMS”, chyba że od razu zamierzamy dodać klucz bezpieczeństwa podłączany do portu USB (np. YubiKey) – wtedy klikamy „Wybierz inną opcję”.

Załóżmy jednak, że poprzestaliśmy na SMS-ach. W kolejnym kroku będziemy musieli wpisać kod weryfikacyjny wysłany przez Google na nasz numer.

Gdy to zrobimy, będziemy mogli włączyć uwierzytelnianie dwuskładnikowe – na razie za pośrednictwem SMS-ów, od razu jednak otrzymamy możliwość zamiany ich na aplikację lub klucz YubiKey.

Interesuje nas aplikacja, klikamy więc „Wygeneruj” przy opcji „Aplikacja Authenticator”. Google – co oczywiste – poleca własną aplikację uwierzytelniającą, ale tak naprawdę możemy użyć dowolnej (np. Authy). Musimy tylko najpierw wskazać, czy używamy telefonu z Androidem czy iPhone’a.

W kolejnym kroku skanujemy widoczny na ekranie kod QR, a potem wpisujemy wyświetlony przez aplikację 6-cyfrowy kod weryfikacyjny.

Gotowe? No, prawie. Warto – tak samo jak w przypadku Facebooka – wygenerować kody zapasowe, z których będziemy mogli skorzystać, jeśli z jakiegoś powodu utracimy dostęp do naszego telefonu. Google sugeruje, żebyśmy je przechowywali „w miejscu bezpiecznym, ale dostępnym”. Nic nie stoi na przeszkodzie, żebyśmy je zapisali np. w naszym menedżerze haseł.

W podobny sposób można włączyć uwierzytelnianie dwuskładnikowego także w innych serwisach.

Podsumowanie, czyli o czym warto pamiętać, włączając 2FA

Mamy nadzieję, że tym artykułem udało się nam was przekonać, że dwuskładnikowe uwierzytelnianie jest lepszym rozwiązaniem niż używanie samych tylko loginów i haseł. Aby podnieść swoje bezpieczeństwo, warto przestrzegać kilku prostych zasad.

  1. Zakładając konto w dowolnym serwisie (zwłaszcza w sytuacji, gdy musisz podać dużo swoich danych), sprawdź koniecznie, czy można w nim włączyć uwierzytelnianie dwuskładnikowe – jeśli tak, nie wahaj się to zrobić.
  2. Użyj najmocniejszej z udostępnianych przez dany serwis metod – tam, gdzie jest to możliwe, zarejestruj klucz U2F; jeśli się nie da, wybierz aplikację uwierzytelniającą; jeśli i ta opcja jest niedostępna, korzystaj z kodów wysyłanych SMS-em (pamiętając o ich licznych wadach).
  3. Dobrym pomysłem jest podłączenie dwóch kluczy U2F do wszystkich używanych kont – podobnie jak w przypadku kluczy samochodowych, jeden możesz nosić przy sobie, a drugi ukryć w bezpiecznym miejscu na wypadek zgubienia lub awarii tego pierwszego.
  4. W przypadku aplikacji uwierzytelniającej nie zapomnij o wygenerowaniu zapasowych kodów odzyskiwania dostępu (ang. recovery codes), które mogą się przydać, jeśli zgubisz lub uszkodzisz telefon. Kody przechowuj w menedżerze haseł. Inną opcją jest korzystanie z aplikacji, która umożliwia robienie backupów.

Warto też śledzić najnowsze trendy. Możliwe, że za jakiś czas będziemy mogli na dobre zapomnieć o hasłach, nie tracąc przy tym na bezpieczeństwie.

Dla zachowania pełnej przejrzystości: Patronem cyklu jest Aruba Cloud. Za opracowanie i opublikowanie tego artykułu pobieramy wynagrodzenie.