Importazione ed esportazione delle chiavi

È possibile importare ed esportare chiavi simmetriche e chiavi asimmetriche con CNG. È inoltre possibile usare la funzionalità di esportazione e importazione delle chiavi per spostare le chiavi tra computer.

Chiavi simmetriche

Per importare o esportare chiavi simmetriche (o sessione) in cui la stessa chiave viene usata per crittografare e decrittografare alcuni dati, è possibile usare le funzioni BCryptImportKey e BCryptExportKey . In genere, si esporta una chiave usando la funzione BCryptExportKey prima di importare usando la funzione BCryptImportKey . Le funzioni sono progettate per abilitare la crittografia delle chiavi esportate e importate usando i parametri hExportKey e hImportKey ; Tuttavia, l'implementazione Microsoft di queste funzioni non supporta la crittografia delle chiavi esportate e importate.

Chiavi asimmetriche

Per importare coppie di chiavi asimmetriche (o pubbliche/private) in cui una chiave viene usata per crittografare e l'altra viene usata per decrittografare alcuni dati, è possibile usare le funzioni BCryptImportKeyPair o NCryptImportKey. Un provider CNG deve codificare la coppia di chiavi usando un tipo BLOB di chiavi supportato. BCryptExportKey può essere usato per creare il BLOB della chiave codificata. Le strutture CNG descrivono i tipi e le strutture BLOB chiave supportati dal provider di archiviazione chiavi Microsoft.

Per BCryptExportKey per creare una coppia di chiavi persistente, il BLOB della chiave di input deve contenere una chiave privata. Le chiavi pubbliche non vengono mantenute.

Il nome della chiave e i criteri di esportazione non fanno parte della struttura BLOB definita in Strutture CNG. Tuttavia, se un BLOB è di tipo BLOB opaco ,ad esempio l'immagine di memoria di uno stato della chiave interna, il BLOB potrebbe contenere il nome della chiave e le proprietà dei criteri di esportazione.

La procedura seguente descrive come importare una chiave privata persistente con le relative proprietà.

Per importare una chiave persistente

  1. Creare una chiave persistente usando la funzione NCryptCreatePersistedKey .
  2. Impostare le proprietà desiderate nell'oggetto chiave usando la funzione NCryptSetProperty .
  3. Impostare il BLOB della chiave di importazione come proprietà sulla chiave, con il tipo BLOB come nome della proprietà.
  4. Finalizzare l'importazione della chiave persistente usando la funzione NCryptFinalizeKey .