Uwierzytelnianie dwuskładnikowe: kody, aplikacje i SMS-y
Moduł 2: Hasła i logowanie · Czas czytania: 11 minut
Cel lekcji: Po tej lekcji będą Państwo potrafili porównać formy uwierzytelniania dwuskładnikowego (SMS, e-mail, TOTP, powiadomienia push), rozpoznać ataki na nie oraz przygotować sposób odzyskania dostępu na wypadek zgubienia telefonu.
Kluczowe pojęcia: 2FA/MFA, czynnik (wiedza, posiadanie, cecha), TOTP, wspólny sekret, powiadomienie push, zmęczenie MFA, sim-swap, kody odzyskiwania
Dwa różne dowody
Hasło to coś, co się wie. Jeśli wycieknie, zalogować się może każdy, kto je zna. Uwierzytelnianie dwuskładnikowe (2FA) wymaga więc drugiego dowodu innego rodzaju. Przy więcej niż dwóch czynnikach mówi się o uwierzytelnianiu wieloskładnikowym (MFA); w praktyce te terminy bywają używane zamiennie.
Wyróżnia się trzy rodzaje czynników:
- Wiedza: hasło lub kod PIN.
- Posiadanie: telefon z aplikacją, klucz zabezpieczający, karta.
- Cecha: odcisk palca lub twarz.
Dwa razy ten sam rodzaj czynnika się nie liczy: hasło plus pytanie zabezpieczające to dwie rzeczy, które się wie. Holenderskie centrum cyberbezpieczeństwa NCSC wydało zdecydowane zalecenie, aby stosować MFA w każdym systemie i na każdym koncie, które to umożliwia, a zwłaszcza na kontach dostępnych przez internet i kontach z uprawnieniami administracyjnymi. Dla małej firmy są to w każdym razie: poczta, hosting i rejestracja domeny, bank, księgowość, sklep internetowy, menedżer haseł oraz media społecznościowe firmy.
Formy obok siebie
| Forma | Jak to działa | Słaby punkt | Odporność na phishing? |
|---|---|---|---|
| Kod SMS | Usługa wysyła kod na numer telefonu | Sim-swap, przechwycenie, numer nie jest tym samym co urządzenie | Nie |
| Kod e-mail | Usługa wysyła kod na skrzynkę pocztową | Tak silne, jak zabezpieczona jest skrzynka; jeśli skrzynka zostanie przejęta, to nie jest drugi zamek | Nie |
| Aplikacja uwierzytelniająca (TOTP) | Aplikacja generuje nowy kod co 30 sekund | Sekret może wyciec podczas konfiguracji lub ze słabo zabezpieczonej kopii zapasowej; kod jest przepisywany ręcznie | Nie |
| Powiadomienie push | Telefon pyta „Czy to Państwo?” i wystarczy nacisnąć Zatwierdź | Zmęczenie MFA | Nie, lepsze jest dopasowanie numeru |
| Passkey lub klucz zabezpieczający | Urządzenie kryptograficznie potwierdza tożsamość, wyłącznie dla prawdziwej domeny | Odzyskiwanie dostępu w razie utraty wszystkiego | Tak (lekcja 2.4) |
Każda forma jest znacznie lepsza niż brak drugiego kroku. Tabela pokazuje jednak także: wszystko, przy czym trzeba przepisać kod lub zatwierdzić powiadomienie, oszust może skłonić do zrobienia na swojej fałszywej stronie. Amerykański instytut NIST w dokumencie SP 800-63B-4 mówi to wprost: metody, w których wynik wpisuje się ręcznie, nie są odporne na phishing.
Jak działa aplikacja uwierzytelniająca
Aplikacja uwierzytelniająca wykorzystuje TOTP: Time-based One-Time Password, opisany w RFC 6238. Działa to tak:
- Podczas konfiguracji usługa generuje losowy wspólny sekret, na przykład 32 znaki w rodzaju
JBSWY3DPEHPK3PXP.... Sekret ten znajduje się w skanowanym kodzie QR albo wpisuje się go ręcznie jako „klucz ręczny”. - Aplikacja i usługa mają teraz ten sam sekret. Od tej chwili nie jest już potrzebny żaden kontakt między nimi.
- Co 30 sekund obie strony przeliczają sekret wraz z aktualnym czasem na 6-cyfrowy kod. Ponieważ mają ten sam sekret i ten sam zegar, wychodzi ten sam kod.
- Przy logowaniu usługa porównuje wpisany kod ze swoim własnym wynikiem, zwykle z marginesem jednego przedziału czasu wcześniej lub później, na wypadek niewielkiego rozjechania zegara.
Dwie konsekwencje:
- Sekret jest właściwym zamkiem. Kto zobaczy kod QR lub klucz ręczny, może na zawsze generować te same kody co telefon. Nie należy więc robić z niego zrzutu ekranu, dzielić się nim z nikim ani przesyłać go współpracownikowi.
- Kod działa także bez internetu i nie jest przesyłany przez sieć telefoniczną. Dlatego TOTP jest silniejsze niż SMS.
Aplikacje uwierzytelniające występują w różnych odmianach: samodzielne na telefonie, wbudowane w menedżer haseł, otwartoźródłowe lub od dużej firmy technologicznej, z szyfrowaną kopią zapasową w chmurze lub bez niej. Przykłady to Aegis, Google Authenticator i Microsoft Authenticator, obok funkcji dostępnej w menedżerach takich jak Bitwarden czy 1Password. Kopia zapasowa jest przydatna przy nowym telefonie, ale holenderskie NCSC ostrzega: słabo zaszyfrowana kopia zapasowa daje dostęp również atakującemu.
Sim-swap: dlaczego SMS jest najsłabszą formą
Przy sim-swap oszust przejmuje numer telefonu ofiary. Doprowadza do przeniesienia numeru na kartę SIM lub eSIM, którą sam posiada. Udaje mu się to na przykład podając się za ofiarę u operatora, albo nakłaniając samą ofiarę do współpracy: CERT Polska ostrzega przed SMS-ami i telefonami „w imieniu operatora” z informacją, że kartę SIM trzeba zwalidować lub pilnie przełączyć na eSIM.
Gdy się to uda:
- telefon nagle traci zasięg i nie można samemu dzwonić ani wysyłać SMS-ów;
- oszust otrzymuje wszystkie kody SMS, w tym kody „zapomniałem hasła” z usług, które numer telefonu wykorzystują jako sposób odzyskiwania dostępu;
- czasem sam numer wystarcza mu do przejęcia kont.
Trudność polega na tym, że zauważa się to dopiero, gdy telefon przestaje działać, często wieczorem lub w weekend. NIST z tego powodu określa SMS jako metodę ograniczoną i zaleca usługom zwracanie uwagi na sygnały, takie jak nowa karta SIM lub przeniesiony numer. Holenderskie NCSC zaleca unikanie SMS-ów, gdzie to możliwe, ponieważ wiadomości nie są szyfrowane i mogą zostać przechwycone.
Co można zrobić?
- Tam, gdzie to możliwe, wybierać aplikację lub passkey zamiast SMS-a.
- Usunąć numer telefonu jako sposób odzyskiwania dostępu tam, gdzie stanowi słaby punkt, albo dodatkowo go zabezpieczyć.
- Zapytać operatora o możliwość ustawienia dodatkowego kodu PIN lub weryfikacji przy przenoszeniu numeru.
- Jeśli zasięg nagle zniknie bez powodu, należy zadzwonić do operatora z innego urządzenia. Nie czekać.
SMS wciąż jest lepszy niż nic. Jeśli usługa oferuje wyłącznie SMS, warto go mimo wszystko włączyć.
Zmęczenie MFA: powiadomienie, które się odrzuca bez namysłu
Przy powiadomieniu push nie trzeba nic przepisywać: telefon pyta „Czy to próba zalogowania się?” i wystarczy nacisnąć Zatwierdź. Wygodne i właśnie dlatego nadużywane.
Przy zmęczeniu MFA (zwanym także bombardowaniem push) atakujący ma już hasło ofiary. Loguje się wielokrotnie, przez co telefon otrzymuje jedno powiadomienie za drugim, czasem w środku nocy. Amerykańska agencja CISA opisuje, jak ludzie wtedy z irytacji albo przez pomyłkę naciskają Zatwierdź, albo myślą, że przynajmniej jedno z powiadomień musi być prawdziwe. Czasem atakujący dodatkowo dzwoni, podając się za „dział pomocy technicznej”, z prośbą o zatwierdzenie.
Przypadek z praktyki, opisany przez holenderskie NCSC: atakujący poprzez zmęczenie MFA dostali się do kont pocztowych firmy software'owej i wykorzystali je następnie do oszustwa fakturowego.
Zasady:
- Nigdy nie należy zatwierdzać powiadomienia, którego samemu się nie wywołało. Nawet dwudziestego z rzędu.
- Nieoczekiwane powiadomienie oznacza, że ktoś zna hasło. Trzeba je od razu zmienić i zgłosić zdarzenie.
- Tam, gdzie to możliwe, warto wybrać dopasowanie numeru: ekran logowania pokazuje liczbę, którą wpisuje się w aplikacji. Kto nie siedzi przed ekranem logowania, nie może wtedy zatwierdzić. CISA określa to jako dobry krok pośredni, choć słabszy niż odporne na phishing MFA.
Odzyskiwanie dostępu: proszę to przygotować, zanim telefon zginie
Telefon wpada do wody, zostaje skradziony albo się psuje. Bez wcześniejszego przygotowania można zostać odciętym od własnych kont. Dlatego istnieją kody odzyskiwania (zwane też kodami zapasowymi): rząd zapasowych kodów otrzymywanych podczas konfiguracji, z których każdy działa tylko raz.
- Nie należy przechowywać ich na tym samym telefonie co aplikacja uwierzytelniająca. Warto je wydrukować i trzymać razem z ważnymi dokumentami albo zapisać w menedżerze haseł przy odpowiedniej pozycji.
- Użyty kod odzyskiwania należy skreślić. Gdy się skończą, trzeba wygenerować nowe.
- Należy zapewnić co najmniej dwa sposoby dostępu: na przykład aplikację plus kody odzyskiwania, albo dwa klucze zabezpieczające.
- Przy nowym telefonie najpierw należy przenieść konta, a dopiero potem wyczyścić stary.
- Warto znać procedurę odzyskiwania dostępu najważniejszych usług. Dobra usługa nie przywraca drugiego czynnika na podstawie samego maila czy telefonu, lecz najpierw sprawdza, czy to rzeczywiście jest właściwa osoba.
W praktyce: jak to wygląda
W środowisku WebOké panel Moje WebOké po wpisaniu hasła zawsze prosi o drugi krok: domyślnie jest to kod wysyłany e-mailem, można też przejść na aplikację uwierzytelniającą. W DirectAdmin nazywa się to Uwierzytelnianie dwuetapowe, z kodami odzyskiwania. W Nextcloud włącza się TOTP i generuje się dziesięć kodów zapasowych. U innych dostawców działa to podobnie: w profilu lub ustawieniach bezpieczeństwa należy szukać określeń „uwierzytelnianie dwuskładnikowe”, „2FA”, „authenticator” lub „two-factor”.
Kroki są niemal zawsze takie same: zeskanować kod QR, wpisać jeden kod kontrolny, zapisać kody odzyskiwania.
Podsumowanie
- 2FA łączy dwa rodzaje czynników: wiedzę, posiadanie, cechę.
- TOTP działa na podstawie wspólnego sekretu i zegara. Sekret (kod QR) jest właściwym zamkiem: nigdy nie wolno się nim dzielić.
- SMS jest najsłabszą formą ze względu na sim-swap i przechwytywanie, ale lepszy niż brak zabezpieczenia.
- Zmęczenie MFA: nigdy nie wolno zatwierdzać powiadomienia, którego samemu się nie wywołało, a następnie trzeba zmienić hasło.
- Kody i powiadomienia nie są odporne na phishing; passkeys i klucze zabezpieczające są (lekcja 2.4).
- Kody odzyskiwania i drugą metodę dostępu należy przygotować, zanim telefon zginie.
Quiz
Zadanie
Zadanie A2.3: Powiązanie aplikacji uwierzytelniającej. Zostanie udostępniony kod QR konta testowego „WebOké oefening”. Należy zeskanować go wybraną aplikacją uwierzytelniającą i wpisać dwa kolejno pojawiające się kody. Program sprawdzi, czy aplikacja poprawnie oblicza kody. Sekret testowy nie ma żadnej wartości i zostanie usunięty po 24 godzinach; konto testowe należy następnie usunąć z aplikacji.
Zadanie D2.3: Włączenie uwierzytelniania dwuskładnikowego na najważniejszych kontach. Proszę włączyć uwierzytelnianie dwuskładnikowe na koncie pocztowym, hostingu lub rejestracji domeny, w banku, w księgowości i w menedżerze haseł. Kody odzyskiwania proszę zapisać w drugim miejscu i odpowiedzieć na pytanie, co zrobić, jeśli telefon zginie jutro.
Zadanie D2.3: Włączenie uwierzytelniania dwuskładnikowego na najważniejszych kontach
Jak to zrobić: (1) Proszę sporządzić listę najważniejszych kont: skrzynka pocztowa, hosting i rejestracja domeny, bank, księgowość, sklep internetowy, menedżer haseł, media społecznościowe firmy. (2) Przy każdym koncie proszę włączyć uwierzytelnianie dwuskładnikowe. Proszę wybierać w tej kolejności to, co oferuje usługa: passkey lub klucz zabezpieczający, aplikacja uwierzytelniająca, powiadomienie push z przepisaniem numeru, kod przez e-mail, SMS. (3) Przy każdym koncie proszę zapisać kody odzyskiwania w drugim miejscu (wydrukowane lub w menedżerze haseł), nie na tym samym telefonie, na którym jest aplikacja uwierzytelniająca. (4) Proszę zadbać o co najmniej dwa sposoby logowania na każde ważne konto. (5) Proszę zapytać swojego dostawcę, czy można ustawić dodatkową weryfikację lub kod PIN przy przenoszeniu numeru. (6) Proszę ustalić z zespołem: powiadomienie o logowaniu, którego sami Państwo nie wywołali, nigdy nie jest zatwierdzane; należy je od razu zgłosić.
Zaznaczenia i notatki pozostają tylko w tej przeglądarce; nie są nigdzie wysyłane. Po zalogowaniu w Moje kursy zapisywana jest jedynie informacja, że zadanie zostało wykonane.
Czytaj dalej
Kroki opisane w artykułach WebOké dotyczą środowiska WebOké; u innych dostawców działa to podobnie.
- Weryfikacja dwuetapowa w Moje WebOké oraz konfiguracja aplikacji uwierzytelniającej
- Podręcznik WebOké 3.2: Kod logowania wysyłany e-mailem (weryfikacja dwuetapowa)
- Podręcznik WebOké 3.3: Korzystanie z aplikacji uwierzytelniającej
- Instrukcja DirectAdmin 3.2: Uwierzytelnianie dwuetapowe, konfiguracja
- Instrukcja DirectAdmin 3.3: Kody zapasowe i co zrobić, gdy zgubią Państwo aplikację uwierzytelniającą
- Podręcznik Nextcloud 3.3: Konfiguracja aplikacji uwierzytelniającej i zapisywanie kodów zapasowych
- Podręcznik Nextcloud 3.10: Zgubiony telefon lub brak dostępu do uwierzytelniania dwuskładnikowego: jak odzyskać dostęp
- Konfiguracja weryfikacji dwuetapowej (2FA) w Nextcloud
- Holenderskie NCSC, Jak wybrać metodę MFA?: https://www.ncsc.nl/multifactor-authenticatie/hoe-kies-je-een-mfa-methode
- CERT Polska, zgłoszenia incydentów: https://incydent.cert.pl/
- CISA, Implementing Number Matching in MFA Applications (w języku angielskim): https://www.cisa.gov/sites/default/files/publications/fact-sheet-implement-number-matching-in-mfa-applications-508c.pdf
- RFC 6238, TOTP: Time-Based One-Time Password Algorithm (w języku angielskim): https://www.rfc-editor.org/rfc/rfc6238
