Partilhar via


Importação e exportação de chaves

Você pode importar e exportar chaves simétricas e chaves assimétricas com CNG. E você pode usar a funcionalidade de exportação e importação de chaves para mover chaves entre máquinas.

Chaves simétricas

Para importar ou exportar chaves simétricas (ou de sessão) em que a mesma chave é usada para criptografar e descriptografar alguns dados, você pode usar o BCryptImportKey e funções de BCryptExportKey. Normalmente, você primeiro exporta uma chave usando a função BCryptExportKey antes de importar usando a função BCryptImportKey. As funções são projetadas para permitir a criptografia de chaves exportadas e importadas usando o hExportKey e hImportKey parâmetros; no entanto, a implementação da Microsoft dessas funções não oferece suporte à criptografia de chaves exportadas e importadas.

Chaves assimétricas

Para importar pares de chaves assimétricas (ou público/privado) em que uma chave é usada para criptografar e a outra é usada para descriptografar alguns dados, você pode usar uma das BCryptImportKeyPair ou funções de NCryptImportKey. Um provedor CNG deve codificar o par de chaves usando um tipo deBLOB de chavesuportado. BCryptExportKey pode ser usada para criar o BLOB de chave codificada. CNG Structures descreve os principais tipos de BLOB e estruturas suportados pelo Microsoft Key Storage Provider.

Para BCryptExportKey criar um par de chaves persistentes, o BLOB da chave de entrada deve conter uma chave privada . As chaves públicas não são persistentes.

O nome da chave e a política de exportação não fazem parte da estrutura deBLOBdefinida em Estruturas CNG. No entanto, se um BLOB for de um tipo BLOB opaco (como a imagem de memória de um estado de chave interna), o BLOB poderá conter o nome da chave e as propriedades da política de exportação.

O procedimento a seguir descreve como importar uma chave privada persistente com suas propriedades.

Para importar uma chave persistente

  1. Crie uma chave persistente usando a funçãoNCryptCreatePersistedKey.
  2. Defina as propriedades desejadas no objeto chave usando a funçãoNCryptSetProperty.
  3. Defina a chave de importação BLOB como uma propriedade na chave, com o tipo BLOB como o nome da propriedade.
  4. Finalize a importação de chave persistente usando a funçãoNCryptFinalizeKey.