Compartir a través de


Almacenamiento de una clave de sesión

Nota

En esta sección se supone que los usuarios poseen un conjunto de pares de claves públicas y privadas. Encontrará instrucciones y un ejemplo para crear pares de claves en el Programa C de ejemplo: Crear un contenedor de claves y generar claves.

 

Para almacenar una clave de sesión

  1. Cree un BLOB de clave simple mediante la función CryptExportKey . Esto transferirá la clave de sesión del CSP al espacio de memoria de una aplicación. Especifique que se use una clave pública de intercambio para firmar la clave BLOB.
  2. Almacene la clave firmada BLOB en el disco. Se supone que todos los discos no son seguros.
  3. Cuando se necesite la clave, lea la clave BLOB del disco.
  4. Vuelva a importar la clave BLOB en el CSP mediante la función CryptImportKey .

Para obtener un ejemplo de creación de una clave de sesión y exportación de esa clave a un BLOB de clave simple que se puede escribir en un archivo de disco, vea Programa C de ejemplo: Exportación de una clave de sesión.

Este procedimiento solo proporciona seguridad mínima. Si la clave de sesión almacenada se usará para cifrar los datos en una fecha posterior, el procedimiento anterior no proporciona una seguridad adecuada.

Para proporcionar mayor seguridad, firme la clave BLOB con una clave privada de intercambio antes de almacenarla en el disco. Cuando la clave BLOB se lee más adelante desde el disco, se puede validar su firma para asegurarse de que el BLOB de clave está intacto.

Si la clave BLOB no está firmada, cualquier persona con acceso al disco u otro medio donde se almacena la clave puede crear una nueva clave de sesión.

La nueva clave de sesión se puede cifrar con la clave de intercambio de claves pública del usuario original y esta nueva clave se puede sustituir por el original. Si el usuario usó sin saberlo la clave de sesión sustituida para cifrar archivos y mensajes, la persona que creó la clave de sustitución podría descifrarla fácilmente.

Las firmas digitales se describen en detalle en Hashes y Firmas digitales.