Czym różni się uwierzytelnianie szyfrowane od uwierzytelniania podstawowego innego niż wysyłanie poświadczeń w postaci zwykłego tekstu?
Czym różni się uwierzytelnianie szyfrowane od uwierzytelniania podstawowego innego niż wysyłanie poświadczeń w postaci zwykłego tekstu?
Odpowiedzi:
Główną różnicą jest to, że nie wymaga przesyłania nazwy użytkownika i hasła przez sieć w postaci zwykłego tekstu. Jest również odporny na ataki typu replay, ponieważ wykorzystuje jednorazowy numer z serwera.
Serwer nadaje klientowi jednorazowy numer (numer jednorazowy), który łączy z nazwą użytkownika, dziedziną, hasłem i żądaniem URI. Klient uruchamia wszystkie te pola za pomocą metody mieszania MD5, aby utworzyć klucz skrótu.
Wysyła ten klucz skrótu do serwera wraz z nazwą użytkownika i domeną w celu próby uwierzytelnienia.
Po stronie serwera ta sama metoda jest używana do generowania klucza mieszającego, tylko zamiast używać hasła wpisanego w przeglądarce, serwer wyszukuje oczekiwane hasło użytkownika z jego bazy danych użytkownika. Wyszukuje zapisane hasło dla tej nazwy użytkownika, przechodzi przez ten sam algorytm i porównuje je z tym, co przesłał klient. Jeśli są zgodne, dostęp jest przyznawany, w przeciwnym razie może odesłać 401 Unauthorized (brak logowania lub nieudane logowanie) lub 403 Forbidden (odmowa dostępu).
Uwierzytelnianie szyfrowane jest znormalizowane w dokumencie RFC2617 . W Wikipedii jest ładny przegląd :
Możesz o tym myśleć w ten sposób:
Skrót poświadczeń jest przesyłany przez sieć.
HA1 = MD5(username:realm:password)
Jedynym sposobem uzyskania skrótu HA1 poświadczeń jest znajomość hasła. Serwer zna HA1, ale nie zna hasła, które go wygenerowało. Jeśli HA1 był znany atakującemu, mógłby dostać się do systemu. Więc nie jest wysyłany w dół. Kolejny hash oparty na liczbach jednorazowych itp. Jest wykonywany przed wykonaniem tej czynności i musi być zgodny z podobnymi obliczeniami wykonanymi na serwerze. Tak więc, dopóki serwer utrzymuje prywatność HA1, system jest bezpieczny.