Como mencionó @whoami, simplemente mueve el problema a otro lugar. Como mencionó, le permite moverlo fuera del código (si lo ha codificado), protegerlo con contraseña (si originalmente era solo un PEM o cualquier otro elemento en el disco) y ACL a los permisos necesarios.
El problema es que necesitas conocer la clave para desbloquearla, y eso, por supuesto, requiere algún tipo de protección, y bueno, obtienes tortugas hasta el final.
Lo que básicamente estás haciendo es mover la barra de los atacantes para que tengan que hacer un mayor esfuerzo para romper la cosa. En algún punto, simplemente dicen que se atornillan y siguen adelante. Puede hacer que sea más difícil introduciendo la complejidad en la generación de claves, pero si los atacantes saben cómo funciona esto, pueden hacerlo ellos mismos con bastante facilidad o, lo que es peor, pueden robar el archivo e intentar el acceso forzado a la clave, ya que no es particularmente aleatorio. En algunos casos, el sistema operativo proporciona un mecanismo para proteger las claves aleatorias, pero en este caso necesitaría algo que esté expuesto a la JVM.
Las soluciones más prácticas implican mover la clave a áreas mejor protegidas, y eso generalmente significa hardware de algún tipo. En algunos casos, estamos hablando de TPM, HSM o simplemente tarjetas inteligentes (aunque en realidad son todas lo mismo, pero con diferentes características). El principio básico es que la llave nunca abandona el hardware, por lo que es imposible robarlo. Un efecto colateral de esto es que todo el cifrado suele ocurrir en el propio hardware, por lo que todo lo que está haciendo es empujar los datos y sacarlos, sin tener que preocuparse por el cifrado.
Esto significa que necesita proteger la interfaz del hardware para que solo los sistemas autorizados puedan hablar con él. ¿Ya viste a las tortugas?