Internet Engineering Task Force (IETF)                     A. Popov, Ed.
Request for Comments: 8472                                   M. Nystroem
Category: Standards Track                                Microsoft Corp.
ISSN: 2070-1721                                               D. Balfanz
                                                             Google Inc.
                                                            October 2018

Transport Layer Security (TLS) Extension for Token Binding Protocol Negotiation




This document specifies a Transport Layer Security (TLS) extension for the negotiation of Token Binding protocol version and key parameters. Negotiation of Token Binding in TLS 1.3 and later versions is beyond the scope of this document.

このドキュメントでは、トークンバインディングプロトコルのバージョンとキーパラメータのネゴシエーション用のトランスポート層セキュリティ(TLS)拡張を指定します。 TLS 1.3以降のバージョンでのトークンバインディングのネゴシエーションは、このドキュメントの範囲外です。

Status of This Memo


This is an Internet Standards Track document.

これはInternet Standards Trackドキュメントです。

This document is a product of the Internet Engineering Task Force (IETF). It represents the consensus of the IETF community. It has received public review and has been approved for publication by the Internet Engineering Steering Group (IESG). Further information on Internet Standards is available in Section 2 of RFC 7841.

このドキュメントは、IETF(Internet Engineering Task Force)の製品です。これは、IETFコミュニティのコンセンサスを表しています。公開レビューを受け、インターネットエンジニアリングステアリンググループ(IESG)による公開が承認されました。インターネット標準の詳細については、RFC 7841のセクション2をご覧ください。

Information about the current status of this document, any errata, and how to provide feedback on it may be obtained at


Copyright Notice


Copyright (c) 2018 IETF Trust and the persons identified as the document authors. All rights reserved.

Copyright(c)2018 IETF Trustおよびドキュメントの作成者として識別された人物。全著作権所有。

This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents ( in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License.

この文書は、BCP 78およびIETF文書に関するIETFトラストの法的規定(の対象であり、この文書の発行日に有効です。これらのドキュメントは、このドキュメントに関するあなたの権利と制限を説明しているため、注意深く確認してください。このドキュメントから抽出されたコードコンポーネントには、Trust Legal Provisionsのセクション4.eに記載されているSimplified BSD Licenseのテキストが含まれている必要があり、Simplified BSD Licenseに記載されているように保証なしで提供されます。

Table of Contents


   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   2
     1.1.  Requirements Language . . . . . . . . . . . . . . . . . .   2
   2.  Token Binding Negotiation ClientHello Extension . . . . . . .   2
   3.  Token Binding Negotiation ServerHello Extension . . . . . . .   3
   4.  Negotiating Token Binding Protocol Version and Key Parameters   4
   5.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .   6
   6.  Security Considerations . . . . . . . . . . . . . . . . . . .   6
     6.1.  Downgrade Attacks . . . . . . . . . . . . . . . . . . . .   6
     6.2.  Triple Handshake Vulnerability in TLS 1.2 and Older TLS
           Versions  . . . . . . . . . . . . . . . . . . . . . . . .   6
   7.  References  . . . . . . . . . . . . . . . . . . . . . . . . .   7
     7.1.  Normative References  . . . . . . . . . . . . . . . . . .   7
     7.2.  Informative References  . . . . . . . . . . . . . . . . .   7
   Acknowledgements  . . . . . . . . . . . . . . . . . . . . . . . .   8
   Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . .   8
1. Introduction
1. はじめに

In order to use the Token Binding protocol [RFC8471], the client and server need to agree on the Token Binding protocol version and the parameters (signature algorithm and length) of the Token Binding key. This document specifies a new TLS [RFC5246] extension to accomplish this negotiation without introducing additional network round trips in TLS 1.2 and earlier versions. [TOKENBIND-TLS13] addresses Token Binding in TLS 1.3. The negotiation of the Token Binding protocol and key parameters in combination with TLS 1.3 and later versions is beyond the scope of this document. (Note: This document deals with TLS 1.2 and therefore refers to RFC 5246 (which has been obsoleted by RFC 8446). [TOKENBIND-TLS13] addresses Token Binding in TLS 1.3).

トークンバインディングプロトコル[RFC8471]を使用するには、クライアントとサーバーがトークンバインディングプロトコルのバージョンとトークンバインディングキーのパラメーター(署名アルゴリズムと長さ)について合意する必要があります。このドキュメントでは、TLS 1.2以前のバージョンで追加のネットワークラウンドトリップを導入することなくこのネゴシエーションを実現するために、新しいTLS [RFC5246]拡張を指定しています。 [TOKENBIND-TLS13]は、TLS 1.3のトークンバインディングに対応しています。 TLS 1.3以降のバージョンと組み合わせたトークンバインディングプロトコルとキーパラメータのネゴシエーションは、このドキュメントの範囲外です。 (注:このドキュメントはTLS 1.2を扱っているため、RFC 5246に言及しています(RFC 8446によって廃止されました。)[TOKENBIND-TLS13]はTLS 1.3のトークンバインディングに対応しています)。

1.1. Requirements Language
1.1. 要件言語

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here.


2. Token Binding Negotiation ClientHello Extension
2. トークンバインディングネゴシエーションClientHello拡張

The client uses the "token_binding" TLS extension to indicate the highest supported Token Binding protocol version and key parameters.


   enum {
       token_binding(24), (65535)
   } ExtensionType;

The "extension_data" field of this extension contains a "TokenBindingParameters" value.


   struct {
       uint8 major;
       uint8 minor;
   } TB_ProtocolVersion;
   enum {
       rsa2048_pkcs1.5(0), rsa2048_pss(1), ecdsap256(2), (255)
   } TokenBindingKeyParameters;
   struct {
       TB_ProtocolVersion token_binding_version;
       TokenBindingKeyParameters key_parameters_list<1..2^8-1>
   } TokenBindingParameters;

"token_binding_version" indicates the version of the Token Binding protocol the client wishes to use during this connection. If the client supports multiple Token Binding protocol versions, it SHOULD indicate the latest supported version (the one with the highest TB_ProtocolVersion.major and TB_ProtocolVersion.minor) in TokenBindingParameters.token_binding_version. For example, if the client supports versions {1, 0} and {0, 13} of the Token Binding protocol, it SHOULD indicate version {1, 0}. Please note that the server MAY select any lower protocol version; see Section 3 ("Token Binding Negotiation ServerHello Extension") for more details. If the client does not support the Token Binding protocol version selected by the server, then the connection proceeds without Token Binding. [RFC8471] describes version {1, 0} of the protocol.

"token_binding_version"は、この接続中にクライアントが使用したいトークンバインディングプロトコルのバージョンを示します。クライアントが複数のトークンバインディングプロトコルバージョンをサポートする場合、サポートされている最新バージョン(TB_ProtocolVersion.majorとTB_ProtocolVersion.minorが最も高いバージョン)をTokenBindingParameters.token_binding_versionで示す必要があります(SHOULD)。たとえば、クライアントがトークンバインディングプロトコルのバージョン{1、0}と{0、13}をサポートしている場合、バージョン{1、0}を示す必要があります。サーバーはより低いプロトコルバージョンを選択してもよいことに注意してください。詳細については、セクション3(「Token Binding Negotiation ServerHello Extension」)を参照してください。クライアントがサーバーによって選択されたトークンバインディングプロトコルバージョンをサポートしていない場合、接続はトークンバインディングなしで続行されます。 [RFC8471]は、プロトコルのバージョン{1、0}について説明しています。

Please note that the representation of the Token Binding protocol version using two octets ("major" and "minor") is for human convenience only and carries no protocol significance.


"key_parameters_list" contains the list of identifiers of the Token Binding key parameters supported by the client, in descending order of preference. [RFC8471] establishes an IANA registry for Token Binding key parameters identifiers.

「key_parameters_list」には、クライアントがサポートするトークンバインディングキーパラメータの識別子のリストが、優先度の高い順に含まれています。 [RFC8471]は、トークンバインディングキーパラメータ識別子のIANAレジストリを確立します。

3. Token Binding Negotiation ServerHello Extension
3. トークンバインディングネゴシエーションServerHello拡張

The server uses the "token_binding" TLS extension to indicate support for the Token Binding protocol and to select the protocol version and key parameters.


The server that supports Token Binding and receives a ClientHello message containing the "token_binding" extension will include the "token_binding" extension in the ServerHello if all of the following conditions are satisfied:


1. The server supports the Token Binding protocol version offered by the client, or a lower version.

1. サーバーは、クライアントが提供するトークンバインディングプロトコルのバージョン、またはそれより前のバージョンをサポートしています。

2. The server finds acceptable Token Binding key parameters in the client's list.

2. サーバーは、クライアントのリストで受け入れ可能なトークンバインディングキーパラメータを見つけます。

3. The server is also negotiating the extended master secret [RFC7627] and renegotiation indication [RFC5746] TLS extensions. This requirement applies when TLS 1.2 or an older TLS version is used (see Section 6 ("Security Considerations") for more details).

3. サーバーは、拡張マスターシークレット[RFC7627]および再ネゴシエーション表示[RFC5746] TLS拡張についてもネゴシエートしています。この要件は、TLS 1.2または古いTLSバージョンが使用されている場合に適用されます(詳細については、セクション6(「セキュリティの考慮事項」)を参照)。

The server will ignore any key parameters that it does not recognize. The "extension_data" field of the "token_binding" extension is structured the same as described above for the client "extension_data".

サーバーは、認識しない主要なパラメーターを無視します。 「token_binding」拡張の「extension_data」フィールドは、クライアント「extension_data」について上記で説明したものと同じ構造です。

"token_binding_version" contains the lower of:


o the Token Binding protocol version offered by the client in the "token_binding" extension, and

o 「token_binding」拡張でクライアントが提供するトークンバインディングプロトコルのバージョン、および

o the highest Token Binding protocol version supported by the server.

o サーバーでサポートされている最高のトークンバインディングプロトコルバージョン。

"key_parameters_list" contains exactly one Token Binding key parameters identifier selected by the server from the client's list.


4. Negotiating Token Binding Protocol Version and Key Parameters
4. トークンバインディングプロトコルのバージョンと主要なパラメーターのネゴシエーション

It is expected that a server will have a list of Token Binding key parameters identifiers that it supports, in preference order. The server MUST only select an identifier that the client offered. The server SHOULD select the most highly preferred key parameters identifier it supports, which is also advertised by the client. In the event that the server supports none of the key parameters that the client advertises, then the server MUST NOT include the "token_binding" extension in the ServerHello.

サーバーには、サーバーがサポートするトークンバインディングキーパラメータ識別子のリストが優先順に配置されることが期待されます。サーバーは、クライアントが提供した識別子のみを選択する必要があります。サーバーは、サーバーがサポートする最も優先される主要なパラメーター識別子を選択する必要があります。これもクライアントによって通知されます。サーバーがクライアントがアドバタイズする主要なパラメーターをサポートしない場合、サーバーはServerHelloに「token_binding」拡張を含めてはなりません(MUST NOT)。

The client receiving the "token_binding" extension MUST terminate the handshake with a fatal "unsupported_extension" alert if any of the following conditions are true:


1. The client did not include the "token_binding" extension in the ClientHello.

1. クライアントのClientHelloに「token_binding」拡張が含まれていませんでした。

2. "token_binding_version" is higher than the Token Binding protocol version advertised by the client.

2. 「token_binding_version」は、クライアントによってアドバタイズされたトークンバインディングプロトコルのバージョンより上位です。

3. "key_parameters_list" includes more than one Token Binding key parameters identifier.

3. 「key_parameters_list」には、複数のトークンバインディングキーパラメータ識別子が含まれています。

4. "key_parameters_list" includes an identifier that was not advertised by the client.

4. 「key_parameters_list」には、クライアントによって通知されなかった識別子が含まれています。

5. TLS 1.2 or an older TLS version is used, but the extended master secret [RFC7627] and TLS renegotiation indication [RFC5746] extensions are not negotiated (see Section 6 ("Security Considerations") for more details).

5. TLS 1.2または古いTLSバージョンが使用されますが、拡張マスターシークレット[RFC7627]およびTLS再ネゴシエーション表示[RFC5746]拡張はネゴシエートされません(詳細については、セクション6(「セキュリティの考慮事項」)を参照)。

If the "token_binding" extension is included in the ServerHello and the client supports the Token Binding protocol version selected by the server, it means that the version and key parameters have been negotiated between the client and the server and SHALL be definitive for the TLS connection. TLS 1.2 and earlier versions support renegotiation, which allows the client and server to renegotiate the Token Binding protocol version and key parameters on the same connection. The client MUST use the negotiated key parameters in the "provided_token_binding" as described in [RFC8471].

「token_binding」拡張機能がServerHelloに含まれていて、クライアントがサーバーによって選択されたトークンバインディングプロトコルのバージョンをサポートしている場合、バージョンとキーパラメータがクライアントとサーバー間でネゴシエートされており、TLS接続に対して決定的である必要があります。 TLS 1.2以前のバージョンは再ネゴシエーションをサポートしています。これにより、クライアントとサーバーは同じ接続でトークンバインディングプロトコルのバージョンとキーパラメータを再ネゴシエートできます。 [RFC8471]で説明されているように、クライアントは "provided_token_binding"の交渉されたキーパラメータを使用しなければなりません(MUST)。

If the client does not support the Token Binding protocol version selected by the server, then the connection proceeds without Token Binding. There is no requirement for the client to support any Token Binding versions other than the one advertised in the client's "token_binding" extension.


Client and server applications can choose to handle failure to negotiate Token Binding in a variety of ways: continue using the connection as usual, shorten the lifetime of tokens issued during this connection, require stronger authentication, terminate the connection, etc.


The Token Binding protocol version and key parameters are negotiated for each TLS connection, which means that the client and server include their "token_binding" extensions in both the full TLS handshake that establishes a new TLS session and the subsequent abbreviated TLS handshakes that resume the TLS session.


5. IANA Considerations
5. IANAに関する考慮事項

This document updates the "TLS ExtensionType Values" registry. The registration for the "token_binding" TLS extension is as follows:

このドキュメントは、「TLS ExtensionType Values」レジストリを更新します。 「token_binding」TLS拡張の登録は次のとおりです。

Value: 24


Extension name: token_binding


Recommended: Yes


Reference: This document


This document uses the "Token Binding Key Parameters" registry created by [RFC8471]. This document creates no new registrations in the registry.

このドキュメントでは、[RFC8471]によって作成された「Token Binding Key Parameters」レジストリを使用します。このドキュメントは、レジストリに新しい登録を作成しません。

6. Security Considerations
6. セキュリティに関する考慮事項
6.1. Downgrade Attacks
6.1. ダウングレード攻撃

The Token Binding protocol version and key parameters are negotiated via the "token_binding" extension within the TLS handshake. TLS detects handshake message modification by active attackers; therefore, it is not possible for an attacker to remove or modify the "token_binding" extension without breaking the TLS handshake. The signature algorithm and key length used in the Token Binding of type "provided_token_binding" MUST match the parameters negotiated via the "token_binding" extension.

トークンバインディングプロトコルのバージョンとキーパラメータは、TLSハンドシェイク内の「token_binding」拡張を介してネゴシエートされます。 TLSは、アクティブな攻撃者によるハンドシェイクメッセージの変更を検出します。したがって、攻撃者がTLSハンドシェイクを中断せずに「token_binding」拡張を削除または変更することはできません。タイプ「provided_token_binding」のトークンバインディングで使用される署名アルゴリズムとキーの長さは、「token_binding」拡張を介してネゴシエートされたパラメーターと一致する必要があります。

6.2. Triple Handshake Vulnerability in TLS 1.2 and Older TLS Versions
6.2. TLS 1.2以前のTLSバージョンでのトリプルハンドシェイクの脆弱性

The Token Binding protocol relies on the TLS exporters [RFC5705] to associate a TLS connection with a Token Binding. The triple handshake attack [TRIPLE-HS] is a known vulnerability in TLS 1.2 and older TLS versions; it allows an attacker to synchronize keying material between TLS connections. The attacker can then successfully replay bound tokens. For this reason, the Token Binding protocol MUST NOT be negotiated with these TLS versions, unless the extended master secret [RFC7627] and renegotiation indication [RFC5746] TLS extensions have also been negotiated.

トークンバインディングプロトコルは、TLSエクスポータ[RFC5705]に依存して、TLS接続をトークンバインディングに関連付けます。トリプルハンドシェイク攻撃[TRIPLE-HS]は、TLS 1.2以前のTLSバージョンの既知の脆弱性です。これにより、攻撃者はTLS接続間でキー情報を同期できます。その後、攻撃者はバインドされたトークンを正常に再生できます。このため、拡張マスターシークレット[RFC7627]および再ネゴシエーション表示[RFC5746] TLS拡張もネゴシエートされていない限り、トークンバインディングプロトコルはこれらのTLSバージョンとネゴシエートしてはなりません(MUST NOT)。

7. References
7. 参考文献
7.1. Normative References
7.1. 引用文献

[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, March 1997, <>.

[RFC2119] Bradner、S。、「要件レベルを示すためにRFCで使用するキーワード」、BCP 14、RFC 2119、DOI 10.17487 / RFC2119、1997年3月、< rfc2119>。

[RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security (TLS) Protocol Version 1.2", RFC 5246, DOI 10.17487/RFC5246, August 2008, <>.

[RFC5246] Dierks、T。およびE. Rescorla、「The Transport Layer Security(TLS)Protocol Version 1.2」、RFC 5246、DOI 10.17487 / RFC5246、2008年8月、< / rfc5246>。

[RFC5705] Rescorla, E., "Keying Material Exporters for Transport Layer Security (TLS)", RFC 5705, DOI 10.17487/RFC5705, March 2010, <>.

[RFC5705] Rescorla、E。、「Keying Material Exporters for Transport Layer Security(TLS)」、RFC 5705、DOI 10.17487 / RFC5705、2010年3月、<>。

[RFC5746] Rescorla, E., Ray, M., Dispensa, S., and N. Oskov, "Transport Layer Security (TLS) Renegotiation Indication Extension", RFC 5746, DOI 10.17487/RFC5746, February 2010, <>.

[RFC5746] Rescorla、E.、Ray、M.、Dispensa、S。、およびN. Oskov、「Transport Layer Security(TLS)Renegotiation Indication Extension」、RFC 5746、DOI 10.17487 / RFC5746、2010年2月、<https:/ />。

[RFC7627] Bhargavan, K., Ed., Delignat-Lavaud, A., Pironti, A., Langley, A., and M. Ray, "Transport Layer Security (TLS) Session Hash and Extended Master Secret Extension", RFC 7627, DOI 10.17487/RFC7627, September 2015, <>.

[RFC7627] Bhargavan、K。、編、Delignat-Lavaud、A.、Pironti、A.、Langley、A。、およびM. Ray、「Transport Layer Security(TLS)Session Hash and Extended Master Secret Extension」、RFC 7627、DOI 10.17487 / RFC7627、2015年9月、<>。

[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, May 2017, <>.

[RFC8174] Leiba、B。、「RFC 2119キーワードの大文字と小文字のあいまいさ」、BCP 14、RFC 8174、DOI 10.17487 / RFC8174、2017年5月、< rfc8174>。

[RFC8471] Popov, A., Ed., Nystroem, M., Balfanz, D., and J. Hodges, "The Token Binding Protocol Version 1.0", RFC 8471, DOI 10.17487/RFC8471, October 2018, <>.

[RFC8471] Popov、A.、Ed。、Nystroem、M.、Balfanz、D。、およびJ. Hodges、「The Token Binding Protocol Version 1.0」、RFC 8471、DOI 10.17487 / RFC8471、2018年10月、<https:/ />。

7.2. Informative References
7.2. 参考引用

[TOKENBIND-TLS13] Harper, N., "Token Binding for Transport Layer Security (TLS) Version 1.3 Connections", Work in Progress, draft-ietf-tokbind-tls13-01, May 2018.

[TOKENBIND-TLS13] Harper、N。、「トランスポート層セキュリティ(TLS)バージョン1.3接続のトークンバインディング」、作業中、draft-ietf-tokbind-tls13-01、2018年5月。

[TRIPLE-HS] Bhargavan, K., Delignat-Lavaud, A., Fournet, C., Pironti, A., and P. Strub, "Triple Handshakes and Cookie Cutters: Breaking and Fixing Authentication over TLS", IEEE Symposium on Security and Privacy, DOI 10.1109/SP.2014.14, May 2014.

[TRIPLE-HS] Bhargavan、K.、Delignat-Lavaud、A.、Fournet、C.、Pironti、A。、およびP. Strub、「Triple Handshakes and Cookie Cutters:Breaking and Fixing Authentication over TLS over」、IEEEシンポジウムセキュリティとプライバシー、DOI 10.1109 / SP.2014.14、2014年5月。



This document incorporates comments and suggestions offered by Eric Rescorla, Gabriel Montenegro, Martin Thomson, Vinod Anupam, Anthony Nadalin, Michael B. Jones, Bill Cox, Nick Harper, Brian Campbell, Benjamin Kaduk, Alexey Melnikov, and others.

このドキュメントには、Eric Rescorla、Gabriel Montenegro、Martin Thomson、Vinod Anupam、Anthony Nadalin、Michael B. Jones、Bill Cox、Nick Harper、Brian Campbell、Benjamin Kaduk、Alexey Melnikovなどが提供するコメントと提案が組み込まれています。

This document was produced under the chairmanship of John Bradley and Leif Johansson. The area directors included Eric Rescorla, Kathleen Moriarty, and Stephen Farrell.

このドキュメントは、John BradleyとLeif Johanssonの議長の下で作成されました。エリアディレクターには、Eric Rescorla、Kathleen Moriarty、Stephen Farrellが含まれていました。

Authors' Addresses


Andrei Popov (editor) Microsoft Corp. United States of America



Magnus Nystroem Microsoft Corp. United States of America

Magnus Nystroem Microsoft Corp.アメリカ合衆国


Dirk Balfanz Google Inc. United States of America

Dirk Ba​​lfanz Google Inc.アメリカ合衆国