Tengo algunas claves de cifrado simétricas (DEK) almacenadas en la base de datos junto con los datos cifrados. Los DEK están encriptados por la clave pública del HSM. El servidor de aplicaciones utiliza HSM con la interfaz PKCS11. La clave y el descifrado de datos se realiza dentro del HSM. Las teclas de texto sin formato nunca salen de la memoria de HSM.
Sin embargo, estoy preocupado por la seguridad. Si un atacante logra ingresar al servidor de la aplicación, podría simplemente recuperar los datos cifrados de la base de datos y consultar el HSM.
Me gustaría tener un componente "externo" involucrado en el descifrado, vinculado a la autenticación del usuario. Así que incluso el atacante logra secuestrar el servidor y la base de datos y obtiene acceso a la interfaz de HSM, el material clave presente no es suficiente. El protocolo de cifrado debe contener un componente que solo el usuario autorizado sepa o tenga, pero este conocimiento no se almacena en ningún lugar y no es derivable. También existe un desafío: la clave está realmente relacionada con el grupo del usuario, no con la identidad. Esto significa que diferentes usuarios del mismo grupo deben tener acceso a la misma clave.