Un problema con muchos sistemas de inicio de sesión de respuesta de desafío es que el servidor tiene que almacenar una contraseña equivalente. Por ejemplo, si el servidor almacena SHA1 (salt + contraseña), y un atacante captura ese hash, entonces podrían usar directamente el hash para iniciar sesión, sin tener que descifrar la contraseña.
Creo que hay algunas variaciones de inicio de sesión de desafío-respuesta que evitan esta debilidad. En particular, he escuchado que las versiones más recientes de MySQL lo han arreglado. No tengo referencias ni más información sobre esto, pero me gustaría saber cómo se puede hacer esto. Puedo imaginar algunos enfoques, pero preferiría usar un protocolo estándar revisado por pares.
Soy consciente de que SRP resuelve este problema. Sin embargo, SRP es más un protocolo de clave pública que un desafío-respuesta. Estoy particularmente interesado en los protocolos que solo utilizan cifrados simétricos, hashes y quizás algunos XORing, etc.