¿Cómo almacenar la clave de cifrado de la base de datos derby en HSM?

3

La base de datos Derby admite el cifrado con una clave o contraseña. Tradicionalmente, esta clave se almacena en los sistemas de archivos, ahora estoy buscando almacenar y proteger esta clave en el HSM, pero no pude averiguar cómo debería hacerlo.

  1. ¿El enfoque más simple parece ser simplemente poner la clave en sí en el HSM? Luego, al iniciar el servidor, la aplicación consultará el HSM para obtener la clave, la utilizará para iniciar la base de datos Derby y luego descartará la clave. Sin embargo, he leído que parece ineficaz porque la clave puede ser simplemente extraída, pero realmente no entiendo cuál es el problema de seguridad con este enfoque, ¿es este el enfoque que debería tomar?

  2. La segunda forma de leer es el cifrado híbrido, pero no estoy realmente seguro de si es aplicable a mi caso. Generaré una clave simétrica, luego generaré un par de claves en el HSM. Luego usaré la clave pública del HSM para cifrar la clave simétrica y almacenarla localmente en el sistema de archivos. Al iniciar el servidor, pasaré esta clave simétrica cifrada al HSM para descifrarla utilizando la Clave Privada que no se puede extraer. ¿Hay algún mérito al usar este enfoque o su exceso para este propósito?

Por lo que yo entiendo, la mayor parte del uso de HSM gira en torno a tener diferentes remitentes (cifrado) y receptores (descifrado), de ahí el uso de KeyPairs en lugar de claves simétricas.

    
pregunta Phuah Yee Keat 26.09.2014 - 05:41
fuente

2 respuestas

1

Lo que hacen algunos motores de base de datos es derivar claves en el HSM y usar diferentes claves para diferentes partes de los datos. Además de eso, también pueden completar el ciclo de las claves (por ejemplo, leer / descifrar con la clave A, cifrar / escribir el mismo bloque con la clave B). Estas operaciones están integradas en el motor de la base de datos y no estoy seguro de que Derby se acerque a ese grado de sofisticación.

Además de esto, el beneficio del cifrado de la base de datos es que si alguien roba un disco duro (o una copia de seguridad de su base de datos), no podrá acceder a los datos.

Esto cambia completamente en el caso de que un atacante tenga acceso al servidor, ya que podrá conectarse a la base de datos y extraer los datos, o alternativamente podrá eliminar la clave de la memoria.

Mi sugerencia sería (similar a su primer punto): use el HSM para derivar una clave (solo se me ensucia la clave de un HSM), y sepa que esto es solo para evitar los escenarios que mencioné anteriormente .

    
respondido por el HocusPocus 26.09.2014 - 08:58
fuente
1

Puede usar el HSM para almacenar y administrar sus claves, pero también debe poder usar el HSM para realizar funciones de cifrado y descifrado en nombre de su base de datos o aplicación. Depende de la funcionalidad disponible en el HSM que tiene o está considerando usar. Aquí hay algunos ejemplos de cómo podría usarlo:

1) Almacene una clave de cifrado simétrica dentro del HSM. Su aplicación / base de datos puede solicitar esta clave al HSM y usarla para operaciones de cifrado y descifrado. Esto significa que la clave dejará el HSM y estará disponible en texto claro en la memoria para hacer su trabajo. Esta clave será vulnerable al raspado de memoria.

2) Almacene una clave de cifrado simétrica dentro del HSM. Su aplicación / base de datos puede enviar datos al HSM para su cifrado o descifrado. En este caso, la clave nunca abandona el HSM.

3) Almacene una clave de cifrado simétrica o asimétrica dentro del HSM. Utilice esta clave de cifrado para cifrar su clave de cifrado de datos (DEK). Almacena este criptograma donde quieras. Solicite la clave de cifrado de clave (KEK) del HSM para descifrar su DEK y use su DEK para las operaciones de cifrado / descifrado.

    
respondido por el AndyMac 25.03.2015 - 14:02
fuente

Lea otras preguntas en las etiquetas