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. Puede encontrar instrucciones y un ejemplo para crear pares de claves en el Programa C de ejemplo: Creación de un contenedor de claves y generación de claves.
Para almacenar una clave de sesión
- Cree un BLOB de claves 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.
- Almacene la clave firmada BLOB en el disco. Se supone que todos los discos son no seguros.
- Cuando se necesite la clave, lea la clave BLOB del disco.
- Importe la clave BLOB de nuevo en el CSP mediante la función CryptImportKey.
Para obtener un ejemplo de cómo crear una clave de sesión y exportarla a un BLOB de claves simple que se pueda escribir en un archivo de disco, consulte 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 va a 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 la clave pública del usuario original y esta nueva clave se puede sustituir por la original. Si el usuario no ha usado la clave de sesión sustituida para cifrar archivos y mensajes, la persona que creó la clave sustituta podría descifrarlos fácilmente.
Las firmas digitales se describen en detalle en Hashes y firmas digitales.