it-swarm-es.com

Si estoy obligado a almacenar una contraseña / certificado en el lado del cliente, ¿cómo puedo asegurarme de que esté protegido?

En ciertos casos, necesitamos establecer una clave/contraseña/certificado por primera vez y luego, como cliente, debemos usar esta clave/contraseña/certificado para autenticarnos. Por lo tanto, la clave/contraseña/certificado debe almacenarse en el lado del cliente.

¿Cómo asegurar esta clave?

Por supuesto, podemos usar el hash, pero aún necesitamos la clave y no el valor hash para iniciar sesión nuevamente.

11
Phoenician-Eagle

Teniendo en cuenta su comentario en la parte superior, diría que si bien esto es posible, es bastante complicado con numerosas trampas probables.

Aunque todavía no es tan común, le recomiendo encarecidamente que consulte CardSpace (nee InfoCard) . Básicamente, esto proporciona una implementación muy segura de lo que está buscando y beneficios adicionales (por ejemplo, el usuario tiene más control sobre qué información se envía a quién). Por supuesto, no está exento de compensaciones, p. Ej. los usuarios están menos familiarizados con él, y es un poco complejo de implementar ...

3
AviD

La forma "correcta" de almacenar de forma segura información confidencial del lado del cliente es utilizar las funciones proporcionadas por el sistema operativo, p. Ej. KeyChain en MacOS X o DPAPI en Windows. La protección de los datos del lado del cliente es un problema difícil, pero en algunos casos existe algún hardware útil (por ejemplo, una tarjeta inteligente); el sistema operativo tiene acceso directo al hardware e incluso puede que ya esté configurado. Además, los sistemas de protección implementados por el sistema operativo tienen la posibilidad de estar bien integrados en el sistema normal de autenticación de usuarios.

Desde un punto de vista teórico, no hay mucho que se pueda hacer solo en software, excepto:

  • Ofuscación. La aplicación estropea las cosas en lo que espera que sea una forma de fuga, pero la aplicación es un código que puede desentrañar los datos ofuscados, por lo que esto resistirá a los atacantes solo mientras no realicen ingeniería inversa en el código, es decir, no para largo.

  • Cifrado basado en contraseña. Cifras los datos utilizando una clave simétrica que se deriva de la contraseña. Esto se puede hacer seguro si la contraseña tiene alta entropía y está adecuadamente "reforzada" (use bcrypt ). Eso es lo que las soluciones basadas en SO tienden a hacer de todos modos. Para una implementación aplicativa pura, considere usar GnuPG , que puede hacerlo de forma nativa (con la herramienta de línea de comandos, eso es gpg -c file).

2
Thomas Pornin

Use un cifrado simétrico para cifrar el certificado localmente y obligue al usuario a elegir una contraseña segura como clave.

Por lo tanto, no es factible utilizar el certificado sin proporcionar primero la frase de contraseña.

1
David Bullock