¿Tendría sentido o proporcionaría una ventaja de las clases dividir una clave secreta HMAC-SHA256 en dos componentes y ocultar un componente en un archivo de configuración del lado del servidor aplicable y el otro componente en el código compilado (fuente cerrada, lado del servidor)?
Elegiría que ambas mitades sean lo suficientemente largas para que contengan la entropía suficiente para asegurar que, incluso si la otra mitad de la clave está comprometida, la otra mitad de la clave sigue siendo demasiado larga / compleja para ser forzada brutalmente. Por ejemplo, cada mitad son 32 bytes crypto-sudo-aleatorios que se concatenan para formar la clave secreta completa.
Entiendo que, en general, no se recomienda ocultar las claves secretas en el código fuente, ya que el código fuente es difícil de mantener en secreto, pero no puedo ver nada más que ventajas al emplear esto. Si la clave del código fuente es robada, la clave de configuración aún está oculta y es demasiado larga para ser forzada. Alternativamente, si un atacante logra robar la clave de configuración pero no conserva una copia de la clave del código fuente compilado, aún no pueden falsificar las firmas de tokens de JWT.
Por lo tanto, mi pregunta es: ¿Estoy exagerando una especie de falla obvia en este diseño o realmente proporciona al menos un poco mejor seguridad? Además, si no hay una falla obvia, ¿es razonable creer que esto realmente aumenta la protección de la clave secreta?