メインコンテンツまでスキップ

7. 切り詰められた HMAC

現在定義されている TLS 暗号スイートは、レコード層通信を認証するために MD5 または SHA-1 [RFC2104] を使用した MAC 構造 HMAC を使用します。TLS では、ハッシュ関数の出力全体が MAC タグとして使用されます。ただし、制約のある環境では、MAC タグを形成する際にハッシュ関数の出力を 80 ビットに切り詰めることによって帯域幅を節約することが望ましい場合があります。

80 ビットの切り詰められた HMAC の使用をネゴシエートするために、クライアントは拡張クライアント hello にタイプ「truncated_hmac」の拡張を含めることができます (MAY)。この拡張の「extension_data」フィールドは空である必要があります (SHALL)。

「truncated_hmac」拡張を含む拡張 hello を受信するサーバーは、空の「extension_data」を持つタイプ「truncated_hmac」の拡張を拡張サーバー hello に含めることによって、切り詰められた HMAC の使用に同意できます (MAY)。

新しい暗号スイートが追加されて HMAC を使用しない場合、およびセッションがこれらの暗号スイートの 1 つをネゴシエートする場合、この拡張は効果がないことに注意してください。他の MAC を使用する新しい暗号スイートは、セキュリティと帯域幅の両方の考慮事項を考慮して、MAC サイズを暗号スイート定義の不可欠な部分と見なすことを強く推奨します。

TLS ハンドシェイク中に HMAC 切り詰めが正常にネゴシエートされ、ネゴシエートされた暗号スイートが HMAC を使用する場合、クライアントとサーバーの両方が、他のネゴシエートされたセキュリティパラメータとともにこの事実を TLS レコード層に渡します。その後、セッション中、クライアントとサーバーは、[RFC2104] で指定されているように計算される切り詰められた HMAC を使用する必要があります (MUST)。つまり、CipherSpec.hash_size は 10 バイトであり、HMAC 出力の最初の 10 バイトのみが送信およびチェックされます。この拡張は、ハンドシェイクまたは鍵導出の一部としての疑似ランダム関数 (PRF) の計算には影響しないことに注意してください。

ネゴシエートされた HMAC 切り詰めサイズは、セッション再開を含むセッションの期間中適用されます。