¿Una forma segura de alta portabilidad para almacenar contraseñas?

3

Estoy desarrollando una aplicación de escritorio Java multiplataforma que usa una contraseña para derivar una clave criptográfica. Me gustaría agregar la función "Recordarme" que almacena esta clave criptográfica en el disco duro de manera segura para que mi programa pueda obtenerla después de un reinicio.

Si lo guardo directamente, cualquier persona que logre acceder al disco duro de un usuario típico (sin cifrado) podrá obtener la clave. Si lo cifro, la clave utilizada para cifrarlo todavía debe almacenarse en algún lugar de la unidad y, por lo tanto, anula el propósito.

He visto gnome-keyring, Windows Credential Manager y Mac OSX keychain, pero cada uno parece tener sus propias API no Java (o puertos no oficiales a Java). Además, parece que cualquier programa que se ejecute como usuario podrá leer o escribir en o desde estos dos servicios.

¿Existe una forma más portátil (y preferiblemente aislada) de almacenar de forma segura las contraseñas (o claves criptográficas) en el disco duro?

¡Gracias!

    
pregunta id0 07.06.2018 - 06:53
fuente

1 respuesta

4

En los sistemas actuales, puedes usar TPM. Puede utilizarse para almacenar (o envolver) la clave raíz y protege claves adicionales creadas por una aplicación. Las claves de la aplicación no se pueden usar sin el TPM, lo que lo convierte en un método de autenticación muy útil para dispositivos de punto final.

Lea sobre cómo hacerlo aquí .

Otro método avanzado que probablemente se usará mucho en el futuro es usar funciones físicamente no accesibles. En lugar de que las claves se almacenen (y sean susceptibles de ser leídas), las claves se derivan de propiedades físicas únicas de la memoria SRAM de un chip y existen solo cuando se encienden. Al utilizar un PUF basado en SRAM, se garantiza que las claves son únicas ya que utilizan la aleatoriedad inherente en los patrones de bits de silicio. Incluso si esto suena más futurista, es algo utilizable hoy.

Detalles de PUF y documentation sobre el almacenamiento de claves mediante este método.

    
respondido por el Overmind 07.06.2018 - 07:26
fuente

Lea otras preguntas en las etiquetas