Guardar credenciales de forma segura para la autenticación posterior de texto sin formato

3

Estoy desarrollando una aplicación Django donde un usuario inicia sesión con Kerberos y luego tiene acceso a una serie de aplicaciones internas.

Uno de estos es una aplicación de archivos que se conecta a un servidor a través de SFTP y le permite al usuario navegar por sus archivos almacenados. Debido a que esto daría lugar a la necesidad de autenticarse con ese servidor varias veces durante la vida de la sesión, me gustaría que la contraseña que ingresa un usuario al inicio de sesión en el sitio sea la memoria caché, pero debido a problemas de seguridad, no solo desea guardar la contraseña como texto sin formato en la base de datos del servidor.

Mi idea actual es usar AES, o algún otro algoritmo criptográfico similar, y almacenar la mitad de los datos necesarios para decodificar la contraseña en una sesión del lado del servidor y la otra mitad en una cookie del navegador del lado del cliente.

¿Sería esta una buena idea? ¿Puede sugerir alguna otra solución?

    
pregunta James 09.08.2015 - 04:07
fuente

2 respuestas

1

¿Quizás la aplicación también debería usar Kerberos para autenticarse en el servidor? P.ej. utilizando la delegación restringida.

Alternativamente, podría tener una clave SSH propia, una que funcione para todas las cuentas, pero solo desde la dirección del servidor de la aplicación web.

    
respondido por el grawity 09.08.2015 - 17:11
fuente
0

Una de las razones principales para hashear contraseñas y no cifrarlas es que las personas tienden a reutilizar las contraseñas (o variantes menores) en muchos sitios. Por lo tanto, una revelación de la contraseña pone en riesgo a su sitio y al usuario en todos los sitios que han reutilizado (tontamente) esa contraseña.

Una mejor estrategia es obtener un dato temporal para el usuario que afirme de manera segura que se ha autenticado. Los tokens OAuth y los tickets Kerberos son dos ejemplos comunes. Los identificadores de sesión también se utilizan con frecuencia. Como estos son temporales, solo son valiosos para un atacante durante un corto período de tiempo (en comparación con una contraseña) y no pueden utilizarse para atacar las cuentas de los usuarios en otros sitios.

    
respondido por el Neil Smithline 10.08.2015 - 07:53
fuente

Lea otras preguntas en las etiquetas