Guardar el token de inicio de sesión de inicio automático de la aplicación en la computadora

2

Necesito iniciar sesión en la aplicación de escritorio mientras se inicia automáticamente en el servidor (como hace Skype). ¿Cuál es la mejor práctica para guardar el token de autenticación (contraseña)? ¿Debo usar algo como el cifrado RSA (que normalmente se usa para el cifrado de cadenas de conexión .config en las aplicaciones ASP.NET)?

    
pregunta Anton Putau 15.04.2014 - 14:35
fuente

2 respuestas

1

La opción de almacenamiento disponible generalmente más segura que tendrá en Windows es la API de protección de datos de Windows (ampliamente conocida por el acrónimo DPAPI). Esta es una de las opciones para administrar las secciones del archivo web.config cifrado. que mencionaste como ejemplo

DPAPI le brinda a usted un almacenamiento cifrado específico para el usuario y la máquina para datos confidenciales, por lo que incluso si los datos cifrados son robados, no se pueden descifrar en otra computadora, e incluso si el atacante tiene acceso a la computadora que contiene los datos cifrados no se puede descifrar sin que el usuario correcto inicie sesión en Windows con la contraseña correcta. No es infalible, pero es un mecanismo bastante fuerte y sería lo que probablemente elegiría en esta situación.

    
respondido por el Xander 30.10.2014 - 19:25
fuente
0

¿Está desarrollando este software?

Simplemente generaría un token único almacenado en una base de datos como:

  • TokenId
  • UserId (o alguna entidad con la que se relaciona este token)
  • TokenKey (que se usará como una identificación para el público)
  • Ha expirado
  • Ip (que tiene un hash como SHA512, por lo que no expone la IP de los usuarios si está comprometida)
  • CreatedOn
  • UsedOn

Ahora, necesitamos reducir el riesgo de robo de fichas.

Entonces, comencemos con IP. Si la IP no coincide con los propietarios del token, entonces querrá rechazar al ladrón de tokens ya que no coincide con la IP del propietario. O un enfoque más agresivo sería vencer el token ya que la computadora debe haber estado comprometida para obtener acceso a ese token. Podría enviar otra información, como una clave basada en seriales de hardware, etc., pero, por supuesto, es fácil de falsificar.

Si el token ha caducado, tendrán que volver a autenticarse y obtener un nuevo token.

Editar para contraseñas de almacenamiento local:

Vaya, debo de malinterpretar tu publicación. Cuando leí tu publicación sobre tokens de contraseña, pensé que eso era lo que estabas buscando. El cifrado de una contraseña siempre es un no-no. Solo use el cifrado cuando TIENE QUE descifrar los datos confidenciales. Para las contraseñas, querrá usar hashes como SHA512. Hay muchos compromisos (tamaño, velocidad, etc.) en los hashes pero hay publicaciones que explican todas las diferencias.

Métodos para robar el hash:

  • La persona con acceso físico o remoto a la carpeta podría obtener acceso a su contraseña.
  • Un rastreador de red como Cain podría obtener contraseñas que pasan por la red.

Por lo tanto, guardar una contraseña localmente es realmente reducir la seguridad de su software a costa de la conveniencia del usuario.

    
respondido por el Paul 15.04.2014 - 14:53
fuente

Lea otras preguntas en las etiquetas