SSL (Secure Sockets Layer)
プロトコルでは、公開キー暗号化と対称キー暗号化を組み合わせて使用します。対称キー暗号化は公開キー暗号化より高速ですが、公開キー暗号化はより高度な認証技術を利用できます。SSL
セッションは、常に SSL
ハンドシェイクと呼ばれるメッセージ交換から始まります。このハンドシェイクでは、公開キー技術を使用して、サーバーがクライアントに対してサーバー自身を認証することができます。その後、クライアントとサーバーが連携して対称キーを作成して、以後のセッションでの暗号化、解読および改ざんの検出を高速化できます。必要な場合は、クライアントがサーバーに対してクライアント自身を認証することもできます。
SSL ハンドシェイクで実行される手順は以下のとおりです (以下の手順では、Cipher Suites with
RSA Key Exchange の一覧にある暗号化方式、Triple DES、RC4、RC2、および DES を使用するものとします)。
- クライアントがサーバーに対して、クライアントの SSL
バージョン番号、暗号設定、セッション固有のデータなど、サーバーが SSL を使用してクライアントと通信するために必要な情報を送信します。
- サーバーがクライアントに対して、サーバーの SSL
バージョン番号、暗号設定、セッション固有のデータなど、クライアントが SSL
を使用してサーバーと通信するために必要な情報を送信します。サーバーは自身の証明書も送信します。また、クライアントがクライアント認証の必要なサーバー
リソースを要求している場合、サーバーはクライアントの証明書を要求します。
- サーバーから送信された情報を使用して、クライアントがサーバーを認証します (詳細については「Server
Authentication」257587?
(http://support.microsoft.com/kb/257587/JA/
)
を参照)。サーバーを認証できない場合、発生した問題、および暗号化され、認証された接続を確立できないことがユーザーに通知されます。サーバーの認証に成功すると、クライアントは手順
4. に進みます。
- ハンドシェイクでこれまでに生成されたすべてのデータを使用して、クライアントが
(使用する暗号化によってはサーバーも連携して) セッションのプリマスタ シークレットを作成し、手順 2.
で送信されたサーバーの証明書から取得したサーバーの公開キーで暗号化します。その後、暗号化したプリマスタ シークレットをサーバーに送信します。
- サーバーがクライアント認証を要求した場合 (SSL
ハンドシェイクでは、この手順が省略される場合があります)、クライアントは、そのハンドシェイクに固有で、クライアントとサーバーの両方が認識しているデータの別の部分に署名します。この場合、クライアントは、暗号化したプリマスタ
シークレットと共に、署名したデータとクライアント自身の証明書の両方をサーバーに送信します。
- サーバーがクライアント認証を要求した場合、サーバーはクライアントの認証を試みます (詳細については「Client
Authentication」
を参照)。クライアントを認証できない場合はセッションが終了します。クライアントの認証に成功すると、サーバーが秘密キーを使用してプリマスタ
シークレットを解読し、マスタ シークレットを作成するための一連の手順を実行します (同じプリマスタ シークレットから始まる手順をクライアントも実行します)。
- クライアントとサーバーの両方がマスタ シークレットを使用してセッション
キーを作成します。このキーは対称キーとして、SSL セッション中に交換される情報の暗号化と解読、および整合性の確認 (SSL
接続経由でデータが送信されてから受信されるまでに変更が加えられていないかどうかの確認) に使用されます。
- クライアントがサーバーに対して、以後クライアントから送信されるメッセージはこのセッション
キーで暗号化されることを通知するメッセージを送信します。その後、ハンドシェイクのクライアント部分が終了したことを示す別の (暗号化した)
メッセージを送信します。
- サーバーがクライアントに対して、以後サーバーから送信されるメッセージはこのセッション
キーで暗号化されることを通知するメッセージを送信します。その後、ハンドシェイクのサーバー部分が終了したことを示す別の (暗号化した) メッセージを送信します。
- SSL ハンドシェイクが完了し、セッションが開始されます。クライアントとサーバーはセッション
キーを使用して、相互に送信されるデータの暗号化と解読、および整合性の確認を行います。
- 以上が、セキュリティで保護されたチャネルでの通常の動作です。内部または外部の状況 (自動処理やユーザーの操作)
に応じて、サーバーまたはクライアントが接続をネゴシエートし直す場合もあります。このような場合は、上記の手順が繰り返されます。
257587?
(http://support.microsoft.com/kb/257587/EN-US/
)
Description of the Server Authentication Process During the SSL Handshake
257587?
(http://support.microsoft.com/kb/257587/JA/
)
[IIS] SSL ハンドシェイクでのサーバー認証プロセスに関する説明
- Microsoft Internet Information Server 4.0 リソース キット
- Microsoft Windows NT Option Pack マニュアル
- Microsoft Internet Information Services 5.0 リソース ガイド
- Microsoft Internet Information Services 5.0 マニュアル
この資料は米国 Microsoft Corporation から提供されている Knowledge Base の
Article ID
257591?
(http://support.microsoft.com/kb/257591/EN-US/
)
(最終更新日 2003-05-23) を基に作成したものです。
この資料は以下の製品について記述したものです。
- Microsoft Internet Information Services 6.0
- Microsoft Internet Information Server 4.0
- Microsoft Internet Information Services 5.0
"Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。"