Share via


非対称キー

非対称暗号化には、 非対称キー (公開キーと秘密キーのペアとも呼ばれます) が使用されます。 非対称暗号化は、主に セッション キーデジタル署名の暗号化と暗号化解除に使用されます。 非対称暗号化では 、公開キー暗号化 アルゴリズムが使用されます。

公開キー アルゴリズムでは、 公開キー と秘密キーの 2 つの異なる キーが使用されます。 ペアの秘密キー メンバーは、秘密とセキュリティを維持する必要があります。 ただし、公開キーは、要求するすべてのユーザーに配布できます。 キー ペアの公開キーは、多くの場合、 デジタル証明書によって配布されます。 キー ペアの 1 つのキーを使用してメッセージを暗号化する場合、メッセージの暗号化を解除するには、そのペアのもう 1 つのキーが必要です。 したがって、ユーザー A の公開キーを使用してデータを暗号化する場合は、ユーザー A (またはユーザー A の秘密キーにアクセスできるユーザー) のみがデータの暗号化を解除できます。 ユーザー A の秘密キーを使用してデータの一部を暗号化する場合、ユーザー A の公開キーのみがデータの暗号化を解除するため、ユーザー A (またはユーザー A の秘密キーにアクセスできるユーザー) が暗号化を行ったことを示します。

秘密キーを使用してメッセージに署名する場合は、そのペアの公開キーを使用して署名を検証する必要があります。 たとえば、Alice がデジタル署名されたメッセージを他のユーザーに送信する場合は、秘密キーを使用してメッセージに署名し、もう一方のユーザーは公開キーを使用して署名を確認できます。 おそらく Alice だけが自分の秘密キーにアクセスできるため、Alice の公開キーを使用して署名を検証できるということは、Alice が署名を作成したことを示しています。

残念ながら、公開キー アルゴリズムは非常に遅く、対称アルゴリズムの約 1,000 倍遅くなります。 大量のデータを暗号化するために使用することは実用的ではありません。 実際には、公開キー アルゴリズムを使用して セッション キーを暗号化します。 対称アルゴリズム は、ほとんどのデータの暗号化/暗号化解除に使用されます。

同様に、メッセージに署名すると実質的にメッセージが暗号化されるため、公開キー署名アルゴリズムを使用して大きなメッセージに署名することは実用的ではありません。 代わりに、固定長 ハッシュ がメッセージで作成され、ハッシュ値が署名されます。 詳細については、「 ハッシュとデジタル署名」を参照してください。

通常、各ユーザーには 2 つの 公開キーと秘密キーのペアがあります。 1 つのキー ペアを使用してセッション キーを暗号化し、もう 1 つのキー ペアを使用して デジタル署名を作成します。 これらはそれぞれ 、キー交換キー ペア署名キー ペアと呼ばれます。

ほとんどの 暗号化サービス プロバイダー (CSP) によって作成されたキー コンテナーには 2 つのキー ペアが含まれていますが、これは必須ではありません。 一部の CSP は キー ペアを 格納しませんが、他の CSP は 2 つ以上のペアを格納します。

CryptoAPI のすべてのキーは CSP 内に格納されます。 CSP は、キーを作成し、それらを破棄し、それらを使用してさまざまな暗号化操作を実行する役割も担います。 他のユーザーに送信できるように CSP からキーをエクスポートする方法については、「 暗号化キー ストレージと Exchange」を参照してください。