Share via


Importación y exportación de claves

Puede importar y exportar claves simétricas y claves asimétricas con CNG. Además, puede usar la funcionalidad de exportación e importación de claves para mover claves entre máquinas.

Claves simétricas

Para importar o exportar claves simétricas (o de sesión) en las que se usa la misma clave para cifrar y descifrar algunos datos, puede usar las funciones BCryptImportKey y BCryptExportKey . Normalmente, primero se exporta una clave mediante la función BCryptExportKey antes de importar mediante la función BCryptImportKey . Las funciones están diseñadas para habilitar el cifrado de claves exportadas e importadas mediante los parámetros hExportKey y hImportKey ; sin embargo, la implementación de Microsoft de estas funciones no admite el cifrado de claves exportadas e importadas.

Claves asimétricas

Para importar pares de claves asimétricas (o públicas o privadas) en las que se usa una clave para cifrar y la otra se usa para descifrar algunos datos, puede usar cualquiera de las funciones BCryptImportKeyPair o NCryptImportKey . Un proveedor de CNG debe codificar el par de claves mediante un tipo blob de clave admitido. BCryptExportKey se puede usar para crear la clave codificada BLOB. Las estructuras de CNG describen los tipos y estructuras de BLOB clave que admite el proveedor de almacenamiento de claves de Microsoft.

Para que BCryptExportKey cree un par de claves persistente, la clave de entrada BLOB debe contener una clave privada. Las claves públicas no se conservan.

El nombre de clave y la directiva de exportación no forman parte de la estructura BLOB definida en estructuras CNG. Sin embargo, si un BLOB es de un tipo BLOB opaco (como la imagen de memoria de un estado de clave interno), el BLOB podría contener el nombre de clave y las propiedades de la directiva de exportación.

En el procedimiento siguiente se describe cómo importar una clave privada persistente con sus propiedades.

Para importar una clave persistente

  1. Cree una clave persistente mediante la función NCryptCreatePersistedKey .
  2. Establezca las propiedades deseadas en el objeto de clave mediante la función NCryptSetProperty .
  3. Establezca la clave de importación BLOB como una propiedad en la clave, con el tipo BLOB como nombre de propiedad.
  4. Finalice la importación de clave persistente mediante la función NCryptFinalizeKey .