4. The Extended Master Secret (拡張マスターシークレット)
4. The Extended Master Secret (拡張マスターシークレット)
完全なハンドシェイクで拡張マスターシークレット拡張がネゴシエートされると、master_secret は次のように計算されます。
master_secret = PRF(pre_master_secret, "extended master secret",
session_hash)
[0..47];
拡張マスターシークレットの計算は、次の点で [RFC5246] で説明されているものと異なります。
-
"master secret" の代わりに "extended master secret" ラベルが使用されます。
-
ClientHello.randomおよびServerHello.randomの代わりにsession_hashが使用されます。
session_hash は、ClientHello.random と ServerHello.random に加えて、暗号スイート、鍵交換情報、およびクライアントとサーバーからの証明書(ある場合)を含むハンドシェイクログに依存します。その結果、拡張マスターシークレットは、これらすべてのセッションパラメータの選択に依存します。
この設計は、キーを計算するセキュリティコンテキストにバインドする必要があるという推奨事項を反映しています [SP800-108]。鍵交換メッセージのハッシュをマスターキー導出に混合する手法は、Secure Shell (SSH) [RFC4251] などの他の有名なプロトコルですでに使用されています。
クライアントとサーバーは、拡張マスターシークレットを使用しないハンドシェイクを受け入れるべきではありません (SHOULD NOT)。特に、Section 6.1 で説明されている脆弱なケースに該当する複合認証などの機能に依存している場合はそうです。