Almacenamiento de 'secretos', almacenes de claves, HSM y el resto

7

He estado cavando durante los últimos días en el almacenamiento de datos sensibles. Si almaceno estos datos en una base de datos, creo que la práctica general aceptada es almacenar datos confidenciales encriptados, por diversas razones fuera del alcance de esta pregunta.

Cifrar datos, sin embargo, significa que tengo que administrar los 'secretos' de estos datos. He visto 2 rutas principales para esto (en el mundo java), KeyStores o HSMs. Mi primera pregunta es, ¿hay otras alternativas válidas (en el mundo java)?

Hay varios formatos de almacén de claves que puedo usar en java, por nombrar algunos:

  • jks
  • jceks
  • pkcs12
  • bks
  • uber

He visto muy poca información sobre la seguridad de un almacén de claves. He estado pensando que, si tuviera acceso a un almacén de claves, y cuando miro la API de Java, ya que todos los almacenes de claves están protegidos por una contraseña, simplemente podría forzar el almacenamiento de claves, por muy segura que esté. Entonces, la segunda pregunta es: ¿es una práctica generalmente aceptada que, dado que los almacenes de claves están en sistemas diferentes a los datos encriptados y están protegidos por contraseña, esto es "lo suficientemente seguro" para las condiciones de la vida real? ¿Qué pasa con el almacenamiento de la contraseña en el almacén de claves? ¿Hay prácticas aceptadas allí? Por ejemplo, ¿almacenarlo en otro sistema? ¿Haber ingresado manualmente en el inicio de la aplicación? ¿Tenerlo en un archivo protegido por os donde solo la aplicación tiene acceso de lectura a él?

La siguiente pregunta es con respecto a los HSM. Ya que puedo forzar los almacenes de claves de fuerza bruta, ¿qué me impide hacer exactamente lo mismo con un HSM? ¿Hora? ¿Tengo que iniciar sesión en el sistema remoto ya que no hay ningún archivo para copiar y trabajar de forma remota?

La pregunta final es: ¿alguien tiene alguna idea de lo que se considera lo suficientemente seguro en términos de gestión secreta? Supongo que varía según el tipo de información cifrada con el secreto. Por lo que he leído en otros lugares, los almacenes de claves parecen ser lo suficientemente buenos para la mayoría de los escenarios típicos y los HSM son necesarios en escenarios muy específicos, para CA, gobiernos y similares.

Cualquier información apreciada.

    
pregunta François Lamarre 08.02.2012 - 15:37
fuente

1 respuesta

10

En términos generales, los almacenes de claves son solo 'formatos' diferentes para almacenar claves y metadatos. Que yo sepa, no hay grandes diferencias de seguridad entre ellos. Piense en ello como algo similar a codificar una imagen como Jpeg o PNG o GIF. Diferencias sutiles, pero en última instancia almacenan imágenes.

Con razón, escogió partes del problema de la administración de claves en general, y espera que empiece a apreciar por qué podría complicarse. Entonces, tiene datos cifrados con una clave, la clave almacenada dentro del almacén de claves, protegida con una frase de contraseña, la frase de contraseña almacenada ... ¿ve a dónde va esto? Al final de esta cadena, hay algo de información relativamente pequeña que, si la obtienes, puedes romper prácticamente toda la cadena. Esto probablemente le dará acceso a todos los datos. De manera similar, incluso si resolvió este problema en particular, la clave para el cifrado / descifrado / firma debe ser utilizada . es decir, cargado en un programa que lo utiliza para gestionar los datos. Cuando se carga en la memoria, de alguna manera es accesible para la CPU y, potencialmente, para otros programas que se ejecutan en los mismos sistemas. Si uno de ellos está comprometido, su clave se puede extraer de la memoria. Incluso si se almacena en forma cifrada.

Esto es más o menos donde entran los HSM. Sin HSM, tiene una capacidad limitada para almacenar claves de manera segura, y también se limita a poder realizar operaciones criptográficas en la memoria sin exponer la clave. Los HSM "ocultan" la clave en un almacenamiento (generalmente protegido físicamente) y realizan operaciones criptográficas dentro de esta área protegida. Funcionan de tal manera que impiden el acceso desde otros programas o el sistema operativo. Todo lo que se ve es la entrada / salida de este HSM. Los HSM también varían en términos del nivel de seguridad que proporcionan. FIPS-140 es uno de los estándares que cubren diferentes niveles de seguridad / resiliencia. Algunos HSM también ofrecen cierto grado de administración / autorización de claves para usted. Por ejemplo, pueden "otorgar" cifrado solo a ciertos usuarios, pero otros usuarios también podrán descifrar datos. Pueden limitar el número de operaciones de cifrado por usuario / grupo, y pueden configurarse para que se bloqueen después de varios intentos fallidos. Esto es algo que ningún almacén de claves es capaz de hacer.

Entonces, si bien es correcto, tenga en cuenta que los almacenes de claves (y las operaciones criptográficas en memoria) suelen ser "lo suficientemente buenos". En algunas circunstancias, podría ser preferible usar algo aún más seguro. Todo depende del valor de los datos, el nivel percibido de protección actual, el costo de la protección adicional usando solo el software, usando HSM u otras herramientas, y el perfil de amenaza de estos datos (quién los quiere, qué tan capaces son, ¿Cuánto van a invertir para hacerlo, etc).

    
respondido por el Yoav Aner 08.02.2012 - 17:58
fuente

Lea otras preguntas en las etiquetas