Jak łamane są twoje hasła? Jak poprawić bezpieczeństwo haseł?
W tym artykule przedstawiliśmy kilka klasycznych metod łamania haseł oraz podstawowe zasady stojące za tymi podejściami. Odnosząc się do tych koncepcji, przedstawiliśmy praktyki zarówno z perspektywy opiekunów haseł, jak i właścicieli kont, jak poprawić bezpieczeństwo haseł.
Często widzimy wiadomości o wycieku haseł użytkowników niektórych znanych aplikacji z dużą bazą użytkowników. Możesz czuć, że skoro nie używasz tej konkretnej aplikacji, takie incydenty nie mają z tobą nic wspólnego, ale w rzeczywistości jest inaczej.
Ostatnio pojawiła się również na Twitterze informacja, że metody AI mogą znacznie przyspieszyć szybkość łamania haseł. Chcieliśmy więc zrozumieć zawiłości z tym związane i zobaczyć, jak możemy poprawić bezpieczeństwo naszych haseł.
Jak łamane są hasła?
Zazwyczaj hasła do kont są przetwarzane za pomocą różnych algorytmów haszujących, a następnie przechowywane w bazach danych. Możesz odwołać się do naszego poprzedniego bloga aby lepiej zrozumieć haszowanie haseł. Niestety, niektórzy dostawcy usług, pozbawieni zdrowego rozsądku, przechowują hasła w postaci zwykłego tekstu w swoich bazach danych. Ta praktyka może skutkować jeszcze większymi szkodami w przypadku wycieku danych.
Przechowując zahaszowane hasła, nawet administratorzy baz danych nie mają dostępu do twojego oryginalnego hasła, co znacznie zwiększa bezpieczeństwo. Podczas weryfikacji poprawności wprowadzonego hasła, ten sam algorytm haszujący jest używany do przetwarzania wprowadzonego hasła. Następnie wynikowy hash jest porównywany z wartością przechowywaną w bazie danych. Jeśli obie wartości haszujące pasują, wprowadzone hasło jest uznawane za poprawne.
W skrócie, łamanie haseł polega na generowaniu ciągów, które spełniają dozwolone zasady hasła. Następnie polega na ciągłym sprawdzaniu tych ciągów za pomocą wspomnianej metody, aby ostatecznie odkryć poprawne hasło w postaci zwykłego tekstu.
Główne metody łamania haseł
W tej sekcji krótko przedstawimy trzy powszechne sposoby łamania haseł.
Atak siłowy
Ataki siłowe zazwyczaj wyliczają wszystkie możliwości w ramach dozwolonych zasad hasła i próbują je jedna po drugiej.
Na przykład telefony komórkowe mogą ustawić 4-cyfrowe hasło numeryczne. Ataki siłowe będą próbować wszystkie możliwości jedna po drugiej od 0000
, 0001
, 0002
, …, aż do 9999
.
Ataki siłowe są bardzo czasochłonne, ponieważ potrzeba zbyt wielu prób. Zakładając, że długość hasła to $L$, a liczba możliwych znaków na cyfrę hasła to $n$, to liczba możliwości, które trzeba sprawdzić w ataku siłowym, wynosi $n^L$, co jest bardzo dużą liczbą.
Dlatego wiele haseł wymaga kombinacji liczb, dużych i małych liter oraz znaków specjalnych, aby zwiększyć $n$, co znacznie zwiększa liczbę możliwości, a tym samym trudność w złamaniu hasła.
Atak słownikowy
Ataki słownikowe wykorzystują słowa ze słowników, często łącząc je z przestrzeniami, liczbami, specjalnymi symbolami i innymi elementami, aby tworzyć różne kombinacje haseł. Następnie używają tych kombinacji do prób dopasowania haseł.
Wiele osób decyduje się używać zdań o jasnym znaczeniu jako haseł ze względu na łatwość zapamiętania. Ataki słownikowe okazują się skuteczną metodą łamania haseł o takich cechach.
Atak z wykorzystaniem tablicy tęczowej
Tablica tęczowa to wstępnie obliczone mapowanie haseł w postaci zwykłego tekstu na odpowiadające im wartości haszujące. Poprzez bezpośrednie porównanie wartości haszujących przechowywanych w bazie danych z tymi w tablicy tęczowej, każde znalezione dopasowanie może być wykorzystane do wyszukania i bezpośredniego uzyskania odpowiadającego hasła w postaci zwykłego tekstu.
Tablice tęczowe oferują zaletę natychmiastowego dostępu do haseł w postaci zwykłego tekstu, jeśli wartość haszująca została wcześniej obliczona (i zarejestrowana w tablicy tęczowej). Jednak należy zauważyć, że jeśli wartość haszująca nie została wstępnie obliczona (i w związku z tym nie jest obecna w tabeli), nie można użyć tablicy tęczowej.
Oprócz opisanych powyżej metod istnieje wiele innych technik, które nie zostały tutaj omówione. Ogólnie rzecz biorąc, stosuje się kombinację tych metod, aby obejmować wszystkie możliwe hasła i przyspieszyć proces łamania.
Jak przyspieszyć łamanie haseł?
W poprzedniej sekcji krótko przedstawiliśmy kilka klasycznych metod łamania haseł. Na ich podstawie możemy podsumować kilka pomysłów na poprawę prędkości lub skuteczności łamania haseł.
Aby złamać hasło, często konieczne są dwa kroki:
- Określenie przestrzeni wyszukiwania dla hasła (generowanie możliwych haseł)
- Użycie algorytmu haszującego do generowania haszy dla możliwych haseł uzyskanych w poprzednim kroku i porównywanie ich z haszem hasła do złamania
Atak słownikowy i atak z wykorzystaniem tablicy tęczowej wymienione powyżej optymalizują te dwa kroki odpowiednio:
- Atak słownikowy zmniejsza przestrzeń wyszukiwania dla haseł. Opierając się na założeniu, że "użytkownicy często tworzą hasła, używając kombinacji słów z faktycznymi znaczeniami", słowa takie jak
zzzz
nie są zawarte w słowniku, co oznacza, że nie będą próbowane jako potencjalne hasła. Ta praktyka jest podobna do wcześniejszego odrzucania błędnych odpowiedzi. Podobnie jak podczas rozwiązywania pytań wielokrotnego wyboru, chociaż możesz nie być pewny poprawnej opcji, możesz zidentyfikować, które odpowiedzi są zdecydowanie błędne. Usuwając te oczywiście błędne opcje, zwiększasz swoje szanse na poprawne odgadnięcie wśród pozostałych możliwości. - Atak z wykorzystaniem tablicy tęczowej przyspiesza czas wykonania algorytmu haszującego. Dla osób dobrze zorientowanych w strukturach danych, wyszukiwanie jest operacją o złożoności $O(1)$, i żadna operacja nie może być prostsza niż $O(1)$ pod względem złożoności czasowej. W przeciwieństwie do tego, złożoność czasowa często używanych algorytmów haszujących, takich jak MD5 i SHA, wynosi $O(n)$, co jest wyraźnie wolniejsze niż $O(1)$.
W praktyce, optymalizacja procesu łamania haseł również zaczyna się od powyższych dwóch perspektyw. Warto zauważyć, że ze względu na stosunkowo niewielkie pole do optymalizowania złożoności czasowej $O(n)$ w przypadku algorytmów haszujących dla ciągów, więcej uwagi zwraca się na poprawę sprzętu lub metod obliczeniowych, które nie będą tutaj omawiane.
Jak więc AI pomaga łamać hasła?
W całym przedsięwzięciu łamania haseł, rola AI polega na nauce pewnych wzorców i metod konstrukcji z ujawnionych haseł w postaci zwykłego tekstu. Następnie AI może symulować te wzorce konstrukcji haseł, aby wygenerować garść potencjalnych haseł. Następnie AI mo że stosować algorytmy haszujące lub nawet specjalistyczny sprzęt do realizacji łamania haseł.
W rzeczywistości, w porównaniu do innych narzędzi do łamania haseł, PassGAN posiada zabójczą przewagę polegającą na tym, że potrafi "zgadywać najbardziej prawdopodobne hasła tak szybko, jak to możliwe", co jest ideą "zmniejszania przestrzeni wyszukiwania możliwych haseł", o której wspomnieliśmy wcześniej.
Jak uczynić hasła bezpieczniejszymi?
Wyjaśnimy, jak chronić hasła z dwóch perspektyw. Tutaj po prostu zaczniemy od samego hasła, bez omawiania innych środków zapewniających bezpieczeństwo konta, takich jak uwierzytelnianie wieloskładnikowe (MFA) i inne.
Z perspektywy dostawców usług tożsamości
Jako dostawcy usług tożsamości, którzy przechowują wszystkie hasła użytkowników, przypada im odpowiedzialność za ochronę bezpieczeństwa tych haseł. Oto kilka schematów, które można wdrożyć, aby zwiększyć bezpieczeństwo haseł użytkowników:
-
Unikanie przechowywania haseł w postaci zwykłego tekstu: Chociaż może to wydawać się zdrowym rozsądkiem, niektórzy dostawcy usług wciąż przechowują hasła w postaci zwykłego tekstu w swoich bazach danych. Używanie wartości haszujących do przechowywania haseł dodaje warstwę bezpieczeństwa; nawet jeśli baza danych zostanie naruszona, hakerzy muszą włożyć znaczny wysiłek, aby złamać hasła haszowane.
-
Stosowanie limitów szybkości dla interfejsu API weryfikacji hasła: Powróćmy do procesu łamania haseł wspomnianego wcześniej. Integralną częścią tego procesu jest "weryfikacja", czy hasło jest poprawne. Ponieważ hasła są powierzane dostawcom usług tożsamości, są one jedynymi podmiotami, które mogą oferować API do weryfikacji hasła. Ograniczając częstotliwość dostępu do tego API, możemy utrudnić hakerom szybkie próbowanie różnych haseł, nawet jeśli posiadają bardzo prawdopodobne zgadywanki haseł.
-
Wymuszanie bardziej złożonych składni haseł: Na przykład, jak wspomniano wcześniej, większa różnorodność znaków w hasłach o danej długości przyczynia się do zwiększenia złożoności. Dodatkowo, stosując techniki AI podobne do omówionych wcześniej, można ocenić bezpieczeństwo hasła przed jego podaniem. Jeśli hasło zostanie uznane za słabe, użytkownicy mogą być zachęcani do wybrania bardziej solidnej alternatywy.
Z perspektywy użytkowników
Jako właściciele kont i powiązanych aktywów cyfrowych, użytkownicy powinni zwracać szczególną uwagę na zapewnienie bezpieczeństwa haseł do swoich kont.
-
Unikanie używania tego samego hasła na różnych stronach: Po uzyskaniu haseł z niektórych stron, wielu hakerów próbuje wykorzystać te poświadczenia konta do uzyskania dostępu do innych stron. Jeśli wiele kont dla różnych usług ma to samo hasło, istnieje ryzyko utraty kont i wycieku informacji w wspomnianym wcześniej scenariuszu.
-
Wybieranie całkowicie losowych haseł, gdy to możliwe: To podejście pomaga uniknąć ponownego użycia powszechnych wzorców haseł, które większość ludzi stosuje (jak wspomniano wcześniej, używając zdań angielskich), komplikując wysiłki hakerów, aby "zwęzić przestrzeń wyszukiwania hasła" i zwiększając poziom złożoności hasła.
Jako dostawca infrastruktury dla usług tożsamości, Logto wdrożyło wiele z powyższych najlepszych praktyk, aby chronić bezpieczeństwo kont użytkowników. To umożliwia użytkownikom korzystanie z różnych aplikacji bez obaw o utratę konta, jednocześnie pozwalając dostawcom usług online na zapewnienie bezpieczeństwa danych użytkowników z minimalnym wysiłkiem, umożliwiając im skupienie się na swoich podstawowych działaniach biznesowych.