<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.6.10 (Ruby 2.6.10) -->
<?rfc rfcedstyle="yes"?>
<?rfc tocindent="yes"?>
<?rfc strict="yes"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>
<?rfc text-list-symbols="-o*+"?>
<?rfc docmapping="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="pre5378Trust200902" docName="draft-ietf-tls-rfc8446bis-07" category="std" consensus="true" obsoletes="5077, 5246, 6961, 8446" updates="5705, 6066, 7627, 8422" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.10.0 -->
  <front>
    <title abbrev="TLS">The Transport Layer Security (TLS) Protocol Version 1.3</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-tls-rfc8446bis-07"/>
    <author initials="E." surname="Rescorla" fullname="Eric Rescorla">
      <organization>Mozilla</organization>
      <address>
        <email>ekr@rtfm.com</email>
      </address>
    </author>
    <date year="2023" month="March" day="26"/>
    <area>General</area>
    <keyword>Internet-Draft</keyword>
    <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 message forgery.</t>
      <t>This document updates RFCs 5705, 6066, 7627, and 8422 and obsoletes
RFCs 5077, 5246, 6961, and 8446. This document also specifies new
requirements for TLS 1.2 implementations.</t>
    </abstract>
  </front>
  <middle>
    <section anchor="introduction">
      <name>Introduction</name>
      <t>RFC EDITOR: PLEASE REMOVE THE FOLLOWING PARAGRAPH
The source for this draft is maintained in GitHub. Suggested changes
should be submitted as pull requests at
https://github.com/ekr/tls13-spec. Instructions are on that page as
well.</t>
      <t>The primary goal of TLS is to provide a secure channel between two
communicating peers; the only requirement from the underlying
transport is a reliable, in-order, data stream. Specifically, the
secure channel should provide the following properties:</t>
      <ul spacing="normal">
        <li>Authentication: The server side of the channel is always
authenticated; the client side is optionally
authenticated. Authentication can happen via asymmetric cryptography
(e.g., RSA <xref target="RSA"/>, the Elliptic Curve Digital Signature
Algorithm (ECDSA) <xref target="DSS"/>, or the Edwards-Curve Digital Signature
Algorithm (EdDSA) <xref target="RFC8032"/>) or a symmetric pre-shared key
(PSK).</li>
        <li>Confidentiality: Data sent over the channel after establishment
is only visible to the
endpoints. TLS does not hide the length of the data it transmits,
though endpoints are able to pad TLS records in order to obscure lengths
and improve protection against traffic analysis techniques.</li>
        <li>Integrity: Data sent over the channel after establishment cannot be
modified by attackers without detection.</li>
      </ul>
      <t>These properties should be true even in the face of an attacker who has complete
control of the network, as described in <xref target="RFC3552"/>.
See <xref target="security-analysis"/> for a more complete statement of the relevant security
properties.</t>
      <t>TLS consists of two primary components:</t>
      <ul spacing="normal">
        <li>A handshake protocol (<xref target="handshake-protocol"/>) that authenticates the communicating parties,
negotiates cryptographic modes and parameters, and establishes
shared keying material. The handshake protocol is designed to
resist tampering; an active attacker should not be able to force
the peers to negotiate different parameters than they would
if the connection were not under attack.</li>
        <li>A record protocol (<xref target="record-protocol"/>) that uses the parameters established by the
handshake protocol to protect traffic between the communicating
peers. The record protocol divides traffic up into a series of
records, each of which is independently protected using the
traffic keys.</li>
      </ul>
      <t>TLS is application protocol independent; higher-level protocols can
layer on top of TLS transparently. The TLS standard, however, does not
specify how protocols add security with TLS; how to
initiate TLS handshaking and how to interpret the authentication
certificates exchanged are left to the judgment of the designers and
implementors of protocols that run on top of TLS. Application
protocols using TLS MUST specify how TLS works with their
application protocol, including how and when handshaking
occurs, and how to do identity verification. <xref target="I-D.ietf-uta-rfc6125bis"/>
provides useful guidance on integrating TLS with application
protocols.</t>
      <t>This document defines TLS version 1.3. While TLS 1.3 is not directly
compatible with previous versions, all versions of TLS incorporate a
versioning mechanism which allows clients and servers to interoperably
negotiate a common version if one is supported by both peers.</t>
      <t>This document supersedes and obsoletes previous versions of TLS,
including version 1.2 <xref target="RFC5246"/>.  It also obsoletes the TLS ticket
mechanism defined in <xref target="RFC5077"/> and replaces it with the mechanism
defined in <xref target="resumption-and-psk"/>. Because TLS 1.3 changes the way keys are derived, it
updates <xref target="RFC5705"/> as described in <xref target="exporters"/>.  It also changes
how Online Certificate Status Protocol (OCSP) messages are carried and therefore updates <xref target="RFC6066"/>
and obsoletes <xref target="RFC6961"/> as described in <xref target="ocsp-and-sct"/>.</t>
      <section anchor="conventions-and-terminology">
        <name>Conventions and Terminology</name>
        <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD",
"SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/>
when, and only when, they appear in all capitals, as shown here.</t>
        <t>The following terms are used:</t>
        <t>client:  The endpoint initiating the TLS connection.</t>
        <t>connection:  A transport-layer connection between two endpoints.</t>
        <t>endpoint:  Either the client or server of the connection.</t>
        <t>handshake:  An initial negotiation between client and server that establishes the parameters of their subsequent interactions within TLS.</t>
        <t>peer:  An endpoint. When discussing a particular endpoint, "peer" refers to the endpoint that is not the primary subject of discussion.</t>
        <t>receiver:  An endpoint that is receiving records.</t>
        <t>sender:  An endpoint that is transmitting records.</t>
        <t>server:  The endpoint that did not initiate the TLS connection.</t>
      </section>
      <section anchor="relationship-to-rfc-8446">
        <name>Relationship to RFC 8446</name>
        <t>TLS 1.3 was originally specified in <xref target="RFC8446"/>. This document is a
minor update to TLS 1.3 that retains the same version number and is
backward compatible. It tightens some requirements and contains
updated text in areas which were found to be unclear as well as other
editorial improvements.  In addition, it removes the use of the term
"master" as applied to secrets in favor of the term "main" or shorter
names where no term was necessary. This document makes the following
specific technical changes:</t>
        <ul spacing="normal">
          <li>Forbid negotiating TLS 1.0 and 1.1 as they are now deprecated by <xref target="RFC8996"/>.</li>
          <li>Removes ambiguity around which hash is used with PreSharedKeys and 
HelloRetryRequest.</li>
          <li>Require that clients ignore NewSessionTicket if they do not
support resumption.</li>
          <li>Upgrade the requirement to initiate key update before exceeding
key usage limits to MUST.</li>
          <li>Limit the number of permitted KeyUpdate messages.</li>
          <li>Restore text defining the level of "close_notify" to "warning".
Clarify behavior around "user_canceled", requiring that
"close_notify" be sent and that "user_canceled" should
be ignored.</li>
          <li>Add a "general_error" generic alert.</li>
        </ul>
        <t>In addition, there have been some improvements to the
security considerations, especially around privacy.</t>
      </section>
      <section anchor="major-differences-from-tls-12">
        <name>Major Differences from TLS 1.2</name>
        <t>The following is a list of the major functional differences between
TLS 1.2 and TLS 1.3. It is not intended to be exhaustive, and there
are many minor differences.</t>
        <ul spacing="normal">
          <li>The list of supported symmetric encryption algorithms has been pruned of all algorithms that
are considered legacy. Those that remain are all Authenticated Encryption
with Associated Data (AEAD) algorithms. The cipher suite concept has been
changed to separate the authentication and key exchange mechanisms from
the record protection algorithm (including secret key length) and a hash
to be used with both the key derivation function and handshake message
authentication code (MAC).</li>
          <li>A zero round-trip time (0-RTT) mode was added, saving a round trip at connection setup for
some application data, at the cost of certain security properties.</li>
          <li>Static RSA and Diffie-Hellman cipher suites have been removed;
all public-key based key exchange mechanisms now provide forward secrecy.</li>
          <li>All handshake messages after the ServerHello are now encrypted. The
newly introduced EncryptedExtensions message allows various extensions
previously sent in the clear in the ServerHello to also enjoy
confidentiality protection.</li>
          <li>The key derivation function has been redesigned. The new design allows
easier analysis by cryptographers due to their improved key separation
properties. The HMAC-based Extract-and-Expand Key Derivation Function (HKDF)
is used as an underlying primitive.</li>
          <li>The handshake state machine has been significantly restructured to
be more consistent and to remove superfluous messages such as
ChangeCipherSpec (except when needed for middlebox compatibility).</li>
          <li>Elliptic curve algorithms are now in the base spec, and new signature
algorithms, such as EdDSA, are included. TLS 1.3 removed point format
negotiation in favor of a single point format for each curve.</li>
          <li>Other cryptographic improvements were made, including changing the RSA padding to use
the RSA Probabilistic Signature Scheme (RSASSA-PSS), and the removal
of compression, the Digital Signature Algorithm (DSA), and
custom Ephemeral Diffie-Hellman (DHE) groups.</li>
          <li>The TLS 1.2 version negotiation mechanism has been deprecated in favor
of a version list in an extension. This increases compatibility with
existing servers that incorrectly implemented version negotiation.</li>
          <li>Session resumption with and without server-side state as well as the
PSK-based cipher suites of earlier TLS versions have been replaced by a
single new PSK exchange.</li>
          <li>References have been updated to point to the updated versions of RFCs, as
appropriate (e.g., RFC 5280 rather than RFC 3280).</li>
        </ul>
      </section>
      <section anchor="updates-affecting-tls-12">
        <name>Updates Affecting TLS 1.2</name>
        <t>This document defines several changes that optionally affect
implementations of TLS 1.2, including those which do not also
support TLS 1.3:</t>
        <ul spacing="normal">
          <li>A version downgrade protection mechanism is described in <xref target="server-hello"/>.</li>
          <li>RSASSA-PSS signature schemes are defined in <xref target="signature-algorithms"/>.</li>
          <li>The "supported_versions" ClientHello extension can be used to negotiate
the version of TLS to use, in preference to the legacy_version field of
the ClientHello.</li>
          <li>The "signature_algorithms_cert" extension allows a client to indicate
which signature algorithms it can validate in X.509 certificates.</li>
          <li>The term "master" as applied to secrets has been removed, and the
"extended_master_secret" extension <xref target="RFC7627"/> has been renamed to
"extended_main_secret".</li>
        </ul>
        <t>Additionally, this document clarifies some compliance requirements for earlier
versions of TLS; see <xref target="protocol-invariants"/>.</t>
      </section>
    </section>
    <section anchor="protocol-overview">
      <name>Protocol Overview</name>
      <t>The cryptographic parameters used by the secure channel are produced by the
TLS handshake protocol. This sub-protocol of TLS is used by the client
and server when first communicating with each other.
The handshake protocol allows peers to negotiate a protocol version,
select cryptographic algorithms, authenticate each other (with
client authentication being optional), and establish shared secret keying material.
Once the handshake is complete, the peers use the established keys
to protect the application-layer traffic.</t>
      <t>A failure of the handshake or other protocol error triggers the
termination of the connection, optionally preceded by an alert message
(<xref target="alert-protocol"/>).</t>
      <t>TLS supports three basic key exchange modes:</t>
      <ul spacing="normal">
        <li>(EC)DHE (Diffie-Hellman over either finite fields or elliptic curves)</li>
        <li>PSK-only</li>
        <li>PSK with (EC)DHE</li>
      </ul>
      <t><xref target="tls-full"/> below shows the basic full TLS handshake:</t>
      <figure anchor="tls-full">
        <name>Message Flow for Full TLS Handshake</name>
        <artwork><![CDATA[
       Client                                              Server

Key  ^ ClientHello
Exch | + key_share*
     | + signature_algorithms*
     | + psk_key_exchange_modes*
     v + pre_shared_key*         -------->
                                                       ServerHello  ^ Key
                                                      + key_share*  | Exch
                                                 + pre_shared_key*  v
                                             {EncryptedExtensions}  ^  Server
                                             {CertificateRequest*}  v  Params
                                                    {Certificate*}  ^
                                              {CertificateVerify*}  | Auth
                                                        {Finished}  v
                                 <--------     [Application Data*]
     ^ {Certificate*}
Auth | {CertificateVerify*}
     v {Finished}                -------->
       [Application Data]        <------->      [Application Data]

              +  Indicates noteworthy extensions sent in the
                 previously noted message.

              *  Indicates optional or situation-dependent
                 messages/extensions that are not always sent.

              {} Indicates messages protected using keys
                 derived from a [sender]_handshake_traffic_secret.

              [] Indicates messages protected using keys
                 derived from [sender]_application_traffic_secret_N.
]]></artwork>
      </figure>
      <t>The handshake can be thought of as having three phases (indicated
in the diagram above):</t>
      <ul spacing="normal">
        <li>Key Exchange: Establish shared keying material and select the
 cryptographic parameters. Everything after this phase is
 encrypted.</li>
        <li>Server Parameters: Establish other handshake parameters
 (whether the client is authenticated, application-layer protocol support, etc.).</li>
        <li>Authentication: Authenticate the server (and, optionally, the client)
 and provide key confirmation and handshake integrity.</li>
      </ul>
      <t>In the Key Exchange phase, the client sends the ClientHello
(<xref target="client-hello"/>) message, which contains a random nonce
(ClientHello.random); its offered protocol versions; a list of
symmetric cipher/HKDF hash pairs; either a list of Diffie-Hellman key shares (in the
"key_share" (<xref target="key-share"/>) extension), a list of pre-shared key labels (in the
"pre_shared_key" (<xref target="pre-shared-key-extension"/>) extension), or both; and
potentially additional extensions.  Additional fields and/or messages
may also be present for middlebox compatibility.</t>
      <t>The server processes the ClientHello and determines the appropriate
cryptographic parameters for the connection. It then responds with its
own ServerHello (<xref target="server-hello"/>), which indicates the negotiated connection
parameters. The combination of the ClientHello
and the ServerHello determines the shared keys. If (EC)DHE
key establishment is in use, then the ServerHello
contains a "key_share" extension with the server's ephemeral
Diffie-Hellman share; the server's share MUST be in the same group as one of the
client's shares. If PSK key establishment is
in use, then the ServerHello contains a "pre_shared_key"
extension indicating which of the client's offered PSKs was selected.
Note that implementations can use (EC)DHE and PSK together, in which
case both extensions will be supplied.</t>
      <t>The server then sends two messages to establish the Server Parameters:</t>
      <dl>
        <dt>EncryptedExtensions:</dt>
        <dd>
          <t>responses to ClientHello extensions that are not required to
determine the cryptographic parameters, other than those
that are specific to individual certificates. [<xref target="encrypted-extensions"/>]</t>
        </dd>
        <dt>CertificateRequest:</dt>
        <dd>
          <t>if certificate-based client authentication is desired, the
desired parameters for that certificate. This message is
omitted if client authentication is not desired. [<xref target="certificate-request"/>]</t>
        </dd>
      </dl>
      <t>Finally, the client and server exchange Authentication messages. TLS
uses the same set of messages every time that certificate-based
authentication is needed.  (PSK-based authentication happens as a side
effect of key exchange.)
Specifically:</t>
      <dl>
        <dt>Certificate:</dt>
        <dd>
          <t>The certificate of the endpoint and any per-certificate extensions.
This message is omitted by the server if not authenticating with a
certificate and by the client if the server did not send
CertificateRequest (thus indicating that the client should not
authenticate with a certificate). Note that if raw
public keys <xref target="RFC7250"/> or the cached information extension
<xref target="RFC7924"/> are in use, then this message will not
contain a certificate but rather some other value corresponding to
the server's long-term key.  [<xref target="certificate"/>]</t>
        </dd>
        <dt>CertificateVerify:</dt>
        <dd>
          <t>A signature over the entire handshake using the private key
corresponding to the public key in the Certificate message. This
message is omitted if the endpoint is not authenticating via a
certificate. [<xref target="certificate-verify"/>]</t>
        </dd>
        <dt>Finished:</dt>
        <dd>
          <t>A MAC (Message Authentication Code) over the entire handshake.
This message provides key confirmation, binds the endpoint's identity
to the exchanged keys, and in PSK mode
also authenticates the handshake. [<xref target="finished"/>]</t>
        </dd>
      </dl>
      <t>Upon receiving the server's messages, the client responds with its Authentication
messages, namely Certificate and CertificateVerify (if requested), and Finished.</t>
      <t>At this point, the handshake is complete, and the client and server
derive the keying material required by the record layer to exchange
application-layer data protected through authenticated encryption.
Application Data MUST NOT be sent prior to sending the Finished message,
except as specified
in <xref target="zero-rtt-data"/>.
Note that while the server may send Application Data prior to receiving
the client's Authentication messages, any data sent at that point is,
of course, being sent to an unauthenticated peer.</t>
      <section anchor="incorrect-dhe-share">
        <name>Incorrect DHE Share</name>
        <t>If the client has not provided a sufficient "key_share" extension (e.g., it
includes only DHE or ECDHE groups unacceptable to or unsupported by the
server), the server corrects the mismatch with a HelloRetryRequest and
the client needs to restart the handshake with an appropriate
"key_share" extension, as shown in Figure 2.
If no common cryptographic parameters can be negotiated,
the server MUST abort the handshake with an appropriate alert.</t>
        <figure anchor="tls-restart">
          <name>Message Flow for a Full Handshake with Mismatched Parameters</name>
          <artwork><![CDATA[
         Client                                               Server

         ClientHello
         + key_share             -------->
                                                   HelloRetryRequest
                                 <--------               + key_share
         ClientHello
         + key_share             -------->
                                                         ServerHello
                                                         + key_share
                                               {EncryptedExtensions}
                                               {CertificateRequest*}
                                                      {Certificate*}
                                                {CertificateVerify*}
                                                          {Finished}
                                 <--------       [Application Data*]
         {Certificate*}
         {CertificateVerify*}
         {Finished}              -------->
         [Application Data]      <------->        [Application Data]
]]></artwork>
        </figure>
        <t>Note: The handshake transcript incorporates the initial
ClientHello/HelloRetryRequest exchange; it is not reset with the new
ClientHello.</t>
        <t>TLS also allows several optimized variants of the basic handshake, as
described in the following sections.</t>
      </section>
      <section anchor="resumption-and-psk">
        <name>Resumption and Pre-Shared Key (PSK)</name>
        <t>Although TLS PSKs can be established externally,
PSKs can also be established in a previous connection and
then used to establish a new connection ("session resumption" or "resuming" with a PSK).
Once a handshake has completed, the server can
send the client a PSK identity that corresponds to a unique key derived from
the initial handshake (see <xref target="NSTMessage"/>). The client
can then use that PSK identity in future handshakes to negotiate the use
of the associated PSK. If the server accepts the PSK, then the security context of the
new connection is cryptographically tied to the original connection and the key derived
from the initial handshake is used to bootstrap the cryptographic state
instead of a full handshake.
In TLS 1.2 and below, this functionality was provided by "session IDs" and
"session tickets" <xref target="RFC5077"/>. Both mechanisms are obsoleted in TLS 1.3.</t>
        <t>PSKs can be used with (EC)DHE key exchange in order to provide forward
secrecy in combination with shared keys, or can be used alone, at the
cost of losing forward secrecy for the application data.</t>
        <t><xref target="tls-resumption-psk"/> shows a pair of handshakes in which the first handshake establishes
a PSK and the second handshake uses it:</t>
        <figure anchor="tls-resumption-psk">
          <name>Message Flow for Resumption and PSK</name>
          <artwork><![CDATA[
       Client                                               Server

Initial Handshake:
       ClientHello
       + key_share               -------->
                                                       ServerHello
                                                       + key_share
                                             {EncryptedExtensions}
                                             {CertificateRequest*}
                                                    {Certificate*}
                                              {CertificateVerify*}
                                                        {Finished}
                                 <--------     [Application Data*]
       {Certificate*}
       {CertificateVerify*}
       {Finished}                -------->
                                 <--------      [NewSessionTicket]
       [Application Data]        <------->      [Application Data]


Subsequent Handshake:
       ClientHello
       + key_share*
       + pre_shared_key          -------->
                                                       ServerHello
                                                  + pre_shared_key
                                                      + key_share*
                                             {EncryptedExtensions}
                                                        {Finished}
                                 <--------     [Application Data*]
       {Finished}                -------->
       [Application Data]        <------->      [Application Data]
]]></artwork>
        </figure>
        <t>As the server is authenticating via a PSK, it does not send a
Certificate or a CertificateVerify message. When a client offers resumption
via a PSK, it SHOULD also supply a "key_share" extension to the server to
allow the server to decline resumption and fall back
to a full handshake, if needed. The server responds with a "pre_shared_key"
extension to negotiate the use of PSK key establishment and can (as shown here)
respond with a "key_share" extension to do (EC)DHE key establishment, thus
providing forward secrecy.</t>
        <t>When PSKs are provisioned externally, the PSK identity and the KDF hash
algorithm to
be used with the PSK MUST also be provisioned.</t>
        <dl>
          <dt>Note:</dt>
          <dd>
            <t>When using an externally provisioned pre-shared secret, a critical
consideration is using sufficient entropy during the key generation, as
discussed in <xref target="RFC4086"/>. Deriving a shared secret from a password or other
low-entropy sources is not secure. A low-entropy secret, or password, is
subject to dictionary attacks based on the PSK binder.  The specified PSK
authentication is not a strong password-based authenticated key exchange even
when used with Diffie-Hellman key establishment.  Specifically, it does not
prevent an attacker that can observe the handshake from performing
a brute-force attack on the password/pre-shared key.</t>
          </dd>
        </dl>
      </section>
      <section anchor="zero-rtt-data">
        <name>0-RTT Data</name>
        <t>When clients and servers share a PSK (either obtained externally or
via a previous handshake), TLS 1.3 allows clients to send data on the
first flight ("early data"). The client uses the PSK to authenticate
the server and to encrypt the early data.</t>
        <t>As shown in <xref target="tls-0-rtt"/>, the 0-RTT data is just added to the 1-RTT
handshake in the first flight. The rest of the handshake uses the same messages
as for a 1-RTT handshake with PSK resumption.</t>
        <figure anchor="tls-0-rtt">
          <name>Message Flow for a 0-RTT Handshake</name>
          <artwork><![CDATA[
         Client                                               Server

         ClientHello
         + early_data
         + key_share*
         + psk_key_exchange_modes
         + pre_shared_key
         (Application Data*)     -------->
                                                         ServerHello
                                                    + pre_shared_key
                                                        + key_share*
                                               {EncryptedExtensions}
                                                       + early_data*
                                                          {Finished}
                                 <--------       [Application Data*]
         (EndOfEarlyData)
         {Finished}              -------->
         [Application Data]      <------->        [Application Data]

               +  Indicates noteworthy extensions sent in the
                  previously noted message.

               *  Indicates optional or situation-dependent
                  messages/extensions that are not always sent.

               () Indicates messages protected using keys
                  derived from a client_early_traffic_secret.

               {} Indicates messages protected using keys
                  derived from a [sender]_handshake_traffic_secret.

               [] Indicates messages protected using keys
                  derived from [sender]_application_traffic_secret_N.
]]></artwork>
        </figure>
        <t>IMPORTANT NOTE: The security properties for 0-RTT data are weaker than
those for other kinds of TLS data.  Specifically:</t>
        <ol spacing="normal" type="1"><li>The protocol does not provide any forward secrecy guarantees for this data.
The server's behavior determines what forward secrecy guarantees, if any, apply
(see <xref target="single-use-tickets"/>). This behavior is not communicated to the client
as part of the protocol. Therefore, absent out-of-band knowledge of the
server's behavior, the client should assume that this data is not forward
secret.</li>
          <li>There are no guarantees of non-replay between connections.
Protection against replay for ordinary TLS 1.3 1-RTT data is
provided via the server's Random value, but 0-RTT data does not depend
on the ServerHello and therefore has weaker guarantees.  This is especially
relevant if the data is authenticated either with TLS client
authentication or inside the application protocol. The same warnings
apply to any use of the early_exporter_secret.</li>
        </ol>
        <t>0-RTT data cannot be duplicated within a connection (i.e., the server will
not process the same data twice for the same connection), and an
attacker will not be able to make 0-RTT data appear to be 1-RTT data
(because it is protected with different keys). <xref target="replay-0rtt"/>
contains a description of potential attacks, and <xref target="anti-replay"/>
describes mechanisms which the server can use to limit the impact of
replay.</t>
      </section>
    </section>
    <section anchor="presentation-language">
      <name>Presentation Language</name>
      <t>This document deals with the formatting of data in an external representation.
The following very basic and somewhat casually defined presentation syntax will
be used.</t>
      <section anchor="basic-block-size">
        <name>Basic Block Size</name>
        <t>The representation of all data items is explicitly specified. The basic data
block size is one byte (i.e., 8 bits). Multiple-byte data items are
concatenations of bytes, from left to right, from top to bottom. From the byte
stream, a multi-byte item (a numeric in the following example) is formed (using C
notation) by:</t>
        <artwork><![CDATA[
   value = (byte[0] << 8*(n-1)) | (byte[1] << 8*(n-2)) |
           ... | byte[n-1];
]]></artwork>
        <t>This byte ordering for multi-byte values is the commonplace network byte order
or big-endian format.</t>
      </section>
      <section anchor="miscellaneous">
        <name>Miscellaneous</name>
        <t>Comments begin with "/*" and end with "*/".</t>
        <t>Optional components are denoted by enclosing them in "[[ ]]" (double
brackets).</t>
        <t>Single-byte entities containing uninterpreted data are of type
opaque.</t>
        <t>A type alias T' for an existing type T is defined by:</t>
        <artwork><![CDATA[
   T T';
]]></artwork>
      </section>
      <section anchor="numbers">
        <name>Numbers</name>
        <t>The basic numeric data type is an unsigned byte (uint8). All larger numeric
data types are constructed from a fixed-length series of bytes concatenated as
described in <xref target="basic-block-size"/> and are also unsigned. The following numeric
types are predefined.</t>
        <artwork><![CDATA[
   uint8 uint16[2];
   uint8 uint24[3];
   uint8 uint32[4];
   uint8 uint64[8];
]]></artwork>
        <t>All values, here and elsewhere in the specification, are transmitted in network byte
(big-endian) order; the uint32 represented by the hex bytes 01 02 03 04 is
equivalent to the decimal value 16909060.</t>
      </section>
      <section anchor="vectors">
        <name>Vectors</name>
        <t>A vector (single-dimensioned array) is a stream of homogeneous data elements.
For presentation purposes, this specification refers to vectors as lists.
The size of the vector may be specified at documentation time or left
unspecified until runtime. In either case, the length declares the number of
bytes, not the number of elements, in the vector. The syntax for specifying a
new type, T', that is a fixed-length vector of type T is</t>
        <artwork><![CDATA[
   T T'[n];
]]></artwork>
        <t>Here, T' occupies n bytes in the data stream, where n is a multiple of the size
of T.  The length of the vector is not included in the encoded stream.</t>
        <t>In the following example, Datum is defined to be three consecutive bytes that
the protocol does not interpret, while Data is three consecutive Datum,
consuming a total of nine bytes.</t>
        <artwork><![CDATA[
   opaque Datum[3];      /* three uninterpreted bytes */
   Datum Data[9];        /* three consecutive 3-byte vectors */
]]></artwork>
        <t>Variable-length vectors are defined by specifying a subrange of legal lengths,
inclusively, using the notation &lt;floor..ceiling&gt;. When these are encoded, the
actual length precedes the vector's contents in the byte stream. The length
will be in the form of a number consuming as many bytes as required to hold the
vector's specified maximum (ceiling) length. A variable-length vector with an
actual length field of zero is referred to as an empty vector.</t>
        <artwork><![CDATA[
   T T'<floor..ceiling>;
]]></artwork>
        <t>In the following example, "mandatory" is a vector that must contain between 300
and 400 bytes of type opaque. It can never be empty. The actual length field
consumes two bytes, a uint16, which is sufficient to represent the value 400
(see <xref target="numbers"/>). Similarly, "longer" can represent up to 800 bytes of
data, or 400 uint16 elements, and it may be empty. Its encoding will include a
two-byte actual length field prepended to the vector. The length of an encoded
vector must be an exact multiple of the length of a single element (e.g.,
a 17-byte vector of uint16 would be illegal).</t>
        <artwork><![CDATA[
   opaque mandatory<300..400>;
         /* length field is two bytes, cannot be empty */
   uint16 longer<0..800>;
         /* zero to 400 16-bit unsigned integers */
]]></artwork>
      </section>
      <section anchor="enumerateds">
        <name>Enumerateds</name>
        <t>An additional sparse data type, called "enum" or
"enumerated", is available. Each definition is a different type. Only enumerateds of
the same type may be assigned or compared.  Every element of an
enumerated must be assigned a value, as demonstrated in the following
example. Since the elements of the enumerated are not ordered, they
can be assigned any unique value, in any order.</t>
        <artwork><![CDATA[
   enum { e1(v1), e2(v2), ... , en(vn) [[, (n)]] } Te;
]]></artwork>
        <t>Future extensions or additions to the protocol may define new values.
Implementations need to be able to parse and ignore unknown values unless the
definition of the field states otherwise.</t>
        <t>An enumerated occupies as much space in the byte stream as would its maximal
defined ordinal value. The following definition would cause one byte to be used
to carry fields of type Color.</t>
        <artwork><![CDATA[
   enum { red(3), blue(5), white(7) } Color;
]]></artwork>
        <t>One may optionally specify a value without its associated tag to force the
width definition without defining a superfluous element.</t>
        <t>In the following example, Taste will consume two bytes in the data stream but
can only assume the values 1, 2, or 4 in the current version of the protocol.</t>
        <artwork><![CDATA[
   enum { sweet(1), sour(2), bitter(4), (32000) } Taste;
]]></artwork>
        <t>The names of the elements of an enumeration are scoped within the defined type.
In the first example, a fully qualified reference to the second element of the
enumeration would be Color.blue. Such qualification is not required if the
target of the assignment is well specified.</t>
        <artwork><![CDATA[
   Color color = Color.blue;     /* overspecified, legal */
   Color color = blue;           /* correct, type implicit */
]]></artwork>
        <t>The names assigned to enumerateds do not need to be unique.  The numerical value
can describe a range over which the same name applies.  The value includes the
minimum and maximum inclusive values in that range, separated by two period
characters. This is principally useful for reserving regions of the space.</t>
        <artwork><![CDATA[
   enum { sad(0), meh(1..254), happy(255) } Mood;
]]></artwork>
      </section>
      <section anchor="constructed-types">
        <name>Constructed Types</name>
        <t>Structure types may be constructed from primitive types for convenience. Each
specification declares a new, unique type. The syntax used for definitions is much
like that of C.</t>
        <artwork><![CDATA[
   struct {
       T1 f1;
       T2 f2;
       ...
       Tn fn;
   } T;
]]></artwork>
        <t>Fixed- and variable-length list (vector) fields are allowed using the standard list
syntax. Structures V1 and V2 in the variants example (<xref target="variants"/>) demonstrate this.</t>
        <t>The fields within a structure may be qualified using the type's name, with a
syntax much like that available for enumerateds. For example, T.f2 refers to
the second field of the previous declaration.</t>
      </section>
      <section anchor="constants">
        <name>Constants</name>
        <t>Fields and variables may be assigned a fixed value using "=", as in:</t>
        <artwork><![CDATA[
   struct {
       T1 f1 = 8;  /* T.f1 must always be 8 */
       T2 f2;
   } T;
]]></artwork>
      </section>
      <section anchor="variants">
        <name>Variants</name>
        <t>Defined structures may have variants based on some knowledge that is
available within the environment. The selector must be an enumerated
type that defines the possible variants the structure defines. Each
arm of the select (below) specifies the type of that variant's field and an
optional field label. The mechanism by which the variant is selected
at runtime is not prescribed by the presentation language.</t>
        <artwork><![CDATA[
   struct {
       T1 f1;
       T2 f2;
       ....
       Tn fn;
       select (E) {
           case e1: Te1 [[fe1]];
           case e2: Te2 [[fe2]];
           ....
           case en: Ten [[fen]];
       };
   } Tv;
]]></artwork>
        <t>For example:</t>
        <artwork><![CDATA[
   enum { apple(0), orange(1) } VariantTag;

   struct {
       uint16 number;
       opaque string<0..10>; /* variable length */
   } V1;

   struct {
       uint32 number;
       opaque string[10];    /* fixed length */
   } V2;

   struct {
       VariantTag type;
       select (VariantRecord.type) {
           case apple:  V1;
           case orange: V2;
       };
   } VariantRecord;
]]></artwork>
      </section>
    </section>
    <section anchor="handshake-protocol">
      <name>Handshake Protocol</name>
      <t>The handshake protocol is used to negotiate the security parameters
of a connection. Handshake messages are supplied to the TLS record layer, where
they are encapsulated within one or more TLSPlaintext or TLSCiphertext structures which are
processed and transmitted as specified by the current active connection state.</t>
      <artwork><![CDATA[
   enum {
       client_hello(1),
       server_hello(2),
       new_session_ticket(4),
       end_of_early_data(5),
       encrypted_extensions(8),
       certificate(11),
       certificate_request(13),
       certificate_verify(15),
       finished(20),
       key_update(24),
       message_hash(254),
       (255)
   } HandshakeType;

   struct {
       HandshakeType msg_type;    /* handshake type */
       uint24 length;             /* remaining bytes in message */
       select (Handshake.msg_type) {
           case client_hello:          ClientHello;
           case server_hello:          ServerHello;
           case end_of_early_data:     EndOfEarlyData;
           case encrypted_extensions:  EncryptedExtensions;
           case certificate_request:   CertificateRequest;
           case certificate:           Certificate;
           case certificate_verify:    CertificateVerify;
           case finished:              Finished;
           case new_session_ticket:    NewSessionTicket;
           case key_update:            KeyUpdate;
       };
   } Handshake;
]]></artwork>
      <t>Protocol messages MUST be sent in the order defined in
<xref target="the-transcript-hash"/> and shown in the diagrams in <xref target="protocol-overview"/>.
A peer which receives a handshake message in an unexpected order
MUST abort the handshake with an "unexpected_message" alert.</t>
      <t>New handshake message types are assigned by IANA as described in
<xref target="iana-considerations"/>.</t>
      <section anchor="key-exchange-messages">
        <name>Key Exchange Messages</name>
        <t>The key exchange messages are used to determine the security capabilities
of the client and the server and to establish shared secrets, including
the traffic keys used to protect the rest of the handshake and the data.</t>
        <section anchor="cryptographic-negotiation">
          <name>Cryptographic Negotiation</name>
          <t>In TLS, the cryptographic negotiation proceeds by the client offering the
following four sets of options in its ClientHello:</t>
          <ul spacing="normal">
            <li>A list of cipher suites which indicates the AEAD algorithm/HKDF hash
pairs which the client supports.</li>
            <li>A "supported_groups" (<xref target="supported-groups"/>) extension which indicates the (EC)DHE groups
which the client supports and a "key_share" (<xref target="key-share"/>) extension which contains
(EC)DHE shares for some or all of these groups.</li>
            <li>A "signature_algorithms" (<xref target="signature-algorithms"/>) extension which indicates the signature
algorithms which the client can accept. A "signature_algorithms_cert" extension (<xref target="signature-algorithms"/>) may also be
added to indicate certificate-specific signature algorithms.</li>
            <li>A "pre_shared_key" (<xref target="pre-shared-key-extension"/>) extension which
contains a list of symmetric key identities known to the client and a
"psk_key_exchange_modes" (<xref target="pre-shared-key-exchange-modes"/>)
extension which indicates the key exchange modes that may be used
with PSKs.</li>
          </ul>
          <t>If the server does not select a PSK, then the first three of these
options are entirely orthogonal: the server independently selects a
cipher suite, an (EC)DHE group and key share for key establishment,
and a signature algorithm/certificate pair to authenticate itself to
the client. If there is no overlap between the received "supported_groups"
and the groups supported by the server, then the server MUST abort the
handshake with a "handshake_failure" or an "insufficient_security" alert.</t>
          <t>If the server selects a PSK, then it MUST also select a key
establishment mode from the list indicated by the client's
"psk_key_exchange_modes" extension (at present, PSK alone or with (EC)DHE). Note
that if the PSK can be used without (EC)DHE, then non-overlap in the
"supported_groups" parameters need not be fatal, as it is in the
non-PSK case discussed in the previous paragraph.</t>
          <t>If the server selects an (EC)DHE group and the client did not offer a
compatible "key_share" extension in the initial ClientHello, the server MUST
respond with a HelloRetryRequest (<xref target="hello-retry-request"/>) message.</t>
          <t>If the server successfully selects parameters and does not require a
HelloRetryRequest, it indicates the selected parameters in the ServerHello as
follows:</t>
          <ul spacing="normal">
            <li>If PSK is being used, then the server will send a
"pre_shared_key" extension indicating the selected key.</li>
            <li>When (EC)DHE is in use, the server will also provide a "key_share"
extension. If PSK is not being used, then (EC)DHE and certificate-based
authentication are always used.</li>
            <li>When authenticating via a certificate, the server will send
the Certificate (<xref target="certificate"/>) and CertificateVerify
(<xref target="certificate-verify"/>) messages. In TLS 1.3
as defined by this document, either a PSK or a certificate
is always used, but not both. Future documents may define how
to use them together.</li>
          </ul>
          <t>If the server is unable to negotiate a supported set of parameters
(i.e., there is no overlap between the client and server parameters),
it MUST abort the handshake with either
a "handshake_failure" or "insufficient_security" fatal alert
(see <xref target="alert-protocol"/>).</t>
        </section>
        <section anchor="client-hello">
          <name>Client Hello</name>
          <t>When a client first connects to a server, it is REQUIRED to send the
ClientHello as its first TLS message. The client will also send a
ClientHello when the server has responded to its ClientHello with a
HelloRetryRequest. In that case, the client MUST send the same
ClientHello without modification, except as follows:</t>
          <ul spacing="normal">
            <li>If a "key_share" extension was supplied in the HelloRetryRequest,
replacing the list of shares with a list containing a single
KeyShareEntry from the indicated group.</li>
            <li>Removing the "early_data" extension (<xref target="early-data-indication"/>) if one was
present. Early data is not permitted after a HelloRetryRequest.</li>
            <li>Including a "cookie" extension if one was provided in the
HelloRetryRequest.</li>
            <li>Updating the "pre_shared_key" extension if present by
recomputing the "obfuscated_ticket_age" and binder values
and (optionally) removing
any PSKs which are incompatible with the server's indicated
cipher suite.</li>
            <li>Optionally adding, removing, or changing the length of the "padding"
extension <xref target="RFC7685"/>.</li>
            <li>Other modifications that may be allowed by an extension defined in the
future and present in the HelloRetryRequest.</li>
          </ul>
          <t>Because TLS 1.3 forbids renegotiation, if a server has negotiated TLS
1.3 and receives a ClientHello at any other time, it MUST terminate
the connection with an "unexpected_message" alert.</t>
          <t>If a server established a TLS connection with a previous version of TLS
and receives a TLS 1.3 ClientHello in a renegotiation, it MUST retain the
previous protocol version. In particular, it MUST NOT negotiate TLS 1.3.</t>
          <t>Structure of this message:</t>
          <artwork><![CDATA[
   uint16 ProtocolVersion;
   opaque Random[32];

   uint8 CipherSuite[2];    /* Cryptographic suite selector */

   struct {
       ProtocolVersion legacy_version = 0x0303;    /* TLS v1.2 */
       Random random;
       opaque legacy_session_id<0..32>;
       CipherSuite cipher_suites<2..2^16-2>;
       opaque legacy_compression_methods<1..2^8-1>;
       Extension extensions<8..2^16-1>;
   } ClientHello;
]]></artwork>
          <dl>
            <dt>legacy_version:</dt>
            <dd>
              <t>In previous versions of TLS, this field was used for version negotiation
and represented the highest version number supported by the client.
Experience has shown that many servers do not properly implement
version negotiation, leading to "version intolerance" in which
the server rejects an otherwise acceptable ClientHello with a version
number higher than it supports.
In TLS 1.3, the client indicates its version preferences in the
"supported_versions" extension (<xref target="supported-versions"/>) and the legacy_version field MUST
be set to 0x0303, which is the version number for TLS 1.2.
TLS 1.3 ClientHellos are identified as having
a legacy_version of 0x0303 and a supported_versions extension
present with 0x0304 as the highest version indicated therein.
(See <xref target="backward-compatibility"/> for details about backward compatibility.)
A server which receives a legacy_version value not equal to 0x0303 MUST abort
the handshake with an "illegal_parameter" alert.</t>
            </dd>
            <dt>random:</dt>
            <dd>
              <t>32 bytes generated by a secure random number generator.
See <xref target="implementation-notes"/> for additional information.</t>
            </dd>
            <dt>legacy_session_id:</dt>
            <dd>
              <t>Versions of TLS before TLS 1.3 supported a "session resumption"
feature which has been merged with pre-shared keys in this version
(see <xref target="resumption-and-psk"/>). A client which has a cached session ID
set by a pre-TLS 1.3 server SHOULD set this field to that value. In
compatibility mode (see <xref target="middlebox"/>), this field MUST be non-empty,
so a client not offering a pre-TLS 1.3 session MUST generate a
new 32-byte value. This value need not be random but SHOULD be
unpredictable to avoid implementations fixating on a specific value
(also known as ossification).
Otherwise, it MUST be set as a zero-length list (i.e., a
zero-valued single byte length field).</t>
            </dd>
            <dt>cipher_suites:</dt>
            <dd>
              <t>A list of the symmetric cipher options supported by the
client, specifically the record protection algorithm (including
secret key length) and a hash to be used with HKDF, in descending
order of client preference. Values are defined in <xref target="cipher-suites"/>.
If the list contains cipher suites that
the server does not recognize, support, or wish to use, the server
MUST ignore those cipher suites and process the remaining ones as
usual. If the client is
attempting a PSK key establishment, it SHOULD advertise at least one
cipher suite indicating a Hash associated with the PSK.</t>
            </dd>
            <dt>legacy_compression_methods:</dt>
            <dd>
              <t>Versions of TLS before 1.3 supported compression with the list of
supported compression methods being sent in this field. For every TLS 1.3
ClientHello, this list MUST contain exactly one byte, set to
zero, which corresponds to the "null" compression method in
prior versions of TLS. If a TLS 1.3 ClientHello is
received with any other value in this field, the server MUST
abort the handshake with an "illegal_parameter" alert. Note that TLS 1.3
servers might receive TLS 1.2 or prior ClientHellos which contain
other compression methods and (if negotiating such a prior version)
MUST follow the procedures for
the appropriate prior version of TLS.</t>
            </dd>
            <dt>extensions:</dt>
            <dd>
              <t>Clients request extended functionality from servers by sending
data in the extensions field.  The actual "Extension" format is
defined in <xref target="extensions"/>.  In TLS 1.3, the use
of certain extensions is mandatory, as functionality has moved into
extensions to preserve ClientHello compatibility with previous versions of TLS.
Servers MUST ignore unrecognized extensions.</t>
            </dd>
          </dl>
          <t>All versions of TLS allow an extensions field to optionally follow the
compression_methods field. TLS 1.3 ClientHello
messages always contain extensions (minimally "supported_versions", otherwise,
they will be interpreted as TLS 1.2 ClientHello messages).
However, TLS 1.3 servers might receive ClientHello messages without an
extensions field from prior versions of TLS.
The presence of extensions can be detected by determining whether there
are bytes following the compression_methods field at the end of the
ClientHello. Note that this method of detecting optional data differs
from the normal TLS method of having a variable-length field, but it
is used for compatibility with TLS before extensions were defined.
TLS 1.3 servers will need to perform this check first and only
attempt to negotiate TLS 1.3 if the "supported_versions" extension
is present.
If negotiating a version of TLS prior to 1.3, a server MUST check that
the message either contains no data after legacy_compression_methods
or that it contains a valid extensions block with no data following.
If not, then it MUST abort the handshake with a "decode_error" alert.</t>
          <t>In the event that a client requests additional functionality using
extensions and this functionality is not supplied by the server, the
client MAY abort the handshake.</t>
          <t>After sending the ClientHello message, the client waits for a ServerHello
or HelloRetryRequest message. If early data
is in use, the client may transmit early Application Data
(<xref target="zero-rtt-data"/>) while waiting for the next handshake message.</t>
        </section>
        <section anchor="server-hello">
          <name>Server Hello</name>
          <t>The server will send this message in response to a ClientHello message
to proceed with the handshake if it is able to negotiate an acceptable
set of handshake parameters based on the ClientHello.</t>
          <t>Structure of this message:</t>
          <artwork><![CDATA[
   struct {
       ProtocolVersion legacy_version = 0x0303;    /* TLS v1.2 */
       Random random;
       opaque legacy_session_id_echo<0..32>;
       CipherSuite cipher_suite;
       uint8 legacy_compression_method = 0;
       Extension extensions<6..2^16-1>;
   } ServerHello;
]]></artwork>
          <dl>
            <dt>legacy_version:</dt>
            <dd>
              <t>In previous versions of TLS, this field was used for version negotiation
and represented the selected version number for the connection. Unfortunately,
some middleboxes fail when presented with new values.
In TLS 1.3, the TLS server indicates its version using the
"supported_versions" extension (<xref target="supported-versions"/>),
and the legacy_version field MUST
be set to 0x0303, which is the version number for TLS 1.2.
(See <xref target="backward-compatibility"/> for details about backward compatibility.)</t>
            </dd>
            <dt>random:</dt>
            <dd>
              <t>32 bytes generated by a secure random number generator.
See <xref target="implementation-notes"/> for additional information.
The last 8 bytes MUST be overwritten as described
below if negotiating TLS 1.2 or TLS 1.1, but the
remaining bytes MUST be random.
This structure is generated by the server and MUST be
generated independently of the ClientHello.random.</t>
            </dd>
            <dt>legacy_session_id_echo:</dt>
            <dd>
              <t>The contents of the client's legacy_session_id field. Note that
this field is echoed even if the client's value corresponded to
a cached pre-TLS 1.3 session which the server has chosen not
to resume. A client which receives a legacy_session_id_echo field
that does not match what it sent in the ClientHello
MUST abort the handshake with an "illegal_parameter"
alert.</t>
            </dd>
            <dt>cipher_suite:</dt>
            <dd>
              <t>The single cipher suite selected by the server from the ClientHello.cipher_suites
list. A client which receives a cipher suite
that was not offered MUST abort the handshake with an "illegal_parameter"
alert.</t>
            </dd>
            <dt>legacy_compression_method:</dt>
            <dd>
              <t>A single byte which MUST have the value 0.</t>
            </dd>
            <dt>extensions:</dt>
            <dd>
              <t>A list of extensions.  The ServerHello MUST only include extensions
which are required to establish the cryptographic context and negotiate
the protocol version. All TLS 1.3 ServerHello messages MUST contain the
"supported_versions" extension.  Current ServerHello messages additionally contain
either the "pre_shared_key" extension or the "key_share" extension, or both (when using
a PSK with (EC)DHE key establishment). Other extensions
(see <xref target="extensions"/>) are sent
separately in the EncryptedExtensions message.</t>
            </dd>
          </dl>
          <t>For reasons of backward compatibility with middleboxes
(see <xref target="middlebox"/>), the HelloRetryRequest
message uses the same structure as the ServerHello, but with
Random set to the special value of the SHA-256 of
"HelloRetryRequest":</t>
          <artwork><![CDATA[
  CF 21 AD 74 E5 9A 61 11 BE 1D 8C 02 1E 65 B8 91
  C2 A2 11 16 7A BB 8C 5E 07 9E 09 E2 C8 A8 33 9C
]]></artwork>
          <t>Upon receiving a message with type server_hello, implementations
MUST first examine the Random value and, if it matches
this value, process it as described in <xref target="hello-retry-request"/>).</t>
          <t>TLS 1.3 has a downgrade protection mechanism embedded in the server's
random value. TLS 1.3 servers which negotiate TLS 1.2 or below in
response to a ClientHello MUST set the last 8 bytes of their
Random value specially in their ServerHello.</t>
          <t>If negotiating TLS 1.2, TLS 1.3 servers MUST set the last 8 bytes of their
Random value to the bytes:</t>
          <artwork><![CDATA[
  44 4F 57 4E 47 52 44 01
]]></artwork>
          <t>If negotiating TLS 1.1 or below, TLS 1.3 servers MUST, and TLS 1.2
servers SHOULD, set the last 8 bytes of their ServerHello.Random value to the
bytes:</t>
          <artwork><![CDATA[
  44 4F 57 4E 47 52 44 00
]]></artwork>
          <t>Note that <xref target="RFC8996"/> and <xref target="backward-compatibility-security"/> forbid
the negotation of TLS versions below 1.2; implementations which do not
follow that guidance MUST behave as described above.</t>
          <t>TLS 1.3 clients receiving a ServerHello indicating TLS 1.2 or below
MUST check that the last 8 bytes are not equal to either of these values.
TLS 1.2 clients SHOULD also check that the last 8 bytes are not
equal to the second value if the ServerHello indicates TLS 1.1 or
below.  If a match is found, the client MUST abort the handshake
with an "illegal_parameter" alert.  This mechanism provides limited
protection against downgrade attacks over and above what is provided
by the Finished exchange: because the ServerKeyExchange, a message
present in TLS 1.2 and below, includes a signature over both random
values, it is not possible for an active attacker to modify the
random values without detection as long as ephemeral ciphers are used.
It does not provide downgrade protection when static RSA is used.</t>
          <t>Note: This is a change from <xref target="RFC5246"/>, so in practice many TLS 1.2 clients
and servers will not behave as specified above.</t>
          <t>A legacy TLS client performing renegotiation with TLS 1.2 or prior
and which receives a TLS 1.3 ServerHello during renegotiation
MUST abort the handshake with a "protocol_version" alert.
Note that renegotiation is not possible when TLS 1.3 has been
negotiated.</t>
        </section>
        <section anchor="hello-retry-request">
          <name>Hello Retry Request</name>
          <t>The server will send this message in response to a ClientHello message
if it is able to find an acceptable set of parameters but the
ClientHello does not contain sufficient information to proceed with
the handshake. As discussed in <xref target="server-hello"/>, the HelloRetryRequest
has the same format as a ServerHello message, and the
legacy_version, legacy_session_id_echo, cipher_suite, and legacy_compression_method fields have the same meaning. However, for convenience we
discuss "HelloRetryRequest" throughout this document as if it were
a distinct message.</t>
          <t>The server's extensions MUST contain "supported_versions".
Additionally, it SHOULD contain the minimal set of extensions necessary for the
client to generate a correct ClientHello pair. As with the ServerHello, a
HelloRetryRequest MUST NOT contain any extensions that were not first
offered by the client in its ClientHello, with the exception of
optionally the "cookie" (see <xref target="cookie"/>) extension.</t>
          <t>Upon receipt of a HelloRetryRequest, the client MUST check
the legacy_version, legacy_session_id_echo, cipher_suite,
and legacy_compression_method as specified in <xref target="server-hello"/> and then process the
extensions, starting with determining the version using
"supported_versions". Clients MUST abort the handshake with
an "illegal_parameter" alert if the HelloRetryRequest would not result in
any change in the ClientHello. If a client receives a second
HelloRetryRequest in the same connection (i.e., where
the ClientHello was itself in response to a HelloRetryRequest), it
MUST abort the handshake with an "unexpected_message" alert.</t>
          <t>Otherwise, the client MUST process all extensions in the
HelloRetryRequest and send a second updated ClientHello. The
HelloRetryRequest extensions defined in this specification are:</t>
          <ul spacing="normal">
            <li>supported_versions (see <xref target="supported-versions"/>)</li>
            <li>cookie (see <xref target="cookie"/>)</li>
            <li>key_share (see <xref target="key-share"/>)</li>
          </ul>
          <t>A client which receives a cipher suite that was not
offered MUST abort the handshake.  Servers MUST ensure that they
negotiate the same cipher suite when receiving a conformant updated
ClientHello (if the server selects the cipher suite as the first step
in the negotiation, then this will happen automatically). Upon
receiving the ServerHello, clients MUST check that the cipher suite
supplied in the ServerHello is the same as that in the
HelloRetryRequest and otherwise abort the handshake with an
"illegal_parameter" alert.</t>
          <t>In addition, in its updated ClientHello, the client SHOULD NOT offer
any pre-shared keys associated with a hash other than that of the
selected cipher suite. This allows the client to avoid having to
compute partial hash transcripts for multiple hashes in the second
ClientHello.</t>
          <t>The value of selected_version in the HelloRetryRequest "supported_versions"
extension MUST be retained in the ServerHello, and a client MUST abort the
handshake with an "illegal_parameter" alert if the value changes.</t>
        </section>
      </section>
      <section anchor="extensions">
        <name>Extensions</name>
        <t>A number of TLS messages contain tag-length-value encoded extensions structures.</t>
        <artwork><![CDATA[
   struct {
       ExtensionType extension_type;
       opaque extension_data<0..2^16-1>;
   } Extension;

   enum {
       server_name(0),                             /* RFC 6066 */
       max_fragment_length(1),                     /* RFC 6066 */
       status_request(5),                          /* RFC 6066 */
       supported_groups(10),                       /* RFC 8422, 7919 */
       signature_algorithms(13),                   /* RFC 8446 */
       use_srtp(14),                               /* RFC 5764 */
       heartbeat(15),                              /* RFC 6520 */
       application_layer_protocol_negotiation(16), /* RFC 7301 */
       signed_certificate_timestamp(18),           /* RFC 6962 */
       client_certificate_type(19),                /* RFC 7250 */
       server_certificate_type(20),                /* RFC 7250 */
       padding(21),                                /* RFC 7685 */
       pre_shared_key(41),                         /* RFC 8446 */
       early_data(42),                             /* RFC 8446 */
       supported_versions(43),                     /* RFC 8446 */
       cookie(44),                                 /* RFC 8446 */
       psk_key_exchange_modes(45),                 /* RFC 8446 */
       certificate_authorities(47),                /* RFC 8446 */
       oid_filters(48),                            /* RFC 8446 */
       post_handshake_auth(49),                    /* RFC 8446 */
       signature_algorithms_cert(50),              /* RFC 8446 */
       key_share(51),                              /* RFC 8446 */
       (65535)
   } ExtensionType;
]]></artwork>
        <t>Here:</t>
        <ul spacing="normal">
          <li>"extension_type" identifies the particular extension type.</li>
          <li>"extension_data" contains information specific to the particular
extension type.</li>
        </ul>
        <t>The contents of the "extension_data" field are typically defined by an
extension-specific structure defined in the TLS presentation language. Unless
otherwise specified, trailing data is forbidden. That is, senders MUST NOT
include data after the structure in the "extension_data" field. When
processing an extension, receivers MUST abort the handshake with a
"decode_error" alert if there is data left over after parsing the structure.
This does not apply if the receiver does not implement or is configured to
ignore an extension.</t>
        <t>The list of extension types is maintained by IANA as described in
<xref target="iana-considerations"/>.</t>
        <t>Extensions are generally structured in a request/response fashion,
though some extensions are just requests with no corresponding
response (i.e., indications). The client sends its extension requests
in the ClientHello message, and the server sends its extension
responses in the ServerHello, EncryptedExtensions, HelloRetryRequest,
and Certificate messages. The server sends extension requests in the
CertificateRequest message which a client MAY respond to with a
Certificate message. The server MAY also send unsolicited extensions
in the NewSessionTicket, though the client does not respond directly
to these.</t>
        <t>Implementations MUST NOT send extension responses
(i.e., in the ServerHello, EncryptedExtensions, HelloRetryRequest,
and Certificate messages)
if the remote endpoint did not send the corresponding extension requests,
with the exception of the "cookie" extension in the HelloRetryRequest.
Upon receiving such an extension, an endpoint MUST abort the handshake with an
"unsupported_extension" alert.</t>
        <t>The table below indicates the messages where a given extension may
appear, using the following notation: CH (ClientHello), SH
(ServerHello), EE (EncryptedExtensions), CT (Certificate), CR
(CertificateRequest), NST (NewSessionTicket), and HRR
(HelloRetryRequest). If an implementation receives an extension which
it recognizes and which is not specified for the message in which it
appears, it MUST abort the handshake with an "illegal_parameter" alert.</t>
        <table anchor="extensions-list">
          <name>TLS Extensions</name>
          <thead>
            <tr>
              <th align="left">Extension</th>
              <th align="right">TLS 1.3</th>
              <th align="left"> </th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">server_name <xref target="RFC6066"/></td>
              <td align="right">CH, EE</td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">max_fragment_length <xref target="RFC6066"/></td>
              <td align="right">CH, EE</td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">status_request <xref target="RFC6066"/></td>
              <td align="right">CH, CR, CT</td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">supported_groups <xref target="RFC7919"/></td>
              <td align="right">CH, EE</td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">signature_algorithms (RFC8446)</td>
              <td align="right">CH, CR</td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">use_srtp <xref target="RFC5764"/></td>
              <td align="right">CH, EE</td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">heartbeat <xref target="RFC6520"/></td>
              <td align="right">CH, EE</td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">application_layer_protocol_negotiation <xref target="RFC7301"/></td>
              <td align="right">CH, EE</td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">signed_certificate_timestamp <xref target="RFC6962"/></td>
              <td align="right">CH, CR, CT</td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">client_certificate_type <xref target="RFC7250"/></td>
              <td align="right">CH, EE</td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">server_certificate_type <xref target="RFC7250"/></td>
              <td align="right">CH, EE</td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">padding <xref target="RFC7685"/></td>
              <td align="right">CH</td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">cached_info <xref target="RFC7924"/></td>
              <td align="right">CH, EE</td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">compress_certificate <xref target="RFC8879"/></td>
              <td align="right">CH, CR</td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">record_size_limit [RFC8849]</td>
              <td align="right">CH, EE</td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">delegated_credentials [RFC-TBD]</td>
              <td align="right">CH, CR, CT</td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">supported_ekt_ciphers</td>
              <td align="right"> </td>
              <td align="left">CH, EE</td>
            </tr>
            <tr>
              <td align="left">pre_shared_key [RFC 8446]</td>
              <td align="right">CH, SH</td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">early_data [RFC 8446]</td>
              <td align="right">CH, EE, NST</td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">psk_key_exchange_modes [RFC 8446]</td>
              <td align="right">CH</td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">cookie [RFC 8446]</td>
              <td align="right">CH, HRR</td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">supported_versions [RFC 8446]</td>
              <td align="right">CH, SH, HRR</td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">certificate_authorities [RFC 8446]</td>
              <td align="right">CH, CR</td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">oid_filters [RFC 8446]</td>
              <td align="right">CR</td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">post_handshake_auth [RFC 8446]</td>
              <td align="right">CH</td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">signature_algorithms_cert [RFC 8446]</td>
              <td align="right">CH, CR</td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">key_share [RFC 8446]</td>
              <td align="right">CH, SH, HRR</td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">transparency_info [RFC 9162]</td>
              <td align="right">CH, CR, CT</td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">connection_id [RFC 9146]</td>
              <td align="right">CH, SH</td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">external_id_hash [RFC 8844]</td>
              <td align="right">CH, EE</td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">external_session_id [RFC 8844]</td>
              <td align="right">CH, EE</td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">quic_transport_parameters [RFC 9001]</td>
              <td align="right">CH, EE</td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">ticket_request [RFC 9149]</td>
              <td align="right">CH, EE</td>
              <td align="left"> </td>
            </tr>
          </tbody>
        </table>
        <t>Note: this table includes only extensions marked
"Recommended" at the time of this writing.</t>
        <t>When multiple extensions of different types are present, the
extensions MAY appear in any order, with the exception of
"pre_shared_key" (<xref target="pre-shared-key-extension"/>) which MUST be
the last extension in the ClientHello (but can appear anywhere in
the ServerHello extensions block).
There MUST NOT be more than one extension of the same type in a given
extension block.</t>
        <t>In TLS 1.3, unlike TLS 1.2, extensions are negotiated for each
handshake even when in resumption-PSK mode. However, 0-RTT parameters are
those negotiated in the previous handshake; mismatches may require
rejecting 0-RTT (see <xref target="early-data-indication"/>).</t>
        <t>There are subtle (and not so subtle) interactions that may occur in this
protocol between new features and existing features which may result in a
significant reduction in overall security. The following considerations should
be taken into account when designing new extensions:</t>
        <ul spacing="normal">
          <li>Some cases where a server does not agree to an extension are error
conditions (e.g., the handshake cannot continue), and some are
simply refusals to support particular features. In general, error
alerts should be used for the former and a field in the server
extension response for the latter.</li>
          <li>Extensions should, as far as possible, be designed to prevent any attack that
forces use (or non-use) of a particular feature by manipulation of handshake
messages. This principle should be followed regardless of whether the feature
is believed to cause a security problem.
Often the fact that the extension fields are included in the inputs to the
Finished message hashes will be sufficient, but extreme care is needed when
the extension changes the meaning of messages sent in the handshake phase.
Designers and implementors should be aware of the fact that until the
handshake has been authenticated, active attackers can modify messages and
insert, remove, or replace extensions.</li>
        </ul>
        <section anchor="supported-versions">
          <name>Supported Versions</name>
          <artwork><![CDATA[
   struct {
       select (Handshake.msg_type) {
           case client_hello:
                ProtocolVersion versions<2..254>;

           case server_hello: /* and HelloRetryRequest */
                ProtocolVersion selected_version;
       };
   } SupportedVersions;
]]></artwork>
          <t>The "supported_versions" extension is used by the client to indicate
which versions of TLS it supports and by the server to indicate
which version it is using. The extension contains a list of
supported versions in preference order, with the most preferred
version first. Implementations of this specification MUST send this
extension in the ClientHello containing all versions of TLS which they are
prepared to negotiate (for this specification, that means minimally
0x0304, but if previous versions of TLS are allowed to be negotiated,
they MUST be present as well).</t>
          <t>If this extension is not present, servers which are compliant with
this specification and which also support TLS 1.2
MUST negotiate TLS 1.2 or prior as specified in
<xref target="RFC5246"/>, even if ClientHello.legacy_version is 0x0304 or later.
Servers MAY abort the handshake upon receiving a ClientHello with
legacy_version 0x0304 or later.</t>
          <t>If this extension is present in the ClientHello, servers MUST NOT use the
ClientHello.legacy_version value for version negotiation and MUST use only the
"supported_versions" extension to determine client
preferences. Servers MUST only select a version of TLS present in that
extension and MUST ignore any unknown versions that are present in that
extension. Note that this
mechanism makes it possible to negotiate a version prior to TLS 1.2 if
one side supports a sparse range. Implementations of TLS 1.3 which choose
to support prior versions of TLS SHOULD support TLS 1.2.
Servers MUST be prepared to receive ClientHellos that include this
extension but do not include 0x0304 in the list of versions.</t>
          <t>A server which negotiates a version of TLS prior to TLS 1.3 MUST
set ServerHello.version and MUST NOT send the "supported_versions"
extension. A server which negotiates TLS 1.3 MUST respond by sending a
"supported_versions" extension containing the selected version value
(0x0304). It MUST set the ServerHello.legacy_version field to 0x0303 (TLS
1.2).</t>
          <t>After checking ServerHello.random to determine if the server handshake message
is a ServerHello or HelloRetryRequest, clients MUST check for this extension
prior to processing the rest of the ServerHello. This will require clients to
parse the ServerHello in order to read the extension.
If this extension is present, clients MUST ignore the
ServerHello.legacy_version value and MUST use only the
"supported_versions" extension to determine the selected version. If the
"supported_versions" extension in the ServerHello contains a version not offered by the
client or contains a version prior to TLS 1.3, the client MUST abort the handshake with an
"illegal_parameter" alert.</t>
        </section>
        <section anchor="cookie">
          <name>Cookie</name>
          <artwork><![CDATA[
   struct {
       opaque cookie<1..2^16-1>;
   } Cookie;
]]></artwork>
          <t>Cookies serve two primary purposes:</t>
          <ul spacing="normal">
            <li>Allowing the server to force the client to demonstrate reachability
at their apparent network address (thus providing a measure of DoS
protection). This is primarily useful for non-connection-oriented
transports (see <xref target="RFC6347"/> for an example of this).</li>
            <li>Allowing the server to offload state to the client, thus allowing it to send
a HelloRetryRequest without storing any state. The server can do this by
storing the hash of the ClientHello in the HelloRetryRequest cookie
(protected with some suitable integrity protection algorithm).</li>
          </ul>
          <t>When sending a HelloRetryRequest, the server MAY provide a "cookie" extension to the
client (this is an exception to the usual rule that the only extensions that
may be sent are those that appear in the ClientHello). When sending the
new ClientHello, the client MUST copy the contents of the extension received in
the HelloRetryRequest into a "cookie" extension in the new ClientHello.
Clients MUST NOT use cookies in their initial ClientHello in subsequent connections.</t>
          <t>When a server is operating statelessly, it may receive an unprotected record of
type change_cipher_spec between the first and second ClientHello (see
<xref target="record-protocol"/>). Since the server is not storing any state, this will appear
as if it were the first message to be received. Servers operating statelessly
MUST ignore these records.</t>
        </section>
        <section anchor="signature-algorithms">
          <name>Signature Algorithms</name>
          <t>TLS 1.3 provides two extensions for indicating which signature
algorithms may be used in digital signatures. The
"signature_algorithms_cert" extension applies to signatures in
certificates, and the "signature_algorithms" extension, which originally
appeared in TLS 1.2, applies to signatures in CertificateVerify
messages. The keys found in certificates MUST also be of
appropriate type for the signature algorithms they are used
with. This is a particular issue for RSA keys and PSS signatures,
as described below. If no "signature_algorithms_cert" extension is present,
then the "signature_algorithms" extension also applies to signatures
appearing in certificates. Clients which desire the server to authenticate
itself via a certificate MUST send the "signature_algorithms" extension. If a server
is authenticating via a certificate and the client has not sent a
"signature_algorithms" extension, then the server MUST abort the
handshake with a "missing_extension" alert (see <xref target="mti-extensions"/>).</t>
          <t>The "signature_algorithms_cert" extension was added to allow implementations
which supported different sets of algorithms for certificates and in TLS itself
to clearly signal their capabilities. TLS 1.2 implementations SHOULD also process
this extension. Implementations which have the same policy in both cases
MAY omit the "signature_algorithms_cert" extension.</t>
          <t>The "extension_data" field of these extensions contains a
SignatureSchemeList value:</t>
          <artwork><![CDATA[
   enum {
       /* RSASSA-PKCS1-v1_5 algorithms */
       rsa_pkcs1_sha256(0x0401),
       rsa_pkcs1_sha384(0x0501),
       rsa_pkcs1_sha512(0x0601),

       /* ECDSA algorithms */
       ecdsa_secp256r1_sha256(0x0403),
       ecdsa_secp384r1_sha384(0x0503),
       ecdsa_secp521r1_sha512(0x0603),

       /* RSASSA-PSS algorithms with public key OID rsaEncryption */
       rsa_pss_rsae_sha256(0x0804),
       rsa_pss_rsae_sha384(0x0805),
       rsa_pss_rsae_sha512(0x0806),

       /* EdDSA algorithms */
       ed25519(0x0807),
       ed448(0x0808),

       /* RSASSA-PSS algorithms with public key OID RSASSA-PSS */
       rsa_pss_pss_sha256(0x0809),
       rsa_pss_pss_sha384(0x080a),
       rsa_pss_pss_sha512(0x080b),

       /* Legacy algorithms */
       rsa_pkcs1_sha1(0x0201),
       ecdsa_sha1(0x0203),

       /* Reserved Code Points */
       private_use(0xFE00..0xFFFF),
       (0xFFFF)
   } SignatureScheme;

   struct {
       SignatureScheme supported_signature_algorithms<2..2^16-2>;
   } SignatureSchemeList;
]]></artwork>
          <t>Note: This enum is named "SignatureScheme" because there is already
a "SignatureAlgorithm" type in TLS 1.2, which this replaces.
We use the term "signature algorithm" throughout the text.</t>
          <t>Each SignatureScheme value lists a single signature algorithm that the
client is willing to verify. The values are indicated in descending order
of preference. Note that a signature algorithm takes as input an
arbitrary-length message, rather than a digest. Algorithms which
traditionally act on a digest should be defined in TLS to first
hash the input with a specified hash algorithm and then proceed as usual.
The code point groups listed above have the following meanings:</t>
          <dl>
            <dt>RSASSA-PKCS1-v1_5 algorithms:</dt>
            <dd>
              <t>Indicates a signature algorithm using RSASSA-PKCS1-v1_5 <xref target="RFC8017"/>
with the corresponding hash algorithm as defined in <xref target="SHS"/>. These values
refer solely to signatures which appear in certificates (see
<xref target="server-certificate-selection"/>) and are not defined for use in signed
TLS handshake messages, although they MAY appear in "signature_algorithms"
and "signature_algorithms_cert" for backward compatibility with TLS 1.2.</t>
            </dd>
            <dt>ECDSA algorithms:</dt>
            <dd>
              <t>Indicates a signature algorithm using ECDSA <xref target="DSS"/>, the corresponding curve as defined in NIST SP 800-186 <xref target="ECDP"/>, and the
corresponding hash algorithm as defined in <xref target="SHS"/>. The signature is
represented as a DER-encoded <xref target="X690"/> ECDSA-Sig-Value structure as defined in <xref target="RFC4492"/>.</t>
            </dd>
            <dt>RSASSA-PSS RSAE algorithms:</dt>
            <dd>
              <t>Indicates a signature algorithm using RSASSA-PSS with a mask
generation function of MGF1, as defined in <xref target="RFC8017"/>. The
digest used in MGF1 and the digest being signed are
both the corresponding hash algorithm as defined in <xref target="SHS"/>.
The length of the Salt MUST be equal to the length of the output of the
digest algorithm. If the public key is carried
in an X.509 certificate, it MUST use the rsaEncryption OID <xref target="RFC5280"/>.</t>
            </dd>
            <dt>EdDSA algorithms:</dt>
            <dd>
              <t>Indicates a signature algorithm using EdDSA as defined in
<xref target="RFC8032"/> or its successors. Note that these correspond to the
"PureEdDSA" algorithms and not the "prehash" variants.</t>
            </dd>
            <dt>RSASSA-PSS PSS algorithms:</dt>
            <dd>
              <t>Indicates a signature algorithm using RSASSA-PSS with a mask
generation function of MGF1, as defined in <xref target="RFC8017"/>. The
digest used in MGF1 and the digest being signed are
both the corresponding hash algorithm as defined in <xref target="SHS"/>.
The length of the Salt MUST be equal to the length of the digest
algorithm. If the public key is carried in an X.509 certificate,
it MUST use the RSASSA-PSS OID  <xref target="RFC5756"/>. When used in certificate signatures,
the algorithm parameters MUST be DER encoded. If the corresponding
public key's parameters are present, then the parameters in the signature
MUST be identical to those in the public key.</t>
            </dd>
            <dt>Legacy algorithms:</dt>
            <dd>
              <t>Indicates algorithms which are being deprecated because they use
algorithms with known weaknesses, specifically SHA-1 which is used
in this context with either (1) RSA using RSASSA-PKCS1-v1_5 or (2) ECDSA.  These values
refer solely to signatures which appear in certificates (see
<xref target="server-certificate-selection"/>) and are not defined for use in
signed TLS handshake messages, although they MAY appear in "signature_algorithms"
and "signature_algorithms_cert" for backward compatibility with TLS 1.2.
Endpoints SHOULD NOT negotiate these algorithms
but are permitted to do so solely for backward compatibility. Clients
offering these values MUST list
them as the lowest priority (listed after all other algorithms in
SignatureSchemeList). TLS 1.3 servers MUST NOT offer a SHA-1 signed
certificate unless no valid certificate chain can be produced
without it (see <xref target="server-certificate-selection"/>).</t>
            </dd>
          </dl>
          <t>The signatures on certificates that are self-signed or certificates that are
trust anchors are not validated, since they begin a certification path (see
<xref target="RFC5280"/>, Section 3.2).  A certificate that begins a certification
path MAY use a signature algorithm that is not advertised as being supported
in the "signature_algorithms" and "signature_algorithms_cert" extensions.</t>
          <t>Note that TLS 1.2 defines this extension differently. TLS 1.3 implementations
willing to negotiate TLS 1.2 MUST behave in accordance with the requirements of
<xref target="RFC5246"/> when negotiating that version. In particular:</t>
          <ul spacing="normal">
            <li>TLS 1.2 ClientHellos MAY omit this extension.</li>
            <li>In TLS 1.2, the extension contained hash/signature pairs. The pairs are
encoded in two octets, so SignatureScheme values have been allocated to
align with TLS 1.2's encoding. Some legacy pairs are left unallocated. These
algorithms are deprecated as of TLS 1.3. They MUST NOT be offered or
negotiated by any implementation. In particular, MD5 <xref target="SLOTH"/>, SHA-224, and
DSA MUST NOT be used.</li>
            <li>ECDSA signature schemes align with TLS 1.2's ECDSA hash/signature pairs.
However, the old semantics did not constrain the signing curve.  If TLS 1.2 is
negotiated, implementations MUST be prepared to accept a signature that uses
any curve that they advertised in the "supported_groups" extension.</li>
            <li>Implementations that advertise support for RSASSA-PSS (which is mandatory in
TLS 1.3) MUST be prepared to accept a signature using that scheme even when
TLS 1.2 is negotiated. In TLS 1.2, RSASSA-PSS is used with RSA cipher suites.</li>
          </ul>
        </section>
        <section anchor="certificate-authorities">
          <name>Certificate Authorities</name>
          <t>The "certificate_authorities" extension is used to indicate the
certificate authorities (CAs) which an endpoint supports and which SHOULD
be used by the receiving endpoint to guide certificate selection.</t>
          <t>The body of the "certificate_authorities" extension consists of a
CertificateAuthoritiesExtension structure.</t>
          <artwork><![CDATA[
   opaque DistinguishedName<1..2^16-1>;

   struct {
       DistinguishedName authorities<3..2^16-1>;
   } CertificateAuthoritiesExtension;
]]></artwork>
          <dl>
            <dt>authorities:</dt>
            <dd>
              <t>A list of the distinguished names <xref target="X501"/> of acceptable
certificate authorities, represented in DER-encoded <xref target="X690"/> format.  These
distinguished names specify a desired distinguished name for a trust anchor
or subordinate CA; thus, this message can be used to
describe known trust anchors as well as a desired authorization space.</t>
            </dd>
          </dl>
          <t>The client MAY send the "certificate_authorities" extension in the ClientHello
message. The server MAY send it in the CertificateRequest message.</t>
          <t>The "trusted_ca_keys" extension <xref target="RFC6066"/>, which serves a similar
purpose, but is more complicated, is not used in TLS 1.3
(although it may appear in ClientHello messages from clients which are
offering prior versions of TLS).</t>
        </section>
        <section anchor="oid-filters">
          <name>OID Filters</name>
          <t>The "oid_filters" extension allows servers to provide a list of OID/value
pairs which it would like the client's certificate to match. This
extension, if provided by the server, MUST only be sent in the CertificateRequest message.</t>
          <artwork><![CDATA[
   struct {
       opaque certificate_extension_oid<1..2^8-1>;
       opaque certificate_extension_values<0..2^16-1>;
   } OIDFilter;

   struct {
       OIDFilter filters<0..2^16-1>;
   } OIDFilterExtension;
]]></artwork>
          <dl>
            <dt>filters:</dt>
            <dd>
              <t>A list of certificate extension OIDs <xref target="RFC5280"/> with their allowed value(s) and
represented in DER-encoded <xref target="X690"/> format. Some certificate extension OIDs
allow multiple values (e.g., Extended Key Usage).  If the server has included
a non-empty filters list, the client certificate included in
the response MUST contain all of the specified extension OIDs that the client
recognizes. For each extension OID recognized by the client, all of the
specified values MUST be present in the client certificate (but the
certificate MAY have other values as well). However, the client MUST ignore
and skip any unrecognized certificate extension OIDs. If the client ignored
some of the required certificate extension OIDs and supplied a certificate
that does not satisfy the request, the server MAY at its discretion either
continue the connection without client authentication or abort the handshake
with an "unsupported_certificate" alert. Any given OID MUST NOT appear
more than once in the filters list.</t>
            </dd>
          </dl>
          <t>PKIX RFCs define a variety of certificate extension OIDs and their corresponding
value types. Depending on the type, matching certificate extension values are
not necessarily bitwise-equal. It is expected that TLS implementations will rely
on their PKI libraries to perform certificate selection using certificate
extension OIDs.</t>
          <t>This document defines matching rules for two standard certificate extensions
defined in <xref target="RFC5280"/>:</t>
          <ul spacing="normal">
            <li>The Key Usage extension in a certificate matches the request when all key
usage bits asserted in the request are also asserted in the Key Usage
certificate extension.</li>
            <li>The Extended Key Usage extension in a certificate matches the request when all
key purpose OIDs present in the request are also found in the Extended Key
Usage certificate extension. The special anyExtendedKeyUsage OID MUST NOT be
used in the request.</li>
          </ul>
          <t>Separate specifications may define matching rules for other certificate
extensions.</t>
        </section>
        <section anchor="post_handshake_auth">
          <name>Post-Handshake Certificate-Based Client Authentication</name>
          <t>The "post_handshake_auth" extension is used to indicate that a client is willing
to perform post-handshake authentication (<xref target="post-handshake-authentication"/>). Servers
MUST NOT send a post-handshake CertificateRequest to clients which do not
offer this extension. Servers MUST NOT send this extension.</t>
          <artwork><![CDATA[
   struct {} PostHandshakeAuth;
]]></artwork>
          <t>The "extension_data" field of the "post_handshake_auth" extension is zero length.</t>
        </section>
        <section anchor="supported-groups">
          <name>Supported Groups</name>
          <t>When sent by the client, the "supported_groups" extension indicates
the named groups which the client supports for key exchange, ordered
from most preferred to least preferred.</t>
          <t>Note: In versions of TLS prior to TLS 1.3, this extension was named
"elliptic_curves" and only contained elliptic curve groups. See <xref target="RFC8422"/> and
<xref target="RFC7919"/>. This extension was also used to negotiate
ECDSA curves. Signature algorithms are now negotiated independently (see
<xref target="signature-algorithms"/>).</t>
          <t>The "extension_data" field of this extension contains a
"NamedGroupList" value:</t>
          <artwork><![CDATA[
   enum {

       /* Elliptic Curve Groups (ECDHE) */
       secp256r1(0x0017), secp384r1(0x0018), secp521r1(0x0019),
       x25519(0x001D), x448(0x001E),

       /* Finite Field Groups (DHE) */
       ffdhe2048(0x0100), ffdhe3072(0x0101), ffdhe4096(0x0102),
       ffdhe6144(0x0103), ffdhe8192(0x0104),

       /* Reserved Code Points */
       ffdhe_private_use(0x01FC..0x01FF),
       ecdhe_private_use(0xFE00..0xFEFF),
       (0xFFFF)
   } NamedGroup;

   struct {
       NamedGroup named_group_list<2..2^16-1>;
   } NamedGroupList;
]]></artwork>
          <dl>
            <dt>Elliptic Curve Groups (ECDHE):</dt>
            <dd>
              <t>Indicates support for the corresponding named curve, defined
in either NIST SP 800-186 <xref target="ECDP"/> or in <xref target="RFC7748"/>.
Values 0xFE00 through 0xFEFF are reserved for Private Use <xref target="RFC8126"/>.</t>
            </dd>
            <dt>Finite Field Groups (DHE):</dt>
            <dd>
              <t>Indicates support for the corresponding finite field
group, defined in <xref target="RFC7919"/>.
Values 0x01FC through 0x01FF are reserved for Private Use.</t>
            </dd>
          </dl>
          <t>Items in "named_group_list" are ordered according to the sender's
preferences (most preferred choice first).</t>
          <t>As of TLS 1.3, servers are permitted to send the "supported_groups"
extension to the client. Clients MUST NOT act upon any information
found in "supported_groups" prior to successful completion of the
handshake but MAY use the information learned from a successfully
completed handshake to change what groups they use in their
"key_share" extension in subsequent connections.
If the server has a group it prefers to the
ones in the "key_share" extension but is still willing to accept the
ClientHello, it SHOULD send "supported_groups" to update the client's
view of its preferences; this extension SHOULD contain all groups
the server supports, regardless of whether they are currently
supported by the client.</t>
        </section>
        <section anchor="key-share">
          <name>Key Share</name>
          <t>The "key_share" extension contains the endpoint's cryptographic parameters.</t>
          <t>Clients MAY send an empty client_shares list in order to request
group selection from the server, at the cost of an additional round trip
(see <xref target="hello-retry-request"/>).</t>
          <artwork><![CDATA[
   struct {
       NamedGroup group;
       opaque key_exchange<1..2^16-1>;
   } KeyShareEntry;
]]></artwork>
          <dl>
            <dt>group:</dt>
            <dd>
              <t>The named group for the key being exchanged.</t>
            </dd>
            <dt>key_exchange:</dt>
            <dd>
              <t>Key exchange information.  The contents of this field are
determined by the specified group and its corresponding
definition.
Finite Field Diffie-Hellman <xref target="DH76"/> parameters are described in
<xref target="ffdhe-param"/>; Elliptic Curve Diffie-Hellman parameters are
described in <xref target="ecdhe-param"/>.</t>
            </dd>
          </dl>
          <t>In the ClientHello message, the "extension_data" field of this extension
contains a "KeyShareClientHello" value:</t>
          <artwork><![CDATA[
   struct {
       KeyShareEntry client_shares<0..2^16-1>;
   } KeyShareClientHello;
]]></artwork>
          <dl>
            <dt>client_shares:</dt>
            <dd>
              <t>A list of offered KeyShareEntry values in descending order of client preference.</t>
            </dd>
          </dl>
          <t>This list MAY be empty if the client is requesting a HelloRetryRequest.
Each KeyShareEntry value MUST correspond to a group offered in the
"supported_groups" extension and MUST appear in the same order.  However, the
values MAY be a non-contiguous subset of the "supported_groups" extension and
MAY omit the most preferred groups. Such a situation could arise if the most
preferred groups are new and unlikely to be supported in enough places to
make pregenerating key shares for them efficient.</t>
          <t>Clients can offer as many KeyShareEntry values as the number of supported
groups it is offering, each
representing a single set of key exchange parameters. For instance, a
client might offer shares for several elliptic curves or multiple
FFDHE groups.  The key_exchange values for each KeyShareEntry MUST be
generated independently.  Clients MUST NOT offer multiple
KeyShareEntry values for the same group.  Clients MUST NOT offer any
KeyShareEntry values for groups not listed in the client's
"supported_groups" extension.  Servers MAY check for violations of
these rules and abort the handshake with an "illegal_parameter" alert
if one is violated.</t>
          <t>In a HelloRetryRequest message, the "extension_data" field of this
extension contains a KeyShareHelloRetryRequest value:</t>
          <artwork><![CDATA[
   struct {
       NamedGroup selected_group;
   } KeyShareHelloRetryRequest;
]]></artwork>
          <dl>
            <dt>selected_group:</dt>
            <dd>
              <t>The mutually supported group the server intends to negotiate and
is requesting a retried ClientHello/KeyShare for.</t>
            </dd>
          </dl>
          <t>Upon receipt of this extension in a HelloRetryRequest, the client MUST
verify that (1) the selected_group field corresponds to a group which was provided
in the "supported_groups" extension in the original ClientHello and (2)
the selected_group field does not correspond to a group which was
provided in the "key_share" extension in the original ClientHello. If either of
these checks fails, then the client MUST abort the handshake with an
"illegal_parameter" alert.  Otherwise, when sending the new ClientHello, the
client MUST replace the original "key_share" extension with one
containing only a new KeyShareEntry for the group indicated in the
selected_group field of the triggering HelloRetryRequest.</t>
          <t>In a ServerHello message, the "extension_data" field of this
extension contains a KeyShareServerHello value:</t>
          <artwork><![CDATA[
   struct {
       KeyShareEntry server_share;
   } KeyShareServerHello;
]]></artwork>
          <dl>
            <dt>server_share:</dt>
            <dd>
              <t>A single KeyShareEntry value that is in the same group as one of the
client's shares.</t>
            </dd>
          </dl>
          <t>If using (EC)DHE key establishment, servers offer exactly one
KeyShareEntry in the ServerHello. This value MUST be in the same group
as the KeyShareEntry value offered
by the client that the server has selected for the negotiated key exchange.
Servers MUST NOT send a KeyShareEntry for any group not
indicated in the client's "supported_groups" extension and
MUST NOT send a KeyShareEntry when using the "psk_ke" PskKeyExchangeMode.
If using (EC)DHE key establishment and a HelloRetryRequest containing a
"key_share" extension was received by the client, the client MUST verify that the
selected NamedGroup in the ServerHello is the same as that in the HelloRetryRequest.
If this check fails, the client MUST abort the handshake with an "illegal_parameter"
alert.</t>
          <section anchor="ffdhe-param">
            <name>Diffie-Hellman Parameters</name>
            <t>Diffie-Hellman <xref target="DH76"/> parameters for both clients and servers are encoded in
the opaque key_exchange field of a KeyShareEntry in a KeyShare structure.
The opaque value contains the
Diffie-Hellman public value (Y = g^X mod p) for the specified group
(see <xref target="RFC7919"/> for group definitions)
encoded as a big-endian integer and padded to the left with zeros to the size of p in
bytes.</t>
            <t>Note: For a given Diffie-Hellman group, the padding results in all public keys
having the same length.</t>
            <t>Peers MUST validate each other's public key Y by ensuring that 1 &lt; Y
&lt; p-1. This check ensures that the remote peer is properly behaved and
isn't forcing the local system into a small subgroup.</t>
          </section>
          <section anchor="ecdhe-param">
            <name>ECDHE Parameters</name>
            <t>ECDHE parameters for both clients and servers are encoded in the
opaque key_exchange field of a KeyShareEntry in a KeyShare structure.</t>
            <t>For secp256r1, secp384r1, and secp521r1, the contents are the serialized
value of the following struct:</t>
            <artwork><![CDATA[
   struct {
       uint8 legacy_form = 4;
       opaque X[coordinate_length];
       opaque Y[coordinate_length];
   } UncompressedPointRepresentation;
]]></artwork>
            <t>X and Y, respectively, are the binary representations of the x and y
values in network byte order.  There are no internal length markers,
so each number representation occupies as many octets as implied by
the curve parameters.  For P-256, this means that each of X and Y use
32 octets, padded on the left by zeros if necessary.  For P-384, they
take 48 octets each. For P-521, they take 66 octets each.</t>
            <t>For the curves secp256r1, secp384r1, and secp521r1,
peers MUST validate each other's public value Q by ensuring
that the point is a valid point on the elliptic curve.
The appropriate validation procedures are defined in Appendix D.1 of <xref target="ECDP"/>
and alternatively in Section 5.6.2.3 of <xref target="KEYAGREEMENT"/>.
This process consists of three
steps: (1) verify that Q is not the point at infinity (O), (2) verify
that for Q = (x, y) both integers x and y are in the correct interval, and (3)
ensure that (x, y) is a correct solution to the elliptic curve
equation.  For these curves, implementors do not need to verify
membership in the correct subgroup.</t>
            <t>For X25519 and X448, the contents of the public value is the K_A
or K_B value described in Section 6 of <xref target="RFC7748"/>.
This is 32 bytes for X25519 and 56 bytes for X448.</t>
            <t>Note: Versions of TLS prior to 1.3 permitted point format negotiation;
TLS 1.3 removes this feature in favor of a single point format
for each curve.</t>
          </section>
        </section>
        <section anchor="pre-shared-key-exchange-modes">
          <name>Pre-Shared Key Exchange Modes</name>
          <t>In order to use PSKs, clients MUST also send a "psk_key_exchange_modes"
extension. The semantics of this extension are that the client only
supports the use of PSKs with these modes, which restricts both the
use of PSKs offered in this ClientHello and those which the server
might supply via NewSessionTicket.</t>
          <t>A client MUST provide a "psk_key_exchange_modes" extension if it offers
a "pre_shared_key" extension. If clients offer "pre_shared_key" without
a "psk_key_exchange_modes" extension, servers MUST abort the handshake.
Servers MUST NOT select a key exchange mode that is not listed by the
client. This extension also restricts the modes for use with PSK resumption.
Servers SHOULD NOT send NewSessionTicket with tickets that are not
compatible with the advertised modes; however, if a server does so, the impact
will just be that the client's attempts at resumption fail.</t>
          <t>The server MUST NOT send a "psk_key_exchange_modes" extension.</t>
          <artwork><![CDATA[
   enum { psk_ke(0), psk_dhe_ke(1), (255) } PskKeyExchangeMode;

   struct {
       PskKeyExchangeMode ke_modes<1..255>;
   } PskKeyExchangeModes;
]]></artwork>
          <dl>
            <dt>psk_ke:</dt>
            <dd>
              <t>PSK-only key establishment. In this mode, the server MUST NOT
supply a "key_share" value.</t>
            </dd>
            <dt>psk_dhe_ke:</dt>
            <dd>
              <t>PSK with (EC)DHE key establishment. In this mode,
the client and server MUST supply "key_share" values as described
in <xref target="key-share"/>.</t>
            </dd>
          </dl>
          <t>Any future values that are allocated must ensure that the transmitted
protocol messages unambiguously identify which mode was selected by
the server; at present, this is indicated by the presence of the "key_share"
in the ServerHello.</t>
        </section>
        <section anchor="early-data-indication">
          <name>Early Data Indication</name>
          <t>When a PSK is used and early data is allowed for that PSK
(see for instance <xref target="ticket-establishment"/>), the client can send Application Data
in its first flight of messages. If the client opts to do so, it MUST
supply both the "pre_shared_key" and "early_data" extensions.</t>
          <t>The "extension_data" field of this extension contains an
"EarlyDataIndication" value.</t>
          <artwork><![CDATA[
   struct {} Empty;

   struct {
       select (Handshake.msg_type) {
           case new_session_ticket:   uint32 max_early_data_size;
           case client_hello:         Empty;
           case encrypted_extensions: Empty;
       };
   } EarlyDataIndication;
]]></artwork>
          <t>See <xref target="NSTMessage"/> for details regarding the use of the max_early_data_size field.</t>
          <t>The parameters for the 0-RTT data (version, symmetric cipher suite,
Application-Layer Protocol Negotiation (ALPN) <xref target="RFC7301"/> protocol,
etc.) are those associated with the PSK in use.
For externally provisioned PSKs, the associated values are those
provisioned along with the key.  For PSKs established via a NewSessionTicket
message, the associated values are those which were negotiated in the connection
which established the PSK. The PSK used to encrypt the early data
MUST be the first PSK listed in the client's "pre_shared_key" extension.</t>
          <t>For PSKs provisioned via NewSessionTicket, a server MUST validate that
the ticket age for the selected PSK identity (computed by subtracting
ticket_age_add from PskIdentity.obfuscated_ticket_age modulo 2^32)
is within a small tolerance of the
time since the ticket was issued (see <xref target="anti-replay"/>).  If it is not,
the server SHOULD proceed with the handshake but reject 0-RTT, and
SHOULD NOT take any other action that assumes that this ClientHello is
fresh.</t>
          <t>0-RTT messages sent in the first flight have the same (encrypted) content types
as messages of the same type sent in other flights (handshake and
application_data) but are protected under
different keys.  After receiving the server's Finished message, if the
server has accepted early data, an EndOfEarlyData message
will be sent to indicate the key change. This message will be encrypted
with the 0-RTT traffic keys.</t>
          <t>A server which receives an "early_data" extension
MUST behave in one of three ways:</t>
          <ul spacing="normal">
            <li>Ignore the extension and return a regular 1-RTT response.  The server then
skips past early data by attempting to deprotect received records using the handshake traffic
key, discarding records which fail deprotection (up to the configured max_early_data_size).
Once a record is deprotected
successfully, it is treated as the start of the client's second flight
and the server proceeds as with an ordinary 1-RTT handshake.</li>
            <li>Request that the client send another ClientHello by responding with a
HelloRetryRequest.  A client MUST NOT include the "early_data" extension in
its followup ClientHello.  The server then ignores early data by skipping
all records with an external content type of "application_data" (indicating
that they are encrypted), up to the configured max_early_data_size.</li>
            <li>Return its own "early_data" extension in EncryptedExtensions,
indicating that it intends to
process the early data. It is not possible for the server
to accept only a subset of the early data messages.
Even though the server sends a message accepting early data, the actual early
data itself may already be in flight by the time the server generates this message.</li>
          </ul>
          <t>In order to accept early data, the server MUST have selected the first
key offered in the client's "pre_shared_key" extension. In addition,
it MUST verify that the following values are the same as those
associated with the selected PSK:</t>
          <ul spacing="normal">
            <li>The selected TLS version number</li>
            <li>The selected cipher suite</li>
            <li>The selected ALPN <xref target="RFC7301"/> protocol, if any</li>
          </ul>
          <t>These requirements are a superset of those needed to perform a 1-RTT
handshake using the PSK in question.</t>
          <t>Future extensions MUST define their interaction with 0-RTT.</t>
          <t>If any of these checks fail, the server MUST NOT respond
with the extension and must discard all the first-flight
data using one of the first two mechanisms listed above
(thus falling back to 1-RTT or 2-RTT). If the client attempts
a 0-RTT handshake but the server rejects it, the server will generally
not have the 0-RTT record protection keys and must instead
use trial decryption (either with the 1-RTT handshake keys or
by looking for a cleartext ClientHello in the case of a HelloRetryRequest) to
find the first non-0-RTT message.</t>
          <t>If the server chooses to accept the "early_data" extension,
then it MUST comply with the same error-handling requirements
specified for all records when processing early data records.
Specifically, if the server fails to decrypt a 0-RTT record following
an accepted "early_data" extension, it MUST terminate the connection
with a "bad_record_mac" alert as per <xref target="record-payload-protection"/>.</t>
          <t>If the server rejects the "early_data" extension, the client
application MAY opt to retransmit the Application Data previously
sent in early data once the handshake has
been completed.  Note that automatic retransmission of early data
could result in incorrect assumptions regarding the status of the connection. For instance, when the negotiated connection selects a
different ALPN protocol from what was used for the early data, an
application might need to construct different messages.  Similarly, if
early data assumes anything about the connection state, it might be
sent in error after the handshake completes.</t>
          <t>A TLS implementation SHOULD NOT automatically resend early data;
applications are in a better position to decide when retransmission
is appropriate. A TLS implementation MUST NOT automatically resend
early data unless the negotiated connection selects the same ALPN
protocol.</t>
        </section>
        <section anchor="pre-shared-key-extension">
          <name>Pre-Shared Key Extension</name>
          <t>The "pre_shared_key" extension is used to negotiate the identity of the
pre-shared key to be used with a given handshake in association
with PSK key establishment.</t>
          <t>The "extension_data" field of this extension contains a
"PreSharedKeyExtension" value:</t>
          <artwork><![CDATA[
   struct {
       opaque identity<1..2^16-1>;
       uint32 obfuscated_ticket_age;
   } PskIdentity;

   opaque PskBinderEntry<32..255>;

   struct {
       PskIdentity identities<7..2^16-1>;
       PskBinderEntry binders<33..2^16-1>;
   } OfferedPsks;

   struct {
       select (Handshake.msg_type) {
           case client_hello: OfferedPsks;
           case server_hello: uint16 selected_identity;
       };
   } PreSharedKeyExtension;
]]></artwork>
          <dl>
            <dt>identity:</dt>
            <dd>
              <t>A label for a key. For instance, a ticket (as defined
in <xref target="ticket-establishment"/>) or a label for a pre-shared key
established externally.</t>
            </dd>
            <dt>obfuscated_ticket_age:</dt>
            <dd>
              <t>An obfuscated version of the age of the key.
<xref target="ticket-age"/> describes how to form this value
for identities established via the NewSessionTicket message.
For identities established externally, an obfuscated_ticket_age of 0
SHOULD be used, and servers MUST ignore the value.</t>
            </dd>
            <dt>identities:</dt>
            <dd>
              <t>A list of the identities that the client is willing
to negotiate with the server. If sent alongside the "early_data"
extension (see <xref target="early-data-indication"/>), the first identity is the
one used for 0-RTT data.</t>
            </dd>
            <dt>binders:</dt>
            <dd>
              <t>A series of HMAC values, one for
each value in the identities list and in the same
order, computed as described below.</t>
            </dd>
            <dt>selected_identity:</dt>
            <dd>
              <t>The server's chosen identity expressed as a (0-based) index into
the identities in the client's "OfferedPsks.identities" list.</t>
            </dd>
          </dl>
          <t>Each PSK is associated with a single Hash algorithm. For PSKs established
via the ticket mechanism (<xref target="NSTMessage"/>), this is the KDF Hash algorithm
on the connection where the ticket was established.
For externally established PSKs, the Hash algorithm MUST be set when the
PSK is established or default to SHA-256 if no such algorithm
is defined. The server MUST ensure that it selects a compatible
PSK (if any) and cipher suite.</t>
          <t>In TLS versions prior to TLS 1.3, the Server Name Indication (SNI) value was
intended to be associated with the session (Section 3 of <xref target="RFC6066"/>), with the
server being required to enforce that the SNI value associated with the session
matches the one specified in the resumption handshake.  However, in reality the
implementations were not consistent on which of two supplied SNI values they
would use, leading to the consistency requirement being de facto enforced by the
clients.  In TLS 1.3, the SNI value is always explicitly specified in the
resumption handshake, and there is no need for the server to associate an SNI value with the
ticket. Clients, however, SHOULD store the SNI with the PSK to fulfill
the requirements of <xref target="NSTMessage"/>.</t>
          <t>Implementor's note: When session resumption is the primary use case of PSKs,
the most straightforward way to implement the
PSK/cipher suite matching requirements is to negotiate the cipher
suite first and then exclude any incompatible PSKs. Any unknown PSKs
(e.g., ones not in the PSK database or encrypted with an
unknown key) SHOULD simply be ignored. If no acceptable PSKs are
found, the server SHOULD perform a non-PSK handshake if possible.
If backward compatibility is important, client-provided, externally
established PSKs SHOULD influence cipher suite selection.</t>
          <t>Prior to accepting PSK key establishment, the server MUST validate the
corresponding binder value (see <xref target="psk-binder"/> below). If this value is
not present or does not validate, the server MUST abort the handshake.
Servers SHOULD NOT attempt to validate multiple binders; rather, they
SHOULD select a single PSK and validate solely the binder that
corresponds to that PSK.
See <xref target="client-hello-recording"/> and <xref target="psk-identity-exposure"/> for the
security rationale for this requirement.
In order to accept PSK key establishment, the
server sends a "pre_shared_key" extension indicating the selected
identity.</t>
          <t>Clients MUST verify that the server's selected_identity is within the
range supplied by the client, that the server selected a cipher suite
indicating a Hash associated with the PSK, and that a server
"key_share" extension is present if required by the
ClientHello "psk_key_exchange_modes" extension. If these values are not
consistent, the client MUST abort the handshake with an
"illegal_parameter" alert.</t>
          <t>If the server supplies an "early_data" extension, the client MUST
verify that the server's selected_identity is 0. If any
other value is returned, the client MUST abort the handshake
with an "illegal_parameter" alert.</t>
          <t>The "pre_shared_key" extension MUST be the last extension in the
ClientHello (this facilitates implementation as described
below). Servers MUST check that it is the last extension and otherwise
fail the handshake with an "illegal_parameter" alert.</t>
          <section anchor="ticket-age">
            <name>Ticket Age</name>
            <t>The client's view of the age of a ticket is the time since the receipt
of the NewSessionTicket message. Clients MUST NOT attempt to use
tickets which have ages greater than the "ticket_lifetime" value which
was provided with the ticket. The "obfuscated_ticket_age" field of
each PskIdentity contains an obfuscated version of the ticket age
formed by taking the age in milliseconds and adding the "ticket_age_add"
value that was included with the ticket (see <xref target="NSTMessage"/>), modulo 2^32.
This addition prevents passive observers from correlating connections
unless tickets or key shares are reused. Note that the "ticket_lifetime" field in
the NewSessionTicket message is in seconds but the "obfuscated_ticket_age"
is in milliseconds. Because ticket lifetimes are
restricted to a week, 32 bits is enough to represent any plausible
age, even in milliseconds.</t>
          </section>
          <section anchor="psk-binder">
            <name>PSK Binder</name>
            <t>The PSK binder value forms a binding between a PSK and the current
handshake, as well as a binding between the handshake in which the PSK was
generated (if via a NewSessionTicket message) and the current handshake.
Each entry in the binders list is computed as an HMAC
over a transcript hash (see <xref target="the-transcript-hash"/>) containing a partial ClientHello
up to and including the PreSharedKeyExtension.identities field. That
is, it includes all of the ClientHello but not the binders list
itself. The length fields for the message (including the overall
length, the length of the extensions block, and the length of the
"pre_shared_key" extension) are all set as if binders of the correct
lengths were present.</t>
            <t>The PskBinderEntry is computed in the same way as the Finished
message (<xref target="finished"/>) but with the BaseKey being the binder_key
derived via the key schedule from the corresponding PSK which
is being offered (see <xref target="key-schedule"/>).</t>
            <t>If the handshake includes a HelloRetryRequest, the initial ClientHello
and HelloRetryRequest are included in the transcript along with the
new ClientHello.  For instance, if the client sends ClientHello1, its
binder will be computed over:</t>
            <artwork><![CDATA[
   Transcript-Hash(Truncate(ClientHello1))
]]></artwork>
            <t>Where Truncate() removes the binders list from the ClientHello.
Note that this hash will be computed using the hash associated with
the PSK, as the client does not know which cipher suite the server
will select.</t>
            <t>If the server responds with a HelloRetryRequest and the client then sends
ClientHello2, its binder will be computed over:</t>
            <artwork><![CDATA[
   Transcript-Hash(ClientHello1,
                   HelloRetryRequest,
                   Truncate(ClientHello2))
]]></artwork>
            <t>The full ClientHello1/ClientHello2 is included in all other handshake hash computations.
Note that in the first flight, Truncate(ClientHello1) is hashed directly,
but in the second flight, ClientHello1 is hashed and then reinjected as a
"message_hash" message, as described in <xref target="the-transcript-hash"/>.
Note that the "message_hash" will be hashed with the negotiated function,
which may or may match the hash associated with the PSK. This is
consistent with how the transcript is calculated for the rest
of the handshake.</t>
          </section>
          <section anchor="processing-order">
            <name>Processing Order</name>
            <t>Clients are permitted to "stream" 0-RTT data until they
receive the server's Finished, only then sending the EndOfEarlyData
message, followed by the rest of the handshake.
In order to avoid deadlocks, when accepting "early_data",
servers MUST process the client's ClientHello and then immediately
send their flight of messages, rather than waiting for the client's
EndOfEarlyData message before sending its ServerHello.</t>
          </section>
        </section>
      </section>
      <section anchor="server-parameters">
        <name>Server Parameters</name>
        <t>The next two messages from the server, EncryptedExtensions and
CertificateRequest, contain information from the server
that determines the rest of the handshake. These messages
are encrypted with keys derived from the server_handshake_traffic_secret.</t>
        <section anchor="encrypted-extensions">
          <name>Encrypted Extensions</name>
          <t>In all handshakes, the server MUST send the
EncryptedExtensions message immediately after the
ServerHello message. This is the first message that is encrypted
under keys derived from the server_handshake_traffic_secret.</t>
          <t>The EncryptedExtensions message contains extensions
that can be protected, i.e., any which are not needed to
establish the cryptographic context but which are not
associated with individual certificates. The client
MUST check EncryptedExtensions for the presence of any forbidden
extensions and if any are found MUST abort the handshake with an
"illegal_parameter" alert.</t>
          <t>Structure of this message:</t>
          <artwork><![CDATA[
   struct {
       Extension extensions<0..2^16-1>;
   } EncryptedExtensions;
]]></artwork>
          <dl>
            <dt>extensions:</dt>
            <dd>
              <t>A list of extensions. For more information, see the table in <xref target="extensions"/>.</t>
            </dd>
          </dl>
        </section>
        <section anchor="certificate-request">
          <name>Certificate Request</name>
          <t>A server which is authenticating with a certificate MAY optionally
request a certificate from the client. This message, if sent, MUST
follow EncryptedExtensions.</t>
          <t>Structure of this message:</t>
          <artwork><![CDATA[
   struct {
       opaque certificate_request_context<0..2^8-1>;
       Extension extensions<0..2^16-1>;
   } CertificateRequest;
]]></artwork>
          <dl>
            <dt>certificate_request_context:</dt>
            <dd>
              <t>An opaque string which identifies the certificate request and
which will be echoed in the client's Certificate message. The
certificate_request_context MUST be unique within the scope
of this connection (thus preventing replay of client
CertificateVerify messages). This field SHALL be zero length
unless used for the post-handshake authentication exchanges
described in <xref target="post-handshake-authentication"/>.
When requesting post-handshake authentication, the server SHOULD
make the context unpredictable to the client (e.g., by
randomly generating it) in order to prevent an attacker who
has temporary access to the client's private key from
pre-computing valid CertificateVerify messages.</t>
            </dd>
            <dt>extensions:</dt>
            <dd>
              <t>A list of extensions describing the parameters of the
certificate being requested. The "signature_algorithms"
extension MUST be specified, and other extensions may optionally be
included if defined for this message.
Clients MUST ignore unrecognized extensions.</t>
            </dd>
          </dl>
          <t>In prior versions of TLS, the CertificateRequest message
carried a list of signature algorithms and certificate authorities
which the server would accept. In TLS 1.3, the former is expressed
by sending the "signature_algorithms" and optionally "signature_algorithms_cert"
extensions. The latter is
expressed by sending the "certificate_authorities" extension
(see <xref target="certificate-authorities"/>).</t>
          <t>Servers which are authenticating with a resumption PSK MUST NOT send the
CertificateRequest message in the main handshake, though they
MAY send it in post-handshake authentication (see <xref target="post-handshake-authentication"/>)
provided that the client has sent the "post_handshake_auth"
extension (see <xref target="post_handshake_auth"/>).
In the absence of some other specification to the contrary,
servers which are authenticating with an external PSK
MUST NOT send the CertificateRequest message either in the main handshake
or request post-handshake authentication.
<xref target="RFC8773"/> provides an extension to permit this,
but has not received the level of analysis as this specification.</t>
        </section>
      </section>
      <section anchor="authentication-messages">
        <name>Authentication Messages</name>
        <t>As discussed in <xref target="protocol-overview"/>, TLS generally uses a common
set of messages for authentication, key confirmation, and handshake
integrity: Certificate, CertificateVerify, and Finished.
(The PSK binders also perform key confirmation, in a
similar fashion.) These three
messages are always sent as the last messages in their handshake
flight. The Certificate and CertificateVerify messages are only
sent under certain circumstances, as defined below. The Finished
message is always sent as part of the Authentication Block.
These messages are encrypted under keys derived from the
[sender]_handshake_traffic_secret.</t>
        <t>The computations for the Authentication messages all uniformly
take the following inputs:</t>
        <ul spacing="normal">
          <li>The certificate and signing key to be used.</li>
          <li>A Handshake Context consisting of the list of messages to be
included in the transcript hash.</li>
          <li>A Base Key to be used to compute a MAC key.</li>
        </ul>
        <t>Based on these inputs, the messages then contain:</t>
        <dl>
          <dt>Certificate</dt>
          <dd>
            <t>The certificate to be used for authentication, and any
supporting certificates in the chain. Note that certificate-based
client authentication is not available in PSK handshake flows
(including 0-RTT).</t>
          </dd>
          <dt>CertificateVerify:</dt>
          <dd>
            <t>A signature over the value Transcript-Hash(Handshake Context, Certificate)</t>
          </dd>
          <dt>Finished:</dt>
          <dd>
            <t>A MAC over the value Transcript-Hash(Handshake Context, Certificate, CertificateVerify)
using a MAC key derived from the Base Key.</t>
          </dd>
        </dl>
        <t>The following table defines the Handshake Context and MAC Base Key
for each scenario:</t>
        <table anchor="hs-ctx-and-keys">
          <name>Authentication Inputs</name>
          <thead>
            <tr>
              <th align="left">Mode</th>
              <th align="left">Handshake Context</th>
              <th align="left">Base Key</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Server</td>
              <td align="left">ClientHello ... later of EncryptedExtensions/CertificateRequest</td>
              <td align="left">server_handshake_traffic_secret</td>
            </tr>
            <tr>
              <td align="left">Client</td>
              <td align="left">ClientHello ... later of server Finished/EndOfEarlyData</td>
              <td align="left">client_handshake_traffic_secret</td>
            </tr>
            <tr>
              <td align="left">Post-Handshake</td>
              <td align="left">ClientHello ... client Finished + CertificateRequest</td>
              <td align="left">client_application_traffic_secret_N</td>
            </tr>
          </tbody>
        </table>
        <section anchor="the-transcript-hash">
          <name>The Transcript Hash</name>
          <t>Many of the cryptographic computations in TLS make use of a transcript
hash. This value is computed by hashing the concatenation of
each included handshake message, including the handshake
message header carrying the handshake message type and length fields,
but not including record layer headers. I.e.,</t>
          <artwork><![CDATA[
 Transcript-Hash(M1, M2, ... Mn) = Hash(M1 || M2 || ... || Mn)
]]></artwork>
          <t>As an exception to this general rule, when the server responds to a
ClientHello with a HelloRetryRequest, the value of ClientHello1 is
replaced with a special synthetic handshake message of handshake
type "message_hash" containing Hash(ClientHello1). I.e.,</t>
          <artwork><![CDATA[
 Transcript-Hash(ClientHello1, HelloRetryRequest, ... Mn) =
     Hash(message_hash ||        /* Handshake type */
          00 00 Hash.length  ||   /* Handshake message length (bytes) */
          Hash(ClientHello1) ||  /* Hash of ClientHello1 */
          HelloRetryRequest  || ... || Mn)
]]></artwork>
          <t>The reason for this construction is to allow the server to do a
stateless HelloRetryRequest by storing just the hash of ClientHello1
in the cookie, rather than requiring it to export the entire intermediate
hash state (see <xref target="cookie"/>).</t>
          <t>For concreteness, the transcript hash is always taken from the
following sequence of handshake messages, starting at the first
ClientHello and including only those messages that were sent:
ClientHello, HelloRetryRequest, ClientHello, ServerHello,
EncryptedExtensions, server CertificateRequest, server Certificate,
server CertificateVerify, server Finished, EndOfEarlyData, client
Certificate, client CertificateVerify, client Finished.</t>
          <t>In general, implementations can implement the transcript by keeping a
running transcript hash value based on the negotiated hash. Note,
however, that subsequent post-handshake authentications do not include
each other, just the messages through the end of the main handshake.</t>
        </section>
        <section anchor="certificate">
          <name>Certificate</name>
          <t>This message conveys the endpoint's certificate chain to the peer.</t>
          <t>The server MUST send a Certificate message whenever the agreed-upon
key exchange method uses certificates for authentication (this
includes all key exchange methods defined in this document except PSK).</t>
          <t>The client MUST send a Certificate message if and only if the server has
requested certificate-based client authentication via a CertificateRequest message
(<xref target="certificate-request"/>). If the server requests certificate-based client authentication
but no suitable certificate is available, the client
MUST send a Certificate message containing no certificates (i.e., with
the "certificate_list" field having length 0).  A Finished message MUST
be sent regardless of whether the Certificate message is empty.</t>
          <t>Structure of this message:</t>
          <artwork><![CDATA[
   enum {
       X509(0),
       RawPublicKey(2),
       (255)
   } CertificateType;

   struct {
       select (certificate_type) {
           case RawPublicKey:
             /* From RFC 7250 ASN.1_subjectPublicKeyInfo */
             opaque ASN1_subjectPublicKeyInfo<1..2^24-1>;

           case X509:
             opaque cert_data<1..2^24-1>;
       };
       Extension extensions<0..2^16-1>;
   } CertificateEntry;

   struct {
       opaque certificate_request_context<0..2^8-1>;
       CertificateEntry certificate_list<0..2^24-1>;
   } Certificate;
]]></artwork>
          <dl>
            <dt>certificate_request_context:</dt>
            <dd>
              <t>If this message is in response to a CertificateRequest, the
value of certificate_request_context in that message. Otherwise
(in the case of server authentication), this field SHALL be zero length.</t>
            </dd>
            <dt>certificate_list:</dt>
            <dd>
              <t>A list (chain) of CertificateEntry structures, each
containing a single certificate and list of extensions.</t>
            </dd>
            <dt>extensions:</dt>
            <dd>
              <t>A list of extension values for the CertificateEntry. The "Extension"
format is defined in <xref target="extensions"/>. Valid extensions for server certificates
at present include the OCSP Status extension <xref target="RFC6066"/> and the
SignedCertificateTimestamp extension <xref target="RFC6962"/>; future extensions may
be defined for this message as well. Extensions in the Certificate
message from the server MUST correspond to ones from the ClientHello message.
Extensions in the Certificate message from the client MUST correspond to
extensions in the CertificateRequest message from the server.
If an extension applies to the entire chain, it SHOULD be included
in the first CertificateEntry.</t>
            </dd>
          </dl>
          <t>If the corresponding certificate type extension
("server_certificate_type" or "client_certificate_type") was not negotiated
in EncryptedExtensions, or the X.509 certificate type was negotiated, then each
CertificateEntry contains a DER-encoded X.509 certificate. The sender's
certificate MUST come in the first CertificateEntry in the list.  Each
following certificate SHOULD directly certify the one immediately preceding it.
Because certificate validation requires that trust anchors be
distributed independently, a certificate that specifies a trust anchor
MAY be omitted from the chain, provided that supported peers are known
to possess any omitted certificates.</t>
          <t>Note: Prior to TLS 1.3, "certificate_list" ordering required each certificate
to certify the one immediately preceding it;
however, some implementations allowed some flexibility. Servers sometimes send
both a current and deprecated intermediate for transitional purposes, and others
are simply configured incorrectly, but these cases can nonetheless be validated
properly. For maximum compatibility, all implementations SHOULD be prepared to
handle potentially extraneous certificates and arbitrary orderings from any TLS
version, with the exception of the end-entity certificate which MUST be first.</t>
          <t>If the RawPublicKey certificate type was negotiated, then the
certificate_list MUST contain no more than one CertificateEntry, which
contains an ASN1_subjectPublicKeyInfo value as defined in <xref target="RFC7250"/>,
Section 3.</t>
          <t>The OpenPGP certificate type <xref target="RFC6091"/> MUST NOT be used with TLS 1.3.</t>
          <t>The server's certificate_list MUST always be non-empty. A client will
send an empty certificate_list if it does not have an appropriate
certificate to send in response to the server's authentication
request.</t>
          <section anchor="ocsp-and-sct">
            <name>OCSP Status and SCT Extensions</name>
            <t><xref target="RFC6066"/> and <xref target="RFC6961"/> provide extensions to negotiate the server
sending OCSP responses to the client. In TLS 1.2 and below, the
server replies with an empty extension to indicate negotiation of this
extension and the OCSP information is carried in a CertificateStatus
message. In TLS 1.3, the server's OCSP information is carried in
an extension in the CertificateEntry containing the associated
certificate. Specifically, the body of the "status_request" extension
from the server MUST be a CertificateStatus structure as defined
in <xref target="RFC6066"/>, which is interpreted as defined in <xref target="RFC6960"/>.</t>
            <t>Note: The status_request_v2 extension <xref target="RFC6961"/> is deprecated. TLS 1.3 servers
MUST NOT act upon its presence or information in it when processing ClientHello messages; in particular, they MUST NOT send the status_request_v2 extension in the
EncryptedExtensions, CertificateRequest, or Certificate messages.
TLS 1.3 servers MUST be able to process ClientHello messages that include it,
as it MAY be sent by clients that wish to use it in earlier protocol versions.</t>
            <t>A server MAY request that a client present an OCSP response with its
certificate by sending an empty "status_request" extension in its
CertificateRequest message. If the client opts to send an OCSP response, the
body of its "status_request" extension MUST be a CertificateStatus structure as
defined in <xref target="RFC6066"/>.</t>
            <t>Similarly, <xref target="RFC6962"/> provides a mechanism for a server to send a
Signed Certificate Timestamp (SCT) as an extension in the ServerHello
in TLS 1.2 and below.
In TLS 1.3, the server's SCT information is carried in an extension in the
CertificateEntry.</t>
          </section>
          <section anchor="server-certificate-selection">
            <name>Server Certificate Selection</name>
            <t>The following rules apply to the certificates sent by the server:</t>
            <ul spacing="normal">
              <li>The certificate type MUST be X.509v3 <xref target="RFC5280"/>, unless explicitly negotiated
otherwise (e.g., <xref target="RFC7250"/>).</li>
              <li>The end-entity certificate MUST allow the key to be used for signing with
a signature scheme indicated in the client's "signature_algorithms"
extension (see <xref target="signature-algorithms"/>). That is, the digitalSignature bit
MUST be set if the Key Usage extension is present, and the public key (with
associated restrictions) MUST be compatible with some supported signature
scheme.</li>
              <li>The "server_name" <xref target="RFC6066"/> and "certificate_authorities" extensions are used to
guide certificate selection. As servers MAY require the presence of the "server_name"
extension, clients SHOULD send this extension when the server is identified by name.</li>
            </ul>
            <t>All certificates provided by the server MUST be signed by a
signature algorithm advertised by the client, if it is able to provide such
a chain (see <xref target="signature-algorithms"/>).
Certificates that are self-signed
or certificates that are expected to be trust anchors are not validated as
part of the chain and therefore MAY be signed with any algorithm.</t>
            <t>If the server cannot produce a certificate chain that is signed only via the
indicated supported algorithms, then it SHOULD continue the handshake by sending
the client a certificate chain of its choice that may include algorithms
that are not known to be supported by the client.
This fallback chain SHOULD NOT use the deprecated SHA-1 hash algorithm in general,
but MAY do so if the client's advertisement permits it,
and MUST NOT do so otherwise.</t>
            <t>If the client cannot construct an acceptable chain using the provided
certificates and decides to abort the handshake, then it MUST abort the
handshake with an appropriate certificate-related alert (by default,
"unsupported_certificate"; see <xref target="error-alerts"/> for more information).</t>
            <t>If the server has multiple certificates, it chooses one of them based on the
above-mentioned criteria (in addition to other criteria, such as transport-layer endpoint, local configuration, and preferences).</t>
          </section>
          <section anchor="client-certificate-selection">
            <name>Client Certificate Selection</name>
            <t>The following rules apply to certificates sent by the client:</t>
            <ul spacing="normal">
              <li>The certificate type MUST be X.509v3 <xref target="RFC5280"/>, unless explicitly negotiated
otherwise (e.g., <xref target="RFC7250"/>).</li>
              <li>If the "certificate_authorities" extension in the CertificateRequest
message was present, at least one of the certificates in the certificate
chain SHOULD be issued by one of the listed CAs.</li>
              <li>The certificates MUST be signed using an acceptable signature
algorithm, as described in <xref target="certificate-request"/>.  Note that this
relaxes the constraints on certificate-signing algorithms found in
prior versions of TLS.</li>
              <li>If the CertificateRequest message contained a non-empty "oid_filters"
extension, the end-entity certificate MUST match the extension OIDs
that are recognized by the client, as described in <xref target="oid-filters"/>.</li>
            </ul>
          </section>
          <section anchor="receiving-a-certificate-message">
            <name>Receiving a Certificate Message</name>
            <t>In general, detailed certificate validation procedures are out of scope for
TLS (see <xref target="RFC5280"/>). This section provides TLS-specific requirements.</t>
            <t>If the server supplies an empty Certificate message, the client MUST abort
the handshake with a "decode_error" alert.</t>
            <t>If the client does not send any certificates (i.e., it sends an empty
Certificate message),
the server MAY at its discretion either continue the handshake without client
authentication, or abort the handshake with a "certificate_required" alert. Also, if some
aspect of the certificate chain was unacceptable (e.g., it was not signed by a
known, trusted CA), the server MAY at its discretion either continue the
handshake (considering the client unauthenticated) or abort the handshake.</t>
            <t>Any endpoint receiving any certificate which it would need to validate
using any signature algorithm using an MD5 hash MUST abort the
handshake with a "bad_certificate" alert.  SHA-1 is deprecated and it
is RECOMMENDED that any endpoint receiving any certificate which it
would need to validate using any signature algorithm using a SHA-1
hash abort the handshake with a "bad_certificate" alert. For clarity,
this means that endpoints can accept these algorithms for
certificates that are self-signed or are trust anchors.</t>
            <t>All endpoints are RECOMMENDED to transition to SHA-256 or better as soon
as possible to maintain interoperability with implementations
currently in the process of phasing out SHA-1 support.</t>
            <t>Note that a certificate containing a key for one signature algorithm
MAY be signed using a different signature algorithm (for instance,
an RSA key signed with an ECDSA key).</t>
          </section>
        </section>
        <section anchor="certificate-verify">
          <name>Certificate Verify</name>
          <t>This message is used to provide explicit proof that an endpoint
possesses the private key corresponding to its certificate.
The CertificateVerify message also provides integrity for the handshake up
to this point. Servers MUST send this message when authenticating via a certificate.
Clients MUST send this message whenever authenticating via a certificate (i.e., when
the Certificate message is non-empty). When sent, this message MUST appear immediately
after the Certificate message and immediately prior to the Finished message.</t>
          <t>Structure of this message:</t>
          <artwork><![CDATA[
   struct {
       SignatureScheme algorithm;
       opaque signature<0..2^16-1>;
   } CertificateVerify;
]]></artwork>
          <t>The algorithm field specifies the signature algorithm used (see
<xref target="signature-algorithms"/> for the definition of this type). The
signature is a digital signature using that algorithm. The
content that is covered under the signature is the hash output as described in
<xref target="the-transcript-hash"/>, namely:</t>
          <artwork><![CDATA[
   Transcript-Hash(Handshake Context, Certificate)
]]></artwork>
          <t>The digital signature is then computed over the concatenation of:</t>
          <ul spacing="normal">
            <li>A string that consists of octet 32 (0x20) repeated 64 times</li>
            <li>The context string (defined below)</li>
            <li>A single 0 byte which serves as the separator</li>
            <li>The content to be signed</li>
          </ul>
          <t>This structure is intended to prevent an attack on previous versions
of TLS in which the ServerKeyExchange format meant that
attackers could obtain a signature of a message with a chosen 32-byte
prefix (ClientHello.random). The initial 64-byte pad clears that prefix
along with the server-controlled ServerHello.random.</t>
          <t>The context string for a server signature is
"TLS 1.3, server CertificateVerify"
The context string for a client signature is
"TLS 1.3, client CertificateVerify"
It is used to provide separation between signatures made in different
contexts, helping against potential cross-protocol attacks.</t>
          <t>For example, if the transcript hash was 32 bytes of
01 (this length would make sense for SHA-256), the content covered by
the digital signature for a server CertificateVerify would be:</t>
          <artwork><![CDATA[
   2020202020202020202020202020202020202020202020202020202020202020
   2020202020202020202020202020202020202020202020202020202020202020
   544c5320312e332c207365727665722043657274696669636174655665726966
   79
   00
   0101010101010101010101010101010101010101010101010101010101010101
]]></artwork>
          <t>On the sender side, the process for computing the signature field of the
CertificateVerify message takes as input:</t>
          <ul spacing="normal">
            <li>The content covered by the digital signature</li>
            <li>The private signing key corresponding to the certificate sent in the
previous message</li>
          </ul>
          <t>If the CertificateVerify message is sent by a server, the signature
algorithm MUST be one offered in the client's "signature_algorithms" extension
unless no valid certificate chain can be produced without unsupported
algorithms (see <xref target="signature-algorithms"/>).</t>
          <t>If sent by a client, the signature algorithm used in the signature
MUST be one of those present in the supported_signature_algorithms
field of the "signature_algorithms" extension in the CertificateRequest message.</t>
          <t>In addition, the signature algorithm MUST be compatible with the key
in the sender's end-entity certificate. RSA signatures MUST use an
RSASSA-PSS algorithm, regardless of whether RSASSA-PKCS1-v1_5 algorithms
appear in "signature_algorithms". The SHA-1 algorithm MUST NOT be used
in any signatures of CertificateVerify messages.
All SHA-1 signature algorithms in this specification are defined solely
for use in legacy certificates and are not valid for CertificateVerify
signatures.</t>
          <t>The receiver of a CertificateVerify message MUST verify the signature field.
The verification process takes as input:</t>
          <ul spacing="normal">
            <li>The content covered by the digital signature</li>
            <li>The public key contained in the end-entity certificate found in the
associated Certificate message</li>
            <li>The digital signature received in the signature field of the
CertificateVerify message</li>
          </ul>
          <t>If the verification fails, the receiver MUST terminate the handshake
with a "decrypt_error" alert.</t>
        </section>
        <section anchor="finished">
          <name>Finished</name>
          <t>The Finished message is the final message in the Authentication
Block. It is essential for providing authentication of the handshake
and of the computed keys.</t>
          <t>Recipients of Finished messages MUST verify that the contents are
correct and if incorrect MUST terminate the connection
with a "decrypt_error" alert.</t>
          <t>Once a side has sent its Finished message and has received and
validated the Finished message from its peer, it may begin to send and
receive Application Data over the connection. There are two
settings in which it is permitted to send data prior to
receiving the peer's Finished:</t>
          <ol spacing="normal" type="1"><li>Clients sending 0-RTT data as described in <xref target="early-data-indication"/>.</li>
            <li>Servers MAY send data after sending their first flight, but
because the handshake is not yet complete, they have no assurance
of either the peer's identity or its liveness (i.e.,
the ClientHello might have been replayed).</li>
          </ol>
          <t>The key used to compute the Finished message is computed from the
Base Key defined in <xref target="authentication-messages"/> using HKDF (see
<xref target="key-schedule"/>). Specifically:</t>
          <artwork><![CDATA[
finished_key =
    HKDF-Expand-Label(BaseKey, "finished", "", Hash.length)
]]></artwork>
          <t>Structure of this message:</t>
          <artwork><![CDATA[
   struct {
       opaque verify_data[Hash.length];
   } Finished;
]]></artwork>
          <t>The verify_data value is computed as follows:</t>
          <artwork><![CDATA[
   verify_data =
       HMAC(finished_key,
            Transcript-Hash(Handshake Context,
                            Certificate*, CertificateVerify*))

   * Only included if present.
]]></artwork>
          <t>HMAC <xref target="RFC2104"/> uses the Hash algorithm for the handshake.
As noted above, the HMAC input can generally be implemented by a running
hash, i.e., just the handshake hash at this point.</t>
          <t>In previous versions of TLS, the verify_data was always 12 octets long. In
TLS 1.3, it is the size of the HMAC output for the Hash used for the handshake.</t>
          <t>Note: Alerts and any other non-handshake record types are not handshake messages
and are not included in the hash computations.</t>
          <t>Any records following a Finished message MUST be encrypted under the
appropriate application traffic key as described in <xref target="updating-traffic-keys"/>.
In particular, this includes any alerts sent by the
server in response to client Certificate and CertificateVerify messages.</t>
        </section>
      </section>
      <section anchor="end-of-early-data">
        <name>End of Early Data</name>
        <artwork><![CDATA[
   struct {} EndOfEarlyData;
]]></artwork>
        <t>If the server sent an "early_data" extension in EncryptedExtensions, the client MUST send an
EndOfEarlyData message after receiving the server Finished.  If the server does
not send an "early_data" extension in EncryptedExtensions, then the client MUST NOT send an
EndOfEarlyData message. This message indicates that all
0-RTT application_data messages, if any, have been transmitted and
that the following records are protected under handshake traffic keys.
Servers MUST NOT send this message, and clients receiving it
MUST terminate the connection with an "unexpected_message" alert.
This message is encrypted under keys derived from the client_early_traffic_secret.</t>
      </section>
      <section anchor="post-handshake-messages">
        <name>Post-Handshake Messages</name>
        <t>TLS also allows other messages to be sent after the main handshake.
These messages use a handshake content type and are encrypted under the
appropriate application traffic key.</t>
        <section anchor="NSTMessage">
          <name>New Session Ticket Message</name>
          <t>At any time after the server has received the client Finished message,
it MAY send a NewSessionTicket message. This message creates a unique
association between the ticket value and a secret PSK
derived from the resumption secret (see <xref target="cryptographic-computations"/>).</t>
          <t>The client MAY use this PSK for future handshakes by including the
ticket value in the "pre_shared_key" extension in its ClientHello
(<xref target="pre-shared-key-extension"/>).
Clients which receive a NewSessionTicket message but do
not support resumption MUST silently ignore this message.
Resumption MAY be done while the
original connection is still open. Servers MAY send multiple tickets on a
single connection, either immediately after each other or
after specific events (see <xref target="client-tracking"/>).
For instance, the server might send a new ticket after post-handshake
authentication in order to encapsulate the additional client
authentication state. Multiple tickets are useful for clients
for a variety of purposes, including:</t>
          <ul spacing="normal">
            <li>Opening multiple parallel HTTP connections.</li>
            <li>Performing connection racing across interfaces and address families
via (for example) Happy Eyeballs <xref target="RFC8305"/> or related techniques.</li>
          </ul>
          <t>Any ticket MUST only be resumed with a cipher suite that has the
same KDF hash algorithm as that used to establish the original connection.</t>
          <t>Clients MUST only resume if the new SNI value is valid for the server
certificate presented in the original session, and SHOULD only resume if
the SNI value matches the one used in the original session.  The latter
is a performance optimization: normally, there is no reason to expect
that different servers covered by a single certificate would be able to
accept each other's tickets; hence, attempting resumption in that case
would waste a single-use ticket.  If such an indication is provided
(externally or by any other means), clients MAY resume with a different
SNI value.</t>
          <t>On resumption, if reporting an SNI value to the calling application,
implementations MUST use the value sent in the resumption ClientHello rather
than the value sent in the previous session. Note that if a server
implementation declines all PSK identities with different SNI values, these two
values are always the same.</t>
          <t>Note: Although the resumption secret depends on the client's second
flight, a server which does not request certificate-based client authentication MAY compute
the remainder of the transcript independently and then send a
NewSessionTicket immediately upon sending its Finished rather than
waiting for the client Finished.  This might be appropriate in cases
where the client is expected to open multiple TLS connections in
parallel and would benefit from the reduced overhead of a resumption
handshake, for example.</t>
          <artwork><![CDATA[
   struct {
       uint32 ticket_lifetime;
       uint32 ticket_age_add;
       opaque ticket_nonce<0..255>;
       opaque ticket<1..2^16-1>;
       Extension extensions<0..2^16-1>;
   } NewSessionTicket;
]]></artwork>
          <dl>
            <dt>ticket_lifetime:</dt>
            <dd>
              <t>Indicates the lifetime in seconds as a 32-bit unsigned integer in
network byte order from the time of ticket issuance.
Servers MUST NOT use any value greater than 604800 seconds (7 days).
The value of zero indicates that the ticket should be discarded
immediately. Clients MUST NOT use tickets for longer than
7 days after issuance, regardless of the ticket_lifetime, and MAY delete tickets
earlier based on local policy. A server MAY treat a ticket as valid
for a shorter period of time than what is stated in the
ticket_lifetime.</t>
            </dd>
            <dt>ticket_age_add:</dt>
            <dd>
              <t>A securely generated, random 32-bit value that is used to obscure the age of
the ticket that the client includes in the "pre_shared_key" extension.
The client-side ticket age is added to this value modulo 2^32 to
obtain the value that is transmitted by the client.
The server MUST generate a fresh value for each ticket it sends.</t>
            </dd>
            <dt>ticket_nonce:</dt>
            <dd>
              <t>A per-ticket value that is unique across all tickets issued on this connection.</t>
            </dd>
            <dt>ticket:</dt>
            <dd>
              <t>The value of the ticket to be used as the PSK identity.
The ticket itself is an opaque label. It MAY be either a database
lookup key or a self-encrypted and self-authenticated value.</t>
            </dd>
            <dt>extensions:</dt>
            <dd>
              <t>A list of extension values for the ticket. The "Extension"
format is defined in <xref target="extensions"/>. Clients MUST ignore
unrecognized extensions.</t>
            </dd>
          </dl>
          <t>The sole extension currently defined for NewSessionTicket is
"early_data", indicating that the ticket may be used to send 0-RTT data
(<xref target="early-data-indication"/>). It contains the following value:</t>
          <dl>
            <dt>max_early_data_size:</dt>
            <dd>
              <t>The maximum amount of 0-RTT data that the client is allowed to send when using
this ticket, in bytes. Only Application Data payload (i.e., plaintext but
not padding or the inner content type byte) is counted. A server
receiving more than max_early_data_size bytes of 0-RTT data
SHOULD terminate the connection with an "unexpected_message" alert.
Note that servers that reject early data due to lack of cryptographic material
will be unable to differentiate padding from content, so clients SHOULD NOT
depend on being able to send large quantities of padding in early data records.</t>
            </dd>
          </dl>
          <t>The PSK associated with the ticket is computed as:</t>
          <artwork><![CDATA[
    HKDF-Expand-Label(resumption_secret,
                      "resumption", ticket_nonce, Hash.length)
]]></artwork>
          <t>Because the ticket_nonce value is distinct for each NewSessionTicket
message, a different PSK will be derived for each ticket.</t>
          <t>Note that in principle it is possible to continue issuing new tickets
which indefinitely extend the lifetime of the keying
material originally derived from an initial non-PSK handshake (which
was most likely tied to the peer's certificate). It is RECOMMENDED
that implementations place limits on the total lifetime of such keying
material; these limits should take into account the lifetime of the
peer's certificate, the likelihood of intervening revocation,
and the time since the peer's online CertificateVerify signature.</t>
        </section>
        <section anchor="post-handshake-authentication">
          <name>Post-Handshake Authentication</name>
          <t>When the client has sent the "post_handshake_auth" extension (see
<xref target="post_handshake_auth"/>), a server MAY request certificate-based client authentication at any time
after the handshake has completed by sending a CertificateRequest message. The
client MUST respond with the appropriate Authentication messages (see
<xref target="authentication-messages"/>). If the client chooses to authenticate, it MUST
send Certificate, CertificateVerify, and Finished. If it declines, it MUST send
a Certificate message containing no certificates followed by Finished.
All of the client's messages for a given response
MUST appear consecutively on the wire with no intervening messages of other types.</t>
          <t>A client that receives a CertificateRequest message without having sent
the "post_handshake_auth" extension MUST send an "unexpected_message" fatal
alert.</t>
          <t>Note: Because certificate-based client authentication could involve prompting the user, servers
MUST be prepared for some delay, including receiving an arbitrary number of
other messages between sending the CertificateRequest and receiving a
response. In addition, clients which receive multiple CertificateRequests in
close succession MAY respond to them in a different order than they were
received (the certificate_request_context value allows the server to
disambiguate the responses).</t>
        </section>
        <section anchor="key-update">
          <name>Key and Initialization Vector Update</name>
          <t>The KeyUpdate handshake message is used to indicate that the sender is
updating its sending cryptographic keys. This message can be sent by
either peer after it has sent a Finished message.
Implementations that receive a KeyUpdate message prior to receiving a Finished message
MUST terminate the connection with an "unexpected_message" alert.
After sending a KeyUpdate message, the sender SHALL send all its traffic using the
next generation of keys, computed as described in <xref target="updating-traffic-keys"/>.
Upon receiving a KeyUpdate, the receiver MUST update its receiving keys.</t>
          <artwork><![CDATA[
   enum {
       update_not_requested(0), update_requested(1), (255)
   } KeyUpdateRequest;

   struct {
       KeyUpdateRequest request_update;
   } KeyUpdate;
]]></artwork>
          <dl>
            <dt>request_update:</dt>
            <dd>
              <t>Indicates whether the recipient of the KeyUpdate should respond with its
own KeyUpdate. If an implementation receives any other value, it MUST
terminate the connection with an "illegal_parameter" alert.</t>
            </dd>
          </dl>
          <t>If the request_update field is set to "update_requested", then the receiver MUST
send a KeyUpdate of its own with request_update set to "update_not_requested" prior
to sending its next Application Data record. This mechanism allows either side to force an update to the
entire connection, but causes an implementation which
receives multiple KeyUpdates while it is silent to respond with
a single update. Note that implementations may receive an arbitrary
number of messages between sending a KeyUpdate with request_update set
to "update_requested" and receiving the
peer's KeyUpdate, because those messages may already be in flight.
However, because send and receive keys are derived from independent
traffic secrets, retaining the receive traffic secret does not threaten
the forward secrecy of data sent before the sender changed keys.</t>
          <t>If implementations independently send their own KeyUpdates with
request_update set to "update_requested", and they cross in flight, then each side
will also send a response, with the result that each side increments
by two generations.</t>
          <t>Both sender and receiver MUST encrypt their KeyUpdate
messages with the old keys. Additionally, both sides MUST enforce that
a KeyUpdate with the old key is received before accepting any messages
encrypted with the new key. Failure to do so may allow message truncation
attacks.</t>
          <t>With a 128-bit key as in AES-128, rekeying 2^64 times has a high
probability of key reuse within a given connection.  Note that even
if the key repeats, the IV is also independently generated, so the
chance of a joint key/IV collision is much lower.  In order
to provide an extra margin of security, sending implementations MUST
NOT allow the epoch -- and hence the number of key updates --
to exceed 2^48-1.  In order to allow this value to be changed later
-- for instance for ciphers with more than 128-bit keys --
receiving implementations MUST NOT enforce this
rule.  If a sending implementation receives a KeyUpdate with
request_update set to "update_requested", it MUST NOT send its own
KeyUpdate if that would cause it to exceed these limits and SHOULD
instead ignore the "update_requested" flag. This may result in
an eventual need to terminate the connection when the
limits in <xref target="limits-on-key-usage"/> are reached.</t>
        </section>
      </section>
    </section>
    <section anchor="record-protocol">
      <name>Record Protocol</name>
      <t>The TLS record protocol takes messages to be transmitted, fragments
the data into manageable blocks, protects the records, and transmits
the result. Received data is verified, decrypted, reassembled, and
then delivered to higher-level clients.</t>
      <t>TLS records are typed, which allows multiple higher-level protocols to
be multiplexed over the same record layer. This document specifies
four content types: handshake, application_data, alert, and
change_cipher_spec.
The change_cipher_spec record is used only for compatibility purposes
(see <xref target="middlebox"/>).</t>
      <t>An implementation may receive an unencrypted record of type
change_cipher_spec consisting of the single byte value 0x01 at any
time after the first ClientHello message has been sent or received and before
the peer's Finished message has been received and MUST simply drop it without
further processing.  Note that this record may appear at a point at the
handshake where the implementation is expecting protected records,
and so it is necessary to detect this
condition prior to attempting to deprotect the record. An
implementation which receives any other change_cipher_spec value or
which receives a protected change_cipher_spec record MUST abort the
handshake with an "unexpected_message" alert. If an implementation detects
a change_cipher_spec record
received before the first ClientHello message or after the peer's Finished
message, it MUST be treated as an unexpected record type (though stateless
servers may not be able to distinguish these cases from allowed cases).</t>
      <t>Implementations MUST NOT send record types not defined in this
document unless negotiated by some extension.  If a TLS implementation
receives an unexpected record type, it MUST terminate the connection
with an "unexpected_message" alert.  New record content type values
are assigned by IANA in the TLS ContentType registry as described in
<xref target="iana-considerations"/>.</t>
      <section anchor="record-layer">
        <name>Record Layer</name>
        <t>The record layer fragments information blocks into TLSPlaintext
records carrying data in chunks of 2^14 bytes or less. Message
boundaries are handled differently depending on the underlying
ContentType. Any future content types MUST specify appropriate
rules.
Note that these rules are stricter than what was enforced in TLS 1.2.</t>
        <t>Handshake messages MAY be coalesced into a single TLSPlaintext
record or fragmented across several records, provided that:</t>
        <ul spacing="normal">
          <li>Handshake messages MUST NOT be interleaved with other record
types. That is, if a handshake message is split over two or more
records, there MUST NOT be any other records between them.</li>
          <li>Handshake messages MUST NOT span key changes. Implementations MUST verify that
all messages immediately preceding a key change align with a record boundary;
if not, then they MUST terminate the connection with an "unexpected_message"
alert. Because the ClientHello, EndOfEarlyData, ServerHello, Finished, and
KeyUpdate messages can immediately precede a key change, implementations MUST
send these messages in alignment with a record boundary.</li>
        </ul>
        <t>Implementations MUST NOT send zero-length fragments of Handshake
types, even if those fragments contain padding.</t>
        <t>Alert messages (<xref target="alert-protocol"/>) MUST NOT be fragmented across
records, and multiple alert messages MUST NOT be coalesced into a
single TLSPlaintext record. In other words, a record with an Alert
type MUST contain exactly one message.</t>
        <t>Application Data messages contain data that is opaque to
TLS. Application Data messages are always protected. Zero-length
fragments of Application Data MAY be sent, as they are potentially
useful as a traffic analysis countermeasure.  Application Data fragments
MAY be split across multiple records or coalesced into a single record.</t>
        <artwork><![CDATA[
   enum {
       invalid(0),
       change_cipher_spec(20),
       alert(21),
       handshake(22),
       application_data(23),
       (255)
   } ContentType;

   struct {
       ContentType type;
       ProtocolVersion legacy_record_version;
       uint16 length;
       opaque fragment[TLSPlaintext.length];
   } TLSPlaintext;
]]></artwork>
        <dl>
          <dt>type:</dt>
          <dd>
            <t>The higher-level protocol used to process the enclosed fragment.</t>
          </dd>
          <dt>legacy_record_version:</dt>
          <dd>
            <t>MUST be set to 0x0303 for all records generated by a
TLS 1.3 implementation other than an initial ClientHello (i.e., one
not generated after a HelloRetryRequest), where it
MAY also be 0x0301 for compatibility purposes.
This field is deprecated and MUST be ignored for all purposes.
Previous versions of TLS would use other values in this field
under some circumstances.</t>
          </dd>
          <dt>length:</dt>
          <dd>
            <t>The length (in bytes) of the following TLSPlaintext.fragment. The
length MUST NOT exceed 2^14 bytes. An endpoint that receives a record
that exceeds this length MUST terminate the connection with a
"record_overflow" alert.</t>
          </dd>
          <dt>fragment</dt>
          <dd>
            <t>The data being transmitted. This value is transparent and is treated as an
independent block to be dealt with by the higher-level protocol
specified by the type field.</t>
          </dd>
        </dl>
        <t>This document describes TLS 1.3, which uses the version 0x0304.
This version value is historical, deriving from the use of 0x0301
for TLS 1.0 and 0x0300 for SSL 3.0. In order to maximize backward
compatibility, a record containing an initial ClientHello SHOULD have version
0x0301 (reflecting TLS 1.0) and a record containing a second ClientHello or
a ServerHello MUST have version
0x0303 (reflecting TLS 1.2).
When negotiating prior versions of TLS, endpoints
follow the procedure and requirements provided in <xref target="backward-compatibility"/>.</t>
        <t>When record protection has not yet been engaged, TLSPlaintext
structures are written directly onto the wire. Once record protection
has started, TLSPlaintext records are protected and sent as
described in the following section. Note that Application Data
records MUST NOT be written to the wire unprotected (see
<xref target="protocol-overview"/> for details).</t>
      </section>
      <section anchor="record-payload-protection">
        <name>Record Payload Protection</name>
        <t>The record protection functions translate a TLSPlaintext structure into a
TLSCiphertext structure. The deprotection functions reverse the process. In TLS 1.3,
as opposed to previous versions of TLS, all ciphers are modeled as
"Authenticated Encryption with Associated Data" (AEAD) <xref target="RFC5116"/>.
AEAD functions provide a unified encryption and authentication
operation which turns plaintext into authenticated ciphertext and
back again. Each encrypted record consists of a plaintext header followed
by an encrypted body, which itself contains a type and optional padding.</t>
        <artwork><![CDATA[
   struct {
       opaque content[TLSPlaintext.length];
       ContentType type;
       uint8 zeros[length_of_padding];
   } TLSInnerPlaintext;

   struct {
       ContentType opaque_type = application_data; /* 23 */
       ProtocolVersion legacy_record_version = 0x0303; /* TLS v1.2 */
       uint16 length;
       opaque encrypted_record[TLSCiphertext.length];
   } TLSCiphertext;
]]></artwork>
        <dl>
          <dt>content:</dt>
          <dd>
            <t>The TLSPlaintext.fragment value, containing the byte encoding of a
handshake or an alert message, or the raw bytes of the application's
data to send.</t>
          </dd>
          <dt>type:</dt>
          <dd>
            <t>The TLSPlaintext.type value containing the content type of the record.</t>
          </dd>
          <dt>zeros:</dt>
          <dd>
            <t>An arbitrary-length run of zero-valued bytes may
appear in the cleartext after the type field.  This provides an
opportunity for senders to pad any TLS record by a chosen amount as
long as the total stays within record size limits.  See
<xref target="record-padding"/> for more details.</t>
          </dd>
          <dt>opaque_type:</dt>
          <dd>
            <t>The outer opaque_type field of a TLSCiphertext record is always set to the
value 23 (application_data) for outward compatibility with
middleboxes accustomed to parsing previous versions of TLS.  The
actual content type of the record is found in TLSInnerPlaintext.type after
decryption.</t>
          </dd>
          <dt>legacy_record_version:</dt>
          <dd>
            <t>The legacy_record_version field is always 0x0303.  TLS 1.3 TLSCiphertexts
are not generated until after TLS 1.3 has been negotiated, so there are
no historical compatibility concerns where other values might be received.
Note that the handshake protocol, including the ClientHello and ServerHello
messages, authenticates the protocol version, so this value is redundant.</t>
          </dd>
          <dt>length:</dt>
          <dd>
            <t>The length (in bytes) of the following TLSCiphertext.encrypted_record, which
is the sum of the lengths of the content and the padding, plus one
for the inner content type, plus any expansion added by the AEAD algorithm.
The length MUST NOT exceed 2^14 + 256 bytes.
An endpoint that receives a record that exceeds this length MUST
terminate the connection with a "record_overflow" alert.</t>
          </dd>
          <dt>encrypted_record:</dt>
          <dd>
            <t>The AEAD-encrypted form of the serialized TLSInnerPlaintext structure.</t>
          </dd>
        </dl>
        <t>AEAD algorithms take as input a single key, a nonce, a plaintext, and "additional
data" to be included in the authentication check, as described in Section 2.1
of <xref target="RFC5116"/>. The key is either the client_write_key or the server_write_key,
the nonce is derived from the sequence number and the
client_write_iv or server_write_iv (see <xref target="nonce"/>), and the additional data input is the
record header. I.e.,</t>
        <artwork><![CDATA[
   additional_data = TLSCiphertext.opaque_type ||
                     TLSCiphertext.legacy_record_version ||
                     TLSCiphertext.length
]]></artwork>
        <t>The plaintext input to the AEAD algorithm is the encoded TLSInnerPlaintext structure.
Derivation of traffic keys is defined in <xref target="traffic-key-calculation"/>.</t>
        <t>The AEAD output consists of the ciphertext output from the AEAD
encryption operation. The length of the plaintext is greater than the
corresponding TLSPlaintext.length due to the inclusion of TLSInnerPlaintext.type and
any padding supplied by the sender. The length of the
AEAD output will generally be larger than the plaintext, but by an
amount that varies with the AEAD algorithm. Since the ciphers might
incorporate padding, the amount of overhead could vary with different
lengths of plaintext. Symbolically,</t>
        <artwork><![CDATA[
   AEADEncrypted =
       AEAD-Encrypt(write_key, nonce, additional_data, plaintext)
]]></artwork>
        <t>The encrypted_record field of TLSCiphertext is set to AEADEncrypted.</t>
        <t>In order to decrypt and verify, the cipher takes as input the key, nonce,
additional data, and the AEADEncrypted value. The output is either the plaintext
or an error indicating that the decryption failed. There is no separate
integrity check. Symbolically,</t>
        <artwork><![CDATA[
   plaintext of encrypted_record =
       AEAD-Decrypt(peer_write_key, nonce, additional_data, AEADEncrypted)
]]></artwork>
        <t>If the decryption fails, the receiver MUST terminate the connection
with a "bad_record_mac" alert.</t>
        <t>An AEAD algorithm used in TLS 1.3 MUST NOT produce an expansion greater than
255 octets. An endpoint that receives a record from its peer with
TLSCiphertext.length larger than 2^14 + 256 octets MUST terminate
the connection with a "record_overflow" alert.
This limit is derived from the maximum TLSInnerPlaintext length of
2^14 octets + 1 octet for ContentType + the maximum AEAD expansion of 255 octets.</t>
      </section>
      <section anchor="nonce">
        <name>Per-Record Nonce</name>
        <t>A 64-bit sequence number is maintained separately for reading and writing
records. The appropriate sequence number is incremented by one after
reading or writing each record.  Each sequence number is set to zero
at the beginning of a connection and whenever the key is changed; the
first record transmitted under a particular traffic key MUST use
sequence number 0.</t>
        <t>Because the size of sequence numbers is 64-bit, they should not
wrap. If a TLS implementation would need to
wrap a sequence number, it MUST either rekey (<xref target="key-update"/>) or
terminate the connection.</t>
        <t>Each AEAD algorithm will specify a range of possible lengths for the
per-record nonce, from N_MIN bytes to N_MAX bytes of input <xref target="RFC5116"/>.
The length of the TLS per-record nonce (iv_length) is set to the larger of
8 bytes and N_MIN for the AEAD algorithm (see <xref target="RFC5116"/>, Section 4).
An AEAD algorithm where N_MAX is less than 8 bytes MUST NOT be used with TLS.
The per-record nonce for the AEAD construction is formed as follows:</t>
        <ol spacing="normal" type="1"><li>The 64-bit record sequence number is encoded in network byte order
and padded to the left with zeros to iv_length.</li>
          <li>The padded sequence number is XORed with either the static client_write_iv
or server_write_iv (depending on the role).</li>
        </ol>
        <t>The resulting quantity (of length iv_length) is used as the per-record nonce.</t>
        <t>Note: This is a different construction from that in TLS 1.2, which
specified a partially explicit nonce.</t>
      </section>
      <section anchor="record-padding">
        <name>Record Padding</name>
        <t>All encrypted TLS records can be padded to inflate the size of the
TLSCiphertext.  This allows the sender to hide the size of the
traffic from an observer.</t>
        <t>When generating a TLSCiphertext record, implementations MAY choose to pad.
An unpadded record is just a record with a padding length of zero.
Padding is a string of zero-valued bytes appended to the ContentType
field before encryption.  Implementations MUST set the padding octets
to all zeros before encrypting.</t>
        <t>Application Data records may contain a zero-length TLSInnerPlaintext.content if
the sender desires.  This permits generation of plausibly sized cover
traffic in contexts where the presence or absence of activity may be
sensitive.  Implementations MUST NOT send Handshake and Alert records
that have a zero-length TLSInnerPlaintext.content; if such a message
is received, the receiving implementation MUST terminate the connection
with an "unexpected_message" alert.</t>
        <t>The padding sent is automatically verified by the record protection
mechanism; upon successful decryption of a TLSCiphertext.encrypted_record,
the receiving implementation scans the field from the end toward the
beginning until it finds a non-zero octet. This non-zero octet is the
content type of the message.
This padding scheme was selected because it allows padding of any encrypted
TLS record by an arbitrary size (from zero up to TLS record size
limits) without introducing new content types.  The design also
enforces all-zero padding octets, which allows for quick detection of
padding errors.</t>
        <t>Implementations MUST limit their scanning to the cleartext returned
from the AEAD decryption.  If a receiving implementation does not find
a non-zero octet in the cleartext, it MUST terminate the
connection with an "unexpected_message" alert.</t>
        <t>The presence of padding does not change the overall record size limitations:
the full encoded TLSInnerPlaintext MUST NOT exceed 2^14 + 1 octets. If the
maximum fragment length is reduced -- as for example by the record_size_limit
extension from <xref target="RFC8449"/> -- then the reduced limit applies to the full plaintext,
including the content type and padding.</t>
        <t>Selecting a padding policy that suggests when and how much to pad is a
complex topic and is beyond the scope of this specification. If the
application-layer protocol on top of TLS has its own padding, it may be
preferable to pad Application Data TLS records within the application
layer.  Padding for encrypted Handshake or Alert records must
still be handled at the TLS layer, though.  Later documents may define
padding selection algorithms or define a padding policy request
mechanism through TLS extensions or some other means.</t>
      </section>
      <section anchor="limits-on-key-usage">
        <name>Limits on Key Usage</name>
        <t>There are cryptographic limits on the amount of plaintext which can be
safely encrypted under a given set of keys.  <xref target="AEAD-LIMITS"/> provides
an analysis of these limits under the assumption that the underlying
primitive (AES or ChaCha20) has no weaknesses. Implementations MUST
either close the connection or 
do a key update as described in <xref target="key-update"/> prior to reaching these limits.
Note that it is not possible to perform a KeyUpdate for early data
and therefore implementations MUST not exceed the limits
when sending early data. Receiving implementations SHOULD NOT enforce
these limits, as future analyses may result in updated values.</t>
        <t>For AES-GCM, up to 2^24.5 full-size records (about 24 million)
may be encrypted on a given connection while keeping a safety
margin of approximately 2^-57 for Authenticated Encryption (AE) security.
For ChaCha20/Poly1305, the record sequence number would wrap before the
safety limit is reached.</t>
      </section>
    </section>
    <section anchor="alert-protocol">
      <name>Alert Protocol</name>
      <t>TLS provides an Alert content type to indicate closure information
and errors.  Like other messages, alert messages are encrypted as
specified by the current connection state.</t>
      <t>Alert messages convey a description of the alert and a legacy field
that conveyed the severity level of the message in previous versions of
TLS. Alerts are divided into
two classes: closure alerts and error alerts.  In TLS 1.3, the
severity is implicit in the type of alert
being sent, and the "level" field can safely be ignored. The "close_notify" alert
is used to indicate orderly closure of one direction of the connection.
Upon receiving such an alert, the TLS implementation SHOULD
indicate end-of-data to the application.</t>
      <t>Error alerts indicate abortive closure of the
connection (see <xref target="error-alerts"/>). Upon receiving an error alert,
the TLS implementation SHOULD indicate an error to the application and
MUST NOT allow any further data to be sent or received on the
connection.  Servers and clients MUST forget the secret values and
keys established in failed connections, with the exception of
the PSKs associated with session tickets, which SHOULD be discarded if
possible.</t>
      <t>All the alerts listed in <xref target="error-alerts"/> MUST be sent with
AlertLevel=fatal and MUST be treated as error alerts when received
regardless of the AlertLevel in the
message. Unknown Alert types MUST be treated as error alerts.</t>
      <t>Note: TLS defines two generic alerts (see <xref target="alert-protocol"/>) to use
upon failure to parse a message. Peers which receive a message which
cannot be parsed according to the syntax (e.g., have a length
extending beyond the message boundary or contain an out-of-range
length) MUST terminate the connection with a "decode_error"
alert. Peers which receive a message which is syntactically correct
but semantically invalid (e.g., a DHE share of p - 1, or an invalid
enum) MUST terminate the connection with an "illegal_parameter" alert.</t>
      <artwork><![CDATA[
   enum { warning(1), fatal(2), (255) } AlertLevel;

   enum {
       close_notify(0),
       unexpected_message(10),
       bad_record_mac(20),
       record_overflow(22),
       handshake_failure(40),
       bad_certificate(42),
       unsupported_certificate(43),
       certificate_revoked(44),
       certificate_expired(45),
       certificate_unknown(46),
       illegal_parameter(47),
       unknown_ca(48),
       access_denied(49),
       decode_error(50),
       decrypt_error(51),
       protocol_version(70),
       insufficient_security(71),
       internal_error(80),
       inappropriate_fallback(86),
       user_canceled(90),
       missing_extension(109),
       unsupported_extension(110),
       unrecognized_name(112),
       bad_certificate_status_response(113),
       unknown_psk_identity(115),
       certificate_required(116),
       general_error(117),
       no_application_protocol(120),
       (255)
   } AlertDescription;

   struct {
       AlertLevel level;
       AlertDescription description;
   } Alert;
]]></artwork>
      <section anchor="closure-alerts">
        <name>Closure Alerts</name>
        <t>The client and the server must share knowledge that the connection is ending in
order to avoid a truncation attack.</t>
        <dl>
          <dt>close_notify:</dt>
          <dd>
            <t>This alert notifies the recipient that the sender will not send
any more messages on this connection. Any data received after a
closure alert has been received MUST be ignored. This alert MUST be
sent with AlertLevel=warning.</t>
          </dd>
          <dt>user_canceled:</dt>
          <dd>
            <t>This alert notifies the recipient that the sender is canceling the
handshake for some reason unrelated to a protocol failure. If a user
cancels an operation after the handshake is complete, just closing the
connection by sending a "close_notify" is more appropriate. This alert
MUST be followed by a "close_notify". This alert generally
has AlertLevel=warning. Receiving implementations SHOULD
continue to read data from the peer until a "close_notify" is received,
though they MAY log or otherwise record them.</t>
          </dd>
        </dl>
        <t>Either party MAY initiate a close of its write side of the connection by
sending a "close_notify" alert. Any data received after a "close_notify" alert has
been received MUST be ignored. If a transport-level close is received prior
to a "close_notify", the receiver cannot know that all the data that was sent
has been received.</t>
        <t>Each party MUST send a "close_notify" alert before closing its write side
of the connection, unless it has already sent some error alert. This
does not have any effect on its read side of the connection. Note that this is
a change from versions of TLS prior to TLS 1.3 in which implementations were
required to react to a "close_notify" by discarding pending writes and
sending an immediate "close_notify" alert of their own. That previous
requirement could cause truncation in the read side. Both parties need not
wait to receive a "close_notify" alert before closing their read side of the
connection, though doing so would introduce the possibility of truncation.</t>
        <t>If the application protocol using TLS provides that any data may be carried
over the underlying transport after the TLS connection is closed, the TLS
implementation MUST receive a "close_notify" alert before indicating
end-of-data to the application layer. No part of this
standard should be taken to dictate the manner in which a usage profile for TLS
manages its data transport, including when connections are opened or closed.</t>
        <t>Note: It is assumed that closing the write side of a connection reliably
delivers pending data before destroying the transport.</t>
      </section>
      <section anchor="error-alerts">
        <name>Error Alerts</name>
        <t>Error handling in TLS is very simple. When an
error is detected, the detecting party sends a message to its
peer. Upon transmission or receipt of a fatal alert message, both
parties MUST immediately close the connection.</t>
        <t>Whenever an implementation encounters a fatal error condition, it
SHOULD send an appropriate fatal alert and MUST close the connection
without sending or receiving any additional data. Throughout this
specification, when the phrases "terminate the connection" and "abort the
handshake" are used without a specific alert it means that the
implementation SHOULD send the alert indicated by the descriptions
below. The phrases "terminate the connection with an X alert" and
"abort the handshake with an X alert" mean that the implementation
MUST send alert X if it sends any alert. All
alerts defined below in this section, as well as all unknown alerts,
are universally considered fatal as of TLS 1.3 (see <xref target="alert-protocol"/>).
The implementation SHOULD provide a way to facilitate logging
the sending and receiving of alerts.</t>
        <t>The following error alerts are defined:</t>
        <dl>
          <dt>unexpected_message:</dt>
          <dd>
            <t>An inappropriate message (e.g., the wrong handshake message, premature
Application Data, etc.) was received. This alert should never be
observed in communication between proper implementations.</t>
          </dd>
          <dt>bad_record_mac:</dt>
          <dd>
            <t>This alert is returned if a record is received which cannot be
deprotected. Because AEAD algorithms combine decryption and
verification, and also to avoid side-channel attacks,
this alert is used for all deprotection failures.
This alert should never be observed in communication between
proper implementations, except when messages were corrupted
in the network.</t>
          </dd>
          <dt>record_overflow:</dt>
          <dd>
            <t>A TLSCiphertext record was received that had a length more than
2^14 + 256 bytes, or a record decrypted to a TLSPlaintext record
with more than 2^14 bytes (or some other negotiated limit).
This alert should never be observed in communication between
proper implementations, except when messages were corrupted
in the network.</t>
          </dd>
          <dt>handshake_failure:</dt>
          <dd>
            <t>Receipt of a "handshake_failure" alert message indicates that the
sender was unable to negotiate an acceptable set of security
parameters given the options available.</t>
          </dd>
          <dt>bad_certificate:</dt>
          <dd>
            <t>A certificate was corrupt, contained signatures that did not
verify correctly, etc.</t>
          </dd>
          <dt>unsupported_certificate:</dt>
          <dd>
            <t>A certificate was of an unsupported type.</t>
          </dd>
          <dt>certificate_revoked:</dt>
          <dd>
            <t>A certificate was revoked by its signer.</t>
          </dd>
          <dt>certificate_expired:</dt>
          <dd>
            <t>A certificate has expired or is not currently valid.</t>
          </dd>
          <dt>certificate_unknown:</dt>
          <dd>
            <t>Some other (unspecified) issue arose in processing the
certificate, rendering it unacceptable.</t>
          </dd>
          <dt>illegal_parameter:</dt>
          <dd>
            <t>A field in the handshake was incorrect or inconsistent with
other fields. This alert is used for errors which conform to
the formal protocol syntax but are otherwise incorrect.</t>
          </dd>
          <dt>unknown_ca:</dt>
          <dd>
            <t>A valid certificate chain or partial chain was received, but the
certificate was not accepted because the CA certificate could not
be located or could not be matched with a known trust anchor.</t>
          </dd>
          <dt>access_denied:</dt>
          <dd>
            <t>A valid certificate or PSK was received, but when access control was
applied, the sender decided not to proceed with negotiation.</t>
          </dd>
          <dt>decode_error:</dt>
          <dd>
            <t>A message could not be decoded because some field was out of the
specified range or the length of the message was incorrect.
This alert is used for errors where the message does not conform
to the formal protocol syntax.
This alert should never be observed in communication between
proper implementations, except when messages were corrupted
in the network.</t>
          </dd>
          <dt>decrypt_error:</dt>
          <dd>
            <t>A handshake (not record layer) cryptographic operation failed, including being unable
to correctly verify a signature or validate a Finished message
or a PSK binder.</t>
          </dd>
          <dt>protocol_version:</dt>
          <dd>
            <t>The protocol version the peer has attempted to negotiate is
recognized but not supported (see <xref target="backward-compatibility"/>).</t>
          </dd>
          <dt>insufficient_security:</dt>
          <dd>
            <t>Returned instead of "handshake_failure" when a negotiation has
failed specifically because the server requires parameters more
secure than those supported by the client.</t>
          </dd>
          <dt>internal_error:</dt>
          <dd>
            <t>An internal error unrelated to the peer or the correctness of the
protocol (such as a memory allocation failure) makes it impossible
to continue.</t>
          </dd>
          <dt>inappropriate_fallback:</dt>
          <dd>
            <t>Sent by a server in response to an invalid connection retry attempt
from a client (see <xref target="RFC7507"/>).</t>
          </dd>
          <dt>missing_extension:</dt>
          <dd>
            <t>Sent by endpoints that receive a handshake message not containing an
extension that is mandatory to send for the offered TLS version
or other negotiated parameters.</t>
          </dd>
          <dt>unsupported_extension:</dt>
          <dd>
            <t>Sent by endpoints receiving any handshake message containing an extension
known to be prohibited for inclusion in the given handshake message, or including
any extensions in a ServerHello or Certificate not first offered in the
corresponding ClientHello or CertificateRequest.</t>
          </dd>
          <dt>unrecognized_name:</dt>
          <dd>
            <t>Sent by servers when no server exists identified by the name
provided by the client via the "server_name" extension
(see <xref target="RFC6066"/>).</t>
          </dd>
          <dt>bad_certificate_status_response:</dt>
          <dd>
            <t>Sent by clients when an invalid or unacceptable OCSP response is
provided by the server via the "status_request" extension
(see <xref target="RFC6066"/>).</t>
          </dd>
          <dt>unknown_psk_identity:</dt>
          <dd>
            <t>Sent by servers when PSK key establishment is desired but no
 acceptable PSK identity is provided by the client. Sending this alert
 is OPTIONAL; servers MAY instead choose to send a "decrypt_error"
 alert to merely indicate an invalid PSK identity.</t>
          </dd>
          <dt>certificate_required:</dt>
          <dd>
            <t>Sent by servers when a client certificate is desired but none was provided by
the client.</t>
          </dd>
          <dt>general_error:</dt>
          <dd>
            <t>Sent to indicate an error condition in cases when either no
more specific error is available or the senders wishes to conceal
the specific error code. Implementations SHOULD use more specific
errors when available.</t>
          </dd>
          <dt>no_application_protocol:</dt>
          <dd>
            <t>Sent by servers when a client
"application_layer_protocol_negotiation" extension advertises
only protocols that the server does not support
(see <xref target="RFC7301"/>).</t>
          </dd>
        </dl>
        <t>New Alert values are assigned by IANA as described in <xref target="iana-considerations"/>.</t>
      </section>
    </section>
    <section anchor="cryptographic-computations">
      <name>Cryptographic Computations</name>
      <t>The TLS handshake establishes one or more input secrets which
are combined to create the actual working keying material, as detailed
below. The key derivation process incorporates both the input secrets
and the handshake transcript. Note that because the handshake
transcript includes the random values from the Hello messages,
any given handshake will have different traffic secrets, even
if the same input secrets are used, as is the case when
the same PSK is used for multiple connections.</t>
      <section anchor="key-schedule">
        <name>Key Schedule</name>
        <t>The key derivation process makes use of the HKDF-Extract and HKDF-Expand
functions as defined for HKDF <xref target="RFC5869"/>, as well as the functions
defined below:</t>
        <artwork><![CDATA[
    HKDF-Expand-Label(Secret, Label, Context, Length) =
         HKDF-Expand(Secret, HkdfLabel, Length)

    Where HkdfLabel is specified as:

    struct {
        uint16 length = Length;
        opaque label<7..255> = "tls13 " + Label;
        opaque context<0..255> = Context;
    } HkdfLabel;

    Derive-Secret(Secret, Label, Messages) =
         HKDF-Expand-Label(Secret, Label,
                           Transcript-Hash(Messages), Hash.length)
]]></artwork>
        <t>The Hash function used by Transcript-Hash and HKDF is the cipher suite hash
algorithm.
Hash.length is its output length in bytes. Messages is the concatenation of the
indicated handshake messages, including the handshake message type
and length fields, but not including record layer headers. Note that
in some cases a zero-length Context (indicated by "") is passed to
HKDF-Expand-Label.  The labels specified in this document are all
ASCII strings and do not include a trailing NUL byte.</t>
        <t>Note: With common hash functions, any label longer than 12 characters
requires an additional iteration of the hash function to compute.
The labels in this specification have all been chosen to fit within
this limit.</t>
        <t>Keys are derived from two input secrets using
the HKDF-Extract and Derive-Secret functions. The general pattern
for adding a new secret is to use HKDF-Extract with the Salt
being the current secret state and the Input Keying Material (IKM) being the new
secret to be added. In this version of TLS 1.3, the two
input secrets are:</t>
        <ul spacing="normal">
          <li>PSK (a pre-shared key established externally or derived from
the resumption_secret value from a previous connection)</li>
          <li>(EC)DHE shared secret (<xref target="ecdhe-shared-secret-calculation"/>)</li>
        </ul>
        <t>This produces a full key derivation schedule shown in the diagram below.
In this diagram, the following formatting conventions apply:</t>
        <ul spacing="normal">
          <li>HKDF-Extract is drawn as taking the Salt argument from the top and
the IKM argument from the left, with its output to the bottom and
the name of the output on the right.</li>
          <li>Derive-Secret's Secret argument is indicated by the incoming
arrow. For instance, the Early Secret is the Secret for
generating the client_early_traffic_secret.</li>
          <li>"0" indicates a string of Hash.length bytes set to zero.</li>
        </ul>
        <t>Note: the key derivation labels use the string "master" even though
the values are referred to as "main" secrets.  This mismatch is a
result of renaming the values while retaining compatibility.</t>
        <artwork><![CDATA[
                 0
                 |
                 v
   PSK ->  HKDF-Extract = Early Secret
                 |
                 +-----> Derive-Secret(.,
                 |                     "ext binder" |
                 |                     "res binder",
                 |                     "")
                 |                     = binder_key
                 |
                 +-----> Derive-Secret(., "c e traffic",
                 |                     ClientHello)
                 |                     = client_early_traffic_secret
                 |
                 +-----> Derive-Secret(., "e exp master",
                 |                     ClientHello)
                 |                     = early_exporter_secret
                 v
           Derive-Secret(., "derived", "")
                 |
                 v
(EC)DHE -> HKDF-Extract = Handshake Secret
                 |
                 +-----> Derive-Secret(., "c hs traffic",
                 |                     ClientHello...ServerHello)
                 |                     = client_handshake_traffic_secret
                 |
                 +-----> Derive-Secret(., "s hs traffic",
                 |                     ClientHello...ServerHello)
                 |                     = server_handshake_traffic_secret
                 v
           Derive-Secret(., "derived", "")
                 |
                 v
      0 -> HKDF-Extract = Main Secret
                 |
                 +-----> Derive-Secret(., "c ap traffic",
                 |                     ClientHello...server Finished)
                 |                     = client_application_traffic_secret_0
                 |
                 +-----> Derive-Secret(., "s ap traffic",
                 |                     ClientHello...server Finished)
                 |                     = server_application_traffic_secret_0
                 |
                 +-----> Derive-Secret(., "exp master",
                 |                     ClientHello...server Finished)
                 |                     = exporter_secret
                 |
                 +-----> Derive-Secret(., "res master",
                                       ClientHello...client Finished)
                                       = resumption_secret
]]></artwork>
        <t>The general pattern here is that the secrets shown down the left side
of the diagram are just raw entropy without context, whereas the
secrets down the right side include Handshake Context and therefore
can be used to derive working keys without additional context.
Note that the different
calls to Derive-Secret may take different Messages arguments,
even with the same secret. In a 0-RTT exchange, Derive-Secret is
called with four distinct transcripts; in a 1-RTT-only exchange,
it is called with three distinct transcripts.</t>
        <t>If a given secret is not available, then the 0-value consisting of
a string of Hash.length bytes set to zeros is used.  Note that this does not mean skipping
rounds, so if PSK is not in use, Early Secret will still be
HKDF-Extract(0, 0). For the computation of the binder_key, the label is
"ext binder" for external PSKs (those provisioned outside of TLS)
and "res binder" for resumption PSKs (those provisioned as the resumption
secret of a previous handshake). The different labels prevent
the substitution of one type of PSK for the other.</t>
        <t>There are multiple potential Early Secret values, depending on
which PSK the server ultimately selects. The client will need to compute
one for each potential PSK; if no PSK is selected, it will then need to
compute the Early Secret corresponding to the zero PSK.</t>
        <t>Once all the values which are to be derived from a given secret have
been computed, that secret SHOULD be erased.</t>
      </section>
      <section anchor="updating-traffic-keys">
        <name>Updating Traffic Secrets</name>
        <t>Once the handshake is complete, it is possible for either side to
update its sending traffic keys using the KeyUpdate handshake message
defined in <xref target="key-update"/>.  The next generation of traffic keys is computed by
generating client_/server_application_traffic_secret_N+1 from
client_/server_application_traffic_secret_N as described in
this section and then re-deriving the traffic keys as described in
<xref target="traffic-key-calculation"/>.</t>
        <t>The next-generation application_traffic_secret is computed as:</t>
        <artwork><![CDATA[
    application_traffic_secret_N+1 =
        HKDF-Expand-Label(application_traffic_secret_N,
                          "traffic upd", "", Hash.length)
]]></artwork>
        <t>Once client_/server_application_traffic_secret_N+1 and its associated
traffic keys have been computed, implementations SHOULD delete
client_/server_application_traffic_secret_N and its associated traffic keys.</t>
      </section>
      <section anchor="traffic-key-calculation">
        <name>Traffic Key Calculation</name>
        <t>The traffic keying material is generated from the following input values:</t>
        <ul spacing="normal">
          <li>A secret value</li>
          <li>A purpose value indicating the specific value being generated</li>
          <li>The length of the key being generated</li>
        </ul>
        <t>The traffic keying material is generated from an input traffic secret value using:</t>
        <artwork><![CDATA[
    [sender]_write_key = HKDF-Expand-Label(Secret, "key", "", key_length)
    [sender]_write_iv  = HKDF-Expand-Label(Secret, "iv", "", iv_length)
]]></artwork>
        <t>[sender] denotes the sending side. The value of Secret for each category
of data is shown in the table below.</t>
        <table anchor="traffic-key-table">
          <name>Secrets for Traffic Keys</name>
          <thead>
            <tr>
              <th align="left">Data Type</th>
              <th align="left">Secret</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0-RTT Application and EndOfEarlyData</td>
              <td align="left">client_early_traffic_secret</td>
            </tr>
            <tr>
              <td align="left">Initial Handshake</td>
              <td align="left">[sender]_handshake_traffic_secret</td>
            </tr>
            <tr>
              <td align="left">Post-Handshake and Application Data</td>
              <td align="left">[sender]_application_traffic_secret_N</td>
            </tr>
          </tbody>
        </table>
        <t>Alerts are sent with the then current sending key (or as
plaintext if no such key has been established.)
All the traffic keying material is recomputed whenever the
underlying Secret changes (e.g., when changing from the handshake to
Application Data keys or upon a key update).</t>
      </section>
      <section anchor="ecdhe-shared-secret-calculation">
        <name>(EC)DHE Shared Secret Calculation</name>
        <section anchor="finite-field-diffie-hellman">
          <name>Finite Field Diffie-Hellman</name>
          <t>For finite field groups, a conventional Diffie-Hellman
<xref target="DH76"/> computation is performed.
The negotiated key (Z) is converted to a byte string by encoding in big-endian form and
left-padded with zeros up to the size of the prime. This byte string is used as the
shared secret in the key schedule as specified above.</t>
          <t>Note that this construction differs from previous versions of TLS which remove
leading zeros.</t>
        </section>
        <section anchor="elliptic-curve-diffie-hellman">
          <name>Elliptic Curve Diffie-Hellman</name>
          <t>For secp256r1, secp384r1 and secp521r1, ECDH calculations (including parameter
and key generation as well as the shared secret calculation) are
performed according to <xref target="IEEE1363"/> using the ECKAS-DH1 scheme with the identity
map as the key derivation function (KDF), so that the shared secret is the
x-coordinate of the ECDH shared secret elliptic curve point represented
as an octet string.  Note that this octet string ("Z" in IEEE 1363 terminology)
as output by FE2OSP (the Field Element to Octet String Conversion
Primitive) has constant length for any given field; leading zeros
found in this octet string MUST NOT be truncated.</t>
          <t>(Note that this use of the identity KDF is a technicality.  The
complete picture is that ECDH is employed with a non-trivial KDF
because TLS does not directly use this secret for anything
other than for computing other secrets.)</t>
          <t>For X25519 and X448, the ECDH calculations are as follows:</t>
          <ul spacing="normal">
            <li>The public key to put into the KeyShareEntry.key_exchange structure is the
result of applying the ECDH scalar multiplication function to the secret key
of appropriate length (into scalar input) and the standard public basepoint
(into u-coordinate point input).</li>
            <li>The ECDH shared secret is the result of applying the ECDH scalar multiplication
function to the secret key (into scalar input) and the peer's public key
(into u-coordinate point input). The output is used raw, with no processing.</li>
          </ul>
          <t>For these curves, implementations SHOULD use the approach specified
in <xref target="RFC7748"/> to calculate the Diffie-Hellman shared secret.
Implementations MUST check whether the computed Diffie-Hellman
shared secret is the all-zero value and abort if so, as described in
Section 6 of <xref target="RFC7748"/>. If implementors use an alternative
implementation of these elliptic curves, they SHOULD perform the
additional checks specified in Section 7 of <xref target="RFC7748"/>.</t>
        </section>
      </section>
      <section anchor="exporters">
        <name>Exporters</name>
        <t><xref target="RFC5705"/> defines keying material exporters for TLS in terms of the TLS
pseudorandom function (PRF). This document replaces the PRF with HKDF, thus
requiring a new construction. The exporter interface remains the same.</t>
        <t>The exporter value is computed as:</t>
        <artwork><![CDATA[
TLS-Exporter(label, context_value, key_length) =
    HKDF-Expand-Label(Derive-Secret(Secret, label, ""),
                      "exporter", Hash(context_value), key_length)
]]></artwork>
        <t>Where Secret is either the early_exporter_secret or the
exporter_secret.  Implementations MUST use the exporter_secret unless
explicitly specified by the application. The early_exporter_secret is
defined for use in settings where an exporter is needed for 0-RTT data.
A separate interface for the early exporter is RECOMMENDED; this avoids
the exporter user accidentally using an early exporter when a regular
one is desired or vice versa.</t>
        <t>If no context is provided, the context_value is zero length. Consequently,
providing no context computes the same value as providing an empty context.
This is a change from previous versions of TLS where an empty context produced a
different output than an absent context. As of this document's publication, no
allocated exporter label is used both with and without a context. Future
specifications MUST NOT define a use of exporters that permit both an empty
context and no context with the same label. New uses of exporters SHOULD provide
a context in all exporter computations, though the value could be empty.</t>
        <t>Requirements for the format of exporter labels are defined in Section 4
of <xref target="RFC5705"/>.</t>
      </section>
    </section>
    <section anchor="anti-replay">
      <name>0-RTT and Anti-Replay</name>
      <t>As noted in <xref target="zero-rtt-data"/> and <xref target="replay-0rtt"/>, TLS does not provide inherent replay
protections for 0-RTT data. There are two potential threats to be
concerned with:</t>
      <ul spacing="normal">
        <li>Network attackers who mount a replay attack by simply duplicating a
flight of 0-RTT data.</li>
        <li>Network attackers who take advantage of client retry behavior
to arrange for the server to receive multiple copies of an application
message. This threat already exists
to some extent because clients that value robustness respond to network errors by
attempting to retry requests. However, 0-RTT adds an additional
dimension for any server system which does not maintain globally
consistent server state. Specifically, if a server system has
multiple zones where tickets from zone A will not be accepted in
zone B, then an attacker can duplicate a ClientHello and early
data intended for A to both A and B. At A, the data will
be accepted in 0-RTT, but at B the server will reject 0-RTT
data and instead force a full handshake. If the attacker blocks
the ServerHello from A, then the client will complete the
handshake with B and probably retry the request, leading to duplication on
the server system as a whole.</li>
      </ul>
      <t>The first class of attack can be prevented by sharing state to guarantee that
the 0-RTT data is accepted at most once.  Servers SHOULD provide that level of
replay safety by implementing one of the methods described in this section or
by equivalent means.  It is understood, however, that due to operational
concerns not all deployments will maintain state at that level.  Therefore, in
normal operation, clients will not know which, if any, of these mechanisms
servers actually implement and hence MUST only send early data which they deem
safe to be replayed.</t>
      <t>In addition to the direct effects of replays, there is a class of attacks where
even operations normally considered idempotent could be exploited by a large
number of replays (timing attacks, resource limit exhaustion and others, as
described in <xref target="replay-0rtt"/>).  Those can be mitigated by ensuring that every
0-RTT payload can be replayed only a limited number of times.  The server MUST
ensure that any instance of it (be it a machine, a thread, or any other entity
within the relevant serving infrastructure) would accept 0-RTT for the same
0-RTT handshake at most once; this limits the number of replays to the number of
server instances in the deployment.  Such a guarantee can be accomplished by
locally recording data from recently received ClientHellos and rejecting
repeats, or by any other method that provides the same or a stronger guarantee.
The "at most once per server instance" guarantee is a minimum requirement;
servers SHOULD limit 0-RTT replays further when feasible.</t>
      <t>The second class of attack cannot be prevented at the TLS layer and
MUST be dealt with by any application. Note that any application whose
clients implement any kind of retry behavior already needs to
implement some sort of anti-replay defense.</t>
      <section anchor="single-use-tickets">
        <name>Single-Use Tickets</name>
        <t>The simplest form of anti-replay defense is for the server to only
allow each session ticket to be used once. For instance, the server
can maintain a database of all outstanding valid tickets, deleting each
ticket from the database as it is used. If an unknown ticket is
provided, the server would then fall back to a full handshake.</t>
        <t>If the tickets are not self-contained but rather are database keys,
and the corresponding PSKs are deleted upon use, then connections established
using PSKs enjoy not only anti-replay protection, but also forward secrecy once
all copies of the PSK from the database entry have been deleted.
This mechanism also improves security for PSK usage when PSK is used without
(EC)DHE.</t>
        <t>Because this mechanism requires sharing the session database between
server nodes in environments with multiple distributed servers,
it may be hard to achieve high rates of successful PSK 0-RTT
connections when compared to self-encrypted tickets. Unlike
session databases, session tickets can successfully do PSK-based
session establishment even without consistent storage, though when
0-RTT is allowed they still require consistent storage for anti-replay
of 0-RTT data, as detailed in the following
section.</t>
      </section>
      <section anchor="client-hello-recording">
        <name>Client Hello Recording</name>
        <t>An alternative form of anti-replay is to record a unique value derived
from the ClientHello (generally either the random value or the PSK
binder) and reject duplicates. Recording all ClientHellos causes state
to grow without bound, but a server can instead record ClientHellos within
a given time window and use the "obfuscated_ticket_age" to ensure that
tickets aren't reused outside that window.</t>
        <t>In order to implement this, when a ClientHello is received, the server
first verifies the PSK binder as described in
<xref target="pre-shared-key-extension"/>. It then computes the
expected_arrival_time as described in the next section and rejects
0-RTT if it is outside the recording window, falling back to the
1-RTT handshake.</t>
        <t>If the expected_arrival_time is in the window, then the server
checks to see if it has recorded a matching ClientHello. If one
is found, it either aborts the handshake with an "illegal_parameter" alert
or accepts the PSK but rejects 0-RTT. If no matching ClientHello
is found, then it accepts 0-RTT and then stores the ClientHello for
as long as the expected_arrival_time is inside the window.
Servers MAY also implement data stores with false positives, such as
Bloom filters, in which case they MUST respond to apparent replay by
rejecting 0-RTT but MUST NOT abort the handshake.</t>
        <t>The server MUST derive the storage key only from validated sections
of the ClientHello. If the ClientHello contains multiple
PSK identities, then an attacker can create multiple ClientHellos
with different binder values for the less-preferred identity on the
assumption that the server will not verify it (as recommended
by <xref target="pre-shared-key-extension"/>).
I.e., if the
client sends PSKs A and B but the server prefers A, then the
attacker can change the binder for B without affecting the binder
for A. If the binder for B is part of the storage key,
then this ClientHello will not appear as a duplicate,
which will cause the ClientHello to be accepted, and may
cause side effects such as replay cache pollution, although any
0-RTT data will not be decryptable because it will use different
keys. If the validated binder or the ClientHello.random
is used as the storage key, then this attack is not possible.</t>
        <t>Because this mechanism does not require storing all outstanding
tickets, it may be easier to implement in distributed systems with
high rates of resumption and 0-RTT, at the cost of potentially
weaker anti-replay defense because of the difficulty of reliably
storing and retrieving the received ClientHello messages.
In many such systems, it is impractical to have globally
consistent storage of all the received ClientHellos.
In this case, the best anti-replay protection is provided by
having a single storage zone be
authoritative for a given ticket and refusing 0-RTT for that
ticket in any other zone. This approach prevents simple
replay by the attacker because only one zone will accept
0-RTT data. A weaker design is to implement separate storage for
each zone but allow 0-RTT in any zone. This approach limits
the number of replays to once per zone. Application message
duplication of course remains possible with either design.</t>
        <t>When implementations are freshly started, they SHOULD
reject 0-RTT as long as any portion of their recording window overlaps
the startup time. Otherwise, they run the risk of accepting
replays which were originally sent during that period.</t>
        <t>Note: If the client's clock is running much faster than the server's,
then a ClientHello may be received that is outside the window in the
future, in which case it might be accepted for 1-RTT, causing a client retry,
and then acceptable later for 0-RTT. This is another variant of
the second form of attack described in <xref target="anti-replay"/>.</t>
      </section>
      <section anchor="freshness-checks">
        <name>Freshness Checks</name>
        <t>Because the ClientHello indicates the time at which the client sent
it, it is possible to efficiently determine whether a ClientHello was
likely sent reasonably recently and only accept 0-RTT for such a
ClientHello, otherwise falling back to a 1-RTT handshake.
This is necessary for the ClientHello storage mechanism
described in <xref target="client-hello-recording"/> because otherwise the server
needs to store an unlimited number of ClientHellos, and is a useful optimization for
self-contained single-use tickets because it allows efficient rejection of ClientHellos
which cannot be used for 0-RTT.</t>
        <t>In order to implement this mechanism, a server needs to store the time
that the server generated the session ticket, offset by an estimate of
the round-trip time between client and server. I.e.,</t>
        <artwork><![CDATA[
    adjusted_creation_time = creation_time + estimated_RTT
]]></artwork>
        <t>This value can be encoded in the ticket, thus avoiding the need to
keep state for each outstanding ticket. The server can determine the
client's view of the age of the ticket by subtracting the ticket's
"ticket_age_add" value from the "obfuscated_ticket_age" parameter in
the client's "pre_shared_key" extension. The server can determine the
expected_arrival_time of the ClientHello as:</t>
        <artwork><![CDATA[
    expected_arrival_time = adjusted_creation_time + clients_ticket_age
]]></artwork>
        <t>When a new ClientHello is received, the expected_arrival_time is then
compared against the current server wall clock time and if they differ
by more than a certain amount, 0-RTT is rejected, though the 1-RTT
handshake can be allowed to complete.</t>
        <t>There are several potential sources of error that might cause
mismatches between the expected_arrival_time and the measured
time. Variations in client and server clock
rates are likely to be minimal, though potentially the absolute
times may be off by large values.
Network propagation delays are the most likely causes of
a mismatch in legitimate values for elapsed time.  Both the
NewSessionTicket and ClientHello messages might be retransmitted and
therefore delayed, which might be hidden by TCP. For clients
on the Internet, this implies windows
on the order of ten seconds to account for errors in clocks and
variations in measurements; other deployment scenarios
may have different needs. Clock skew distributions are not
symmetric, so the optimal tradeoff may involve an asymmetric range
of permissible mismatch values.</t>
        <t>Note that freshness checking alone is not sufficient to prevent
replays because it does not detect them during the error window,
which -- depending on bandwidth and system capacity -- could include
billions of replays in real-world settings.  In addition, this
freshness checking is only done at the time the ClientHello is
received, and not when subsequent early Application Data records are
received. After early data is accepted, records may continue to be
streamed to the server over a longer time period.</t>
      </section>
    </section>
    <section anchor="compliance-requirements">
      <name>Compliance Requirements</name>
      <section anchor="mandatory-to-implement-cipher-suites">
        <name>Mandatory-to-Implement Cipher Suites</name>
        <t>In the absence of an application profile standard specifying otherwise:</t>
        <t>A TLS-compliant application MUST implement the TLS_AES_128_GCM_SHA256 <xref target="GCM"/>
cipher suite and SHOULD implement the TLS_AES_256_GCM_SHA384 <xref target="GCM"/> and
TLS_CHACHA20_POLY1305_SHA256 <xref target="RFC8439"/> cipher suites (see
<xref target="cipher-suites"/>).</t>
        <t>A TLS-compliant application MUST support digital signatures with
rsa_pkcs1_sha256 (for certificates), rsa_pss_rsae_sha256 (for
CertificateVerify and certificates), and ecdsa_secp256r1_sha256. A
TLS-compliant application MUST support key exchange with secp256r1
(NIST P-256) and SHOULD support key exchange with X25519 <xref target="RFC7748"/>.</t>
      </section>
      <section anchor="mti-extensions">
        <name>Mandatory-to-Implement Extensions</name>
        <t>In the absence of an application profile standard specifying otherwise, a
TLS-compliant application MUST implement the following TLS extensions:</t>
        <ul spacing="normal">
          <li>Supported Versions     ("supported_versions"; <xref target="supported-versions"/>)</li>
          <li>Cookie                 ("cookie"; <xref target="cookie"/>)</li>
          <li>Signature Algorithms   ("signature_algorithms"; <xref target="signature-algorithms"/>)</li>
          <li>Signature Algorithms Certificate  ("signature_algorithms_cert"; <xref target="signature-algorithms"/>)</li>
          <li>Negotiated Groups      ("supported_groups"; <xref target="supported-groups"/>)</li>
          <li>Key Share              ("key_share"; <xref target="key-share"/>)</li>
          <li>Server Name Indication ("server_name"; Section 3 of <xref target="RFC6066"/>)</li>
        </ul>
        <t>All implementations MUST send and use these extensions when offering
applicable features:</t>
        <ul spacing="normal">
          <li>"supported_versions"   is REQUIRED for all ClientHello, ServerHello, and HelloRetryRequest messages.</li>
          <li>"signature_algorithms" is REQUIRED for certificate authentication.</li>
          <li>"supported_groups"     is REQUIRED for ClientHello messages using
                        DHE or ECDHE key exchange.</li>
          <li>"key_share"            is REQUIRED for DHE or ECDHE key exchange.</li>
          <li>"pre_shared_key"       is REQUIRED for PSK key agreement.</li>
          <li>"psk_key_exchange_modes" is REQUIRED for PSK key agreement.</li>
        </ul>
        <t>A client is considered to be attempting to negotiate using this
specification if the ClientHello contains a "supported_versions"
extension with 0x0304 contained in its body.
Such a ClientHello message MUST meet the following requirements:</t>
        <ul spacing="normal">
          <li>If not containing a "pre_shared_key" extension, it MUST contain both
a "signature_algorithms" extension and a "supported_groups" extension.</li>
          <li>If containing a "supported_groups" extension, it MUST also contain a
"key_share" extension, and vice versa. An empty KeyShare.client_shares
list is permitted.</li>
        </ul>
        <t>Servers receiving a ClientHello which does not conform to these
requirements MUST abort the handshake with a "missing_extension"
alert.</t>
        <t>Additionally, all implementations MUST support the use of the "server_name"
extension with applications capable of using it.
Servers MAY require clients to send a valid "server_name" extension.
Servers requiring this extension SHOULD respond to a ClientHello
lacking a "server_name" extension by terminating the connection with a
"missing_extension" alert.</t>
      </section>
      <section anchor="protocol-invariants">
        <name>Protocol Invariants</name>
        <t>This section describes invariants that TLS endpoints and middleboxes MUST
follow. It also applies to earlier versions of TLS.</t>
        <t>TLS is designed to be securely and compatibly extensible. Newer clients or
servers, when communicating with newer peers, should negotiate the
most preferred common parameters. The TLS handshake provides downgrade
protection: Middleboxes passing traffic between a newer client and
newer server without terminating TLS should be unable to influence the
handshake (see <xref target="security-handshake"/>). At the same time, deployments
update at different rates, so a newer client or server MAY continue to
support older parameters, which would allow it to interoperate with
older endpoints.</t>
        <t>For this to work, implementations MUST correctly handle extensible fields:</t>
        <ul spacing="normal">
          <li>A client sending a ClientHello MUST support all parameters advertised in it.
Otherwise, the server may fail to interoperate by selecting one of those
parameters.</li>
          <li>A server receiving a ClientHello MUST correctly ignore all unrecognized
cipher suites, extensions, and other parameters. Otherwise, it may fail to
interoperate with newer clients. In TLS 1.3, a client receiving a
CertificateRequest or NewSessionTicket MUST also ignore all unrecognized
extensions.</li>
          <li>
            <t>A middlebox which terminates a TLS connection MUST behave as a compliant
TLS server (to the original client), including having a certificate
which the client is willing to accept, and also as a compliant TLS client (to the
original server), including verifying the original server's certificate.
In particular, it MUST generate its own ClientHello
containing only parameters it understands, and it MUST generate a fresh
ServerHello random value, rather than forwarding the endpoint's value.  </t>
            <t>
Note that TLS's protocol requirements and security analysis only apply to the
two connections separately. Safely deploying a TLS terminator requires
additional security considerations which are beyond the scope of this document.</t>
          </li>
          <li>
            <t>A middlebox which forwards ClientHello parameters it does not understand MUST
NOT process any messages beyond that ClientHello. It MUST forward all
subsequent traffic unmodified. Otherwise, it may fail to interoperate with
newer clients and servers.  </t>
            <t>
Forwarded ClientHellos may contain advertisements for features not supported
by the middlebox, so the response may include future TLS additions the
middlebox does not recognize. These additions MAY change any message beyond
the ClientHello arbitrarily. In particular, the values sent in the ServerHello
might change, the ServerHello format might change, and the TLSCiphertext format
might change.</t>
          </li>
        </ul>
        <t>The design of TLS 1.3 was constrained by widely deployed non-compliant TLS
middleboxes (see <xref target="middlebox"/>); however, it does not relax the invariants.
Those middleboxes continue to be non-compliant.</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>Security issues are discussed throughout this memo, especially in
<xref target="implementation-notes"/>, <xref target="backward-compatibility"/>, and <xref target="security-analysis"/>.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document uses several registries that were originally created in
<xref target="RFC4346"/> and updated in <xref target="RFC8446"/> and <xref target="RFC8447"/>. The changes
between <xref target="RFC8446"/> and <xref target="RFC8447"/> this document are described in <xref target="bis-changes"/>.
IANA has updated these to reference this document.</t>
      <t>The registries and their allocation policies are below:</t>
      <ul spacing="normal">
        <li>
          <t>TLS Cipher Suites registry: values with the first byte in the range
0-254 (decimal) are assigned via Specification Required <xref target="RFC8126"/>.
Values with the first byte 255 (decimal) are reserved for Private
Use <xref target="RFC8126"/>.  </t>
          <t>
IANA has added the cipher suites listed in <xref target="cipher-suites"/> to
the registry. The "Value" and "Description" columns are taken from the table.
The "DTLS-OK" and "Recommended" columns are both marked as "Y" for each new
cipher suite.</t>
        </li>
        <li>TLS ContentType registry: Future values are allocated via
Standards Action <xref target="RFC8126"/>.</li>
        <li>TLS Alerts registry: Future values are allocated via Standards
Action <xref target="RFC8126"/>. IANA [is requested to/has] populated this registry
with the values from <xref target="alert-messages-appendix"/>. The
"DTLS-OK" column is marked as "Y" for all such values.
Values marked as "_RESERVED" have comments
 describing their previous usage.</li>
        <li>TLS HandshakeType registry: Future values are allocated via
Standards Action <xref target="RFC8126"/>. IANA has updated this registry
to rename item 4 from "NewSessionTicket" to "new_session_ticket"
and populated this registry with the values from <xref target="handshake-protocol-appendix"/>.
The "DTLS-OK" column is marked as "Y" for all such values.
Values marked "_RESERVED" have comments describing their previous or
temporary usage.</li>
      </ul>
      <t>This document also uses the TLS ExtensionType Values registry originally created in
<xref target="RFC4366"/>. IANA has updated it to reference this document.  Changes to the
registry follow:</t>
      <ul spacing="normal">
        <li>
          <t>IANA has updated the registration policy as follows:  </t>
          <t>
Values with the first byte in the range 0-254 (decimal) are assigned
via Specification Required <xref target="RFC8126"/>.  Values with the first byte
255 (decimal) are reserved for Private Use <xref target="RFC8126"/>.</t>
        </li>
        <li>IANA has updated this registry to include the
"key_share", "pre_shared_key", "psk_key_exchange_modes",
"early_data", "cookie", "supported_versions",
"certificate_authorities", "oid_filters", "post_handshake_auth", and "signature_algorithms_cert"  extensions with the values defined in this document and the "Recommended" value of "Y".</li>
        <li>IANA has updated this registry to include a "TLS
1.3" column which lists the messages in which the extension may
appear. This column has been
initially populated from the table in <xref target="extensions"/>,
with any extension not listed there marked as "-" to indicate that
it is not used by TLS 1.3.</li>
      </ul>
      <t>This document updates an entry in the TLS Certificate Types registry
originally created in <xref target="RFC6091"/> and updated in <xref target="RFC8447"/>.  IANA has
updated the entry for value 1 to have the name "OpenPGP_RESERVED",
"Recommended" value "N", and comment "Used in TLS versions prior
to 1.3."  IANA has updated the entry for value 0 to have the name
"X509", "Recommended" value "Y", and comment "Was X.509 before TLS 1.3".</t>
      <t>This document updates an entry in the TLS Certificate Status Types
registry originally created in <xref target="RFC6961"/>.  IANA has updated the entry
for value 2 to have the name "ocsp_multi_RESERVED" and comment "Used
in TLS versions prior to 1.3".</t>
      <t>This document updates two entries in the TLS Supported Groups
registry (created under a different name by <xref target="RFC4492"/>; now maintained
by <xref target="RFC8422"/>) and updated by <xref target="RFC7919"/> and <xref target="RFC8447"/>.  The entries
for values 29 and 30 (x25519 and x448) have been updated to also
refer to this document.</t>
      <t>In addition, this document defines two new registries that are maintained
by IANA:</t>
      <ul spacing="normal">
        <li>TLS SignatureScheme registry: Values with the first byte in the range
0-253 (decimal) are assigned via Specification Required <xref target="RFC8126"/>.
Values with the first byte 254 or 255 (decimal) are reserved for Private
Use <xref target="RFC8126"/>. Values with the first byte in the range 0-6 or with the
second byte in the range 0-3 that are not currently allocated are reserved for
backward compatibility.
This registry has a "Recommended" column.
The registry has been initially populated with the values described in
<xref target="signature-algorithms"/>. The following values are marked as
"Recommended": ecdsa_secp256r1_sha256, ecdsa_secp384r1_sha384,
rsa_pss_rsae_sha256, rsa_pss_rsae_sha384, rsa_pss_rsae_sha512,
rsa_pss_pss_sha256, rsa_pss_pss_sha384, rsa_pss_pss_sha512, and ed25519.
The
"Recommended" column is assigned a value of "N" unless explicitly
 requested, and adding a value with a "Recommended" value of "Y"
 requires Standards Action <xref target="RFC8126"/>.  IESG Approval is REQUIRED
 for a Y-&gt;N transition.</li>
        <li>TLS PskKeyExchangeMode registry: Values in the
range 0-253 (decimal) are assigned via Specification Required
<xref target="RFC8126"/>.  The values 254 and 255 (decimal) are
reserved for Private Use <xref target="RFC8126"/>.  This registry has a
"Recommended" column.  The registry has been initially
populated with psk_ke (0) and psk_dhe_ke (1).  Both are marked as
"Recommended".  The
"Recommended" column is assigned a value of "N" unless explicitly
requested, and adding a value with a "Recommended" value of "Y"
requires Standards Action <xref target="RFC8126"/>.  IESG Approval is REQUIRED
for a Y-&gt;N transition.</li>
      </ul>
      <section anchor="bis-changes">
        <name>Changes for this RFC</name>
        <t>IANA [shall update/has updated] the TLS registries to reference this document.</t>
        <t>IANA [shall rename/has renamed] the "extended_master_secret" value
in the TLS ExtensionType Values registry to "extended_main_secret".</t>
        <t>IANA [shall create/has created] a value for the "general_error"
alert in the TLS Alerts Registry with the value given in <xref target="alert-protocol"/>.</t>
      </section>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="RFC2104" target="https://www.rfc-editor.org/info/rfc2104">
          <front>
            <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/>
            </author>
            <author fullname="R. Canetti" initials="R." surname="Canetti">
              <organization/>
            </author>
            <date month="February" year="1997"/>
            <abstract>
              <t>This document describes HMAC, a mechanism for message authentication using cryptographic hash functions. HMAC can be used with any iterative cryptographic 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 underlying hash function.  This memo provides information for the Internet community.  This 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>
        <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/>
            </author>
            <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 Community, 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="RFC5280" target="https://www.rfc-editor.org/info/rfc5280">
          <front>
            <title>Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile</title>
            <author fullname="D. Cooper" initials="D." surname="Cooper">
              <organization/>
            </author>
            <author fullname="S. Santesson" initials="S." surname="Santesson">
              <organization/>
            </author>
            <author fullname="S. Farrell" initials="S." surname="Farrell">
              <organization/>
            </author>
            <author fullname="S. Boeyen" initials="S." surname="Boeyen">
              <organization/>
            </author>
            <author fullname="R. Housley" initials="R." surname="Housley">
              <organization/>
            </author>
            <author fullname="W. Polk" initials="W." surname="Polk">
              <organization/>
            </author>
            <date month="May" year="2008"/>
            <abstract>
              <t>This memo profiles the X.509 v3 certificate and X.509 v2 certificate revocation list (CRL) for use in the Internet.  An overview of this approach and model is provided as an introduction.  The X.509 v3 certificate format is described in detail, with additional information regarding the format and semantics of Internet name forms.  Standard certificate extensions are described and two Internet-specific extensions are defined.  A set of required certificate extensions is specified.  The X.509 v2 CRL format is described in detail along with standard and Internet-specific extensions.  An algorithm for X.509 certification path validation is described.  An ASN.1 module and examples are provided in the appendices.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5280"/>
          <seriesInfo name="DOI" value="10.17487/RFC5280"/>
        </reference>
        <reference anchor="RFC5869" target="https://www.rfc-editor.org/info/rfc5869">
          <front>
            <title>HMAC-based Extract-and-Expand Key Derivation Function (HKDF)</title>
            <author fullname="H. Krawczyk" initials="H." surname="Krawczyk">
              <organization/>
            </author>
            <author fullname="P. Eronen" initials="P." surname="Eronen">
              <organization/>
            </author>
            <date month="May" year="2010"/>
            <abstract>
              <t>This document specifies a simple Hashed Message Authentication Code (HMAC)-based key derivation function (HKDF), which can be used as a building block in various protocols and applications.  The key derivation function (KDF) is intended to support a wide range of applications and requirements, and is conservative in its use of cryptographic hash functions.  This document is not an Internet  Standards Track specification; it is published for informational  purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5869"/>
          <seriesInfo name="DOI" value="10.17487/RFC5869"/>
        </reference>
        <reference anchor="RFC6066" target="https://www.rfc-editor.org/info/rfc6066">
          <front>
            <title>Transport Layer Security (TLS) Extensions: Extension Definitions</title>
            <author fullname="D. Eastlake 3rd" initials="D." surname="Eastlake 3rd">
              <organization/>
            </author>
            <date month="January" year="2011"/>
            <abstract>
              <t>This document provides specifications for existing TLS extensions.  It is a companion document for RFC 5246, "The Transport Layer Security (TLS) Protocol Version 1.2".  The extensions specified are server_name, max_fragment_length, client_certificate_url, trusted_ca_keys, truncated_hmac, and status_request.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6066"/>
          <seriesInfo name="DOI" value="10.17487/RFC6066"/>
        </reference>
        <reference anchor="RFC6655" target="https://www.rfc-editor.org/info/rfc6655">
          <front>
            <title>AES-CCM Cipher Suites for Transport Layer Security (TLS)</title>
            <author fullname="D. McGrew" initials="D." surname="McGrew">
              <organization/>
            </author>
            <author fullname="D. Bailey" initials="D." surname="Bailey">
              <organization/>
            </author>
            <date month="July" year="2012"/>
            <abstract>
              <t>This memo describes the use of the Advanced Encryption Standard (AES) in the Counter with Cipher Block Chaining - Message Authentication Code (CBC-MAC) Mode (CCM) of operation within Transport Layer Security (TLS) and Datagram TLS (DTLS) to provide confidentiality and data origin authentication.  The AES-CCM algorithm is amenable to compact implementations, making it suitable for constrained environments.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6655"/>
          <seriesInfo name="DOI" value="10.17487/RFC6655"/>
        </reference>
        <reference anchor="RFC8439" target="https://www.rfc-editor.org/info/rfc8439">
          <front>
            <title>ChaCha20 and Poly1305 for IETF Protocols</title>
            <author fullname="Y. Nir" initials="Y." surname="Nir">
              <organization/>
            </author>
            <author fullname="A. Langley" initials="A." surname="Langley">
              <organization/>
            </author>
            <date month="June" year="2018"/>
            <abstract>
              <t>This document defines the ChaCha20 stream cipher as well as the use of the Poly1305 authenticator, both as stand-alone algorithms and as a "combined mode", or Authenticated Encryption with Associated Data (AEAD) algorithm.</t>
              <t>RFC 7539, the predecessor of this document, was meant to serve as a stable reference and an implementation guide.  It was a product of the Crypto Forum Research Group (CFRG).  This document merges the errata filed against RFC 7539 and adds a little text to the Security Considerations section.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8439"/>
          <seriesInfo name="DOI" value="10.17487/RFC8439"/>
        </reference>
        <reference anchor="RFC7627" target="https://www.rfc-editor.org/info/rfc7627">
          <front>
            <title>Transport Layer Security (TLS) Session Hash and Extended Master Secret Extension</title>
            <author fullname="K. Bhargavan" initials="K." role="editor" surname="Bhargavan">
              <organization/>
            </author>
            <author fullname="A. Delignat-Lavaud" initials="A." surname="Delignat-Lavaud">
              <organization/>
            </author>
            <author fullname="A. Pironti" initials="A." surname="Pironti">
              <organization/>
            </author>
            <author fullname="A. Langley" initials="A." surname="Langley">
              <organization/>
            </author>
            <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 cryptographically bound to important session parameters such as the server certificate.  Consequently, it is possible for an active attacker to set up two sessions, one with a client and another with a server, such that the master secrets on the two sessions are the same.  Thereafter, any mechanism that relies on the master secret for authentication, including session resumption, becomes vulnerable to a man-in-the-middle attack, where the attacker can simply forward messages back and forth between the client and server.  This specification defines a TLS extension that contextually binds the master secret to a log of the full handshake that computes it, thus preventing such attacks.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7627"/>
          <seriesInfo name="DOI" value="10.17487/RFC7627"/>
        </reference>
        <reference anchor="RFC7748" target="https://www.rfc-editor.org/info/rfc7748">
          <front>
            <title>Elliptic Curves for Security</title>
            <author fullname="A. Langley" initials="A." surname="Langley">
              <organization/>
            </author>
            <author fullname="M. Hamburg" initials="M." surname="Hamburg">
              <organization/>
            </author>
            <author fullname="S. Turner" initials="S." surname="Turner">
              <organization/>
            </author>
            <date month="January" year="2016"/>
            <abstract>
              <t>This memo specifies two elliptic curves over prime fields that offer a high level of practical security in cryptographic applications, including Transport Layer Security (TLS).  These curves are intended to operate at the ~128-bit and ~224-bit security level, respectively, and are generated deterministically based on a list of required properties.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7748"/>
          <seriesInfo name="DOI" value="10.17487/RFC7748"/>
        </reference>
        <reference anchor="RFC7919" target="https://www.rfc-editor.org/info/rfc7919">
          <front>
            <title>Negotiated Finite Field Diffie-Hellman Ephemeral Parameters for Transport Layer Security (TLS)</title>
            <author fullname="D. Gillmor" initials="D." surname="Gillmor">
              <organization/>
            </author>
            <date month="August" year="2016"/>
            <abstract>
              <t>Traditional finite-field-based Diffie-Hellman (DH) key exchange during the Transport Layer Security (TLS) handshake suffers from a number of security, interoperability, and efficiency shortcomings. These shortcomings arise from lack of clarity about which DH group parameters TLS servers should offer and clients should accept.  This document offers a solution to these shortcomings for compatible peers by using a section of the TLS "Supported Groups Registry" (renamed from "EC Named Curve Registry" by this document) to establish common finite field DH parameters with known structure and a mechanism for peers to negotiate support for these groups.</t>
              <t>This document updates TLS versions 1.0 (RFC 2246), 1.1 (RFC 4346), and 1.2 (RFC 5246), as well as the TLS Elliptic Curve Cryptography (ECC) extensions (RFC 4492).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7919"/>
          <seriesInfo name="DOI" value="10.17487/RFC7919"/>
        </reference>
        <reference anchor="RFC8032" target="https://www.rfc-editor.org/info/rfc8032">
          <front>
            <title>Edwards-Curve Digital Signature Algorithm (EdDSA)</title>
            <author fullname="S. Josefsson" initials="S." surname="Josefsson">
              <organization/>
            </author>
            <author fullname="I. Liusvaara" initials="I." surname="Liusvaara">
              <organization/>
            </author>
            <date month="January" year="2017"/>
            <abstract>
              <t>This document describes elliptic curve signature scheme Edwards-curve Digital Signature Algorithm (EdDSA).  The algorithm is instantiated with recommended parameters for the edwards25519 and edwards448 curves.  An example implementation and test vectors are provided.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8032"/>
          <seriesInfo name="DOI" value="10.17487/RFC8032"/>
        </reference>
        <reference anchor="RFC8017" target="https://www.rfc-editor.org/info/rfc8017">
          <front>
            <title>PKCS #1: RSA Cryptography Specifications Version 2.2</title>
            <author fullname="K. Moriarty" initials="K." role="editor" surname="Moriarty">
              <organization/>
            </author>
            <author fullname="B. Kaliski" initials="B." surname="Kaliski">
              <organization/>
            </author>
            <author fullname="J. Jonsson" initials="J." surname="Jonsson">
              <organization/>
            </author>
            <author fullname="A. Rusch" initials="A." surname="Rusch">
              <organization/>
            </author>
            <date month="November" year="2016"/>
            <abstract>
              <t>This document provides recommendations for the implementation of public-key cryptography based on the RSA algorithm, covering cryptographic primitives, encryption schemes, signature schemes with appendix, and ASN.1 syntax for representing keys and for identifying the schemes.</t>
              <t>This document represents a republication of PKCS #1 v2.2 from RSA Laboratories' Public-Key Cryptography Standards (PKCS) series.  By publishing this RFC, change control is transferred to the IETF.</t>
              <t>This document also obsoletes RFC 3447.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8017"/>
          <seriesInfo name="DOI" value="10.17487/RFC8017"/>
        </reference>
        <reference anchor="RFC8126" target="https://www.rfc-editor.org/info/rfc8126">
          <front>
            <title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
            <author fullname="M. Cotton" initials="M." surname="Cotton">
              <organization/>
            </author>
            <author fullname="B. Leiba" initials="B." surname="Leiba">
              <organization/>
            </author>
            <author fullname="T. Narten" initials="T." surname="Narten">
              <organization/>
            </author>
            <date month="June" year="2017"/>
            <abstract>
              <t>Many protocols make use of points of extensibility that use constants to identify various protocol parameters.  To ensure that the values in these fields do not have conflicting uses and to promote interoperability, their allocations are often coordinated by a central record keeper.  For IETF protocols, that role is filled by the Internet Assigned Numbers Authority (IANA).</t>
              <t>To make assignments in a given registry prudently, guidance describing the conditions under which new values should be assigned, as well as when and how modifications to existing values can be made, is needed.  This document defines a framework for the documentation of these guidelines by specification authors, in order to assure that the provided guidance for the IANA Considerations is clear and addresses the various issues that are likely in the operation of a registry.</t>
              <t>This is the third edition of this document; it obsoletes RFC 5226.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="26"/>
          <seriesInfo name="RFC" value="8126"/>
          <seriesInfo name="DOI" value="10.17487/RFC8126"/>
        </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/>
            </author>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol  specifications.  This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the  defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="RFC5116" target="https://www.rfc-editor.org/info/rfc5116">
          <front>
            <title>An Interface and Algorithms for Authenticated Encryption</title>
            <author fullname="D. McGrew" initials="D." surname="McGrew">
              <organization/>
            </author>
            <date month="January" year="2008"/>
            <abstract>
              <t>This document defines algorithms for Authenticated Encryption with Associated Data (AEAD), and defines a uniform interface and a registry for such algorithms.  The interface and registry can be used as an application-independent set of cryptoalgorithm suites.  This approach provides advantages in efficiency and security, and promotes the reuse of crypto implementations.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5116"/>
          <seriesInfo name="DOI" value="10.17487/RFC5116"/>
        </reference>
        <reference anchor="X690">
          <front>
            <title>Information technology - ASN.1 encoding Rules: Specification of Basic Encoding Rules (BER), Canonical Encoding Rules (CER) and Distinguished Encoding Rules (DER)</title>
            <author>
              <organization>ITU-T</organization>
            </author>
            <date year="2021" month="February"/>
          </front>
          <seriesInfo name="ISO/IEC 8824-1:2021" value=""/>
        </reference>
        <reference anchor="DH76" target="http://dx.doi.org/10.1109/tit.1976.1055638">
          <front>
            <title>New directions in cryptography</title>
            <author fullname="W. Diffie" surname="Diffie"/>
            <author fullname="M. Hellman" surname="Hellman"/>
            <author>
              <organization>Institute of Electrical and Electronics Engineers (IEEE)</organization>
            </author>
            <date month="November" year="1976"/>
          </front>
          <refcontent>IEEE Transactions on Information Theory, vol. 22, no. 6, pp. 644-654</refcontent>
          <seriesInfo name="DOI" value="10.1109/tit.1976.1055638"/>
        </reference>
        <reference anchor="GCM">
          <front>
            <title>Recommendation for Block Cipher Modes of Operation: Galois/Counter Mode (GCM) and GMAC</title>
            <author initials="M." surname="Dworkin">
              <organization/>
            </author>
            <date year="2007" month="November"/>
          </front>
          <seriesInfo name="NIST" value="Special Publication 800-38D"/>
        </reference>
        <reference anchor="RFC8996" target="https://www.rfc-editor.org/info/rfc8996">
          <front>
            <title>Deprecating TLS 1.0 and TLS 1.1</title>
            <author fullname="K. Moriarty" initials="K." surname="Moriarty">
              <organization/>
            </author>
            <author fullname="S. Farrell" initials="S." surname="Farrell">
              <organization/>
            </author>
            <date month="March" year="2021"/>
            <abstract>
              <t>This document formally deprecates Transport Layer Security (TLS) versions 1.0 (RFC 2246) and 1.1 (RFC 4346). Accordingly, those documents have been moved to Historic status. These versions lack support for current and recommended cryptographic algorithms and mechanisms, and various government and industry profiles of applications using TLS now mandate avoiding these old TLS versions. TLS version 1.2 became the recommended version for IETF protocols in 2008 (subsequently being obsoleted by TLS version 1.3 in 2018), providing sufficient time to transition away from older versions. Removing support for older versions from implementations reduces the attack surface, reduces opportunity for misconfiguration, and streamlines library and product maintenance. </t>
              <t>This document also deprecates Datagram TLS (DTLS) version 1.0 (RFC 4347) but not DTLS version 1.2, and there is no DTLS version 1.1.</t>
              <t>This document updates many RFCs that normatively refer to TLS version 1.0 or TLS version 1.1, as described herein. This document also updates the best practices for TLS usage in RFC 7525; hence, it is part of BCP 195.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="195"/>
          <seriesInfo name="RFC" value="8996"/>
          <seriesInfo name="DOI" value="10.17487/RFC8996"/>
        </reference>
        <reference anchor="SHS" target="http://dx.doi.org/10.6028/nist.fips.180-4">
          <front>
            <title>Secure Hash Standard</title>
            <author fullname="Quynh H. Dang" surname="Dang"/>
            <author>
              <organization>National Institute of Standards and Technology</organization>
            </author>
            <date month="July" year="2015"/>
          </front>
          <seriesInfo name="DOI" value="10.6028/nist.fips.180-4"/>
        </reference>
        <reference anchor="RFC5756" target="https://www.rfc-editor.org/info/rfc5756">
          <front>
            <title>Updates for RSAES-OAEP and RSASSA-PSS Algorithm Parameters</title>
            <author fullname="S. Turner" initials="S." surname="Turner">
              <organization/>
            </author>
            <author fullname="D. Brown" initials="D." surname="Brown">
              <organization/>
            </author>
            <author fullname="K. Yiu" initials="K." surname="Yiu">
              <organization/>
            </author>
            <author fullname="R. Housley" initials="R." surname="Housley">
              <organization/>
            </author>
            <author fullname="T. Polk" initials="T." surname="Polk">
              <organization/>
            </author>
            <date month="January" year="2010"/>
            <abstract>
              <t>This document updates RFC 4055.  It updates the conventions for using the RSA Encryption Scheme - Optimal Asymmetric Encryption Padding (RSAES-OAEP) key transport algorithm in the Internet X.509 Public Key Infrastructure (PKI).  Specifically, it updates the conventions for algorithm parameters in an X.509 certificate's subjectPublicKeyInfo field.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5756"/>
          <seriesInfo name="DOI" value="10.17487/RFC5756"/>
        </reference>
        <reference anchor="RFC7301" target="https://www.rfc-editor.org/info/rfc7301">
          <front>
            <title>Transport Layer Security (TLS) Application-Layer Protocol Negotiation Extension</title>
            <author fullname="S. Friedl" initials="S." surname="Friedl">
              <organization/>
            </author>
            <author fullname="A. Popov" initials="A." surname="Popov">
              <organization/>
            </author>
            <author fullname="A. Langley" initials="A." surname="Langley">
              <organization/>
            </author>
            <author fullname="E. Stephan" initials="E." surname="Stephan">
              <organization/>
            </author>
            <date month="July" year="2014"/>
            <abstract>
              <t>This document describes a Transport Layer Security (TLS) extension for application-layer protocol negotiation within the TLS handshake. For instances in which multiple application protocols are supported on the same TCP or UDP port, this extension allows the application layer to negotiate which protocol will be used within the TLS connection.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7301"/>
          <seriesInfo name="DOI" value="10.17487/RFC7301"/>
        </reference>
        <reference anchor="RFC6962" target="https://www.rfc-editor.org/info/rfc6962">
          <front>
            <title>Certificate Transparency</title>
            <author fullname="B. Laurie" initials="B." surname="Laurie">
              <organization/>
            </author>
            <author fullname="A. Langley" initials="A." surname="Langley">
              <organization/>
            </author>
            <author fullname="E. Kasper" initials="E." surname="Kasper">
              <organization/>
            </author>
            <date month="June" year="2013"/>
            <abstract>
              <t>This document describes an experimental protocol for publicly logging the existence of Transport Layer Security (TLS) certificates as they are issued or observed, in a manner that allows anyone to audit certificate authority (CA) activity and notice the issuance of suspect certificates as well as to audit the certificate logs themselves.  The intent is that eventually clients would refuse 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 anchor="RFC6961" target="https://www.rfc-editor.org/info/rfc6961">
          <front>
            <title>The Transport Layer Security (TLS) Multiple Certificate Status Request Extension</title>
            <author fullname="Y. Pettersen" initials="Y." surname="Pettersen">
              <organization/>
            </author>
            <date month="June" year="2013"/>
            <abstract>
              <t>This document defines the Transport Layer Security (TLS) Certificate Status Version 2 Extension to allow clients to specify and support several certificate status methods.  (The use of the Certificate Status extension is commonly referred to as "OCSP stapling".)  Also defined is a new method based on the Online Certificate Status Protocol (OCSP) that servers can use to provide status information about not only the server's own certificate but also the status of intermediate certificates in the chain.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6961"/>
          <seriesInfo name="DOI" value="10.17487/RFC6961"/>
        </reference>
        <reference anchor="RFC6960" target="https://www.rfc-editor.org/info/rfc6960">
          <front>
            <title>X.509 Internet Public Key Infrastructure Online Certificate Status Protocol - OCSP</title>
            <author fullname="S. Santesson" initials="S." surname="Santesson">
              <organization/>
            </author>
            <author fullname="M. Myers" initials="M." surname="Myers">
              <organization/>
            </author>
            <author fullname="R. Ankney" initials="R." surname="Ankney">
              <organization/>
            </author>
            <author fullname="A. Malpani" initials="A." surname="Malpani">
              <organization/>
            </author>
            <author fullname="S. Galperin" initials="S." surname="Galperin">
              <organization/>
            </author>
            <author fullname="C. Adams" initials="C." surname="Adams">
              <organization/>
            </author>
            <date month="June" year="2013"/>
            <abstract>
              <t>This document specifies a protocol useful in determining the current status of a digital certificate without requiring Certificate Revocation Lists (CRLs). Additional mechanisms addressing PKIX operational requirements are specified in separate documents.  This document obsoletes RFCs 2560 and 6277.  It also updates RFC 5912.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6960"/>
          <seriesInfo name="DOI" value="10.17487/RFC6960"/>
        </reference>
        <reference anchor="RFC7507" target="https://www.rfc-editor.org/info/rfc7507">
          <front>
            <title>TLS Fallback Signaling Cipher Suite Value (SCSV) for Preventing Protocol Downgrade Attacks</title>
            <author fullname="B. Moeller" initials="B." surname="Moeller">
              <organization/>
            </author>
            <author fullname="A. Langley" initials="A." surname="Langley">
              <organization/>
            </author>
            <date month="April" year="2015"/>
            <abstract>
              <t>This document defines a Signaling Cipher Suite Value (SCSV) that prevents protocol downgrade attacks on the Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS) protocols.  It updates RFCs 2246, 4346, 4347, 5246, and 6347.  Server update considerations are included.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7507"/>
          <seriesInfo name="DOI" value="10.17487/RFC7507"/>
        </reference>
        <reference anchor="IEEE1363" target="http://dx.doi.org/10.1109/ieeestd.2000.92292">
          <front>
            <title>IEEE Standard Specifications for Public-Key Cryptography</title>
            <author>
              <organization>IEEE</organization>
            </author>
            <date day="23" month="September" year="2008"/>
          </front>
          <seriesInfo name="DOI" value="10.1109/ieeestd.2000.92292"/>
        </reference>
        <reference anchor="RFC5705" target="https://www.rfc-editor.org/info/rfc5705">
          <front>
            <title>Keying Material Exporters for Transport Layer Security (TLS)</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla">
              <organization/>
            </author>
            <date month="March" year="2010"/>
            <abstract>
              <t>A number of protocols wish to leverage Transport Layer Security (TLS) to perform key establishment but then use some of the keying material for their own purposes.  This document describes a general mechanism for allowing that.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5705"/>
          <seriesInfo name="DOI" value="10.17487/RFC5705"/>
        </reference>
        <reference anchor="RFC6979" target="https://www.rfc-editor.org/info/rfc6979">
          <front>
            <title>Deterministic Usage of the Digital Signature Algorithm (DSA) and Elliptic Curve Digital Signature Algorithm (ECDSA)</title>
            <author fullname="T. Pornin" initials="T." surname="Pornin">
              <organization/>
            </author>
            <date month="August" year="2013"/>
            <abstract>
              <t>This document defines a deterministic digital signature generation procedure.  Such signatures are compatible with standard Digital Signature Algorithm (DSA) and Elliptic Curve Digital Signature Algorithm (ECDSA) digital signatures and can be processed with unmodified verifiers, which need not be aware of the procedure described therein.  Deterministic signatures retain the cryptographic security features associated with digital signatures but can be more easily implemented in various environments, since they do not need access to a source of high-quality randomness.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6979"/>
          <seriesInfo name="DOI" value="10.17487/RFC6979"/>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="RFC4086" target="https://www.rfc-editor.org/info/rfc4086">
          <front>
            <title>Randomness Requirements for Security</title>
            <author fullname="D. Eastlake 3rd" initials="D." surname="Eastlake 3rd">
              <organization/>
            </author>
            <author fullname="J. Schiller" initials="J." surname="Schiller">
              <organization/>
            </author>
            <author fullname="S. Crocker" initials="S." surname="Crocker">
              <organization/>
            </author>
            <date month="June" year="2005"/>
            <abstract>
              <t>Security systems are built on strong cryptographic algorithms that foil pattern analysis attempts.  However, the security of these systems is dependent on generating secret quantities for passwords, cryptographic keys, and similar quantities.  The use of pseudo-random processes to generate secret quantities can result in pseudo-security. A sophisticated attacker may find it easier to reproduce the environment that produced the secret quantities and to search the resulting small set of possibilities than to locate the quantities in the whole of the potential number space.</t>
              <t>Choosing random quantities to foil a resourceful and motivated adversary is surprisingly difficult.  This document points out many pitfalls in using poor entropy sources or traditional pseudo-random number generation techniques for generating such quantities.  It recommends the use of truly random hardware techniques and shows that the existing hardware on many systems can be used for this purpose. It provides suggestions to ameliorate the problem when a hardware solution is not available, and it gives examples of how large such quantities need to be for some applications.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="106"/>
          <seriesInfo name="RFC" value="4086"/>
          <seriesInfo name="DOI" value="10.17487/RFC4086"/>
        </reference>
        <reference anchor="RFC4346" target="https://www.rfc-editor.org/info/rfc4346">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.1</title>
            <author fullname="T. Dierks" initials="T." surname="Dierks">
              <organization/>
            </author>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla">
              <organization/>
            </author>
            <date month="April" year="2006"/>
            <abstract>
              <t>This document specifies Version 1.1 of the Transport Layer Security (TLS) protocol.  The TLS protocol provides communications security over the Internet.  The protocol allows client/server applications to communicate in a way that is designed to prevent eavesdropping, tampering, or message forgery.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4346"/>
          <seriesInfo name="DOI" value="10.17487/RFC4346"/>
        </reference>
        <reference anchor="RFC4366" target="https://www.rfc-editor.org/info/rfc4366">
          <front>
            <title>Transport Layer Security (TLS) Extensions</title>
            <author fullname="S. Blake-Wilson" initials="S." surname="Blake-Wilson">
              <organization/>
            </author>
            <author fullname="M. Nystrom" initials="M." surname="Nystrom">
              <organization/>
            </author>
            <author fullname="D. Hopwood" initials="D." surname="Hopwood">
              <organization/>
            </author>
            <author fullname="J. Mikkelsen" initials="J." surname="Mikkelsen">
              <organization/>
            </author>
            <author fullname="T. Wright" initials="T." surname="Wright">
              <organization/>
            </author>
            <date month="April" year="2006"/>
            <abstract>
              <t>This document describes extensions that may be used to add functionality to Transport Layer Security (TLS).  It provides both generic extension mechanisms for the TLS handshake client and server hellos, and specific extensions using these generic mechanisms.</t>
              <t>The extensions may be used by TLS clients and servers.  The extensions are backwards compatible: communication is possible between TLS clients that support the extensions and TLS servers that do not support the extensions, and vice versa.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4366"/>
          <seriesInfo name="DOI" value="10.17487/RFC4366"/>
        </reference>
        <reference anchor="RFC4492" target="https://www.rfc-editor.org/info/rfc4492">
          <front>
            <title>Elliptic Curve Cryptography (ECC) Cipher Suites for Transport Layer Security (TLS)</title>
            <author fullname="S. Blake-Wilson" initials="S." surname="Blake-Wilson">
              <organization/>
            </author>
            <author fullname="N. Bolyard" initials="N." surname="Bolyard">
              <organization/>
            </author>
            <author fullname="V. Gupta" initials="V." surname="Gupta">
              <organization/>
            </author>
            <author fullname="C. Hawk" initials="C." surname="Hawk">
              <organization/>
            </author>
            <author fullname="B. Moeller" initials="B." surname="Moeller">
              <organization/>
            </author>
            <date month="May" year="2006"/>
            <abstract>
              <t>This document describes new key exchange algorithms based on Elliptic Curve Cryptography (ECC) for the Transport Layer Security (TLS) protocol.  In particular, it specifies the use of Elliptic Curve Diffie-Hellman (ECDH) key agreement in a TLS handshake and the use of Elliptic Curve Digital Signature Algorithm (ECDSA) as a new authentication mechanism.  This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4492"/>
          <seriesInfo name="DOI" value="10.17487/RFC4492"/>
        </reference>
        <reference anchor="RFC5077" target="https://www.rfc-editor.org/info/rfc5077">
          <front>
            <title>Transport Layer Security (TLS) Session Resumption without Server-Side State</title>
            <author fullname="J. Salowey" initials="J." surname="Salowey">
              <organization/>
            </author>
            <author fullname="H. Zhou" initials="H." surname="Zhou">
              <organization/>
            </author>
            <author fullname="P. Eronen" initials="P." surname="Eronen">
              <organization/>
            </author>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig">
              <organization/>
            </author>
            <date month="January" year="2008"/>
            <abstract>
              <t>This document describes a mechanism that enables the Transport Layer Security (TLS) server to resume sessions and avoid keeping per-client session state.  The TLS server encapsulates the session state into a ticket and forwards it to the client.  The client can subsequently resume a session using the obtained ticket.  This document obsoletes RFC 4507.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5077"/>
          <seriesInfo name="DOI" value="10.17487/RFC5077"/>
        </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/>
            </author>
            <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 Internet.  The protocol allows client/server applications to communicate in a way that is designed to prevent eavesdropping, tampering, or message forgery.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5246"/>
          <seriesInfo name="DOI" value="10.17487/RFC5246"/>
        </reference>
        <reference anchor="RFC5764" target="https://www.rfc-editor.org/info/rfc5764">
          <front>
            <title>Datagram Transport Layer Security (DTLS) Extension to Establish Keys for the Secure Real-time Transport Protocol (SRTP)</title>
            <author fullname="D. McGrew" initials="D." surname="McGrew">
              <organization/>
            </author>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla">
              <organization/>
            </author>
            <date month="May" year="2010"/>
            <abstract>
              <t>This document describes a Datagram Transport Layer Security (DTLS) extension to establish keys for Secure RTP (SRTP) and Secure RTP Control Protocol (SRTCP) flows.  DTLS keying happens on the media path, independent of any out-of-band signalling channel present. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5764"/>
          <seriesInfo name="DOI" value="10.17487/RFC5764"/>
        </reference>
        <reference anchor="RFC5929" target="https://www.rfc-editor.org/info/rfc5929">
          <front>
            <title>Channel Bindings for TLS</title>
            <author fullname="J. Altman" initials="J." surname="Altman">
              <organization/>
            </author>
            <author fullname="N. Williams" initials="N." surname="Williams">
              <organization/>
            </author>
            <author fullname="L. Zhu" initials="L." surname="Zhu">
              <organization/>
            </author>
            <date month="July" year="2010"/>
            <abstract>
              <t>This document defines three channel binding types for Transport Layer Security (TLS), tls-unique, tls-server-end-point, and tls-unique-for-telnet, in accordance with RFC 5056 (On Channel Binding).</t>
              <t>Note that based on implementation experience, this document changes the original definition of 'tls-unique' channel binding type in the channel binding type IANA registry.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5929"/>
          <seriesInfo name="DOI" value="10.17487/RFC5929"/>
        </reference>
        <reference anchor="RFC6176" target="https://www.rfc-editor.org/info/rfc6176">
          <front>
            <title>Prohibiting Secure Sockets Layer (SSL) Version 2.0</title>
            <author fullname="S. Turner" initials="S." surname="Turner">
              <organization/>
            </author>
            <author fullname="T. Polk" initials="T." surname="Polk">
              <organization/>
            </author>
            <date month="March" year="2011"/>
            <abstract>
              <t>This document requires that when Transport Layer Security (TLS) clients and servers establish connections, they never negotiate the use of  Secure Sockets Layer (SSL) version 2.0.  This document updates the  backward compatibility sections found in the Transport Layer Security (TLS). [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6176"/>
          <seriesInfo name="DOI" value="10.17487/RFC6176"/>
        </reference>
        <reference anchor="RFC6091" target="https://www.rfc-editor.org/info/rfc6091">
          <front>
            <title>Using OpenPGP Keys for Transport Layer Security (TLS) Authentication</title>
            <author fullname="N. Mavrogiannopoulos" initials="N." surname="Mavrogiannopoulos">
              <organization/>
            </author>
            <author fullname="D. Gillmor" initials="D." surname="Gillmor">
              <organization/>
            </author>
            <date month="February" year="2011"/>
            <abstract>
              <t>This memo defines Transport Layer Security (TLS) extensions and associated semantics that allow clients and servers to negotiate the use of OpenPGP certificates for a TLS session, and specifies how to transport OpenPGP certificates via TLS.  It also defines the registry for non-X.509 certificate types.  This document is not an Internet  Standards Track specification; it is published for informational purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6091"/>
          <seriesInfo name="DOI" value="10.17487/RFC6091"/>
        </reference>
        <reference anchor="RFC6520" target="https://www.rfc-editor.org/info/rfc6520">
          <front>
            <title>Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS) Heartbeat Extension</title>
            <author fullname="R. Seggelmann" initials="R." surname="Seggelmann">
              <organization/>
            </author>
            <author fullname="M. Tuexen" initials="M." surname="Tuexen">
              <organization/>
            </author>
            <author fullname="M. Williams" initials="M." surname="Williams">
              <organization/>
            </author>
            <date month="February" year="2012"/>
            <abstract>
              <t>This document describes the Heartbeat Extension for the Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS) protocols.</t>
              <t>The Heartbeat Extension provides a new protocol for TLS/DTLS allowing the usage of keep-alive functionality without performing a renegotiation and a basis for path MTU (PMTU) discovery for DTLS.   [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6520"/>
          <seriesInfo name="DOI" value="10.17487/RFC6520"/>
        </reference>
        <reference anchor="RFC8305" target="https://www.rfc-editor.org/info/rfc8305">
          <front>
            <title>Happy Eyeballs Version 2: Better Connectivity Using Concurrency</title>
            <author fullname="D. Schinazi" initials="D." surname="Schinazi">
              <organization/>
            </author>
            <author fullname="T. Pauly" initials="T." surname="Pauly">
              <organization/>
            </author>
            <date month="December" year="2017"/>
            <abstract>
              <t>Many communication protocols operating over the modern Internet use hostnames.  These often resolve to multiple IP addresses, each of which may have different performance and connectivity characteristics.  Since specific addresses or address families (IPv4 or IPv6) may be blocked, broken, or sub-optimal on a network, clients that attempt multiple connections in parallel have a chance of establishing a connection more quickly.  This document specifies requirements for algorithms that reduce this user-visible delay and provides an example algorithm, referred to as "Happy Eyeballs".  This document obsoletes the original algorithm description in RFC 6555.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8305"/>
          <seriesInfo name="DOI" value="10.17487/RFC8305"/>
        </reference>
        <reference anchor="RFC7230" target="https://www.rfc-editor.org/info/rfc7230">
          <front>
            <title>Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing</title>
            <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding">
              <organization/>
            </author>
            <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke">
              <organization/>
            </author>
            <date month="June" year="2014"/>
            <abstract>
              <t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems.  This document provides an overview of HTTP architecture and its associated terminology, defines the "http" and "https" Uniform Resource Identifier (URI) schemes, defines the HTTP/1.1 message syntax and parsing requirements, and describes related security concerns for implementations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7230"/>
          <seriesInfo name="DOI" value="10.17487/RFC7230"/>
        </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 Transport Layer Security (DTLS)</title>
            <author fullname="P. Wouters" initials="P." role="editor" surname="Wouters">
              <organization/>
            </author>
            <author fullname="H. Tschofenig" initials="H." role="editor" surname="Tschofenig">
              <organization/>
            </author>
            <author fullname="J. Gilmore" initials="J." surname="Gilmore">
              <organization/>
            </author>
            <author fullname="S. Weiler" initials="S." surname="Weiler">
              <organization/>
            </author>
            <author fullname="T. Kivinen" initials="T." surname="Kivinen">
              <organization/>
            </author>
            <date month="June" year="2014"/>
            <abstract>
              <t>This document specifies a new certificate type and two TLS extensions for exchanging raw public keys in Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS).  The new certificate type allows raw public keys to be used for authentication.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7250"/>
          <seriesInfo name="DOI" value="10.17487/RFC7250"/>
        </reference>
        <reference anchor="RFC7465" target="https://www.rfc-editor.org/info/rfc7465">
          <front>
            <title>Prohibiting RC4 Cipher Suites</title>
            <author fullname="A. Popov" initials="A." surname="Popov">
              <organization/>
            </author>
            <date month="February" year="2015"/>
            <abstract>
              <t>This document requires that Transport Layer Security (TLS) clients and servers never negotiate the use of RC4 cipher suites when they establish connections.  This applies to all TLS versions.  This document updates RFCs 5246, 4346, and 2246.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7465"/>
          <seriesInfo name="DOI" value="10.17487/RFC7465"/>
        </reference>
        <reference anchor="RFC7568" target="https://www.rfc-editor.org/info/rfc7568">
          <front>
            <title>Deprecating Secure Sockets Layer Version 3.0</title>
            <author fullname="R. Barnes" initials="R." surname="Barnes">
              <organization/>
            </author>
            <author fullname="M. Thomson" initials="M." surname="Thomson">
              <organization/>
            </author>
            <author fullname="A. Pironti" initials="A." surname="Pironti">
              <organization/>
            </author>
            <author fullname="A. Langley" initials="A." surname="Langley">
              <organization/>
            </author>
            <date month="June" year="2015"/>
            <abstract>
              <t>The Secure Sockets Layer version 3.0 (SSLv3), as specified in RFC 6101, is not sufficiently secure.  This document requires that SSLv3 not be used.  The replacement versions, in particular, Transport Layer Security (TLS) 1.2 (RFC 5246), are considerably more secure and capable protocols.</t>
              <t>This document updates the backward compatibility section of RFC 5246 and its predecessors to prohibit fallback to SSLv3.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7568"/>
          <seriesInfo name="DOI" value="10.17487/RFC7568"/>
        </reference>
        <reference anchor="RFC7624" target="https://www.rfc-editor.org/info/rfc7624">
          <front>
            <title>Confidentiality in the Face of Pervasive Surveillance: A Threat Model and Problem Statement</title>
            <author fullname="R. Barnes" initials="R." surname="Barnes">
              <organization/>
            </author>
            <author fullname="B. Schneier" initials="B." surname="Schneier">
              <organization/>
            </author>
            <author fullname="C. Jennings" initials="C." surname="Jennings">
              <organization/>
            </author>
            <author fullname="T. Hardie" initials="T." surname="Hardie">
              <organization/>
            </author>
            <author fullname="B. Trammell" initials="B." surname="Trammell">
              <organization/>
            </author>
            <author fullname="C. Huitema" initials="C." surname="Huitema">
              <organization/>
            </author>
            <author fullname="D. Borkmann" initials="D." surname="Borkmann">
              <organization/>
            </author>
            <date month="August" year="2015"/>
            <abstract>
              <t>Since the initial revelations of pervasive surveillance in 2013, several classes of attacks on Internet communications have been discovered.  In this document, we develop a threat model that describes these attacks on Internet confidentiality.  We assume an attacker that is interested in undetected, indiscriminate eavesdropping.  The threat model is based on published, verified attacks.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7624"/>
          <seriesInfo name="DOI" value="10.17487/RFC7624"/>
        </reference>
        <reference anchor="RFC7685" target="https://www.rfc-editor.org/info/rfc7685">
          <front>
            <title>A Transport Layer Security (TLS) ClientHello Padding Extension</title>
            <author fullname="A. Langley" initials="A." surname="Langley">
              <organization/>
            </author>
            <date month="October" year="2015"/>
            <abstract>
              <t>This memo describes a Transport Layer Security (TLS) extension that can be used to pad ClientHello messages to a desired size.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7685"/>
          <seriesInfo name="DOI" value="10.17487/RFC7685"/>
        </reference>
        <reference anchor="RFC8937" target="https://www.rfc-editor.org/info/rfc8937">
          <front>
            <title>Randomness Improvements for Security Protocols</title>
            <author fullname="C. Cremers" initials="C." surname="Cremers">
              <organization/>
            </author>
            <author fullname="L. Garratt" initials="L." surname="Garratt">
              <organization/>
            </author>
            <author fullname="S. Smyshlyaev" initials="S." surname="Smyshlyaev">
              <organization/>
            </author>
            <author fullname="N. Sullivan" initials="N." surname="Sullivan">
              <organization/>
            </author>
            <author fullname="C. Wood" initials="C." surname="Wood">
              <organization/>
            </author>
            <date month="October" year="2020"/>
            <abstract>
              <t>Randomness is a crucial ingredient for Transport Layer Security (TLS) and related security protocols.  Weak or predictable "cryptographically secure" pseudorandom number generators (CSPRNGs) can be abused or exploited for malicious purposes. An initial entropy source that seeds a CSPRNG might be weak or broken as well, which can also lead to critical and systemic security problems. This document describes a way for security protocol implementations to augment their CSPRNGs using long-term private keys. This improves randomness from broken or otherwise subverted CSPRNGs.</t>
              <t>This document is a product of the Crypto Forum Research Group (CFRG) in the IRTF.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8937"/>
          <seriesInfo name="DOI" value="10.17487/RFC8937"/>
        </reference>
        <reference anchor="SSL2">
          <front>
            <title>The SSL Protocol</title>
            <author initials="K." surname="Hickman" fullname="Kipp Hickman">
              <organization>Netscape Communications Corp.</organization>
            </author>
            <date year="1995" month="February" day="09"/>
          </front>
        </reference>
        <reference anchor="TIMING">
          <front>
            <title>Remote Timing Attacks Are Practical</title>
            <author initials="D." surname="Boneh">
              <organization/>
            </author>
            <author initials="D." surname="Brumley">
              <organization/>
            </author>
            <date year="2003"/>
          </front>
          <seriesInfo name="USENIX" value="Security Symposium"/>
        </reference>
        <reference anchor="X501">
          <front>
            <title>Information Technology - Open Systems Interconnection - The Directory: Models</title>
            <author>
              <organization>ITU-T</organization>
            </author>
            <date year="2019" month="October"/>
          </front>
          <seriesInfo name="ISO/IEC 9594-2:2020" value=""/>
        </reference>
        <reference anchor="PSK-FINISHED" target="https://www.ietf.org/mail-archive/web/tls/current/msg18215.html">
          <front>
            <title>Revision 10: possible attack if client authentication is allowed during PSK</title>
            <author initials="C." surname="Cremers">
              <organization/>
            </author>
            <author initials="M." surname="Horvat">
              <organization/>
            </author>
            <author initials="T." surname="van der Merwe">
              <organization/>
            </author>
            <author initials="S." surname="Scott">
              <organization/>
            </author>
            <date year="2015"/>
          </front>
          <seriesInfo name="message to the TLS mailing list," value=""/>
        </reference>
        <reference anchor="CHHSV17" target="https://www.ietf.org/mail-archive/web/tls/current/msg22382.html">
          <front>
            <title>Awkward Handshake: Possible mismatch of client/server view on client authentication in post-handshake mode in Revision 18</title>
            <author initials="C." surname="Cremers">
              <organization/>
            </author>
            <author initials="M." surname="Horvat">
              <organization/>
            </author>
            <author initials="J." surname="Hoyland">
              <organization/>
            </author>
            <author initials="T." surname="van der Merwe">
              <organization/>
            </author>
            <author initials="S." surname="Scott">
              <organization/>
            </author>
            <date year="2017" month="February"/>
          </front>
          <seriesInfo name="message to the TLS mailing list" value=""/>
        </reference>
        <reference anchor="AEAD-LIMITS" target="http://www.isg.rhul.ac.uk/~kp/TLS-AEbounds.pdf">
          <front>
            <title>Limits on Authenticated Encryption Use in TLS</title>
            <author initials="A." surname="Luykx">
              <organization/>
            </author>
            <author initials="K." surname="Paterson">
              <organization/>
            </author>
            <date year="2017" month="August"/>
          </front>
        </reference>
        <reference anchor="HGFS15">
          <front>
            <title>Prying Open Pandora's Box: KCI Attacks against TLS</title>
            <author initials="C." surname="Hlauschek">
              <organization/>
            </author>
            <author initials="M." surname="Gruber">
              <organization/>
            </author>
            <author initials="F." surname="Fankhauser">
              <organization/>
            </author>
            <author initials="C." surname="Schanes">
              <organization/>
            </author>
            <date year="2015"/>
          </front>
          <seriesInfo name="Proceedings of USENIX Workshop on Offensive Technologies" value=""/>
        </reference>
        <reference anchor="FGSW16" target="http://ieeexplore.ieee.org/document/7546517/">
          <front>
            <title>Key Confirmation in Key Exchange: A Formal Treatment and Implications for TLS 1.3</title>
            <author initials="M." surname="Fischlin">
              <organization/>
            </author>
            <author initials="F." surname="Guenther">
              <organization/>
            </author>
            <author initials="B." surname="Schmidt">
              <organization/>
            </author>
            <author initials="B." surname="Warinschi">
              <organization/>
            </author>
            <date year="2016"/>
          </front>
          <seriesInfo name="Proceedings of IEEE Symposium on Security and Privacy (Oakland) 2016" value=""/>
        </reference>
        <reference anchor="FW15">
          <front>
            <title>Factoring RSA Keys With TLS Perfect Forward Secrecy</title>
            <author initials="F." surname="Weimer">
              <organization>Red Hat Product Security</organization>
            </author>
            <date year="2015" month="September"/>
          </front>
        </reference>
        <reference anchor="BDFKPPRSZZ16" target="https://eprint.iacr.org/2016/1178">
          <front>
            <title>Implementing and Proving the TLS 1.3 Record Layer</title>
            <author initials="K." surname="Bhargavan">
              <organization/>
            </author>
            <author initials="A." surname="Delignat-Lavaud">
              <organization/>
            </author>
            <author initials="C." surname="Fournet">
              <organization/>
            </author>
            <author initials="M." surname="Kohlweiss">
              <organization/>
            </author>
            <author initials="J." surname="Pan">
              <organization/>
            </author>
            <author initials="J." surname="Protzenko">
              <organization/>
            </author>
            <author initials="A." surname="Rastogi">
              <organization/>
            </author>
            <author initials="N." surname="Swamy">
              <organization/>
            </author>
            <author initials="S." surname="Zanella-Beguelin">
              <organization/>
            </author>
            <author initials="J." surname="Zinzindohoue">
              <organization/>
            </author>
            <date year="2016" month="December"/>
          </front>
          <seriesInfo name="Proceedings of IEEE Symposium on Security and Privacy (San Jose) 2017" value=""/>
        </reference>
        <reference anchor="Blei98">
          <front>
            <title>Chosen Ciphertext Attacks against Protocols Based on RSA Encryption Standard PKCS #1</title>
            <author initials="D." surname="Bleichenbacher">
              <organization/>
            </author>
            <date year="1998"/>
          </front>
          <seriesInfo name="Proceedings of CRYPTO '98" value=""/>
        </reference>
        <reference anchor="BMMRT15" target="https://eprint.iacr.org/2015/394">
          <front>
            <title>Augmented Secure Channels and the Goal of the TLS 1.3 Record Layer</title>
            <author initials="C." surname="Badertscher">
              <organization/>
            </author>
            <author initials="C." surname="Matt">
              <organization/>
            </author>
            <author initials="U." surname="Maurer">
              <organization/>
            </author>
            <author initials="P." surname="Rogaway">
              <organization/>
            </author>
            <author initials="B." surname="Tackmann">
              <organization/>
            </author>
            <date year="2015" month="September"/>
          </front>
          <seriesInfo name="ProvSec 2015" value=""/>
        </reference>
        <reference anchor="BT16" target="https://eprint.iacr.org/2016/564">
          <front>
            <title>The Multi-User Security of Authenticated Encryption: AES-GCM in TLS 1.3</title>
            <author initials="M." surname="Bellare">
              <organization/>
            </author>
            <author initials="B." surname="Tackmann">
              <organization/>
            </author>
            <date year="2016" month="July"/>
          </front>
          <seriesInfo name="Proceedings of CRYPTO 2016" value=""/>
        </reference>
        <reference anchor="Kraw16" target="https://eprint.iacr.org/2016/711">
          <front>
            <title>A Unilateral-to-Mutual Authentication Compiler for Key Exchange (with Applications to Client Authentication in TLS 1.3</title>
            <author initials="H." surname="Krawczyk">
              <organization/>
            </author>
            <date year="2016" month="October"/>
          </front>
          <seriesInfo name="Proceedings of ACM CCS 2016" value=""/>
        </reference>
        <reference anchor="KW16" target="https://eprint.iacr.org/2015/978">
          <front>
            <title>The OPTLS Protocol and TLS 1.3</title>
            <author initials="H." surname="Krawczyk">
              <organization/>
            </author>
            <author initials="H." surname="Wee">
              <organization/>
            </author>
            <date year="2016"/>
          </front>
          <seriesInfo name="Proceedings of Euro S&amp;P 2016" value=""/>
        </reference>
        <reference anchor="DFGS15" target="https://eprint.iacr.org/2015/914">
          <front>
            <title>A Cryptographic Analysis of the TLS 1.3 draft-10 Full and Pre-shared Key Handshake Protocol</title>
            <author initials="B." surname="Dowling">
              <organization/>
            </author>
            <author initials="M." surname="Fischlin">
              <organization/>
            </author>
            <author initials="F." surname="Guenther">
              <organization/>
            </author>
            <author initials="D." surname="Stebila">
              <organization/>
            </author>
            <date year="2016" month="October"/>
          </front>
          <seriesInfo name="Proceedings of ACM CCS 2015" value=""/>
        </reference>
        <reference anchor="DFGS16" target="https://eprint.iacr.org/2016/081">
          <front>
            <title>A Cryptographic Analysis of the TLS 1.3 draft-10 Full and Pre-shared Key Handshake Protocol</title>
            <author initials="B." surname="Dowling">
              <organization/>
            </author>
            <author initials="M." surname="Fischlin">
              <organization/>
            </author>
            <author initials="F." surname="Guenther">
              <organization/>
            </author>
            <author initials="D." surname="Stebila">
              <organization/>
            </author>
            <date year="2016" month="February"/>
          </front>
          <seriesInfo name="TRON 2016" value=""/>
        </reference>
        <reference anchor="FG17" target="https://eprint.iacr.org/2017/082">
          <front>
            <title>Replay Attacks on Zero Round-Trip Time: The Case of the TLS 1.3 Handshake Candidates</title>
            <author initials="M." surname="Fischlin">
              <organization/>
            </author>
            <author initials="F." surname="Guenther">
              <organization/>
            </author>
            <date year="2017"/>
          </front>
          <seriesInfo name="Proceedings of Euro S&amp;P 2017" value=""/>
        </reference>
        <reference anchor="Kraw10" target="https://eprint.iacr.org/2010/264">
          <front>
            <title>Cryptographic Extraction and Key Derivation: The HKDF Scheme</title>
            <author initials="H." surname="Krawczyk">
              <organization/>
            </author>
            <date year="2010"/>
          </front>
          <seriesInfo name="Proceedings of CRYPTO 2010" value=""/>
        </reference>
        <reference anchor="Mac17" target="https://github.com/tlswg/tls13-spec/issues/1001">
          <front>
            <title>Security Review of TLS1.3 0-RTT</title>
            <author initials="C." surname="MacCarthaigh">
              <organization/>
            </author>
            <date year="2017" month="March"/>
          </front>
        </reference>
        <reference anchor="Res17a" target="https://www.ietf.org/mail-archive/web/tls/current/msg25091.html">
          <front>
            <title>Preliminary data on Firefox TLS 1.3 Middlebox experiment</title>
            <author initials="E." surname="Rescorla">
              <organization/>
            </author>
            <date year="2017"/>
          </front>
          <seriesInfo name="message to the TLS mailing list" value=""/>
        </reference>
        <reference anchor="Res17b" target="https://www.ietf.org/mail-archive/web/tls/current/msg25179.html">
          <front>
            <title>More compatibility measurement results</title>
            <author initials="E." surname="Rescorla">
              <organization/>
            </author>
            <date year="2017" month="December"/>
          </front>
          <seriesInfo name="message to the TLS mailing list" value=""/>
        </reference>
        <reference anchor="Ben17a" target="https://datatracker.ietf.org/meeting/100/materials/slides-100-tls-sessa-tls13/">
          <front>
            <title>Presentation before the TLS WG at IETF 100</title>
            <author initials="D." surname="Benjamin">
              <organization/>
            </author>
            <date year="2017"/>
          </front>
        </reference>
        <reference anchor="Ben17b" target="https://www.ietf.org/mail-archive/web/tls/current/msg25168.html">
          <front>
            <title>Additional TLS 1.3 results from Chrome</title>
            <author initials="D." surname="Benjamin">
              <organization/>
            </author>
            <date year="2017"/>
          </front>
        </reference>
        <reference anchor="PS18" target="https://eprint.iacr.org/2018/634">
          <front>
            <title>Partially specified channels: The TLS 1.3 record layer without elision</title>
            <author initials="C." surname="Patton">
              <organization/>
            </author>
            <author initials="T." surname="Shrimpton">
              <organization/>
            </author>
            <date year="2018"/>
          </front>
        </reference>
        <reference anchor="FETCH" target="https://fetch.spec.whatwg.org/">
          <front>
            <title>Fetch Standard</title>
            <author>
              <organization>WHATWG</organization>
            </author>
            <date year="2023" month="March"/>
          </front>
        </reference>
        <reference anchor="DSA-1571-1" target="https://www.debian.org/security/2008/dsa-1571">
          <front>
            <title>openssl -- predictable random number generator</title>
            <author>
              <organization>The Debian Project</organization>
            </author>
            <date year="2008" month="May"/>
          </front>
        </reference>
        <reference anchor="RSA" target="http://dx.doi.org/10.1145/359340.359342">
          <front>
            <title>A method for obtaining digital signatures and public-key cryptosystems</title>
            <author fullname="R. L. Rivest" surname="Rivest">
              <organization>MIT Lab. for Computer Science and Department of Mathematics, Cambridge, MA</organization>
            </author>
            <author fullname="A. Shamir" surname="Shamir">
              <organization>MIT Lab. for Computer Science and Department of Mathematics, Cambridge, MA</organization>
            </author>
            <author fullname="L. Adleman" surname="Adleman">
              <organization>MIT Lab. for Computer Science and Department of Mathematics, Cambridge, MA</organization>
            </author>
            <author>
              <organization>Association for Computing Machinery (ACM)</organization>
            </author>
            <date month="February" year="1978"/>
            <abstract>
              <t>
            An encryption method is presented with the novel property that publicly revealing an encryption key does not thereby reveal the corresponding decryption key. This has two important consequences: (1) Couriers or other secure means are not needed to transmit keys, since a message can be enciphered using an encryption key publicly revealed by the intented recipient. Only he can decipher the message, since only he knows the corresponding decryption key. (2) A message can be "signed" using a privately held decryption key. Anyone can verify this signature using the corresponding publicly revealed encryption key. Signatures cannot be forged, and a signer cannot later deny the validity of his signature. This has obvious applications in "electronic mail" and "electronic funds transfer" systems. A message is encrypted by representing it as a number M, raising M to a publicly specified power e, and then taking the remainder when the result is divided by the publicly specified product,
              </t>
            </abstract>
          </front>
          <refcontent>Communications of the ACM, vol. 21, no. 2, pp. 120-126</refcontent>
          <seriesInfo name="DOI" value="10.1145/359340.359342"/>
        </reference>
        <reference anchor="DSS" target="http://dx.doi.org/10.6028/nist.fips.186-5">
          <front>
            <title>Digital Signature Standard (DSS)</title>
            <author fullname="Dustin Moody" surname="Moody">
              <organization>National Institute of Standards and Technology</organization>
            </author>
            <author>
              <organization>National Institute of Standards and Technology</organization>
            </author>
            <date year="2023"/>
            <abstract>
              <t>&lt;jats:p /&gt;</t>
            </abstract>
          </front>
          <seriesInfo name="DOI" value="10.6028/nist.fips.186-5"/>
        </reference>
        <reference anchor="RFC3552" target="https://www.rfc-editor.org/info/rfc3552">
          <front>
            <title>Guidelines for Writing RFC Text on Security Considerations</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla">
              <organization/>
            </author>
            <author fullname="B. Korver" initials="B." surname="Korver">
              <organization/>
            </author>
            <date month="July" year="2003"/>
            <abstract>
              <t>All RFCs are required to have a Security Considerations section. Historically, such sections have been relatively weak.  This document provides guidelines to RFC authors on how to write a good Security Considerations section.   This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="72"/>
          <seriesInfo name="RFC" value="3552"/>
          <seriesInfo name="DOI" value="10.17487/RFC3552"/>
        </reference>
        <reference anchor="I-D.ietf-uta-rfc6125bis" target="https://datatracker.ietf.org/doc/html/draft-ietf-uta-rfc6125bis-12">
          <front>
            <title>Service Identity in TLS</title>
            <author fullname="Peter Saint-Andre" initials="P." surname="Saint-Andre">
              <organization>independent</organization>
            </author>
            <author fullname="Rich Salz" initials="R." surname="Salz">
              <organization>Akamai Technologies</organization>
            </author>
            <date day="13" month="March" year="2023"/>
            <abstract>
              <t>   Many application technologies enable secure communication between two
   entities by means of Transport Layer Security (TLS) with Internet
   Public Key Infrastructure Using X.509 (PKIX) certificates.  This
   document specifies procedures for representing and verifying the
   identity of application services in such interactions.

   This document obsoletes RFC 6125.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-uta-rfc6125bis-12"/>
        </reference>
        <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 message 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="RFC7924" target="https://www.rfc-editor.org/info/rfc7924">
          <front>
            <title>Transport Layer Security (TLS) Cached Information Extension</title>
            <author fullname="S. Santesson" initials="S." surname="Santesson">
              <organization/>
            </author>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig">
              <organization/>
            </author>
            <date month="July" year="2016"/>
            <abstract>
              <t>Transport Layer Security (TLS) handshakes often include fairly static information, such as the server certificate and a list of trusted certification authorities (CAs).  This information can be of considerable size, particularly if the server certificate is bundled with a complete certificate chain (i.e., the certificates of intermediate CAs up to the root CA).</t>
              <t>This document defines an extension that allows a TLS client to inform a server of cached information, thereby enabling the server to omit already available information.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7924"/>
          <seriesInfo name="DOI" value="10.17487/RFC7924"/>
        </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 for datagram protocols.  The protocol allows client/server applications to communicate in a way that is designed to prevent eavesdropping, tampering, or message forgery.  The DTLS protocol is based on the Transport Layer Security (TLS) protocol and provides equivalent security guarantees.  Datagram semantics of the underlying 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="ECDP" target="http://dx.doi.org/10.6028/nist.sp.800-186">
          <front>
            <title>Recommendations for Discrete Logarithm-based Cryptography:</title>
            <author fullname="Dustin Moody" surname="Moody"/>
            <author>
              <organization>National Institute of Standards and Technology</organization>
            </author>
            <date year="2022"/>
            <abstract>
              <t>&lt;jats:p /&gt;</t>
            </abstract>
          </front>
          <seriesInfo name="DOI" value="10.6028/nist.sp.800-186"/>
        </reference>
        <reference anchor="SLOTH" target="http://dx.doi.org/10.14722/ndss.2016.23418">
          <front>
            <title>Transcript Collision Attacks: Breaking Authentication in TLS, IKE, and SSH</title>
            <author fullname="Karthikeyan Bhargavan" surname="Bhargavan"/>
            <author fullname="Gaetan Leurent" surname="Leurent"/>
            <author>
              <organization>Internet Society</organization>
            </author>
            <date year="2016"/>
          </front>
          <refcontent>Proceedings 2016 Network and Distributed System Security Symposium</refcontent>
          <seriesInfo name="DOI" value="10.14722/ndss.2016.23418"/>
        </reference>
        <reference anchor="RFC8422" target="https://www.rfc-editor.org/info/rfc8422">
          <front>
            <title>Elliptic Curve Cryptography (ECC) Cipher Suites for Transport Layer Security (TLS) Versions 1.2 and Earlier</title>
            <author fullname="Y. Nir" initials="Y." surname="Nir">
              <organization/>
            </author>
            <author fullname="S. Josefsson" initials="S." surname="Josefsson">
              <organization/>
            </author>
            <author fullname="M. Pegourie-Gonnard" initials="M." surname="Pegourie-Gonnard">
              <organization/>
            </author>
            <date month="August" year="2018"/>
            <abstract>
              <t>This document describes key exchange algorithms based on Elliptic Curve Cryptography (ECC) for the Transport Layer Security (TLS) protocol.  In particular, it specifies the use of Ephemeral Elliptic Curve Diffie-Hellman (ECDHE) key agreement in a TLS handshake and the use of the Elliptic Curve Digital Signature Algorithm (ECDSA) and Edwards-curve Digital Signature Algorithm (EdDSA) as authentication mechanisms.</t>
              <t>This document obsoletes RFC 4492.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8422"/>
          <seriesInfo name="DOI" value="10.17487/RFC8422"/>
        </reference>
        <reference anchor="KEYAGREEMENT" target="http://dx.doi.org/10.6028/nist.sp.800-56ar2">
          <front>
            <title>Recommendation for Pair-Wise Key Establishment Schemes Using Discrete Logarithm Cryptography</title>
            <author fullname="Elaine Barker" surname="Barker"/>
            <author fullname="Lily Chen" surname="Chen"/>
            <author fullname="Allen Roginsky" surname="Roginsky"/>
            <author fullname="Miles Smid" surname="Smid"/>
            <author>
              <organization>National Institute of Standards and Technology</organization>
            </author>
            <date month="May" year="2013"/>
          </front>
          <seriesInfo name="DOI" value="10.6028/nist.sp.800-56ar2"/>
        </reference>
        <reference anchor="RFC8449" target="https://www.rfc-editor.org/info/rfc8449">
          <front>
            <title>Record Size Limit Extension for TLS</title>
            <author fullname="M. Thomson" initials="M." surname="Thomson">
              <organization/>
            </author>
            <date month="August" year="2018"/>
            <abstract>
              <t>An extension to Transport Layer Security (TLS) is defined that allows endpoints to negotiate the maximum size of protected records that each will send the other.</t>
              <t>This replaces the maximum fragment length extension defined in RFC 6066.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8449"/>
          <seriesInfo name="DOI" value="10.17487/RFC8449"/>
        </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/>
            </author>
            <author fullname="S. Turner" initials="S." surname="Turner">
              <organization/>
            </author>
            <date month="August" year="2018"/>
            <abstract>
              <t>This document describes a number of changes to TLS and DTLS IANA registries that range from adding notes to the registry all the way to changing the 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 process.</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="RFC8448" target="https://www.rfc-editor.org/info/rfc8448">
          <front>
            <title>Example Handshake Traces for TLS 1.3</title>
            <author fullname="M. Thomson" initials="M." surname="Thomson">
              <organization/>
            </author>
            <date month="January" year="2019"/>
            <abstract>
              <t>This document includes examples of TLS 1.3 handshakes.  Private keys and inputs are provided so that these handshakes might be reproduced. Intermediate values, including secrets, traffic keys, and IVs, are shown so that implementations might be checked incrementally against these values.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8448"/>
          <seriesInfo name="DOI" value="10.17487/RFC8448"/>
        </reference>
        <reference anchor="CHECKOWAY" target="http://dx.doi.org/10.1145/2976749.2978395">
          <front>
            <title>A Systematic Analysis of the Juniper Dual EC Incident</title>
            <author fullname="Stephen Checkoway" surname="Checkoway">
              <organization>University of Illinois at Chicago, Chicago, IL, USA</organization>
            </author>
            <author fullname="Jacob Maskiewicz" surname="Maskiewicz">
              <organization>UC San Diego, La Jolla, CA, USA</organization>
            </author>
            <author fullname="Christina Garman" surname="Garman">
              <organization>Johns Hopkins University, Baltimore, MD, USA</organization>
            </author>
            <author fullname="Joshua Fried" surname="Fried">
              <organization>University of Pennsylvania, Philadelphia, PA, USA</organization>
            </author>
            <author fullname="Shaanan Cohney" surname="Cohney">
              <organization>University of Pennsylvania, Philadelphia, PA, USA</organization>
            </author>
            <author fullname="Matthew Green" surname="Green">
              <organization>Johns Hopkins University, Baltimore, MD, USA</organization>
            </author>
            <author fullname="Nadia Heninger" surname="Heninger">
              <organization>University of Pennsylvania, Philadelphia, PA, USA</organization>
            </author>
            <author fullname="Ralf-Philipp Weinmann" surname="Weinmann">
              <organization>Comsecuris, Duisburg, Germany</organization>
            </author>
            <author fullname="Eric Rescorla" surname="Rescorla">
              <organization>UC San Diego, La Jolla, CA, USA</organization>
            </author>
            <author fullname="Hovav Shacham" surname="Shacham">
              <organization>UC San Diego, La Jolla, CA, USA</organization>
            </author>
            <author>
              <organization>ACM</organization>
            </author>
            <date day="24" month="October" year="2016"/>
          </front>
          <refcontent>Proceedings of the 2016 ACM SIGSAC Conference on Computer and Communications Security</refcontent>
          <seriesInfo name="DOI" value="10.1145/2976749.2978395"/>
        </reference>
        <reference anchor="RFC8879" target="https://www.rfc-editor.org/info/rfc8879">
          <front>
            <title>TLS Certificate Compression</title>
            <author fullname="A. Ghedini" initials="A." surname="Ghedini">
              <organization/>
            </author>
            <author fullname="V. Vasiliev" initials="V." surname="Vasiliev">
              <organization/>
            </author>
            <date month="December" year="2020"/>
            <abstract>
              <t>In TLS handshakes, certificate chains often take up the majority of the bytes transmitted.</t>
              <t>This document describes how certificate chains can be compressed to reduce the amount of data transmitted and avoid some round trips.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8879"/>
          <seriesInfo name="DOI" value="10.17487/RFC8879"/>
        </reference>
        <reference anchor="I-D.ietf-tls-esni" target="https://datatracker.ietf.org/doc/html/draft-ietf-tls-esni-15">
          <front>
            <title>TLS Encrypted Client Hello</title>
            <author fullname="Eric Rescorla" initials="E." surname="Rescorla">
              <organization>RTFM, Inc.</organization>
            </author>
            <author fullname="Kazuho Oku" initials="K." surname="Oku">
              <organization>Fastly</organization>
            </author>
            <author fullname="Nick Sullivan" initials="N." surname="Sullivan">
              <organization>Cloudflare</organization>
            </author>
            <author fullname="Christopher A. Wood" initials="C. A." surname="Wood">
              <organization>Cloudflare</organization>
            </author>
            <date day="3" month="October" year="2022"/>
            <abstract>
              <t>   This document describes a mechanism in Transport Layer Security (TLS)
   for encrypting a ClientHello message under a server public key.

Discussion Venues

   This note is to be removed before publishing as an RFC.

   Source for this draft and an issue tracker can be found at
   https://github.com/tlswg/draft-ietf-tls-esni
   (https://github.com/tlswg/draft-ietf-tls-esni).

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-tls-esni-15"/>
        </reference>
        <reference anchor="RFC6101" target="https://www.rfc-editor.org/info/rfc6101">
          <front>
            <title>The Secure Sockets Layer (SSL) Protocol Version 3.0</title>
            <author fullname="A. Freier" initials="A." surname="Freier">
              <organization/>
            </author>
            <author fullname="P. Karlton" initials="P." surname="Karlton">
              <organization/>
            </author>
            <author fullname="P. Kocher" initials="P." surname="Kocher">
              <organization/>
            </author>
            <date month="August" year="2011"/>
            <abstract>
              <t>This document is published as a historical record of the SSL 3.0 protocol.  The original Abstract follows.</t>
              <t>This document specifies version 3.0 of the Secure Sockets Layer (SSL 3.0) protocol, a security protocol that provides communications privacy over the Internet.  The protocol allows client/server applications to communicate in a way that is designed to prevent eavesdropping, tampering, or message forgery.  This document defines a  Historic Document for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6101"/>
          <seriesInfo name="DOI" value="10.17487/RFC6101"/>
        </reference>
        <reference anchor="RFC2246" target="https://www.rfc-editor.org/info/rfc2246">
          <front>
            <title>The TLS Protocol Version 1.0</title>
            <author fullname="T. Dierks" initials="T." surname="Dierks">
              <organization/>
            </author>
            <author fullname="C. Allen" initials="C." surname="Allen">
              <organization/>
            </author>
            <date month="January" year="1999"/>
            <abstract>
              <t>This document specifies Version 1.0 of the Transport Layer Security (TLS) protocol. The TLS protocol provides communications privacy over the Internet. The protocol allows client/server applications to communicate in a way that is designed to prevent eavesdropping, tampering, or message forgery.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2246"/>
          <seriesInfo name="DOI" value="10.17487/RFC2246"/>
        </reference>
        <reference anchor="CK01" target="http://dx.doi.org/10.1007/3-540-44987-6_28">
          <front>
            <title>Analysis of Key-Exchange Protocols and Their Use for Building Secure Channels</title>
            <author fullname="Ran Canetti" surname="Canetti"/>
            <author fullname="Hugo Krawczyk" surname="Krawczyk"/>
            <author>
              <organization>Springer Berlin Heidelberg</organization>
            </author>
            <date year="2001"/>
          </front>
          <refcontent>Lecture Notes in Computer Science, pp. 453-474</refcontent>
          <seriesInfo name="DOI" value="10.1007/3-540-44987-6_28"/>
        </reference>
        <reference anchor="BBFGKZ16" target="http://dx.doi.org/10.1109/sp.2016.37">
          <front>
            <title>Downgrade Resilience in Key-Exchange Protocols</title>
            <author fullname="Karthikeyan Bhargavan" surname="Bhargavan"/>
            <author fullname="Christina Brzuska" surname="Brzuska"/>
            <author fullname="Cedric Fournet" surname="Fournet"/>
            <author fullname="Matthew Green" surname="Green"/>
            <author fullname="Markulf Kohlweiss" surname="Kohlweiss"/>
            <author fullname="Santiago Zanella-Beguelin" surname="Zanella-Beguelin"/>
            <author>
              <organization>IEEE</organization>
            </author>
            <date month="May" year="2016"/>
          </front>
          <refcontent>2016 IEEE Symposium on Security and Privacy (SP)</refcontent>
          <seriesInfo name="DOI" value="10.1109/sp.2016.37"/>
        </reference>
        <reference anchor="DOW92" target="http://dx.doi.org/10.1007/bf00124891">
          <front>
            <title>Authentication and authenticated key exchanges</title>
            <author fullname="Whitfield Diffie" surname="Diffie"/>
            <author fullname="Paul C. Van Oorschot" surname="Van Oorschot"/>
            <author fullname="Michael J. Wiener" surname="Wiener"/>
            <author>
              <organization>Springer Science and Business Media LLC</organization>
            </author>
            <date month="June" year="1992"/>
          </front>
          <refcontent>Designs, Codes and Cryptography, vol. 2, no. 2, pp. 107-125</refcontent>
          <seriesInfo name="DOI" value="10.1007/bf00124891"/>
        </reference>
        <reference anchor="SIGMA" target="http://dx.doi.org/10.1007/978-3-540-45146-4_24">
          <front>
            <title>SIGMA: The ‘SIGn-and-MAc’ Approach to Authenticated Diffie-Hellman and Its Use in the IKE Protocols</title>
            <author fullname="Hugo Krawczyk" surname="Krawczyk"/>
            <author>
              <organization>Springer Berlin Heidelberg</organization>
            </author>
            <date year="2003"/>
          </front>
          <refcontent>Advances in Cryptology - CRYPTO 2003, pp. 400-425</refcontent>
          <seriesInfo name="DOI" value="10.1007/978-3-540-45146-4_24"/>
        </reference>
        <reference anchor="RFC8773" target="https://www.rfc-editor.org/info/rfc8773">
          <front>
            <title>TLS 1.3 Extension for Certificate-Based Authentication with an External Pre-Shared Key</title>
            <author fullname="R. Housley" initials="R." surname="Housley">
              <organization/>
            </author>
            <date month="March" year="2020"/>
            <abstract>
              <t>This document specifies a TLS 1.3 extension that allows a server to authenticate with a combination of a certificate and an external pre-shared key (PSK).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8773"/>
          <seriesInfo name="DOI" value="10.17487/RFC8773"/>
        </reference>
        <reference anchor="CCG16" target="http://dx.doi.org/10.1109/csf.2016.19">
          <front>
            <title>On Post-compromise Security</title>
            <author fullname="Katriel Cohn-Gordon" surname="Cohn-Gordon"/>
            <author fullname="Cas Cremers" surname="Cremers"/>
            <author fullname="Luke Garratt" surname="Garratt"/>
            <author>
              <organization>IEEE</organization>
            </author>
            <date month="June" year="2016"/>
          </front>
          <refcontent>2016 IEEE 29th Computer Security Foundations Symposium (CSF)</refcontent>
          <seriesInfo name="DOI" value="10.1109/csf.2016.19"/>
        </reference>
        <reference anchor="CHSV16" target="http://dx.doi.org/10.1109/sp.2016.35">
          <front>
            <title>Automated Analysis and Verification of TLS 1.3: 0-RTT, Resumption and Delayed Authentication</title>
            <author fullname="Cas Cremers" surname="Cremers"/>
            <author fullname="Marko Horvat" surname="Horvat"/>
            <author fullname="Sam Scott" surname="Scott"/>
            <author fullname="Thyla van der Merwe" surname="van der Merwe"/>
            <author>
              <organization>IEEE</organization>
            </author>
            <date month="May" year="2016"/>
          </front>
          <refcontent>2016 IEEE Symposium on Security and Privacy (SP)</refcontent>
          <seriesInfo name="DOI" value="10.1109/sp.2016.35"/>
        </reference>
        <reference anchor="LXZFH16" target="http://dx.doi.org/10.1109/sp.2016.36">
          <front>
            <title>Multiple Handshakes Security of TLS 1.3 Candidates</title>
            <author fullname="Xinyu Li" surname="Li"/>
            <author fullname="Jing Xu" surname="Xu"/>
            <author fullname="Zhenfeng Zhang" surname="Zhang"/>
            <author fullname="Dengguo Feng" surname="Feng"/>
            <author fullname="Honggang Hu" surname="Hu"/>
            <author>
              <organization>IEEE</organization>
            </author>
            <date month="May" year="2016"/>
          </front>
          <refcontent>2016 IEEE Symposium on Security and Privacy (SP)</refcontent>
          <seriesInfo name="DOI" value="10.1109/sp.2016.36"/>
        </reference>
        <reference anchor="BBK17" target="http://dx.doi.org/10.1109/sp.2017.26">
          <front>
            <title>Verified Models and Reference Implementations for the TLS 1.3 Standard Candidate</title>
            <author fullname="Karthikeyan Bhargavan" surname="Bhargavan"/>
            <author fullname="Bruno Blanchet" surname="Blanchet"/>
            <author fullname="Nadim Kobeissi" surname="Kobeissi"/>
            <author>
              <organization>IEEE</organization>
            </author>
            <date month="May" year="2017"/>
          </front>
          <refcontent>2017 IEEE Symposium on Security and Privacy (SP)</refcontent>
          <seriesInfo name="DOI" value="10.1109/sp.2017.26"/>
        </reference>
        <reference anchor="REKEY" target="http://dx.doi.org/10.1007/3-540-44448-3_42">
          <front>
            <title>Increasing the Lifetime of a Key: A Comparative Analysis of the Security of Re-keying Techniques</title>
            <author fullname="Michel Abdalla" surname="Abdalla"/>
            <author fullname="Mihir Bellare" surname="Bellare"/>
            <author>
              <organization>Springer Berlin Heidelberg</organization>
            </author>
            <date year="2000"/>
          </front>
          <refcontent>Advances in Cryptology — ASIACRYPT 2000, pp. 546-559</refcontent>
          <seriesInfo name="DOI" value="10.1007/3-540-44448-3_42"/>
        </reference>
        <reference anchor="CLINIC" target="http://dx.doi.org/10.1007/978-3-319-08506-7_8">
          <front>
            <title>I Know Why You Went to the Clinic: Risks and Realization of HTTPS Traffic Analysis</title>
            <author fullname="Brad Miller" surname="Miller"/>
            <author fullname="Ling Huang" surname="Huang"/>
            <author fullname="A. D. Joseph" surname="Joseph"/>
            <author fullname="J. D. Tygar" surname="Tygar"/>
            <author>
              <organization>Springer International Publishing</organization>
            </author>
            <date year="2014"/>
          </front>
          <refcontent>Privacy Enhancing Technologies, pp. 143-163</refcontent>
          <seriesInfo name="DOI" value="10.1007/978-3-319-08506-7_8"/>
        </reference>
        <reference anchor="HCJC16" target="http://dx.doi.org/10.1186/s13635-016-0030-7">
          <front>
            <title>HTTPS traffic analysis and client identification using passive SSL/TLS fingerprinting</title>
            <author fullname="Martin Husák" surname="Husák"/>
            <author fullname="Milan Čermák" surname="Čermák"/>
            <author fullname="Tomáš Jirsík" surname="Jirsík"/>
            <author fullname="Pavel Čeleda" surname="Čeleda"/>
            <author>
              <organization>Springer Science and Business Media LLC</organization>
            </author>
            <date day="26" month="February" year="2016"/>
          </front>
          <refcontent>EURASIP Journal on Information Security, vol. 2016, no. 1</refcontent>
          <seriesInfo name="DOI" value="10.1186/s13635-016-0030-7"/>
        </reference>
        <reference anchor="JSS15" target="http://dx.doi.org/10.1145/2810103.2813657">
          <front>
            <title>On the Security of TLS 1.3 and QUIC Against Weaknesses in PKCS#1 v1.5 Encryption</title>
            <author fullname="Tibor Jager" surname="Jager">
              <organization>Horst Görtz Institute, Ruhr University Bochum, Bochum, Germany</organization>
            </author>
            <author fullname="Jörg Schwenk" surname="Schwenk">
              <organization>Horst Görtz Institute, Ruhr University Bochum, Bochum, Germany</organization>
            </author>
            <author fullname="Juraj Somorovsky" surname="Somorovsky">
              <organization>Horst Görtz Institute, Ruhr University Bochum, Bochum, Germany</organization>
            </author>
            <author>
              <organization>ACM</organization>
            </author>
            <date day="12" month="October" year="2015"/>
          </front>
          <refcontent>Proceedings of the 22nd ACM SIGSAC Conference on Computer and Communications Security</refcontent>
          <seriesInfo name="DOI" value="10.1145/2810103.2813657"/>
        </reference>
      </references>
    </references>
    <section anchor="state-machine">
      <name>State Machine</name>
      <t>This appendix provides a summary of the legal state transitions for the
client and server handshakes.  State names (in all capitals, e.g.,
START) have no formal meaning but are provided for ease of
comprehension.  Actions which are taken only in certain circumstances are
indicated in []. The notation "K_{send,recv} = foo" means "set the send/recv
key to the given key".</t>
      <section anchor="client">
        <name>Client</name>
        <artwork><![CDATA[
                           START <----+
            Send ClientHello |        | Recv HelloRetryRequest
       [K_send = early data] |        |
                             v        |
        /                 WAIT_SH ----+
        |                    | Recv ServerHello
        |                    | K_recv = handshake
    Can |                    V
   send |                 WAIT_EE
  early |                    | Recv EncryptedExtensions
   data |           +--------+--------+
        |     Using |                 | Using certificate
        |       PSK |                 v
        |           |            WAIT_CERT_CR
        |           |        Recv |       | Recv CertificateRequest
        |           | Certificate |       v
        |           |             |    WAIT_CERT
        |           |             |       | Recv Certificate
        |           |             v       v
        |           |              WAIT_CV
        |           |                 | Recv CertificateVerify
        |           +> WAIT_FINISHED <+
        |                  | Recv Finished
        \                  | [Send EndOfEarlyData]
                           | K_send = handshake
                           | [Send Certificate [+ CertificateVerify]]
 Can send                  | Send Finished
 app data   -->            | K_send = K_recv = application
 after here                v
                       CONNECTED
]]></artwork>
        <t>Note that with the transitions as shown above, clients may send alerts
that derive from post-ServerHello messages in the clear or with the
early data keys. If clients need to send such alerts, they SHOULD
first rekey to the handshake keys if possible.</t>
      </section>
      <section anchor="server">
        <name>Server</name>
        <artwork><![CDATA[
                             START <-----+
              Recv ClientHello |         | Send HelloRetryRequest
                               v         |
                            RECVD_CH ----+
                               | Select parameters
                               v
                            NEGOTIATED
                               | Send ServerHello
                               | K_send = handshake
                               | Send EncryptedExtensions
                               | [Send CertificateRequest]
Can send                       | [Send Certificate + CertificateVerify]
app data                       | Send Finished
after   -->                    | K_send = application
here                  +--------+--------+
             No 0-RTT |                 | 0-RTT
                      |                 |
  K_recv = handshake  |                 | K_recv = early data
[Skip decrypt errors] |    +------> WAIT_EOED -+
                      |    |       Recv |      | Recv EndOfEarlyData
                      |    | early data |      | K_recv = handshake
                      |    +------------+      |
                      |                        |
                      +> WAIT_FLIGHT2 <--------+
                               |
                      +--------+--------+
              No auth |                 | Cert-based client auth
                      |                 |
                      |                 v
                      |             WAIT_CERT
                      |        Recv |       | Recv Certificate
                      |       empty |       v
                      | Certificate |    WAIT_CV
                      |             |       | Recv
                      |             v       | CertificateVerify
                      +-> WAIT_FINISHED <---+
                               | Recv Finished
                               | K_recv = application
                               v
                           CONNECTED
]]></artwork>
      </section>
    </section>
    <section anchor="protocol-data-structures-and-constant-values">
      <name>Protocol Data Structures and Constant Values</name>
      <t>This appendix provides the normative protocol types and the definitions
for constants.  Values listed as
"_RESERVED" were used in previous versions of TLS and are listed here
for completeness. TLS 1.3 implementations MUST NOT send them but
might receive them from older TLS implementations.</t>
      <section anchor="record-layer-1">
        <name>Record Layer</name>
        <artwork><![CDATA[
   enum {
       invalid(0),
       change_cipher_spec(20),
       alert(21),
       handshake(22),
       application_data(23),
       (255)
   } ContentType;

   struct {
       ContentType type;
       ProtocolVersion legacy_record_version;
       uint16 length;
       opaque fragment[TLSPlaintext.length];
   } TLSPlaintext;

   struct {
       opaque content[TLSPlaintext.length];
       ContentType type;
       uint8 zeros[length_of_padding];
   } TLSInnerPlaintext;

   struct {
       ContentType opaque_type = application_data; /* 23 */
       ProtocolVersion legacy_record_version = 0x0303; /* TLS v1.2 */
       uint16 length;
       opaque encrypted_record[TLSCiphertext.length];
   } TLSCiphertext;
]]></artwork>
      </section>
      <section anchor="alert-messages-appendix">
        <name>Alert Messages</name>
        <artwork><![CDATA[
   enum { warning(1), fatal(2), (255) } AlertLevel;

   enum {
       close_notify(0),
       unexpected_message(10),
       bad_record_mac(20),
       decryption_failed_RESERVED(21),
       record_overflow(22),
       decompression_failure_RESERVED(30),
       handshake_failure(40),
       no_certificate_RESERVED(41),
       bad_certificate(42),
       unsupported_certificate(43),
       certificate_revoked(44),
       certificate_expired(45),
       certificate_unknown(46),
       illegal_parameter(47),
       unknown_ca(48),
       access_denied(49),
       decode_error(50),
       decrypt_error(51),
       export_restriction_RESERVED(60),
       protocol_version(70),
       insufficient_security(71),
       internal_error(80),
       inappropriate_fallback(86),
       user_canceled(90),
       no_renegotiation_RESERVED(100),
       missing_extension(109),
       unsupported_extension(110),
       certificate_unobtainable_RESERVED(111),
       unrecognized_name(112),
       bad_certificate_status_response(113),
       bad_certificate_hash_value_RESERVED(114),
       unknown_psk_identity(115),
       certificate_required(116),
       general_error(117),
       no_application_protocol(120),
       (255)
   } AlertDescription;

   struct {
       AlertLevel level;
       AlertDescription description;
   } Alert;
]]></artwork>
      </section>
      <section anchor="handshake-protocol-appendix">
        <name>Handshake Protocol</name>
        <artwork><![CDATA[
   enum {
       hello_request_RESERVED(0),
       client_hello(1),
       server_hello(2),
       hello_verify_request_RESERVED(3),
       new_session_ticket(4),
       end_of_early_data(5),
       hello_retry_request_RESERVED(6),
       encrypted_extensions(8),
       certificate(11),
       server_key_exchange_RESERVED(12),
       certificate_request(13),
       server_hello_done_RESERVED(14),
       certificate_verify(15),
       client_key_exchange_RESERVED(16),
       finished(20),
       certificate_url_RESERVED(21),
       certificate_status_RESERVED(22),
       supplemental_data_RESERVED(23),
       key_update(24),
       message_hash(254),
       (255)
   } HandshakeType;

   struct {
       HandshakeType msg_type;    /* handshake type */
       uint24 length;             /* remaining bytes in message */
       select (Handshake.msg_type) {
           case client_hello:          ClientHello;
           case server_hello:          ServerHello;
           case end_of_early_data:     EndOfEarlyData;
           case encrypted_extensions:  EncryptedExtensions;
           case certificate_request:   CertificateRequest;
           case certificate:           Certificate;
           case certificate_verify:    CertificateVerify;
           case finished:              Finished;
           case new_session_ticket:    NewSessionTicket;
           case key_update:            KeyUpdate;
       };
   } Handshake;
]]></artwork>
        <section anchor="key-exchange-messages-1">
          <name>Key Exchange Messages</name>
          <artwork><![CDATA[
   uint16 ProtocolVersion;
   opaque Random[32];

   uint8 CipherSuite[2];    /* Cryptographic suite selector */

   struct {
       ProtocolVersion legacy_version = 0x0303;    /* TLS v1.2 */
       Random random;
       opaque legacy_session_id<0..32>;
       CipherSuite cipher_suites<2..2^16-2>;
       opaque legacy_compression_methods<1..2^8-1>;
       Extension extensions<8..2^16-1>;
   } ClientHello;

   struct {
       ProtocolVersion legacy_version = 0x0303;    /* TLS v1.2 */
       Random random;
       opaque legacy_session_id_echo<0..32>;
       CipherSuite cipher_suite;
       uint8 legacy_compression_method = 0;
       Extension extensions<6..2^16-1>;
   } ServerHello;

   struct {
       ExtensionType extension_type;
       opaque extension_data<0..2^16-1>;
   } Extension;

   enum {
       server_name(0),                             /* RFC 6066 */
       max_fragment_length(1),                     /* RFC 6066 */
       status_request(5),                          /* RFC 6066 */
       supported_groups(10),                       /* RFC 8422, 7919 */
       signature_algorithms(13),                   /* RFC 8446 */
       use_srtp(14),                               /* RFC 5764 */
       heartbeat(15),                              /* RFC 6520 */
       application_layer_protocol_negotiation(16), /* RFC 7301 */
       signed_certificate_timestamp(18),           /* RFC 6962 */
       client_certificate_type(19),                /* RFC 7250 */
       server_certificate_type(20),                /* RFC 7250 */
       padding(21),                                /* RFC 7685 */
       pre_shared_key(41),                         /* RFC 8446 */
       early_data(42),                             /* RFC 8446 */
       supported_versions(43),                     /* RFC 8446 */
       cookie(44),                                 /* RFC 8446 */
       psk_key_exchange_modes(45),                 /* RFC 8446 */
       certificate_authorities(47),                /* RFC 8446 */
       oid_filters(48),                            /* RFC 8446 */
       post_handshake_auth(49),                    /* RFC 8446 */
       signature_algorithms_cert(50),              /* RFC 8446 */
       key_share(51),                              /* RFC 8446 */
       (65535)
   } ExtensionType;

   struct {
       NamedGroup group;
       opaque key_exchange<1..2^16-1>;
   } KeyShareEntry;

   struct {
       KeyShareEntry client_shares<0..2^16-1>;
   } KeyShareClientHello;

   struct {
       NamedGroup selected_group;
   } KeyShareHelloRetryRequest;

   struct {
       KeyShareEntry server_share;
   } KeyShareServerHello;

   struct {
       uint8 legacy_form = 4;
       opaque X[coordinate_length];
       opaque Y[coordinate_length];
   } UncompressedPointRepresentation;

   enum { psk_ke(0), psk_dhe_ke(1), (255) } PskKeyExchangeMode;

   struct {
       PskKeyExchangeMode ke_modes<1..255>;
   } PskKeyExchangeModes;

   struct {} Empty;

   struct {
       select (Handshake.msg_type) {
           case new_session_ticket:   uint32 max_early_data_size;
           case client_hello:         Empty;
           case encrypted_extensions: Empty;
       };
   } EarlyDataIndication;

   struct {
       opaque identity<1..2^16-1>;
       uint32 obfuscated_ticket_age;
   } PskIdentity;

   opaque PskBinderEntry<32..255>;

   struct {
       PskIdentity identities<7..2^16-1>;
       PskBinderEntry binders<33..2^16-1>;
   } OfferedPsks;

   struct {
       select (Handshake.msg_type) {
           case client_hello: OfferedPsks;
           case server_hello: uint16 selected_identity;
       };
   } PreSharedKeyExtension;
]]></artwork>
          <section anchor="version-extension">
            <name>Version Extension</name>
            <artwork><![CDATA[
   struct {
       select (Handshake.msg_type) {
           case client_hello:
                ProtocolVersion versions<2..254>;

           case server_hello: /* and HelloRetryRequest */
                ProtocolVersion selected_version;
       };
   } SupportedVersions;
]]></artwork>
          </section>
          <section anchor="cookie-extension">
            <name>Cookie Extension</name>
            <artwork><![CDATA[
   struct {
       opaque cookie<1..2^16-1>;
   } Cookie;
]]></artwork>
          </section>
          <section anchor="signature-algorithm-extension">
            <name>Signature Algorithm Extension</name>
            <artwork><![CDATA[
   enum {
       /* RSASSA-PKCS1-v1_5 algorithms */
       rsa_pkcs1_sha256(0x0401),
       rsa_pkcs1_sha384(0x0501),
       rsa_pkcs1_sha512(0x0601),

       /* ECDSA algorithms */
       ecdsa_secp256r1_sha256(0x0403),
       ecdsa_secp384r1_sha384(0x0503),
       ecdsa_secp521r1_sha512(0x0603),

       /* RSASSA-PSS algorithms with public key OID rsaEncryption */
       rsa_pss_rsae_sha256(0x0804),
       rsa_pss_rsae_sha384(0x0805),
       rsa_pss_rsae_sha512(0x0806),

       /* EdDSA algorithms */
       ed25519(0x0807),
       ed448(0x0808),

       /* RSASSA-PSS algorithms with public key OID RSASSA-PSS */
       rsa_pss_pss_sha256(0x0809),
       rsa_pss_pss_sha384(0x080a),
       rsa_pss_pss_sha512(0x080b),

       /* Legacy algorithms */
       rsa_pkcs1_sha1(0x0201),
       ecdsa_sha1(0x0203),

       /* Reserved Code Points */
       obsolete_RESERVED(0x0000..0x0200),
       dsa_sha1_RESERVED(0x0202),
       obsolete_RESERVED(0x0204..0x0400),
       dsa_sha256_RESERVED(0x0402),
       obsolete_RESERVED(0x0404..0x0500),
       dsa_sha384_RESERVED(0x0502),
       obsolete_RESERVED(0x0504..0x0600),
       dsa_sha512_RESERVED(0x0602),
       obsolete_RESERVED(0x0604..0x06FF),
       private_use(0xFE00..0xFFFF),
       (0xFFFF)
   } SignatureScheme;

   struct {
       SignatureScheme supported_signature_algorithms<2..2^16-2>;
   } SignatureSchemeList;
]]></artwork>
          </section>
          <section anchor="supported-groups-extension">
            <name>Supported Groups Extension</name>
            <artwork><![CDATA[
   enum {
       unallocated_RESERVED(0x0000),

       /* Elliptic Curve Groups (ECDHE) */
       obsolete_RESERVED(0x0001..0x0016),
       secp256r1(0x0017), secp384r1(0x0018), secp521r1(0x0019),
       obsolete_RESERVED(0x001A..0x001C),
       x25519(0x001D), x448(0x001E),

       /* Finite Field Groups (DHE) */
       ffdhe2048(0x0100), ffdhe3072(0x0101), ffdhe4096(0x0102),
       ffdhe6144(0x0103), ffdhe8192(0x0104),

       /* Reserved Code Points */
       ffdhe_private_use(0x01FC..0x01FF),
       ecdhe_private_use(0xFE00..0xFEFF),
       obsolete_RESERVED(0xFF01..0xFF02),
       (0xFFFF)
   } NamedGroup;

   struct {
       NamedGroup named_group_list<2..2^16-1>;
   } NamedGroupList;
]]></artwork>
            <t>Values within "obsolete_RESERVED" ranges are used in previous versions
of TLS and MUST NOT be offered or negotiated by TLS 1.3 implementations.
The obsolete curves have various known/theoretical weaknesses or have
had very little usage, in some cases only due to unintentional
server configuration issues. They are no longer considered appropriate
for general use and should be assumed to be potentially unsafe. The set
of curves specified here is sufficient for interoperability with all
currently deployed and properly configured TLS implementations.</t>
          </section>
        </section>
        <section anchor="server-parameters-messages">
          <name>Server Parameters Messages</name>
          <artwork><![CDATA[
   opaque DistinguishedName<1..2^16-1>;

   struct {
       DistinguishedName authorities<3..2^16-1>;
   } CertificateAuthoritiesExtension;

   struct {
       opaque certificate_extension_oid<1..2^8-1>;
       opaque certificate_extension_values<0..2^16-1>;
   } OIDFilter;

   struct {
       OIDFilter filters<0..2^16-1>;
   } OIDFilterExtension;

   struct {} PostHandshakeAuth;

   struct {
       Extension extensions<0..2^16-1>;
   } EncryptedExtensions;

   struct {
       opaque certificate_request_context<0..2^8-1>;
       Extension extensions<0..2^16-1>;
   } CertificateRequest;
]]></artwork>
        </section>
        <section anchor="authentication-messages-1">
          <name>Authentication Messages</name>
          <artwork><![CDATA[
   enum {
       X509(0),
       OpenPGP_RESERVED(1),
       RawPublicKey(2),
       (255)
   } CertificateType;

   struct {
       select (certificate_type) {
           case RawPublicKey:
             /* From RFC 7250 ASN.1_subjectPublicKeyInfo */
             opaque ASN1_subjectPublicKeyInfo<1..2^24-1>;

           case X509:
             opaque cert_data<1..2^24-1>;
       };
       Extension extensions<0..2^16-1>;
   } CertificateEntry;

   struct {
       opaque certificate_request_context<0..2^8-1>;
       CertificateEntry certificate_list<0..2^24-1>;
   } Certificate;

   struct {
       SignatureScheme algorithm;
       opaque signature<0..2^16-1>;
   } CertificateVerify;

   struct {
       opaque verify_data[Hash.length];
   } Finished;
]]></artwork>
        </section>
        <section anchor="ticket-establishment">
          <name>Ticket Establishment</name>
          <artwork><![CDATA[
   struct {
       uint32 ticket_lifetime;
       uint32 ticket_age_add;
       opaque ticket_nonce<0..255>;
       opaque ticket<1..2^16-1>;
       Extension extensions<0..2^16-1>;
   } NewSessionTicket;
]]></artwork>
        </section>
        <section anchor="updating-keys">
          <name>Updating Keys</name>
          <artwork><![CDATA[
   struct {} EndOfEarlyData;

   enum {
       update_not_requested(0), update_requested(1), (255)
   } KeyUpdateRequest;

   struct {
       KeyUpdateRequest request_update;
   } KeyUpdate;
]]></artwork>
        </section>
      </section>
      <section anchor="cipher-suites">
        <name>Cipher Suites</name>
        <t>A cipher suite defines the pair of the AEAD algorithm and hash
algorithm to be used with HKDF.
Cipher suite names follow the naming convention:</t>
        <artwork><![CDATA[
   CipherSuite TLS_AEAD_HASH = VALUE;
]]></artwork>
        <table anchor="cs-components">
          <name>Cipher Suite Name Structure</name>
          <thead>
            <tr>
              <th align="left">Component</th>
              <th align="left">Contents</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">TLS</td>
              <td align="left">The string "TLS"</td>
            </tr>
            <tr>
              <td align="left">AEAD</td>
              <td align="left">The AEAD algorithm used for record protection</td>
            </tr>
            <tr>
              <td align="left">HASH</td>
              <td align="left">The hash algorithm used with HKDF</td>
            </tr>
            <tr>
              <td align="left">VALUE</td>
              <td align="left">The two byte ID assigned for this cipher suite</td>
            </tr>
          </tbody>
        </table>
        <t>This specification defines the following cipher suites for use with TLS 1.3.</t>
        <table anchor="cs-list">
          <name>Cipher Suite List</name>
          <thead>
            <tr>
              <th align="left">Description</th>
              <th align="left">Value</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">TLS_AES_128_GCM_SHA256</td>
              <td align="left">{0x13,0x01}</td>
            </tr>
            <tr>
              <td align="left">TLS_AES_256_GCM_SHA384</td>
              <td align="left">{0x13,0x02}</td>
            </tr>
            <tr>
              <td align="left">TLS_CHACHA20_POLY1305_SHA256</td>
              <td align="left">{0x13,0x03}</td>
            </tr>
            <tr>
              <td align="left">TLS_AES_128_CCM_SHA256</td>
              <td align="left">{0x13,0x04}</td>
            </tr>
            <tr>
              <td align="left">TLS_AES_128_CCM_8_SHA256</td>
              <td align="left">{0x13,0x05}</td>
            </tr>
          </tbody>
        </table>
        <t>The corresponding AEAD algorithms AEAD_AES_128_GCM, AEAD_AES_256_GCM, and
AEAD_AES_128_CCM are defined in <xref target="RFC5116"/>. AEAD_CHACHA20_POLY1305 is defined
in <xref target="RFC8439"/>. AEAD_AES_128_CCM_8 is defined in <xref target="RFC6655"/>. The corresponding
hash algorithms are defined in <xref target="SHS"/>.</t>
        <t>Although TLS 1.3 uses the same cipher suite space as previous versions
of TLS, TLS 1.3 cipher suites are defined differently, only specifying
the symmetric ciphers, and cannot be used for TLS 1.2. Similarly,
cipher suites for TLS 1.2 and lower cannot be used with TLS 1.3.</t>
        <t>New cipher suite values are assigned by IANA as described in
<xref target="iana-considerations"/>.</t>
      </section>
    </section>
    <section anchor="implementation-notes">
      <name>Implementation Notes</name>
      <t>The TLS protocol cannot prevent many common security mistakes. This appendix
provides several recommendations to assist implementors.
<xref target="RFC8448"/> provides test vectors for TLS 1.3 handshakes.</t>
      <section anchor="random-number-generation-and-seeding">
        <name>Random Number Generation and Seeding</name>
        <t>TLS requires a cryptographically secure pseudorandom number generator (CSPRNG).
In most cases, the operating system provides an appropriate facility such
as /dev/urandom, which should be used absent other (e.g., performance) concerns.
It is RECOMMENDED to use an existing CSPRNG implementation in
preference to crafting a new one. Many adequate cryptographic libraries
are already available under favorable license terms.  Should those prove
unsatisfactory, <xref target="RFC4086"/> provides guidance on the generation of random values.</t>
        <t>TLS uses random values (1) in public protocol fields such as the
public Random values in the ClientHello and ServerHello and (2) to
generate keying material. With a properly functioning CSPRNG, this
does not present a security problem, as it is not feasible to determine
the CSPRNG state from its output. However, with a broken CSPRNG, it
may be possible for an attacker to use the public output to determine
the CSPRNG internal state and thereby predict the keying material, as
documented in <xref target="CHECKOWAY"/> and
<xref target="DSA-1571-1"/>.</t>
        <t>Implementations can provide extra security against
this form of attack by using separate CSPRNGs to generate public and
private values.</t>
        <t><xref target="RFC8937"/> describes a way way for security protocol implementations
to augment their (pseudo)random number generators using a long-term private key
and a deterministic signature function. This improves randomness from broken or
otherwise subverted random number generators.</t>
      </section>
      <section anchor="certificates-and-authentication">
        <name>Certificates and Authentication</name>
        <t>Implementations are responsible for verifying the integrity of certificates and
should generally support certificate revocation messages. Absent a specific
indication from an application profile, certificates should
always be verified to ensure proper signing by a trusted certificate authority
(CA). The selection and addition of trust anchors should be done very carefully.
Users should be able to view information about the certificate and trust anchor.
Applications SHOULD also enforce minimum and maximum key sizes. For example,
certification paths containing keys or signatures weaker than 2048-bit RSA or
224-bit ECDSA are not appropriate for secure applications.</t>
        <t>Note that it is common practice in some protocols to use the same
certificate in both client and server modes. This setting has not been
extensively analyzed and it is the responsibility of the higher level
protocol to ensure there is no ambiguity in this case about the
higher-level semantics.</t>
      </section>
      <section anchor="implementation-pitfalls">
        <name>Implementation Pitfalls</name>
        <t>Implementation experience has shown that certain parts of earlier TLS
specifications are not easy to understand and have been a source of
interoperability and security problems. Many of these areas have been clarified
in this document but this appendix contains a short list of the most important
things that require special attention from implementors.</t>
        <t>TLS protocol issues:</t>
        <ul spacing="normal">
          <li>Do you correctly handle handshake messages that are fragmented to
multiple TLS records (see <xref target="record-layer"/>)? Do you correctly handle
corner cases like a ClientHello that is split into several small fragments? Do
you fragment handshake messages that exceed the maximum fragment
size? In particular, the Certificate and CertificateRequest
handshake messages can be large enough to require fragmentation.
Certificate compression as defined in <xref target="RFC8879"/> can be used
to reduce the risk of fragmentation.</li>
          <li>Do you ignore the TLS record layer version number in all unencrypted TLS
records (see <xref target="backward-compatibility"/>)?</li>
          <li>Have you ensured that all support for SSL, RC4, EXPORT ciphers, and
MD5 (via the "signature_algorithms" extension) is completely removed from
all possible configurations that support TLS 1.3 or later, and that
attempts to use these obsolete capabilities fail correctly?
(see <xref target="backward-compatibility"/>)?</li>
          <li>Do you handle TLS extensions in ClientHellos correctly, including
unknown extensions?</li>
          <li>When the server has requested a client certificate but no
suitable certificate is available, do you correctly send an empty
Certificate message, instead of omitting the whole message (see
<xref target="certificate"/>)?</li>
          <li>When processing the plaintext fragment produced by AEAD-Decrypt and
scanning from the end for the ContentType, do you avoid scanning
past the start of the cleartext in the event that the peer has sent
a malformed plaintext of all zeros?</li>
          <li>Do you properly ignore unrecognized cipher suites
(<xref target="client-hello"/>), hello extensions (<xref target="extensions"/>), named groups
(<xref target="supported-groups"/>), key shares (<xref target="key-share"/>),
supported versions (<xref target="supported-versions"/>),
and signature algorithms (<xref target="signature-algorithms"/>) in the
ClientHello?</li>
          <li>As a server, do you send a HelloRetryRequest to clients which
support a compatible (EC)DHE group but do not predict it in the
"key_share" extension? As a client, do you correctly handle a
HelloRetryRequest from the server?</li>
        </ul>
        <t>Cryptographic details:</t>
        <ul spacing="normal">
          <li>What countermeasures do you use to prevent timing attacks <xref target="TIMING"/>?</li>
          <li>When using Diffie-Hellman key exchange, do you correctly preserve
leading zero bytes in the negotiated key (see <xref target="finite-field-diffie-hellman"/>)?</li>
          <li>Does your TLS client check that the Diffie-Hellman parameters sent
by the server are acceptable (see <xref target="ffdhe-param"/>)?</li>
          <li>Do you use a strong and, most importantly, properly seeded random number
generator (see <xref target="random-number-generation-and-seeding"/>) when generating Diffie-Hellman
private values, the ECDSA "k" parameter, and other security-critical values?
It is RECOMMENDED that implementations implement "deterministic ECDSA"
as specified in <xref target="RFC6979"/>. Note that purely deterministic ECC signatures such as
deterministic ECDSA and EdDSA may be vulnerable to certain side-channel and fault
injection attacks in easily accessible IoT devices.</li>
          <li>Do you zero-pad Diffie-Hellman public key values and shared
secrets to the group size (see <xref target="ffdhe-param"/> and <xref target="finite-field-diffie-hellman"/>)?</li>
          <li>Do you verify signatures after making them, to protect against RSA-CRT
key leaks <xref target="FW15"/>?</li>
        </ul>
      </section>
      <section anchor="client-tracking">
        <name>Client and Server Tracking Prevention</name>
        <t>Clients SHOULD NOT reuse a ticket for multiple connections. Reuse
of a ticket allows passive observers to correlate different connections.
Servers that issue tickets SHOULD offer at least as many tickets
as the number of connections that a client might use; for example, a web browser
using HTTP/1.1 <xref target="RFC7230"/> might open six connections to a server. Servers SHOULD
issue new tickets with every connection. This ensures that clients are
always able to use a new ticket when creating a new connection.</t>
        <t>Offering a ticket to a server additionally allows the server to correlate
different connections. This is possible independent of ticket reuse. Client
applications SHOULD NOT offer tickets across connections that are meant to be
uncorrelated. For example, <xref target="FETCH"/> defines network partition keys to separate
cache lookups in web browsers.</t>
        <t>Clients and Servers SHOULD NOT reuse a key share for multiple connections. Reuse
of a key share allows passive observers to correlate different connections. Reuse
of a client key share to the same server additionally allows the server to correlate different connections.</t>
        <t>If an external PSK identity is used for multiple connections, then it
will generally be possible for an external observer to track
clients and/or servers across connections. Use of the
Encrypted Client Hello <xref target="I-D.ietf-tls-esni"/> extension can
mitigate this risk, as can mechanisms external to TLS that
rotate the PSK identity.</t>
      </section>
      <section anchor="unauthenticated-operation">
        <name>Unauthenticated Operation</name>
        <t>Previous versions of TLS offered explicitly unauthenticated cipher suites based
on anonymous Diffie-Hellman. These modes have been deprecated in TLS 1.3.
However, it is still possible to negotiate parameters that do not provide
verifiable server authentication by several methods, including:</t>
        <ul spacing="normal">
          <li>Raw public keys <xref target="RFC7250"/>.</li>
          <li>Using a public key contained in a certificate but without
validation of the certificate chain or any of its contents.</li>
        </ul>
        <t>Either technique used alone is vulnerable to man-in-the-middle attacks
and therefore unsafe for general use. However, it is also possible to
bind such connections to an external authentication mechanism via
out-of-band validation of the server's public key, trust on first
use, or a mechanism such as channel bindings (though the
channel bindings described in <xref target="RFC5929"/> are not defined for
TLS 1.3). If no such mechanism is used, then the connection has no protection
against active man-in-the-middle attack; applications MUST NOT use TLS
in such a way absent explicit configuration or a specific application
profile.</t>
      </section>
    </section>
    <section anchor="update-tls12">
      <name>Updates to TLS 1.2</name>
      <t>To align with the names used this document, the following terms from
<xref target="RFC5246"/> are renamed:</t>
      <ul spacing="normal">
        <li>The master secret, computed in Section 8.1 of <xref target="RFC5246"/>, is renamed to
the main secret. It is referred to as main_secret in formulas and
structures, instead of master_secret. However, the label parameter to the PRF
function is left unchanged for compatibility.</li>
        <li>The premaster secret is renamed to the preliminary secret. It is referred to
as preliminary_secret in formulas and structures, instead of
pre_master_secret.</li>
        <li>The PreMasterSecret and EncryptedPreMasterSecret structures, defined in
Section 7.4.7.1 of <xref target="RFC5246"/>, are renamed to PreliminarySecret and
EncryptedPreliminarySecret, respectively.</li>
      </ul>
      <t>Correspondingly, the extension defined in <xref target="RFC7627"/> is renamed to the
"Extended Main Secret" extension. The extension code point is renamed to
"extended_main_secret". The label parameter to the PRF function in Section 4 of
<xref target="RFC7627"/> is left unchanged for compatibility.</t>
    </section>
    <section anchor="backward-compatibility">
      <name>Backward Compatibility</name>
      <t>The TLS protocol provides a built-in mechanism for version negotiation between
endpoints potentially supporting different versions of TLS.</t>
      <t>TLS 1.x and SSL 3.0 use compatible ClientHello messages. Servers can also handle
clients trying to use future versions of TLS as long as the ClientHello format
remains compatible and there is at least one protocol version supported by
both the client and the server.</t>
      <t>Prior versions of TLS used the record layer version number
(TLSPlaintext.legacy_record_version and
TLSCiphertext.legacy_record_version) for various purposes.
As of TLS 1.3, this field is deprecated. The value of
TLSPlaintext.legacy_record_version MUST be ignored by all implementations.
The value of TLSCiphertext.legacy_record_version is included in the
additional data for deprotection but MAY otherwise be ignored
or MAY be validated to match the fixed constant value.
Version negotiation is performed using only the handshake versions
(ClientHello.legacy_version and ServerHello.legacy_version, as well as the
ClientHello, HelloRetryRequest, and ServerHello "supported_versions" extensions).
In order to maximize interoperability with older endpoints, implementations
that negotiate the use of TLS 1.0-1.2 SHOULD set the record layer
version number to the negotiated version for the ServerHello and all
records thereafter.</t>
      <t>For maximum compatibility with previously non-standard behavior and misconfigured
deployments, all implementations SHOULD support validation of certification paths
based on the expectations in this document, even when handling prior TLS versions'
handshakes (see <xref target="server-certificate-selection"/>).</t>
      <t>TLS 1.2 and prior supported an "Extended Main Secret" <xref target="RFC7627"/> extension
which digested large parts of the handshake transcript into the secret and
derived keys. Note this extension was renamed in <xref target="update-tls12"/>. Because TLS
1.3 always hashes in the transcript up to the server Finished, implementations
which support both TLS 1.3 and earlier versions SHOULD indicate the use of the
Extended Main Secret extension in their APIs whenever TLS 1.3 is used.</t>
      <section anchor="negotiating-with-an-older-server">
        <name>Negotiating with an Older Server</name>
        <t>A TLS 1.3 client who wishes to negotiate with servers that do not
support TLS 1.3 will send a
normal TLS 1.3 ClientHello containing 0x0303 (TLS 1.2) in
ClientHello.legacy_version but with the correct version(s) in the
"supported_versions" extension. If the server does not support TLS 1.3, it
will respond with a ServerHello containing an older version number. If the
client agrees to use this version, the negotiation will proceed as appropriate
for the negotiated protocol. A client using a ticket for resumption SHOULD initiate the
connection using the version that was previously negotiated.</t>
        <t>Note that 0-RTT data is not compatible with older servers and SHOULD NOT
be sent absent knowledge that the server supports TLS 1.3.
See <xref target="zero-rtt-backwards-compatibility"/>.</t>
        <t>If the version chosen by the server is not supported by the client (or is not
acceptable), the client MUST abort the handshake with a "protocol_version" alert.</t>
        <t>Some legacy server implementations are known to not implement the TLS
specification properly and might abort connections upon encountering
TLS extensions or versions which they are not aware of. Interoperability
with buggy servers is a complex topic beyond the scope of this document.
Multiple connection attempts may be required in order to negotiate
a backward-compatible connection; however, this practice is vulnerable
to downgrade attacks and is NOT RECOMMENDED.</t>
      </section>
      <section anchor="negotiating-with-an-older-client">
        <name>Negotiating with an Older Client</name>
        <t>A TLS server can also receive a ClientHello indicating a version number smaller
than its highest supported version. If the "supported_versions" extension
is present, the server MUST negotiate using that extension as described in
<xref target="supported-versions"/>. If the "supported_versions" extension is not
present, the server MUST negotiate the minimum of ClientHello.legacy_version
and TLS 1.2. For example, if the server supports TLS 1.0, 1.1, and 1.2,
and legacy_version is TLS 1.0, the server will proceed with a TLS 1.0 ServerHello.
If the "supported_versions" extension is absent and the server only supports
versions greater than ClientHello.legacy_version, the server MUST abort the handshake
with a "protocol_version" alert.</t>
        <t>Note that earlier versions of TLS did not clearly specify the record layer
version number value in all cases (TLSPlaintext.legacy_record_version). Servers
will receive various TLS 1.x versions in this field, but its value
MUST always be ignored.</t>
      </section>
      <section anchor="zero-rtt-backwards-compatibility">
        <name>0-RTT Backward Compatibility</name>
        <t>0-RTT data is not compatible with older servers. An older server will respond
to the ClientHello with an older ServerHello, but it will not correctly skip
the 0-RTT data and will fail to complete the handshake. This can cause issues when
a client attempts to use 0-RTT, particularly against multi-server deployments. For
example, a deployment could deploy TLS 1.3 gradually with some servers
implementing TLS 1.3 and some implementing TLS 1.2, or a TLS 1.3 deployment
could be downgraded to TLS 1.2.</t>
        <t>A client that attempts to send 0-RTT data MUST fail a connection if it receives
a ServerHello with TLS 1.2 or older.  It can then retry
the connection with 0-RTT disabled.  To avoid a downgrade attack, the
client SHOULD NOT disable TLS 1.3, only 0-RTT.</t>
        <t>To avoid this error condition, multi-server deployments SHOULD ensure a uniform
and stable deployment of TLS 1.3 without 0-RTT prior to enabling 0-RTT.</t>
      </section>
      <section anchor="middlebox">
        <name>Middlebox Compatibility Mode</name>
        <t>Field measurements
<xref target="Ben17a"/> <xref target="Ben17b"/> <xref target="Res17a"/> <xref target="Res17b"/> have found that a significant number of middleboxes
misbehave when a TLS client/server pair negotiates TLS 1.3. Implementations
can increase the chance of making connections through those middleboxes
by making the TLS 1.3 handshake look more like a TLS 1.2 handshake:</t>
        <ul spacing="normal">
          <li>The client always provides a non-empty session ID in the ClientHello,
as described in the legacy_session_id section of <xref target="client-hello"/>.</li>
          <li>If not offering early data, the client sends a dummy
change_cipher_spec record (see the third paragraph of <xref target="record-protocol"/>)
immediately before its second flight. This
may either be before its second ClientHello or before its encrypted
handshake flight. If offering early data, the record is placed
immediately after the first ClientHello.</li>
          <li>The server sends a dummy change_cipher_spec record immediately
after its first handshake message. This may either be after a
ServerHello or a HelloRetryRequest.</li>
        </ul>
        <t>When put together, these changes make the TLS 1.3 handshake resemble
TLS 1.2 session resumption, which improves the chance of successfully
connecting through middleboxes. This "compatibility mode" is partially
negotiated: the client can opt to provide a session ID or not,
and the server has to echo it. Either side can send change_cipher_spec
at any time during the handshake, as they must be ignored by the peer,
but if the client sends a non-empty session ID, the server MUST send
the change_cipher_spec as described in this appendix.</t>
      </section>
      <section anchor="backward-compatibility-security">
        <name>Security Restrictions Related to Backward Compatibility</name>
        <t>Implementations negotiating the use of older versions of TLS SHOULD prefer
forward secret and AEAD cipher suites, when available.</t>
        <t>The security of RC4 cipher suites is considered insufficient for the reasons
cited in <xref target="RFC7465"/>. Implementations MUST NOT offer or negotiate RC4 cipher suites
for any version of TLS for any reason.</t>
        <t>Old versions of TLS permitted the use of very low strength ciphers.
Ciphers with a strength less than 112 bits MUST NOT be offered or
negotiated for any version of TLS for any reason.</t>
        <t>The security of SSL 2.0 <xref target="SSL2"/>, SSL 3.0 <xref target="RFC6101"/>, TLS 1.0
<xref target="RFC2246"/>, and TLS 1.1 <xref target="RFC4346"/> are considered insufficient for
the reasons enumerated in <xref target="RFC6176"/>, <xref target="RFC7568"/>, and <xref target="RFC8996"/>
and they MUST NOT be negotiated for any reason.</t>
        <t>Implementations MUST NOT send an SSL version 2.0 compatible CLIENT-HELLO.
Implementations MUST NOT negotiate TLS 1.3 or later using an SSL version 2.0 compatible
CLIENT-HELLO. Implementations are NOT RECOMMENDED to accept an SSL version 2.0 compatible
CLIENT-HELLO in order to negotiate older versions of TLS.</t>
        <t>Implementations MUST NOT send a ClientHello.legacy_version or ServerHello.legacy_version
set to 0x0300 or less. Any endpoint receiving a Hello message with
ClientHello.legacy_version or ServerHello.legacy_version set to 0x0300 MUST
abort the handshake with a "protocol_version" alert.</t>
        <t>Implementations MUST NOT send any records with a version less than 0x0300.
Implementations SHOULD NOT accept any records with a version less than 0x0300
(but may inadvertently do so if the record version number is ignored completely).</t>
        <t>Implementations MUST NOT use the Truncated HMAC extension, defined in
Section 7 of <xref target="RFC6066"/>, as it is not applicable to AEAD algorithms and has
been shown to be insecure in some scenarios.</t>
      </section>
    </section>
    <section anchor="security-analysis">
      <name>Overview of Security Properties</name>
      <t>A complete security analysis of TLS is outside the scope of this document.
In this appendix, we provide an informal description of the desired properties
as well as references to more detailed work in the research literature
which provides more formal definitions.</t>
      <t>We cover properties of the handshake separately from those of the record layer.</t>
      <section anchor="security-handshake">
        <name>Handshake</name>
        <t>The TLS handshake is an Authenticated Key Exchange (AKE) protocol which
is intended to provide both one-way authenticated (server-only) and
mutually authenticated (client and server) functionality. At the completion
of the handshake, each side outputs its view of the following values:</t>
        <ul spacing="normal">
          <li>A set of "session keys" (the various secrets derived from the main secret)
from which can be derived a set of working keys.</li>
          <li>A set of cryptographic parameters (algorithms, etc.).</li>
          <li>The identities of the communicating parties.</li>
        </ul>
        <t>We assume the attacker to be an active network attacker, which means it
has complete control over the network used to communicate between the parties <xref target="RFC3552"/>.
Even under these conditions, the handshake should provide the properties listed below.
Note that these properties are not necessarily independent, but reflect
the protocol consumers' needs.</t>
        <dl>
          <dt>Establishing the same session keys:</dt>
          <dd>
            <t>The handshake needs to output the same set of session keys on both sides of
the handshake, provided that it completes successfully on each endpoint
(see <xref target="CK01"/>; Definition 1, part 1).</t>
          </dd>
          <dt>Secrecy of the session keys:</dt>
          <dd>
            <t>The shared session keys should be known only to the communicating
parties and not to the attacker (see <xref target="CK01"/>; Definition 1, part 2).
Note that in a unilaterally authenticated connection, the attacker can establish
its own session keys with the server, but those session keys are distinct from
those established by the client.</t>
          </dd>
          <dt>Peer Authentication:</dt>
          <dd>
            <t>The client's view of the peer identity should reflect the server's
identity. If the client is authenticated, the server's view of the
peer identity should match the client's identity.</t>
          </dd>
          <dt>Uniqueness of the session keys:</dt>
          <dd>
            <t>Any two distinct handshakes should produce distinct, unrelated session
keys. Individual session keys produced by a handshake should also be distinct
and independent.</t>
          </dd>
          <dt>Downgrade Protection:</dt>
          <dd>
            <t>The cryptographic parameters should be the same on both sides and
should be the same as if the peers had been communicating in the
absence of an attack (see <xref target="BBFGKZ16"/>; Definitions 8 and 9).</t>
          </dd>
          <dt>Forward secret with respect to long-term keys:</dt>
          <dd>
            <t>If the long-term keying material (in this case the signature keys in
certificate-based authentication modes or the external/resumption
PSK in PSK with (EC)DHE modes) is compromised after the handshake is
complete, this does not compromise the security of the session key
(see <xref target="DOW92"/>), as long as the session key
itself (and all material that could be used to recreate the session
key) has been erased. In particular, private keys corresponding to key
shares, shared secrets, and keys derived in the TLS Key Schedule
other than <tt>binder_key</tt>, <tt>resumption_secret</tt>, and PSKs derived from
the <tt>resumption_secret</tt> also need to be erased.  The forward secrecy
property is not satisfied when PSK is used in the "psk_ke"
PskKeyExchangeMode.  Failing to erase keys or secrets intended to be
ephemeral or connection-specific in effect creates additional
long-term keys that must be protected. Compromise of those long-term
keys (even after the handshake is complete) can result in loss of
protection for the connection's traffic.</t>
          </dd>
          <dt>Key Compromise Impersonation (KCI) resistance:</dt>
          <dd>
            <t>In a mutually authenticated connection with certificates, compromising the long-term
secret of one actor should not break that actor's authentication of their peer in
the given connection (see <xref target="HGFS15"/>). For example, if a client's signature key is
compromised, it should not be possible to impersonate arbitrary servers to that client
in subsequent handshakes.</t>
          </dd>
          <dt>Protection of endpoint identities:</dt>
          <dd>
            <t>The server's identity (certificate) should be protected against passive
attackers. The client's identity (certificate) should be protected against
both passive and active attackers. This property does not hold for cipher
suites without confidentiality; while this specification does not define any such cipher suites,
other documents may do so.</t>
          </dd>
        </dl>
        <t>Informally, the signature-based modes of TLS 1.3 provide for the
establishment of a unique, secret, shared key established by an
(EC)DHE key exchange and authenticated by the server's signature over
the handshake transcript, as well as tied to the server's identity by
a MAC. If the client is authenticated by a certificate, it also signs
over the handshake transcript and provides a MAC tied to both
identities. <xref target="SIGMA"/> describes the design and analysis of this type of key
exchange protocol. If fresh (EC)DHE keys are used for each connection,
then the output keys are forward secret.</t>
        <t>The external PSK and resumption PSK bootstrap from a long-term shared
secret into a unique per-connection set of short-term session keys. This
secret may have been established in a previous handshake. If
PSK with (EC)DHE key establishment is used, these session keys will also be forward
secret. The resumption PSK has been designed so that the
resumption secret computed by connection N and needed to form
connection N+1 is separate from the traffic keys used by connection N,
thus providing forward secrecy between the connections.
In addition, if multiple tickets are established on the same
connection, they are associated with different keys, so compromise of
the PSK associated with one ticket does not lead to the compromise of
connections established with PSKs associated with other tickets.
This property is most interesting if tickets are stored in a database
(and so can be deleted) rather than if they are self-encrypted.</t>
        <t>Forward secrecy limits the effect of key leakage in one direction
(compromise of a key at time T2 does not compromise some key at time
T1 where T1 &lt; T2). Protection in the other direction (compromise at
time T1 does not compromise keys at time T2) can be achieved by
rerunning EC(DHE). If a long-term authentication key has been
compromised, a full handshake with EC(DHE) gives protection against
passive attackers. If the resumption_master_secret has been
compromised, a resumption handshake with EC(DHE) gives protection
against passive attackers and a full handshake with EC(DHE) gives
protection against active attackers. If a traffic secret has been
compromised, any handshake with EC(DHE) gives protection against
active attackers. Using the terms in <xref target="RFC7624"/>, forward secrecy
without rerunning EC(DHE) does not stop an attacker from doing static
key exfiltration. After key exfiltration of
application_traffic_secret_N, an attacker can e.g., passively
eavesdrop on all future data sent on the connection including data
encrypted with application_traffic_secret_N+1,
application_traffic_secret_N+2, etc. Frequently rerunning EC(DHE)
forces an attacker to do dynamic key exfiltration (or content
exfiltration).</t>
        <t>The PSK binder value forms a binding between a PSK
and the current handshake, as well as between the session where the
PSK was established and the current session. This binding
transitively includes the original handshake transcript, because that
transcript is digested into the values which produce the resumption
secret. This requires that both the KDF used to produce the
resumption secret and the MAC used to compute the binder be collision
resistant. See <xref target="key-derivation-and-hkdf"/> for more on this.
Note: The binder does not cover the binder values from other
PSKs, though they are included in the Finished MAC.</t>
        <t>Note: This specification does not currently permit the server to send a certificate_request
message in non-certificate-based handshakes (e.g., PSK).
If this restriction were to be relaxed in future, the
client's signature would not cover the server's certificate directly.
However, if the PSK was established through a NewSessionTicket, the client's
signature would transitively cover the server's certificate through
the PSK binder. <xref target="PSK-FINISHED"/>
describes a concrete attack on constructions that do not bind to
the server's certificate (see also <xref target="Kraw16"/>). It is unsafe to use certificate-based client
authentication when the client might potentially share the same
PSK/key-id pair with two different endpoints.  In the absence
of some other specification to the contrary, implementations MUST
NOT combine external PSKs with certificate-based authentication of
either the client or server. <xref target="RFC8773"/> provides an extension
to permit this, but has not received the level of analysis as this
specification.</t>
        <t>If an exporter is used, then it produces values which are unique
and secret (because they are generated from a unique session key).
Exporters computed with different labels and contexts are computationally
independent, so it is not feasible to compute one from another or
the session secret from the exported value.
Note: Exporters can
produce arbitrary-length values; if exporters are to be
used as channel bindings, the exported value MUST be large
enough to provide collision resistance. The exporters provided in
TLS 1.3 are derived from the same Handshake Contexts as the
early traffic keys and the application traffic keys, respectively,
and thus have similar security properties. Note that they do
not include the client's certificate; future applications
which wish to bind to the client's certificate may need
to define a new exporter that includes the full handshake
transcript.</t>
        <t>For all handshake modes, the Finished MAC (and, where present, the
signature) prevents downgrade attacks. In addition, the use of
certain bytes in the random nonces as described in <xref target="server-hello"/>
allows the detection of downgrade to previous TLS versions.
See <xref target="BBFGKZ16"/> for more details on TLS 1.3 and downgrade.</t>
        <t>As soon as the client and the server have exchanged enough information
to establish shared keys, the remainder of the handshake is encrypted,
thus providing protection against passive attackers, even if the
computed shared key is not authenticated. Because the server
authenticates before the client, the client can ensure that if it
authenticates to the server, it only
reveals its identity to an authenticated server. Note that implementations
must use the provided record-padding mechanism during the handshake
to avoid leaking information about the identities due to length.
The client's proposed PSK identities are not encrypted, nor is the
one that the server selects.</t>
        <section anchor="key-derivation-and-hkdf">
          <name>Key Derivation and HKDF</name>
          <t>Key derivation in TLS 1.3 uses  HKDF as defined in <xref target="RFC5869"/> and
its two components, HKDF-Extract and HKDF-Expand. The full rationale for the HKDF
construction can be found in <xref target="Kraw10"/> and the rationale for the way it is used
in TLS 1.3 in <xref target="KW16"/>.  Throughout this document, each
application of HKDF-Extract is followed by one or more invocations of
HKDF-Expand. This ordering should always be followed (including in future
revisions of this document); in particular, one SHOULD NOT use an output of
HKDF-Extract as an input to another application of HKDF-Extract without an
HKDF-Expand in between. Multiple applications of HKDF-Expand to some of
the same inputs are allowed as
long as these are differentiated via the key and/or the labels.</t>
          <t>Note that HKDF-Expand implements a pseudorandom function (PRF) with both inputs and
outputs of variable length. In some of the uses of HKDF in this document
(e.g., for generating exporters and the resumption_secret), it is necessary
that the application of HKDF-Expand be collision resistant; namely, it should
be infeasible to find two different inputs to HKDF-Expand that output the same
value. This requires the underlying hash function to be collision resistant
and the output length from HKDF-Expand to be of size at least 256 bits (or as
much as needed for the hash function to prevent finding collisions).</t>
        </section>
        <section anchor="certificate-based-client-authentication">
          <name>Certificate-Based Client Authentication</name>
          <t>A client that has sent certificate-based authentication data to a server, either during
the handshake or in post-handshake authentication, cannot be sure whether
the server afterwards considers the client to be authenticated or not.
If the client needs to determine if the server considers the
connection to be unilaterally or mutually authenticated, this has to
be provisioned by the application layer. See <xref target="CHHSV17"/> for details.
In addition, the analysis of post-handshake authentication from
<xref target="Kraw16"/> shows that the client identified by the certificate sent in
the post-handshake phase possesses the traffic key. This party is
therefore the client that participated in the original handshake or
one to whom the original client delegated the traffic key (assuming
that the traffic key has not been compromised).</t>
        </section>
        <section anchor="rtt">
          <name>0-RTT</name>
          <t>The 0-RTT mode of operation generally provides security
properties similar to those of 1-RTT data, with the two exceptions that the 0-RTT
encryption keys do not provide full forward secrecy and that the
server is not able to guarantee uniqueness of the handshake
(non-replayability) without keeping potentially undue amounts of
state. See <xref target="anti-replay"/> for mechanisms to limit
the exposure to replay.</t>
        </section>
        <section anchor="exporter-independence">
          <name>Exporter Independence</name>
          <t>The exporter_secret and early_exporter_secret are
derived to be independent of the traffic keys and therefore do
not represent a threat to the security of traffic encrypted with
those keys. However, because these secrets can be used to
compute any exporter value, they SHOULD be erased as soon as
possible. If the total set of exporter labels is known, then
implementations SHOULD pre-compute the inner Derive-Secret
stage of the exporter computation for all those labels,
then erase the [early_]exporter_secret, followed by
each inner values as soon as it is known that it will not be
needed again.</t>
        </section>
        <section anchor="post-compromise-security">
          <name>Post-Compromise Security</name>
          <t>TLS does not provide security for handshakes which take place after the peer's
long-term secret (signature key or external PSK) is compromised. It therefore
does not provide post-compromise security <xref target="CCG16"/>, sometimes also referred to
as backwards or future secrecy. This is in contrast to KCI resistance, which
describes the security guarantees that a party has after its own long-term
secret has been compromised.</t>
        </section>
        <section anchor="external-references">
          <name>External References</name>
          <t>The reader should refer to the following references for analysis of the
TLS handshake: <xref target="DFGS15"/>, <xref target="CHSV16"/>, <xref target="DFGS16"/>, <xref target="KW16"/>, <xref target="Kraw16"/>, <xref target="FGSW16"/>,
<xref target="LXZFH16"/>, <xref target="FG17"/>, and <xref target="BBK17"/>.</t>
        </section>
      </section>
      <section anchor="security-record-layer">
        <name>Record Layer</name>
        <t>The record layer depends on the handshake producing strong traffic secrets
which can be used to derive bidirectional encryption keys and nonces.
Assuming that is true, and the keys are used for no more data than
indicated in <xref target="limits-on-key-usage"/>, then the record layer should provide the following
guarantees:</t>
        <dl>
          <dt>Confidentiality:</dt>
          <dd>
            <t>An attacker should not be able to determine the plaintext contents
of a given record.
</t>
          </dd>
          <dt>Integrity:</dt>
          <dd>
            <t>An attacker should not be able to craft a new record which is
different from an existing record which will be accepted by the receiver.
</t>
          </dd>
          <dt>Order protection/non-replayability:</dt>
          <dd>
            <t>An attacker should not be able to cause the receiver to accept a
record which it has already accepted or cause the receiver to accept
record N+1 without having first processed record N.</t>
          </dd>
          <dt>Length concealment:</dt>
          <dd>
            <t>Given a record with a given external length, the attacker should not be able
to determine the amount of the record that is content versus padding.</t>
          </dd>
          <dt>Forward secrecy after key change:</dt>
          <dd>
            <t>If the traffic key update mechanism described in <xref target="key-update"/> has been
used and the previous generation key is deleted, an attacker who compromises
the endpoint should not be able to decrypt traffic encrypted with the old key.</t>
          </dd>
        </dl>
        <t>Informally, TLS 1.3 provides these properties by AEAD-protecting the
plaintext with a strong key. AEAD encryption <xref target="RFC5116"/> provides confidentiality
and integrity for the data. Non-replayability is provided by using
a separate nonce for each record, with the nonce being derived from
the record sequence number (<xref target="nonce"/>), with the sequence
number being maintained independently at both sides; thus records which
are delivered out of order result in AEAD deprotection failures.
In order to prevent mass cryptanalysis when the same plaintext is
repeatedly encrypted by different users under the same key
(as is commonly the case for HTTP), the nonce is formed by mixing
the sequence number with a secret per-connection initialization
vector derived along with the traffic keys.
See <xref target="BT16"/> for analysis of this construction.</t>
        <t>The rekeying technique in TLS 1.3 (see <xref target="updating-traffic-keys"/>) follows the
construction of the serial generator as discussed in <xref target="REKEY"/>, which shows that rekeying can
allow keys to be used for a larger number of encryptions than without
rekeying. This relies on the security of the HKDF-Expand-Label function as a
pseudorandom function (PRF).  In addition, as long as this function is truly
one way, it is not possible to compute traffic keys from prior to a key change
(forward secrecy).</t>
        <t>TLS does not provide security for data which is communicated on a connection
after a traffic secret of that connection is compromised. That is, TLS does not
provide post-compromise security/future secrecy/backward secrecy with respect
to the traffic secret. Indeed, an attacker who learns a traffic secret can
compute all future traffic secrets on that connection.  Systems which want such
guarantees need to do a fresh handshake and establish a new connection with an
(EC)DHE exchange.</t>
        <section anchor="external-references-1">
          <name>External References</name>
          <t>The reader should refer to the following references for analysis of the TLS record layer:
<xref target="BMMRT15"/>, <xref target="BT16"/>, <xref target="BDFKPPRSZZ16"/>, <xref target="BBK17"/>, and <xref target="PS18"/>.</t>
        </section>
      </section>
      <section anchor="traffic-analysis">
        <name>Traffic Analysis</name>
        <t>TLS is susceptible to a variety of traffic analysis attacks based on
observing the length and timing of encrypted packets
<xref target="CLINIC"/>
          <xref target="HCJC16"/>.
This is particularly easy when there is a small
set of possible messages to be distinguished, such as for a video
server hosting a fixed corpus of content, but still provides usable
information even in more complicated scenarios.</t>
        <t>TLS does not provide any specific defenses against this form of attack
but does include a padding mechanism for use by applications: The
plaintext protected by the AEAD function consists of content plus
variable-length padding, which allows the application to produce
arbitrary-length encrypted records as well as padding-only cover traffic to
conceal the difference between periods of transmission and periods
of silence. Because the
padding is encrypted alongside the actual content, an attacker cannot
directly determine the length of the padding, but may be able to
measure it indirectly by the use of timing channels exposed during
record processing (i.e., seeing how long it takes to process a
record or trickling in records to see which ones elicit a response
from the server). In general, it is not known how to remove all of
these channels because even a constant-time padding removal function will
likely feed the content into data-dependent functions.
At minimum, a fully constant-time server or client would require close
cooperation with the application-layer protocol implementation, including
making that higher-level protocol constant time.</t>
        <t>Note: Robust
traffic analysis defenses will likely lead to inferior performance
due to delays in transmitting packets and increased traffic volume.</t>
      </section>
      <section anchor="side-channel-attacks">
        <name>Side Channel Attacks</name>
        <t>In general, TLS does not have specific defenses against side-channel
attacks (i.e., those which attack the communications via secondary
channels such as timing), leaving those to the implementation of the relevant
cryptographic primitives. However, certain features of TLS are
designed to make it easier to write side-channel resistant code:</t>
        <ul spacing="normal">
          <li>Unlike previous versions of TLS which used a composite
MAC-then-encrypt structure, TLS 1.3 only uses AEAD algorithms,
allowing implementations to use self-contained constant-time
implementations of those primitives.</li>
          <li>TLS uses a uniform "bad_record_mac" alert for all decryption
errors, which is intended to prevent an attacker from gaining
piecewise insight into portions of the message.  Additional resistance
is provided by terminating the connection on such errors; a new
connection will have different cryptographic material, preventing
attacks against the cryptographic primitives that require multiple
trials.</li>
        </ul>
        <t>Information leakage through side channels can occur at layers above
TLS, in application protocols and the applications that use
them. Resistance to side-channel attacks depends on applications and
application protocols separately ensuring that confidential
information is not inadvertently leaked.</t>
      </section>
      <section anchor="replay-0rtt">
        <name>Replay Attacks on 0-RTT</name>
        <t>Replayable 0-RTT data presents a number of security threats to
TLS-using applications, unless those applications are specifically
engineered to be safe under replay
(minimally, this means idempotent, but in many cases may
also require other stronger conditions, such as constant-time
response). Potential attacks include:</t>
        <ul spacing="normal">
          <li>Duplication of actions which cause side effects (e.g., purchasing an
item or transferring money) to be duplicated, thus harming the site or
the user.</li>
          <li>Attackers can store and replay 0-RTT messages in order to
reorder them with respect to other messages (e.g., moving
a delete to after a create).</li>
          <li>Amplifying existing information leaks caused by side effects like
caching. An attacker could learn information about the content of a
0-RTT message by replaying it to some cache node that has not cached
some resource of interest, and then using a separate connection to check
whether that resource has been added to the cache. This could be repeated
with different cache nodes as often as the 0-RTT message is replayable.</li>
        </ul>
        <t>If data can be replayed a large number of times, additional attacks
become possible, such as making repeated measurements of the
speed of cryptographic operations. In addition, they may
be able to overload rate-limiting systems. For a further description of
these attacks, see <xref target="Mac17"/>.</t>
        <t>Ultimately, servers have the responsibility to protect themselves
against attacks employing 0-RTT data replication. The mechanisms
described in <xref target="anti-replay"/> are intended to
prevent replay at the TLS layer but do not provide complete protection
against receiving multiple copies of client data.
TLS 1.3 falls back to the 1-RTT
handshake when the server does not have any information about the
client, e.g., because it is in a different cluster which does not
share state or because the ticket has been deleted as described in
<xref target="single-use-tickets"/>. If the application-layer protocol retransmits
data in this setting, then it is possible for an attacker to induce
message duplication by sending the ClientHello to both the original cluster
(which processes the data immediately) and another cluster which will
fall back to 1-RTT and process the data upon application-layer
replay. The scale of this attack is limited by the client's
willingness to retry transactions and therefore only allows a limited amount
of duplication, with each copy appearing as a new connection at
the server.</t>
        <t>If implemented correctly, the mechanisms described in
<xref target="single-use-tickets"/> and <xref target="client-hello-recording"/> prevent a
replayed ClientHello and its associated 0-RTT data from being accepted
multiple times by any cluster with consistent state; for servers
which limit the use of 0-RTT to one cluster for a single ticket, then a given
ClientHello and its associated 0-RTT data will only be accepted once.
However, if state is not completely consistent,
then an attacker might be able to have multiple copies of the data be
accepted during the replication window.
Because clients do not know the exact details of server behavior, they
MUST NOT send messages in early data which are not safe to have
replayed and which they would not be willing to retry across multiple
1-RTT connections.</t>
        <t>Application protocols MUST NOT use 0-RTT data without a profile that
defines its use. That profile needs to identify which messages or
interactions are safe to use with 0-RTT and how to handle the
situation when the server rejects 0-RTT and falls back to 1-RTT.</t>
        <t>In addition, to avoid accidental misuse, TLS implementations MUST NOT
enable 0-RTT (either sending or accepting) unless specifically
requested by the application and MUST NOT automatically resend 0-RTT
data if it is rejected by the server unless instructed by the
application. Server-side applications may wish to implement special
processing for 0-RTT data for some kinds of application traffic (e.g.,
abort the connection, request that data be resent at the application
layer, or delay processing until the handshake completes). In order to
allow applications to implement this kind of processing, TLS
implementations MUST provide a way for the application to determine if
the handshake has completed.</t>
        <section anchor="replay-and-exporters">
          <name>Replay and Exporters</name>
          <t>Replays of the ClientHello produce the same early exporter, thus
requiring additional care by applications which use these exporters.
In particular, if these exporters are used as an authentication
channel binding (e.g., by signing the output of the exporter)
an attacker who compromises the PSK can transplant authenticators
between connections without compromising the authentication key.</t>
          <t>In addition, the early exporter SHOULD NOT be used to generate
server-to-client encryption keys because that would entail
the reuse of those keys. This parallels the use of the early
application traffic keys only in the client-to-server direction.</t>
        </section>
      </section>
      <section anchor="psk-identity-exposure">
        <name>PSK Identity Exposure</name>
        <t>Because implementations respond to an invalid PSK binder by aborting
the handshake, it may be possible for an attacker to verify whether
a given PSK identity is valid. Specifically, if a server accepts
both external-PSK and certificate-based handshakes, a valid PSK identity
will result in a failed handshake, whereas an invalid identity will
just be skipped and result in a successful certificate handshake.
Servers which solely support PSK handshakes may be able to resist
this form of attack by treating the cases where there is no
valid PSK identity and where there is an identity but it has an
invalid binder identically.</t>
      </section>
      <section anchor="sharing-psks">
        <name>Sharing PSKs</name>
        <t>TLS 1.3 takes a conservative approach to PSKs by binding them to a
specific KDF.  By contrast, TLS 1.2 allows PSKs to be used with any
hash function and the TLS 1.2 PRF.  Thus, any PSK which is used with
both TLS 1.2 and TLS 1.3 must be used with only one hash in TLS 1.3,
which is less than optimal if users want to provision a single PSK.
The constructions in TLS 1.2 and TLS 1.3 are different, although they
are both based on HMAC.  While there is no known way in which the
same PSK might produce related output in both versions, only limited
analysis has been done.  Implementations can ensure safety from
cross-protocol related output by not reusing PSKs between TLS 1.3 and
TLS 1.2.</t>
      </section>
      <section anchor="attacks-on-static-rsa">
        <name>Attacks on Static RSA</name>
        <t>Although TLS 1.3 does not use RSA key transport and so is not
directly susceptible to Bleichenbacher-type attacks <xref target="Blei98"/>if TLS 1.3
servers also support static RSA in the context of previous
versions of TLS, then it may be possible to impersonate the server
for TLS 1.3 connections <xref target="JSS15"/>. TLS
1.3 implementations can prevent this attack by disabling support
for static RSA across all versions of TLS. In principle, implementations
might also be able to separate certificates with different keyUsage
bits for static RSA decryption and RSA signature, but this technique
relies on clients refusing to accept signatures using keys
in certificates that do not have the digitalSignature bit set,
and many clients do not enforce this restriction.</t>
      </section>
    </section>
    <section anchor="change-log">
      <name>Change Log</name>
      <t>[[RFC EDITOR: Please remove in final RFC.]]
Since -06
- Updated text about differences from RFC 8446.
- Clarify which parts of IANA considerations are new to this document.
- Upgrade the requirement to initiate key update before exceeding
  key usage limits to MUST.
- Add some text around use of the same cert for client and server.</t>
      <t>Since -05</t>
      <ul spacing="normal">
        <li>Port in text on key update limits from RFC 9147 (Issue 1257)</li>
        <li>Clarify that you need to ignore NST if you don't do resumption
(Issue 1280)</li>
        <li>Discuss the privacy implications of external key reuse (Issue 1287)</li>
        <li>Advice on key deletion (PR 1282)</li>
        <li>Clarify what unsolicited extensions means (PR 1275)</li>
        <li>close_notify should be warning (PR 1290)</li>
        <li>Reference RFC 8773 (PR 1296)</li>
        <li>Add some more information about application bindings and cite
6125-bis (PR 1297)</li>
      </ul>
      <t>Since -04</t>
      <ul spacing="normal">
        <li>Update the extension table (Issue 1241)</li>
        <li>Clarify user_canceled (Issue 1208)</li>
        <li>Clarify 0-RTT cache side channels (Issue 1225)</li>
        <li>Require that message reinjection be done with the current hash.
Potentially a clarification and potentially a wire format
change depending on previous interpretation (Issue 1227)</li>
      </ul>
      <t>Changelog not updated between -00 and -03</t>
      <t>Since -00</t>
      <ul spacing="normal">
        <li>Update TLS 1.2 terminology</li>
        <li>Specify "certificate-based" client authentication</li>
        <li>Clarify that privacy guarantees don't apply when you have null encryption</li>
        <li>Shorten some names</li>
        <li>Address tracking implications of resumption</li>
      </ul>
    </section>
    <section numbered="false" anchor="contributors">
      <name>Contributors</name>
      <artwork><![CDATA[
      Martin Abadi
      University of California, Santa Cruz
      abadi@cs.ucsc.edu

      Christopher Allen
      (co-editor of TLS 1.0)
      Alacrity Ventures
      ChristopherA@AlacrityManagement.com

      Nimrod Aviram
      Tel Aviv University
      nimrod.aviram@gmail.com

      Richard Barnes
      Cisco
      rlb@ipv.sx

      Steven M. Bellovin
      Columbia University
      smb@cs.columbia.edu

      David Benjamin
      Google
      davidben@google.com

      Benjamin Beurdouche
      INRIA & Microsoft Research
      benjamin.beurdouche@ens.fr

      Karthikeyan Bhargavan
      (editor of [RFC7627])
      INRIA
      karthikeyan.bhargavan@inria.fr

      Simon Blake-Wilson
      (co-author of [RFC4492])
      BCI
      sblakewilson@bcisse.com

      Nelson Bolyard
      (co-author of [RFC4492])
      Sun Microsystems, Inc.
      nelson@bolyard.com

      Ran Canetti
      IBM
      canetti@watson.ibm.com

      Matt Caswell
      OpenSSL
      matt@openssl.org

      Stephen Checkoway
      University of Illinois at Chicago
      sfc@uic.edu

      Pete Chown
      Skygate Technology Ltd
      pc@skygate.co.uk

      Katriel Cohn-Gordon
      University of Oxford
      me@katriel.co.uk

      Cas Cremers
      University of Oxford
      cas.cremers@cs.ox.ac.uk

      Antoine Delignat-Lavaud
      (co-author of [RFC7627])
      INRIA
      antdl@microsoft.com

      Tim Dierks
      (co-author of TLS 1.0, co-editor of TLS 1.1 and 1.2)
      Independent
      tim@dierks.org

      Roelof DuToit
      Symantec Corporation
      roelof_dutoit@symantec.com

      Taher Elgamal
      Securify
      taher@securify.com

      Pasi Eronen
      Nokia
      pasi.eronen@nokia.com

      Cedric Fournet
      Microsoft
      fournet@microsoft.com

      Anil Gangolli
      anil@busybuddha.org

      David M. Garrett
      dave@nulldereference.com

      Illya Gerasymchuk
      Independent
      illya@iluxonchik.me

      Alessandro Ghedini
      Cloudflare Inc.
      alessandro@cloudflare.com

      Daniel Kahn Gillmor
      ACLU
      dkg@fifthhorseman.net

      Matthew Green
      Johns Hopkins University
      mgreen@cs.jhu.edu

      Jens Guballa
      ETAS
      jens.guballa@etas.com

      Felix Guenther
      TU Darmstadt
      mail@felixguenther.info

      Vipul Gupta
      (co-author of [RFC4492])
      Sun Microsystems Laboratories
      vipul.gupta@sun.com

      Chris Hawk
      (co-author of [RFC4492])
      Corriente Networks LLC
      chris@corriente.net

      Kipp Hickman

      Alfred Hoenes

      David Hopwood
      Independent Consultant
      david.hopwood@blueyonder.co.uk

      Marko Horvat
      MPI-SWS
      mhorvat@mpi-sws.org

      Jonathan Hoyland
      Royal Holloway, University of London
      jonathan.hoyland@gmail.com

      Subodh Iyengar
      Facebook
      subodh@fb.com

      Benjamin Kaduk
      Akamai Technologies
      kaduk@mit.edu

      Hubert Kario
      Red Hat Inc.
      hkario@redhat.com

      Phil Karlton
      (co-author of SSL 3.0)

      Leon Klingele
      Independent
      mail@leonklingele.de

      Paul Kocher
      (co-author of SSL 3.0)
      Cryptography Research
      paul@cryptography.com

      Hugo Krawczyk
      IBM
      hugokraw@us.ibm.com

      Adam Langley
      (co-author of [RFC7627])
      Google
      agl@google.com

      Olivier Levillain
      ANSSI
      olivier.levillain@ssi.gouv.fr

      Xiaoyin Liu
      University of North Carolina at Chapel Hill
      xiaoyin.l@outlook.com

      Ilari Liusvaara
      Independent
      ilariliusvaara@welho.com

      Atul Luykx
      K.U. Leuven
      atul.luykx@kuleuven.be

      Colm MacCarthaigh
      Amazon Web Services
      colm@allcosts.net

      Carl Mehner
      USAA
      carl.mehner@usaa.com

      Jan Mikkelsen
      Transactionware
      janm@transactionware.com

      Bodo Moeller
      (co-author of [RFC4492])
      Google
      bodo@acm.org

      Kyle Nekritz
      Facebook
      knekritz@fb.com

      Erik Nygren
      Akamai Technologies
      erik+ietf@nygren.org

      Magnus Nystrom
      Microsoft
      mnystrom@microsoft.com

      Kazuho Oku
      DeNA Co., Ltd.
      kazuhooku@gmail.com

      Kenny Paterson
      Royal Holloway, University of London
      kenny.paterson@rhul.ac.uk

      Christopher Patton
      University of Florida
      cjpatton@ufl.edu

      Alfredo Pironti
      (co-author of [RFC7627])
      INRIA
      alfredo.pironti@inria.fr

      Andrei Popov
      Microsoft
      andrei.popov@microsoft.com

      John {{{Preuß Mattsson}}}
      Ericsson
      john.mattsson@ericsson.com

      Marsh Ray
      (co-author of [RFC7627])
      Microsoft
      maray@microsoft.com

      Robert Relyea
      Netscape Communications
      relyea@netscape.com

      Kyle Rose
      Akamai Technologies
      krose@krose.org

      Jim Roskind
      Amazon
      jroskind@amazon.com

      Michael Sabin

      Joe Salowey
      Tableau Software
      joe@salowey.net

      Rich Salz
      Akamai
      rsalz@akamai.com

      David Schinazi
      Apple Inc.
      dschinazi@apple.com

      Sam Scott
      Royal Holloway, University of London
      me@samjs.co.uk

      Thomas Shrimpton
      University of Florida
      teshrim@ufl.edu

      Dan Simon
      Microsoft, Inc.
      dansimon@microsoft.com

      Brian Smith
      Independent
      brian@briansmith.org
      
      Ben Smyth
      Ampersand
      www.bensmyth.com

      Brian Sniffen
      Akamai Technologies
      ietf@bts.evenmere.org

      Nick Sullivan
      Cloudflare Inc.
      nick@cloudflare.com

      Bjoern Tackmann
      University of California, San Diego
      btackmann@eng.ucsd.edu

      Tim Taubert
      Mozilla
      ttaubert@mozilla.com

      Martin Thomson
      Mozilla
      mt@mozilla.com

      Hannes Tschofenig
      Arm Limited
      Hannes.Tschofenig@arm.com

      Sean Turner
      sn3rd
      sean@sn3rd.com

      Steven Valdez
      Google
      svaldez@google.com

      Filippo Valsorda
      Cloudflare Inc.
      filippo@cloudflare.com

      Thyla van der Merwe
      Royal Holloway, University of London
      tjvdmerwe@gmail.com

      Victor Vasiliev
      Google
      vasilvv@google.com

      Hoeteck Wee
      Ecole Normale Superieure, Paris
      hoeteck@alum.mit.edu

      Tom Weinstein

      David Wong
      NCC Group
      david.wong@nccgroup.trust

      Christopher A. Wood
      Apple Inc.
      cawood@apple.com

      Tim Wright
      Vodafone
      timothy.wright@vodafone.com

      Peter Wu
      Independent
      peter@lekensteyn.nl

      Kazu Yamamoto
      Internet Initiative Japan Inc.
      kazu@iij.ad.jp
]]></artwork>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAIZIWQAA+y9a3fbRpY2+h2/ol5lrdNUhqRI6m4nPUeW5FiT2NZrKUn3
pNNaEAlJaJMABwAlM47nt599q6pdAEjLdrpnPhyv1R2KBOq6a9e+PrvX60VV
Wk2TJ+byLjGXRZyV87yozA/xMinMRTJeFGm1NJ3LHy42zXmRV/k4n5qfkqJM
88wM+9tRfH1dJPfw/g8X0SQfZ/EMGpsU8U3VS5PqpldNy15xMz7Y2dm7Tsve
YD8ax1VymxfLJ6asJtFiPoG/yydmd3+w2zV7g729rtnfG+13zcHOaBTl12U+
TfiJwT58uzvagSf2DveG+MTOXhSl8+KJmRfJ7vb+wWWxKKvRYHA4GEVxkcRP
zHdJlhTxNHrIi7e3Rb6YP4neJkv4a/LEnGVVUmRJ1TvBAUdRWcXZ5Cqe5hlM
YpmU0Tx9EhkD408mZbWcyrfGwDqoj2k2SbLKflHCAhbJTen+Xs6CP6siHbuH
x/lsBu+6X9Nsmma+m+Rd1ZumZdWDRq7zKTzWy7/+N/gFlnoWz+dpdsvPxovq
Li9gsD34kf6lGTx92jdvknKcF9PYfs87dAqDaPyUF7dxlv4WV7C5T8zL/Ld0
6n9MZnE6fWKSt8X/W1Q3sz6MPIqyvJjB4/cJLtOb58ej4WDHfRweysfd0cHA
fjzYs9/iVtuPe7u78vFgZ9s+gFRgP+7vHNiPh67dg8H2yH0c2mcPhqM993Hf
Dmd3OKRv/7J3SGOhf0L7G2fZDU8EiLpKxndZPs1vl6Znji5e9Ycmycb5BJba
vFlMkRAv5sk4vUnH/EJ+Y57FJSznafCY6Tw7fbPZNcdxlmfw7LTx+zH8boDg
zAnsMHy/SMu7ZNJ47AQe27AjxsPyxDxProtFXCzNaDAa2p8cCRi/nUDilz/2
Lu13ZVKkSZnCbNVjZxevt85Oj83BwWinN3wiTZ682N/zD9mFepU8wGiLZIwz
L4HGzHGxnFf5bRHP75ZulM2xwFoSQf7ch/dvbtKk+dPLvnmRTKezOHO/8WyH
h/v7vcGe+1bNwpydnp4y34plTLAjejuBrwGv6Zqf+meXvdHIZH1s6Lvjl83J
vUn4NE74TWjDPJvm47fmOJ3fATt8mU9gP2C7X8+Bo/Ah+Q6YRVpuHecLZCX0
iOlA67yx3708Ot6ozQaY035vOPz4UsF6nCDTSrO2mavnX51dXApRApWdL66n
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
ixJoKplUmMFgkWQrqrso9u4gfY1ldKlMrQbgYoIlmKTKI07FSzhPKZ5KVKuD
Typ9aS5Ec8VfPWy2ML7QKXzp7NCYWCnDc362VXlprcKGv028TyiROt1NKpBi
f+36aQM64hF3hvhg6D4o+1JkwNtkgSf40j0q/9YHYlXxrQTpcNSzq2yjq+o6
+L/+eqe565mg4VwLVw0cR/F++ycwiAG93k3Hs2vz6RqEQLFVIswuQWqu+7f1
tQE10OwN9vZq3vpZ/O7qpohvUUK94kUhDPRPawXV0kXp0P521w1nTSs1tIvO
cPW8pJWDndGoa/YPh4f1tlrAfQiFcF1bO/URgYJ9VRbVvDPc+cgKu1Z29/d2
aq3cJXCIr5O4IozDR7Wytzsa1FrRdX0J8PLK6bWK/3eGe9CFtLK/PRi2rAss
sIauwzRQ2MAZzPIgGJ4dy+FePcZDsAWDVoDeO8PD5vzsWEa79RkJBTdaGbVs
++pWJKe3M1pFti2t7B3s1lsJ/EmdnXWNraYXBaq5M3rcmWxppclyOzvtlLuu
FRajOjsfp9x1rbTj4nR22gh5zVjUFiOGBx7IFJvZX7nTLa3ADXl1k07RsNHZ
OVg/rTUzystKVejG4XR2Wuh2fSsrwcM6uw3qXd2Kk247ux+l3tWtdPZ2d7c1
smlwJ0kBOZLNN8L7acOnHAqIt8uKVg5VLk8Rvs2ICS7YUpuNXOaSrQfj2tSB
4bbVtuCNRj8S38uVBCRZSIGs6BBlhbRWgx53sglHp7ZBeZsfqbBM5MVQVaEC
hC8q7OVQHthLAguIch3ZuLuGi7CXzsIRWY+9CmQlEc0HzWRr5sxl2izsMCkT
mfZmi75TfEQVN3HUFq0qAhVH7tAAqeQt2+9pqFiIxxcdkCH3bSFiMSNyAWoR
zuyIVAU/6xsyXFoQlaH0dsFhCpGE8utpCVU0QiMEYpNyEdJM5M1Px9hUbnek
KLZuEQyUneDEQgyQNLPllP0bkLJx2bF6/eL2jmPskrC5fyxKFehrY419wBAa
VVyDYnHwACPlZoASg9TE0XZ+EWzbUdMS0rCaeo2y0Y4bRBs4VbctSKHbhtxS
Q01SoEiX9e6bU7C6YBOn17vmObbFKQ9Hf7VIOMhehLZbBhD0TzHQDmtnkZU5
1YoJBH67nHUkXVQUabOVuqZS93gokxStotNlxCyPqk3Vy1w5mycNQi+G7EPk
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
xyStJwsTIskJA1njntGzwFlqlVTKXUvQFgnbMdQSE7tj73kp4fgcCVNhwl2j
dNzZ4EPxsDYK6EEAPpk/QMvWzP4jsezzJbl7hu6HUku9JHlORAe9dRCePbz/
eskAZav5Fuw9A0FBKfWTRhEXEzSDkE512tppfsQcS+4v0hjb5bZElU/3Z8a+
OdAXueHiDLUKK0lFDqotpE8Hz/TKDg2Z5dTRbDsI6AzRToBygr/n0NYAzELi
JfkECBH0WOqebb+1KUCN+BstCegic9wDsoN0ZyJeyVnWHWs8WtlHH+aXTYCn
JUzkloplyVEO4zTgmB8GkpAJ9DiFnoXPYO2c4dGvKEyLmdccOvIStXk8N3se
2eSSbuZFOLy4VXjVcTjYLm1hvGvy4EklIMEgksCbnWDGleWBo97upkR1Q8Tz
44VPVrkuEjvJdRb6D+AjmdDqtCDnm8UVbuKwEB0xeKKNLI79PBZw2I59RDSo
CSd7afB9XBHb68LcQi4HNm4uEAbMqFBMFI6nvfyIeyscO5UN3jz/U8qGLNM9
LrPd7nkXYGAgLb21NwTMShGexDozmEicxSqy805ueiYkjLPlmhGemqen3XRg
4rryTpJU2+w4+ovfhMYQlMNgSkDGtgF/QVXRqXqvRZQQAnEkhHe1zA6fqmiu
nopLiME+Nli35ZdqT3hE/ACo3zI3U3Wwaufnl+2Cyt8KbWGPKxAzmDAl0jb4
4cWzTrnIGLvLKtGKa70/lbEnE+kJbBgcqh+N3zBPc5BalDzTiLlgc++3d+zD
oJ1vFViMSDsoaEolpIAZJ5NEFAk7RloH2olv0Cyo+PBEa2Yy1Nm9MIc86wP2
+A4gwpDfwcphEy+B1bw5h7jtoSuWgDVikN7mp0CyQFrF9tHOhYHOjTI2T7or
gSrIVUDrhitbudZph/IgXPfGhFPUFZAFurM8PhdAGpbQYVenC5A8c+lXqGlN
NgMSRWQH6GKW7qiL8Gs3Fljzuip0kjErfZApoxzP4b5T4e7fQ9SLSJDFrVfs
VZoVwpMfnpQpM5TrJeUYQIslVkfaRooslfZGVdWggu92qI4zicXvnj1i7ekO
jYKZlbxWoCskKljmc+NsSgJGq358/vSH7757/v2z589Ecvyy8YXh8VX3Gh/3
jZNQ923BXWNDfuqipio0OiQIwNdLMR90EBwySlRdXZML+HUYNj2cfYLdsC7M
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
/y+Ec6rjy20EAA==

-->

</rfc>
