Autenticación de inicio de sesión de Challenge Challenge con contraseña Salt

3

Quiero implementar una autenticación de inicio de sesión de desafío-respuesta para mi aplicación web.

Tengo entendido que el servidor tiene que devolver la sal de la contraseña para el usuario para que el usuario pueda calcular el hash de la contraseña en el lado del cliente y luego enviarla de vuelta al servidor para comparar y verificar si el usuario está autenticado o no.

Sé que este tipo de autenticación es vulnerable a los ataques de diccionario porque el atacante puede ver la sal de contraseña en texto sin formato y la fuerza bruta ataca el servidor con esa sal de contraseña.

Como siempre, las capas de seguridad son las mejores, así que también agregaría SSL a la ecuación, de modo que el atacante tendría que romper SSL y forzar la contraseña con el saltador.

¿Hay formas en que pueda mejorar esto? He buscado en SRP (Contraseña remota segura) pero parece realmente complejo, mientras que el desafío-respuesta puede proporcionar tanto beneficio.

    
pregunta Chrisgozd 23.04.2014 - 06:11
fuente

2 respuestas

6

Si está utilizando SSL, ¿por qué enviaría un mensaje Salt? Todo lo que necesita es permitir al usuario enviar el nombre de usuario y la contraseña y puede calcular el lado del servidor H (mensaje + sal). No tiene sentido enviar la sal al usuario. Solo asegúrate de usar un algoritmo de hashing adecuado como PBKDF2, bcrypt o scrypt.

Además, si ha roto SSL, no importaría si envía la contraseña o el hash, ya que podría interceptar fácilmente el hash y realizar un ataque de repetición. A menos que, por supuesto, el desafío cambie con cada solicitud de autenticación única que requiera que almacene la contraseña en formato de texto descifrable o simple. Lo que puede ser un riesgo de seguridad por sí solo, además sería susceptible a un hombre de brigada en el ataque central.

Cumpla con los buenos esquemas seguros, el nombre de usuario y la contraseña en ssl es seguro, no intente rodar los suyos propios.

    
respondido por el Lucas Kauffman 23.04.2014 - 06:34
fuente
0

Si estuviera diseñando un sistema de desafío y respuesta, utilizaría un sistema inteligente en lugar de los sistemas computables estándar sugeridos.

Consideraría el desafío como un método para pasar información al respondedor que es probable que solo el respondedor aprecie e interprete correctamente. La respuesta al desafío indicaría que el respondedor ha interpretado la información correctamente, entonces consideraría una respuesta adicional del retador, si la interpretación había sido correcta o no y una prueba adicional del respondedor nuevamente emitió un juicio del segundo desafío. haciendo una respuesta adicional.

El intercambio de información puede ser extremadamente variado haciendo que una respuesta requiera o niegue caracteres en una posición específica en lo que parece ser un desafío de conjunto de caracteres generado aleatoriamente. El desafío cambiaría cada vez y requeriría que el respondedor respondiera con un personaje de un conjunto predefinido en una posición particular en su respuesta de carácter aleatorio. El desafío y la respuesta podrían ser de cualquier longitud, sensiblemente dentro de parámetros razonables y las posiciones requeridas podrían ser modales para hacer la identificación aún más difícil. Si se configuraran los requisitos de posición y los caracteres automáticos y definidos en una tabla simple, la complejidad podría aumentarse mediante la incorporación de varias condiciones de aceptación y denegación más los cambios condicionales en función de los grupos de caracteres / longitud de cadena, etc. Se podría establecer cada conjunto de condiciones y respuestas. ser único para cada respondedor que debería tener acceso al retador. Estos podrían transmitirse por separado de la misma manera que las contraseñas pueden intercambiarse.

    
respondido por el challenger 11.07.2016 - 13:54
fuente

Lea otras preguntas en las etiquetas