Internet DRAFT - draft-fossati-tls-ext-header
draft-fossati-tls-ext-header
TLS Working Group T. Fossati
Internet-Draft Nokia
Updates: 5246, 6347 (if approved) N. Mavrogiannopoulos
Intended status: Standards Track RedHat
Expires: September 4, 2018 March 03, 2018
Record Header Extensions for DTLS
draft-fossati-tls-ext-header-01
Abstract
This document proposes a mechanism to extend the record header in
DTLS. To that aim, the DTLS header is modified as follows: the
length field is trimmed to 15 bits, and the length's top bit is given
the "record header extension indicator" semantics, allowing a sender
to signal that one or more record header extensions have been added
to this record. We define the generic format of a record header
extension and the general rules associated with its handling. Any
details regarding syntax, semantics and negotiation of a specific
record header extension, are left to future documents.
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 September 4, 2018.
Copyright Notice
Copyright (c) 2018 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
Fossati & MavrogiannopouExpires September 4, 2018 [Page 1]
Internet-Draft Record Header Extensions for DTLS March 2018
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
the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License.
Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2
2. Length Redefined . . . . . . . . . . . . . . . . . . . . . . 2
3. Record Header Extension . . . . . . . . . . . . . . . . . . . 3
3.1. Format . . . . . . . . . . . . . . . . . . . . . . . . . 3
3.2. Negotiation . . . . . . . . . . . . . . . . . . . . . . . 4
3.3. Backwards Compatibility . . . . . . . . . . . . . . . . . 4
3.4. Use with Connection ID . . . . . . . . . . . . . . . . . 4
4. Security Considerations . . . . . . . . . . . . . . . . . . . 5
5. Privacy Considerations . . . . . . . . . . . . . . . . . . . 5
6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 6
7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 6
8. References . . . . . . . . . . . . . . . . . . . . . . . . . 6
8.1. Normative References . . . . . . . . . . . . . . . . . . 6
8.2. Informative References . . . . . . . . . . . . . . . . . 7
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 7
1. Introduction
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in [RFC2119].
2. Length Redefined
DTLS ([RFC6347], [I-D.ietf-tls-dtls13]) requires the size of record
payloads to not exceed 2^14 bytes - plus a small amount that accounts
for compression or AEAD expansion. This means that the first bit in
the length field of the DTLS record header is, in fact, unused.
The proposal (Figure 1) is to shorten the length field to 15 bits and
use the top bit (E) to signify the presence / absence of a record
header extension.
Fossati & MavrogiannopouExpires September 4, 2018 [Page 2]
Internet-Draft Record Header Extensions for DTLS March 2018
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+
| ContentType |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| ProtocolVersion | epoch |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| sequence_number |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |E| length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~ (zero or more) Extension Header(s) ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Payload (including optional MAC and padding) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 1: Length redefined
Length counts the bytes of Payload and of all record header
extensions that are added to this record (possibly none).
In the reminder, the top bit is called the E-bit.
3. Record Header Extension
3.1. Format
If the E-bit is asserted, then a record header extension is appended
to the regular header with the following format:
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-----------+
|M| Type | Length | Value ... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-----------+
Where:
o M(ore) has the same semantics as the E-bit in the regular header -
i.e.: if it is asserted then another extension header follows this
one;
o Type is a fixed length (4-bits) field that defines the way Value
has to be interpreted;
o Length is the size of Value in bytes. It uses 11 bits, therefore
allowing a theoretical maximum size of 2047 bytes for any record
header extension;
o Value is the record header extension itself.
Fossati & MavrogiannopouExpires September 4, 2018 [Page 3]
Internet-Draft Record Header Extensions for DTLS March 2018
The fact that Type only allows 16 record header extension is a
precise design choice: the allocation pool size is severely
constrained so to raise the entry bar for any new record header
extension.
3.2. Negotiation
A record header extension is allowed only if it has been negotiated
via a companion DTLS extension.
An endpoint MUST NOT send a record header extension that hasn't been
successfully negotiated with the receiver.
An endpoint that receives an unexpected record header extension MUST
abort the session.
Record header extensions MUST NOT be sent during the initial
handshake phase.
3.3. Backwards Compatibility
A legacy endpoint that receives a record header extension will
interpret it as an invalid length field ([RFC6347],
[I-D.ietf-tls-dtls13]) and abort the session accordingly.
Note that this is equivalent to the behaviour of an endpoint
implementing this spec which receives a non-negotiated record header
extension.
3.4. Use with Connection ID
A plausible use of this mechanism is with the CID extension defined
in [I-D.ietf-tls-dtls-connection-id].
In that case, the companion record header extension could be defined
as follows:
o Type: 0x0 (i.e., CID record header extension);
o Value: the CID itself
A DTLS 1.2 record carrying a CID "AB" would be formatted as in
Figure 2:
o E=1
o Type=0x0
Fossati & MavrogiannopouExpires September 4, 2018 [Page 4]
Internet-Draft Record Header Extensions for DTLS March 2018
o Length=0x002
o Value=0x4142
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+-+-+-+-+-+-+-+-+
| ContentType |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Version | Epoch |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Sequence Number |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |1| Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|0| 0x0 | 0x002 | 0x4142 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Payload (including optional MAC and padding) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 2: CID header example
Note that, compared to all other possible ways to express presence/
absence of a CID field within the constraints of the current header
format (e.g., bumping the Version field, assigning new
ContentType(s), using an invalid length), an ad hoc record header
extension provides a cleaner approach that can be used with any TLS
version at a reasonable cost - an overhead of 2 bytes per record.
4. Security Considerations
An on-path active attacker could try and modify an existing record
header extension, insert a new record header extension in an existing
session, or alter the result of the negotiation in order to add or
remove arbitrary record header extensions. Given the security
properties of DTLS, none of the above can be tried without being
fatally noticed by the endpoints.
A passive on-path attacker could potentially extrapolate useful
knowledge about endpoints from the information encoded in a record
header extension (see also Section 5).
5. Privacy Considerations
The extent and consequences of metadata leakage from endpoints to
path when using a certain record header extension SHALL be assessed
in the document that introduces this new record header extension. If
needed, the document SHALL describe the relevant risk mitigations.
Fossati & MavrogiannopouExpires September 4, 2018 [Page 5]
Internet-Draft Record Header Extensions for DTLS March 2018
6. IANA Considerations
This document defines a new IANA registry that, for each new record
header extension, shall provide its Type code-point.
7. Acknowledgements
Thanks to Adam Langley and Yoav Nir for comments and discussions that
have helped shaping this document.
This work is partially supported by the European Commission under
Horizon 2020 grant agreement no. 688421 Measurement and Architecture
for a Middleboxed Internet (MAMI). This support does not imply
endorsement.
8. References
8.1. Normative References
[I-D.ietf-tls-dtls13]
Rescorla, E., Tschofenig, H., and N. Modadugu, "The
Datagram Transport Layer Security (DTLS) Protocol Version
1.3", draft-ietf-tls-dtls13-22 (work in progress),
November 2017.
[I-D.ietf-tls-tls13]
Rescorla, E., "The Transport Layer Security (TLS) Protocol
Version 1.3", draft-ietf-tls-tls13-25 (work in progress),
March 2018.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997, <https://www.rfc-
editor.org/info/rfc2119>.
[RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security
(TLS) Protocol Version 1.2", RFC 5246,
DOI 10.17487/RFC5246, August 2008, <https://www.rfc-
editor.org/info/rfc5246>.
[RFC6347] Rescorla, E. and N. Modadugu, "Datagram Transport Layer
Security Version 1.2", RFC 6347, DOI 10.17487/RFC6347,
January 2012, <https://www.rfc-editor.org/info/rfc6347>.
Fossati & MavrogiannopouExpires September 4, 2018 [Page 6]
Internet-Draft Record Header Extensions for DTLS March 2018
8.2. Informative References
[I-D.ietf-tls-dtls-connection-id]
Rescorla, E., Tschofenig, H., Fossati, T., and T. Gondrom,
"The Datagram Transport Layer Security (DTLS) Connection
Identifier", draft-ietf-tls-dtls-connection-id-00 (work in
progress), December 2017.
Authors' Addresses
Thomas Fossati
Nokia
Email: thomas.fossati@nokia.com
Nikos Mavrogiannopoulos
RedHat
Email: nmav@redhat.com
Fossati & MavrogiannopouExpires September 4, 2018 [Page 7]