¿Cómo puedo agregar una capa de seguridad para borrar contraseñas de texto y SSL?

1

Estoy creando una API web en .Net para una aplicación web. Me pregunto cuál es el estándar de la industria para la autenticación de inicio de sesión.

Sé que la mayoría de la gente cree que enviar un nombre de usuario / contraseña de texto claro a través de SSL es suficiente seguridad, pero no quiero confiar en que SSL no se romperá en el futuro y creo firmemente En seguridad en capas.

¿De qué otra manera puedo agregar más capas de seguridad a mi autenticación de inicio de sesión además de SSL y los nombres de usuario y contraseñas de texto simple? ¿Encriptación del lado del cliente? Desafío-respuesta?

    
pregunta Chrisgozd 22.04.2014 - 22:54
fuente

3 respuestas

2

Si crees en capas, agrega algunas capas. Por ejemplo, ejecute su SSL dentro de otro SSL, y disponga que las dos capas SSL usen algoritmos distintos (por ejemplo, el SSL externo funciona en el cifrado AES y un intercambio de claves efímero Diffie-Hellman, mientras que el SSL interno utiliza el cifrado RC4 y el intercambio de claves basado en RSA). Esto es indudablemente en capas, y, en lo que respecta a las capas, probablemente sea lo mejor que pueda obtener (notablemente, es relativamente obvio que usted no dañe su seguridad de esa manera).

    
respondido por el Thomas Pornin 22.04.2014 - 23:50
fuente
1

Dados los problemas que hemos visto recientemente con SSL (tanto los problemas del lado de la AC como los errores de implementación), estoy de acuerdo en que tener otra capa de seguridad que proteja la contraseña es una buena idea. La mejor opción que conozco es el protocolo de contraseña remota segura ( wikipedia , Stanford , crypto.SE ) - idealmente, combinado con un lento función hash como scrypt o PBKDF2 .

Al usar SRP, un atacante basado en la red que ha roto completamente la capa SSL no puede obtener ninguna información sobre la contraseña (ni nada que pueda usarse para, por ejemplo, un ataque de paso de hash), e incluso un compromiso completo del servidor solo filtre el verificador (lo que requeriría un ataque de diccionario para recuperar la contraseña).

    
respondido por el Gordon Davisson 23.04.2014 - 01:30
fuente
0

Ya que estás creando una API desde cero, puedes implementar una función de hashing donde se coloca un hash SHA256 (o lo que sea) en la matriz de nombre de usuario y contraseña y se envía. De esta manera, solo el hash se envía a través del cable. Esta no es una solución definitiva, pero es solo otra capa.

    
respondido por el PTW-105 23.04.2014 - 00:00
fuente

Lea otras preguntas en las etiquetas