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/ |