TLS中にセッションキーの両側で同じ値がありますか?
ハンドシェイクフェーズの最後のステップで生成されたセッションキーについて、2つの質問があります。
「クライアント書き込みキー」と「サーバー書き込みキー」は、両方のキーが両側で独立して生成されている場合でも、同じ値になりますか?
(同じ質問)「クライアント書き込みMACキー」と「サーバー書き込みMACキー」も同じ値ですか?
一般的な質問:セッションキーの生成中に、クライアントとサーバーは同じ結果に到達しますか?
回答
「クライアント書き込みキー」と「サーバー書き込みキー」は、両方のキーが両側で独立して生成されている場合でも、同じ値になりますか?
いいえ、次の回答を参照してください。
暗号化キーの場合、メッセージはとにかくMACされるため、これはそれほど重要ではありません。ただし、TLS 1.2内で、MAC-then-encryptが使用される前は、いくつかの望ましくない脆弱性が公開される可能性があります。たとえば、送信者がオラクル攻撃に対して脆弱である場合、同じキーが使用されるときにそれを使用してメッセージを復号化できます。これは、オラクルのパディング攻撃が当初は想定されていなかったため、キーの分離が常に良い考えであることを示しています。
(同じ質問)「クライアント書き込みMACキー」と「サーバー書き込みMACキー」も同じ値ですか?
いいえ、それらは意図的に異なっているため、送信者に独自のメッセージを再生させることはできません。基本的に、KDF(TLS 1.2用語ではPRF)は、キーごとに異なるラベルを使用します。つまり、派生キーはそれぞれマスターキーにのみ依存します(一方向性関数を使用)。
一般的な質問:セッションキーの生成中に、クライアントとサーバーは同じ結果に到達しますか?
はい、そうです。ただし、特定のキーごとに同じ値になるだけです。クライアントとサーバーは同一のマスターシークレットを取得し、特定のキーに同じラベルを使用します。したがって、両側に「クライアント書き込みキー」がありますが、サーバーはそれを使用してメッセージを復号化します。