W ciągu ostatnich kilku lat koncepcja uwierzytelniania dwuskładnikowego (2FA), długo będąca domeną geeków, znalazła drogę do głównego nurtu. Jednak rozmowa jest nadal w dużej mierze ograniczone do korzystania z 2FA dla haseł jednorazowych przez SMS. Niestety, nie jest to najbardziej niezawodna opcja. Oto dlaczego:
- Łatwo jest podejrzeć hasła wysyłane SMS-em, jeśli powiadomienia na ekranie blokady są włączone.
- Nawet jeśli powiadomienia są wyłączone, karta SIM może zostać wyjęta i zainstalowana w innym smartfonie, dając dostęp do wiadomości SMS z hasłami.
- Wiadomości SMS zawierające hasła mogą zostać przechwycone przez trojana czającego się wewnątrz smartfonu.
- Używając różnych podstępnych taktyk (perswazja, przekupstwo itp.), przestępcy mogą zdobyć w sklepie z telefonami komórkowymi nową kartę SIM z numerem ofiary. Wiadomości SMS trafią na tę kartę, a telefon ofiary zostanie odłączony od sieci.
- Wiadomości SMS z hasłami mogą zostać przechwycone dzięki podstawowej luce w protokole SS7 używanym do przesyłania wiadomości.
Zauważmy, że nawet najbardziej zaawansowana technologicznie i pracochłonna z powyższych metod wykradania haseł SMS (SS7 exploitation) została już wykorzystana w praktyce. Reszta to codzienna rutyna dla złych ludzi. W związku z tym, nie mamy do czynienia z hipotezami, ale z żywym zagrożeniem.
Ogólnie rzecz biorąc, hasła SMS nie są zbyt bezpieczne, a czasami są bardzo niepewne. Sensowne jest więc skanowanie horyzontu w poszukiwaniu alternatyw, jeśli chodzi o 2FA, które jest dzisiejszym tematem.
- Kody jednorazowe w pliku lub na papierze
- Jest też na to aplikacja: Authenticator apps
- Jak działają aplikacje uwierzytelniające
- Kompatybilność aplikacji i usług 2FA
- Najlepsze aplikacje do uwierzytelniania dwuskładnikowego
- 1. Google Authenticator
- 2. Duo Mobile
- 3. Microsoft Authenticator
- 4. FreeOTP
- 5. Authy
- 6. Yandex.Key
- Uwierzytelniacze sprzętowe FIDO U2F: YubiKey i inne
- Jak działają tokeny FIDO U2F
- Jakie są rodzaje urządzeń U2F
- Co wybrać: SMS, aplikacja, czy YubiKey?
Kody jednorazowe w pliku lub na papierze
Najprostszym sposobem na zastąpienie haseł jednorazowych opartych na SMS-ach jest użycie, owszem, haseł jednorazowych, ale przygotowanych wcześniej. Nie jest to najgorsza opcja, zwłaszcza w przypadku serwisów, do których logujemy się rzadko. Nawet dla dobrego ol’ Facebook, metoda ta może dobrze zrobić, zwłaszcza jako plan zapasowy.
Jest to dość proste: Na żądanie, usługa generuje i wyświetla kilkanaście jednorazowych kodów, które mogą być później użyte do uwierzytelnienia logowania. Kody te można wydrukować lub zanotować i schować do sejfu. Lub, jeszcze prościej, można je zapisać w zaszyfrowanych notatkach w menedżerze haseł.
Nie jest tak ważne, czy kody są przechowywane w formacie fizycznym czy cyfrowym – liczy się to, że (1) nie zgubią się i (2) nie mogą zostać skradzione.
Jest też na to aplikacja: Authenticator apps
Poza wszystkimi „jedynkami” w tym zdaniu, wygenerowany jednorazowo zestaw kodów jednorazowych ma jedną wadę: Prędzej czy później się skończy, a Ty możesz zostać bez kodu w najbardziej nieodpowiednim momencie. Na szczęście istnieje lepszy sposób: Kody jednorazowe mogą być generowane w locie przy użyciu małej i (zazwyczaj) bardzo prostej aplikacji uwierzytelniającej.
Jak działają aplikacje uwierzytelniające
Używanie aplikacji 2FA jest bardzo proste. Oto, co musisz zrobić:
- Zainstaluj aplikację uwierzytelniającą na swoim smartfonie,
- Przejdź do ustawień bezpieczeństwa usługi, z którą chcesz korzystać z aplikacji,
- Wybierz opcję 2FA (zakładając, że taka opcja istnieje); usługa pokaże Ci kod QR, który można zeskanować bezpośrednio do aplikacji 2FA,
- Skanuj kod za pomocą aplikacji – zacznie ona generować nowy kod jednorazowy co 30 sekund.
Kody tworzone są na podstawie klucza (znanego tylko Tobie i serwerowi) oraz aktualnego czasu, zaokrąglonego do 30 sekund. Oba składniki są takie same dla Ciebie i serwisu, więc kody generowane są synchronicznie. Algorytm ten nosi nazwę OATH TOTP (Time-based One-Time Password) i jest zdecydowanie najczęściej stosowany.
Istnieje alternatywa, znana jako OATH HOTP (HMAC-based One-Time Password). Zamiast aktualnego czasu, algorytm ten używa licznika, który zwiększa się o 1 dla każdego nowo utworzonego kodu. Jest on jednak rzadko spotykany w prawdziwym życiu, ponieważ jego użycie komplikuje synchroniczne generowanie kodów po stronie aplikacji i usług. Mówiąc prościej, istnieje niebagatelne ryzyko, że licznik się zepsuje w nieodpowiednim momencie, a twoje hasło jednorazowe nie zadziała.
Więc OATH TOTP można uznać za standard de facto (choć oficjalnie nie jest to nawet standard, jak twierdzą twórcy w specyfikacji).
Kompatybilność aplikacji i usług 2FA
Zdecydowana większość aplikacji 2FA używa tego samego algorytmu, więc każda z nich może być używana w usługach obsługujących uwierzytelniacze; wybieraj.
Oczywiście, jak w przypadku każdej reguły, istnieją wyjątki. Z powodów znanych tylko im, niektóre usługi wolą tworzyć własne aplikacje 2FA, które działają tylko dla nich. Co więcej, same usługi nie współpracują z żadnymi innymi aplikacjami poza ich własnymi.
Jest to szczególnie powszechne wśród głównych wydawców gier wideo: na przykład Blizzard Authenticator, Steam Mobile z wbudowanym Steam Guard, Wargaming Auth i inne są niekompatybilne z aplikacjami i usługami stron trzecich. Tylko te niestandardowe aplikacje mogą być używane z odpowiednimi platformami do gier.
Ta dziwna ścieżka została również podjęta przez Adobe z jego Adobe Authenticator, który działa tylko z kontami AdobeID. Można jednak używać innych uwierzytelniaczy do uwierzytelniania w AdobeID, więc nie jest wcale jasne, dlaczego potrzebna była osobna aplikacja.
W każdym razie, większość normalnych firm IT nie ogranicza użytkowników w wyborze aplikacji 2FA. A nawet jeśli firma nagle zdecyduje się stworzyć własną aplikację, w większości przypadków można jej użyć do ochrony nie tylko własnych kont, ale także kont innych usług.
Po prostu wybierz aplikację uwierzytelniającą, która najbardziej Ci się podoba pod względem dodatkowych funkcji – będzie ona działać z większością usług, które generalnie obsługują aplikacje 2FA.
Najlepsze aplikacje do uwierzytelniania dwuskładnikowego
Wybór aplikacji 2FA jest zaskakująco szeroki. Poszukaj hasła „authenticator” w Google Play lub App Store, a zobaczysz dziesiątki opcji. Nie zalecamy instalowania pierwszej aplikacji, która wpadnie Ci w oko; może ona nie być najbezpieczniejsza. Pamiętaj, że właśnie powierzasz jej klucze do swoich kont (oczywiście nie będzie znała Twoich haseł, ale dodajesz 2FA, bo hasła mają tendencję do wyciekania). Ogólnie rzecz biorąc, warto zdecydować się na aplikację wykonaną przez dużego i godnego zaufania dewelopera.
Chociaż podstawowa funkcja wszystkich tych aplikacji jest taka sama – tworzenie kodów jednorazowych przy użyciu jednego i tego samego algorytmu, niektóre authenticatory mają dodatkowe funkcje lub cechy interfejsu, które mogą się podobać. Oto niektóre z najciekawszych opcji.
1. Google Authenticator
Wspierane platformy: Android, iOS
Jak zauważyły wszystkie media technologiczne, Google Authenticator jest najłatwiejszy w użyciu ze wszystkich wielu aplikacji 2FA tam. To nawet nie ma żadnych ustawień. Wszystko, co pozwala zrobić, to dodać nowy token (nazwa nadana generatorowi kodu dla indywidualnego konta) lub usunąć istniejący. Aby skopiować kod wszystko, co musisz zrobić, to dotknąć go. To wszystko!
Jednakże taka prostota ma wadę: Jeśli nie podoba ci się coś w interfejsie lub chcesz więcej funkcji, będziesz musiał zainstalować inną aplikację uwierzytelniającą.
+ Bardzo łatwy w użyciu.
2. Duo Mobile
Wspierane platformy: Android, iOS
Duo Mobile jest również niezwykle przyjazny dla użytkownika, minimalistyczny i pozbawiony dodatkowych ustawień. Ma jedną przewagę nad Google Authenticator: Duo Mobile domyślnie utrzymuje kody w ukryciu – aby je zobaczyć, użytkownik musi stuknąć w konkretny token. Jeśli, podobnie jak ja, nie lubisz mieć pęku kodów do wszystkich swoich kont na widoku publicznym za każdym razem, gdy otwierasz Autentykator, to ta funkcja Duo Mobile jest dla ciebie.
+ Ukrywa kody domyślnie.
3. Microsoft Authenticator
Wspierane platformy: Android, iOS
Microsoft również wybrał podejście bez zbędnych ceregieli ze swoim minimalistycznym uwierzytelniaczem. To powiedziawszy, Microsoft Authenticator jest zauważalnie bardziej bogaty w funkcje niż Google Authenticator. Na początek, chociaż wszystkie kody są wyświetlane domyślnie, każdy token może być oddzielnie skonfigurowany do ukrycia.
Po drugie, Microsoft Authenticator upraszcza logowanie do kont Microsoft. Po wprowadzeniu hasła wystarczy dotknąć przycisku w aplikacji, aby potwierdzić logowanie – i to wszystko, nie trzeba nawet wpisywać jednorazowego kodu.
+ Możliwość skonfigurowania ukrywania kodów.
+ Dodatkowe funkcje logowania do kont Microsoft.
4. FreeOTP
Wspierane platformy: Android, iOS
Istnieją cztery powody, dla których możesz wybrać to dziecko od Red Hat. Po pierwsze, oprogramowanie jest open source. Po drugie, jest to najlżejsza aplikacja na naszej liście – wersja na iOS ma tylko 750KB. (Dla porównania, minimalistyczny Google Authenticator wymaga prawie 14MB, a aplikacja Authy, omówiona poniżej, ma aż 44MB.)
Po trzecie, aplikacja domyślnie ukrywa kody, wyświetlając je tylko wtedy, gdy token zostanie dotknięty. Po czwarte, ale nie mniej ważne, FreeOTP pozwala na bardzo elastyczne i ręczne konfigurowanie tokenów, jeśli tylko chcesz. Oczywiście, zwykła metoda tworzenia tokena, poprzez zeskanowanie kodu QR, jest również obsługiwana.
+ Domyślnie ukrywa kody.
+ Zajmuje tylko 750KB.
+ Open source.
+ Maksymalne ustawienia podczas ręcznego tworzenia tokena.
5. Authy
Wspierane platformy: Android, iOS, Windows, macOS, Chrome
Authy to najbardziej fantazyjna z aplikacji 2FA, której główną zaletą jest to, że wszystkie tokeny przechowywane są w chmurze. Umożliwia to dostęp do tokenów z dowolnego urządzenia. Jednocześnie upraszcza to migrację na nowe urządzenia. Nie ma potrzeby ponownego aktywowania 2FA w każdej usłudze, więc można nadal korzystać z istniejących tokenów.
Tokeny w chmurze są szyfrowane kluczem opartym na haśle zdefiniowanym przez użytkownika, co oznacza, że dane są przechowywane bezpiecznie i wcale niełatwo je ukraść. Można też ustawić PIN logowania do aplikacji lub zabezpieczyć ją odciskiem palca, jeśli smartfon jest wyposażony w odpowiedni skaner.
Główną wadą Authy jest to, że wymaga założenia konta powiązanego z numerem telefonu komórkowego – w przeciwnym razie w ogóle nie będzie działać.
+ Tokeny są przechowywane w chmurze, dzięki czemu można ich używać na wszystkich swoich urządzeniach.
+ Z tego samego powodu migracja na inne urządzenia jest bardzo łatwa.
+ Logowanie do aplikacji chronione kodem PIN lub odciskiem palca.
+ Na ekranie wyświetlany jest tylko kod ostatnio używanego tokena.
+ W przeciwieństwie do innych aplikacji, wspiera nie tylko Androida i iOS, ale także Windows, macOS i Chrome.
– Nie działa bez konta Authy powiązanego z numerem telefonu.
6. Yandex.Key
Wspierane platformy: Android, iOS
W mojej opinii, koncepcja stojąca za Yandex.Key sprawia, że jest to najlepsza aplikacja do 2FA. Po pierwsze, nie wymaga natychmiastowej rejestracji – możesz zacząć go używać tak samo łatwo jak Google Authenticator. Po drugie, ma kilka dodatkowych funkcji dostępnych dla tych, którzy nie są nieśmiali.
Po pierwsze, Yandex.Key może być zablokowany za pomocą kodu PIN lub odcisku palca. Po drugie, pozwala na stworzenie chronionej hasłem kopii zapasowej tokenów w chmurze Yandex (ten etap wymaga podania numeru telefonu) i przywrócenie jej na dowolnym urządzeniu, z którego korzystasz. Podobnie, możliwe jest przeniesienie tokenów na nowe urządzenie, gdy trzeba migrować.
Yandex.Key udaje się połączyć prostotę Google Authenticator z rozszerzoną funkcjonalnością Authy, w zależności od tego, co wolisz. Jedyną wadą aplikacji jest to, że interfejs nie jest tak łatwy w użyciu z dużą liczbą tokenów.
+ Minimalizm na początku, rozszerzona funkcjonalność dostępna poprzez ustawienia.
+ Kopie zapasowe tokenów mogą być tworzone w chmurze do użytku na wielu urządzeniach i migracji do nowych.
+ Logowanie do aplikacji jest chronione kodem PIN lub odciskiem palca.
+ Na ekranie wyświetlany jest tylko kod ostatnio używanego tokena.
+ Zastępuje stałe hasło do konta Yandex.
– Przy wielu tokenach nie tak łatwo znaleźć ten potrzebny.
Uwierzytelniacze sprzętowe FIDO U2F: YubiKey i inne
Jeśli aplikacja generująca kody jednorazowe wydaje się zbyt wątłym i nieuchwytnym sposobem ochrony kont, a Ty chcesz czegoś bardziej solidnego i niezawodnego, co zablokuje Twoje konto za pomocą klucza, który dosłownie znajdzie się w Twojej kieszeni, to nie szukaj dalej niż tokeny sprzętowe oparte na standardzie U2F (Universal 2nd Factor), stworzonym przez FIDO Alliance.
Jak działają tokeny FIDO U2F
Tokeny sprzętowe U2F są ulubieńcami specjalistów od bezpieczeństwa, przede wszystkim dlatego, że z perspektywy użytkownika działają bardzo prosto. Aby zacząć, wystarczy podłączyć token U2F do swojego urządzenia i zarejestrować je w kompatybilnym serwisie. Cały proces zajmuje zaledwie kilka kliknięć.
Później, aby potwierdzić logowanie do usługi, należy podłączyć token U2F do urządzenia, z którego się logujemy i stuknąć przycisk tokena (niektóre urządzenia wymagają podania PIN-u lub zeskanowania odcisku palca, ale to dodatkowa funkcja). To wszystko – żadnych skomplikowanych ustawień, wpisywania długich ciągów losowych znaków ani innych bzdur często kojarzonych ze słowem kryptografia.
Włóż klucz i naciśnij przycisk – i to naprawdę wszystko
W tym samym czasie pod maską wszystko jest inteligentne i kryptograficznie zdrowe: Podczas rejestracji tokena w serwisie tworzona jest para kluczy kryptograficznych – prywatny i publiczny. Klucz publiczny jest przechowywany na serwerze, a prywatny w chipie Secure Element, który jest sercem tokena U2F, i nigdy nie opuszcza urządzenia.
Klucz prywatny jest używany do szyfrowania potwierdzenia logowania, które jest przekazywane do serwera i może być odszyfrowane za pomocą klucza publicznego. Jeśli ktoś podszywający się pod Ciebie spróbuje przesłać potwierdzenie logowania zaszyfrowane niewłaściwym kluczem prywatnym, to odszyfrowanie go kluczem publicznym spowoduje powstanie bełkotu, a usługa nie udzieli dostępu do konta.
Jakie są rodzaje urządzeń U2F
Najbardziej znanym i powszechnym przykładem U2F jest YubiKey, wyprodukowany przez Yubico. Firma ta w zasadzie zainicjowała ten standard, ale zdecydowała się uczynić go otwartym, w tym celu powstała organizacja FIDO Alliance. A ponieważ standard jest otwarty, Twój wybór nie jest ograniczony: Urządzenia kompatybilne z U2F są produkowane i sprzedawane przez różne firmy, a sklepy internetowe oferują szereg różnych modeli.
YubiKey – być może najpopularniejszy token U2F
Na przykład firma Google wprowadziła niedawno pakiet uwierzytelniaczy pod szyldem Google Titan Security Keys. W rzeczywistości są to klucze produkowane przez Feitian Technologies (drugi po Yubico najpopularniejszy producent tokenów U2F), dla których Google stworzyło własny firmware.
Oczywiście wszystkie sprzętowe uwierzytelniacze zgodne ze standardem U2F będą równie dobrze współpracować z każdą usługą, która również jest zgodna z tym standardem. Istnieją jednak różnice, z których najważniejszą są interfejsy obsługiwane przez dany klucz. To bezpośrednio określa, z jakimi urządzeniami może on współpracować:
USB: do podłączania do komputerów PC (nie ma znaczenia, czy pracują one pod kontrolą systemu Windows, Mac, czy Linux; klucze działają bez konieczności instalowania jakichkolwiek sterowników). Oprócz zwykłego USB-A, istnieją klucze dla USB-C.
NFC: wymagane do użytku ze smartfonami i tabletami z systemem Android.
Bluetooth: wymagane w urządzeniach mobilnych, które nie mają NFC. Na przykład właściciele iPhone’ów nadal potrzebują uwierzytelniacza opartego na technologii Bluetooth. Chociaż system iOS pozwala teraz aplikacjom na korzystanie z NFC (przed tym rokiem dozwolone było tylko Apple Pay), większość twórców aplikacji zgodnych z U2F nie skorzystała jeszcze z tej funkcji. Uwierzytelniacze Bluetooth mają kilka wad: po pierwsze, muszą być naładowane; po drugie, ich połączenie trwa znacznie dłużej.
Podstawowe modele tokenów U2F zazwyczaj obsługują tylko U2F i kosztują 10$-20$. Inne, droższe urządzenia ($20-$50) mogą również działać jako karta inteligentna, generować hasła jednorazowe (w tym OATH TOTP i HOTP), generować i przechowywać klucze szyfrujące PGP, a także być używane do logowania do systemów Windows, macOS, Linux i tak dalej.
Co wybrać: SMS, aplikacja, czy YubiKey?
Co zatem wybrać do dwuskładnikowego uwierzytelniania? Nie ma uniwersalnej odpowiedzi na to pytanie. Różne wersje i kombinacje 2FA mogą być używane dla różnych usług. Przykładowo, konta o najwyższym priorytecie (skrzynka pocztowa powiązana z innymi kontami itp.) powinny być zabezpieczone do maksimum – czyli zablokowane sprzętowym tokenem U2F z zablokowanymi wszystkimi innymi opcjami 2FA. W ten sposób możesz być pewien, że nikt nigdy nie uzyska dostępu do Twojego konta bez tego tokena.
Dobrą opcją jest połączenie dwóch kluczy do Twojego konta, tak jak w przypadku kluczyków samochodowych: jeden jest zawsze w kieszeni, drugi w bezpiecznym miejscu, na wypadek gdyby pierwszy został zgubiony. Co więcej, możesz używać różnych typów kluczy: Na przykład aplikacja authenticator na smartfonie jako podstawowy, a token U2F lub kartka papieru z hasłami jednorazowymi w sejfie jako zapasowy.
W każdym razie, główną radą jest unikanie używania haseł jednorazowych opartych na SMS-ach, kiedy tylko jest to możliwe. To prawda, nie zawsze jest to możliwe. Usługi finansowe, na przykład, są notorycznie konserwatywne i rzadko oferują uwierzytelnianie poprzez cokolwiek innego niż SMS.
.