En su corazón, esta es una pregunta sobre Control. Desea controlar el acceso a este archivo KeyStore, de modo que solo su aplicación pueda acceder a él pero nadie más pueda hacerlo. No querrá poner demasiados pocos Controles en esto, porque eso abriría la posibilidad de acceso no autorizado. Tampoco quiere poner demasiados controles en esto, porque sería demasiado engorroso y costoso de usar.
Para permitir que la aplicación, y no otra persona, acceda a su KeyStore, debe habilitar la aplicación para afirmar una identidad.
Tienes las siguientes opciones:
- Coloque la frase de contraseña en el KeyStore en un archivo de configuración y haga que la aplicación lea esto al inicio. Esto le permite controlar la identidad de la instancia de la aplicación mediante la manipulación de los permisos del sistema de archivos (el usuario de la aplicación puede leer, pero no escribir, y nadie más puede leer). Si su Almacén de claves se basa únicamente en el archivo del Almacén de claves, considere colocar los controles de permiso del sistema operativo en el archivo del Almacén de claves y eliminar por completo la frase de contraseña. Si su adversario puede hacerse pasar por el usuario de su aplicación, tiene una raíz en su sistema y usted tiene problemas mucho mayores.
- Cuando se inicie la aplicación, pídale a alguien que escriba la frase de acceso a KeyStore en la consola antes de que la aplicación cargue el KeyStore. Esto obviamente cae directamente en la categoría "engorroso": evita el inicio automático, y puede ser atacado sobornando a las personas que tienen que saber la contraseña.
- Use un Módulo de seguridad de hardware (HSM) para realizar una copia de seguridad del Almacén de claves de modo que la subversión de la seguridad del sistema de archivos en el servidor de la aplicación tenga que combinarse con un ataque físico en la instalación de alojamiento antes de poder usar las claves. Las mismas consideraciones mencionadas anteriormente para la seguridad de las credenciales utilizadas para iniciar sesión en el HSM. Aquí es donde tengo que revelar que vendo los HSM para ganarme la vida.
- Use un HSM en combinación con controles de acceso forzados por HSM para que múltiples operadores tengan que proporcionar una credencial de hardware (tarjeta inteligente) y escribir una frase de contraseña en la consola del sistema antes de que la aplicación pueda iniciarse. Este es el extremo opuesto de "engorroso", pero protege contra el problema del soborno en 2. arriba.
Tenga en cuenta que ninguno de estos se basa en agregar capas de cifrado: se trata de hacer cumplir los Controles en el acceso a los contenidos de KeyStore, según la identidad de una instancia de la aplicación o la autorización de uno o más operadores.
Al final, todo depende de qué tan importante es esa clave privada y cuáles son las consecuencias cuando esa clave privada se pierde o se ve comprometida. Los controles que se deben utilizar deben ser una decisión comercial, según su evaluación de los riesgos y consecuencias.