idnits 2.17.1 draft-nir-tls-tlsflags-02.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- No issues found here. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year == The document seems to lack the recommended RFC 2119 boilerplate, even if it appears to use RFC 2119 keywords -- however, there's a paragraph with a matching beginning. Boilerplate error? (The document does seem to have the reference to RFC 2119 which the ID-Checklist requires). -- The document date (July 22, 2019) is 1740 days in the past. Is this intentional? Checking references for intended status: Proposed Standard ---------------------------------------------------------------------------- (See RFCs 3967 and 4897 for information about using normative references to lower-maturity documents in RFCs) == Outdated reference: A later version (-07) exists of draft-ietf-tls-tls13-cert-with-extern-psk-02 Summary: 0 errors (**), 0 flaws (~~), 3 warnings (==), 1 comment (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 TLS Y. Nir 3 Internet-Draft DellEMC 4 Intended status: Standards Track July 22, 2019 5 Expires: January 23, 2020 7 A Flags Extension for TLS 1.3 8 draft-nir-tls-tlsflags-02 10 Abstract 12 A number of extensions are proposed in the TLS working group that 13 carry no interesting information except the 1-bit indication that a 14 certain optional feature is supported. Such extensions take 4 octets 15 each. This document defines a flags extension that can provide such 16 indications at an average marginal cost of 1 bit each. More 17 precisely, it provides as many flag extensions as needed at 4 + the 18 order of the last set bit divided by 8. 20 Status of This Memo 22 This Internet-Draft is submitted in full conformance with the 23 provisions of BCP 78 and BCP 79. 25 Internet-Drafts are working documents of the Internet Engineering 26 Task Force (IETF). Note that other groups may also distribute 27 working documents as Internet-Drafts. The list of current Internet- 28 Drafts is at https://datatracker.ietf.org/drafts/current/. 30 Internet-Drafts are draft documents valid for a maximum of six months 31 and may be updated, replaced, or obsoleted by other documents at any 32 time. It is inappropriate to use Internet-Drafts as reference 33 material or to cite them other than as "work in progress." 35 This Internet-Draft will expire on January 23, 2020. 37 Copyright Notice 39 Copyright (c) 2019 IETF Trust and the persons identified as the 40 document authors. All rights reserved. 42 This document is subject to BCP 78 and the IETF Trust's Legal 43 Provisions Relating to IETF Documents 44 (https://trustee.ietf.org/license-info) in effect on the date of 45 publication of this document. Please review these documents 46 carefully, as they describe your rights and restrictions with respect 47 to this document. Code Components extracted from this document must 48 include Simplified BSD License text as described in Section 4.e of 49 the Trust Legal Provisions and are provided without warranty as 50 described in the Simplified BSD License. 52 Table of Contents 54 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 55 1.1. Requirements and Other Notation . . . . . . . . . . . . . 2 56 2. The tls_flags Extension . . . . . . . . . . . . . . . . . . . 3 57 3. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 4 58 4. Security Considerations . . . . . . . . . . . . . . . . . . . 5 59 5. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 5 60 6. References . . . . . . . . . . . . . . . . . . . . . . . . . 5 61 6.1. Normative References . . . . . . . . . . . . . . . . . . 5 62 6.2. Informative References . . . . . . . . . . . . . . . . . 5 63 Appendix A. Change Log . . . . . . . . . . . . . . . . . . . . . 6 64 Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 6 66 1. Introduction 68 Since the publication of TLS 1.3 ([RFC8446]) there have been several 69 proposals for extensions to this protocol, where the presence of the 70 content-free extension in both the ClientHello and either the 71 ServerHello or EncryptedExtensions indicates nothing except either 72 support for the optional feature or an intent to use the optional 73 feature. Examples: 75 o An extension that allows the server to tell the client that cross- 76 SNI resumption is allowed: [I-D.sy-tls-resumption-group]. 78 o An extension that is used to negotiate support for authentication 79 using both certificates and external PSKs: 80 [I-D.ietf-tls-tls13-cert-with-extern-psk]. 82 This document proposes a single extension called tls_flags that can 83 enumerate such flag extensions and allowing both client and server to 84 indicate support for optional features in a concise way. 86 1.1. Requirements and Other Notation 88 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 89 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 90 document are to be interpreted as described in BCP 14 [RFC2119] 91 [RFC8174] when, and only when, they appear in all capitals, as shown 92 here. 94 The term "flag extension" is used to denote an extension where the 95 extension_data field is always zero-length in a particular context, 96 and the presence of the extension denotes either support for some 97 feature or the intent to use that feature. 99 The term "flag-type feature" denotes an options TLS 1.3 feature the 100 support for which is negotiated using a flag extension, whether that 101 flag extension is its own extension or a value in the extension 102 defined in this document. 104 2. The tls_flags Extension 106 This document defines the following extension code point: 108 enum { 109 ... 110 tls_flags(TBD), 111 (65535) 112 } ExtensionType; 114 This document also defines the data for this extension as a variable- 115 length bit string, allowing for the encoding of an unbounded number 116 of features. 118 struct { 119 uint8 flags<0..31>; 120 } FlagExtensions; 122 The FlagExtensions field 8 flags with each octet, and its length is 123 the minimal length that allows it to encode all of the present flags. 124 For example, if we want to encode only flag number zero, the 125 FlagExtension field will be 1 octet long, that is encoded as follows: 127 10000000 129 If we want to encode flags 1 and 5, the field will still be 1 octet 130 long: 132 01000100 134 If we want to encode flags 3, 5, and 23, the field will have to be 3 135 octets long: 137 00010100 00000000 00000001 139 Note that this document does not define any particular bits for this 140 string. That is left to the protocol documents such as the ones in 141 the examples from the previous section. Such documents will have to 142 define which bit to set to show support, and the order of the bits 143 within the bit string shall be enumerated in network order: bit zero 144 is the high-order bit of the first octet as the flags field is 145 transmitted. 147 A client that supports this extension SHALL send this extension with 148 the flags field having bits set only for those extensions that it 149 intends to set. If it does not wish to set any such flags in the 150 ClientHello message, then this extension MUST NOT be sent. 152 A server that supports this extension and also supports at least one 153 of the flag-type features that use this extension and that were 154 declared by the ClientHello extension SHALL send this extension with 155 the intersection of the flags it supports with the flags declared by 156 the client. The intersection operation MAY be implemented as a 157 bitwise AND. The server may need to send two tls_flags extensions, 158 one in the ServerHello and the other in the EncryptedExtensions 159 message. It is up to the document for the specific feature to 160 determine whether support should be acknowledged in the ServerHello 161 or the EncryptedExtensions message. 163 3. IANA Considerations 165 IANA is requested to assign a new value from the TLS ExtensionType 166 Values registry: 168 o The Extension Name should be tls_flags 170 o The TLS 1.3 value should be CH,SH,EE 172 o The Recommended value should be Y 174 o The Reference should be this document 176 IANA is also requested to create a new registry under the TLS 177 namespace with name "TLS Flags" and the following fields: 179 o Value, which is a number between 0 and 63. All potential values 180 are available for assignment. 182 o Flag Name, which is a string 184 o Message, which like the "TLS 1.3" field in the ExtensionType 185 registry contains the abbreviations of the messages that may 186 contain the flag: CH, SH, EE, etc. 188 o Recommended, which is a Y/N value determined in the document 189 defining the optional feature. 191 o Reference, which is a link to the document defining this flag. 193 The policy for this shall be "Specification Required" as described in 194 [RFC8126]. 196 4. Security Considerations 198 The extension described in this document provides a more concise way 199 to express data that could otherwise be expressed in individual 200 extensions. It does not send in the clear any information that would 201 otherwise be sent encrypted, nor vice versa. For this reason this 202 extension is neutral as far as security is concerned. 204 5. Acknowledgements 206 The idea for writing this was expressed at the mic during the TLS 207 session at IETF 104 by Eric Rescorla. 209 The current bitwise formatting was suggested on the mailing list by 210 Nikos Mavrogiannopoulos. 212 6. References 214 6.1. Normative References 216 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 217 Requirement Levels", BCP 14, RFC 2119, 218 DOI 10.17487/RFC2119, March 1997, 219 . 221 [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 222 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, 223 May 2017, . 225 [RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol 226 Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018, 227 . 229 6.2. Informative References 231 [I-D.ietf-tls-tls13-cert-with-extern-psk] 232 Housley, R., "TLS 1.3 Extension for Certificate-based 233 Authentication with an External Pre-Shared Key", draft- 234 ietf-tls-tls13-cert-with-extern-psk-02 (work in progress), 235 May 2019. 237 [I-D.sy-tls-resumption-group] 238 Sy, E., "TLS Resumption across Server Name Indications for 239 TLS 1.3", draft-sy-tls-resumption-group-00 (work in 240 progress), March 2019. 242 [RFC8126] Cotton, M., Leiba, B., and T. Narten, "Guidelines for 243 Writing an IANA Considerations Section in RFCs", BCP 26, 244 RFC 8126, DOI 10.17487/RFC8126, June 2017, 245 . 247 Appendix A. Change Log 249 Version -02 replaced the fixed 64-bit string with an unlimited 250 bitstring, where only the necessary octets are encoded. 252 Version -01 replaced the enumeration of 8-bit values with a 64-bit 253 bitstring. 255 Version -00 was a quickly-thrown-together draft with the list of 256 supported features encoded as an array of 8-bit values. 258 Author's Address 260 Yoav Nir 261 DellEMC 262 9 Andrei Sakharov St 263 Haifa 3190500 264 Israel 266 Email: ynir.ietf@gmail.com