公開鍵と秘密鍵

公開鍵とそれに関連した秘密鍵は、数値的に互いに関連しています。 ですから、鍵値の一方を使用して暗号化されたデータは、他方の鍵値を使用してのみ復号することができます。 ネットワーク・プロトコルでは、以下の方法でこの点を利用しています。
  • 一方の側から他方の側へ送信する際に、データは、送信側が受信側の公開鍵を知っているなら安全に送信することができます。 送信側は、公開鍵でデータを暗号化してから送信します。 受信側は、それを受信したなら、秘密鍵で復号することによりデータを元の状態に戻します。 意図された受信側は秘密鍵を所有している相手だけなので、意図された受信側のみがデータを元の状態に戻すことができます。
  • 一方の側は、独自の秘密鍵を使用してデータのコピーを暗号化することにより、デジタル署名を行うことができます。 署名者の公開鍵を知っているなら、署名者の公開鍵を使用して署名済みデータを復号することにより、その署名を検査することができます。 元の状態に戻されたデータが予想通りの値 (オリジナル・データ) であれば、それは元の側が署名したデータであり、他者によって偽造されたものではありません。 対応する秘密鍵を持っているのは元の側だけだからです。

実際的な観点からすると、Data Encryption Standard (DES) などの対称暗号化アルゴリズムのほうが、非対称暗号化アルゴリズムよりもかなり処理速度が速くなります。 ですから、公開鍵プロトコルでは、対称暗号化と非対称暗号化を組み合わせて使用します。 例えば、SSL では、非対称暗号化を使用して対称暗号鍵が交換された場合にのみ、メッ セージ・データの対称暗号化が行われます。 また、送信するメッセージのサイズを減らすために、デジタル署名を行うデータは、片方向ハッシュ関数を使用して圧縮し、それから署名者の秘密鍵で暗号化します。 この場合、署名の検証者は、元の状態に戻されたデータに対して同じハッシュ関数を適用してから署名を比較します。