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

11

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

¿Cómo asegurar esta clave?

Por supuesto que podemos hacer hash, pero todavía necesitamos la clave y no el valor de hash para iniciar sesión nuevamente.

    
pregunta Phoenician-Eagle 12.11.2010 - 22:47
fuente

3 respuestas

3

Teniendo en cuenta su comentario, diría que si bien esto es posible, es bastante complicado con numerosos escollos posibles.

Aunque todavía no es tan común, le recomendaría encarecidamente que consulte CardSpace (no 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 es sin concesiones, por ejemplo. los usuarios están menos familiarizados con él y es un poco complejo de implementar ...

    
respondido por el AviD 14.11.2010 - 14:37
fuente
2

La forma "correcta" de almacenar de forma segura la información confidencial del lado del cliente es utilizar las funciones proporcionadas por el sistema operativo, por ejemplo. 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 hay 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 de autenticación de usuario normal.

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

  • Ofuscación. La aplicación maneja las cosas de la forma en que espera ser una forma de fuga, pero la aplicación es un código que puede desentrañar los datos confusos, por lo que esto resistirá a los atacantes siempre y cuando no apliquen ingeniería inversa al código, es decir, no para largo.

  • Encriptación basada 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 una alta entropía y está "reforzada" correctamente (use bcrypt ). Eso es lo que las soluciones basadas en sistemas operativos tienden a hacer de todos modos. Para una implementación puramente aplicativa, considere usar GnuPG , que puede hacerlo de forma nativa (con la herramienta de línea de comandos, que es gpg -c file ).

respondido por el Thomas Pornin 06.10.2011 - 18:54
fuente
1

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

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

    
respondido por el David Bullock 31.01.2011 - 03:50
fuente

Lea otras preguntas en las etiquetas