2012-07-23 13 views
5

Necesito encriptar los datos ingresados ​​por el usuario en mi aplicación web basada en Java (usando jasypt) que se conserva en una base de datos MySQL y quiero poder cambie la clave de cifrado/frase de contraseña en un intervalo regular (por ejemplo, 90 días). La aplicación vive en un servidor en la web.¿Cuáles son las prácticas existentes para cifrado/descifrado/rotación de claves para aplicaciones web Java?

Los datos existentes ya encriptados necesitarían ser reencriptados con la nueva clave, pero para hacerlo necesitaría, por supuesto, la clave anterior.

  1. ¿Cuáles son las prácticas más comunes para rotar las teclas?
  2. ¿Cuáles son las formas más comunes de hacer que las claves de cifrado disponibles para el sistema (por ejemplo, las propiedades del sistema pasan a través de comandos, archivos de propiedades cifrados, la descarga de otro servidor a través de https)

espero que no hay una respuesta única a esta pero me gustaría obtener algunos consejos, sugerencias y palabras de moda para investigar en la dirección correcta.

+0

¿Dónde vive la aplicación? ¿Servidor web/de aplicaciones? –

+0

Es una aplicación web que ejecuta un embarcadero en este momento. – Christoph

Respuesta

5

En primer lugar, es importante comprender el propósito de la rotación de las teclas. Su caso de uso es cifrar datos en reposo. En este caso, el propósito de la rotación de claves es contener la violación de datos en caso de que se filtre una clave o que el conjunto de datos encriptados se filtre y esté sujeto a un ataque de descifrado de la fuerza bruta. Prácticas comunes para la rotación de claves:

  • Rotación de tecla en un plazo determinado: en esta práctica, las claves se actualizan periódicamente.
  • Clave de nivel de transacción: en esta práctica, cada transacción se cifra con su propia clave única, lo que lleva a un mayor nivel de mitigación de la brecha de datos.

Haciendo que las claves estén disponibles para el sistema: Esto normalmente se logra usando un servidor de administración de claves. En esencia, este servidor entrega claves (generalmente simétricas) a los solicitantes basadas en parámetros. El servidor puede optar por archivar de forma segura las claves generadas para su posterior recuperación, o asegurarse de que las claves se generen en función de una función fija garantizada para generar la misma clave dado el mismo conjunto de parámetros.

Puede elegir escribir su propio servidor o comprar/licenciar uno. La licencia de este componente podría ser una mejor opción si necesita cumplir con una directriz de cumplimiento de seguridad específica y necesita que los elementos de cumplimiento estén marcados. Para las soluciones disponibles, vea StrongAuth o Porticor como ejemplos.

+0

esto no responde la pregunta ... la pregunta era si había que volver a cifrar los datos cuando cambian las claves de cifrado (que no sean el descifrado con la clave anterior y el cifrado con la nueva clave), y no veo ninguna sugerencia al respecto. – sargeMonkey

Cuestiones relacionadas