Jaka jest różnica między Digest i podstawowe uwierzytelnianie?
Jaka jest różnica między Digest i podstawowe uwierzytelnianie?
Odpowiedzi:
Uwierzytelnianie szyfrowane komunikuje poświadczenia w postaci zaszyfrowanej poprzez zastosowanie funkcji skrótu do: nazwy użytkownika, hasła, wartości nonce podanej przez serwer, metody HTTP i żądanego identyfikatora URI.
Podczas gdy uwierzytelnianie podstawowe wykorzystuje niezaszyfrowane kodowanie base64.
Dlatego podstawowego uwierzytelnienia należy zasadniczo używać tylko wtedy, gdy zapewnione jest bezpieczeństwo warstwy transportowej, takie jak https.
Zobacz RFC-2617, aby poznać wszystkie krwawe szczegóły.
Uwierzytelnianie dostępu podstawowego HTTP
Uwierzytelnianie podstawowe wykorzystuje kodowanie base64 (nie szyfrowanie) do generowania naszego ciągu kryptograficznego, który zawiera informacje o nazwie użytkownika i haśle. HTTP Basic nie musi być implementowany przez SSL, ale jeśli nie, to wcale nie jest bezpieczny. Więc nawet nie zamierzam bawić się bez tego.
Plusy:
Cons:
Podsumowując - jeśli masz kontrolę nad klientami lub możesz upewnić się, że używają protokołu SSL, HTTP Basic jest dobrym wyborem. Powolność protokołu SSL można anulować przez szybkość wysłania tylko jednego żądania
Składnia podstawowego uwierzytelnienia
Value = username:password
Encoded Value = base64(Value)
Authorization Value = Basic <Encoded Value>
//at last Authorization key/value map added to http header as follows
Authorization: <Authorization Value>
Uwierzytelnianie dostępu Digest HTTP Uwierzytelnianie dostępu
Digest wykorzystuje metody mieszania (tj. Skrót oznacza cięcie na małe kawałki) w celu wygenerowania wyniku kryptograficznego. Uwierzytelnianie dostępu HTTP Digest jest bardziej złożoną formą uwierzytelniania, która działa w następujący sposób:
Plusy:
Cons:
Podsumowując , HTTP Digest jest z natury podatny na co najmniej dwa ataki, podczas gdy serwer używający silnego szyfrowania haseł z HTTP Basic przez SSL ma mniejsze szanse na udostępnienie tych luk.
Jeśli nie masz kontroli nad klientami, mogą oni jednak spróbować przeprowadzić uwierzytelnianie podstawowe bez SSL, co jest znacznie mniej bezpieczne niż Digest.
RFC 2069 Składnia uwierzytelnienia dostępu szyfrowanego
Hash1=MD5(username:realm:password)
Hash2=MD5(method:digestURI)
response=MD5(Hash1:nonce:Hash2)
RFC 2617 Składnia uwierzytelnienia dostępu szyfrowanego
Hash1=MD5(username:realm:password)
Hash2=MD5(method:digestURI)
response=MD5(Hash1:nonce:nonceCount:cnonce:qop:Hash2)
//some additional parameters added
W Postman wygląda następująco:
Uwaga:
Zobaczmy różnicę między dwoma uwierzytelnieniami HTTP za pomocą Wireshark
(Narzędzie do analizy pakietów wysłanych lub odebranych).
1. Podstawowe uwierzytelnianie HTTP
Gdy tylko klient wpisze prawidłową nazwę użytkownika: hasło , zgodnie z żądaniem serwera WWW, serwer internetowy sprawdza w Bazie danych, czy poświadczenia są poprawne, i zapewnia dostęp do zasobu.
Oto, w jaki sposób pakiety są wysyłane i odbierane:
W pierwszym pakiecie klient wypełnia dane uwierzytelniające za pomocą metody POST w zasobie -. lab/webapp/basicauth
W zamian serwer odpowiada z powrotem kodem odpowiedzi HTTP 200 ok , tj. Nazwa użytkownika: hasło były poprawne.
Teraz w Authorization
nagłówku pokazuje, że jest to Podstawowa autoryzacja, po której następuje jakiś losowy ciąg. Ten ciąg jest zakodowaną (Base64) wersją poświadczeń admin:aadd
(w tym dwukropka).
2) Http Digest Authentication (rfc 2069)
Do tej pory widzieliśmy, że Podstawowe uwierzytelnianie wysyła nazwę użytkownika: hasło w postaci zwykłego tekstu przez sieć. Ale Digest Auth wysyła HASH hasła przy użyciu algorytmu Hash.
Oto pakiety pokazujące żądania wykonane przez klienta i odpowiedzi z serwera.
Gdy tylko klient wpisze poświadczenia wymagane przez serwer, hasło jest konwertowane na response
algorytm, a następnie wysyłane do serwera. Jeśli baza danych serwera ma taką samą odpowiedź, jak klient, serwer daje dostęp do zasobu , w przeciwnym razie a błąd 401 .
W powyższym Authorization
The response
ciąg jest obliczana na podstawie wartości Username
, Realm
, Password
, http-method
,URI
i Nonce
, jak pokazano na rysunku:
W związku z tym możemy zobaczyć, że uwierzytelnianie szyfrowane jest bezpieczniejsze, ponieważ obejmuje Hashing (szyfrowanie MD5), więc narzędzia do wykrywania pakietów nie mogą wykryć Hasła, chociaż w Autoryzacji podstawowej dokładne hasło zostało pokazane w Wireshark.
Uwierzytelnianie podstawowe wykorzystuje kodowanie podstawowe 64 do generowania ciągu kryptograficznego zawierającego informacje o nazwie użytkownika i haśle.
Uwierzytelnianie dostępu Digest korzysta z metodologii mieszania w celu wygenerowania wyniku kryptograficznego