Per quanto ho capito, la risposta a link , i client nonces hanno lo scopo di impedire agli attaccanti di ammortizzare i costi della forza bruta calcoli hash essendo in grado di riutilizzare i risultati dei calcoli
- per più utenti e / o
- per più server
Tuttavia, anche nella più semplice variante di autenticazione del digest (qop = none), il username
e il realm
(apparentemente univoco per server) e il nonce
(più che solo univoco per server) sono inclusi nel dati che ottengono (solitamente MD5) hash.
Questo non rende già impossibile il riutilizzo degli hash precompilati su utenti / server?
Quindi un client nonce aggiungerebbe alla sicurezza solo se il link è corretto:
The ability to choose the nonce is known to make cryptanalysis much easier [8].
Ma la stessa sezione continua dicendo
However, no way to analyze the MD5 one-way function used by Digest using chosen plaintext is currently known.
Questa è una dichiarazione del 1999. Da allora, sono stati pubblicati vari attacchi di collisione per MD5, ma nessuno di questi sarebbe di aiuto in questo caso, se non sbaglio.
Cosa mi manca?
Aggiornamento Credo che sia logico precisare di cosa stiamo parlando esattamente. Nella forma più semplice di autenticazione del digest, il client calcola e invia al server il risultato di quanto segue:
MD5(MD5(username + ":" + REALM + ":" + password)
+ ":" + NONCE + ":" +
MD5(http-method) + ":" + uri))
Ad eccezione della password, tutti i valori vengono anche inviati in testo normale.
Per rendere più chiaro, le variabili i cui valori sono impostati dal client sono in minuscolo , mentre le variabili che il client recupera dal server sono in maiuscolo . (Questo rende la mia fallacia "regno e nonce" sopra, sottolineata da David Wachtfogel immediatamente ovvia, dato che un MITM può liberamente scegliere quei valori maiuscoli, assumendo che il regno non sia controllato dal cliente, il che, a giudicare dalla "sofisticazione" I visto nella maggior parte delle password di admin, sarebbe la norma, piuttosto che l'eccezione).
Btw, il valore di uri dovrebbe essere un assoluto uri , come http://servername/path?query
, e quindi sarebbe globalmente unico, tuttavia, che dipende dall'implementazione del client e considerando Opera implementa in questo modo , le versioni di Chrome, IE, Firefox ho provato non , e piuttosto uso solo '/ path? query' (afaict questo è in violazione del link ).
Quindi, se una tabella precompilata sarebbe riutilizzabile tra i server dipende dall'implementazione del client, e se il MITM può scegliere, preferirà naturalmente i browser più deboli a Opera, se ha una tabella precalcolata.