Schlüsselimport und -export

Sie können symmetrische Schlüssel und asymmetrische Schlüssel mit CNG importieren und exportieren. Außerdem können Sie schlüsselexport- und import-Funktionen verwenden, um Schlüssel zwischen Computern zu verschieben.

Symmetrische Schlüssel

Zum Importieren oder Exportieren symmetrischer Schlüssel (oder Sitzungsschlüssel), in denen derselbe Schlüssel zum Verschlüsseln und Entschlüsseln einiger Daten verwendet wird, können Sie die Funktionen BCryptImportKey und BCryptExportKey verwenden. In der Regel exportieren Sie zunächst einen Schlüssel mithilfe der BCryptExportKey-Funktion, bevor Sie den Import mithilfe der BCryptImportKey-Funktion ausführen. Die Funktionen sind so konzipiert, dass die Verschlüsselung exportierter und importierter Schlüssel mithilfe der Parameter hExportKey und hImportKey aktiviert wird. Die Microsoft-Implementierung dieser Funktionen unterstützt jedoch keine Verschlüsselung exportierter und importierter Schlüssel.

Asymmetrische Schlüssel

Zum Importieren asymmetrischer (oder öffentlicher/privater)Schlüsselpaare, in denen ein Schlüssel zum Verschlüsseln und der andere zum Entschlüsseln einiger Daten verwendet wird, können Sie entweder die Funktionen BCryptImportKeyPair oder NCryptImportKey verwenden. Ein CNG-Anbieter muss das Schlüsselpaar mit einem unterstützten Schlüsselblobtyp codieren. BCryptExportKey kann zum Erstellen des codierten Schlüsselblobs verwendet werden. CNG-Strukturen beschreibt die wichtigsten BLOB-Typen und -Strukturen, die von Microsoft Key Storage Provider unterstützt werden.

Damit BCryptExportKey ein persistentes Schlüsselpaar erstellen kann, muss das Eingabeschlüssel-BLOB einen privaten Schlüsselenthalten. Öffentliche Schlüssel werden nicht beibehalten.

Der Schlüsselname und die Exportrichtlinie sind nicht Teil der BLOB-Struktur, die in CNG-Strukturendefiniert ist. Wenn ein BLOB jedoch einen nicht transparenten BLOB-Typ aufweist (z. B. das Speicherimage eines internen Schlüsselzustands), kann das BLOB den Schlüsselnamen und die Exportrichtlinieneigenschaften enthalten.

Im folgenden Verfahren wird beschrieben, wie ein persistenter privater Schlüssel mit seinen Eigenschaften importiert wird.

So importieren Sie einen persistenten Schlüssel

  1. Erstellen Sie mithilfe der NCryptCreatePersistedKey-Funktion einen persistenten Schlüssel.
  2. Legen Sie alle gewünschten Eigenschaften für das Schlüsselobjekt fest, indem Sie die NCryptSetProperty-Funktion verwenden.
  3. Legen Sie das Blob für den Importschlüssel als Eigenschaft für den Schlüssel fest, wobei der BLOB-Typ als Eigenschaftenname festgelegt wird.
  4. Finalisieren Sie den persistenten Schlüsselimport mithilfe der NCryptFinalizeKey-Funktion.