TLS Handshake:Under The Hood

Server—ServerKeyExchange

このメッセージは、両当事者による対称暗号化のための最終セッション鍵を構築するときに利用される中間の秘密を導 RSA鍵交換などの一部の鍵交換アルゴリズムではこれらのパラメータが必要ないため、クライアントがプリマスターシークレットを構築してサーバーと安全に通

例えば。 前の手順でサーバーが選択したキー交換の方法がDiffie–Hellman(DH)である場合、サーバーは証明書の後にこのメッセージを含めます。

Server—CertificateRequest

このメッセージは、サーバーでSSLクライアント認証が有効になっている場合に送信されます。 これは通常、ほとんどのwebサーバーでは必要ありませんが、高いセキュリティ要件のために、サーバーは認証にクライアントの証明書を必要とする場合があ サーバーは、証明書要求とともに、受け入れ可能なクライアントの種類を送信し、サーバーによって信頼されている認証局の識別名のリストも示します。 このリストには、サーバーのトラストストアで使用可能なCA権限が含まれます。

Server—ServerHelloDone

最後に、サーバーは、サーバーがセキュリティパラメータの渡しを終了したことを示すServerHelloDoneメッセージをクライアントに送信します。 このメッセージは、ハンドシェイクネゴシエーションのサーバーの部分を終了します。 このメッセージには他の情報は含まれません。

Client—Certificate

サーバーが証明書要求メッセージでクライアント認証を要求すると、クライアントはクライアント証明書で応答します。 しかし、証明書を送信する前に、クライアントは、クライアントの証明書の発行者のDNがサーバーによって送信された信頼されたCaの識別名のリストに 発行者のDNが見つからなかった場合、クライアントはその証明書をサーバーに送信しません。 サーバー側では、クライアント証明書認証が必須の場合、TLSハンドシェイクはここで失敗します。 それ以外の場合、クライアントは、証明書要求メッセージにリストされている一致したDNにチェーンする証明書と必要な中間証明書を送信します。

Client—ClientKeyExchange

ClientKeyExchangeメッセージには、クライアントによって生成されるプリマスターシークレットが含まれています。 これは、前のステップで両当事者によってaggreed暗号スイートに従って行われます。 クライアントとサーバーの両方がこれを使用してマスターシークレットを生成し、暗号化されたチャネルを確立するために必要な最終的な暗号化キーを導 クライアントは、盗聴者がこのビットのデータを傍受した場合、サーバーの秘密鍵にアクセスできないため、事前マスター秘密をサーバーの公開鍵で暗号化します。 マスターキーは、対称暗号化のキーを生成するために必要なデータをサーバーに提供します。 ただし、このセッションで選択された暗号スイートがDHの場合、ClientKeyExchangeには、プレマスターシークレットではなく、クライアントのパブリックDHパラメータが含まれ

Client—CertificateVerify

このメッセージは、クライアントが公開キー証明書に対応する秘密キーを所有していることをサーバーに証明するために使用されます。 メッセージには、クライアントによってデジタル署名されたハッシュ情報(ハンドシェイク処理中にこれまでに交換されたすべてのメッセージのハ サーバーがクライアントにCertificateRequestを発行した場合、クライアントがサーバー側で検証する必要がある応答で証明書を送信するようにする必要があります。

Client—ChangeCipherSpec

ChangeCipherSpecメッセージは、クライアントがここから送信するすべてのデータが合意されたセキュリティパラメータを使用して暗号化されることをサーバー この時点で、クライアントとサーバーの両方に、マスターシークレットを生成し、暗号化セッションキーを導出するために必要なすべてのコンポーネ
双方は、ハンドシェイクが計画通りに進行し、CipherSuiteがアクティブ化されていることをお互いに示す最終的な暗号化された終了メッセージを送信すること

Client—Finished

最初に、クライアントは暗号化されたFinishedメッセージをサーバーに送信します。 このメッセージは、以前のすべてのハンドシェイクメッセージの暗号化ハッシュ(メッセージダイジェスト)であり、その後にクライアントロール、マスターシークレット、パディングを識別する特別な番号が続きます。 これは、新しく生成されたセッションキーで暗号化され、サーバーに送信されます。

Server—ChangeCipherSpec

サーバーはChangeCipherSpecメッセージをクライアントに送信し、このメッセージの後のすべてのデータが暗号化されることをクライアントに伝えます。

Server—Finished

ChangeCipherSpecメッセージの後に、サーバーからクライアントへの暗号化されたFinishedメッセージが続きます。 これは、サーバーの役割を識別する特別な番号とともに、hanshakeプロセス中に使用されるすべてのコンポーネントのサーバーによって生成された暗号化ハ

コメントを残す

メールアドレスが公開されることはありません。