rfc8773xml2.original.xml | rfc8773.xml | |||
---|---|---|---|---|
<?xml version='1.0' encoding='utf-8'?> | <?xml version='1.0' encoding='utf-8'?> | |||
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [ | <!DOCTYPE rfc SYSTEM "rfc2629-xhtml.ent"> | |||
<!ENTITY RFC2104 PUBLIC '' 'https://xml2rfc.ietf.org/public/rfc/bibxml/refere | ||||
nce.RFC.2104.xml'> | ||||
<!ENTITY RFC2119 PUBLIC '' 'https://xml2rfc.ietf.org/public/rfc/bibxml/refere | ||||
nce.RFC.2119.xml'> | ||||
<!ENTITY RFC4086 PUBLIC '' 'https://xml2rfc.ietf.org/public/rfc/bibxml/refere | ||||
nce.RFC.4086.xml'> | ||||
<!ENTITY RFC5246 PUBLIC '' 'https://xml2rfc.ietf.org/public/rfc/bibxml/refere | ||||
nce.RFC.5246.xml'> | ||||
<!ENTITY RFC8017 PUBLIC '' 'https://xml2rfc.ietf.org/public/rfc/bibxml/refere | ||||
nce.RFC.8017.xml'> | ||||
<!ENTITY RFC8174 PUBLIC '' 'https://xml2rfc.ietf.org/public/rfc/bibxml/refere | ||||
nce.RFC.8174.xml'> | ||||
<!ENTITY RFC8446 PUBLIC '' 'https://xml2rfc.ietf.org/public/rfc/bibxml/refere | ||||
nce.RFC.8446.xml'> | ||||
<!ENTITY C2PQ PUBLIC '' 'https://xml2rfc.ietf.org/public/rfc/bibxml3/refer | ||||
ence.I-D.hoffman-c2pq.xml'> | ||||
<!ENTITY IMPORTER PUBLIC '' 'https://xml2rfc.ietf.org/public/rfc/bibxml3/refer | ||||
ence.I-D.ietf-tls-external-psk-importer.xml'> | ||||
]> | ||||
<rfc submissionType="IETF" | ||||
docName="draft-ietf-tls-tls13-cert-with-extern-psk-07" | ||||
category="exp" | ||||
ipr="trust200902"> | ||||
<?rfc compact="yes"?> | <rfc xmlns:xi="http://www.w3.org/2001/XInclude" submissionType="IETF" | |||
<?rfc text-list-symbols="o*+-"?> | docName="draft-ietf-tls-tls13-cert-with-extern-psk-07" category="exp" | |||
<?rfc subcompact="no"?> | ipr="trust200902" obsoletes="" updates="" xml:lang="en" sortRefs="true" | |||
<?rfc sortrefs="yes"?> | symRefs="true" version="3" number="8773" consensus="true" tocInclude="true" | |||
<?rfc symrefs="yes"?> | > | |||
<?rfc strict="yes"?> | <!-- xml2rfc v2v3 conversion 2.39.0 --> | |||
<front> | <front> | |||
<title abbrev="Certificate with External PSK">TLS 1.3 Extension for | <title abbrev="Certificate with External PSK">TLS 1.3 Extension for | |||
Certificate-based Authentication with an External Pre-Shared Key</title> | Certificate-Based Authentication with an External Pre-Shared Key</title> | |||
<seriesInfo name="RFC" value="8773"/> | ||||
<author fullname="Russ Housley" initials="R." surname="Housley"> | <author fullname="Russ Housley" initials="R." surname="Housley"> | |||
<organization abbrev="Vigil Security">Vigil Security, LLC</organization> | <organization abbrev="Vigil Security">Vigil Security, LLC</organization> | |||
<address> | <address> | |||
<postal> | <postal> | |||
<street>516 Dranesville Road</street> | <street>516 Dranesville Road</street> | |||
<city>Herndon</city> | <city>Herndon</city> | |||
<region>VA</region> | <region>VA</region> | |||
<code>20170</code> | <code>20170</code> | |||
<country>USA</country> | <country>United States of America</country> | |||
</postal> | </postal> | |||
<email>housley@vigilsec.com</email> | <email>housley@vigilsec.com</email> | |||
</address> | </address> | |||
</author> | </author> | |||
<date month="March" year="2020"/> | ||||
<date day="23" month="December" year="2019"/> | <keyword>cryptography</keyword> | |||
<abstract> | <abstract> | |||
<t> | <t> | |||
This document specifies a TLS 1.3 extension that allows a server to | This document specifies a TLS 1.3 extension that allows a server to | |||
authenticate with a combination of a certificate and an external | authenticate with a combination of a certificate and an external | |||
pre-shared key (PSK). | pre-shared key (PSK). | |||
</t> | </t> | |||
</abstract> | </abstract> | |||
</front> | </front> | |||
<middle> | <middle> | |||
<section title="Introduction" anchor="section-intro"> | <section anchor="intro" numbered="true" toc="default"> | |||
<name>Introduction</name> | ||||
<t> | <t> | |||
The TLS 1.3 <xref target="RFC8446"/> handshake | The TLS 1.3 <xref target="RFC8446" format="default"/> handshake | |||
protocol provides two mutually exclusive forms of server | protocol provides two mutually exclusive forms of server | |||
authentication. First, the server can be authenticated by | authentication. First, the server can be authenticated by | |||
providing a signature certificate and creating a valid digital | providing a signature certificate and creating a valid digital | |||
signature to demonstrate that it possesses the corresponding | signature to demonstrate that it possesses the corresponding | |||
private key. Second, the server can be authenticated | private key. Second, the server can be authenticated | |||
by demonstrating that it possesses a pre-shared key (PSK) that | by demonstrating that it possesses a pre-shared key (PSK) that | |||
was established by a previous handshake. A PSK that | was established by a previous handshake. A PSK that | |||
is established in this fashion is called a resumption PSK. A | is established in this fashion is called a resumption PSK. A | |||
PSK that is established by any other means is called an external | PSK that is established by any other means is called an external | |||
PSK. This document specifies a TLS 1.3 extension permitting | PSK. This document specifies a TLS 1.3 extension permitting | |||
certificate-based server authentication to be combined with | certificate-based server authentication to be combined with | |||
an external PSK as an input to the TLS 1.3 key schedule. | an external PSK as an input to the TLS 1.3 key schedule. | |||
</t> | </t> | |||
<t> | <t> | |||
Several implementors wanted to gain more experience with this | Several implementors wanted to gain more experience with this | |||
specification before producing a standards-track RFC. As a | specification before producing a Standards Track RFC. As a | |||
result, this specification is being published as an Experimental | result, this specification is being published as an Experimental | |||
RFC to enable interoperable implementations and gain deployment | RFC to enable interoperable implementations and gain deployment | |||
and operational experience. | and operational experience. | |||
</t> | </t> | |||
</section> | </section> | |||
<section anchor="term" numbered="true" toc="default"> | ||||
<section title="Terminology" anchor="section-term"> | <name>Terminology</name> | |||
<t> | <t> | |||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL | |||
"OPTIONAL" in this document are to be interpreted as described in | NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", | |||
BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and | "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>", | |||
only when, they appear in all capitals, as shown here. | "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to | |||
</t> | 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> | ||||
</section> | </section> | |||
<section anchor="motive" numbered="true" toc="default"> | ||||
<section title="Motivation and Design Rationale" anchor="motive"> | <name>Motivation and Design Rationale</name> | |||
<t> | <t> | |||
The development of a large-scale quantum computer would pose a serious | The development of a large-scale quantum computer would pose a serious | |||
challenge for the cryptographic algorithms that are widely deployed | challenge for the cryptographic algorithms that are widely deployed | |||
today, including the digital signature algorithms that are used | today, including the digital signature algorithms that are used | |||
to authenticate the server in the TLS 1.3 handshake protocol. It | to authenticate the server in the TLS 1.3 handshake protocol. It | |||
is an open question whether or not it is feasible to build | is an open question whether or not it is feasible to build | |||
a large-scale quantum computer, and if so, when that might | a large-scale quantum computer, and if so, when that might | |||
happen. However, if such a quantum computer is invented, many | happen. However, if such a quantum computer is invented, many | |||
of the cryptographic algorithms and the security protocols that | of the cryptographic algorithms and the security protocols that | |||
use them would become vulnerable. | use them would become vulnerable. | |||
</t> | </t> | |||
<t> | <t> | |||
The TLS 1.3 handshake protocol employs key agreement algorithms | The TLS 1.3 handshake protocol employs key agreement algorithms | |||
and digital signature algorithms that could be broken by the | and digital signature algorithms that could be broken by the | |||
development of a large-scale quantum computer | development of a large-scale quantum computer | |||
<xref target="I-D.hoffman-c2pq"/>. The key agreement algorithms | <xref target="I-D.hoffman-c2pq" format="default"/>. The key agre | |||
include Diffie-Hellman (DH) <xref target="DH1977"/> and | ement algorithms | |||
Elliptic Curve Diffie-Hellman (ECDH) <xref target="IEEE1363"/>; | include Diffie-Hellman (DH) <xref target="DH1976" format="default | |||
the digital signature algorithms include RSA <xref target="RFC801 | "/> and | |||
7"/> | Elliptic Curve Diffie-Hellman (ECDH) <xref target="IEEE1363" form | |||
and Elliptic Curve Digital Signature Algorithm (ECDSA) | at="default"/>; | |||
<xref target="FIPS186"/>. As a result, an adversary that | the digital signature algorithms include RSA <xref target="RFC801 | |||
7" format="default"/> | ||||
and the Elliptic Curve Digital Signature Algorithm (ECDSA) | ||||
<xref target="FIPS186" format="default"/>. As a result, an adver | ||||
sary that | ||||
stores a TLS 1.3 handshake protocol exchange today could | stores a TLS 1.3 handshake protocol exchange today could | |||
decrypt the associated encrypted communications in the | decrypt the associated encrypted communications in the | |||
future when a large-scale quantum computer becomes | future when a large-scale quantum computer becomes | |||
available. | available. | |||
</t> | </t> | |||
<t> | <t> | |||
In the near-term, this document describes TLS 1.3 extension to protect | In the near term, this document describes a TLS 1.3 extension to protect | |||
today's communications from the future invention of a large-scale | today's communications from the future invention of a large-scale | |||
quantum computer by providing a strong external PSK as an input to | quantum computer by providing a strong external PSK as an input to | |||
the TLS 1.3 key schedule while preserving the authentication provided | the TLS 1.3 key schedule while preserving the authentication provided | |||
by the existing certificate and digital signature mechanisms. | by the existing certificate and digital signature mechanisms. | |||
</t> | </t> | |||
</section> | </section> | |||
<section anchor="over" numbered="true" toc="default"> | ||||
<section title="Extension Overview" anchor="section-over"> | <name>Extension Overview</name> | |||
<t> | <t> | |||
This section provides a brief overview of the | This section provides a brief overview of the | |||
"tls_cert_with_extern_psk" extension. | "tls_cert_with_extern_psk" extension. | |||
</t> | </t> | |||
<t> | <t> | |||
The client includes the "tls_cert_with_extern_psk" extension in the | The client includes the "tls_cert_with_extern_psk" extension in the | |||
ClientHello message. The "tls_cert_with_extern_psk" extension MUST | ClientHello message. The "tls_cert_with_extern_psk" extension <bcp14>MU | |||
be accompanied by the "key_share”, "psk_key_exchange_modes", and | ST</bcp14> | |||
"pre_shared_key" extensions. The client MAY also find it useful | be accompanied by the "key_share", "psk_key_exchange_modes", and | |||
"pre_shared_key" extensions. The client <bcp14>MAY</bcp14> also find it | ||||
useful | ||||
to include the "supported_groups" extension. Since the | to include the "supported_groups" extension. Since the | |||
"tls_cert_with_extern_psk" extension is intended to be used only | "tls_cert_with_extern_psk" extension is intended to be used only | |||
with initial handshakes, it MUST NOT be sent alongside the | with initial handshakes, it <bcp14>MUST NOT</bcp14> be sent alongside th e | |||
"early_data" extension. These extensions are all described in | "early_data" extension. These extensions are all described in | |||
Section 4.2 of <xref target="RFC8446"/>, which also requires | <xref target="RFC8446" sectionFormat="of" section="4.2"/>, which also re | |||
the "pre_shared_key” extension to be the last extension in the | quires | |||
the "pre_shared_key" extension to be the last extension in the | ||||
ClientHello message. | ClientHello message. | |||
</t> | </t> | |||
<t> | <t> | |||
If the client includes both the "tls_cert_with_extern_psk" extension | If the client includes both the "tls_cert_with_extern_psk" extension | |||
and the "early_data" extension, then the server MUST terminate the | and the "early_data" extension, then the server <bcp14>MUST</bcp14> term inate the | |||
connection with an "illegal_parameter" alert. | connection with an "illegal_parameter" alert. | |||
</t> | </t> | |||
<t> | <t> | |||
If the server is willing to use one of the external PSKs listed in the | If the server is willing to use one of the external PSKs listed in the | |||
"pre_shared_key” extension and perform certificate-based authentication, | "pre_shared_key" extension and perform certificate-based authentication, | |||
then the server includes the "tls_cert_with_extern_psk" extension in the | then the server includes the "tls_cert_with_extern_psk" extension in the | |||
ServerHello message. The "tls_cert_with_extern_psk" extension MUST be | ServerHello message. The "tls_cert_with_extern_psk" extension <bcp14>MU ST</bcp14> be | |||
accompanied by the "key_share" and "pre_shared_key" extensions. If none | accompanied by the "key_share" and "pre_shared_key" extensions. If none | |||
of the external PSKs in the list provided by the client is acceptable | of the external PSKs in the list provided by the client is acceptable | |||
to the server, then the "tls_cert_with_extern_psk" extension is | to the server, then the "tls_cert_with_extern_psk" extension is | |||
omitted from the ServerHello message. | omitted from the ServerHello message. | |||
</t> | </t> | |||
<t> | <t> | |||
When the "tls_cert_with_extern_psk" extension is successfully | When the "tls_cert_with_extern_psk" extension is successfully | |||
negotiated, the TLS 1.3 key schedule processing includes | negotiated, the TLS 1.3 key schedule processing includes | |||
both the selected external PSK and the (EC)DHE shared secret | both the selected external PSK and the (EC)DHE shared secret | |||
value. As a result, the Early Secret, Handshake Secret, and | value. (EC)DHE refers to Diffie-Hellman over either finite fields | |||
Master Secret values all depend upon the value of the selected | or elliptic curves. As a result, the Early Secret, Handshake | |||
external PSK. Of course, the Early Secret does not depend upon | Secret, and Master Secret values all depend upon the value of the | |||
the (EC)DHE shared secret. | selected external PSK. Of course, the Early Secret does not | |||
depend upon the (EC)DHE shared secret. | ||||
</t> | </t> | |||
<t> | <t> | |||
The authentication of the server and optional authentication of | The authentication of the server and optional authentication of | |||
the client depend upon the ability to generate a signature that | the client depend upon the ability to generate a signature that | |||
can be validated with the public key in their certificates. The | can be validated with the public key in their certificates. The | |||
authentication processing is not changed in any way by the | authentication processing is not changed in any way by the | |||
selected external PSK. | selected external PSK. | |||
</t> | </t> | |||
<t> | <t> | |||
Each external PSK is associated with a single hash algorithm, which | Each external PSK is associated with a single hash algorithm, which | |||
is required by Section 4.2.11 of <xref target="RFC8446"/>. The | is required by <xref target="RFC8446" sectionFormat="of" | |||
hash algorithm MUST be set when the PSK is established, with a | section="4.2.11"/>. The | |||
hash algorithm <bcp14>MUST</bcp14> be set when the PSK is established, w | ||||
ith a | ||||
default of SHA-256. | default of SHA-256. | |||
</t> | </t> | |||
</section> | </section> | |||
<section anchor="extn" numbered="true" toc="default"> | ||||
<section title="Certificate with External PSK Extension" anchor="section-ext | <name>Certificate with External PSK Extension</name> | |||
n"> | ||||
<t> | <t> | |||
This section specifies the "tls_cert_with_extern_psk" extension, | This section specifies the "tls_cert_with_extern_psk" extension, | |||
which MAY appear in the ClientHello message and ServerHello message. It | which <bcp14>MAY</bcp14> appear in the ClientHello message and ServerHel | |||
MUST NOT appear in any other messages. The "tls_cert_with_extern_psk" | lo message. It | |||
extension MUST NOT appear in the ServerHello message unless the | <bcp14>MUST NOT</bcp14> appear in any other messages. The "tls_cert_wit | |||
h_extern_psk" | ||||
extension <bcp14>MUST NOT</bcp14> appear in the ServerHello message unle | ||||
ss the | ||||
"tls_cert_with_extern_psk" extension appeared in the preceding | "tls_cert_with_extern_psk" extension appeared in the preceding | |||
ClientHello message. If an implementation recognizes the | ClientHello message. If an implementation recognizes the | |||
"tls_cert_with_extern_psk" extension and receives it in any other | "tls_cert_with_extern_psk" extension and receives it in any other | |||
message, then the implementation MUST abort the handshake with an | message, then the implementation <bcp14>MUST</bcp14> abort the handshake with an | |||
"illegal_parameter" alert. | "illegal_parameter" alert. | |||
</t> | </t> | |||
<t> | <t> | |||
The general extension mechanisms enable clients and servers to | The general extension mechanisms enable clients and servers to | |||
negotiate the use of specific extensions. Clients request | negotiate the use of specific extensions. Clients request | |||
extended functionality from servers with the extensions field | extended functionality from servers with the extensions field | |||
in the ClientHello message. If the server responds with a | in the ClientHello message. If the server responds with a | |||
HelloRetryRequest message, then the client sends another | HelloRetryRequest message, then the client sends another | |||
ClientHello message as described in Section 4.1.2 of | ClientHello message as described in <xref target="RFC8446" | |||
<xref target="RFC8446"/>, including the same | sectionFormat="of" section="4.1.2"/>, including the same | |||
"tls_cert_with_extern_psk" extension as the original | "tls_cert_with_extern_psk" extension as the original | |||
ClientHello message, or aborts the handshake. | ClientHello message, or aborts the handshake. | |||
</t> | </t> | |||
<t> | <t> | |||
Many server extensions are carried in the EncryptedExtensions | Many server extensions are carried in the EncryptedExtensions | |||
message; however, the "tls_cert_with_extern_psk" extension is | message; however, the "tls_cert_with_extern_psk" extension is | |||
carried in the ServerHello message. Successful negotiation of | carried in the ServerHello message. Successful negotiation of | |||
the "tls_cert_with_extern_psk" extension affects the key used for | the "tls_cert_with_extern_psk" extension affects the key used for | |||
encryption, so it cannot be carried in the EncryptedExtensions | encryption, so it cannot be carried in the EncryptedExtensions | |||
message. Therefore, the "tls_cert_with_extern_psk" extension | message. Therefore, the "tls_cert_with_extern_psk" extension | |||
is only present in the ServerHello message if the server | is only present in the ServerHello message if the server | |||
recognizes the "tls_cert_with_extern_psk" extension and the | recognizes the "tls_cert_with_extern_psk" extension and the | |||
server possesses one of the external PSKs offered by the client | server possesses one of the external PSKs offered by the client | |||
in the "pre_shared_key" extension in the ClientHello message. | in the "pre_shared_key" extension in the ClientHello message. | |||
</t> | </t> | |||
<t> | <t> | |||
The Extension structure is defined in <xref target="RFC8446"/>; | The Extension structure is defined in <xref target="RFC8446" format="def ault"/>; | |||
it is repeated here for convenience. | it is repeated here for convenience. | |||
</t> | </t> | |||
<figure> | ||||
<artwork><![CDATA[ | <sourcecode type="tls-presentation"> struct { | |||
struct { | ||||
ExtensionType extension_type; | ExtensionType extension_type; | |||
opaque extension_data<0..2^16-1>; | opaque extension_data<0..2^16-1>; | |||
} Extension; | } Extension; | |||
]]> | </sourcecode> | |||
</artwork> | ||||
</figure> | ||||
<t> | <t> | |||
The "extension_type" identifies the particular extension type, | The "extension_type" identifies the particular extension type, | |||
and the "extension_data" contains information specific to the | and the "extension_data" contains information specific to the | |||
particular extension type. | particular extension type. | |||
</t> | </t> | |||
<t> | <t> | |||
This document specifies the "tls_cert_with_extern_psk" extension, | This document specifies the "tls_cert_with_extern_psk" extension, | |||
adding one new type to ExtensionType: | adding one new type to ExtensionType: | |||
</t> | </t> | |||
<figure> | ||||
<artwork> | <sourcecode type="tls-presentation"> enum { | |||
<![CDATA[ | tls_cert_with_extern_psk(33), (65535) | |||
enum { | ||||
tls_cert_with_extern_psk(TBD), (65535) | ||||
} ExtensionType; | } ExtensionType; | |||
]]> | </sourcecode> | |||
</artwork> | ||||
</figure> | ||||
<t> | <t> | |||
The "tls_cert_with_extern_psk" extension is relevant when the | The "tls_cert_with_extern_psk" extension is relevant when the | |||
client and server possess an external PSK in common that can be | client and server possess an external PSK in common that can be | |||
used as an input to the TLS 1.3 key schedule. The | used as an input to the TLS 1.3 key schedule. The | |||
"tls_cert_with_extern_psk" extension is essentially a flag to | "tls_cert_with_extern_psk" extension is essentially a flag to | |||
use the external PSK in the key schedule, and it has the | use the external PSK in the key schedule, and it has the | |||
following syntax: | following syntax: | |||
</t> | </t> | |||
<figure> | ||||
<artwork> | <sourcecode type="tls-presentation" > struct { | |||
<![CDATA[ | ||||
struct { | ||||
select (Handshake.msg_type) { | select (Handshake.msg_type) { | |||
case client_hello: Empty; | case client_hello: Empty; | |||
case server_hello: Empty; | case server_hello: Empty; | |||
}; | }; | |||
} CertWithExternPSK; | } CertWithExternPSK; | |||
]]> | </sourcecode> | |||
</artwork> | ||||
</figure> | ||||
<section title="Companion Extensions" anchor="other-extns"> | <section anchor="other-extns" numbered="true" toc="default"> | |||
<t> | <name>Companion Extensions</name> | |||
Section 4 lists the extensions that are required to accompany the | <t> | |||
"tls_cert_with_extern_psk" extension. Most of those extensions are | <xref target="over"/> lists the extensions that are required to accompan | |||
y the | ||||
"tls_cert_with_extern_psk" extension. Most of those extensions | ||||
are not impacted in any way by this specification. However, this | are not impacted in any way by this specification. However, this | |||
section discusses the extensions that require additional consideration. | section discusses the extensions that require additional consideration. | |||
</t> | </t> | |||
<t> | <t> | |||
The "psk_key_exchange_modes" extension is defined in Section 4.2.9 | The "psk_key_exchange_modes" extension is defined in | |||
of <xref target="RFC8446"/>. The "psk_key_exchange_modes" | of <xref target="RFC8446" sectionFormat="of" section="4.2.9"/>. The | |||
"psk_key_exchange_modes" | ||||
extension restricts the use of both the PSKs offered in this | extension restricts the use of both the PSKs offered in this | |||
ClientHello and those that the server might supply via a subsequent | ClientHello and those that the server might supply via a subsequent | |||
NewSessionTicket. As a result, when the "psk_key_exchange_modes" | NewSessionTicket. As a result, when the "psk_key_exchange_modes" | |||
extension is included in the ClientHello message, clients MUST | extension is included in the ClientHello message, clients <bcp14>MUST</b | |||
include psk_dhe_ke mode. In addition, clients MAY also include | cp14> | |||
include psk_dhe_ke mode. In addition, clients <bcp14>MAY</bcp14> also i | ||||
nclude | ||||
psk_ke mode to support a subsequent NewSessionTicket. When the | psk_ke mode to support a subsequent NewSessionTicket. When the | |||
"psk_key_exchange_modes" extension is included in the ServerHello | "psk_key_exchange_modes" extension is included in the ServerHello | |||
message, servers MUST select the psk_dhe_ke mode for the initial | message, servers <bcp14>MUST</bcp14> select the psk_dhe_ke mode for the | |||
handshake. Servers MUST select a key exchange mode that is listed | initial | |||
handshake. Servers <bcp14>MUST</bcp14> select a key exchange mode that | ||||
is listed | ||||
by the client for subsequent handshakes that include the resumption | by the client for subsequent handshakes that include the resumption | |||
PSK from the initial handshake. | PSK from the initial handshake. | |||
</t> | </t> | |||
<t> | <t> | |||
The "pre_shared_key" extension is defined in Section 4.2.11 | The "pre_shared_key" extension is defined in <xref target="RFC8446" | |||
of <xref target="RFC8446"/>. The syntax is repeated below for | sectionFormat="of" section="4.2.11"/>. The | |||
convenience. All of the listed PSKs MUST be external PSKs. If a | syntax is repeated below for | |||
convenience. All of the listed PSKs <bcp14>MUST</bcp14> be external PSK | ||||
s. If a | ||||
resumption PSK is listed along with the "tls_cert_with_extern_psk" | resumption PSK is listed along with the "tls_cert_with_extern_psk" | |||
extension, the server MUST abort the handshake with an | extension, the server <bcp14>MUST</bcp14> abort the handshake with an | |||
"illegal_parameter" alert. | "illegal_parameter" alert. | |||
</t> | </t> | |||
<figure> | ||||
<artwork> | <sourcecode type="tls-presentation"> struct { | |||
<![CDATA[ | opaque identity<1..2^16-1>; | |||
struct { | ||||
opaque identity<1..2^16-1>; | ||||
uint32 obfuscated_ticket_age; | uint32 obfuscated_ticket_age; | |||
} PskIdentity; | } PskIdentity; | |||
opaque PskBinderEntry<32..255>; | opaque PskBinderEntry<32..255>; | |||
struct { | struct { | |||
PskIdentity identities<7..2^16-1>; | PskIdentity identities<7..2^16-1>; | |||
PskBinderEntry binders<33..2^16-1>; | PskBinderEntry binders<33..2^16-1>; | |||
} OfferedPsks; | } OfferedPsks; | |||
struct { | struct { | |||
select (Handshake.msg_type) { | select (Handshake.msg_type) { | |||
case client_hello: OfferedPsks; | case client_hello: OfferedPsks; | |||
case server_hello: uint16 selected_identity; | case server_hello: uint16 selected_identity; | |||
}; | }; | |||
} PreSharedKeyExtension; | } PreSharedKeyExtension; | |||
]]> | </sourcecode> | |||
</artwork> | ||||
</figure> | <t> | |||
<t> | "OfferedPsks" contains the list of PSK identities and | |||
The OfferedPsks contains the list of PSK identities and | ||||
associated binders for the external PSKs that the client is | associated binders for the external PSKs that the client is | |||
willing to use with the server. | willing to use with the server. | |||
</t> | </t> | |||
<t> | <t> | |||
The identities are a list of external PSK identities that the | The identities are a list of external PSK identities that the | |||
client is willing to negotiate with the server. Each external | client is willing to negotiate with the server. Each external | |||
PSK has an associated identity that is known to the client | PSK has an associated identity that is known to the client | |||
and the server; the associated identities may be known to other | and the server; the associated identities may be known to other | |||
parties as well. In addition, the binder validation (see below) | parties as well. In addition, the binder validation (see below) | |||
confirms that the client and server have the same key associated | confirms that the client and server have the same key associated | |||
with the identity. | with the identity. | |||
</t> | </t> | |||
<t> | <t> | |||
The obfuscated_ticket_age is not used for external PSKs. As | The "obfuscated_ticket_age" is not used for external PSKs. As | |||
stated in Section 4.2.11 of <xref target="RFC8446"/>, clients | stated in <xref target="RFC8446" sectionFormat="of" | |||
SHOULD set this value to 0, and servers MUST ignore the value. | section="4.2.11"/>, clients | |||
</t> | <bcp14>SHOULD</bcp14> set this value to 0, and servers <bcp14>MUST</bcp1 | |||
<t> | 4> ignore the value. | |||
The binders are a series of HMAC <xref target="RFC2104"/> values, one | </t> | |||
<t> | ||||
The binders are a series of HMAC <xref target="RFC2104" format="default" | ||||
/> values, one | ||||
for each external PSK offered by the client, in the same order as the | for each external PSK offered by the client, in the same order as the | |||
identities list. The HMAC value is computed using the binder_key, which | identities list. The HMAC value is computed using the binder_key, which | |||
is derived from the external PSK, and a partial transcript of the curren t | is derived from the external PSK, and a partial transcript of the curren t | |||
handshake. Generation of the binder_key from the external PSK is | handshake. Generation of the binder_key from the external PSK is | |||
described in Section 7.1 of <xref target="RFC8446"/>. The | described in <xref target="RFC8446" sectionFormat="of" section="7.1"/>. The | |||
partial transcript of the current handshake includes a partial | partial transcript of the current handshake includes a partial | |||
ClientHello up to and including the PreSharedKeyExtension.identities | ClientHello up to and including the PreSharedKeyExtension.identities | |||
field as described in Section 4.2.11.2 of <xref target="RFC8446"/>. | field, as described in <xref target="RFC8446" | |||
</t> | sectionFormat="of" section="4.2.11.2"/>. | |||
<t> | </t> | |||
The selected_identity contains the index of the external PSK | <t> | |||
The "selected_identity" contains the index of the external PSK | ||||
identity that the server selected from the list offered by the | identity that the server selected from the list offered by the | |||
client. As described in Section 4.2.11.2 of <xref target="RFC8446"/>, | client. As described in <xref target="RFC8446" | |||
the server MUST validate the binder value that corresponds to the | sectionFormat="of" section="4.2.11"/>, | |||
the server <bcp14>MUST</bcp14> validate the binder value that correspond | ||||
s to the | ||||
selected external PSK, and if the binder does not validate, the | selected external PSK, and if the binder does not validate, the | |||
server MUST abort the handshake with an "illegal_parameter" alert. | server <bcp14>MUST</bcp14> abort the handshake with an "illegal_paramete | |||
</t> | r" alert. | |||
</section> | </t> | |||
</section> | ||||
<section title="Authentication" anchor="authn"> | <section anchor="authn" numbered="true" toc="default"> | |||
<t> | <name>Authentication</name> | |||
<t> | ||||
When the "tls_cert_with_extern_psk" extension is successfully | When the "tls_cert_with_extern_psk" extension is successfully | |||
negotiated, authentication of the server depends upon the ability to | negotiated, authentication of the server depends upon the ability to | |||
generate a signature that can be validated with the public key in | generate a signature that can be validated with the public key in | |||
the server's certificate. This is accomplished by the server | the server's certificate. This is accomplished by the server | |||
sending the Certificate and CertificateVerify messages as described | sending the Certificate and CertificateVerify messages, as described | |||
in Sections 4.4.2 and 4.4.3 of <xref target="RFC8446"/>. | in Sections <xref target="RFC8446" sectionFormat="bare" | |||
</t> | section="4.4.2"/> and <xref target="RFC8446" | |||
<t> | sectionFormat="bare" section="4.4.3"/> of <xref target="RFC8446"/>. | |||
</t> | ||||
<t> | ||||
TLS 1.3 does not permit the server to send a CertificateRequest message | TLS 1.3 does not permit the server to send a CertificateRequest message | |||
when a PSK is being used. This restriction is removed when the | when a PSK is being used. This restriction is removed when the | |||
"tls_cert_with_extern_psk" extension is negotiated, allowing | "tls_cert_with_extern_psk" extension is negotiated, allowing | |||
certificate-based authentication for both the client and the server. If | certificate-based authentication for both the client and the server. If | |||
certificate-based client authentication is desired, this is accomplished | certificate-based client authentication is desired, this is accomplished | |||
by the client sending the Certificate and CertificateVerify messages as | by the client sending the Certificate and CertificateVerify messages as | |||
described in Sections 4.4.2 and 4.4.3 of <xref target="RFC8446"/>. | described in Sections <xref target="RFC8446" sectionFormat="bare" | |||
</t> | section="4.4.2"/> and <xref target="RFC8446" | |||
</section> | sectionFormat="bare" section="4.4.3"/> of <xref target="RFC8446"/>. | |||
</t> | ||||
<section title="Keying Material" anchor="keying"> | </section> | |||
<t> | <section anchor="keying" numbered="true" toc="default"> | |||
Section 7.1 of <xref target="RFC8446"/> specifies the | <name>Keying Material</name> | |||
TLS 1.3 Key Schedule. The successful negotiation of the | <t> | |||
<xref target="RFC8446" sectionFormat="of" section="7.1"/> specifies the | ||||
TLS 1.3 key schedule. The successful negotiation of the | ||||
"tls_cert_with_extern_psk" extension requires the key schedule | "tls_cert_with_extern_psk" extension requires the key schedule | |||
processing to include both the external PSK and the (EC)DHE shared | processing to include both the external PSK and the (EC)DHE | |||
secret value. | shared secret value. | |||
</t> | </t> | |||
<t> | <t> | |||
If the client and the server have different values associated | If the client and the server have different values associated | |||
with the selected external PSK identifier, then the client and | with the selected external PSK identifier, then the client and | |||
the server will compute different values for every entry in the | the server will compute different values for every entry in the | |||
key schedule, which will lead to the client aborting the | key schedule, which will lead to the client aborting the | |||
handshake with a "decrypt_error" alert. | handshake with a "decrypt_error" alert. | |||
</t> | </t> | |||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="IANA-con" numbered="true" toc="default"> | ||||
<section title="IANA Considerations" anchor="section-IANA"> | <name>IANA Considerations</name> | |||
<t> | <t> | |||
IANA is requested to update the TLS ExtensionType Registry <xref target= | IANA has updated the "TLS ExtensionType Values" registry | |||
"IANA"/> | <xref target="IANA" format="default"/> | |||
to include "tls_cert_with_extern_psk" with a value of TBD and the list o | to include "tls_cert_with_extern_psk" with a value of 33 and the list of | |||
f | ||||
messages "CH, SH" in which the "tls_cert_with_extern_psk" extension may | messages "CH, SH" in which the "tls_cert_with_extern_psk" extension may | |||
appear. | appear. | |||
</t> | </t> | |||
</section> | </section> | |||
<section anchor="security" numbered="true" toc="default"> | ||||
<section title="Security Considerations" anchor="section-security"> | <name>Security Considerations</name> | |||
<t> | <t> | |||
The Security Considerations in <xref target="RFC8446"/> | The Security Considerations in <xref target="RFC8446" format="default"/> | |||
remain relevant. | remain relevant. | |||
</t> | </t> | |||
<t> | <t> | |||
TLS 1.3 <xref target="RFC8446"/> does not permit | TLS 1.3 <xref target="RFC8446" format="default"/> does not permit | |||
the server to send a CertificateRequest message when a PSK | the server to send a CertificateRequest message when a PSK | |||
is being used. This restriction is removed when the | is being used. This restriction is removed when the | |||
"tls_cert_with_extern_psk" extension is offered by the client | "tls_cert_with_extern_psk" extension is offered by the client | |||
and accepted by the server. However, TLS 1.3 does not | and accepted by the server. However, TLS 1.3 does not | |||
permit an external PSK to be used in the same fashion as a | permit an external PSK to be used in the same fashion as a | |||
resumption PSK, and this extension does not alter those | resumption PSK, and this extension does not alter those | |||
restrictions. Thus, a certificate MUST NOT be used with | restrictions. Thus, a certificate <bcp14>MUST NOT</bcp14> be used with | |||
a resumption PSK. | a resumption PSK. | |||
</t> | </t> | |||
<t> | <t> | |||
Implementations must protect the external pre-shared key (PSK). | Implementations must protect the external pre-shared key (PSK). | |||
Compromise of the external PSK will make the encrypted session | Compromise of the external PSK will make the encrypted session | |||
content vulnerable to the future development of a large-scale | content vulnerable to the future development of a large-scale | |||
quantum computer. However, the generation, distribution, and | quantum computer. However, the generation, distribution, and | |||
management of the external PSKs is out of scope for this | management of the external PSKs is out of scope for this | |||
specification. | specification. | |||
</t> | </t> | |||
skipping to change at line 443 ¶ | skipping to change at line 434 ¶ | |||
management of the external PSKs is out of scope for this | management of the external PSKs is out of scope for this | |||
specification. | specification. | |||
</t> | </t> | |||
<t> | <t> | |||
Implementers should not transmit the same content on a connection | Implementers should not transmit the same content on a connection | |||
that is protected with an external PSK and a connection that is | that is protected with an external PSK and a connection that is | |||
not. Doing so may allow an eavesdropper to correlate the | not. Doing so may allow an eavesdropper to correlate the | |||
connections, making the content vulnerable to the future | connections, making the content vulnerable to the future | |||
invention of a large-scale quantum computer. | invention of a large-scale quantum computer. | |||
</t> | </t> | |||
<t> | <t> | |||
Implementations must generate external PSKs with a secure key management | Implementations must generate external PSKs with a secure key-management | |||
technique, such as pseudo-random generation of the key or derivation of | technique, such as pseudorandom generation of the key or derivation of | |||
the key from one or more other secure keys. The use of inadequate | the key from one or more other secure keys. The use of inadequate | |||
pseudo-random number generators (PRNGs) to generate external PSKs can | pseudorandom number generators (PRNGs) to generate external PSKs can | |||
result in little or no security. An attacker may find it much easier | result in little or no security. An attacker may find it much easier | |||
to reproduce the PRNG environment that produced the external PSKs and | to reproduce the PRNG environment that produced the external PSKs and | |||
search the resulting small set of possibilities, rather than brute-force | search the resulting small set of possibilities, rather than brute-force | |||
searching the whole key space. The generation of quality random | searching the whole key space. The generation of quality random | |||
numbers is difficult. <xref target="RFC4086"/> offers important | numbers is difficult. <xref target="RFC4086" format="default"/> offers important | |||
guidance in this area. | guidance in this area. | |||
</t> | </t> | |||
<t> | <t> | |||
If the external PSK is known to any party other than the client and | If the external PSK is known to any party other than the client and | |||
the server, then the external PSK MUST NOT be the sole basis for | the server, then the external PSK <bcp14>MUST NOT</bcp14> be the sole ba sis for | |||
authentication. The reasoning is explained in Section 4.2 of | authentication. The reasoning is explained in Section 4.2 of | |||
<xref target="K2016"/>. When this extension is used, authentication | <xref target="K2016" format="default"/>. When this extension is used, a uthentication | |||
is based on certificates, not the external PSK. | is based on certificates, not the external PSK. | |||
</t> | </t> | |||
<t> | <t> | |||
In this extension, the external PSK preserves confidentiality if the | In this extension, the external PSK preserves confidentiality if the | |||
(EC)DH key agreement is ever broken by cryptanalysis or the future | (EC)DH key agreement is ever broken by cryptanalysis or the future | |||
invention of a large-scale quantum computer. As long as the attacker | invention of a large-scale quantum computer. As long as the attacker | |||
does not know the PSK and the key derivation algorithm remains | does not know the PSK and the key derivation algorithm remains | |||
unbroken, the attacker cannot derive the session secrets even if they | unbroken, the attacker cannot derive the session secrets, even if they | |||
are able to compute the (EC)DH shared secret. Should the attacker be | are able to compute the (EC)DH shared secret. Should the attacker be | |||
able compute the (EC)DH shared secret, the forward secrecy advantages | able compute the (EC)DH shared secret, the forward-secrecy advantages | |||
traditionally associated with ephemeral (EC)DH keys will no longer be | traditionally associated with ephemeral (EC)DH keys will no longer be | |||
relevant. Although the ephemeral private keys used during a given TLS | relevant. Although the ephemeral private keys used during a given TLS | |||
session are destroyed at the end of a session, preventing the attacker | session are destroyed at the end of a session, preventing the attacker | |||
from later accessing them, these private keys would nevertheless be | from later accessing them, these private keys would nevertheless be | |||
recoverable due to the break in the algorithm. However, a more | recoverable due to the break in the algorithm. However, a more | |||
general notion of "secrecy after key material is destroyed" would still | general notion of "secrecy after key material is destroyed" would still | |||
be achievable using external PSKs, if they are managed in a way that | be achievable using external PSKs, if they are managed in a way that | |||
ensures their destruction when they are no longer needed, and with | ensures their destruction when they are no longer needed, and with | |||
the assumption that the algorithms that use the external PSKs remain | the assumption that the algorithms that use the external PSKs remain | |||
quantum-safe. | quantum-safe. | |||
</t> | </t> | |||
<t> | <t> | |||
TLS 1.3 key derivation makes use of the HKDF algorithm, which depends | TLS 1.3 key derivation makes use of the HMAC-based Key Derivation | |||
upon the HMAC <xref target="RFC2104"/> construction and a hash | Function (HKDF) algorithm, which depends | |||
upon the HMAC <xref target="RFC2104" format="default"/> construction and | ||||
a hash | ||||
function. This extension provides the desired protection for the | function. This extension provides the desired protection for the | |||
session secrets as long as HMAC with the selected hash function is | session secrets, as long as HMAC with the selected hash function is | |||
a pseudorandom function (PRF) <xref target="GGM1986"/>. | a pseudorandom function (PRF) <xref target="GGM1986" format="default"/> | |||
. | ||||
</t> | </t> | |||
<t> | <t> | |||
This specification does not require that the external PSK is known only by | This specification does not require that the external PSK is known only by | |||
the client and server. The external PSK may be known to a group. Since | the client and server. The external PSK may be known to a group. Since | |||
authentication depends on the public key in a certificate, knowledge of | authentication depends on the public key in a certificate, knowledge of | |||
the external PSK by other parties does not enable impersonation. Since | the external PSK by other parties does not enable impersonation. Since | |||
confidentiality depends on the shared secret from (EC)DH, knowledge of | confidentiality depends on the shared secret from (EC)DH, knowledge of | |||
the external PSK by other parties does not enable eavesdropping. Howeve r, | the external PSK by other parties does not enable eavesdropping. Howeve r, | |||
group members can record the traffic of other members, and then decrypt it | group members can record the traffic of other members and then decrypt i t | |||
if they ever gain access to a large-scale quantum computer. Also, when | if they ever gain access to a large-scale quantum computer. Also, when | |||
many parties know the external PSK, there are many opportunities for the ft | many parties know the external PSK, there are many opportunities for the ft | |||
of the external PSK by an attacker. Once an attacker has the external P SK, | of the external PSK by an attacker. Once an attacker has the external P SK, | |||
they can decrypt stored traffic if they ever gain access to a large-scal e | they can decrypt stored traffic if they ever gain access to a large-scal e | |||
quantum computer in the same manner as a legitimate group member. | quantum computer, in the same manner as a legitimate group member. | |||
</t> | </t> | |||
<t> | <t> | |||
TLS 1.3 <xref target="RFC8446"/> takes a conservative approach to PSKs; | ||||
TLS 1.3 <xref target="RFC8446" format="default"/> takes a conservative a | ||||
pproach to PSKs; | ||||
they are bound to a specific hash function and KDF. By contrast, | they are bound to a specific hash function and KDF. By contrast, | |||
TLS 1.2 <xref target="RFC5246"/> allows PSKs to be used with any hash | TLS 1.2 <xref target="RFC5246" format="default"/> allows PSKs to be used with any hash | |||
function and the TLS 1.2 PRF. Thus, the safest approach is to use a PSK | function and the TLS 1.2 PRF. Thus, the safest approach is to use a PSK | |||
exclusively with TLS 1.2 or exclusively with TLS 1.3. Given one PSK, | exclusively with TLS 1.2 or exclusively with TLS 1.3. Given one PSK, | |||
one can derive a PSK for exclusive use with TLS 1.2 and derive another | one can derive a PSK for exclusive use with TLS 1.2 and derive another | |||
PSK for exclusive use with TLS 1.3 using the mechanism specified in | PSK for exclusive use with TLS 1.3 using the mechanism specified in | |||
<xref target="I-D.ietf-tls-external-psk-importer"/>. | <xref target="I-D.ietf-tls-external-psk-importer" format="default"/>. | |||
</t> | </t> | |||
<t> | <t> | |||
TLS 1.3 <xref target="RFC8446"/> has received careful security analysis, | TLS 1.3 <xref target="RFC8446" format="default"/> has received careful s ecurity analysis, | |||
and the following informal reasoning shows that the addition of this | and the following informal reasoning shows that the addition of this | |||
extension does not introduce any security defects. This extension | extension does not introduce any security defects. This extension | |||
requires the use of certificates for authentication, but the processing | requires the use of certificates for authentication, but the processing | |||
of certificates is unchanged by this extension. This extension places | of certificates is unchanged by this extension. This extension places | |||
an external PSK in the key schedule as part of the computation of the | an external PSK in the key schedule as part of the computation of the | |||
Early Secret. In the initial handshake without this extension, the | Early Secret. In the initial handshake without this extension, the | |||
Early Secret is computed as: | Early Secret is computed as: | |||
<figure> | </t> | |||
<artwork> | ||||
<![CDATA[ Early Secret = HKDF-Extract(0, 0)]]> | <sourcecode> | |||
</artwork> | Early Secret = HKDF-Extract(0, 0) | |||
</figure> | </sourcecode> | |||
<t> | ||||
With this extension, the Early Secret is computed as: | With this extension, the Early Secret is computed as: | |||
<figure> | </t> | |||
<artwork> | ||||
<![CDATA[ Early Secret = HKDF-Extract(External PSK, 0)]]> | <sourcecode> | |||
</artwork> | Early Secret = HKDF-Extract(External PSK, 0) | |||
</figure> | </sourcecode> | |||
<t> | ||||
Any entropy contributed by the external PSK can only make the Early | Any entropy contributed by the external PSK can only make the Early | |||
Secret better; the External PSK cannot make it worse. For these two | Secret better; the External PSK cannot make it worse. For these two | |||
reasons, TLS 1.3 continues to meet its security goals when this extensio n | reasons, TLS 1.3 continues to meet its security goals when this extensio n | |||
is used. | is used. | |||
</t> | </t> | |||
</section> | </section> | |||
<section anchor="privacy" numbered="true" toc="default"> | ||||
<section title="Privacy Considerations" anchor="section-privacy"> | <name>Privacy Considerations</name> | |||
<t> | <t> | |||
Appendix E.6 of <xref target="RFC8446"/> discusses identity exposure | <xref target="RFC8446" sectionFormat="of" section="E.6"/> discusses iden tity-exposure | |||
attacks on PSKs. The guidance in this section remains relevant. | attacks on PSKs. The guidance in this section remains relevant. | |||
</t> | </t> | |||
<t> | <t> | |||
This extension makes use of external PSKs to improve resilience against | This extension makes use of external PSKs to improve resilience against | |||
attackers that gain access to a large-scale quantum computer in the | attackers that gain access to a large-scale quantum computer in the | |||
future. This extension is always accompanied by the "pre_shared_key" | future. This extension is always accompanied by the "pre_shared_key" | |||
extension to provide the PSK identities in plaintext in the ClientHello | extension to provide the PSK identities in plaintext in the ClientHello | |||
message. Passive observation of the these PSK identities will aid an | message. Passive observation of the these PSK identities will aid an | |||
attacker to track users of this extension. | attacker in tracking users of this extension. | |||
</t> | </t> | |||
</section> | </section> | |||
</middle> | ||||
<back> | ||||
<displayreference target="I-D.hoffman-c2pq" to="TRANSITION" /> | ||||
<displayreference target="I-D.ietf-tls-external-psk-importer" to="IMPORT" /> | ||||
<references> | ||||
<name>References</name> | ||||
<references> | ||||
<name>Normative References</name> | ||||
<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
ence.RFC.2119.xml"/> | ||||
<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
ence.RFC.8174.xml"/> | ||||
<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
ence.RFC.8446.xml"/> | ||||
</references> | ||||
<references> | ||||
<name>Informative References</name> | ||||
<section title="Acknowledgments" anchor="section-acks"> | <!-- draft-hoffman-c2pq-06 exists --> | |||
<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/refe | ||||
rence.I-D.hoffman-c2pq.xml"/> | ||||
<reference anchor="DH1976" target="https://ieeexplore.ieee.org/document/ | ||||
1055638"> | ||||
<front> | ||||
<title>New Directions in Cryptography</title> | ||||
<author initials="W" surname="Diffie" fullname="Whitfield Diffie"/> | ||||
<author initials="M" surname="Hellman" fullname="Martin Hellman"/> | ||||
<date month="November" year="1976"/> | ||||
</front> | ||||
<refcontent>IEEE Transactions on Information Theory</refcontent> | ||||
<refcontent>Vol. 22, No. 6</refcontent> | ||||
<seriesInfo name="DOI" value="10.1109/TIT.1976.1055638"/> | ||||
</reference> | ||||
<reference anchor="GGM1986"> | ||||
<front> | ||||
<title>How to construct random functions</title> | ||||
<author initials="O" surname="Goldreich" fullname="Oded Goldreich"/> | ||||
<author initials="S" surname="Goldwasser" fullname="Shafi Goldwasser | ||||
"/> | ||||
<author initials="S" surname="Micali" fullname="Silvio Micali"/> | ||||
<date year="1986" month="August"/> | ||||
</front> | ||||
<refcontent>Journal of the ACM</refcontent> | ||||
<refcontent>Vol. 33, No. 4</refcontent> | ||||
<refcontent>pp. 792-807</refcontent> | ||||
<seriesInfo name="DOI" value="10.1145/6490.6503"/> | ||||
</reference> | ||||
<reference anchor="FIPS186"> | ||||
<front> | ||||
<title>Digital Signature Standard (DSS)</title> | ||||
<author> | ||||
<organization>NIST</organization> | ||||
</author> | ||||
<date year="2013" month="July"/> | ||||
</front> | ||||
<seriesInfo name="Federal Information Processing Standards Publicati | ||||
on (FIPS)" value="186-4"/> | ||||
<seriesInfo name="DOI" value="10.6028/NIST.FIPS.186-4"/> | ||||
</reference> | ||||
<reference anchor="IANA" target="https://www.iana.org/assignments/tls-ex | ||||
tensiontype-values/tls-extensiontype-values.xhtml"> | ||||
<front> | ||||
<title>TLS ExtensionType Values</title> | ||||
<author> | ||||
<organization>IANA</organization> | ||||
</author> | ||||
</front> | ||||
</reference> | ||||
<reference anchor="IEEE1363" target="https://ieeexplore.ieee.org/documen | ||||
t/891000"> | ||||
<front> | ||||
<title>IEEE Standard Specifications for Public-Key Cryptography</tit | ||||
le> | ||||
<author> | ||||
<organization>IEEE</organization> | ||||
</author> | ||||
<date year="2000" month="August"/> | ||||
</front> | ||||
<seriesInfo name="IEEE Std" value="1363-2000"/> | ||||
<seriesInfo name="DOI" value="10.1109/IEEESTD.2000.92292"/> | ||||
</reference> | ||||
<!-- draft-ietf-tls-external-psk-importer-03 exists --> | ||||
<xi:include | ||||
href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D | ||||
.ietf-tls-external-psk-importer.xml"/> | ||||
<reference anchor="K2016" target="https://dl.acm.org/doi/10.1145/2976749 | ||||
.2978325"> | ||||
<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" fullname="Hugo Krawczyk"/> | ||||
<date month="October" year="2016"/> | ||||
</front> | ||||
<refcontent>CCS '16: Proceedings of the 2016 ACM Communications Secu | ||||
rity</refcontent> | ||||
<refcontent>pp. 1438-50</refcontent> | ||||
<seriesInfo name="DOI" value="10.1145/2976749.2978325"/> | ||||
</reference> | ||||
<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
ence.RFC.2104.xml"/> | ||||
<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
ence.RFC.4086.xml"/> | ||||
<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
ence.RFC.5246.xml"/> | ||||
<xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
ence.RFC.8017.xml"/> | ||||
</references> | ||||
</references> | ||||
<section anchor="acks" numbered="false" toc="default"> | ||||
<name>Acknowledgments</name> | ||||
<t> | <t> | |||
Many thanks to | Many thanks to | |||
Liliya Akhmetzyanova, | <contact fullname="Liliya Akhmetzyanova"/>, | |||
Roman Danyliw, | <contact fullname="Roman Danyliw"/>, | |||
Christian Huitema, | <contact fullname="Christian Huitema"/>, | |||
Ben Kaduk, | <contact fullname="Ben Kaduk"/>, | |||
Geoffrey Keating, | <contact fullname="Geoffrey Keating"/>, | |||
Hugo Krawczyk, | <contact fullname="Hugo Krawczyk"/>, | |||
Mirja Kühlewind, | <contact fullname="Mirja Kühlewind"/>, | |||
Nikos Mavrogiannopoulos, | <contact fullname="Nikos Mavrogiannopoulos"/>, | |||
Nick Sullivan, | <contact fullname="Nick Sullivan"/>, | |||
Martin Thomson, and | <contact fullname="Martin Thomson"/>, and | |||
Peter Yee | <contact fullname="Peter Yee"/> | |||
for their review and comments; their efforts have improved this document . | for their review and comments; their efforts have improved this document . | |||
</t> | </t> | |||
</section> | </section> | |||
</middle> | ||||
<back> | ||||
<references title="Normative References"> | ||||
&RFC2119; | ||||
&RFC8174; | ||||
&RFC8446; | ||||
</references> | ||||
<references title="Informative References"> | ||||
&C2PQ; | ||||
<reference anchor="DH1977"> | ||||
<front> | ||||
<title>New Directions in Cryptography</title> | ||||
<author initials="W" surname="Diffie" fullname="Whitfield Diffie"/> | ||||
<author initials="M" surname="Hellman" fullname="Martin Hellman"/> | ||||
<date month="June" year="1977" /> | ||||
</front> | ||||
<seriesInfo name="IEEE Transactions on Information Theory" value="V.IT-2 | ||||
2 n.6"/> | ||||
</reference> | ||||
<reference anchor="GGM1986"> | ||||
<front> | ||||
<title>How to construct random functions</title> | ||||
<author initials="O" surname="Goldreich" fullname="Oded Goldreich"/> | ||||
<author initials="S" surname="Goldwasser" fullname="Shafi Goldwasser"/ | ||||
> | ||||
<author initials="S" surname="Micali" fullname="Silvio Micali"/> | ||||
<date year="1986" /> | ||||
</front> | ||||
<seriesInfo name="J. ACM" value="1986 (33), pp. 792-807"/> | ||||
</reference> | ||||
<reference anchor="FIPS186"> | ||||
<front> | ||||
<title>Digital Signature Standard (DSS)</title> | ||||
<author><organization>National Institute of Standards and Technology</ | ||||
organization></author> | ||||
<date year="2013" month="July" /> | ||||
</front> | ||||
<seriesInfo name="Federal Information Processing Standards Publication ( | ||||
FIPS PUB)" value="186-4"/> | ||||
</reference> | ||||
<reference anchor="IANA" target="https://www.iana.org/assignments/tls-exte | ||||
nsiontype-values/tls-extensiontype-values.xhtml"> | ||||
<front> | ||||
<title>IANA Registry for TLS ExtensionType Values</title> | ||||
<author > | ||||
<organization></organization> | ||||
</author> | ||||
<date year="n.d."/> | ||||
</front> | ||||
</reference> | ||||
<reference anchor="IEEE1363"> | ||||
<front> | ||||
<title>IEEE Standard Specifications for Public-Key Cryptography</title | ||||
> | ||||
<author><organization>Institute of Electrical and Electronics Engineer | ||||
s</organization></author> | ||||
<date year="2000" /> | ||||
</front> | ||||
<seriesInfo name="IEEE Std" value="1363-2000"/> | ||||
</reference> | ||||
&IMPORTER; | ||||
<reference anchor="K2016"> | ||||
<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" fullname="Hugo Krawczyk"/> | ||||
<date day="10" month="August" year="2016" /> | ||||
</front> | ||||
<seriesInfo name="IACR ePrint" value="2016/711"/> | ||||
</reference> | ||||
&RFC2104; | ||||
&RFC4086; | ||||
&RFC5246; | ||||
&RFC8017; | ||||
</references> | ||||
</back> | </back> | |||
</rfc> | </rfc> | |||
End of changes. 89 change blocks. | ||||
312 lines changed or deleted | 363 lines changed or added | |||
This html diff was produced by rfcdiff 1.45. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |