You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Next »

4.16 SSL ハンドシェイク

セキュア・ソケット・レイヤー(SSL)プロトコルでは、公開鍵暗号化と対称鍵暗号化を組み合わせて使用します。
対称鍵暗号化は、公開鍵暗号化よりも速く実行されますが、公開鍵暗号化の方が優れた認証技術が提供されます。
SSLセッションは、必ずSSLハンドシェイクと呼ばれるメッセージの交換で始まります。
ハンドシェイクを使用すると、サーバーは公開鍵技術を使用してクライアントに対して自身を証明できます。その後、クライアントとサーバーは協力して対称鍵を作成します。この鍵は、以降のセッションでの暗号化、復号化、不正検出を高速化するために使用されます。
ハンドシェイクでは、クライアントがサーバーに対してオプションで自身を証明することもできます。
SSLハンドシェイクに必要なステップは以下のとおりです。
1.      クライアントは、クライアントの "hello" (挨拶) メッセージを送信します。このメッセージには、SSL のバージョン、クライアントでサポートされる暗号スイート、クライアントでサポートされるデータ圧縮方法などのクライアントの暗号機能 (クライアントの優先順位でソート) がリストされています。メッセージには、28バイトの乱数も含まれます。
2.      サーバーからはサーバーの "hello" メッセージで応答します。このメッセージには、サーバーで選択された暗号方法 (暗号スイート) とデータ圧縮方法、セッションID、別の乱数が含まれます。
         注:クライアントとサーバーは、少なくとも1つの共通暗号スイートをサポートしている必要があります。サポートしていない場合、ハンドシェイクは失敗します。サーバーは、通常、最も強力な共通暗号スイートを選択します。
3.      サーバーは自身のデジタル証明書を送信します。サーバーが SSL V3を使用し、サーバーのアプリケーションでクライアント認証用のデジタル証明書が必要な場合、サーバーは "digital certificate request" (デジタル証明書要求) メッセージを送信します。このデジタル証明書要求メッセージで、サーバーはサポートされるデジタル証明書のタイプと、受け入れ可能な認証機関の識別名のリストを送信します。
4.      サーバーが自身の "hello done" (挨拶終了) メッセージを送信し、クライアントの応答を待機します。
5.      サーバーの "hello done" メッセージを受け取ると、クライアントはサーバーのデジタル証明書の有効性を検証し、サーバーの "hello" パラメータが受付可能かどうかを確認します。
          サーバーがクライアントのデジタル証明書を要求した場合、クライアントはデジタル証明書を送信します。もしくは、適切なデジタル証明書を入手できない場合は "no digital certificate" (デジタル証明書なし) のアラートを送信します。このアラートは単なる警告ですが、クライアント認証が強制される場合、サーバー・アプリケーションはセッションに失敗することがあります。
6.      クライアントは "client key exchange" (クライアント鍵の交換) メッセージを送信します。このメッセージには、プレマスター・シークレットが含まれます。これは、サーバーの公開鍵で暗号化される、対称暗号鍵とメッセージ認証コード (MAC) 鍵の生成に使用される 46 バイトの乱数です。
          クライアントがサーバーにデジタル証明書を送信すると、クライアントは、クライアントの秘密鍵で署名された "digital certificate verify" (デジタル証明書の検証) メッセージを送信します。サーバーは、このメッセージの署名を検証することでクライアントのデジタル証明書の所有者を明示的に検証できます。
         注:サーバーのデジタル証明書を検証する追加のプロセスは必要ありません。デジタル証明書に属する秘密鍵がサーバーにない場合、サーバーはプレマスター・シークレットの復号化や、対称暗号アルゴリズムの正しい鍵の作成を行うことができず、ハンドシェイクは失敗します。
7.      クライアントは一連の暗号操作を使用して、プレマスター・シークレットをマスター・シークレットに変換します。暗号化やメッセージの認証に必要な鍵のすべての材料はここから抽出されます。その後、クライアントは "change cipher spec" (暗号仕様の変更) メッセージを送信して、サーバーが新しく交渉された暗号スイートに切り替えるようにします。次にクライアントから送信されるメッセージ ("finished" (完了) メッセージ) が、この暗号方法と鍵で暗号化される最初のメッセージになります。
8.      サーバーは、自身の "change cipher spec" (暗号仕様の変更) と "finished" (完了) メッセージで応答します。
9.      SSL ハンドシェイクが終了し、暗号化されたアプリケーション・データを送信できます。
 

  • No labels