Diffie-Hellman no ayudaría aquí: un atacante activo podría usar un MITM clásico MITM y ver los datos que se supone que están protegidos por la clave DH. Solo vería el intercambio de SRP "desde el exterior", pero aún así aprendería el nombre de usuario.
El no anonimato del usuario que se conecta es una propiedad fundamental de los algoritmos de Password-Authenticated Key Exchange . Dichos protocolos se resisten a los ataques de diccionario sin conexión porque ambas partes hacen compromisos específicos de contraseña en las primeras etapas del protocolo.
En SRP, el servidor debe elegir un b aleatorio, y enviar B = v + g b al cliente. Un servidor falso no sabe v pero le gustaría aprenderlo, porque saber v permite un ataque de diccionario sin conexión (es decir, "intentar" contraseñas hasta que una coincida, en el la propia computadora del atacante, sin interactuar más con el usuario o el servidor real). Sin embargo, debido a la dificultad del logaritmo discreto, un atacante no puede saber tanto v como b que coinciden con un B dado, a menos que elija < em> v y b y calculamos B a partir de esos valores. El atacante no puede mirar atrás a su mensaje pasado y pensar cosas como: "bueno, supongamos que en lugar del v que usé, debería haber usado v ' porque eso es lo que el cliente pudo haber entendido "; si lo hace, entonces pierde el conocimiento de b , y sin el conocimiento de b está "fuera" del intercambio Diffie-Hellman posterior (SRP es, en su esencia, , un Diffie-Hellman con campanas encendidas). De esa manera, B es un compromiso: el servidor confirma a un valor determinado dependiente de la contraseña v cuando envía B , porque no podrá obtener ninguna información útil del resto del protocolo a menos que siga usando ese valor exacto de v . Esto es donde ocurre la magia de PAKE: este compromiso garantiza que un atacante debe interactuar con el usuario o el servidor real o con ambos para la contraseña cada que está adivinando. Esto reduce considerablemente la eficiencia de los ataques de diccionario, y ese es el punto de los protocolos PAKE.
Dado que el servidor debe comprometerse con un valor determinado que depende de la contraseña al comienzo del protocolo ( antes la autenticación realmente se ha producido), el servidor debe saber de qué contraseña estamos hablando, por lo tanto, una identificador de usuario enviado "en claro".
Para preservar el anonimato del usuario con respecto a los escuchas ilegales, el servidor primero debe ser autenticado por el cliente de manera independiente, que es lo que se obtiene de un TLS túnel con certificados de servidor, pero si usa SRP, ¿no es precisamente para evitar el uso de certificados? Además, en una configuración relacionada con Internet, el intruso seguirá aprendiendo la dirección IP del usuario, que en muchos casos es casi tan bueno como un nombre.