一般的なプロセス

次に、セキュアな Web サイト (SSL を使用しているサイト) にアクセスする際の一般的なプロセスの概要を簡単に説明します。Web ユーザーとしてオンライン銀行にアクセスする場合について考えます。

ここでは、データ自体の暗号化には通常は対称アルゴリズムが使用され、対称アルゴリズムのシークレット キーの送信にのみ非対称アルゴリズムが使用されるものとします。

以下の説明にある「ブラウザー」および「銀行のサーバー」という記述は、それぞれの SSL ソフトウェアを指しています。

  1. 銀行のログイン ページの URL を入力します。
  2. ブラウザーがサポートできる対称アルゴリズムのリストを銀行のサーバーに送信し、銀行の証明書を要求します。
  3. サーバーは使用する対称アルゴリズムを応答で伝え、要求された証明書を送信します。また、シークレット キーの生成に使用する乱数も送信します。
  4. ブラウザーは、銀行の証明書に表示されている CA の階層をインストールされている CA 証明書と照合してチェックします。一致するものがなければ、ブラウザーは警告を表示します。
  5. 一致するものがあれば、ブラウザーは銀行の証明書を発行元の CA と照合してチェックし、通常は次のチェックを行います。いずれかに失敗した場合は警告を表示します。
    • 銀行の証明書にある CA のデジタル署名をチェックします。

      この署名は銀行の証明書の暗号化されたハッシュであり、CA のプライベート キーを使用して暗号化されていることに注意してください。ブラウザーは、CA の証明書から CA のパブリック キーを取得し、それを使用して署名を復号化することでハッシュを取得します。その後、ブラウザー側で銀行の証明書のハッシュを生成し、2 つのハッシュが一致することを確認します。

    • 証明書の開始日および有効期限をチェックして、証明書が最新であることを確認します。
    • 証明書の URL が Web ページを送信したマシンの URL DNS 名と正確に同じであることを確認します。
    • CA の証明書失効リスト (CRL) をチェックするか、OCSP を使用して CA のサーバーにアクセスすることで、証明書が失効していないかどうかを確認します。
  6. ブラウザーは乱数を生成し、銀行のパブリック キーを使用して非対称アルゴリズムで暗号化してから銀行のサーバーに送信します。
  7. 銀行のサーバーは、ブラウザーから送信された乱数を銀行のプライベート キーを使用して復号化します。
  8. ブラウザーおよび銀行のサーバーのそれぞれで 2 つの乱数から別々にシークレット キーが計算されます。
  9. 最後のチェックとして、ブラウザーおよび銀行のサーバーは上記のすべてのメッセージの MAC を相互に送信し、攻撃者によっていずれのメッセージも変更されていないことを確認します。
  10. これで、選択された対称アルゴリズムを使用して機密性を確保しながら、ブラウザーおよび銀行のサーバーが相互にデータを送信できるようになります。