Cryptology Academy · Lekcja

Podstawowy problem uwierzytelniania hasłem

Przeanalizują Państwo, dlaczego tradycyjne uwierzytelnianie hasłem tworzy powierzchnie ataku po stronie serwera oraz jakie protokoły rozwiązują ten problem.

Lekcja 1 z 413 kroki

Podstawowy problem uwierzytelniania hasłem to bezpłatna lekcja Cryptology Academy na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Cryptology Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Cryptology Academy zawiera 4 lekcji w sumie.

Tradycyjny model haseł

W tradycyjnym uwierzytelnianiu za pomocą hasła klient wysyła hasło lub jego skrót do serwera, który porównuje je z zapisaną wartością. Ten model jest prosty, ale koncentruje ogromne ryzyko po stronie serwera: przejęcie bazy danych ujawnia jednocześnie dane uwierzytelniające wszystkich użytkowników.

Przejęcie serwera i łamanie skrótów

Gdy atakujący włamie się do serwera i wykradnie bazę haseł, może przeprowadzić offline'owy atak słownikowy z pełną szybkością GPU, bez ograniczenia liczby prób. Współczesne procesory GPU mogą sprawdzać miliardy haseł na sekundę względem skrótów bcrypt lub SHA-256, przez co słabe lub często używane hasła można odzyskać bez większego trudu.

Ponowne używanie haseł potęguje skutki wycieków

Badania niezmiennie pokazują, że większość użytkowników używa tych samych haseł w wielu serwisach. Jedno przejęcie serwera ujawnia więc dane uwierzytelniające działające także w innych usługach. Ataki typu credential stuffing automatyzują sprawdzanie wyciekłych par nazwy użytkownika i hasła w popularnych witrynach, zamieniając jeden wyciek w wiele kolejnych.

Phishing omija zabezpieczenia po stronie serwera

Wzmacnianie haseł po stronie serwera (silne funkcje skrótu, solenie, ograniczanie liczby prób) nie zapewnia ochrony przed phishingiem. Gdy użytkownik wpisze hasło na fałszywej stronie, atakujący bezpośrednio uzyskuje hasło w jawnym tekście, niezależnie od tego, jak dobrze przechowuje je prawidłowy serwer. Phishing jest obecnie dominującą metodą kradzieży danych uwierzytelniających.

Credential stuffing na masową skalę

Bazy danych zawierające miliardy wyciekłych par nazw użytkowników i haseł z historycznych naruszeń są publicznie dostępne w dark webie. Atakujący używają zautomatyzowanych narzędzi do testowania tych danych uwierzytelniających w instytucjach finansowych, serwisach e-commerce i u dostawców poczty elektronicznej na przemysłową skalę. Odnoszą sukces, gdy użytkownicy ponownie wykorzystali hasło ujawnione podczas wcześniejszego naruszenia.

Serwer poznaje Państwa hasło

W tradycyjnym uwierzytelnianiu za pomocą hasła serwer z konieczności poznaje hasło użytkownika w jawnym tekście podczas logowania (nawet jeśli tylko przez krótką chwilę, przed obliczeniem skrótu). Oznacza to, że każdemu operatorowi serwera trzeba w pełni ufać, że nie wykorzysta, nie zapisze w logach ani przypadkowo nie ujawni danych uwierzytelniających, czego w praktyce rzadko można zagwarantować.

Czego naprawdę potrzebujemy

Idealny protokół uwierzytelniania pozwalałby użytkownikowi udowodnić znajomość hasła bez ujawniania go serwerowi. Serwer również udowadniałby, że jest prawidłowym serwerem (uwierzytelnianie wzajemne), zapobiegając phishingowi. Przejęta baza danych serwera nie ujawniałaby atakującemu niczego użytecznego.

Dowód z wiedzą zerową zastosowany do uwierzytelniania

Dowody z wiedzą zerową zapewniają teoretyczne podstawy takiego rozwiązania: dowodzący może przekonać weryfikatora o prawdziwości informacji dotyczącej sekretu bez ujawniania samego sekretu. Protokoły uwierzytelniania za pomocą hasła, takie jak SRP i OPAQUE, wykorzystują te zasady, aby umożliwić uwierzytelnianie bez bezpośredniego przesyłania hasła i bez przechowywania hasła po stronie serwera.

Odporność na ataki słownikowe

Silne protokoły uwierzytelniania za pomocą hasła powinny być odporne na ataki słownikowe offline, nawet jeśli dane przechowywane przez serwer zostaną w całości przejęte. Oznacza to, że przechowywany weryfikator nie może nadawać się bezpośrednio do podszycia się pod użytkownika ani umożliwiać wydajnego zgadywania hasła offline bez współpracy serwera.

Problem zaufania na dużą skalę

Przy setkach usług wymagających uwierzytelniania tradycyjny model wymaga zaufania każdemu operatorowi usługi, któremu powierzany jest sekret mogący być ponownie używany w innych miejscach. Rozwiązaniem jest całkowite wyeliminowanie przesyłania haseł, przechowywanie wyłącznie niewykorzystywalnych ponownie weryfikatorów oraz powiązanie uwierzytelniania z tożsamością konkretnego serwera w celu zapobiegania phishingowi.

Droga naprzód

Do nowoczesnych rozwiązań należą SRP (Secure Remote Password), OPAQUE oraz FIDO2/passkeys. Każde z nich rozwiązuje inne aspekty podstawowego problemu. SRP i OPAQUE eliminują znajomość hasła po stronie serwera. FIDO2/passkeys całkowicie eliminują hasła, wykorzystując kryptografię klucza publicznego powiązaną z konkretnym originem.

Sprawdzenie słabości uwierzytelniania za pomocą hasła

Przed którym atakiem NIE chroni silne haszowanie haseł po stronie serwera (np. bcrypt)?

Podsumowanie lekcji: problem haseł

Tradycyjne uwierzytelnianie za pomocą hasła wymaga od serwerów weryfikowania sekretów, które poznają, umożliwia łamanie haseł offline po naruszeniach bezpieczeństwa i jest podatne na phishing. Ponowne używanie haseł zmienia pojedyncze naruszenia w awarie całego systemu. Idealny system zapewnia uwierzytelnianie wzajemne bez przesyłania sekretu, przechowuje wyłącznie weryfikatory, których nie można złamać, i wiąże uwierzytelnianie z tożsamością serwera.

Bezpłatny start

Ucz się Cryptology Academy dzięki korepetycjom AI — za darmo

Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.

Kursy
67
Lekcje
261

Często zadawane pytania

Czy lekcja „Podstawowy problem uwierzytelniania hasłem” jest bezpłatna?

Tak — pełny tekst „Podstawowy problem uwierzytelniania hasłem” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Cryptology Academy, przejdź na CoddyKit PRO. Kurs Cryptology Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Podstawowy problem uwierzytelniania hasłem”?

Przeanalizują Państwo, dlaczego tradycyjne uwierzytelnianie hasłem tworzy powierzchnie ataku po stronie serwera oraz jakie protokoły rozwiązują ten problem. Ćwiczysz Cryptology Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Cryptology Academy?

Nie wymagamy żadnego doświadczenia. Cryptology Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.

Ile czasu zajmuje lekcja „Podstawowy problem uwierzytelniania hasłem”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Cryptology Academy?

Tak. Każda lekcja Cryptology Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Podstawowy problem uwierzytelniania hasłem
  2. SRP: protokół bezpiecznego zdalnego hasła
  3. Protokoły PAKE i ich właściwości
  4. Uwierzytelnianie bez haseł: WebAuthn i FIDO2
← Powrót do Cryptology Academy