キーのインポートとエクスポート

対称キーと非対称 キー は、CNG を使用してインポートおよびエクスポートできます。 また、キーのエクスポートとインポート機能を使用して、マシン間でキーを移動できます。

対称キー

一部のデータの暗号化と暗号化解除に同じキーを使用する対称キー (またはセッション) キーをインポートまたはエクスポートするには、 BCryptImportKey 関数と BCryptExportKey 関数を使用できます。 通常、BCryptImportKey 関数を使用してインポートする前に、まず BCryptExportKey 関数を使用してキーをエクスポートします。 関数は、hExportKey パラメーターと hImportKey パラメーターを使用して、エクスポートされたキーとインポートされたキーの暗号化を有効にするように設計されています。ただし、これらの関数の Microsoft 実装では、エクスポートされたキーとインポートされたキーの暗号化はサポートされていません。

非対称キー

一方のキーが暗号化に使用され、もう一方がデータの暗号化解除に使用される非対称 (または 公開/秘密) キーペアをインポートするには、 BCryptImportKeyPair 関数または NCryptImportKey 関数のいずれかを使用できます。 CNG プロバイダーは、サポートされているキー BLOB の種類を使用して キー ペアをエンコードする必要があります。 BCryptExportKey を 使用して、エンコードされたキー BLOB を作成できます。 CNG 構造体では、 Microsoft Key Storage Provider がサポートする主要な BLOB の種類と構造について説明します。

BCryptExportKey で永続化されたキー ペアを作成するには、入力キー BLOB に秘密キーが含まれている必要があります。 公開キー は保持されません。

キー名とエクスポート ポリシーは、CNG 構造体で定義されている BLOB 構造の一部ではありません。 ただし、BLOB が不透明な BLOB 型の場合 (内部キー状態のメモリ イメージなど)、BLOB にキー名と export-policy プロパティが含まれている可能性があります。

次の手順では、永続化された秘密キーとそのプロパティをインポートする方法について説明します。

永続化されたキーをインポートするには

  1. NCryptCreatePersistedKey 関数を使用して、永続化されたキーを作成します。
  2. NCryptSetProperty 関数を使用して、キー オブジェクトに必要なプロパティを設定します。
  3. インポート キー BLOB をキーのプロパティとして設定し、BLOB の種類をプロパティ名として設定します。
  4. NCryptFinalizeKey 関数を使用して、永続化されたキーのインポートを最終処理します。