¿Podría utilizarse PKE como una mejor alternativa a SRP para la autenticación?

2

Si entendí SRP correctamente, su punto débil es durante el registro de un usuario al enviar el verificador al servidor.

Digamos que el Servidor conoce la PubKey (Usuario) del Usuario y el Usuario conoce la PubKey (Servidor) del Servidor. Para la autenticación, el Servidor envía un secreto aleatorio cifrado con la PubKey (Usuario) al usuario. El usuario descifra el secreto con su PrivKey (Usuario) y encripta el secreto con el PubKey (Servidor) y lo envía de vuelta. Después de hacerlo, el Servidor descifra el secreto con su PrivKey (Servidor) y lo compara con el enviado al Usuario, si es correcto, el usuario está autenticado.

¿Eso sería más seguro que SRP y le brinda la misma ventaja (no almacenar las contraseñas de usuario) que SRP?

    
pregunta PKEvsSRP 06.10.2015 - 10:08
fuente

2 respuestas

1

Cuando dices,

  

Digamos que el servidor conoce la PubKey (usuario) del usuario y el usuario conoce la PubKey (servidor) del servidor.

está presentando un problema mucho más fácil de lo que SRP necesita resolver. Sencillamente, si cada parte ya conoce las claves públicas de la otra parte, entonces hemos terminado. Toda la autenticación mutua y el intercambio de claves es entonces fácil. No será necesario transmitir ningún secreto (como el verificador SRP) ni se almacenará ningún secreto más allá de las propias claves privadas.

Los sistemas

SRP y otros PAKE (Intercambio de claves autenticado basados en contraseña) se vuelven innecesarios en un mundo en el que las partes comunicantes ya se conocen entre sí las claves públicas.

    
respondido por el Jeffrey Goldberg 07.10.2015 - 16:28
fuente
1

El punto principal del mecanismo de intercambio de claves autenticado por contraseña es permitir el establecimiento de un secreto compartido cuando los dos las partes no tienen un mejor mecanismo de autenticación mutua que un secreto compartido de baja entropía (la contraseña).

Si el cliente puede saber, con una certeza razonable, la clave pública del servidor, entonces el cliente simplemente puede usar ese conocimiento para abrir un túnel seguro con el servidor y enviar la contraseña en ese túnel. Esto es lo que sucede todo el tiempo cuando un usuario humano con un navegador web se conecta a un servidor HTTPS y escribe su contraseña: el cliente autentica el servidor gracias a su certificado, y eso es suficiente para encender un SSL, en cuyo punto la contraseña se puede enviar "tal cual" ya que el cliente tiene alguna garantía de que está hablando con el servidor esperado.

Por lo tanto, si comienza por suponer que el cliente conoce la clave pública del servidor, entonces no hay necesidad de usar el SRP. Además, si asume que el servidor también conoce la clave pública del cliente, ya no tendrá que usar una contraseña en absoluto.

Considere el registro de la contraseña: antes de esa operación, no hay un "secreto compartido" entre el cliente y el servidor. Sin embargo, el cliente utilizará posteriormente ese conocimiento del secreto compartido para autenticar el servidor. Esto significa que debe haber algún otro método de autenticación que se use en el momento del registro, mediante el cual el cliente puede asegurarse de que está configurando las cosas con el servidor original.

Puede visualizar el caso de un cliente que se registra a través de una interfaz web con SSL (el cliente utiliza el certificado del servidor para asegurarse de que habla con el servidor original); luego la contraseña registrada se utilizará a partir de entonces, p. ej. desde un dispositivo cliente donde la validación de certificados no se puede hacer de manera conveniente.

    
respondido por el Thomas Pornin 07.10.2015 - 17:16
fuente

Lea otras preguntas en las etiquetas