¿Cómo almaceno el par de claves RSA en Windows?

¿Cómo almaceno el par de claves RSA en Windows?

Estoy intentando escribir un programa sencillo de cifrado y descifrado utilizando Openssl-RSA. Cuando se cifran datos, se genera un par de claves. Si quiero descifrar los datos, necesito el par de claves exacto que se generó durante el cifrado.

Entonces, ¿dónde y cómo almaceno este par de claves para poder descifrar el contenido cifrado siempre que sea posible?

Estoy usando una clave pública para cifrar y una clave privada para descifrar.

Respuesta1

Técnicamente, puedes almacenar el par de claves donde quieras, aunque existen algunas formas comunes de hacerlo.

Si los datos son particularmente confidenciales y no van a ser necesarios de manera regular o constante, el método más seguro para almacenar su clave privada es en una unidad flash o impresa en una hoja de papel en una caja fuerte o en la bóveda de un banco. (Tenga en cuenta que puede almacenar la clave pública en cualquier lugar que desee; después de todo, es una información "pública".

Si necesita que los datos sean fácilmente accesibles, generalmente no es práctico almacenar la clave privada fuera de línea en una caja fuerte o bóveda debido a la molestia de recuperarla cada vez. Una ubicación común que se utiliza a menudo para el almacenamiento de claves es una carpeta denominada .sshdentro de su directorio de inicio. (Este es el valor predeterminado en OpenSSL en Linux y también se usa a menudo en otros sistemas). La práctica común es almacenar la clave como dos archivos con nombres que los describan de la siguiente manera: purpose_typepara la clave privada y purpose_type.pubpara la clave pública. . Por ejemplo, si utiliza la línea de comando OpenSSL para crear una clave RSA que identifica, se almacenará de forma predeterminada en los archivos id_rsay id_rsa.puben el .sshdirectorio. En su caso, podría nombrar los archivos clave como mydatastorage_rsay mydatastorage_rsa.pub.

IMPORTANTE: Si almacena una clave privada de esta manera, se recomienda encarecidamente que la proteja con una frase de contraseña. Esto evita que cualquier persona que tenga acceso a sus archivos pueda utilizar su clave privada. Es posible que se le haya solicitado que proporcione una frase de contraseña clave cuando creó originalmente el par de claves; de lo contrario, puede agregar una frase de contraseña a la clave privada utilizando las herramientas de línea de comandos de OpenSSL.

Si va a realizar una gran cantidad de trabajo de cifrado confidencial, puede comprar un almacén de claves de hardware, llamado "Módulo de seguridad de hardware", abreviado "HSM", que está diseñado para el almacenamiento seguro de claves privadas. A menos que realmente esté trabajando en la industria de la seguridad/cifrado, esto es casi definitivamente excesivo. También existen otras soluciones de hardware, incluidas "Tarjetas inteligentes" y "Tokens criptográficos USB", que son más baratas que un HSM completo, pero aún requieren cierta inversión en hardware que probablemente sea más de lo que necesita.


A pesar de la recomendación de proteger una clave privada con una contraseña, es posible que tenga problemas si necesita realizar este descifrado dentro de un servicio, como un servidor web. En ese caso, tienes tres opciones:

  1. Proporcione la frase de contraseña cada vez que se inicie la aplicación del servidor.
  2. Proporcione la frase de contraseña en un archivo de configuración. (Solo compatible con algunos servidores)
  3. Elimine la frase de contraseña (o no establezca una en primer lugar).

Si bien el primero es el más seguro, solo se puede utilizar si inicia el servicio manualmente cada vez. Si necesita realizar cualquiera de las otras opciones, asegúrese de proteger adecuadamente el archivo de configuración (opción 2) o la clave privada (opción 3) para evitar el acceso a él.

información relacionada