¿Este esquema de contraseña es tan seguro como la autenticación de clave pública?

-1

Considere el siguiente algoritmo hipotético para el inicio de sesión basado en contraseña para, digamos, SSH:

  1. El cliente envía su username y client_auth = HMAC(password, client_timestamp) al servidor.

  2. El servidor verifica el client_auth y responde con server_auth = HMAC(password, server_timestamp) .

  3. El cliente verifica el server_auth y comienza la comunicación cifrada usando el key = HMAC(HMAC(password, client_auth), server_auth) compartido.

Una cosa más: asuma que el password fue computado a partir de un secreto oculto que pertenece al cliente, de la siguiente manera: password = HMAC(private_secret, public_server_address) .

El cliente utiliza este único secreto oculto para generar contraseñas para todos los servicios que utiliza.

Mi pregunta es:

¿Este esquema es tan seguro como la autenticación de clave pública? Y si no, ¿cuál es la ventaja de la autenticación de clave pública?

(Obviamente, suponga que private_secret se generó con suficiente entropía).

    
pregunta Mehrdad 06.12.2017 - 14:16
fuente

2 respuestas

4

La ventaja de la autenticación de clave pública es que el servidor solo necesita la clave pública para verificar si el cliente es el reclamado, es decir, el que tiene la clave privada que coincide con la clave pública. Y, dado que la clave privada no se puede derivar prácticamente de la clave pública, un atacante que pone en peligro el servidor no puede utilizar la información capturada para identificarse como el cliente.

En su propuesta, el servidor y el cliente necesitan una contraseña compartida para que el servidor pueda validar al cliente. Mientras intenta proteger esta contraseña durante el transporte, todavía debe almacenarse de alguna manera en el servidor. Por lo tanto, un atacante que comprometa el servidor puede extraer la contraseña. Dado que la contraseña es todo lo que necesita un atacante para identificarse como el cliente, su esquema propuesto es mucho menos seguro que la autenticación basada en clave pública.

    
respondido por el Steffen Ullrich 06.12.2017 - 14:32
fuente
1

Este es un esquema de hashing de contraseñas del lado del cliente que utiliza pimientos en lugar de sales y no hace nada para asegurar la contraseña almacenada en el servidor.

Y el uso del mismo secreto en todos los inicios de sesión de los usuarios hace que esto no sea diferente al uso de la misma contraseña en todos los sitios. Este único detalle presenta numerosos problemas de usabilidad e implementación si desea cambiar ese secreto, por ejemplo.

Si elimina los detalles de la "contraseña global", entonces le quedará un esquema de hashing de contraseña que sería mejor reemplazado por un proceso de hashing de contraseña estándar.

    
respondido por el schroeder 06.12.2017 - 16:00
fuente

Lea otras preguntas en las etiquetas