Usar par de clave pública / privada para la autenticación de contraseña

-1

¿Es seguro generar un par de claves públicas / privadas a partir de la contraseña de un usuario utilizando PBKDF2, y enviar la clave pública al servidor para que se almacene como clave del usuario? Luego, cuando el usuario inicia sesión, generará nuevamente la clave privada a partir de la contraseña y la usará para comunicarse con el servidor.

La sal será generada por el servidor y enviada al cliente como parte del formulario de registro; sin embargo, esta sal sería completamente única para cada solicitud, y la sal elegida se enviaría de nuevo al servidor con la clave pública.

Mi pensamiento es que esto resolvería el problema de atar los recursos del servidor si muchos usuarios quisieran registrarse. También me pregunto si sería más seguro que simplemente sal y hachís un millón de veces.

Obviamente, esto es vulnerable a un ataque MitM durante el registro, pero ¿qué no lo es? Debería ser inmune a un intruso, ¿verdad? Excepto por la fuerza de la contraseña.

    
pregunta Arlen Beiler 13.08.2017 - 04:13
fuente

1 respuesta

1

El principal problema con su plan es que PBKDF2 se usa solo para generar claves simétricas. Para generar un par de claves públicas / privadas, potencialmente podría usar la salida de PDKDF2 para generar un generador de números aleatorios y luego usar ese RNG cuando cree las claves públicas y privadas. Sin embargo, Javascript carece de la capacidad de inicializar el generador de números aleatorios. Por lo tanto, tendría que utilizar su propia cuenta, usar una biblioteca o generar las claves en el servidor.

Sin embargo, estoy luchando para ver el punto de todo esto. Parece que está interesado en usar este mecanismo para cifrar los datos en vuelo, pero eso ya está a cargo de SSL / TLS. Si solo desea cifrar los datos en reposo de una manera en que el servidor (y sus administradores) no puedan acceder a ellos, puede usar una clave simétrica.

    
respondido por el John Wu 14.08.2017 - 21:52
fuente

Lea otras preguntas en las etiquetas