| rfc9261xml2.original.xml | rfc9261.xml | |||
|---|---|---|---|---|
| <?xml version="1.0" encoding="UTF-8"?> | <?xml version="1.0" encoding="UTF-8"?> | |||
| <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?> | ||||
| <!-- generated by https://github.com/cabo/kramdown-rfc2629 version 1.3.35 --> | ||||
| <!DOCTYPE rfc SYSTEM "rfc2629.dtd" [ | <!DOCTYPE rfc [ | |||
| <!ENTITY nbsp " "> | ||||
| <!ENTITY zwsp "​"> | ||||
| <!ENTITY nbhy "‑"> | ||||
| <!ENTITY wj "⁠"> | ||||
| ]> | ]> | |||
| <?rfc toc="yes"?> | <rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft | |||
| <?rfc sortrefs="yes"?> | -ietf-tls-exported-authenticator-15" number="9261" submissionType="IETF" | |||
| <?rfc symrefs="yes"?> | category="std" consensus="true" obsoletes="" updates="" xml:lang="en" tocInclude | |||
| ="true" | ||||
| <rfc ipr="trust200902" docName="draft-ietf-tls-exported-authenticator-15" catego | sortRefs="true" symRefs="true" version="3"> | |||
| ry="std"> | ||||
| <!-- xml2rfc v2v3 conversion 3.12.6 --> | ||||
| <front> | <front> | |||
| <title abbrev="TLS Exported Authenticator">Exported Authenticators in TLS</t itle> | <title abbrev="TLS Exported Authenticator">Exported Authenticators in TLS</t itle> | |||
| <seriesInfo name="RFC" value="9261"/> | ||||
| <author initials="N." surname="Sullivan" fullname="Nick Sullivan"> | <author initials="N." surname="Sullivan" fullname="Nick Sullivan"> | |||
| <organization>Cloudflare Inc.</organization> | <organization>Cloudflare Inc.</organization> | |||
| <address> | <address> | |||
| <email>nick@cloudflare.com</email> | <email>nick@cloudflare.com</email> | |||
| </address> | </address> | |||
| </author> | </author> | |||
| <date year="2022" month="July"/> | ||||
| <date year="2022" month="March" day="04"/> | <area>sec</area> | |||
| <workgroup>tls</workgroup> | ||||
| <area>Security</area> | ||||
| <workgroup>TLS</workgroup> | ||||
| <keyword>Internet-Draft</keyword> | ||||
| <abstract> | <abstract> | |||
| <t>This document describes a mechanism that builds on Transport Layer Secu | ||||
| <t>This document describes a mechanism that builds on Transport Layer Security ( | rity (TLS) or | |||
| TLS) or | ||||
| Datagram Transport Layer Security (DTLS) and enables peers to | Datagram Transport Layer Security (DTLS) and enables peers to | |||
| provide a proof of ownership of an identity, such as an X.509 certificate. This | provide proof of ownership of an identity, such as an X.509 certificate. This p | |||
| proof can | roof can | |||
| be exported by one peer, transmitted out-of-band to the other peer, and verified | be exported by one peer, transmitted out of band to the other peer, and verified | |||
| by the | by the | |||
| receiving peer.</t> | receiving peer.</t> | |||
| </abstract> | </abstract> | |||
| </front> | </front> | |||
| <middle> | <middle> | |||
| <section anchor="introduction" numbered="true" toc="default"> | ||||
| <section anchor="introduction" title="Introduction"> | <name>Introduction</name> | |||
| <t>This document provides a way to authenticate one party of a Transport L | ||||
| <t>This document provides a way to authenticate one party of a Transport Layer | ayer | |||
| Security (TLS) or Datagram Transport Layer Security (DTLS) connection to its pee r | Security (TLS) or Datagram Transport Layer Security (DTLS) connection to its pee r | |||
| using authentication messages created after the session | using authentication messages created after the session | |||
| has been established. This allows both the client and server to prove ownership | has been established. This allows both the client and server to prove ownership | |||
| of additional identities at any time after the handshake has completed. This | of additional identities at any time after the handshake has completed. This | |||
| proof of authentication can be exported and transmitted out-of-band from one | proof of authentication can be exported and transmitted out of band from one | |||
| party to be validated by its peer.</t> | party to be validated by its peer.</t> | |||
| <t>This mechanism provides two advantages over the authentication that TLS | ||||
| <t>This mechanism provides two advantages over the authentication that TLS and D | and DTLS natively | |||
| TLS natively | ||||
| provide:</t> | provide:</t> | |||
| <dl newline="false" spacing="normal"> | ||||
| <dt>multiple identities:</dt> | ||||
| <dd> | ||||
| Endpoints that are authoritative for multiple identities, but that do not have | ||||
| a | ||||
| single certificate that includes all of the identities, can authenticate additio | ||||
| nal | ||||
| identities over a single connection.</dd> | ||||
| <t><list style="hanging"> | <dt>spontaneous authentication:</dt> | |||
| <t hangText="multiple identities -"> | <dd> | |||
| Endpoints that are authoritative for multiple identities - but do not have a | After a connection is established, endpoints can authenticate in response to | |||
| single certificate that includes all of the identities - can authenticate additi | events in a higher-layer protocol; they can also integrate more context (such as | |||
| onal | context from the application).</dd> | |||
| identities over a single connection.</t> | </dl> | |||
| <t hangText="spontaneous authentication -"> | <t>Versions of TLS prior to TLS 1.3 used renegotiation as a way to enable | |||
| Endpoints can authenticate after a connection is established, in response to | ||||
| events in a higher-layer protocol, as well as integrating more context (such | ||||
| as context from the application).</t> | ||||
| </list></t> | ||||
| <t>Versions of TLS prior to TLS 1.3 used renegotiation as a way to enable | ||||
| post-handshake client authentication given an existing TLS connection. | post-handshake client authentication given an existing TLS connection. | |||
| The mechanism described in this document may be used to replace the | The mechanism described in this document may be used to replace the | |||
| post-handshake authentication functionality provided by renegotiation. | post-handshake authentication functionality provided by renegotiation. | |||
| Unlike renegotiation, exported Authenticator-based post-handshake | Unlike renegotiation, Exported Authenticator-based post-handshake | |||
| authentication does not require any changes at the TLS layer.</t> | authentication does not require any changes at the TLS layer.</t> | |||
| <t>Post-handshake authentication is defined in section 4.6.3 of TLS 1.3 <xref ta rget="RFC8446"/>, but it has the | <t>Post-handshake authentication is defined in TLS 1.3 <xref target="RFC84 46" sectionFormat="of" section="4.6.2"/>, but it has the | |||
| disadvantage of requiring additional state to be stored as part of the TLS | disadvantage of requiring additional state to be stored as part of the TLS | |||
| state machine. Furthermore, the authentication boundaries of TLS | state machine. Furthermore, the authentication boundaries of TLS 1.3 post-hands | |||
| 1.3 post-handshake authentication align with TLS record boundaries, | hake authentication align with TLS record boundaries, | |||
| which are often not aligned with the authentication boundaries of the | which are often not aligned with the authentication boundaries of the | |||
| higher-layer protocol. For example, multiplexed connection protocols | higher-layer protocol. For example, multiplexed connection protocols | |||
| like HTTP/2 <xref target="RFC7540"/> do not have a notion of which TLS record | like HTTP/2 <xref target="RFC9113" format="default"/> do not have a notion of wh ich TLS record | |||
| a given message is a part of.</t> | a given message is a part of.</t> | |||
| <t>Exported Authenticators are meant to be used as a building block for | ||||
| <t>Exported Authenticators are meant to be used as a building block for | ||||
| application protocols. Mechanisms such as those required to advertise | application protocols. Mechanisms such as those required to advertise | |||
| support and handle authentication errors are not handled by TLS (or DTLS).</t> | support and handle authentication errors are not handled by TLS (or DTLS).</t> | |||
| <t>The minimum version of TLS and DTLS required to implement the mechanism | ||||
| s | ||||
| described in this document are TLS 1.2 <xref target="RFC5246" format="default"/> | ||||
| and DTLS 1.2 <xref target="RFC6347" format="default"/>.</t> | ||||
| </section> | ||||
| <section anchor="conventions-and-terminology" numbered="true" toc="default"> | ||||
| <name>Conventions and Terminology</name> | ||||
| <t> | ||||
| The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQU | ||||
| IRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL | ||||
| NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14> | ||||
| RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>", | ||||
| "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to | ||||
| be interpreted as | ||||
| described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> | ||||
| when, and only when, they appear in all capitals, as shown here. | ||||
| </t> | ||||
| <t>This document uses terminology such as client, server, connection, | ||||
| handshake, endpoint, and peer that are defined in | ||||
| <xref target="RFC8446" sectionFormat="of" section="1.1"/>. The term "initial co | ||||
| nnection" refers to the (D)TLS | ||||
| connection from which the Exported Authenticator messages are derived.</t> | ||||
| </section> | ||||
| <section anchor="message-sequences" numbered="true" toc="default"> | ||||
| <name>Message Sequences</name> | ||||
| <t>There are two types of messages defined in this document: authenticator | ||||
| requests and authenticators. These can be combined in the following three sequ | ||||
| ences:</t> | ||||
| <t>Client Authentication</t> | ||||
| <t>The minimum version of TLS and DTLS required to implement the mechanisms | <ul spacing="normal"> | |||
| decribed in this document are TLS 1.2 <xref target="RFC6347"/> and DTLS 1.2 <xre | <li>Server generates authenticator request</li> | |||
| f target="RFC5246"/>.</t> | <li>Client generates Authenticator from Server's authenticator request</ | |||
| li> | ||||
| </section> | <li>Server validates Client's authenticator</li> | |||
| <section anchor="conventions-and-terminology" title="Conventions and Terminology | </ul> | |||
| "> | <t>Server Authentication</t> | |||
| <ul spacing="normal"> | ||||
| <t>The key words “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, | <li>Client generates authenticator request</li> | |||
| “SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “NOT RECOMMENDED”, “MAY”, and | <li>Server generates authenticator from Client's authenticator request</ | |||
| “OPTIONAL” in this document are to be interpreted as described in BCP | li> | |||
| 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they a | <li>Client validates Server's authenticator</li> | |||
| ppear in all | </ul> | |||
| capitals, as shown here.</t> | <t>Spontaneous Server Authentication</t> | |||
| <ul spacing="normal"> | ||||
| <t>This document uses terminology such as client, server, connection, | <li>Server generates authenticator</li> | |||
| handshake, endpoint, peer that are defined in section 1.1 of | <li>Client validates Server's authenticator</li> | |||
| <xref target="RFC8446"/>. The term “initial connection” refers to the (D)TLS | </ul> | |||
| connection from which the exported authenticator messages are derived.</t> | </section> | |||
| <section anchor="authenticator-request" numbered="true" toc="default"> | ||||
| </section> | <name>Authenticator Request</name> | |||
| <section anchor="message-sequences" title="Message Sequences"> | <t>The authenticator request is a structured message that can be created b | |||
| y either | ||||
| <t>There are two types of messages defined in this document: Authenticator Reque | ||||
| sts and Authenticators. These can be combined in the following three sequences: | ||||
| </t> | ||||
| <t>Client Authentication</t> | ||||
| <t><list style="symbols"> | ||||
| <t>Server generates Authenticator Request</t> | ||||
| <t>Client generates Authenticator from Server’s Authenticator Request</t> | ||||
| <t>Server validates Client’s Authenticator</t> | ||||
| </list></t> | ||||
| <t>Server Authentication</t> | ||||
| <t><list style="symbols"> | ||||
| <t>Client generates Authenticator Request</t> | ||||
| <t>Server generates Authenticator from Client’s Authenticator Request</t> | ||||
| <t>Client validates Server’s Authenticator</t> | ||||
| </list></t> | ||||
| <t>Spontaneous Server Authentication</t> | ||||
| <t><list style="symbols"> | ||||
| <t>Server generates Authenticator</t> | ||||
| <t>Client validates Server’s Authenticator</t> | ||||
| </list></t> | ||||
| </section> | ||||
| <section anchor="authenticator-request" title="Authenticator Request"> | ||||
| <t>The authenticator request is a structured message that can be created by eith | ||||
| er | ||||
| party of a (D)TLS connection using data exported from that connection. It can | party of a (D)TLS connection using data exported from that connection. It can | |||
| be transmitted to the other party of the (D)TLS connection at the application | be transmitted to the other party of the (D)TLS connection at the application | |||
| layer. The application layer protocol used to send the authenticator request | layer. The application-layer protocol used to send the authenticator request | |||
| SHOULD use a secure transport channel with equivalent security to TLS, such as Q | <bcp14>SHOULD</bcp14> use a secure transport channel with equivalent security to | |||
| UIC <xref target="RFC9001"/>, as its | TLS, such as QUIC <xref target="RFC9001" format="default"/>, as its | |||
| underlying transport to keep the request confidential. The | underlying transport to keep the request confidential. The | |||
| application MAY use the existing (D)TLS connection to transport the authenticato | application <bcp14>MAY</bcp14> use the existing (D)TLS connection to transport t | |||
| r.</t> | he authenticator.</t> | |||
| <t>An authenticator request message can be constructed by either the clien | ||||
| <t>An authenticator request message can be constructed by either the client or t | t or the | |||
| he | ||||
| server. Server-generated authenticator requests use the CertificateRequest | server. Server-generated authenticator requests use the CertificateRequest | |||
| message from Section 4.3.2 of <xref target="RFC8446"/>. Client-generated | message from <xref target="RFC8446" sectionFormat="of" section="4.3.2"/>. Clien | |||
| authenticator requests use a new message, called the ClientCertificateRequest, | t-generated | |||
| which uses the same structure as CertificateRequest. (Note that the latter | authenticator requests use a new message, called the "ClientCertificateRequest", | |||
| that uses the same structure as CertificateRequest. (Note that the latter | ||||
| is not a request for a client certificate, but rather a certificate request | is not a request for a client certificate, but rather a certificate request | |||
| generated by the client.) These message | generated by the client.) These message | |||
| structures are used even if the connection protocol is TLS 1.2 or DTLS 1.2.</t> | structures are used even if the connection protocol is TLS 1.2 or DTLS 1.2.</t> | |||
| <t>The CertificateRequest and ClientCertificateRequest messages are used t | ||||
| <t>The CertificateRequest and ClientCertificateRequest messages are used to defi | o define the | |||
| ne the | ||||
| parameters in a request for an authenticator. These are encoded as TLS handshak e messages, including | parameters in a request for an authenticator. These are encoded as TLS handshak e messages, including | |||
| length and type fields. They do not include any TLS record layer framing and are | length and type fields. They do not include any TLS record-layer framing and are | |||
| not encrypted with a handshake or application-data key.</t> | not encrypted with a handshake or application-data key.</t> | |||
| <t>The structures are defined to be:</t> | ||||
| <t>The structures are defined to be:</t> | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
| <figure><artwork><![CDATA[ | ||||
| struct { | struct { | |||
| opaque certificate_request_context<0..2^8-1>; | opaque certificate_request_context<0..2^8-1>; | |||
| Extension extensions<2..2^16-1>; | Extension extensions<2..2^16-1>; | |||
| } ClientCertificateRequest; | } ClientCertificateRequest; | |||
| struct { | struct { | |||
| opaque certificate_request_context<0..2^8-1>; | opaque certificate_request_context<0..2^8-1>; | |||
| Extension extensions<2..2^16-1>; | Extension extensions<2..2^16-1>; | |||
| } CertificateRequest; | } CertificateRequest; | |||
| ]]></artwork></figure> | ]]></artwork> | |||
| <dl newline="false" spacing="normal"> | ||||
| <t><list style="hanging"> | <dt>certificate_request_context:</dt> | |||
| <t hangText="certificate_request_context:"> | <dd> | |||
| An opaque string which identifies the authenticator request and which will | An opaque string that identifies the authenticator request and that will | |||
| be echoed in the authenticator message. A certificate_request_context value MUS | be echoed in the authenticator message. A certificate_request_context value <bc | |||
| T be unique for | p14>MUST</bcp14> be unique for | |||
| each authenticator request within the scope of a connection | each authenticator request within the scope of a connection | |||
| (preventing replay and context confusion). The | (preventing replay and context confusion). The | |||
| certificate_request_context SHOULD be chosen to be unpredictable | certificate_request_context <bcp14>SHOULD</bcp14> be chosen to be unpredictable | |||
| to the peer (e.g., by randomly generating it) in order to prevent | to the peer (e.g., by randomly generating it) in order to prevent | |||
| an attacker who has temporary access to the peer’s private key | an attacker who has temporary access to the peer's private key | |||
| from pre-computing valid authenticators. For example, the application | from precomputing valid authenticators. For example, the application | |||
| may choose this value to correspond to a value used in an existing | may choose this value to correspond to a value used in an existing | |||
| datastructure in the software to simplify implementation.</t> | data structure in the software to simplify implementation.</dd> | |||
| <t hangText="extensions:"> | <dt>extensions:</dt> | |||
| The set of extensions allowed in the CertificateRequest | <dd> | |||
| structure and the ClientCertificateRequest structure are those | The set of extensions allowed in the structures of CertificateRequest | |||
| defined in the TLS ExtensionType Values IANA registry <xref target="RFC8447"/> | and ClientCertificateRequest is comprised of those | |||
| containing CR in the TLS 1.3 column. In addition, the set of | defined in the "TLS ExtensionType Values" IANA registry containing CR in the "TL | |||
| extensions in the ClientCertificateRequest structure MAY | S 1.3" column (see <xref target="IANA-TLS" format='default' /> and <xref target= | |||
| include the server_name <xref target="RFC6066"/> extension.</t> | "RFC8447" format="default"/>). In addition, the set of | |||
| </list></t> | extensions in the ClientCertificateRequest structure <bcp14>MAY</bcp14> | |||
| include the server_name extension <xref target="RFC6066" format="default"/>.</dd | ||||
| > | ||||
| </dl> | ||||
| <t>The uniqueness requirements of the certificate_request_context apply | <t>The uniqueness requirements of the certificate_request_context apply | |||
| only to CertificateRequest and ClientCertificateRequest messages that are | across CertificateRequest and ClientCertificateRequest messages that | |||
| used as part of authenticator requests, but do apply across CertificateRequest | are used as part of authenticator requests. A certificate_request_context value | |||
| and ClientCertificateRequest messages. A certificate_request_context value used | used | |||
| in a ClientCertificateRequest cannot be used in an authenticator | in a ClientCertificateRequest cannot be used in an authenticator | |||
| CertificateRequest on the same connection, and vice versa. There is no impact | CertificateRequest on the same connection, and vice versa. There is no impact | |||
| if the value | if the value | |||
| of a certificate_request_context used in an authenticator | of a certificate_request_context used in an authenticator | |||
| request matches the value of a certificate_request_context in the handshake or | request matches the value of a certificate_request_context in the handshake or | |||
| in a post-handshake message.</t> | in a post-handshake message.</t> | |||
| </section> | ||||
| </section> | <section anchor="authenticator" numbered="true" toc="default"> | |||
| <section anchor="authenticator" title="Authenticator"> | <name>Authenticator</name> | |||
| <t>The authenticator is a structured message that can be exported from eit | ||||
| <t>The authenticator is a structured message that can be exported from either | her | |||
| party of a (D)TLS connection. It can be transmitted to the other party of | party of a (D)TLS connection. It can be transmitted to the other party of | |||
| the (D)TLS connection at the application layer. The application layer protocol | the (D)TLS connection at the application layer. The application-layer protocol | |||
| used to send the authenticator | used to send the authenticator | |||
| SHOULD use a secure transport channel with equivalent security to TLS, such as Q | <bcp14>SHOULD</bcp14> use a secure transport channel with equivalent security to | |||
| UIC <xref target="RFC9001"/>, as its | TLS, such as QUIC <xref target="RFC9001" format="default"/>, as its | |||
| underlying transport to keep the authenticator confidential. | underlying transport to keep the authenticator confidential. | |||
| The application MAY use the existing (D)TLS connection to transport the authenti | The application <bcp14>MAY</bcp14> use the existing (D)TLS connection to transpo | |||
| cator.</t> | rt the authenticator.</t> | |||
| <t>An authenticator message can be constructed by either the client or the | ||||
| <t>An authenticator message can be constructed by either the client or the | server given an established (D)TLS connection; an identity, such as an X.509 cer | |||
| server given an established (D)TLS connection, an identity, such as an X.509 cer | tificate; | |||
| tificate, | and a corresponding private key. Clients <bcp14>MUST NOT</bcp14> send an authen | |||
| and a corresponding private key. Clients MUST NOT send an authenticator | ticator | |||
| without a preceding authenticator request; for servers an | without a preceding authenticator request; for servers, an | |||
| authenticator request is optional. For authenticators that do not correspond | authenticator request is optional. For authenticators that do not correspond | |||
| to authenticator requests, the certificate_request_context is chosen by | to authenticator requests, the certificate_request_context is chosen by | |||
| the server.</t> | the server.</t> | |||
| <section anchor="authenticator-keys" numbered="true" toc="default"> | ||||
| <name>Authenticator Keys</name> | ||||
| <section anchor="authenticator-keys" title="Authenticator Keys"> | <t>Each authenticator is computed using a Handshake Context and Finished | |||
| MAC (Message Authentication Code) Key | ||||
| <t>Each authenticator is computed using a Handshake Context and Finished MAC Key | ||||
| derived from the (D)TLS connection. These values are derived using an exporter as | derived from the (D)TLS connection. These values are derived using an exporter as | |||
| described in Section 4 of <xref target="RFC5705"/> (for (D)TLS 1.2) or Section 7 | described in <xref target="RFC5705" sectionFormat="of" section="4"/> (for (D)TLS | |||
| .5 of <xref target="RFC8446"/> (for | 1.2) or <xref target="RFC8446" sectionFormat="of" section="7.5"/> (for | |||
| (D)TLS 1.3). For (D)TLS 1.3, the exporter_master_secret MUST be used, not the | (D)TLS 1.3). For (D)TLS 1.3, the exporter_master_secret <bcp14>MUST</bcp14> be | |||
| used, not the | ||||
| early_exporter_master_secret. These values use different labels depending on th e role of the | early_exporter_master_secret. These values use different labels depending on th e role of the | |||
| sender:</t> | sender:</t> | |||
| <ul spacing="normal"> | ||||
| <t><list style="symbols"> | <li>The Handshake Context is an exporter value that is derived using t | |||
| <t>The Handshake Context is an exporter value that is derived using the label | he label | |||
| “EXPORTER-client authenticator handshake context” or “EXPORTER-server | "EXPORTER-client authenticator handshake context" or "EXPORTER-server | |||
| authenticator handshake context” for authenticators sent by the client or | authenticator handshake context" for authenticators sent by the client or | |||
| server respectively.</t> | server, respectively.</li> | |||
| <t>The Finished MAC Key is an exporter value derived using the label | <li>The Finished MAC Key is an exporter value derived using the label | |||
| “EXPORTER-client authenticator finished key” or “EXPORTER-server authenticator | "EXPORTER-client authenticator finished key" or "EXPORTER-server authenticator | |||
| finished key” for authenticators sent by the client or server respectively.</t> | finished key" for authenticators sent by the client or server, respectively.</li | |||
| </list></t> | > | |||
| </ul> | ||||
| <t>The context_value used for the exporter is empty (zero length) for all four | <t>The context_value used for the exporter is empty (zero length) for al | |||
| l four | ||||
| values. There is no need to include additional context | values. There is no need to include additional context | |||
| information at this stage since the application-supplied context | information at this stage because the application-supplied context | |||
| is included in the authenticator itself. The length of the exported | is included in the authenticator itself. The length of the exported | |||
| value is equal to the length of the output of the hash function associated with | value is equal to the length of the output of the hash function associated with | |||
| the selected cipher suite (for TLS 1.3) or the hash function used | the selected ciphersuite (for TLS 1.3) or the hash function used | |||
| for the pseudorandom function (PRF) (for (D)TLS 1.2). Exported authenticators c | for the pseudorandom function (PRF) (for (D)TLS 1.2). Exported Authenticators c | |||
| annot be | annot be | |||
| used with (D)TLS 1.2 cipher suites that do not use the TLS PRF and with TLS 1.3 | used with (D)TLS 1.2 ciphersuites that do not use the TLS PRF and with TLS 1.3 c | |||
| cipher suites that do not have an associated | iphersuites that do not have an associated | |||
| hash function. This hash is referred to as the authenticator hash.</t> | hash function. This hash is referred to as the "authenticator hash".</t> | |||
| <t>To avoid key synchronization attacks, Exported Authenticators MUST NOT be gen erated or | <t>To avoid key synchronization attacks, Exported Authenticators <bcp14>MUST NOT </bcp14> be generated or | |||
| accepted on (D)TLS 1.2 connections that did not negotiate | accepted on (D)TLS 1.2 connections that did not negotiate | |||
| the extended master secret extension <xref target="RFC7627"/>.</t> | the extended master secret extension <xref target="RFC7627" format="default"/>.< | |||
| /t> | ||||
| </section> | </section> | |||
| <section anchor="authenticator-construction" title="Authenticator Construction"> | <section anchor="authenticator-construction" numbered="true" toc="default" | |||
| > | ||||
| <t>An authenticator is formed from the concatenation of TLS 1.3 <xref target="RF | <name>Authenticator Construction</name> | |||
| C8446"/> | <t>An authenticator is formed from the concatenation of TLS 1.3 | |||
| Certificate, CertificateVerify, and Finished messages. These messages are | Certificate, CertificateVerify, and Finished messages <xref target="RFC8446" for | |||
| mat="default"/>. These messages are | ||||
| encoded as TLS handshake messages, including length and type fields. | encoded as TLS handshake messages, including length and type fields. | |||
| They do not include any TLS record layer framing and are not encrypted with a ha | They do not include any TLS record-layer framing and are not encrypted with a ha | |||
| ndshake or application-data key.</t> | ndshake or application-data key.</t> | |||
| <t>If the peer populating the certificate_request_context field in an au | ||||
| <t>If the peer populating the certificate_request_context field in an authentica | thenticator's Certificate message has already created or | |||
| tor’s Certificate message has already created or | ||||
| correctly validated an authenticator with the same value, then no | correctly validated an authenticator with the same value, then no | |||
| authenticator should be constructed. If there is no authenticator request, | authenticator should be constructed. If there is no authenticator request, | |||
| the extensions are chosen from those presented in the (D)TLS handshake’s ClientH ello. | the extensions are chosen from those presented in the (D)TLS handshake's ClientH ello. | |||
| Only servers can provide an authenticator without a corresponding request.</t> | Only servers can provide an authenticator without a corresponding request.</t> | |||
| <t>ClientHello extensions are used to determine permissible extensions | <t>ClientHello extensions are used to determine permissible extensions | |||
| in the server’s unsolicited Certificate message in order to follow the general m | in the server's unsolicited Certificate message in order to follow the general m | |||
| odel for | odel for | |||
| extensions in (D)TLS in which extensions can only be included | extensions in (D)TLS in which extensions can only be included | |||
| as part of a Certificate message if they were previously sent as | as part of a Certificate message if they were previously sent as | |||
| part of a CertificateRequest message or ClientHello message. This ensures that the recipient | part of a CertificateRequest message or ClientHello message. This ensures that the recipient | |||
| will be able to process such extensions.</t> | will be able to process such extensions.</t> | |||
| <section anchor="certificate" numbered="true" toc="default"> | ||||
| <section anchor="certificate" title="Certificate"> | <name>Certificate</name> | |||
| <t>The Certificate message contains the identity to be used for authen | ||||
| <t>The Certificate message contains the identity to be used for authentication, | tication, such as the | |||
| such as the | ||||
| end-entity certificate and any supporting certificates in the chain. This struct ure is | end-entity certificate and any supporting certificates in the chain. This struct ure is | |||
| defined in <xref target="RFC8446"/>, Section 4.4.2.</t> | defined in <xref target="RFC8446" sectionFormat="of" section="4.4.2"/>.</t> | |||
| <t>The Certificate message contains an opaque string called | ||||
| <t>The Certificate message contains an opaque string called | "certificate_request_context", which is extracted from the authenticator request | |||
| certificate_request_context, which is extracted from the authenticator request i | , if | |||
| f | ||||
| present. If no authenticator request is provided, the certificate_request_conte xt | present. If no authenticator request is provided, the certificate_request_conte xt | |||
| can be chosen arbitrarily but MUST be unique within the scope of the connection | can be chosen arbitrarily; however, it <bcp14>MUST</bcp14> be unique within the scope of the connection | |||
| and be unpredictable to the peer.</t> | and be unpredictable to the peer.</t> | |||
| <t>Certificates chosen in the Certificate message <bcp14>MUST</bcp14> | ||||
| <t>Certificates chosen in the Certificate message MUST conform to the | conform to the | |||
| requirements of a Certificate message in the negotiated version of (D)TLS. In | requirements of a Certificate message in the negotiated version of (D)TLS. In | |||
| particular, the entries of certificate_list MUST be valid for the signature algo | particular, the entries of certificate_list <bcp14>MUST</bcp14> be valid for the | |||
| rithms | signature algorithms | |||
| indicated by the peer in the “signature_algorithms” and “signature_algorithms_ce | indicated by the peer in the "signature_algorithms" and "signature_algorithms_ce | |||
| rt” | rt" | |||
| extension, as described in Section 4.2.3 of <xref target="RFC8446"/> for (D)TLS | extensions, as described in <xref target="RFC8446" sectionFormat="of" section="4 | |||
| 1.3 or | .2.3"/> for (D)TLS 1.3 or | |||
| from Sections 7.4.2 and 7.4.6 of <xref target="RFC5246"/> for (D)TLS 1.2.</t> | in Sections <xref target="RFC5246" section="7.4.2" sectionFormat="bare"/> and <x | |||
| ref target="RFC5246" section="7.4.6" sectionFormat="bare"/> of <xref target="RFC | ||||
| <t>In addition to “signature_algorithms” and “signature_algorithms_cert”, | 5246"/> for (D)TLS 1.2.</t> | |||
| the “server_name” <xref target="RFC6066"/>, “certificate_authorities” | <t>In addition to "signature_algorithms" and "signature_algorithms_cer | |||
| (Section 4.2.4. of <xref target="RFC8446"/>), and “oid_filters” | t", | |||
| (Section 4.2.5. of <xref target="RFC8446"/>) extensions are used to guide certif | the "server_name" <xref target="RFC6066" format="default"/>, "certificate_author | |||
| icate | ities" | |||
| (<xref target="RFC8446" sectionFormat="of" section="4.2.4"/>), and "oid_filters" | ||||
| (<xref target="RFC8446" sectionFormat="of" section="4.2.5"/>) extensions are use | ||||
| d to guide certificate | ||||
| selection.</t> | selection.</t> | |||
| <t>Only the X.509 certificate type defined in <xref target="RFC8446" f | ||||
| <t>Only the X.509 certificate type defined in <xref target="RFC8446"/> is suppor | ormat="default"/> is supported. | |||
| ted. | Alternative certificate formats such as Raw Public Keys as described in <xref ta | |||
| Alternative certificate formats such as <xref target="RFC7250"/> Raw Public Keys | rget="RFC7250" format="default"/> are | |||
| are | ||||
| not supported in this version of the specification and their use in this context | not supported in this version of the specification and their use in this context | |||
| has not yet been analysed.</t> | has not yet been analyzed.</t> | |||
| <t>If an authenticator request was provided, the Certificate message < | ||||
| <t>If an authenticator request was provided, the Certificate message MUST contai | bcp14>MUST</bcp14> contain | |||
| n | ||||
| only extensions present in the authenticator request. Otherwise, the | only extensions present in the authenticator request. Otherwise, the | |||
| Certificate message MUST contain only extensions present in the (D)TLS ClientHel | Certificate message <bcp14>MUST</bcp14> contain only extensions present in the ( | |||
| lo. | D)TLS ClientHello. | |||
| Unrecognized extensions in the authenticator request MUST be ignored.</t> | Unrecognized extensions in the authenticator request <bcp14>MUST</bcp14> be igno | |||
| red.</t> | ||||
| </section> | </section> | |||
| <section anchor="certificateverify" title="CertificateVerify"> | <section anchor="certificateverify" numbered="true" toc="default"> | |||
| <name>CertificateVerify</name> | ||||
| <t>This message is used to provide explicit proof that an endpoint possesses the | <t>This message is used to provide explicit proof that an endpoint pos | |||
| sesses the | ||||
| private key corresponding to its identity. The format of this message is taken from TLS 1.3:</t> | private key corresponding to its identity. The format of this message is taken from TLS 1.3:</t> | |||
| <artwork name="" type="" align="left" alt=""><![CDATA[ | ||||
| <figure><artwork><![CDATA[ | ||||
| struct { | struct { | |||
| SignatureScheme algorithm; | SignatureScheme algorithm; | |||
| opaque signature<0..2^16-1>; | opaque signature<0..2^16-1>; | |||
| } CertificateVerify; | } CertificateVerify; | |||
| ]]></artwork></figure> | ]]></artwork> | |||
| <t>The algorithm field specifies the signature algorithm used (see <xr | ||||
| <t>The algorithm field specifies the signature algorithm used (see Section 4.2.3 | ef target="RFC8446" sectionFormat="of" section="4.2.3"/> | |||
| of <xref target="RFC8446"/> | ||||
| for the definition of this field). The signature is a digital signature | for the definition of this field). The signature is a digital signature | |||
| using that algorithm.</t> | using that algorithm.</t> | |||
| <t>The signature scheme <bcp14>MUST</bcp14> be a valid signature schem | ||||
| <t>The signature scheme MUST be a valid signature scheme for TLS 1.3. This | e for TLS 1.3. This | |||
| excludes all RSASSA-PKCS1-v1_5 algorithms and combinations of ECDSA and hash | excludes all RSASSA-PKCS1-v1_5 algorithms and combinations of Elliptic Curve Dig | |||
| ital Signature Algorithm (ECDSA) and hash | ||||
| algorithms that are not supported in TLS 1.3.</t> | algorithms that are not supported in TLS 1.3.</t> | |||
| <t>If an authenticator request is present, the signature algorithm <bc | ||||
| <t>If an authenticator request is present, the signature algorithm MUST be chose | p14>MUST</bcp14> be chosen | |||
| n | from one of the signature schemes present in the "signature_algorithms" | |||
| from one of the signature schemes present in the “signature_algorithms” | extension of the authenticator request. | |||
| extensino of the authenticator request. | Otherwise, with spontaneous server authentication, the signature algorithm used | |||
| Otherwise, with spontaneous server authentication, the signature algorithm used | <bcp14>MUST</bcp14> be chosen | |||
| MUST be chosen | from the "signature_algorithms" sent by the peer in the ClientHello of the (D)TL | |||
| from the “signature_algorithms” sent by the peer in the ClientHello of the (D)TL | S | |||
| S | ||||
| handshake. If there are no available signature algorithms, then no | handshake. If there are no available signature algorithms, then no | |||
| authenticator should be constructed.</t> | authenticator should be constructed.</t> | |||
| <t>The signature is computed using the chosen signature scheme over the concaten ation of:</t> | <t>The signature is computed using the chosen signature scheme over the concaten ation of:</t> | |||
| <t><list style="symbols"> | <ul spacing="normal"> | |||
| <t>A string that consists of octet 32 (0x20) repeated 64 times</t> | <li>a string that consists of octet 32 (0x20) repeated 64 times,</li | |||
| <t>The context string “Exported Authenticator” (which is not NUL-terminated)</ | > | |||
| t> | <li>the context string "Exported Authenticator" (which is not NUL-te | |||
| <t>A single 0 octet which serves as the separator</t> | rminated),</li> | |||
| <t>The hashed authenticator transcript</t> | <li>a single 0 octet that serves as the separator, and</li> | |||
| </list></t> | <li>the hashed authenticator transcript.</li> | |||
| </ul> | ||||
| <t>The authenticator transcript is the hash of the concatenated Handshake Contex | <t>The authenticator transcript is the hash of the concatenated Handsh | |||
| t, | ake Context, | |||
| authenticator request (if present), and Certificate message:</t> | authenticator request (if present), and Certificate message:</t> | |||
| <artwork name="" type="" align="left" alt=""><![CDATA[ | ||||
| <figure><artwork><![CDATA[ | ||||
| Hash(Handshake Context || authenticator request || Certificate) | Hash(Handshake Context || authenticator request || Certificate) | |||
| ]]></artwork></figure> | ]]></artwork> | |||
| <t>Where Hash is the authenticator hash defined in section 4.1. If the authenti cator request | <t>Where Hash is the authenticator hash defined in <xref target="authe nticator-keys"/>. If the authenticator request | |||
| is not present, it is omitted from this construction, i.e., it is zero-length.</ t> | is not present, it is omitted from this construction, i.e., it is zero-length.</ t> | |||
| <t>If the party that generates the authenticator does so with a differ | ||||
| <t>If the party that generates the exported authenticator does so with a differe | ent | |||
| nt | ||||
| connection than the party that is validating it, then the Handshake Context will | connection than the party that is validating it, then the Handshake Context will | |||
| not match, resulting in a CertificateVerify message that does not validate. | not match, resulting in a CertificateVerify message that does not validate. | |||
| This includes situations in which the application data is sent via TLS-terminati ng | This includes situations in which the application data is sent via TLS-terminati ng | |||
| proxy. Given a failed CertificateVerify validation, it may be helpful for | proxy. Given a failed CertificateVerify validation, it may be helpful for | |||
| the application to confirm that both peers share the same connection | the application to confirm that both peers share the same connection | |||
| using a value derived from the connection secrets (such as the Handshake Context ) | using a value derived from the connection secrets (such as the Handshake Context ) | |||
| before taking a user-visible action.</t> | before taking a user-visible action.</t> | |||
| </section> | ||||
| </section> | <section anchor="finished" numbered="true" toc="default"> | |||
| <section anchor="finished" title="Finished"> | <name>Finished</name> | |||
| <t>An HMAC <xref target="RFC2104" format="default"/> over the hashed a | ||||
| <t>An HMAC <xref target="HMAC"/> over the hashed authenticator transcript, which | uthenticator transcript is the | |||
| is the | ||||
| concatenation of the Handshake Context, authenticator request (if present), | concatenation of the Handshake Context, authenticator request (if present), | |||
| Certificate, and CertificateVerify. The HMAC is computed using the authenticato r hash, using the Finished MAC Key as | Certificate, and CertificateVerify. The HMAC is computed using the authenticato r hash, using the Finished MAC Key as | |||
| a key.</t> | a key.</t> | |||
| <artwork name="" type="" align="left" alt=""><![CDATA[ | ||||
| <figure><artwork><![CDATA[ | ||||
| Finished = HMAC(Finished MAC Key, Hash(Handshake Context || | Finished = HMAC(Finished MAC Key, Hash(Handshake Context || | |||
| authenticator request || Certificate || CertificateVerify)) | authenticator request || Certificate || CertificateVerify)) | |||
| ]]></artwork></figure> | ]]></artwork> | |||
| </section> | ||||
| </section> | <section anchor="authenticator-creation" numbered="true" toc="default"> | |||
| <section anchor="authenticator-creation" title="Authenticator Creation"> | <name>Authenticator Creation</name> | |||
| <t>An endpoint constructs an authenticator by serializing the Certific | ||||
| <t>An endpoint constructs an authenticator by serializing the Certificate, Certi | ate, CertificateVerify, and Finished as TLS handshake messages and concatenating | |||
| ficateVerify, and Finished as TLS handshake messages and concatenating the octet | the octets:</t> | |||
| s:</t> | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
| <figure><artwork><![CDATA[ | ||||
| Certificate || CertificateVerify || Finished | Certificate || CertificateVerify || Finished | |||
| ]]></artwork></figure> | ]]></artwork> | |||
| <t>An authenticator is valid if the CertificateVerify message is correctly const ructed given the authenticator request (if | <t>An authenticator is valid if the CertificateVerify message is corre ctly constructed given the authenticator request (if | |||
| used) and the Finished message matches the expected value. When validating an a uthenticator, constant-time | used) and the Finished message matches the expected value. When validating an a uthenticator, constant-time | |||
| comparisons SHOULD be used for signature and MAC validation.</t> | comparisons <bcp14>SHOULD</bcp14> be used for signature and MAC validation.</t> | |||
| </section> | ||||
| </section> | </section> | |||
| </section> | </section> | |||
| </section> | <section anchor="empty-authenticator" numbered="true" toc="default"> | |||
| <section anchor="empty-authenticator" title="Empty Authenticator"> | <name>Empty Authenticator</name> | |||
| <t>If, given an authenticator request, the endpoint does not have an appro | ||||
| <t>If, given an authenticator request, the endpoint does not have an appropriate | priate | |||
| identity or does not want to return one, it constructs an authenticated | identity or does not want to return one, it constructs an authenticated | |||
| refusal called an empty authenticator. This is a Finished | refusal called an "empty authenticator". This is a Finished | |||
| message sent without a Certificate or CertificateVerify. This message is an | message sent without a Certificate or CertificateVerify. This message is an | |||
| HMAC over the hashed authenticator transcript with a Certificate message | HMAC over the hashed authenticator transcript with a Certificate message | |||
| containing no CertificateEntries and the CertificateVerify message omitted. | containing no CertificateEntries and the CertificateVerify message omitted. | |||
| The HMAC is computed using the authenticator hash, using the Finished MAC Key as a key. | The HMAC is computed using the authenticator hash, using the Finished MAC Key as a key. | |||
| This message is encoded as a TLS handshake message, including length and type fi eld. | This message is encoded as a TLS handshake message, including length and type fi eld. | |||
| It does not include TLS record layer framing and is not encrypted with a handsha | It does not include TLS record-layer framing and is not encrypted with a handsha | |||
| ke or application-data key.</t> | ke or application-data key.</t> | |||
| <artwork name="" type="" align="left" alt=""><![CDATA[ | ||||
| <figure><artwork><![CDATA[ | ||||
| Finished = HMAC(Finished MAC Key, Hash(Handshake Context || | Finished = HMAC(Finished MAC Key, Hash(Handshake Context || | |||
| authenticator request || Certificate)) | authenticator request || Certificate)) | |||
| ]]></artwork></figure> | ]]></artwork> | |||
| </section> | ||||
| </section> | <section anchor="api-considerations" numbered="true" toc="default"> | |||
| <section anchor="api-considerations" title="API considerations"> | <name>API Considerations</name> | |||
| <t>The creation and validation of both authenticator requests and authenti | ||||
| <t>The creation and validation of both authenticator requests and authenticators | cators | |||
| SHOULD be implemented inside the (D)TLS library even if it is possible to implem | <bcp14>SHOULD</bcp14> be implemented inside the (D)TLS library even if it is pos | |||
| ent | sible to implement | |||
| it at the application layer. (D)TLS implementations supporting the use of expor | it at the application layer. (D)TLS implementations supporting the use of Expor | |||
| ted | ted | |||
| authenticators SHOULD provide application programming interfaces by which client | Authenticators <bcp14>SHOULD</bcp14> provide application programming interfaces | |||
| s | by which clients | |||
| and servers may request and verify exported authenticator messages.</t> | and servers may request and verify Exported Authenticator messages.</t> | |||
| <t>Notwithstanding the success conditions described below, all APIs <bcp14 | ||||
| <t>Notwithstanding the success conditions described below, all APIs MUST fail if | >MUST</bcp14> fail if:</t> | |||
| :</t> | <ul spacing="normal"> | |||
| <li>the connection uses a (D)TLS version of 1.1 or earlier, or</li> | ||||
| <t><list style="symbols"> | <li>the connection is (D)TLS 1.2 and the extended master secret extensio | |||
| <t>the connection uses a (D)TLS version of 1.1 or earlier, or</t> | n <xref target="RFC7627" format="default"/> was not | |||
| <t>the connection is (D)TLS 1.2 and the extended master secret extension <xref | negotiated</li> | |||
| target="RFC7627"/> was not | </ul> | |||
| negotiated</t> | <t>The following sections describe APIs that are considered necessary to | |||
| </list></t> | implement Exported Authenticators. These are informative only.</t> | |||
| <section anchor="the-request-api" numbered="true" toc="default"> | ||||
| <t>The following sections describe APIs that are considered necessary to | <name>The "request" API</name> | |||
| implement exported authenticators. These are informative only.</t> | <t>The "request" API takes as input:</t> | |||
| <ul spacing="normal"> | ||||
| <section anchor="the-request-api" title="The “request” API"> | <li>certificate_request_context (from 0 to 255 octets)</li> | |||
| <li>the set of extensions to include (this <bcp14>MUST</bcp14> include | ||||
| <t>The “request” API takes as input:</t> | signature_algorithms) and the | |||
| contents thereof</li> | ||||
| <t><list style="symbols"> | </ul> | |||
| <t>certificate_request_context (from 0 to 255 octets)</t> | <t>It returns an authenticator request, which is a sequence of octets | |||
| <t>set of extensions to include (this MUST include signature_algorithms) and t | ||||
| he | ||||
| contents thereof</t> | ||||
| </list></t> | ||||
| <t>It returns an authenticator request, which is a sequence of octets | ||||
| that comprises a CertificateRequest or ClientCertificateRequest message.</t> | that comprises a CertificateRequest or ClientCertificateRequest message.</t> | |||
| </section> | ||||
| <section anchor="the-get-context-api" numbered="true" toc="default"> | ||||
| <name>The "get context" API</name> | ||||
| <t>The "get context" API takes as input:</t> | ||||
| <ul spacing="normal"> | ||||
| <li>authenticator or authenticator request</li> | ||||
| </ul> | ||||
| <t>It returns the certificate_request_context.</t> | ||||
| </section> | ||||
| <section anchor="the-authenticate-api" numbered="true" toc="default"> | ||||
| <name>The "authenticate" API</name> | ||||
| <t>The "authenticate" API takes as input:</t> | ||||
| <ul spacing="normal"> | ||||
| <li>a reference to the initial connection</li> | ||||
| <li>an identity, such as a set of certificate chains and associated ex | ||||
| tensions | ||||
| (OCSP <xref target="RFC6960" format="default"/>, SCT <xref target="RFC6962" form | ||||
| at="default"/> (obsoleted by <xref target="RFC9162"/>), etc.)</li> | ||||
| </section> | <li>a signer (either the private key associated with the identity or t | |||
| <section anchor="the-get-context-api" title="The “get context” API"> | he interface to perform private key operations) for each chain</li> | |||
| <li>an authenticator request or certificate_request_context (from 0 to | ||||
| <t>The “get context” API takes as input:</t> | 255 octets)</li> | |||
| </ul> | ||||
| <t><list style="symbols"> | ||||
| <t>authenticator or authenticator request</t> | ||||
| </list></t> | ||||
| <t>It returns the certificate_request_context.</t> | ||||
| </section> | ||||
| <section anchor="the-authenticate-api" title="The “authenticate” API"> | ||||
| <t>The “authenticate” API takes as input:</t> | ||||
| <t><list style="symbols"> | ||||
| <t>a reference to the initial connection</t> | ||||
| <t>an identity, such as a set of certificate chains and associated extensions | ||||
| (OCSP <xref target="RFC6960"/>, SCT <xref target="RFC6962"/>, etc.)</t> | ||||
| <t>a signer (either the private key associated with the identity, or interface | ||||
| to perform private key operations) for each chain</t> | ||||
| <t>an authenticator request or certificate_request_context (from 0 to 255 octe | ||||
| ts)</t> | ||||
| </list></t> | ||||
| <t>It returns either the exported authenticator or an empty authenticator | <t>It returns either the authenticator or an empty authenticator | |||
| as a sequence of octets. It is recommended that | as a sequence of octets. It is <bcp14>RECOMMENDED</bcp14> that | |||
| the logic for selecting the certificates and extensions to include | the logic for selecting the certificates and extensions to include | |||
| in the exporter is implemented in the TLS library. Implementing this | in the exporter be implemented in the TLS library. Implementing this | |||
| in the TLS library lets the implementer take advantage of existing | in the TLS library lets the implementer take advantage of existing | |||
| extension and certificate selection logic and more easily remember | extension and certificate selection logic, and the implementer can more easily r emember | |||
| which extensions were sent in the ClientHello.</t> | which extensions were sent in the ClientHello.</t> | |||
| <t>It is also possible to implement this API outside of the TLS library | ||||
| <t>It is also possible to implement this API outside of the TLS library using | using | |||
| TLS exporters. This may be preferable in cases where the application | TLS exporters. This may be preferable in cases where the application | |||
| does not have access to a TLS library with these APIs or when TLS is | does not have access to a TLS library with these APIs or when TLS is | |||
| handled independently of the application layer protocol.</t> | handled independently of the application-layer protocol.</t> | |||
| </section> | ||||
| </section> | <section anchor="the-validate-api" numbered="true" toc="default"> | |||
| <section anchor="the-validate-api" title="The “validate” API"> | <name>The "validate" API</name> | |||
| <t>The "validate" API takes as input:</t> | ||||
| <t>The “validate” API takes as input:</t> | <ul spacing="normal"> | |||
| <li>a reference to the initial connection</li> | ||||
| <t><list style="symbols"> | <li>an optional authenticator request</li> | |||
| <t>a reference to the initial connection</t> | <li>an authenticator</li> | |||
| <t>an optional authenticator request</t> | <li>a function for validating a certificate chain</li> | |||
| <t>an authenticator</t> | </ul> | |||
| <t>a function for validating a certificate chain</t> | <t>It returns a status to indicate whether or not the authenticator is v | |||
| </list></t> | alid after | |||
| <t>It returns a status to indicate whether the authenticator is valid or not aft | ||||
| er | ||||
| applying the function for validating the certificate chain to the chain | applying the function for validating the certificate chain to the chain | |||
| contained in the authenticator. If validation is successful, it also returns | contained in the authenticator. If validation is successful, it also returns | |||
| the identity, such as the certificate chain and its extensions.</t> | the identity, such as the certificate chain and its extensions.</t> | |||
| <t>The API should return a failure if the certificate_request_context of | ||||
| <t>The API should return a failure if the certificate_request_context of the | the | |||
| authenticator was used in a different authenticator that was previously validate d. | authenticator was used in a different authenticator that was previously validate d. | |||
| Well-formed empty authenticators are returned as invalid.</t> | Well-formed empty authenticators are returned as invalid.</t> | |||
| <t>When validating an authenticator, constant-time comparison should be | ||||
| used.</t> | ||||
| </section> | ||||
| </section> | ||||
| <section anchor="iana-considerations" numbered="true" toc="default"> | ||||
| <name>IANA Considerations</name> | ||||
| <section anchor="update-of-the-tls-extensiontype-registry" numbered="true" | ||||
| toc="default"> | ||||
| <name>Update of the TLS ExtensionType Registry</name> | ||||
| <t>IANA has updated the entry for server_name(0) in the "TLS ExtensionTy | ||||
| pe Values" registry <xref target="IANA-TLS"/> (defined in <xref target="RFC8446" | ||||
| format="default"/>) by replacing the value in the "TLS 1.3" | ||||
| column with the value "CH, EE, CR" and listing this document in the "Reference" | ||||
| column.</t> | ||||
| <t>IANA has also added the following note to the registry:</t> | ||||
| <blockquote> <t>The addition of the "CR" to the "TLS 1.3" column for the | ||||
| server_name(0) extension only marks the extension as valid in a ClientCertificat | ||||
| eRequest created as part of client-generated authenticator requests.</t></blockq | ||||
| uote> | ||||
| </section> | ||||
| <section anchor="update-of-the-tls-exporter-labels-registry" numbered="tru | ||||
| e" toc="default"> | ||||
| <name>Update of the TLS Exporter Labels Registry</name> | ||||
| <t>When validating an authenticator, constant-time comparison should be used.</t | <t>IANA has added the following entries to the "TLS Exporter Labels" reg | |||
| > | istry <xref target="IANA-EXPORT"/> (defined in <xref target="RFC5705" format="de | |||
| fault"/>): "EXPORTER-client authenticator handshake context", | ||||
| </section> | "EXPORTER-server authenticator handshake context", | |||
| </section> | "EXPORTER-client authenticator finished key" and | |||
| <section anchor="iana-considerations" title="IANA Considerations"> | "EXPORTER-server authenticator finished key" with "DTLS-OK" and "Recommended" se | |||
| t to "Y" and | ||||
| <section anchor="update-of-the-tls-extensiontype-registry" title="Update of the | this document listed as the reference.</t> | |||
| TLS ExtensionType Registry"> | </section> | |||
| <section anchor="update-of-the-tls-handshaketype-registry" numbered="true" | ||||
| <t>IANA is requested to update the entry for server_name(0) in the registry for | toc="default"> | |||
| ExtensionType (defined in <xref target="RFC8446"/>) by replacing the value in th | <name>Update of the TLS HandshakeType Registry</name> | |||
| e “TLS 1.3” | ||||
| column with the value “CH, EE, CR” and adding this document in the “Reference” c | ||||
| olumn.</t> | ||||
| <t>IANA is also requested to add the following note to the registry:</t> | ||||
| <t>The addition of the “CR” to the “TLS 1.3” column for the server_name(0) exten | ||||
| sion only marks the extension as valid in a ClientCertificateRequest created as | ||||
| part of client-generated authenticator requests.</t> | ||||
| </section> | ||||
| <section anchor="update-of-the-tls-exporter-labels-registry" title="Update of th | ||||
| e TLS Exporter Labels Registry"> | ||||
| <t>IANA is requested to add the following entries to the registry for Exporter | ||||
| Labels (defined in <xref target="RFC5705"/>): “EXPORTER-client authenticator han | ||||
| dshake context”, | ||||
| “EXPORTER-server authenticator handshake context”, “EXPORTER-client authenticato | ||||
| r | ||||
| handshake context”, “EXPORTER-client authenticator finished key” and “EXPORTER-s | ||||
| erver | ||||
| authenticator finished key” with “DTLS-OK” and “Recommended” set to “Y” and | ||||
| this document added to the “Reference” column.</t> | ||||
| </section> | ||||
| <section anchor="update-of-the-tls-handshaketype-registry" title="Update of the | ||||
| TLS HandshakeType Registry"> | ||||
| <t>IANA is requested to add the following entry to the registry for | ||||
| HandshakeType (defined in <xref target="RFC8446"/>): “client_certificate_request | ||||
| ” | ||||
| with “DTLS-OK” and “Recommended” set to “Y” and this document added | ||||
| to the “Reference” column with the following in the “Note” column: | ||||
| “Used in TLS versions prior to 1.3.”</t> | ||||
| </section> | <t>IANA has added the following entry to the "TLS HandshakeType" registr | |||
| </section> | y <xref target="IANA-HANDSHAKE"/> (defined in <xref target="RFC8446" format="def | |||
| <section anchor="security" title="Security Considerations"> | ault"/>): "client_certificate_request" (17) | |||
| with "DTLS-OK" set to "Y" and this document listed | ||||
| as the reference. In addition, the following appears in the "Comment" column:</ | ||||
| t> | ||||
| <blockquote><t>Used in TLS versions prior to 1.3.</t></blockquote> | ||||
| <t>The Certificate/Verify/Finished pattern intentionally looks like the | </section> | |||
| TLS 1.3 pattern which now has been analyzed several times. For example, | </section> | |||
| <xref target="SIGMAC"/> presents a relevant framework for analysis, and section | <section anchor="security" numbered="true" toc="default"> | |||
| 10. of <xref target="RFC8446"/> | <name>Security Considerations</name> | |||
| contains a conprehensive set of references.</t> | <t>The Certificate/Verify/Finished pattern intentionally looks like the | |||
| TLS 1.3 pattern that now has been analyzed several times. For example, | ||||
| <xref target="SIGMAC" format="default"/> presents a relevant framework for analy | ||||
| sis, and <xref target="RFC8446" sectionFormat="of" section="E.1.6"/> | ||||
| contains a comprehensive set of references.</t> | ||||
| <t>Authenticators are independent and unidirectional. There is no explicit stat e change | <t>Authenticators are independent and unidirectional. There is no explici t state change | |||
| inside TLS when an authenticator is either created or validated. The applicatio n in | inside TLS when an authenticator is either created or validated. The applicatio n in | |||
| possession of a validated authenticator can rely on any semantics associated wit h data | possession of a validated authenticator can rely on any semantics associated wit h data | |||
| in the certificate_request_context.</t> | in the certificate_request_context.</t> | |||
| <ul spacing="normal"> | ||||
| <t><list style="symbols"> | <li>This property makes it difficult to formally prove that a server is | |||
| <t>This property makes it difficult to formally prove that a server is jointly | jointly authoritative | |||
| authoritative | over multiple identities, rather than individually authoritative over each.</li> | |||
| over multiple identities, rather than individually authoritative over each.</t> | <li>There is no indication in (D)TLS about which point in time an authen | |||
| <t>There is no indication in (D)TLS about which point in time an authenticator | ticator was | |||
| was | ||||
| computed. Any feedback about the time of creation or validation of the authenti cator | computed. Any feedback about the time of creation or validation of the authenti cator | |||
| should be tracked as part of the application layer semantics if required.</t> | should be tracked as part of the application-layer semantics if required.</li> | |||
| </list></t> | </ul> | |||
| <t>The signatures generated with this API cover the context string | ||||
| <t>The signatures generated with this API cover the context string | "Exported Authenticator"; therefore, they cannot be transplanted into other | |||
| “Exported Authenticator” and therefore cannot be transplanted into other | ||||
| protocols.</t> | protocols.</t> | |||
| <t>In TLS 1.3, the client cannot explicitly learn from the TLS layer wheth | ||||
| <t>In TLS 1.3 the client can not explicitly learn from the TLS layer whether its | er its | |||
| Finished message was accepted. Because the application traffic keys are not | Finished message was accepted. Because the application traffic keys are not | |||
| dependent on the client’s final flight, receiving messages from the server | dependent on the client's final flight, receiving messages from the server | |||
| does not prove that the server received the client’s Finished. To avoid disagree | does not prove that the server received the client's Finished message. | |||
| ment between the client and server | To avoid disagreement between the client and server | |||
| on the authentication status of EAs, servers MUST verify the client Finished | on the authentication status of Exported Authenticators, servers <bcp14>MUST</bc | |||
| before sending an EA or processing a received EA.</t> | p14> verify the client Finished message | |||
| before sending an EA or processing a received Exported Authenticator.</t> | ||||
| </section> | </section> | |||
| <section anchor="ack" title="Acknowledgements"> | ||||
| <t>Comments on this proposal were provided by Martin Thomson. Suggestions for | ||||
| <xref target="security"/> were provided by Karthikeyan Bhargavan.</t> | ||||
| </section> | ||||
| </middle> | </middle> | |||
| <back> | <back> | |||
| <references title='Normative References'> | <displayreference target="RFC2104" to="HMAC"/> | |||
| <reference anchor='RFC8446' target='https://www.rfc-editor.org/info/rfc8446'> | ||||
| <front> | ||||
| <title>The Transport Layer Security (TLS) Protocol Version 1.3</title> | ||||
| <author fullname='E. Rescorla' initials='E.' surname='Rescorla'><organization/>< | ||||
| /author> | ||||
| <date month='August' year='2018'/> | ||||
| <abstract><t>This document specifies version 1.3 of the Transport Layer Security | ||||
| (TLS) protocol. TLS allows client/server applications to communicate over the | ||||
| Internet in a way that is designed to prevent eavesdropping, tampering, and mess | ||||
| age forgery.</t><t>This document updates RFCs 5705 and 6066, and obsoletes RFCs | ||||
| 5077, 5246, and 6961. This document also specifies new requirements for TLS 1.2 | ||||
| implementations.</t></abstract> | ||||
| </front> | ||||
| <seriesInfo name='RFC' value='8446'/> | ||||
| <seriesInfo name='DOI' value='10.17487/RFC8446'/> | ||||
| </reference> | ||||
| <reference anchor='RFC6347' target='https://www.rfc-editor.org/info/rfc6347'> | ||||
| <front> | ||||
| <title>Datagram Transport Layer Security Version 1.2</title> | ||||
| <author fullname='E. Rescorla' initials='E.' surname='Rescorla'><organization/>< | ||||
| /author> | ||||
| <author fullname='N. Modadugu' initials='N.' surname='Modadugu'><organization/>< | ||||
| /author> | ||||
| <date month='January' year='2012'/> | ||||
| <abstract><t>This document specifies version 1.2 of the Datagram Transport Layer | ||||
| Security (DTLS) protocol. The DTLS protocol provides communications privacy fo | ||||
| r datagram protocols. The protocol allows client/server applications to communi | ||||
| cate in a way that is designed to prevent eavesdropping, tampering, or message f | ||||
| orgery. The DTLS protocol is based on the Transport Layer Security (TLS) protoc | ||||
| ol and provides equivalent security guarantees. Datagram semantics of the under | ||||
| lying transport are preserved by the DTLS protocol. This document updates DTLS | ||||
| 1.0 to work with TLS version 1.2. [STANDARDS-TRACK]</t></abstract> | ||||
| </front> | ||||
| <seriesInfo name='RFC' value='6347'/> | ||||
| <seriesInfo name='DOI' value='10.17487/RFC6347'/> | ||||
| </reference> | ||||
| <reference anchor='RFC5246' target='https://www.rfc-editor.org/info/rfc5246'> | ||||
| <front> | ||||
| <title>The Transport Layer Security (TLS) Protocol Version 1.2</title> | ||||
| <author fullname='T. Dierks' initials='T.' surname='Dierks'><organization/></aut | ||||
| hor> | ||||
| <author fullname='E. Rescorla' initials='E.' surname='Rescorla'><organization/>< | ||||
| /author> | ||||
| <date month='August' year='2008'/> | ||||
| <abstract><t>This document specifies Version 1.2 of the Transport Layer Security | ||||
| (TLS) protocol. The TLS protocol provides communications security over the Int | ||||
| ernet. The protocol allows client/server applications to communicate in a way t | ||||
| hat is designed to prevent eavesdropping, tampering, or message forgery. [STAND | ||||
| ARDS-TRACK]</t></abstract> | ||||
| </front> | ||||
| <seriesInfo name='RFC' value='5246'/> | ||||
| <seriesInfo name='DOI' value='10.17487/RFC5246'/> | ||||
| </reference> | ||||
| <reference anchor='RFC2119' target='https://www.rfc-editor.org/info/rfc2119'> | ||||
| <front> | ||||
| <title>Key words for use in RFCs to Indicate Requirement Levels</title> | ||||
| <author fullname='S. Bradner' initials='S.' surname='Bradner'><organization/></a | ||||
| uthor> | ||||
| <date month='March' year='1997'/> | ||||
| <abstract><t>In many standards track documents several words are used to signify | ||||
| the requirements in the specification. These words are often capitalized. This | ||||
| document defines these words as they should be interpreted in IETF documents. | ||||
| This document specifies an Internet Best Current Practices for the Internet Comm | ||||
| unity, and requests discussion and suggestions for improvements.</t></abstract> | ||||
| </front> | ||||
| <seriesInfo name='BCP' value='14'/> | ||||
| <seriesInfo name='RFC' value='2119'/> | ||||
| <seriesInfo name='DOI' value='10.17487/RFC2119'/> | ||||
| </reference> | ||||
| <reference anchor='RFC8174' target='https://www.rfc-editor.org/info/rfc8174'> | ||||
| <front> | ||||
| <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title> | ||||
| <author fullname='B. Leiba' initials='B.' surname='Leiba'><organization/></autho | ||||
| r> | ||||
| <date month='May' year='2017'/> | ||||
| <abstract><t>RFC 2119 specifies common key words that may be used in protocol s | ||||
| pecifications. This document aims to reduce the ambiguity by clarifying that on | ||||
| ly UPPERCASE usage of the key words have the defined special meanings.</t></abs | ||||
| tract> | ||||
| </front> | ||||
| <seriesInfo name='BCP' value='14'/> | ||||
| <seriesInfo name='RFC' value='8174'/> | ||||
| <seriesInfo name='DOI' value='10.17487/RFC8174'/> | ||||
| </reference> | ||||
| <reference anchor='RFC8447' target='https://www.rfc-editor.org/info/rfc8447'> | ||||
| <front> | ||||
| <title>IANA Registry Updates for TLS and DTLS</title> | ||||
| <author fullname='J. Salowey' initials='J.' surname='Salowey'><organization/></a | ||||
| uthor> | ||||
| <author fullname='S. Turner' initials='S.' surname='Turner'><organization/></aut | ||||
| hor> | ||||
| <date month='August' year='2018'/> | ||||
| <abstract><t>This document describes a number of changes to TLS and DTLS IANA re | ||||
| gistries that range from adding notes to the registry all the way to changing th | ||||
| e registration policy. These changes were mostly motivated by WG review of the | ||||
| TLS- and DTLS-related registries undertaken as part of the TLS 1.3 development p | ||||
| rocess.</t><t>This document updates the following RFCs: 3749, 5077, 4680, 5246, | ||||
| 5705, 5878, 6520, and 7301.</t></abstract> | ||||
| </front> | ||||
| <seriesInfo name='RFC' value='8447'/> | ||||
| <seriesInfo name='DOI' value='10.17487/RFC8447'/> | ||||
| </reference> | ||||
| <reference anchor='RFC6066' target='https://www.rfc-editor.org/info/rfc6066'> | <references> | |||
| <front> | <name>References</name> | |||
| <title>Transport Layer Security (TLS) Extensions: Extension Definitions</title> | <references> | |||
| <author fullname='D. Eastlake 3rd' initials='D.' surname='Eastlake 3rd'><organiz | <name>Normative References</name> | |||
| ation/></author> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
| <date month='January' year='2011'/> | FC.8446.xml"/> | |||
| <abstract><t>This document provides specifications for existing TLS extensions. | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
| It is a companion document for RFC 5246, "The Transport Layer Security (TL | FC.6347.xml"/> | |||
| S) Protocol Version 1.2". The extensions specified are server_name, max_fr | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
| agment_length, client_certificate_url, trusted_ca_keys, truncated_hmac, and stat | FC.5246.xml"/> | |||
| us_request. [STANDARDS-TRACK]</t></abstract> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
| </front> | FC.2119.xml"/> | |||
| <seriesInfo name='RFC' value='6066'/> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
| <seriesInfo name='DOI' value='10.17487/RFC6066'/> | FC.8174.xml"/> | |||
| </reference> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
| FC.8447.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.6066.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.5705.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.7627.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.2104.xml"/> | ||||
| </references> | ||||
| <references> | ||||
| <name>Informative References</name> | ||||
| <reference anchor='RFC5705' target='https://www.rfc-editor.org/info/rfc5705'> | <reference anchor="SIGMAC" target="https://eprint.iacr.org/2016/711.pdf"> | |||
| <front> | <front> | |||
| <title>Keying Material Exporters for Transport Layer Security (TLS)</title> | <title>A Unilateral-to-Mutual Authentication Compiler for Key Exchange | |||
| <author fullname='E. Rescorla' initials='E.' surname='Rescorla'><organization/>< | (with Applications to Client Authentication in TLS 1.3)</title> | |||
| /author> | <author initials="H" surname="Krawczyk" fullname="Hugo Krawczyk"> | |||
| <date month='March' year='2010'/> | <organization/> | |||
| <abstract><t>A number of protocols wish to leverage Transport Layer Security (TL | </author> | |||
| S) to perform key establishment but then use some of the keying material for the | <date month="August" year="2016"/> | |||
| ir own purposes. This document describes a general mechanism for allowing that. | </front> | |||
| [STANDARDS-TRACK]</t></abstract> | <refcontent>Proceedings of the 2016 ACM SIGSAC Conference on Computer an | |||
| </front> | d Communications Security</refcontent> | |||
| <seriesInfo name='RFC' value='5705'/> | <seriesInfo name="DOI" value="10.1145/2976749.2978325"/> | |||
| <seriesInfo name='DOI' value='10.17487/RFC5705'/> | ||||
| </reference> | </reference> | |||
| <reference anchor='RFC7627' target='https://www.rfc-editor.org/info/rfc7627'> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
| <front> | FC.9113.xml"/> | |||
| <title>Transport Layer Security (TLS) Session Hash and Extended Master Secret Ex | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
| tension</title> | FC.9001.xml"/> | |||
| <author fullname='K. Bhargavan' initials='K.' role='editor' surname='Bhargavan'> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
| <organization/></author> | FC.7250.xml"/> | |||
| <author fullname='A. Delignat-Lavaud' initials='A.' surname='Delignat-Lavaud'><o | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
| rganization/></author> | FC.6960.xml"/> | |||
| <author fullname='A. Pironti' initials='A.' surname='Pironti'><organization/></a | ||||
| uthor> | ||||
| <author fullname='A. Langley' initials='A.' surname='Langley'><organization/></a | ||||
| uthor> | ||||
| <author fullname='M. Ray' initials='M.' surname='Ray'><organization/></author> | ||||
| <date month='September' year='2015'/> | ||||
| <abstract><t>The Transport Layer Security (TLS) master secret is not cryptograph | ||||
| ically bound to important session parameters such as the server certificate. Co | ||||
| nsequently, it is possible for an active attacker to set up two sessions, one wi | ||||
| th a client and another with a server, such that the master secrets on the two s | ||||
| essions are the same. Thereafter, any mechanism that relies on the master secre | ||||
| t for authentication, including session resumption, becomes vulnerable to a man- | ||||
| in-the-middle attack, where the attacker can simply forward messages back and fo | ||||
| rth between the client and server. This specification defines a TLS extension t | ||||
| hat contextually binds the master secret to a log of the full handshake that com | ||||
| putes it, thus preventing such attacks.</t></abstract> | ||||
| </front> | ||||
| <seriesInfo name='RFC' value='7627'/> | ||||
| <seriesInfo name='DOI' value='10.17487/RFC7627'/> | ||||
| </reference> | ||||
| <reference anchor='HMAC' target='https://www.rfc-editor.org/info/rfc2104'> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | |||
| <front> | C.6962.xml"/> | |||
| <title>HMAC: Keyed-Hashing for Message Authentication</title> | ||||
| <author fullname='H. Krawczyk' initials='H.' surname='Krawczyk'><organization/>< | ||||
| /author> | ||||
| <author fullname='M. Bellare' initials='M.' surname='Bellare'><organization/></a | ||||
| uthor> | ||||
| <author fullname='R. Canetti' initials='R.' surname='Canetti'><organization/></a | ||||
| uthor> | ||||
| <date month='February' year='1997'/> | ||||
| <abstract><t>This document describes HMAC, a mechanism for message authenticatio | ||||
| n using cryptographic hash functions. HMAC can be used with any iterative crypto | ||||
| graphic hash function, e.g., MD5, SHA-1, in combination with a secret shared key | ||||
| . The cryptographic strength of HMAC depends on the properties of the underlyin | ||||
| g hash function. This memo provides information for the Internet community. Th | ||||
| is memo does not specify an Internet standard of any kind</t></abstract> | ||||
| </front> | ||||
| <seriesInfo name='RFC' value='2104'/> | ||||
| <seriesInfo name='DOI' value='10.17487/RFC2104'/> | ||||
| </reference> | ||||
| </references> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF C.9162.xml"/> | |||
| <references title='Informative References'> | <reference anchor="IANA-TLS" | |||
| target="https://www.iana.org/assignments/tls-extensiontype-values/"> | ||||
| <reference anchor="SIGMAC" target="https://eprint.iacr.org/2016/711.pdf"> | ||||
| <front> | <front> | |||
| <title>A Unilateral-to-Mutual Authentication Compiler for Key Exchange (with | <title>TLS ExtensionType Values</title> | |||
| Applications to Client Authentication in TLS 1.3)</title> | <author><organization>IANA</organization></author> | |||
| <author initials="H." surname="Krawczyk"> | ||||
| <organization></organization> | ||||
| </author> | ||||
| <date year="2016"/> | ||||
| </front> | </front> | |||
| </reference> | </reference> | |||
| <reference anchor='RFC7540' target='https://www.rfc-editor.org/info/rfc7540'> | <reference anchor="IANA-EXPORT" | |||
| <front> | target="https://www.iana.org/assignments/tls-parameters/"> | |||
| <title>Hypertext Transfer Protocol Version 2 (HTTP/2)</title> | <front> | |||
| <author fullname='M. Belshe' initials='M.' surname='Belshe'><organization/></aut | <title>TLS Exporter Labels</title> | |||
| hor> | <author><organization>IANA</organization></author> | |||
| <author fullname='R. Peon' initials='R.' surname='Peon'><organization/></author> | </front> | |||
| <author fullname='M. Thomson' initials='M.' role='editor' surname='Thomson'><org | ||||
| anization/></author> | ||||
| <date month='May' year='2015'/> | ||||
| <abstract><t>This specification describes an optimized expression of the semanti | ||||
| cs of the Hypertext Transfer Protocol (HTTP), referred to as HTTP version 2 (HTT | ||||
| P/2). HTTP/2 enables a more efficient use of network resources and a reduced pe | ||||
| rception of latency by introducing header field compression and allowing multipl | ||||
| e concurrent exchanges on the same connection. It also introduces unsolicited p | ||||
| ush of representations from servers to clients.</t><t>This specification is an a | ||||
| lternative to, but does not obsolete, the HTTP/1.1 message syntax. HTTP's exist | ||||
| ing semantics remain unchanged.</t></abstract> | ||||
| </front> | ||||
| <seriesInfo name='RFC' value='7540'/> | ||||
| <seriesInfo name='DOI' value='10.17487/RFC7540'/> | ||||
| </reference> | ||||
| <reference anchor='RFC9001' target='https://www.rfc-editor.org/info/rfc9001'> | ||||
| <front> | ||||
| <title>Using TLS to Secure QUIC</title> | ||||
| <author fullname='M. Thomson' initials='M.' role='editor' surname='Thomson'><org | ||||
| anization/></author> | ||||
| <author fullname='S. Turner' initials='S.' role='editor' surname='Turner'><organ | ||||
| ization/></author> | ||||
| <date month='May' year='2021'/> | ||||
| <abstract><t>This document describes how Transport Layer Security (TLS) is used | ||||
| to secure QUIC.</t></abstract> | ||||
| </front> | ||||
| <seriesInfo name='RFC' value='9001'/> | ||||
| <seriesInfo name='DOI' value='10.17487/RFC9001'/> | ||||
| </reference> | ||||
| <reference anchor='RFC7250' target='https://www.rfc-editor.org/info/rfc7250'> | ||||
| <front> | ||||
| <title>Using Raw Public Keys in Transport Layer Security (TLS) and Datagram Tran | ||||
| sport Layer Security (DTLS)</title> | ||||
| <author fullname='P. Wouters' initials='P.' role='editor' surname='Wouters'><org | ||||
| anization/></author> | ||||
| <author fullname='H. Tschofenig' initials='H.' role='editor' surname='Tschofenig | ||||
| '><organization/></author> | ||||
| <author fullname='J. Gilmore' initials='J.' surname='Gilmore'><organization/></a | ||||
| uthor> | ||||
| <author fullname='S. Weiler' initials='S.' surname='Weiler'><organization/></aut | ||||
| hor> | ||||
| <author fullname='T. Kivinen' initials='T.' surname='Kivinen'><organization/></a | ||||
| uthor> | ||||
| <date month='June' year='2014'/> | ||||
| <abstract><t>This document specifies a new certificate type and two TLS extensio | ||||
| ns for exchanging raw public keys in Transport Layer Security (TLS) and Datagram | ||||
| Transport Layer Security (DTLS). The new certificate type allows raw public ke | ||||
| ys to be used for authentication.</t></abstract> | ||||
| </front> | ||||
| <seriesInfo name='RFC' value='7250'/> | ||||
| <seriesInfo name='DOI' value='10.17487/RFC7250'/> | ||||
| </reference> | ||||
| <reference anchor='RFC6960' target='https://www.rfc-editor.org/info/rfc6960'> | ||||
| <front> | ||||
| <title>X.509 Internet Public Key Infrastructure Online Certificate Status Protoc | ||||
| ol - OCSP</title> | ||||
| <author fullname='S. Santesson' initials='S.' surname='Santesson'><organization/ | ||||
| ></author> | ||||
| <author fullname='M. Myers' initials='M.' surname='Myers'><organization/></autho | ||||
| r> | ||||
| <author fullname='R. Ankney' initials='R.' surname='Ankney'><organization/></aut | ||||
| hor> | ||||
| <author fullname='A. Malpani' initials='A.' surname='Malpani'><organization/></a | ||||
| uthor> | ||||
| <author fullname='S. Galperin' initials='S.' surname='Galperin'><organization/>< | ||||
| /author> | ||||
| <author fullname='C. Adams' initials='C.' surname='Adams'><organization/></autho | ||||
| r> | ||||
| <date month='June' year='2013'/> | ||||
| <abstract><t>This document specifies a protocol useful in determining the curren | ||||
| t status of a digital certificate without requiring Certificate Revocation Lists | ||||
| (CRLs). Additional mechanisms addressing PKIX operational requirements are spec | ||||
| ified in separate documents. This document obsoletes RFCs 2560 and 6277. It al | ||||
| so updates RFC 5912.</t></abstract> | ||||
| </front> | ||||
| <seriesInfo name='RFC' value='6960'/> | ||||
| <seriesInfo name='DOI' value='10.17487/RFC6960'/> | ||||
| </reference> | </reference> | |||
| <reference anchor='RFC6962' target='https://www.rfc-editor.org/info/rfc6962'> | <reference anchor="IANA-HANDSHAKE" | |||
| <front> | target="https://www.iana.org/assignments/tls-parameters/"> | |||
| <title>Certificate Transparency</title> | <front> | |||
| <author fullname='B. Laurie' initials='B.' surname='Laurie'><organization/></aut | <title>TLS HandshakeType</title> | |||
| hor> | <author><organization>IANA</organization></author> | |||
| <author fullname='A. Langley' initials='A.' surname='Langley'><organization/></a | </front> | |||
| uthor> | ||||
| <author fullname='E. Kasper' initials='E.' surname='Kasper'><organization/></aut | ||||
| hor> | ||||
| <date month='June' year='2013'/> | ||||
| <abstract><t>This document describes an experimental protocol for publicly loggi | ||||
| ng the existence of Transport Layer Security (TLS) certificates as they are issu | ||||
| ed or observed, in a manner that allows anyone to audit certificate authority (C | ||||
| A) activity and notice the issuance of suspect certificates as well as to audit | ||||
| the certificate logs themselves. The intent is that eventually clients would re | ||||
| fuse to honor certificates that do not appear in a log, effectively forcing CAs | ||||
| to add all issued certificates to the logs.</t><t>Logs are network services that | ||||
| implement the protocol operations for submissions and queries that are defined | ||||
| in this document.</t></abstract> | ||||
| </front> | ||||
| <seriesInfo name='RFC' value='6962'/> | ||||
| <seriesInfo name='DOI' value='10.17487/RFC6962'/> | ||||
| </reference> | </reference> | |||
| </references> | ||||
| </references> | </references> | |||
| <section anchor="ack" numbered="false" toc="default"> | ||||
| <name>Acknowledgements</name> | ||||
| <t>Comments on this proposal were provided by <contact fullname="Martin Th | ||||
| omson"/>. Suggestions for | ||||
| <xref target="security" format="default"/> were provided by <contact fullname="K | ||||
| arthikeyan Bhargavan"/>.</t> | ||||
| </section> | ||||
| </back> | </back> | |||
| <!-- ##markdown-source: | ||||
| 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 | ||||
| </rfc> | </rfc> | |||
| End of changes. 107 change blocks. | ||||
| 972 lines changed or deleted | 534 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||