Mantener las claves de firma del software seguras

2

Estoy creando una aplicación que firmará automáticamente el código con claves seguras ( .key ). La aplicación se ejecutará en un entorno Windows desarrollado en un entorno .NET (C #). La firma es simple: el código fuente + las claves generarán artefactos firmados. Esto ya está en su lugar. El desafío al que me enfrento es cómo almacenar las claves de la forma más segura posible.

Lo que estoy considerando es cifrar las claves con herramientas como VeraCrypt. Siempre que la aplicación necesite firmar un código, cifrar los archivos, firmarlo y descifrarlo nuevamente. VeraCrypt, por ejemplo, ofrece opciones de línea de comandos para esto. Esto plantea otro problema: cómo almacenar la contraseña en la aplicación de forma segura.

Ya que no soy un experto en seguridad, ¿podría proporcionarme algunos comentarios sobre la solución propuesta? ¿Qué otras opciones serían apropiadas y quizás mejores?

    
pregunta A.Igor 03.02.2017 - 15:37
fuente

1 respuesta

2

Te has encontrado con un problema muy difícil; cuando almacena claves criptográficas en el software, realmente tiene tres opciones:

  1. Almacene la contraseña cifrada en el disco y haga que el usuario ingrese una contraseña para descifrarla en tiempo de ejecución. Entonces también debe preocuparse por la administración segura de la memoria, que es un verdadero agujero de conejo.

  2. Evita pedirle al usuario una contraseña haciendo algún truco de ofuscación extraño en el que derivas una clave de descifrado de los números de serie del hardware y demás.

  3. Use las API de administración de claves del sistema operativo. Si es posible, también use las API del sistema operativo para realizar todas las operaciones de cifrado por usted para que su aplicación nunca tenga la clave privada en la memoria. Entonces puede confiar en que el sistema operativo está manejando la clave de manera segura y no tiene que pensar en ello.

Afortunadamente para usted, Windows y .NET tienen muy buenas API de administración de claves llamadas CAPI: Crypto API .

Comenzaría por Google " windows almacenando claves criptográficas .net " y haciendo algunas lecturas. Este artículo en particular parece un buen punto de partida:

Si está escribiendo un servicio web que se ejecutará en un centro de datos que controla, entonces podría considerar el uso de un Módulo de seguridad de hardware . Además, los proveedores de alojamiento como Amazon y Azure proporcionan API para esto en lugar de necesitar su propio HSM físico. Dicho esto, estos dispositivos comienzan en $ 5,000 USD y son excesivos para la mayoría de las aplicaciones.

    
respondido por el Mike Ounsworth 03.02.2017 - 16:34
fuente

Lea otras preguntas en las etiquetas