Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Separation for leaf keys only #1991

Merged
merged 4 commits into from Nov 20, 2018
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
26 changes: 25 additions & 1 deletion draft-ietf-quic-tls.md
Expand Up @@ -712,7 +712,8 @@ based on the client's initial Destination Connection ID, as described in
The keys used for packet protection are computed from the TLS secrets using the
method described in Section 7.3 of {{!TLS13}}), with the labels "quic key" and
"quic iv" in place of the labels used by TLS (that is, "key" and "iv"
respectively).
respectively). Using these labels provides key separation between QUIC and TLS,
see {{key-diversity}}.

The HKDF-Expand-Label function is also used to derive the initial secrets (see
{{initial-secrets}}) and to derive a packet number protection key (the "quic pn"
Expand Down Expand Up @@ -1228,6 +1229,29 @@ packet numbers MUST be free from side-channels that would reveal the packet
number or its encoded size.


## Key Diversity

In using TLS, the central key schedule of TLS is used. As a result of the TLS
handshake messages being integrated into the calculation of secrets, the
inclusion of the QUIC transport parameters extension ensures that handshake and
1-RTT keys are not the same as those that might be produced by a server running
TLS over TCP. However, 0-RTT keys only include the ClientHello message and
might therefore use the same secrets. To avoid the possibility of
cross-protocol key synchronization, additional measures are provided to improve
key separation.

The QUIC packet protection keys and IVs are derived using a different label than
the equivalent keys in TLS.

To preserve this separation, a new version of QUIC SHOULD define new labels for
key derivation for packet protection key and IV, plus the packet number
protection keys.

The initial secrets also use a key that is specific to the negotiated QUIC
version. New QUIC versions SHOULD define a new salt value used in calculating
initial secrets.


# IANA Considerations

This document does not create any new IANA registries, but it registers the
Expand Down