Quelle est la différence entre Digest et Authentification de base ?
Quelle est la différence entre Digest et Authentification de base ?
Réponses:
L'authentification Digest communique les informations d'identification sous une forme chiffrée en appliquant une fonction de hachage à: le nom d'utilisateur, le mot de passe, une valeur nonce fournie par le serveur, la méthode HTTP et l'URI demandé.
Alors que l'authentification de base utilise un codage base64 non chiffré .
Par conséquent, l'authentification de base ne doit généralement être utilisée que lorsque la sécurité de la couche de transport est fournie, telle que https.
Voir RFC-2617 pour tous les détails sanglants.
Authentification d'accès de base HTTP
L'authentification de base utilise le codage base64 (pas le cryptage) pour générer notre chaîne cryptographique qui contient les informations du nom d'utilisateur et du mot de passe. HTTP Basic n'a pas besoin d'être implémenté via SSL, mais si vous ne le faites pas, il n'est pas du tout sécurisé. Je ne vais donc même pas envisager l'idée de l'utiliser sans.
Avantages:
Les inconvénients:
En résumé - si vous contrôlez les clients ou pouvez vous assurer qu'ils utilisent SSL, HTTP Basic est un bon choix. La lenteur du SSL peut être annulée par la vitesse de faire une seule demande
Syntaxe de l'authentification de base
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>
Authentification HTTP Digest Access L'authentification
Digest Access utilise les méthodes de hachage (c'est-à-dire les moyens de résumé coupés en petits morceaux) pour générer le résultat cryptographique. L'authentification d'accès HTTP Digest est une forme d'authentification plus complexe qui fonctionne comme suit:
Avantages:
Les inconvénients:
En résumé , HTTP Digest est intrinsèquement vulnérable à au moins deux attaques, tandis qu'un serveur utilisant un cryptage fort pour les mots de passe avec HTTP Basic sur SSL est moins susceptible de partager ces vulnérabilités.
Si vous n'avez pas de contrôle sur vos clients, ils pourraient cependant tenter d'authentifier Basic sans SSL, ce qui est beaucoup moins sécurisé que Digest.
RFC 2069 Syntaxe d'authentification d'accès Digest
Hash1=MD5(username:realm:password)
Hash2=MD5(method:digestURI)
response=MD5(Hash1:nonce:Hash2)
RFC 2617 Syntaxe d'authentification d'accès Digest
Hash1=MD5(username:realm:password)
Hash2=MD5(method:digestURI)
response=MD5(Hash1:nonce:nonceCount:cnonce:qop:Hash2)
//some additional parameters added
Dans Postman ressemble à ceci:
Remarque:
Voyons la différence entre les deux authentifications HTTP à l' aide de Wireshark
(Outil pour analyser les paquets envoyés ou reçus).
1. Authentification de base Http
Dès que le client saisit le bon nom d'utilisateur: mot de passe , comme demandé par le serveur Web, le serveur Web vérifie dans la base de données si les informations d'identification sont correctes et donne accès à la ressource.
Voici comment les paquets sont envoyés et reçus:
Dans le premier paquet, le client remplit les informations d'identification en utilisant la méthode POST à la ressource - lab/webapp/basicauth
. En retour, le serveur répond en retour avec le code de réponse http 200 ok , c'est-à-dire que le nom d'utilisateur: mot de passe était correct.
Maintenant, dans l'en- Authorization
tête, il indique qu'il s'agit d'une autorisation de base suivie d'une chaîne aléatoire. Cette chaîne est la version codée (Base64) des informations d'identification admin:aadd
(y compris les deux-points).
2. Authentification Digest HTTP (RFC 2069)
Jusqu'à présent, nous avons vu que l'authentification de base envoie le nom d'utilisateur: mot de passe en texte brut sur le réseau. Mais l' authentification Digest envoie un HASH du mot de passe en utilisant l'algorithme de hachage.
Voici des paquets montrant les demandes faites par le client et la réponse du serveur.
Dès que le client tape les informations d'identification demandées par le serveur, le mot de passe est converti en un à l' response
aide d'un algorithme, puis est envoyé au serveur, si la base de données du serveur a la même réponse que celle donnée par le client, le serveur donne accès à la ressource , sinon une erreur 401 .
Dans ce qui précède Authorization
, la response
chaîne est calculée en utilisant les valeurs de Username
, Realm
, Password
, http-method
, URI
et Nonce
comme montré dans l'image:
Par conséquent, nous pouvons voir que l'authentification Digest est plus sécurisée car elle implique un hachage (chiffrement MD5), donc les outils de renifleur de paquets ne peuvent pas renifler le mot de passe bien que dans Basic Auth le mot de passe exact ait été affiché sur Wireshark.
L'authentification de base utilise l' encodage de base 64 pour générer une chaîne cryptographique qui contient les informations du nom d'utilisateur et du mot de passe.
L'authentification Digest Access utilise les méthodologies de hachage pour générer le résultat cryptographique