Internet DRAFT - draft-schanck-tls-additional-keyshare
draft-schanck-tls-additional-keyshare
Network Working Group J. Schanck
Internet-Draft University of Waterloo
Intended status: Experimental D. Stebila
Expires: October 19, 2017 McMaster University
April 17, 2017
A Transport Layer Security (TLS) Extension For Establishing An
Additional Shared Secret
draft-schanck-tls-additional-keyshare-00
Abstract
This document defines a Transport Layer Security (TLS) extension that
allows parties to establish an additional shared secret using a
second key exchange algorithm and incorporates this shared secret
into the TLS key schedule.
Status of This Memo
This Internet-Draft is submitted in full conformance with the
provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet-
Drafts is at http://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress."
This Internet-Draft will expire on October 19, 2017.
Copyright Notice
Copyright (c) 2017 IETF Trust and the persons identified as the
document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of
Schanck & Stebila Expires October 19, 2017 [Page 1]
Internet-Draft Additional Key Share TLS Extension April 2017
the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License.
Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2
1.1. Use cases . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2. Conventions and Terminology . . . . . . . . . . . . . . . 3
2. Additional Key Share Extension . . . . . . . . . . . . . . . 4
2.1. ExtensionType . . . . . . . . . . . . . . . . . . . . . . 4
2.2. Existing data structures . . . . . . . . . . . . . . . . 4
2.3. AdditionalKeyShare extension . . . . . . . . . . . . . . 4
2.3.1. Requirements for use in ClientHello . . . . . . . . . 5
2.3.2. Requirements for use in ServerHello . . . . . . . . . 6
2.3.3. Requirements for use in HelloRetryRequest . . . . . . 6
2.4. Backward Compatibility . . . . . . . . . . . . . . . . . 6
2.4.1. Negotiating with a server that does not support the
additional_key_share extension . . . . . . . . . . . 6
2.4.2. Negotiating with a client that does not support the
additional_key_share extension . . . . . . . . . . . 6
3. Key Schedule . . . . . . . . . . . . . . . . . . . . . . . . 7
4. Pre-shared key modes and session resumption . . . . . . . . . 8
5. Security Considerations . . . . . . . . . . . . . . . . . . . 9
6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 9
7. References . . . . . . . . . . . . . . . . . . . . . . . . . 9
7.1. Normative References . . . . . . . . . . . . . . . . . . 9
7.2. Informative References . . . . . . . . . . . . . . . . . 10
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 10
1. Introduction
The key schedule of TLS 1.3 [TLS13draft19] is capable of extracting
session key material from multiple shared secrets. A notable use of
this feature is in forward secret pre-shared key (PSK) modes wherein
a PSK is combined with an ephemeral shared secret established through
a Diffie-Hellman exchange. While the key schedule can process
arbitrary lists of shared secrets, it is currently only possible to
incorporate a pre-shared key and a shared secret established through
the "key_share" extension.
This document defines a TLS ClientHello, HelloRetryRequest, and
ServerHello extension of type "additional_key_share" that allows
parties to establish an additional shared secret.
This document does not define any named groups or key exchange modes.
Schanck & Stebila Expires October 19, 2017 [Page 2]
Internet-Draft Additional Key Share TLS Extension April 2017
1.1. Use cases
One use case is to provide pre- to post-quantum transitional security
while hedging against potential weaknesses of post-quantum
algorithms. A post-quantum cryptographic algorithm is one that is
believed to be resistant to attacks by quantum computers; algorithms
based on factoring and discrete log are said to be pre-quantum.
Authenticated and confidential channel establishment protocols are
said to be secure in a transitional setting if they provide pre-
quantum authentication and post-quantum confidentiality. Such
protocols provide forward secrecy so long as adversaries do not have
quantum computers at the time of session establishment.
An additional key share can be used to combine a high-confidence pre-
quantum confidentiality mechanism with a more experimental post-
quantum confidentiality mechanism without any added risk.
One could argue that if post-quantum algorithms are available then
they should be used in place of pre-quantum algorithms. However
there are several reasons why a user might not want to rely solely on
a post-quantum algorithm today. First, confidence in cryptographic
assumptions relies in part on the duration and intensity of their
study. Most post-quantum assumptions have received less scrutiny
than DH or ECDH, and cryptanalysis may progress rapidly as more
attention is drawn to these assumptions. Second, the cryptographic
community has less experience writing secure implementations of post-
quantum algorithms, and one may be concerned that there are yet-to-
be-discovered implementation pitfalls and side-channel attacks that
could compromise confidentiality. Finally there may be users who are
required to use certain pre-quantum algorithms, but who nevertheless
desire forward secrecy against post-quantum adversaries. For
example, NIST has made it clear that hybrid modes are not
incompatible with FIPS 140 validation [NISTPQFAQ].
The simultaneous use of pre-quantum and post-quantum algorithms
provides users with the potential of long-term, quantum-resistant
confidentiality without any added risk.
1.2. Conventions and Terminology
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 RFC
2119 [RFC2119].
In [TLS13draft19], all asymmetric key exchange modes are either
(finite field) Diffie-Hellman or elliptic curve Diffie-Hellman, and
the term "named group" is used to identify which group. Some key
Schanck & Stebila Expires October 19, 2017 [Page 3]
Internet-Draft Additional Key Share TLS Extension April 2017
exchange mechanisms, especially post-quantum mechanisms, are not
parameterized by a group. However, we continue to use the term
"named group" to identify a key exchange mechanism more broadly.
2. Additional Key Share Extension
The "additional_key_share" extension replicates the functionality of
the "key_share" extension defined in [TLS13draft19], although there
are some semantic differences between the two extensions.
2.1. ExtensionType
This document extends the ExtensionType enum as follows:
enum {
...,
additional_key_share(XX),
(65535)
} ExtensionType;
2.2. Existing data structures
The definition of the AdditionalKeyShare extension requires the
KeyShareEntry and NamedGroup structs defined in [TLS13draft19].
NamedGroup is a 2-octet enum. For convenience of the reader, we
reproduce the definition of KeyShareEntry from [TLS13draft19] below:
struct {
NamedGroup group;
opaque key_exchange<1..2^16-1>;
} KeyShareEntry;
2.3. AdditionalKeyShare extension
The "extension_data" field of the "additional_key_share" extension
contains an "AdditionalKeyShare" value.
Schanck & Stebila Expires October 19, 2017 [Page 4]
Internet-Draft Additional Key Share TLS Extension April 2017
struct {
select (Handshake.msg_type) {
case client_hello:
KeyShareEntry additional_client_shares<0..2^16-1>;
case hello_retry_request:
NamedGroup additional_selected_group;
case server_hello:
KeyShareEntry additional_server_share;
};
} AdditionalKeyShare;
additional_client_shares A list of offered KeyShareEntry values in
descending order of client preference.
additional_selected_group A mutually supported key exchange
algorithm that the server is willing to negotiate if the client
sends an "additional_key_share" extension in a new ClientHello.
additional_server_share A single KeyShareEntry value that is in the
same NamedGroup as one of the client's shares.
2.3.1. Requirements for use in ClientHello
The client MUST NOT send the "additional_key_share" extension without
sending the "key_share" extension. The client MAY send an empty
"additional_client_shares" vector when requesting a
HelloRetryRequest, but SHOULD NOT do so otherwise.
The client MUST NOT offer a KeyShareEntry value for a NamedGroup that
is not listed in the "supported_groups" extension.
The client MUST NOT offer multiple KeyShareEntry values in the
"additional_client_shares" vector for the same NamedGroup. This is
because the "additional_server_share" value of the server's
"additional_key_share" extension must uniquely identify the client
share to which it corresponds.
The client MAY offer a KeyShareEntry value in
"additional_client_shares" for a NamedGroup that they offered in
their "key_share" extension, as this causes no ambiguity.
Each value in the client's "additional_client_shares" vector MUST be
generated independently. The independence requirement extends to the
KeyShareEntry values offered in the "key_share" extension. In
particular, the client MUST NOT offer KeyShareEntry values in
Schanck & Stebila Expires October 19, 2017 [Page 5]
Internet-Draft Additional Key Share TLS Extension April 2017
"additional_key_share" that duplicate the contents of KeyShareEntry
values offered in "key_share".
The server MAY check for violations of these rules and MAY abort the
connection with a fatal "illegal_parameter" alert if a rule is
violated.
2.3.2. Requirements for use in ServerHello
The server MUST NOT send a KeyShareEntry for any NamedGroup not
indicated in the "supported_groups" extension. The server MUST NOT
send a KeyShareEntry for a NamedGroup that does not match one of the
client's offers.
2.3.3. Requirements for use in HelloRetryRequest
The server MAY send HelloRetryRequest based on the contents of the
client's "additional_client_shares" vector. The client processes
this message as in Section 4.2.5 of [TLS13draft19].
2.4. Backward Compatibility
2.4.1. Negotiating with a server that does not support the
additional_key_share extension
If a server does not provide an "additional_key_share" extension in
its ServerHello, the client MAY abort the handshake with a
"missing_extension" alert, or the client MAY finish the handshake
based on the server's "key_share" extension. (The latter allows a
client to negotiate a connection with a server who does not recognize
this extension without retrying the handshake.)
2.4.2. Negotiating with a client that does not support the
additional_key_share extension
If a client does not provide an "additional_key_share" extension in
its ClientHello, the server MAY abort the handshake with a
"missing_extension" alert, or the server MAY finish the handshake
based on the client's "key_share" extension.
If the server chooses to finish the handshake based on the client's
"key_share" extension, this allows a server that supports both pre-
quantum and post-quantum key exchange to negotiate a connection with
a client that does not recognize this extension and only supports
pre-quantum key exchange.
Schanck & Stebila Expires October 19, 2017 [Page 6]
Internet-Draft Additional Key Share TLS Extension April 2017
3. Key Schedule
The presence of the "additional_key_share" extension alters the
derivation of the master secret. The key schedule employed by TLS
1.3 handles a list of input secrets by iteratively invoking HKDF-
Extract. When the "additional_key_share" extension is not present,
secrets are processed in the following order:
o PSK
o (EC)DHE shared secret.
When an additional secret is derived through "additional_key_share"
the order is:
o PSK
o (EC)DHE shared secret
o Additional secret.
Schanck & Stebila Expires October 19, 2017 [Page 7]
Internet-Draft Additional Key Share TLS Extension April 2017
0
|
v
PSK -> HKDF-Extract = Early Secret
|
+--> Derive-Secret(...) = binder_key
+--> Derive-Secret(...) = client_early_traffic_secret
+--> Derive-Secret(...) = early_exporter_secret
|
v
Derive-Secret(., "derived secret", "")
|
v
(EC)DHE -> HKDF-Extract
|
v
Derive-Secret(., "derived secret", "")
|
|
Additional v
Secret -> HKDF-Extract = Handshake Secret
|
+--> Derive-Secret(...) = client_handshake_traffic_secret
+--> Derive-Secret(...) = server_handshake_traffic_secret
|
v
Derive-Secret(., "derived secret", "")
|
v
0 -> HKDF-Extract = Master Secret
|
+--> Derive-Secret(...) = client_traffic_secret_0
+--> Derive-Secret(...) = server_traffic_secret_0
+--> Derive-Secret(...) = exporter_secret
+--> Derive-Secret(...) = resumption_master_secret
4. Pre-shared key modes and session resumption
[[FOR DISCUSSION]]
TLS 1.3 allows the client to restrict the use of PSKs that they
provide in ClientHello through the "psk_key_exchange_modes"
extension. The client may, for instance, request that the PSK only
be used in a PSK+(EC)DHE mode, so as to ensure that the resumed
session has forward secrecy.
If the client sends "additional_key_share" in an initial ClientHello,
it is reasonable to expect that they will want to use
Schanck & Stebila Expires October 19, 2017 [Page 8]
Internet-Draft Additional Key Share TLS Extension April 2017
"additional_key_share" in PSK-resumption. It is possible to
accomodate such a client by defining a new PskKeyExchangeMode,
however there is a caveat in doing so that we feel it is worth
pointing out.
Suppose that a PSK has been established through some combination of
pre-quantum and post-quantum mechanisms, as in our proposed use case.
This PSK is treated as long-term key material during resumption, so a
"psk_dhe_ke" mode would not be sufficient to preserve the security
properties of the initial handshake, namely forward secrecy against
post-quantum adversaries. To avoid this, a post-quantum mechanisms
must be used in the resumption handshake.
It is not sufficient to require the use of "additional_key_share"
during resumption, as this could be used to combine two pre-quantum
mechanisms.
Possible remedies:
o Add a new PskKeyExchangeMode that enforces the use of the same
NamedGroups that were used to establish the initial secret. enum
{ ..., psk_same_groups_ke(XX), (255) } PskKeyExchangeMode;
o Add a new PskKeyExchangeMode for "transitional" security enum {
..., psk_transitional_ke(XX), (255) } PskKeyExchangeMode;
5. Security Considerations
This document does not change the intended security properties of
TLS. In particular, it retains the goals of "establishing the same
session key" and "secrecy of the session key" as described in
Appendix E.1 of [TLS13draft19].
6. IANA Considerations
IANA [SHALL add/has added] a new entry to the TLS extensions
ExtensionType values registry for "additional_key_share".
7. References
7.1. Normative References
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997,
<http://www.rfc-editor.org/info/rfc2119>.
Schanck & Stebila Expires October 19, 2017 [Page 9]
Internet-Draft Additional Key Share TLS Extension April 2017
7.2. Informative References
[NISTPQFAQ]
NIST, "Post-Quantum Crypto Standardization FAQ", April
2017, <http://csrc.nist.gov/groups/ST/post-quantum-crypto/
faq.html#Q1>.
[TLS13draft19]
Rescorla, E., "The Transport Layer Security (TLS) Protocol
Version 1.3", March 2017, <https://tools.ietf.org/html/
draft-ietf-tls-tls13-19>.
Authors' Addresses
John M. Schanck
University of Waterloo
200 University Avenue West
Waterloo, ON N2L 3G1
Canada
Email: jschanck@uwaterloo.ca
Douglas Stebila
McMaster University
1280 Main Street West
Hamilton, ON L8S 4L8
Canada
Email: stebilad@mcmaster.ca
Schanck & Stebila Expires October 19, 2017 [Page 10]