Importation et exportation de clé

Vous pouvez importer et exporter des clés symétriques et asymétriques avec CNG. Vous pouvez également utiliser la fonctionnalité d’exportation et d’importation de clés pour déplacer des clés entre des machines.

Clés symétriques

Pour importer ou exporter des clés symétriques (ou de session) dans lesquelles la même clé est utilisée pour chiffrer et déchiffrer certaines données, vous pouvez utiliser les fonctions BCryptImportKey et BCryptExportKey . En règle générale, vous exportez d’abord une clé à l’aide de la fonction BCryptExportKey avant de l’importer à l’aide de la fonction BCryptImportKey . Les fonctions sont conçues pour activer le chiffrement des clés exportées et importées à l’aide des paramètres hExportKey et hImportKey ; Toutefois, l’implémentation Microsoft de ces fonctions ne prend pas en charge le chiffrement des clés exportées et importées.

Clés asymétriques

Pour importer des paires de clés asymétriques (ou publiques/privées) dans lesquelles une clé est utilisée pour chiffrer et l’autre est utilisée pour déchiffrer des données, vous pouvez utiliser les fonctions BCryptImportKeyPair ou NCryptImportKey . Un fournisseur CNG doit encoder la paire de clés à l’aide d’un type blob de clé pris en charge. BCryptExportKey peut être utilisé pour créer l’objet BLOB de clé encodé. CNG Structures décrit les principaux types et structures d’objets blob pris en charge par le fournisseur de stockage de clés Microsoft.

Pour que BCryptExportKey crée une paire de clés persistante, l’objet BLOB de clé d’entrée doit contenir une clé privée. Les clés publiques ne sont pas conservées.

Le nom de clé et la stratégie d’exportation ne font pas partie de la structure BLOB définie dans les structures CNG. Toutefois, si un objet BLOB est d’un type BLOB opaque (par exemple, l’image mémoire d’un état de clé interne), l’objet BLOB peut contenir le nom de clé et les propriétés de stratégie d’exportation.

La procédure suivante décrit comment importer une clé privée persistante avec ses propriétés.

Pour importer une clé persistante

  1. Créez une clé persistante à l’aide de la fonction NCryptCreatePersistedKey .
  2. Définissez les propriétés souhaitées sur l’objet clé à l’aide de la fonction NCryptSetProperty .
  3. Définissez l’objet BLOB de clé d’importation en tant que propriété sur la clé, avec le type BLOB comme nom de propriété.
  4. Finalisez l’importation de clé persistante à l’aide de la fonction NCryptFinalizeKey .