Qual è la differenza tra l' autenticazione Digest e Basic ?
Qual è la differenza tra l' autenticazione Digest e Basic ?
Risposte:
Digest Authentication comunica le credenziali in forma crittografata applicando una funzione hash a: il nome utente, la password, un valore nonce fornito dal server, il metodo HTTP e l'URI richiesto.
Considerando che l'autenticazione di base utilizza non crittografato base64 .
Pertanto, l'autenticazione di base dovrebbe essere generalmente utilizzata solo quando viene fornita la sicurezza del livello di trasporto come https.
Vedi RFC-2617 per tutti i dettagli cruenti.
Autenticazione dell'accesso di base HTTP
L'autenticazione di base utilizza la codifica base64 (non la crittografia) per generare la nostra stringa crittografica che contiene le informazioni di nome utente e password. HTTP Basic non deve essere implementato su SSL, ma se non lo fai, non è affatto sicuro. Quindi non ho nemmeno intenzione di intrattenere l'idea di usarlo senza.
Professionisti:
Contro:
In breve : se hai il controllo dei client o puoi assicurarti che utilizzino SSL, HTTP Basic è una buona scelta. La lentezza dell'SSL può essere annullata dalla velocità di effettuare una sola richiesta
Sintassi dell'autenticazione di 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>
Autenticazione dell'accesso digest Digest L'autenticazione dell'accesso digest
Digest utilizza le metodologie di hashing (ovvero digest significa suddiviso in piccoli pezzi) per generare il risultato crittografico. L'autenticazione dell'accesso al digest HTTP è una forma più complessa di autenticazione che funziona come segue:
Professionisti:
Contro:
In sintesi , HTTP Digest è intrinsecamente vulnerabile ad almeno due attacchi, mentre un server che utilizza una crittografia avanzata per le password con HTTP Basic su SSL ha meno probabilità di condividere queste vulnerabilità.
Se non hai il controllo sui tuoi clienti, tuttavia, potrebbero tentare di eseguire l'autenticazione di base senza SSL, che è molto meno sicuro di Digest.
Sintassi di autenticazione dell'accesso digest Digest RFC 2069
Hash1=MD5(username:realm:password)
Hash2=MD5(method:digestURI)
response=MD5(Hash1:nonce:Hash2)
RFC 2617 Sintassi di autenticazione dell'accesso digest
Hash1=MD5(username:realm:password)
Hash2=MD5(method:digestURI)
response=MD5(Hash1:nonce:nonceCount:cnonce:qop:Hash2)
//some additional parameters added
In Postman appare come segue:
Nota:
Vediamo la differenza tra le due autenticazioni HTTP usando Wireshark
(Strumento per analizzare i pacchetti inviati o ricevuti).
1. Autenticazione di base HTTP
Non appena il client digita il nome utente corretto : password , come richiesto dal server Web, il server Web controlla nel database se le credenziali sono corrette e consente l'accesso alla risorsa.
Ecco come vengono inviati e ricevuti i pacchetti:
Nel primo pacchetto il Cliente riempie le credenziali usando il metodo POST nella risorsa lab/webapp/basicauth
. In cambio il server risponde con il codice di risposta http 200 ok , cioè il nome utente: password erano corretti.
Ora, Authorization
nell'intestazione mostra che si tratta dell'autorizzazione di base seguita da una stringa casuale. Questa stringa è la versione codificata (Base64) delle credenziali admin:aadd
(compresi i due punti).
2 Http Digest Authentication (rfc 2069)
Finora abbiamo visto che l'autenticazione di base invia username: password in chiaro sulla rete. Ma l'Aut Digest invia un HASH della password usando l'algoritmo Hash.
Ecco i pacchetti che mostrano le richieste fatte dal client e la risposta dal server.
Non appena il client digita le credenziali richieste dal server, la password viene convertita in response
utilizzando un algoritmo e quindi inviata al server, se il database del server ha la stessa risposta fornita dal client, il server dà l'accesso alla risorsa , altrimenti un errore 401 .
In quanto sopra Authorization
, la response
stringa viene calcolato usando i valori di Username
, Realm
, Password
, http-method
, URI
e Nonce
come illustrato nell'immagine:
Quindi, possiamo vedere che l'autenticazione Digest è più sicura in quanto comporta l'hashing (crittografia MD5), quindi gli strumenti di sniffer di pacchetti non possono annusare la password sebbene in Auth di base la password esatta sia stata mostrata su Wireshark.
L'autenticazione di base usa la codifica base 64 per generare una stringa crittografica che contiene le informazioni di nome utente e password.
L'autenticazione con accesso digest utilizza le metodologie di hashing per generare il risultato crittografico