0Pricing
Cryptology Academy · Lekcja

SRP: protokół bezpiecznego zdalnego hasła

Poznają Państwo, jak SRP umożliwia wzajemne uwierzytelnianie klienta i serwera bez przechowywania haseł na serwerze.

SRP: protokół bezpiecznego zdalnego hasła to bezpłatna lekcja Cryptology Academy na CoddyKit. To lekcja 2 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.

Przegląd i historia SRP

Protokół Secure Remote Password (SRP) został opracowany przez Toma Wu na Uniwersytecie Stanforda i opublikowany jako RFC 2945 w 2000 roku; później zdefiniowano jego ulepszoną wersję SRP-6a. SRP umożliwia uwierzytelnianie wzajemne na podstawie wspólnego hasła bez przesyłania samego hasła, nawet w postaci zaszyfrowanej.

Serwer przechowuje weryfikator, a nie hasło

Podczas rejestracji w SRP klient oblicza weryfikator hasła v = g^x mod N, gdzie x = H(salt || password), a N jest dużą bezpieczną liczbą pierwszą. Serwer przechowuje wyłącznie sól i weryfikator v. Nawet jeśli baza danych serwera zostanie przejęta, przechowywany weryfikator nie ujawnia bezpośrednio hasła.

Generowanie klucza sesji SRP

Podczas logowania w SRP klient i serwer przeprowadzają wymianę podobną do Diffiego-Hellmana, która generuje wspólny klucz sesji. Obliczenia po obu stronach uwzględniają wartość wyprowadzoną z hasła, dlatego wynikowy klucz sesji może zostać poprawnie obliczony wyłącznie przez kogoś, kto zna odpowiednio hasło i weryfikator.

Uwierzytelnianie wzajemne w SRP

SRP zapewnia uwierzytelnianie wzajemne: klient udowadnia znajomość hasła, a serwer udowadnia, że posiada prawidłowy weryfikator. Zapobiega to atakom phishingowym, w których fałszywy serwer próbuje zebrać informacje o haśle, ponieważ fałszywy serwer nie może poprawnie zakończyć wymiany SRP bez prawdziwego weryfikatora.

Obliczanie weryfikatora

Weryfikator oblicza się jako v = g^x mod N, gdzie x = H(salt || password), g jest generatorem, a N jest bezpieczną liczbą pierwszą o długości 2048 bitów lub większej. Problem logarytmu dyskretnego sprawia, że odzyskanie x na podstawie v jest obliczeniowo niewykonalne. Hasło można zweryfikować wyłącznie poprzez pomyślne przeprowadzenie pełnej wymiany SRP.

Ulepszenia w SRP-6a

SRP-6a eliminuje słabości pierwotnych projektów SRP-3 i SRP-6, wprowadzając parametr mnożnika k = H(N, g) oraz zmieniając kolejność obliczeń po stronie klienta i serwera. Zmiany te zapobiegają niektórym atakom zgadywania typu dwa za jednym razem i zapewniają, że udział serwera zostaje wcześnie powiązany z protokołem.

SRP w systemach produkcyjnych

SRP znalazł szerokie zastosowanie w rzeczywistych systemach. Firma Apple używa SRP do synchronizacji iCloud Keychain, aby umożliwić urządzeniom pobieranie danych pęku kluczy bez ujawniania hasła do konta serwerom Apple. 1Password korzystało z SRP w swoim modelu uwierzytelniania, aby zapobiegać ujawnieniu danych uwierzytelniających po stronie serwera.

SRP zapobiega phishingowi

Ponieważ SRP generuje klucz sesji wiążący zarówno hasło, jak i weryfikator serwera, serwer phishingowy nie może poprawnie zakończyć uzgadniania SRP. Użytkownik łączący się z witryną phishingową przez SRP nie przejdzie uwierzytelniania, co zapewnia wbudowaną właściwość chroniącą przed phishingiem, nieobecną w tradycyjnym przesyłaniu haseł.

Ograniczenia SRP

SRP jest kosztowny obliczeniowo i wymaga potęgowania modularnego na dużych liczbach całkowitych (co najmniej 2048-bitowych). Jego poprawna implementacja jest złożona, a wiele subtelnych problemów związanych z walidacją parametrów doprowadziło do powstania podatnych implementacji. Protokół wymaga również bezpiecznego kanału (TLS), aby zapobiec pasywnemu podsłuchiwaniu samej wymiany.

Zestawy szyfrów TLS-SRP

RFC 5054 definiuje zestawy szyfrów TLS-SRP, które integrują uwierzytelnianie wzajemne SRP bezpośrednio z uzgadnianiem TLS. Eliminuje to potrzebę używania certyfikatów serwera, a jednocześnie zapewnia szyfrowane uwierzytelnianie wzajemne. TLS-SRP zyskał jednak w praktyce niewielką popularność, ponieważ pojawiły się nowocześniejsze alternatywy, takie jak FIDO2 i OPAQUE.

SRP a nowoczesne alternatywy

Choć SRP był przełomowym rozwiązaniem, nowoczesne alternatywy, takie jak OPAQUE, zapewniają silniejsze gwarancje bezpieczeństwa (odporność na wstępne obliczenia), a FIDO2/passkeys całkowicie eliminują hasła. W nowych systemach preferowane są OPAQUE lub FIDO2, ale SRP nadal jest prawidłowym wyborem dla systemów wymagających uwierzytelniania wzajemnego za pomocą hasła bez podatności na phishing.

Sprawdzenie weryfikatora SRP

Co w protokole SRP serwer przechowuje zamiast hasła użytkownika?

Podsumowanie lekcji: uwierzytelnianie SRP

SRP przechowuje weryfikator hasła, a nie hasło, generuje wspólny klucz sesji za pomocą wymiany podobnej do DH i zapewnia odporne na phishing uwierzytelnianie wzajemne. SRP-6a zwiększa odporność pierwotnego projektu na ataki zgadywania. Pęk kluczy iCloud firmy Apple oraz 1Password używają SRP w systemach produkcyjnych. OPAQUE i FIDO2 to nowocześni następcy SRP przeznaczeni do nowych systemów.

Często zadawane pytania

Czy lekcja „SRP: protokół bezpiecznego zdalnego hasła” jest bezpłatna?

Tak — pełny tekst „SRP: protokół bezpiecznego zdalnego hasła” 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 „SRP: protokół bezpiecznego zdalnego hasła”?

Poznają Państwo, jak SRP umożliwia wzajemne uwierzytelnianie klienta i serwera bez przechowywania haseł na serwerze. Ć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 2 z 4.

Ile czasu zajmuje lekcja „SRP: protokół bezpiecznego zdalnego hasła”?

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