Diffie-Hellman non aiuterebbe qui: un attaccante attivo potrebbe usare un classico MITM e vedere qualunque dato debba essere protetto dal tasto DH. Avrebbe visto lo scambio SRP solo "dall'esterno" ma avrebbe comunque imparato il nome utente.
Il non anonimato dell'utente che effettua la connessione è una proprietà piuttosto fondamentale degli algoritmi Scambio chiavi autenticati tramite password . Tali protocolli resistono agli attacchi di dizionario offline perché entrambe le parti prendono impegni specifici per le password nelle prime fasi del protocollo.
In SRP, il server dovrebbe scegliere un b casuale e inviare B = v + g b al client. Un server falso non sa v ma vorrebbe impararlo, perché conoscere v consente un attacco di dizionario offline (vale a dire, "provare" le password fino a una corrispondenza, sul il computer di un utente malintenzionato, senza interagire più con l'utente o il server reale). Tuttavia, a causa della difficoltà del logaritmo discreto, un utente malintenzionato non può sapere sia v che b che corrispondono a un dato B , a meno che non scelga < em> v e b e calcolato B da quei valori. L'attaccante non può guardare indietro al suo messaggio passato e pensare cose come: "bene, supponiamo che al posto del v che ho usato, avrei dovuto usare v ' perché è quello che il cliente potrebbe aver capito "; se lo fa, perde conoscenza di b , e senza la conoscenza di b è "al di fuori" del successivo scambio Diffie-Hellman (SRP è ancora, nel suo nucleo , un Diffie-Hellman con le campane accese). In questo modo, B è un impegno: il server si impegna a un determinato valore dipendente dalla password v quando invia B , perché non sarà in grado di ottenere alcuna informazione utile dal resto del protocollo a meno che non continui a usare quell'esatto valore di v . Questo è dove si verifica la magia PAKE: questo impegno fa in modo che un utente malintenzionato debba interagire con l'utente o il server reale o entrambi per la password ogni che sta indovinando. Questo riduce gravemente l'efficacia degli attacchi di dizionario, e questo è il punto dei protocolli PAKE.
Poiché il server deve eseguire il commit a un determinato valore dipendente dalla password all'inizio del protocollo ( prima l'autenticazione è effettivamente avvenuta), il server deve sapere di quale password stiamo parlando, quindi un identificatore utente inviato "in chiaro".
Per preservare l'anonimato degli utenti riguardo agli intercettatori, il server deve prima essere autenticato dal client in modo indipendente dall'utente, che è ciò che ottieni da un TLS tunnel con certificati server, ma se si utilizza SRP, non è esattamente per evitare l'uso di certificati? Inoltre, in una configurazione relativa a Internet, l'intercettatore apprenderà ancora l'indirizzo IP dell'utente, che in molti casi è quasi buono come un nome.