it-swarm.com.de

Was ist der Unterschied zwischen Digest- und Standardauthentifizierung?

Was ist der Unterschied zwischen Digest und Basic Authentifizierung?

167
Dot Freelancer

Die Digest-Authentifizierung kommuniziert Anmeldeinformationen in verschlüsselter Form, indem eine Hash-Funktion auf den Benutzernamen, das Kennwort, einen vom Server angegebenen Nonce-Wert, die HTTP-Methode und den angeforderten URI angewendet wird.

Während die Basisauthentifizierung unverschlüsselte Base64-Codierung verwendet.

Daher sollte die Standardauthentifizierung im Allgemeinen nur verwendet werden, wenn Transportschichtsicherheit wie https bereitgestellt wird.

Siehe RFC-2617 für alle wichtigen Details.

171
Andy

HTTP-Basiszugriffsauthentifizierung

  • SCHRITT 1: Der Client fordert Informationen an und sendet einen Benutzernamen und ein Kennwort im Klartext an den Server
  • SCHRITT 2: Der Server antwortet mit den gewünschten Informationen oder einem Fehler

Die Standardauthentifizierung verwendet die base64 - Codierung (nicht die Verschlüsselung) zum Generieren unserer kryptografischen Zeichenfolge, die die Informationen von Benutzername und Kennwort enthält. HTTP Basic muss nicht über SSL implementiert werden. Andernfalls ist es überhaupt nicht sicher. Ich werde also nicht einmal die Idee haben, es ohne zu verwenden.

Profis:

  • Es ist einfach zu implementieren, sodass Ihre Client-Entwickler weniger Arbeit haben und weniger Zeit für die Bereitstellung benötigen, sodass Entwickler möglicherweise eher Ihre API verwenden möchten
  • Im Gegensatz zu Digest können Sie die Kennwörter auf dem Server mit einer beliebigen Verschlüsselungsmethode wie bcrypt speichern, um die Sicherheit der Kennwörter zu erhöhen
  • Es ist nur ein Aufruf des Servers erforderlich, um die Informationen abzurufen. Dadurch ist der Client etwas schneller als bei komplexeren Authentifizierungsmethoden

Nachteile:

  • Die Ausführung von SSL ist langsamer als bei einfachem HTTP, daher sind die Clients etwas langsamer
  • Wenn Sie keine Kontrolle über die Clients haben und den Server nicht zur Verwendung von SSL zwingen können, verwendet ein Entwickler möglicherweise kein SSL, was ein Sicherheitsrisiko darstellt

Zusammenfassend - Wenn Sie die Kontrolle über die Clients haben oder sicherstellen können, dass diese SSL verwenden, ist HTTP Basic eine gute Wahl. Die Langsamkeit des SSL kann durch die Geschwindigkeit, mit der nur eine Anfrage gestellt wird, aufgehoben werden

Syntax der Basisauthentifizierung

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>

HTTP-Digest-Zugriffsauthentifizierung
Bei der Digest-Zugriffsauthentifizierung wird die Hashing-Methode (dh die Digest-Methode wird in kleine Stücke geschnitten) verwendet, um das kryptografische Ergebnis zu generieren. Die HTTP Digest-Zugriffsauthentifizierung ist eine komplexere Form der Authentifizierung, die wie folgt funktioniert:

  • SCHRITT 1: Ein Client sendet eine Anfrage an einen Server
  • SCHRITT 2: Der Server antwortet mit einem speziellen Code (genannt nonce dh n umber verwendet nur einmal ), eine andere Zeichenfolge, die den Bereich darstellt (ein Hash) und fordert den Client zur Authentifizierung auf
  • SCHRITT 3: Der Client antwortet mit dieser Nonce und einer verschlüsselten Version von Benutzername, Passwort und Realm (ein Hash).
  • SCHRITT 4: Der Server antwortet mit den angeforderten Informationen, wenn der Client-Hash mit dem eigenen Hash von Benutzername, Passwort und Bereich übereinstimmt, oder wenn nicht, mit einem Fehler

Profis:

  • Es werden keine Benutzernamen oder Kennwörter im Klartext an den Server gesendet. Dadurch ist eine Nicht-SSL-Verbindung sicherer als eine HTTP-Basisanforderung, die nicht über SSL gesendet wird. Dies bedeutet, dass SSL nicht erforderlich ist, wodurch jeder Anruf etwas schneller wird

Nachteile:

  • Für jeden erforderlichen Aufruf muss der Client 2 ausführen, wodurch der Prozess etwas langsamer als bei HTTP Basic ist
  • HTTP Digest ist anfällig für einen Man-in-the-Middle-Sicherheitsangriff, was im Grunde bedeutet, dass es gehackt werden könnte
  • HTTP Digest verhindert die Verwendung der starken Kennwortverschlüsselung, was bedeutet, dass die auf dem Server gespeicherten Kennwörter gehackt werden können

Zusammenfassend, HTTP Digest ist von Natur aus anfällig für mindestens zwei Angriffe, wohingegen ein Server, der eine starke Verschlüsselung für Kennwörter mit HTTP Basic über SSL verwendet, diese Sicherheitsanfälligkeiten seltener aufweist.

Wenn Sie jedoch keine Kontrolle über Ihre Clients haben, können diese versuchen, die Standardauthentifizierung ohne SSL durchzuführen, was viel weniger sicher ist als Digest.

RFC 2069 Digest Access-Authentifizierungssyntax

Hash1=MD5(username:realm:password)
Hash2=MD5(method:digestURI)
response=MD5(Hash1:nonce:Hash2)

RFC 2617 Digest Access-Authentifizierungssyntax

Hash1=MD5(username:realm:password)
Hash2=MD5(method:digestURI)
response=MD5(Hash1:nonce:nonceCount:cnonce:qop:Hash2)
//some additional parameters added 

source und example

Im Postman sieht das so aus:

enter image description here

Hinweis:

  • Die Schemata Basic and Digest dienen der Authentifizierung mit einem Benutzernamen und einem Geheimnis.
  • Das Trägerschema ist der Authentifizierung mit einem Token gewidmet.
94
Premraj

Lassen Sie uns den Unterschied zwischen den beiden sehen [~ # ~] http [~ # ~] Authentifizierung mit Wireshark (Tool zum Analysieren von gesendeten oder empfangenen Paketen).

1. HTTP-Basisauthentifizierung

Basic

Sobald der Client das richtige Benutzername: Passwort eingibt, überprüft der Webserver in der Datenbank, ob die Anmeldeinformationen korrekt sind, und gewährt den Zugriff auf die Ressource .

So werden die Pakete gesendet und empfangen:

enter image description here Im ersten Paket füllt der Client die Anmeldeinformationen mit der Methode [~ # ~] post [~ # ~] bei der Ressource - _lab/webapp/basicauth_. Der Server antwortet daraufhin zurück mit http antwortcode 200 ok dh der benutzername: passwort waren korrekt.

Detail of HTTP packet

In der Kopfzeile von Authorization wird angezeigt, dass es sich um Basic Authorization handelt, gefolgt von einer zufälligen Zeichenfolge. Diese Zeichenfolge ist die codierte (Base64) Version der Anmeldeinformationen _admin:aadd_ (einschließlich Doppelpunkt).

2. HTTP-Digest-Authentifizierung (RFC 2069)

Bisher haben wir gesehen, dass die Basisauthentifizierung Benutzername: Passwort im Klartext über das Netzwerk sendet. Aber die Digest-Authentifizierung sendet einen [~ # ~] -Hash [~ # ~] des Passworts mit Hash-Algorithmus.

Hier sind Pakete, die die vom Client gestellten Anforderungen und die Antwort vom Server zeigen.

Digest

Sobald der Client die vom Server angeforderten Anmeldeinformationen eingibt, wird das Kennwort mithilfe eines Algorithmus in ein response konvertiert und dann an den Server gesendet Ermöglicht den Zugriff auf die Ressource, andernfalls wird ein 401 Fehler ausgegeben.

Detailed digest auth packet Im obigen Authorization wird der response-String mit den Werten von Username, Realm, Password, _http-method_, URI und Nonce wie im Bild gezeigt:

Response algorithm (Doppelpunkte sind enthalten)

Daher können wir sehen, dass die Digest-Authentifizierung sicherer ist, da sie Hashing (MD5-Verschlüsselung) beinhaltet. Daher können die Paket-Sniffer-Tools das Passwort nicht ermitteln, obwohl in Basic Auth das genaue Passwort in Wireshark angezeigt wurde.

34
BoRRis

Standardauthentifizierung Verwenden Sie base 64 Encoding zum Generieren einer kryptografischen Zeichenfolge, die die Informationen zu Benutzername und Kennwort enthält.

Bei der Digest-Zugriffsauthentifizierung werden die Hashing-Methoden verwendet, um das kryptografische Ergebnis zu generieren

0