次の方法で共有


セッション キーの格納

Note

このセクションでは、ユーザーが 公開キーと秘密キーのペアのセットを持っていることを前提としています。 キー ペアを作成する手順と例については、 C プログラムの例: キー コンテナーの作成とキーの生成に関するページを参照してください。

 

セッション キーを格納するには

  1. CryptExportKey 関数を使用して、単純なキー BLOB を作成します。 これにより、CSP からアプリケーションのメモリ領域にセッション キーが転送されます。 キー BLOB の署名に Exchange 公開キーを使用するように指定します。
  2. 署名されたキー BLOB をディスクに格納します。 すべてのディスクが安全でないと見なされます。
  3. キーが必要な場合は、ディスクからキー BLOB を読み取ります。
  4. CryptImportKey 関数を使用して、キー BLOB を CSP にインポートし直します。

セッション キーを作成し、そのキーをディスク ファイルに書き込むことができる単純なキー BLOB にエクスポートする例については、「サンプル C プログラム: セッション キーのエクスポート」を参照してください。

この手順では、最小限のセキュリティのみが提供されます。 保存されたセッション キーを使用して後日データを暗号化する場合、前の手順では適切なセキュリティが提供されません。

セキュリティを強化するには、ディスクに格納する前に、交換秘密キーを使用してキー BLOB に署名します。 キー BLOB が後でディスクから読み取られるとき、その署名を検証して、キー BLOB が完全であることを確認できます。

キー BLOB が署名されていない場合、キーが格納されているディスクまたはその他のメディアにアクセスできるユーザーは、新しいセッション キーを作成できます。

新しいセッション キーは元のユーザーの 公開キー交換キーで暗号化でき、この新しいキーは元のキーに置き換えることができます。 ユーザーが無意識のうちに、置換されたセッション キーを使用してファイルとメッセージを暗号化した場合、代替キーを作成した個人は簡単に暗号化を解除できます。

デジタル署名については、「 ハッシュとデジタル署名」で詳しく説明されています。