The Transport Layer Security (TLS) Protocol Version 1.3
draft-ietf-tls-rfc8446bis-07
The information below is for an old version of the document.
Document | Type |
This is an older version of an Internet-Draft whose latest revision state is "Active".
|
|
---|---|---|---|
Author | Eric Rescorla | ||
Last updated | 2023-03-28 (Latest revision 2023-03-26) | ||
Replaces | draft-rescorla-tls-rfc8446-bis | ||
RFC stream | Internet Engineering Task Force (IETF) | ||
Formats | |||
Additional resources | Mailing list discussion | ||
Stream | WG state | In WG Last Call | |
Document shepherd | Christopher A. Wood | ||
IESG | IESG state | I-D Exists | |
Consensus boilerplate | Unknown | ||
Telechat date | (None) | ||
Responsible AD | (None) | ||
Send notices to | caw@heapingbits.net |
draft-ietf-tls-rfc8446bis-07
Independent Submission P. Fleming Request for Comments: 7612 Independent Obsoletes: 3712 I. McDonald Category: Informational High North ISSN: 2070-1721 June 2015 Lightweight Directory Access Protocol (LDAP): Schema for Printer Services Abstract This document defines a schema, object classes, and attributes, for Printers and print services, for use with directories that support the Lightweight Directory Access Protocol (RFC 4510). This document is based on the Printer attributes listed in Appendix E of "Internet Printing Protocol/1.1: Model and Semantics" (RFC 2911). Additional Printer attributes are based on definitions in "Printer MIB v2" (RFC 3805), "PWG Command Set Format for IEEE 1284 Device ID v1.0" (PWG 5107.2), "IPP Job and Printer Extensions - Set 3 (JPS3)" (PWG 5100.13), and "IPP Everywhere" (PWG 5100.14). This memo is an Independent Submission to the RFC Editor by the Internet Printing Protocol (IPP) Working Group of the IEEE-ISTO Printer Working Group (PWG), as part of their PWG "IPP Everywhere" (PWG 5100.14) project for secure mobile printing with vendor-neutral Client software. This document obsoletes RFC 3712. Status of This Memo This document is not an Internet Standards Track specification; it is published for informational purposes. This is a contribution to the RFC Series, independently of any other RFC stream. The RFC Editor has chosen to publish this document at its discretion and makes no statement about its value for implementation or deployment. Documents approved for publication by the RFC Editor are not a candidate for any level of Internet Standard; see Section 2 of RFC 5741. Information about the current status of this document, any errata, and how to provide feedback on it may be obtained at http://www.rfc-editor.org/info/rfc7612. Fleming & McDonald Informational [Page 1] RFC 7612 LDAP Schema for Printer Services June 2015 Copyright Notice Copyright (c) 2015 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. Table of Contents 1. Introduction ....................................................4 1.1. Relationship to SLP Printer Service ........................4 1.2. Source of LDAP Printer Attributes ..........................4 1.3. Source of LDAP Printer Schema OIDs .........................5 1.3.1. IBM Assignments for RFC 3712 ........................5 1.3.2. IEEE-ISTO PWG Assignments ...........................5 1.4. Rationale for Design Choices ...............................5 1.4.1. Rationale for Using DirectoryString Syntax ..........5 1.4.2. Rationale for Using caseIgnoreMatch .................6 1.4.3. Rationale for Using caseIgnoreSubstringsMatch .......7 2. Conventions Used in This Document ...............................8 2.1. Requirements Language ......................................8 2.2. LDAP Schema Descriptions ...................................8 2.3. Abbreviations ..............................................8 3. Definition of Object Classes ....................................9 3.1. slpServicePrinter .........................................10 3.2. printerAbstract ...........................................10 3.3. printerService ............................................11 3.4. printerServiceAuxClass ....................................12 3.5. printerIPP ................................................12 3.6. printerLPR ................................................12 4. Definition of Attribute Types ..................................13 4.1. printer-uri ...............................................15 4.2. printer-xri-supported .....................................16 4.3. printer-name ..............................................18 4.4. printer-natural-language-configured .......................19 4.5. printer-location ..........................................19 4.6. printer-info ..............................................20 4.7. printer-more-info .........................................21 4.8. printer-make-and-model ....................................21 4.9. printer-ipp-versions-supported ............................22 4.10. printer-multiple-document-jobs-supported .................23 4.11. printer-charset-configured ...............................23 4.12. printer-charset-supported ................................24 Fleming & McDonald Informational [Page 2] RFC 7612 LDAP Schema for Printer Services June 2015 4.13. printer-generated-natural-language-supported .............24 4.14. printer-document-format-supported ........................25 4.15. printer-color-supported ..................................25 4.16. printer-compression-supported ............................26 4.17. printer-pages-per-minute .................................26 4.18. printer-pages-per-minute-color ...........................27 4.19. printer-finishings-supported .............................27 4.20. printer-number-up-supported ..............................28 4.21. printer-sides-supported ..................................28 4.22. printer-media-supported ..................................29 4.23. printer-media-local-supported ............................30 4.24. printer-resolution-supported .............................30 4.25. printer-print-quality-supported ..........................31 4.26. printer-job-priority-supported ...........................32 4.27. printer-copies-supported .................................32 4.28. printer-job-k-octets-supported ...........................33 4.29. printer-current-operator .................................33 4.30. printer-service-person ...................................34 4.31. printer-delivery-orientation-supported ...................34 4.32. printer-stacking-order-supported .........................35 4.33. printer-output-features-supported ........................36 4.34. printer-aliases ..........................................37 4.35. printer-device-id ........................................37 4.36. printer-device-service-count .............................38 4.37. printer-uuid .............................................38 4.38. printer-charge-info ......................................39 4.39. printer-charge-info-uri ..................................39 4.40. printer-geo-location .....................................40 4.41. printer-ipp-features-supported ...........................41 5. Definition of Syntaxes .........................................42 6. Definition of Matching Rules ...................................42 7. IANA Considerations ............................................42 7.1. Registration of Attribute Types ...........................43 7.2. Object Classes and Attribute Types from RFC 3712 ..........44 8. Internationalization Considerations ............................45 9. Security Considerations ........................................45 10. References ....................................................46 10.1. Normative References .....................................46 10.2. Informative References ...................................50 Appendix A. Changes since RFC 3712 ................................52 Acknowledgments ...................................................54 Authors' Addresses ................................................54 Fleming & McDonald Informational [Page 3] RFC 7612 LDAP Schema for Printer Services June 2015 1. Introduction This document defines several object classes to provide Lightweight Directory Access Protocol (LDAP) [RFC4510] applications with flexible options in defining Printer information using an LDAP schema. Classes are provided for defining directory entries with common Printer information as well as for extending existing directory entries with Service Location Protocol Version 2 (SLPv2) [RFC2608], Internet Printing Protocol/1.1 (IPP/1.1) [RFC2911], and lineprinter (LPR) [RFC1179] protocol-specific information. This memo is an Independent Submission to the RFC Editor by the Internet Printing Protocol Working Group of the IEEE-ISTO Printer Working Group, as part of their Printer Working Group (PWG) "IPP Everywhere" (PWG 5100.14) project for secure mobile printing with vendor-neutral Client software. 1.1. Relationship to SLP Printer Service The schema defined in this document is technically aligned with the stable IANA-registered 'service:printer:' v2.0 template [SLPPRT20], for compatibility with already-deployed SLPv2 [RFC2608] service advertising and discovery infrastructure. The attribute syntaxes are technically aligned with the 'service:printer:' v2.0 template; therefore, simpler types are sometimes used (for example, 'DirectoryString' [RFC4517] rather than 'labeledURI' [RFC2079] for the 'printer-uri' attribute). 1.2. Source of LDAP Printer Attributes The schema defined in this document is based on: o all of the Printer attributes listed in Appendix E ("Generic Directory Schema") of "Internet Printing Protocol/1.1: Model and Semantics" [RFC2911] that are defined in Section 4.4 ("Printer Description Attributes") of [RFC2911] o selected Printer attributes defined in "Printer MIB v2" [RFC3805], "PWG Command Set for IEEE 1284 Device ID v1.0" [PWG5107.2], "IPP Job and Printer Extensions - Set 3 (JPS3)" [PWG5100.13], and "IPP Everywhere" [PWG5100.14] See the table of Printer attributes and source documents in Section 4 ("Definition of Attribute Types") of this document. Fleming & McDonald Informational [Page 4] RFC 7612 LDAP Schema for Printer Services June 2015 1.3. Source of LDAP Printer Schema OIDs 1.3.1. IBM Assignments for RFC 3712 In March 2000, IBM permanently assigned ASN.1 OIDs to all of the object classes and attribute types that were defined in the original LDAP Printer Schema [RFC3712] (see Section 7.2). 1.3.2. IEEE-ISTO PWG Assignments In October 2011, IBM permanently delegated the base ASN.1 OID "1.3.18.0.2.24.46" to the IEEE-ISTO PWG for use in any PWG project. In October 2011, the IEEE-ISTO PWG permanently assigned subordinate ASN.1 OIDs for all of the new attribute types defined in this updated LDAP Printer Schema (see Section 7.1). 1.4. Rationale for Design Choices 1.4.1. Rationale for Using DirectoryString Syntax The attribute syntax 'DirectoryString' (UTF-8 [STD63]) defined in [RFC4517] is specified for several groups of string attributes that are defined in this document: 1) URI - printer-uri, printer-xri-supported, printer-more-info, printer-charge-info-uri, printer-uuid The UTF-8 encoding is compatible with deployment of (UTF-8 based) Internationalized Resource Identifiers (IRIs) [RFC3987]. 2) Description - printer-name, printer-location, printer-info, printer-make-and-model The UTF-8 encoding supports descriptions in any language, conformant with the IETF Policy on Character Sets and Languages [BCP18]. Note: The printer-natural-language-configured attribute contains a language tag [BCP47] for these description attributes (for example, to support text-to-speech conversions). Fleming & McDonald Informational [Page 5] RFC 7612 LDAP Schema for Printer Services June 2015 3) Keyword - printer-compression-supported, printer-finishings-supported, printer-media-supported, printer-media-local-supported, printer-print-quality-supported The UTF-8 encoding is compatible with the current IPP/1.1 [RFC2911] definition of the equivalent attributes, most of which have the IPP/1.1 union syntax "") is passed to HKDF-Expand-Label. The labels specified in this document are all ASCII strings and do not include a trailing NUL byte. Note: With common hash functions, any label longer than 12 characters requires an additional iteration of the hash function to compute. The labels in this specification have all been chosen to fit within this limit. Rescorla Expires 27 September 2023 [Page 87] Internet-Draft TLS March 2023 Keys are derived from two input secrets using the HKDF-Extract and Derive-Secret functions. The general pattern for adding a new secret is to use HKDF-Extract with the Salt being the current secret state and the Input Keying Material (IKM) being the new secret to be added. In this version of TLS 1.3, the two input secrets are: * PSK (a pre-shared key established externally or derived from the resumption_secret value from a previous connection) * (EC)DHE shared secret (Section 7.4) This produces a full key derivation schedule shown in the diagram below. In this diagram, the following formatting conventions apply: * HKDF-Extract is drawn as taking the Salt argument from the top and the IKM argument from the left, with its output to the bottom and the name of the output on the right. * Derive-Secret's Secret argument is indicated by the incoming arrow. For instance, the Early Secret is the Secret for generating the client_early_traffic_secret. * "0" indicates a string of Hash.length bytes set to zero. Note: the key derivation labels use the string "master" even though the values are referred to as "main" secrets. This mismatch is a result of renaming the values while retaining compatibility. 0 | v PSK -> HKDF-Extract = Early Secret | +-----> Derive-Secret(., | "ext binder" | | "res binder", | "") | = binder_key | +-----> Derive-Secret(., "c e traffic", | ClientHello) | = client_early_traffic_secret | +-----> Derive-Secret(., "e exp master", | ClientHello) | = early_exporter_secret v Derive-Secret(., "derived", "") Rescorla Expires 27 September 2023 [Page 88] Internet-Draft TLS March 2023 | v (EC)DHE -> HKDF-Extract = Handshake Secret | +-----> Derive-Secret(., "c hs traffic", | ClientHello...ServerHello) | = client_handshake_traffic_secret | +-----> Derive-Secret(., "s hs traffic", | ClientHello...ServerHello) | = server_handshake_traffic_secret v Derive-Secret(., "derived", "") | v 0 -> HKDF-Extract = Main Secret | +-----> Derive-Secret(., "c ap traffic", | ClientHello...server Finished) | = client_application_traffic_secret_0 | +-----> Derive-Secret(., "s ap traffic", | ClientHello...server Finished) | = server_application_traffic_secret_0 | +-----> Derive-Secret(., "exp master", | ClientHello...server Finished) | = exporter_secret | +-----> Derive-Secret(., "res master", ClientHello...client Finished) = resumption_secret The general pattern here is that the secrets shown down the left side of the diagram are just raw entropy without context, whereas the secrets down the right side include Handshake Context and therefore can be used to derive working keys without additional context. Note that the different calls to Derive-Secret may take different Messages arguments, even with the same secret. In a 0-RTT exchange, Derive- Secret is called with four distinct transcripts; in a 1-RTT-only exchange, it is called with three distinct transcripts. If a given secret is not available, then the 0-value consisting of a string of Hash.length bytes set to zeros is used. Note that this does not mean skipping rounds, so if PSK is not in use, Early Secret will still be HKDF-Extract(0, 0). For the computation of the binder_key, the label is "ext binder" for external PSKs (those provisioned outside of TLS) and "res binder" for resumption PSKs Rescorla Expires 27 September 2023 [Page 89] Internet-Draft TLS March 2023 (those provisioned as the resumption secret of a previous handshake). The different labels prevent the substitution of one type of PSK for the other. There are multiple potential Early Secret values, depending on which PSK the server ultimately selects. The client will need to compute one for each potential PSK; if no PSK is selected, it will then need to compute the Early Secret corresponding to the zero PSK. Once all the values which are to be derived from a given secret have been computed, that secret SHOULD be erased. 7.2. Updating Traffic Secrets Once the handshake is complete, it is possible for either side to update its sending traffic keys using the KeyUpdate handshake message defined in Section 4.6.3. The next generation of traffic keys is computed by generating client_/server_application_traffic_secret_N+1 from client_/server_application_traffic_secret_N as described in this section and then re-deriving the traffic keys as described in Section 7.3. The next-generation application_traffic_secret is computed as: application_traffic_secret_N+1 = HKDF-Expand-Label(application_traffic_secret_N, "traffic upd", "", Hash.length) Once client_/server_application_traffic_secret_N+1 and its associated traffic keys have been computed, implementations SHOULD delete client_/server_application_traffic_secret_N and its associated traffic keys. 7.3. Traffic Key Calculation The traffic keying material is generated from the following input values: * A secret value * A purpose value indicating the specific value being generated * The length of the key being generated The traffic keying material is generated from an input traffic secret value using: Rescorla Expires 27 September 2023 [Page 90] #x27;keyword' or 'name'. The keyword attributes defined in this document are extensible by site- specific or vendor-specific 'names' that behave like new 'keywords'. Note: In IPP/1.1, each value is strongly typed over-the-wire as either 'keyword' or 'name'. This union selector is not preserved in the definitions of these equivalent LDAP attributes. 1.4.2. Rationale for Using caseIgnoreMatch The EQUALITY matching rule 'caseIgnoreMatch' defined in [RFC4517] is specified for several groups of string attributes that are defined in this document: 1) URI These URI attributes specify EQUALITY matching with 'caseIgnoreMatch' (rather than with 'caseExactMatch') in order to conform to the spirit of [STD66], which requires case-insensitive matching on the host part of a URI versus case-sensitive matching on the remainder of a URI. These URI attributes follow existing practice of supporting case-insensitive equality matching for host names in the associatedDomain attribute defined in [RFC4524]. Either equality matching rule choice would be a compromise: a) case-sensitive whole URI matching can lead to false negative matches and has been shown to be fragile (given deployed client applications that 'pretty up' host names displayed and transferred in URI); b) case-insensitive whole URI matching can lead to false positive matches, although it is a dangerous practice to publish URI that differ only by case (for example, in the path elements). Fleming & McDonald Informational [Page 6] RFC 7612 LDAP Schema for Printer Services June 2015 2) Description Case-insensitive equality matching is more user-friendly for description attributes. 3) Keyword Case-insensitive equality matching is more user-friendly for keyword attributes. 4) IEEE 1284 Device ID Case-insensitive equality matching is mandatory for IEEE 1284 Device ID attributes. 1.4.3. Rationale for Using caseIgnoreSubstringsMatch The SUBSTR matching rule 'caseIgnoreSubstringsMatch' defined in [RFC4517] is specified for several groups of string attributes that are defined in this document: 1) URI These URI attributes follow existing practice of supporting case-insensitive equality matching for host names in the associatedDomain attribute defined in [RFC4524]. 2) Description Support for case-insensitive substring matching is more user-friendly for description attributes. 3) Keyword Support for case-insensitive substring matching is more user-friendly for keyword attributes. 4) IEEE 1284 Device ID Support for case-insensitive substring matching is mandatory for IEEE 1284 Device ID attributes. Fleming & McDonald Informational [Page 7] RFC 7612 LDAP Schema for Printer Services June 2015 2. Conventions Used in This Document 2.1. Requirements Language 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.2. LDAP Schema Descriptions Schema definitions are provided using LDAP [RFC4510] description formats. Definitions provided here are formatted (line wrapped) for readability. 2.3. Abbreviations This document makes use of the following abbreviations (given with their expanded forms and references for further reading): IANA - Internet Assigned Numbers Authority <http://www.iana.org> IEEE - Institute of Electrical and Electronics Engineers <http://www.ieee.org> IPP - Internet Printing Protocol [RFC2911] [PWG5100.12] <http://www.pwg.org/ipp/> ISTO - IEEE Industry Standards and Technology Organization <http://www.ieee-isto.org/> PWG - IEEE-ISTO Printer Working Group <http://www.pwg.org> RFC - Request for Comments <http://www.rfc-editor.org> TLS - Transport Layer Security [RFC5246] URI - Uniform Resource Identifier [STD66] URL - Uniform Resource Locator [STD66] UTF-8 - Unicode Transformation Format - 8-bit [STD63] Fleming & McDonald Informational [Page 8] RFC 7612 LDAP Schema for Printer Services June 2015 3. Definition of Object Classes We define the following LDAP object classes for use with both generic Printer-related information and services specific to SLPv2 [RFC2608], IPP/1.1 [RFC2911], and LPR [RFC1179]. slpServicePrinter - auxiliary class for SLP-registered Printers printerAbstract - abstract class for all Printer classes printerService - structural class for Printers printerServiceAuxClass - auxiliary class for Printers printerIPP - auxiliary class for IPP Printers printerLPR - auxiliary class for LPR Printers The following are some examples of how applications could choose to use these classes when creating directory entries: 1) Use printerService for directory entries containing common Printer information. 2) Use both printerService and slpServicePrinter for directory entries containing common Printer information for SLP-registered Printers. 3) Use printerService, printerLPR, and printerIPP for directory entries containing common Printer information for Printers that support both LPR and IPP. 4) Use printerServiceAuxClass and object classes not defined by this document for directory entries containing common Printer information. In this example, printerServiceAuxClass is used for extending other structural classes defining Printer information with common Printer information defined in this document. Refer to Section 4 for the definition of attribute types referenced by these object classes. We use attribute names instead of OIDs in object class definitions for clarity. Some attribute names described in [RFC2911] have been prefixed with 'printer-' as recommended in [RFC2926] and [SLPPRT20]. Fleming & McDonald Informational [Page 9] RFC 7612 LDAP Schema for Printer Services June 2015 3.1. slpServicePrinter ( 1.3.18.0.2.6.254 NAME 'slpServicePrinter' DESC 'Service Location Protocol (SLP) information.' AUXILIARY SUP slpService ) This auxiliary class defines information specific to the Service Location Protocol (SLPv2) [RFC2608]. It MAY be used to create new, or extend existing, directory entries with SLP 'service:printer' abstract service type information as defined in [SLPPRT20]. This object class is derived from 'slpService', the parent class for all SLP services, defined in [RFC2926]. 3.2. printerAbstract ( 1.3.18.0.2.6.258 NAME 'printerAbstract' DESC 'Printer-related information.' ABSTRACT SUP top MAY ( printer-name $ printer-natural-language-configured $ printer-location $ printer-info $ printer-more-info $ printer-make-and-model $ printer-multiple-document-jobs-supported $ printer-charset-configured $ printer-charset-supported $ printer-generated-natural-language-supported $ printer-document-format-supported $ printer-color-supported $ printer-compression-supported $ printer-pages-per-minute $ printer-pages-per-minute-color $ printer-finishings-supported $ printer-number-up-supported $ printer-sides-supported $ printer-media-supported $ printer-media-local-supported $ printer-resolution-supported $ printer-print-quality-supported $ printer-job-priority-supported $ printer-copies-supported $ printer-job-k-octets-supported $ Fleming & McDonald Informational [Page 10] RFC 7612 LDAP Schema for Printer Services June 2015 printer-current-operator $ printer-service-person $ printer-delivery-orientation-supported $ printer-stacking-order-supported $ printer-output-features-supported $ printer-device-id $ printer-device-service-count $ printer-uuid $ printer-charge-info $ printer-charge-info-uri $ printer-geo-location ) ) This abstract class defines Printer information. It is a base class for deriving other Printer-related classes, such as, but not limited to, classes defined in this document. It defines a common set of Printer attributes that are not specific to any one type of service, protocol, or operating system. 3.3. printerService ( 1.3.18.0.2.6.255 NAME 'printerService' DESC 'Printer information.' STRUCTURAL SUP printerAbstract MAY ( printer-uri $ printer-xri-supported ) ) This structural class defines Printer information. It is derived from class printerAbstract and thus inherits common Printer attributes. This class can be used with or without auxiliary classes to define Printer information. Auxiliary classes can be used to extend the common Printer information with information specific to the protocol, service, or operating system. Note: When extending other structural classes with auxiliary classes, printerService SHOULD NOT be used. Fleming & McDonald Informational [Page 11] RFC 7612 LDAP Schema for Printer Services June 2015 3.4. printerServiceAuxClass ( 1.3.18.0.2.6.257 NAME 'printerServiceAuxClass' DESC 'Printer information.' AUXILIARY SUP printerAbstract MAY ( printer-uri $ printer-xri-supported ) ) This auxiliary class defines Printer information. It is derived from class printerAbstract and thus inherits common Printer attributes. 3.5. printerIPP ( 1.3.18.0.2.6.256 NAME 'printerIPP' DESC 'Internet Printing Protocol (IPP) information.' AUXILIARY SUP top MAY ( printer-ipp-versions-supported $ printer-ipp-features-supported $ printer-multiple-document-jobs-supported ) ) This auxiliary class defines Internet Printing Protocol (IPP/1.1) [RFC2911] information. It is used to extend structural classes with IPP-specific Printer information. Note: See "Internet Printing Protocol/1.1: IPP URL Scheme" [RFC3510] and "Internet Printing Protocol (IPP) over HTTPS Transport Binding and the 'ipps' URI Scheme" [RFC7472] for conforming URI for IPP Printers. 3.6. printerLPR ( 1.3.18.0.2.6.253 NAME 'printerLPR' DESC 'LPR information.' AUXILIARY SUP top MUST ( printer-name ) MAY ( printer-aliases ) ) This auxiliary class defines LPR [RFC1179] information. It is used to identify directory entries that support LPR. Fleming & McDonald Informational [Page 12] RFC 7612 LDAP Schema for Printer Services June 2015 4. Definition of Attribute Types The following attribute types are referenced by the object classes defined in Section 3. The following attribute types reference syntax OIDs defined in Section 3 of [RFC4517] (see Section 5 ("Definition of Syntaxes") below). The following attribute types reference matching rule names (instead of OIDs) for clarity (see Section 6 below). For optional attributes, if the Printer information is not known, the attribute value SHOULD NOT be set. In the following definitions, referenced matching rules are defined in Section 4 of [RFC4517] and discussed in Section 6 ("Definition of Matching Rules") later in this document. Note: For compatibility with existing implementations of [RFC3712] and underlying string length limits in [RFC2707], [RFC2911], [RFC3805], [PWG5107.2], [PWG5100.13], and [PWG5100.14], implementations of the attributes defined in this document SHOULD NOT exceed those underlying string length limits (to avoid truncation and false matches). Note: For interoperability and consistent text display, values of attributes defined in this document (a) SHOULD be normalized as recommended in "Unicode Format for Network Interchange" [RFC5198]; (b) SHOULD NOT contain DEL or any C0 or C1 control characters except for HT, CR, and LF; (c) SHOULD only contain CR and LF characters together (not as singletons); and (d) SHOULD NOT contain HT, CR, or LF characters in names, e.g., printer-name and printer-aliases. Note: Some of the following attributes are described as 'List of xxx' (using a comma as the member delimiter). Some other attributes are described as 'One of xxx' (single-valued). In all cases, any attribute can have multiple values represented as multiple instances, except where explicitly restricted in syntax to be single-valued. Note: Values of the string attributes printer-xri-supported and printer-resolution-supported use different field delimiters ('<' and '>', respectively). These two field delimiters are different for compatibility with the corresponding attributes in the IANA- registered SLP 'service:printer:' v2.0 template [SLPPRT20], which was defined before the original LDAP Printer Schema [RFC3712] was written. Fleming & McDonald Informational [Page 13] Internet-Draft TLS March 2023 [sender]_write_key = HKDF-Expand-Label(Secret, "key", "", key_length) [sender]_write_iv = HKDF-Expand-Label(Secret, "iv", "", iv_length) [sender] denotes the sending side. The value of Secret for each category of data is shown in the table below. +====================+=======================================+ | Data Type | Secret | +====================+=======================================+ | 0-RTT Application | client_early_traffic_secret | | and EndOfEarlyData | | +--------------------+---------------------------------------+ | Initial Handshake | [sender]_handshake_traffic_secret | +--------------------+---------------------------------------+ | Post-Handshake and | [sender]_application_traffic_secret_N | | Application Data | | +--------------------+---------------------------------------+ Table 3: Secrets for Traffic Keys Alerts are sent with the then current sending key (or as plaintext if no such key has been established.) All the traffic keying material is recomputed whenever the underlying Secret changes (e.g., when changing from the handshake to Application Data keys or upon a key update). 7.4. (EC)DHE Shared Secret Calculation 7.4.1. Finite Field Diffie-Hellman For finite field groups, a conventional Diffie-Hellman [DH76] computation is performed. The negotiated key (Z) is converted to a byte string by encoding in big-endian form and left-padded with zeros up to the size of the prime. This byte string is used as the shared secret in the key schedule as specified above. Note that this construction differs from previous versions of TLS which remove leading zeros. 7.4.2. Elliptic Curve Diffie-Hellman For secp256r1, secp384r1 and secp521r1, ECDH calculations (including parameter and key generation as well as the shared secret calculation) are performed according to [IEEE1363] using the ECKAS- DH1 scheme with the identity map as the key derivation function (KDF), so that the shared secret is the x-coordinate of the ECDH shared secret elliptic curve point represented as an octet string. Note that this octet string ("Z" in IEEE 1363 terminology) as output Rescorla Expires 27 September 2023 [Page 91] Internet-Draft TLS March 2023 by FE2OSP (the Field Element to Octet String Conversion Primitive) has constant length for any given field; leading zeros found in this octet string MUST NOT be truncated. (Note that this use of the identity KDF is a technicality. The complete picture is that ECDH is employed with a non-trivial KDF because TLS does not directly use this secret for anything other than for computing other secrets.) For X25519 and X448, the ECDH calculations are as follows: * The public key to put into the KeyShareEntry.key_exchange structure is the result of applying the ECDH scalar multiplication function to the secret key of appropriate length (into scalar input) and the standard public basepoint (into u-coordinate point input). * The ECDH shared secret is the result of applying the ECDH scalar multiplication function to the secret key (into scalar input) and the peer's public key (into u-coordinate point input). The output is used raw, with no processing. For these curves, implementations SHOULD use the approach specified in [RFC7748] to calculate the Diffie-Hellman shared secret. Implementations MUST check whether the computed Diffie-Hellman shared secret is the all-zero value and abort if so, as described in Section 6 of [RFC7748]. If implementors use an alternative implementation of these elliptic curves, they SHOULD perform the additional checks specified in Section 7 of [RFC7748]. 7.5. Exporters [RFC5705] defines keying material exporters for TLS in terms of the TLS pseudorandom function (PRF). This document replaces the PRF with HKDF, thus requiring a new construction. The exporter interface remains the same. The exporter value is computed as: TLS-Exporter(label, context_value, key_length) = HKDF-Expand-Label(Derive-Secret(Secret, label, ""), "exporter", Hash(context_value), key_length) Rescorla Expires 27 September 2023 [Page 92] Internet-Draft TLS March 2023 Where Secret is either the early_exporter_secret or the exporter_secret. Implementations MUST use the exporter_secret unless explicitly specified by the application. The early_exporter_secret is defined for use in settings where an exporter is needed for 0-RTT data. A separate interface for the early exporter is RECOMMENDED; this avoids the exporter user accidentally using an early exporter when a regular one is desired or vice versa. If no context is provided, the context_value is zero length. Consequently, providing no context computes the same value as providing an empty context. This is a change from previous versions of TLS where an empty context produced a different output than an absent context. As of this document's publication, no allocated exporter label is used both with and without a context. Future specifications MUST NOT define a use of exporters that permit both an empty context and no context with the same label. New uses of exporters SHOULD provide a context in all exporter computations, though the value could be empty. Requirements for the format of exporter labels are defined in Section 4 of [RFC5705]. 8. 0-RTT and Anti-Replay As noted in Section 2.3 and Appendix F.5, TLS does not provide inherent replay protections for 0-RTT data. There are two potential threats to be concerned with: * Network attackers who mount a replay attack by simply duplicating a flight of 0-RTT data. * Network attackers who take advantage of client retry behavior to arrange for the server to receive multiple copies of an application message. This threat already exists to some extent because clients that value robustness respond to network errors by attempting to retry requests. However, 0-RTT adds an additional dimension for any server system which does not maintain globally consistent server state. Specifically, if a server system has multiple zones where tickets from zone A will not be accepted in zone B, then an attacker can duplicate a ClientHello and early data intended for A to both A and B. At A, the data will be accepted in 0-RTT, but at B the server will reject 0-RTT data and instead force a full handshake. If the attacker blocks the ServerHello from A, then the client will complete the handshake with B and probably retry the request, leading to duplication on the server system as a whole. Rescorla Expires 27 September 2023 [Page 93] Internet-Draft TLS March 2023 The first class of attack can be prevented by sharing state to guarantee that the 0-RTT data is accepted at most once. Servers SHOULD provide that level of replay safety by implementing one of the methods described in this section or by equivalent means. It is understood, however, that due to operational concerns not all deployments will maintain state at that level. Therefore, in normal operation, clients will not know which, if any, of these mechanisms servers actually implement and hence MUST only send early data which they deem safe to be replayed. In addition to the direct effects of replays, there is a class of attacks where even operations normally considered idempotent could be exploited by a large number of replays (timing attacks, resource limit exhaustion and others, as described in Appendix F.5). Those can be mitigated by ensuring that every 0-RTT payload can be replayed only a limited number of times. The server MUST ensure that any instance of it (be it a machine, a thread, or any other entity within the relevant serving infrastructure) would accept 0-RTT for the same 0-RTT handshake at most once; this limits the number of replays to the number of server instances in the deployment. Such a guarantee can be accomplished by locally recording data from recently received ClientHellos and rejecting repeats, or by any other method that provides the same or a stronger guarantee. The "at most once per server instance" guarantee is a minimum requirement; servers SHOULD limit 0-RTT replays further when feasible. The second class of attack cannot be prevented at the TLS layer and MUST be dealt with by any application. Note that any application whose clients implement any kind of retry behavior already needs to implement some sort of anti-replay defense. 8.1. Single-Use Tickets The simplest form of anti-replay defense is for the server to only allow each session ticket to be used once. For instance, the server can maintain a database of all outstanding valid tickets, deleting each ticket from the database as it is used. If an unknown ticket is provided, the server would then fall back to a full handshake. If the tickets are not self-contained but rather are database keys, and the corresponding PSKs are deleted upon use, then connections established using PSKs enjoy not only anti-replay protection, but also forward secrecy once all copies of the PSK from the database entry have been deleted. This mechanism also improves security for PSK usage when PSK is used without (EC)DHE. Rescorla Expires 27 September 2023 [Page 94] Internet-Draft TLS March 2023 Because this mechanism requires sharing the session database between server nodes in environments with multiple distributed servers, it may be hard to achieve high rates of successful PSK 0-RTT connections when compared to self-encrypted tickets. Unlike session databases, session tickets can successfully do PSK-based session establishment even without consistent storage, though when 0-RTT is allowed they still require consistent storage for anti-replay of 0-RTT data, as detailed in the following section. 8.2. Client Hello Recording An alternative form of anti-replay is to record a unique value derived from the ClientHello (generally either the random value or the PSK binder) and reject duplicates. Recording all ClientHellos causes state to grow without bound, but a server can instead record ClientHellos within a given time window and use the "obfuscated_ticket_age" to ensure that tickets aren't reused outside that window. In order to implement this, when a ClientHello is received, the server first verifies the PSK binder as described in Section 4.2.11. It then computes the expected_arrival_time as described in the next section and rejects 0-RTT if it is outside the recording window, falling back to the 1-RTT handshake. If the expected_arrival_time is in the window, then the server checks to see if it has recorded a matching ClientHello. If one is found, it either aborts the handshake with an "illegal_parameter" alert or accepts the PSK but rejects 0-RTT. If no matching ClientHello is found, then it accepts 0-RTT and then stores the ClientHello for as long as the expected_arrival_time is inside the window. Servers MAY also implement data stores with false positives, such as Bloom filters, in which case they MUST respond to apparent replay by rejecting 0-RTT but MUST NOT abort the handshake. Rescorla Expires 27 September 2023 [Page 95] Internet-Draft TLS March 2023 RFC 7612 LDAP Schema for Printer Services June 2015 The following table is a summary of the attribute names defined by this document and their corresponding source document names as defined in [RFC2911], [RFC3805], [PWG5107.2], or [PWG5100.13]. Some source attribute names have been prefixed with 'printer-' as recommended in [RFC2926], to address the flat namespace for LDAP identifiers. LDAP and SLP Printer Schema Source Document and Attribute Name ------------------------------ ------------------------------------- *** IPP/1.1 and Semantics Model [RFC2911] printer-uri printer-xri-supported [printer-uri-supported] [uri-authentication-supported] [uri-security-supported] printer-name printer-name printer-natural-language-configured natural-language-configured printer-location printer-location printer-info printer-info printer-more-info printer-more-info printer-make-and-model printer-make-and-model printer-ipp-versions-supported ipp-versions-supported printer-multiple-document-jobs-supported multiple-document-jobs-supported printer-charset-configured charset-configured printer-charset-supported charset-supported printer-generated-natural-language-supported generated-natural-language-supported printer-document-format-supported document-format-supported printer-color-supported color-supported printer-compression-supported compression-supported printer-pages-per-minute pages-per-minute printer-pages-per-minute-color pages-per-minute-color printer-finishings-supported finishings-supported printer-number-up-supported number-up-supported printer-sides-supported sides-supported printer-media-supported media-supported printer-media-local-supported [site names from IPP media-supported] printer-resolution-supported printer-resolution-supported printer-print-quality-supported print-quality-supported printer-job-priority-supported job-priority-supported printer-copies-supported copies-supported printer-job-k-octets-supported job-k-octets-supported Fleming & McDonald Informational [Page 14] RFC 7612 LDAP Schema for Printer Services June 2015 *** Printer MIB v2 [RFC3805] printer-current-operator prtGeneralCurrentOperator printer-service-person prtGeneralServicePerson printer-delivery-orientation-supported prtOutputPageDeliveryOrientation printer-stacking-order-supported prtOutputStackingOrder printer-output-features-supported [prtOutputBursting] [prtOutputDecollating] [prtOutputPageCollated] [prtOutputOffsetStacking] printer-aliases prtGeneralPrinterName *** Cmd Set 1284 Device ID [PWG5107.2] printer-device-id printer-device-id *** IPP Job/Printer Ext Set3 [PWG5100.13] printer-device-service-count device-service-count printer-uuid printer-uuid printer-charge-info printer-charge-info printer-charge-info-uri printer-charge-info-uri printer-geo-location printer-geo-location printer-ipp-features-supported ipp-features-supported 4.1. printer-uri ( 1.3.18.0.2.4.1140 NAME 'printer-uri' DESC 'A URI supported by this Printer.' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE ) If the printer-xri-supported LDAP attribute is implemented, then this printer-uri value MUST be listed in printer-xri-supported. See [STD66] for details of URI syntax. Note: For compatibility with IPP/1.1 [RFC2911], values of this attribute SHOULD NOT exceed 1023 octets in length. Note: LDAP application clients SHOULD NOT attempt to use malformed URI values read from this attribute. LDAP administrative clients SHOULD NOT write malformed URI values into this attribute. Fleming & McDonald Informational [Page 15] RFC 7612 LDAP Schema for Printer Services June 2015 Note: See "Internet Printing Protocol/1.1: IPP URL Scheme" [RFC3510] and "Internet Printing Protocol (IPP) over HTTPS Transport Binding and the 'ipps' URI Scheme" [RFC7472] for conforming URI for IPP Printers. Note: For SLP-registered Printers, the LDAP printer-uri attribute SHOULD be set to the value of the SLP-registered URL of the Printer, for interworking with SLPv2 [RFC2608] service discovery. Note: See Sections 1.4.1, 1.4.2, and 1.4.3 for rationale for design choices. 4.2. printer-xri-supported ( 1.3.18.0.2.4.1107 NAME 'printer-xri-supported' DESC 'An XRI (extended resource identifier) supported by this Printer.' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) Each value of this attribute MUST consist of a URI (uniform resource identifier) followed by (optional) authentication and security fields. Each XRI field MUST be delimited by '<', with optional trailing whitespace. For example: 'uri=ipp://example.com/ipp< auth=digest< sec=tls<' 'uri=ipps://example.com/ipp< auth=digest< sec=tls<' 'uri=lpr://example.com/lpr< auth=none< sec=none<' 'uri=mailto:printer@example.com< auth=none< sec=none<' Note: See the note in Section 4 about the different field delimiters used in the printer-xri-supported and printer-resolution-supported attributes ('<' and '>', respectively), chosen for compatibility with the IANA-registered SLP 'service:printer:' v2.0 template [SLPPRT20]. Note: Multiple values for this attribute are represented as multiple instances of this attribute. See [STD66] for details of URI syntax. Note: For compatibility with IPP/1.1 [RFC2911], values of this attribute SHOULD NOT exceed 1023 octets in length. Fleming & McDonald Informational [Page 16] RFC 7612 LDAP Schema for Printer Services June 2015 Note: LDAP application clients SHOULD NOT attempt to use malformed URI values read from this attribute. LDAP administrative clients SHOULD NOT write malformed URI values into this attribute. Note: This attribute is based on the IPP/1.1 [RFC2911] attributes 'printer-uri-supported', 'uri-authentication-supported', and 'uri-security-supported' (called the 'Three Musketeers' because they are parallel, ordered attributes). This attribute unfolds those IPP/1.1 attributes and thus avoids the ordering (and same number of values) constraints of the IPP/1.1 separate attributes. Defined keywords for fields include: 'uri' (IPP 'printer-uri-supported') 'auth' (IPP 'uri-authentication-supported') 'sec' (IPP 'uri-security-supported') A missing 'auth' field SHOULD be interpreted to mean 'none'. Per IPP/1.1 [RFC2911], "IPP Job and Printer Extensions - Set 3 (JPS3)" [PWG5100.13], and the IANA IPP registry [IANAIPP], defined values of the 'auth' field include: 'none' (no authentication for this URI) 'requesting-user-name' (from operation request) 'basic' (HTTP/1.1 Basic [RFC2617] and [RFC7235]) 'digest' (HTTP/1.1 Digest [RFC2617] and [RFC7235]) 'certificate' (X.509 Certificate [RFC5280] and [RFC6818]) 'negotiate' (HTTP/1.1 Negotiate [RFC4559]) The 'certificate' value refers to the IPP Client certificate extracted from the TLS session. A missing 'sec' field SHOULD be interpreted to mean 'none'. Per IPP/1.1 [RFC2911] and the IANA IPP registry [IANAIPP], defined values of the 'sec' field include: 'none' (no security for this URI) 'ssl3' (Netscape's Secure Socket Layer protocol (SSL3)) 'tls' (IETF TLS, [RFC5246]) Note: The syntax and delimiter for this attribute are aligned with the equivalent attribute in the 'service:printer:' v2.0 template [SLPPRT20]. Whitespace is permitted after (but not before) the delimiter '<'. Fleming & McDonald Informational [Page 17] RFC 7612 LDAP Schema for Printer Services June 2015 Note: See "Internet Printing Protocol/1.1: IPP URL Scheme" [RFC3510] and "Internet Printing Protocol (IPP) over HTTPS Transport Binding and the 'ipps' URI Scheme" [RFC7472] for conforming URI for IPP Printers. Note: See Sections 1.4.1, 1.4.2, and 1.4.3 for rationale for design choices. 4.3. printer-name ( 1.3.18.0.2.4.1135 NAME 'printer-name' DESC 'The site-specific administrative name of this Printer.' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE ) Values of this attribute SHOULD be specified in the language specified in printer-natural-language-configured (for example, to support text-to-speech conversions), although the Printer's name MAY be specified in any language. Note: For compatibility with IPP/1.1 [RFC2911], values of this attribute SHOULD NOT exceed 255 octets in length. Note: This name can be the last part of the Printer's URI, or it can be completely unrelated. This name can contain characters that are not allowed in a conventional URI (see [STD66]). Note: For interoperability, values of this attribute (a) SHOULD be normalized as recommended in "Unicode Format for Network Interchange" [RFC5198]; and (b) SHOULD NOT contain DEL or any C0 or C1 control characters. Fleming & McDonald Informational [Page 18] RFC 7612 LDAP Schema for Printer Services June 2015 4.4. printer-natural-language-configured ( 1.3.18.0.2.4.1119 NAME 'printer-natural-language-configured' DESC 'The configured natural language for LDAP attributes of syntax DirectoryString (UTF-8) in this directory entry.' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE ) Also, a possible natural language for IPP protocol string attributes set by operator, system administrator, or manufacturer. Also, the (declared) natural language of the printer-name, printer-location, printer-info, and printer-make-and-model attributes of this Printer. Values of language tags MUST conform to "Tags for Identifying Languages" [BCP47]. For example: 'en-us' (English as spoken in the US) 'fr-fr' (French as spoken in France) Note: For compatibility with IPP/1.1 [RFC2911], values of this attribute SHOULD NOT exceed 63 octets in length. Note: For compatibility with IPP/1.1 [RFC2911], language tags in this attribute SHOULD be lowercase normalized. 4.5. printer-location ( 1.3.18.0.2.4.1136 NAME 'printer-location' DESC 'The physical location of this Printer.' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE ) For example: 'Room 123A' 'Second floor of building XYZ' Note: For compatibility with IPP/1.1 [RFC2911], values of this attribute SHOULD NOT exceed 127 octets in length. Fleming & McDonald Informational [Page 19] RFC 7612 LDAP Schema for Printer Services June 2015The server MUST derive the storage key only from validated sections of the ClientHello. If the ClientHello contains multiple PSK identities, then an attacker can create multiple ClientHellos with different binder values for the less-preferred identity on the assumption that the server will not verify it (as recommended by Section 4.2.11). I.e., if the client sends PSKs A and B but the server prefers A, then the attacker can change the binder for B without affecting the binder for A. If the binder for B is part of the storage key, then this ClientHello will not appear as a duplicate, which will cause the ClientHello to be accepted, and may cause side effects such as replay cache pollution, although any 0-RTT data will not be decryptable because it will use different keys. If the validated binder or the ClientHello.random is used as the storage key, then this attack is not possible. Because this mechanism does not require storing all outstanding tickets, it may be easier to implement in distributed systems with high rates of resumption and 0-RTT, at the cost of potentially weaker anti-replay defense because of the difficulty of reliably storing and retrieving the received ClientHello messages. In many such systems, it is impractical to have globally consistent storage of all the received ClientHellos. In this case, the best anti-replay protection is provided by having a single storage zone be authoritative for a given ticket and refusing 0-RTT for that ticket in any other zone. This approach prevents simple replay by the attacker because only one zone will accept 0-RTT data. A weaker design is to implement separate storage for each zone but allow 0-RTT in any zone. This approach limits the number of replays to once per zone. Application message duplication of course remains possible with either design. When implementations are freshly started, they SHOULD reject 0-RTT as long as any portion of their recording window overlaps the startup time. Otherwise, they run the risk of accepting replays which were originally sent during that period. Note: If the client's clock is running much faster than the server's, then a ClientHello may be received that is outside the window in the future, in which case it might be accepted for 1-RTT, causing a client retry, and then acceptable later for 0-RTT. This is another variant of the second form of attack described in Section 8. Rescorla Expires 27 September 2023 [Page 96] Internet-Draft TLS March 2023 8.3. Freshness Checks Because the ClientHello indicates the time at which the client sent it, it is possible to efficiently determine whether a ClientHello was likely sent reasonably recently and only accept 0-RTT for such a ClientHello, otherwise falling back to a 1-RTT handshake. This is necessary for the ClientHello storage mechanism described in Section 8.2 because otherwise the server needs to store an unlimited number of ClientHellos, and is a useful optimization for self- contained single-use tickets because it allows efficient rejection of ClientHellos which cannot be used for 0-RTT. In order to implement this mechanism, a server needs to store the time that the server generated the session ticket, offset by an estimate of the round-trip time between client and server. I.e., adjusted_creation_time = creation_time + estimated_RTT This value can be encoded in the ticket, thus avoiding the need to keep state for each outstanding ticket. The server can determine the client's view of the age of the ticket by subtracting the ticket's "ticket_age_add" value from the "obfuscated_ticket_age" parameter in the client's "pre_shared_key" extension. The server can determine the expected_arrival_time of the ClientHello as: expected_arrival_time = adjusted_creation_time + clients_ticket_age When a new ClientHello is received, the expected_arrival_time is then compared against the current server wall clock time and if they differ by more than a certain amount, 0-RTT is rejected, though the 1-RTT handshake can be allowed to complete. There are several potential sources of error that might cause mismatches between the expected_arrival_time and the measured time. Variations in client and server clock rates are likely to be minimal, though potentially the absolute times may be off by large values. Network propagation delays are the most likely causes of a mismatch in legitimate values for elapsed time. Both the NewSessionTicket and ClientHello messages might be retransmitted and therefore delayed, which might be hidden by TCP. For clients on the Internet, this implies windows on the order of ten seconds to account for errors in clocks and variations in measurements; other deployment scenarios may have different needs. Clock skew distributions are not symmetric, so the optimal tradeoff may involve an asymmetric range of permissible mismatch values. Rescorla Expires 27 September 2023 [Page 97] Internet-Draft TLS March 2023 Note that freshness checking alone is not sufficient to prevent replays because it does not detect them during the error window, which -- depending on bandwidth and system capacity -- could include billions of replays in real-world settings. In addition, this freshness checking is only done at the time the ClientHello is received, and not when subsequent early Application Data records are received. After early data is accepted, records may continue to be streamed to the server over a longer time period. 9. Compliance Requirements 9.1. Mandatory-to-Implement Cipher Suites In the absence of an application profile standard specifying otherwise: A TLS-compliant application MUST implement the TLS_AES_128_GCM_SHA256 [GCM] cipher suite and SHOULD implement the TLS_AES_256_GCM_SHA384 [GCM] and TLS_CHACHA20_POLY1305_SHA256 [RFC8439] cipher suites (see Appendix B.4). A TLS-compliant application MUST support digital signatures with rsa_pkcs1_sha256 (for certificates), rsa_pss_rsae_sha256 (for CertificateVerify and certificates), and ecdsa_secp256r1_sha256. A TLS-compliant application MUST support key exchange with secp256r1 (NIST P-256) and SHOULD support key exchange with X25519 [RFC7748]. 9.2. Mandatory-to-Implement Extensions In the absence of an application profile standard specifying otherwise, a TLS-compliant application MUST implement the following TLS extensions: * Supported Versions ("supported_versions"; Section 4.2.1) * Cookie ("cookie"; Section 4.2.2) * Signature Algorithms ("signature_algorithms"; Section 4.2.3) * Signature Algorithms Certificate ("signature_algorithms_cert"; Section 4.2.3) * Negotiated Groups ("supported_groups"; Section 4.2.7) * Key Share ("key_share"; Section 4.2.8) * Server Name Indication ("server_name"; Section 3 of [RFC6066]) Rescorla Expires 27 September 2023 [Page 98] Internet-Draft TLS March 2023 All implementations MUST send and use these extensions when offering applicable features: * "supported_versions" is REQUIRED for all ClientHello, ServerHello, and HelloRetryRequest messages. * "signature_algorithms" is REQUIRED for certificate authentication. * "supported_groups" is REQUIRED for ClientHello messages using DHE or ECDHE key exchange. * "key_share" is REQUIRED for DHE or ECDHE key exchange. * "pre_shared_key" is REQUIRED for PSK key agreement. * "psk_key_exchange_modes" is REQUIRED for PSK key agreement. A client is considered to be attempting to negotiate using this specification if the ClientHello contains a "supported_versions" extension with 0x0304 contained in its body. Such a ClientHello message MUST meet the following requirements: * If not containing a "pre_shared_key" extension, it MUST contain both a "signature_algorithms" extension and a "supported_groups" extension. * If containing a "supported_groups" extension, it MUST also contain a "key_share" extension, and vice versa. An empty KeyShare.client_shares list is permitted. Servers receiving a ClientHello which does not conform to these requirements MUST abort the handshake with a "missing_extension" alert. Additionally, all implementations MUST support the use of the "server_name" extension with applications capable of using it. Servers MAY require clients to send a valid "server_name" extension. Servers requiring this extension SHOULD respond to a ClientHello lacking a "server_name" extension by terminating the connection with a "missing_extension" alert. 9.3. Protocol Invariants This section describes invariants that TLS endpoints and middleboxes MUST follow. It also applies to earlier versions of TLS. Rescorla Expires 27 September 2023 [Page 99] Internet-Draft TLS March 2023 TLS is designed to be securely and compatibly extensible. Newer clients or servers, when communicating with newer peers, should negotiate the most preferred common parameters. The TLS handshake provides downgrade protection: Middleboxes passing traffic between a newer client and newer server without terminating TLS should be unable to influence the handshake (see Appendix F.1). At the same time, deployments update at different rates, so a newer client or server MAY continue to support older parameters, which would allow it to interoperate with older endpoints. For this to work, implementations MUST correctly handle extensible fields: * A client sending a ClientHello MUST support all parameters advertised in it. Otherwise, the server may fail to interoperate by selecting one of those parameters. * A server receiving a ClientHello MUST correctly ignore all unrecognized cipher suites, extensions, and other parameters. Otherwise, it may fail to interoperate with newer clients. In TLS 1.3, a client receiving a CertificateRequest or NewSessionTicket MUST also ignore all unrecognized extensions. * A middlebox which terminates a TLS connection MUST behave as a compliant TLS server (to the original client), including having a certificate which the client is willing to accept, and also as a compliant TLS client (to the original server), including verifying the original server's certificate. In particular, it MUST generate its own ClientHello containing only parameters it understands, and it MUST generate a fresh ServerHello random value, rather than forwarding the endpoint's value. Note that TLS's protocol requirements and security analysis only apply to the two connections separately. Safely deploying a TLS terminator requires additional security considerations which are beyond the scope of this document. * A middlebox which forwards ClientHello parameters it does not understand MUST NOT process any messages beyond that ClientHello. It MUST forward all subsequent traffic unmodified. Otherwise, it may fail to interoperate with newer clients and servers. Rescorla Expires 27 September 2023 [Page 100] Internet-Draft TLS March 2023 Forwarded ClientHellos may contain advertisements for features not supported by the middlebox, so the response may include future TLS additions the middlebox does not recognize. These additions MAY change any message beyond the ClientHello arbitrarily. In particular, the values sent in the ServerHello might change, the ServerHello format might change, and the TLSCiphertext format might change. The design of TLS 1.3 was constrained by widely deployed non- compliant TLS middleboxes (see Appendix E.4); however, it does not relax the invariants. Those middleboxes continue to be non- compliant. 10. Security Considerations Security issues are discussed throughout this memo, especially in Appendix C, Appendix E, and Appendix F. 11. IANA Considerations This document uses several registries that were originally created in [RFC4346] and updated in [RFC8446] and [RFC8447]. The changes between [RFC8446] and [RFC8447] this document are described in Section 11.1. IANA has updated these to reference this document. The registries and their allocation policies are below: * TLS Cipher Suites registry: values with the first byte in the range 0-254 (decimal) are assigned via Specification Required [RFC8126]. Values with the first byte 255 (decimal) are reserved for Private Use [RFC8126]. IANA has added the cipher suites listed in Appendix B.4 to the registry. The "Value" and "Description" columns are taken from the table. The "DTLS-OK" and "Recommended" columns are both marked as "Y" for each new cipher suite. * TLS ContentType registry: Future values are allocated via Standards Action [RFC8126]. * TLS Alerts registry: Future values are allocated via Standards Action [RFC8126]. IANA [is requested to/has] populated this registry with the values from Appendix B.2. The "DTLS-OK" column is marked as "Y" for all such values. Values marked as "_RESERVED" have comments describing their previous usage. Rescorla Expires 27 September 2023 [Page 101] Internet-Draft TLS March 2023 * TLS HandshakeType registry: Future values are allocated via Standards Action [RFC8126]. IANA has updated this registry to rename item 4 from "NewSessionTicket" to "new_session_ticket" and populated this registry with the values from Appendix B.3. The "DTLS-OK" column is marked as "Y" for all such values. Values marked "_RESERVED" have comments describing their previous or temporary usage. This document also uses the TLS ExtensionType Values registry originally created in [RFC4366]. IANA has updated it to reference this document. Changes to the registry follow: * IANA has updated the registration policy as follows: Values with the first byte in the range 0-254 (decimal) are assigned via Specification Required [RFC8126]. Values with the first byte 255 (decimal) are reserved for Private Use [RFC8126]. * IANA has updated this registry to include the "key_share", "pre_shared_key", "psk_key_exchange_modes", "early_data", "cookie", "supported_versions", "certificate_authorities", "oid_filters", "post_handshake_auth", and "signature_algorithms_cert" extensions with the values defined in this document and the "Recommended" value of "Y". * IANA has updated this registry to include a "TLS 1.3" column which lists the messages in which the extension may appear. This column has been initially populated from the table in Section 4.2, with any extension not listed there marked as "-" to indicate that it is not used by TLS 1.3. This document updates an entry in the TLS Certificate Types registry originally created in [RFC6091] and updated in [RFC8447]. IANA has updated the entry for value 1 to have the name "OpenPGP_RESERVED", "Recommended" value "N", and comment "Used in TLS versions prior to 1.3." IANA has updated the entry for value 0 to have the name "X509", "Recommended" value "Y", and comment "Was X.509 before TLS 1.3". This document updates an entry in the TLS Certificate Status Types registry originally created in [RFC6961]. IANA has updated the entry for value 2 to have the name "ocsp_multi_RESERVED" and comment "Used in TLS versions prior to 1.3". Rescorla Expires 27 September 2023 [Page 102] Internet-Draft TLS March 2023 This document updates two entries in the TLS Supported Groups registry (created under a different name by [RFC4492]; now maintained by [RFC8422]) and updated by [RFC7919] and [RFC8447]. The entries for values 29 and 30 (x25519 and x448) have been updated to also refer to this document. In addition, this document defines two new registries that are maintained by IANA: * TLS SignatureScheme registry: Values with the first byte in the range 0-253 (decimal) are assigned via Specification Required [RFC8126]. Values with the first byte 254 or 255 (decimal) are reserved for Private Use [RFC8126]. Values with the first byte in the range 0-6 or with the second byte in the range 0-3 that are not currently allocated are reserved for backward compatibility. This registry has a "Recommended" column. The registry has been initially populated with the values described in Section 4.2.3. The following values are marked as "Recommended": ecdsa_secp256r1_sha256, ecdsa_secp384r1_sha384, rsa_pss_rsae_sha256, rsa_pss_rsae_sha384, rsa_pss_rsae_sha512, rsa_pss_pss_sha256, rsa_pss_pss_sha384, rsa_pss_pss_sha512, and ed25519. The "Recommended" column is assigned a value of "N" unless explicitly requested, and adding a value with a "Recommended" value of "Y" requires Standards Action [RFC8126]. IESG Approval is REQUIRED for a Y->N transition. * TLS PskKeyExchangeMode registry: Values in the range 0-253 (decimal) are assigned via Specification Required [RFC8126]. The values 254 and 255 (decimal) are reserved for Private Use [RFC8126]. This registry has a "Recommended" column. The registry has been initially populated with psk_ke (0) and psk_dhe_ke (1). Both are marked as "Recommended". The "Recommended" column is assigned a value of "N" unless explicitly requested, and adding a value with a "Recommended" value of "Y" requires Standards Action [RFC8126]. IESG Approval is REQUIRED for a Y->N transition. 11.1. Changes for this RFC IANA [shall update/has updated] the TLS registries to reference this document. IANA [shall rename/has renamed] the "extended_master_secret" value in the TLS ExtensionType Values registry to "extended_main_secret". IANA [shall create/has created] a value for the "general_error" alert in the TLS Alerts Registry with the value given in Section 6. Rescorla Expires 27 September 2023 [Page 103] Internet-Draft TLS March 2023 12. References 12.1. Normative References [DH76] Diffie, W., Hellman, M., and Institute of Electrical and Electronics Engineers (IEEE), "New directions in cryptography", IEEE Transactions on Information Theory, vol. 22, no. 6, pp. 644-654, DOI 10.1109/tit.1976.1055638, November 1976, <http://dx.doi.org/10.1109/tit.1976.1055638>. [GCM] Dworkin, M., "Recommendation for Block Cipher Modes of Operation: Galois/Counter Mode (GCM) and GMAC", NIST Special Publication 800-38D, November 2007. [IEEE1363] IEEE, "IEEE Standard Specifications for Public-Key Cryptography", DOI 10.1109/ieeestd.2000.92292, 23 September 2008, <http://dx.doi.org/10.1109/ieeestd.2000.92292>. [RFC2104] Krawczyk, H., Bellare, M., and R. Canetti, "HMAC: Keyed- Hashing for Message Authentication", RFC 2104, DOI 10.17487/RFC2104, February 1997, <https://www.rfc-editor.org/info/rfc2104>. [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>. [RFC5116] McGrew, D., "An Interface and Algorithms for Authenticated Encryption", RFC 5116, DOI 10.17487/RFC5116, January 2008, <https://www.rfc-editor.org/info/rfc5116>. [RFC5280] Cooper, D., Santesson, S., Farrell, S., Boeyen, S., Housley, R., and W. Polk, "Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile", RFC 5280, DOI 10.17487/RFC5280, May 2008, <https://www.rfc-editor.org/info/rfc5280>. [RFC5705] Rescorla, E., "Keying Material Exporters for Transport Layer Security (TLS)", RFC 5705, DOI 10.17487/RFC5705, March 2010, <https://www.rfc-editor.org/info/rfc5705>. [RFC5756] Turner, S., Brown, D., Yiu, K., Housley, R., and T. Polk, "Updates for RSAES-OAEP and RSASSA-PSS Algorithm Parameters", RFC 5756, DOI 10.17487/RFC5756, January 2010, <https://www.rfc-editor.org/info/rfc5756>. Rescorla Expires 27 September 2023 [Page 104] Internet-Draft TLS March 2023 [RFC5869] Krawczyk, H. and P. Eronen, "HMAC-based Extract-and-Expand Key Derivation Function (HKDF)", RFC 5869, DOI 10.17487/RFC5869, May 2010, <https://www.rfc-editor.org/info/rfc5869>. [RFC6066] Eastlake 3rd, D., "Transport Layer Security (TLS) Extensions: Extension Definitions", RFC 6066, DOI 10.17487/RFC6066, January 2011, <https://www.rfc-editor.org/info/rfc6066>. [RFC6655] McGrew, D. and D. Bailey, "AES-CCM Cipher Suites for Transport Layer Security (TLS)", RFC 6655, DOI 10.17487/RFC6655, July 2012, <https://www.rfc-editor.org/info/rfc6655>. [RFC6960] Santesson, S., Myers, M., Ankney, R., Malpani, A., Galperin, S., and C. Adams, "X.509 Internet Public Key Infrastructure Online Certificate Status Protocol - OCSP", RFC 6960, DOI 10.17487/RFC6960, June 2013, <https://www.rfc-editor.org/info/rfc6960>. [RFC6961] Pettersen, Y., "The Transport Layer Security (TLS) Multiple Certificate Status Request Extension", RFC 6961, DOI 10.17487/RFC6961, June 2013, <https://www.rfc-editor.org/info/rfc6961>. [RFC6962] Laurie, B., Langley, A., and E. Kasper, "Certificate Transparency", RFC 6962, DOI 10.17487/RFC6962, June 2013, <https://www.rfc-editor.org/info/rfc6962>. [RFC6979] Pornin, T., "Deterministic Usage of the Digital Signature Algorithm (DSA) and Elliptic Curve Digital Signature Algorithm (ECDSA)", RFC 6979, DOI 10.17487/RFC6979, August 2013, <https://www.rfc-editor.org/info/rfc6979>. [RFC7301] Friedl, S., Popov, A., Langley, A., and E. Stephan, "Transport Layer Security (TLS) Application-Layer Protocol Negotiation Extension", RFC 7301, DOI 10.17487/RFC7301, July 2014, <https://www.rfc-editor.org/info/rfc7301>. [RFC7507] Moeller, B. and A. Langley, "TLS Fallback Signaling Cipher Suite Value (SCSV) for Preventing Protocol Downgrade Attacks", RFC 7507, DOI 10.17487/RFC7507, April 2015, <https://www.rfc-editor.org/info/rfc7507>. Rescorla Expires 27 September 2023 [Page 105] Internet-Draft TLS March 2023 [RFC7627] Bhargavan, K., Ed., Delignat-Lavaud, A., Pironti, A., Langley, A., and M. Ray, "Transport Layer Security (TLS) Session Hash and Extended Master Secret Extension", RFC 7627, DOI 10.17487/RFC7627, September 2015, <https://www.rfc-editor.org/info/rfc7627>. [RFC7748] Langley, A., Hamburg, M., and S. Turner, "Elliptic Curves for Security", RFC 7748, DOI 10.17487/RFC7748, January 2016, <https://www.rfc-editor.org/info/rfc7748>. [RFC7919] Gillmor, D., "Negotiated Finite Field Diffie-Hellman Ephemeral Parameters for Transport Layer Security (TLS)", RFC 7919, DOI 10.17487/RFC7919, August 2016, <https://www.rfc-editor.org/info/rfc7919>. [RFC8017] Moriarty, K., Ed., Kaliski, B., Jonsson, J., and A. Rusch, "PKCS #1: RSA Cryptography Specifications Version 2.2", RFC 8017, DOI 10.17487/RFC8017, November 2016, <https://www.rfc-editor.org/info/rfc8017>. [RFC8032] Josefsson, S. and I. Liusvaara, "Edwards-Curve Digital Signature Algorithm (EdDSA)", RFC 8032, DOI 10.17487/RFC8032, January 2017, <https://www.rfc-editor.org/info/rfc8032>. [RFC8126] Cotton, M., Leiba, B., and T. Narten, "Guidelines for Writing an IANA Considerations Section in RFCs", BCP 26, RFC 8126, DOI 10.17487/RFC8126, June 2017, <https://www.rfc-editor.org/info/rfc8126>. [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, May 2017, <https://www.rfc-editor.org/info/rfc8174>. [RFC8439] Nir, Y. and A. Langley, "ChaCha20 and Poly1305 for IETF Protocols", RFC 8439, DOI 10.17487/RFC8439, June 2018, <https://www.rfc-editor.org/info/rfc8439>. [RFC8996] Moriarty, K. and S. Farrell, "Deprecating TLS 1.0 and TLS 1.1", BCP 195, RFC 8996, DOI 10.17487/RFC8996, March 2021, <https://www.rfc-editor.org/info/rfc8996>. [SHS] Dang, Q. H. and National Institute of Standards and Technology, "Secure Hash Standard", DOI 10.6028/nist.fips.180-4, July 2015, <http://dx.doi.org/10.6028/nist.fips.180-4>. Rescorla Expires 27 September 2023 [Page 106] Internet-Draft TLS March 2023 [X690] ITU-T, "Information technology - ASN.1 encoding Rules: Specification of Basic Encoding Rules (BER), Canonical Encoding Rules (CER) and Distinguished Encoding Rules (DER)", ISO/IEC 8824-1:2021 , February 2021. 12.2. Informative References [AEAD-LIMITS] Luykx, A. and K. Paterson, "Limits on Authenticated Encryption Use in TLS", August 2017, <http://www.isg.rhul.ac.uk/~kp/TLS-AEbounds.pdf>. [BBFGKZ16] Bhargavan, K., Brzuska, C., Fournet, C., Green, M., Kohlweiss, M., Zanella-Beguelin, S., and IEEE, "Downgrade Resilience in Key-Exchange Protocols", 2016 IEEE Symposium on Security and Privacy (SP), DOI 10.1109/sp.2016.37, May 2016, <http://dx.doi.org/10.1109/sp.2016.37>. [BBK17] Bhargavan, K., Blanchet, B., Kobeissi, N., and IEEE, "Verified Models and Reference Implementations for the TLS 1.3 Standard Candidate", 2017 IEEE Symposium on Security and Privacy (SP), DOI 10.1109/sp.2017.26, May 2017, <http://dx.doi.org/10.1109/sp.2017.26>. [BDFKPPRSZZ16] Bhargavan, K., Delignat-Lavaud, A., Fournet, C., Kohlweiss, M., Pan, J., Protzenko, J., Rastogi, A., Swamy, N., Zanella-Beguelin, S., and J. Zinzindohoue, "Implementing and Proving the TLS 1.3 Record Layer", Proceedings of IEEE Symposium on Security and Privacy (San Jose) 2017 , December 2016, <https://eprint.iacr.org/2016/1178>. [Ben17a] Benjamin, D., "Presentation before the TLS WG at IETF 100", 2017, <https://datatracker.ietf.org/meeting/100/materials/ slides-100-tls-sessa-tls13/>. [Ben17b] Benjamin, D., "Additional TLS 1.3 results from Chrome", 2017, <https://www.ietf.org/mail-archive/web/tls/current/ msg25168.html>. [Blei98] Bleichenbacher, D., "Chosen Ciphertext Attacks against Protocols Based on RSA Encryption Standard PKCS #1", Proceedings of CRYPTO '98 , 1998. Rescorla Expires 27 September 2023 [Page 107] Internet-Draft TLS March 2023 [BMMRT15] Badertscher, C., Matt, C., Maurer, U., Rogaway, P., and B. Tackmann, "Augmented Secure Channels and the Goal of the TLS 1.3 Record Layer", ProvSec 2015 , September 2015, <https://eprint.iacr.org/2015/394>. [BT16] Bellare, M. and B. Tackmann, "The Multi-User Security of Authenticated Encryption: AES-GCM in TLS 1.3", Proceedings of CRYPTO 2016 , July 2016, <https://eprint.iacr.org/2016/564>. [CCG16] Cohn-Gordon, K., Cremers, C., Garratt, L., and IEEE, "On Post-compromise Security", 2016 IEEE 29th Computer Security Foundations Symposium (CSF), DOI 10.1109/csf.2016.19, June 2016, <http://dx.doi.org/10.1109/csf.2016.19>. [CHECKOWAY] Checkoway, S., Maskiewicz, J., Garman, C., Fried, J., Cohney, S., Green, M., Heninger, N., Weinmann, R., Rescorla, E., Shacham, H., and ACM, "A Systematic Analysis of the Juniper Dual EC Incident", Proceedings of the 2016 ACM SIGSAC Conference on Computer and Communications Security, DOI 10.1145/2976749.2978395, 24 October 2016, <http://dx.doi.org/10.1145/2976749.2978395>. [CHHSV17] Cremers, C., Horvat, M., Hoyland, J., van der Merwe, T., and S. Scott, "Awkward Handshake: Possible mismatch of client/server view on client authentication in post- handshake mode in Revision 18", message to the TLS mailing list , February 2017, <https://www.ietf.org/mail- archive/web/tls/current/msg22382.html>. [CHSV16] Cremers, C., Horvat, M., Scott, S., Merwe, T. V. D., and IEEE, "Automated Analysis and Verification of TLS 1.3: 0-RTT, Resumption and Delayed Authentication", 2016 IEEE Symposium on Security and Privacy (SP), DOI 10.1109/sp.2016.35, May 2016, <http://dx.doi.org/10.1109/sp.2016.35>. [CK01] Canetti, R., Krawczyk, H., and Springer Berlin Heidelberg, "Analysis of Key-Exchange Protocols and Their Use for Building Secure Channels", Lecture Notes in Computer Science, pp. 453-474, DOI 10.1007/3-540-44987-6_28, 2001, <http://dx.doi.org/10.1007/3-540-44987-6_28>. [CLINIC] Miller, B., Huang, L., Joseph, A. D., Tygar, J. D., and Springer International Publishing, "I Know Why You Went to the Clinic: Risks and Realization of HTTPS Traffic Rescorla Expires 27 September 2023 [Page 108] Internet-Draft TLS March 2023 Analysis", Privacy Enhancing Technologies, pp. 143-163, DOI 10.1007/978-3-319-08506-7_8, 2014, <http://dx.doi.org/10.1007/978-3-319-08506-7_8>. [DFGS15] Dowling, B., Fischlin, M., Guenther, F., and D. Stebila, "A Cryptographic Analysis of the TLS 1.3 draft-10 Full and Pre-shared Key Handshake Protocol", Proceedings of ACM CCS 2015 , October 2016, <https://eprint.iacr.org/2015/914>. [DFGS16] Dowling, B., Fischlin, M., Guenther, F., and D. Stebila, "A Cryptographic Analysis of the TLS 1.3 draft-10 Full and Pre-shared Key Handshake Protocol", TRON 2016 , February 2016, <https://eprint.iacr.org/2016/081>. [DOW92] Diffie, W., Oorschot, P. C. V., Wiener, M. J., and Springer Science and Business Media LLC, "Authentication and authenticated key exchanges", Designs, Codes and Cryptography, vol. 2, no. 2, pp. 107-125, DOI 10.1007/bf00124891, June 1992, <http://dx.doi.org/10.1007/bf00124891>. [DSA-1571-1] The Debian Project, "openssl -- predictable random number generator", May 2008, <https://www.debian.org/security/2008/dsa-1571>. [DSS] Moody, D. and National Institute of Standards and Technology, "Digital Signature Standard (DSS)", DOI 10.6028/nist.fips.186-5, 2023, <http://dx.doi.org/10.6028/nist.fips.186-5>. [ECDP] Moody, D. and National Institute of Standards and Technology, "Recommendations for Discrete Logarithm-based Cryptography:", DOI 10.6028/nist.sp.800-186, 2022, <http://dx.doi.org/10.6028/nist.sp.800-186>. [FETCH] WHATWG, "Fetch Standard", March 2023, <https://fetch.spec.whatwg.org/>. [FG17] Fischlin, M. and F. Guenther, "Replay Attacks on Zero Round-Trip Time: The Case of the TLS 1.3 Handshake Candidates", Proceedings of Euro S&P 2017 , 2017, <https://eprint.iacr.org/2017/082>. Rescorla Expires 27 September 2023 [Page 109] Internet-Draft TLS March 2023 [FGSW16] Fischlin, M., Guenther, F., Schmidt, B., and B. Warinschi, "Key Confirmation in Key Exchange: A Formal Treatment and Implications for TLS 1.3", Proceedings of IEEE Symposium on Security and Privacy (Oakland) 2016 , 2016, <http://ieeexplore.ieee.org/document/7546517/>. [FW15] Weimer, F., "Factoring RSA Keys With TLS Perfect Forward Secrecy", September 2015. [HCJC16] Husák, M., Čermák, M., Jirsík, T., Čeleda, P., and Springer Science and Business Media LLC, "HTTPS traffic analysis and client identification using passive SSL/TLS fingerprinting", EURASIP Journal on Information Security, vol. 2016, no. 1, DOI 10.1186/s13635-016-0030-7, 26 February 2016, <http://dx.doi.org/10.1186/s13635-016-0030-7>. [HGFS15] Hlauschek, C., Gruber, M., Fankhauser, F., and C. Schanes, "Prying Open Pandora's Box: KCI Attacks against TLS", Proceedings of USENIX Workshop on Offensive Technologies , 2015. [I-D.ietf-tls-esni] Rescorla, E., Oku, K., Sullivan, N., and C. A. Wood, "TLS Encrypted Client Hello", Work in Progress, Internet-Draft, draft-ietf-tls-esni-15, 3 October 2022, <https://datatracker.ietf.org/doc/html/draft-ietf-tls- esni-15>. [I-D.ietf-uta-rfc6125bis] Saint-Andre, P. and R. Salz, "Service Identity in TLS", Work in Progress, Internet-Draft, draft-ietf-uta- rfc6125bis-12, 13 March 2023, <https://datatracker.ietf.org/doc/html/draft-ietf-uta- rfc6125bis-12>. [JSS15] Jager, T., Schwenk, J., Somorovsky, J., and ACM, "On the Security of TLS 1.3 and QUIC Against Weaknesses in PKCS#1 v1.5 Encryption", Proceedings of the 22nd ACM SIGSAC Conference on Computer and Communications Security, DOI 10.1145/2810103.2813657, 12 October 2015, <http://dx.doi.org/10.1145/2810103.2813657>. Rescorla Expires 27 September 2023 [Page 110] Internet-Draft TLS March 2023 [KEYAGREEMENT] Barker, E., Chen, L., Roginsky, A., Smid, M., and National Institute of Standards and Technology, "Recommendation for Pair-Wise Key Establishment Schemes Using Discrete Logarithm Cryptography", DOI 10.6028/nist.sp.800-56ar2, May 2013, <http://dx.doi.org/10.6028/nist.sp.800-56ar2>. [Kraw10] Krawczyk, H., "Cryptographic Extraction and Key Derivation: The HKDF Scheme", Proceedings of CRYPTO 2010 , 2010, <https://eprint.iacr.org/2010/264>. [Kraw16] Krawczyk, H., "A Unilateral-to-Mutual Authentication Compiler for Key Exchange (with Applications to Client Authentication in TLS 1.3", Proceedings of ACM CCS 2016 , October 2016, <https://eprint.iacr.org/2016/711>. [KW16] Krawczyk, H. and H. Wee, "The OPTLS Protocol and TLS 1.3", Proceedings of Euro S&P 2016 , 2016, <https://eprint.iacr.org/2015/978>. [LXZFH16] Li, X., Xu, J., Zhang, Z., Feng, D., Hu, H., and IEEE, "Multiple Handshakes Security of TLS 1.3 Candidates", 2016 IEEE Symposium on Security and Privacy (SP), DOI 10.1109/sp.2016.36, May 2016, <http://dx.doi.org/10.1109/sp.2016.36>. [Mac17] MacCarthaigh, C., "Security Review of TLS1.3 0-RTT", March 2017, <https://github.com/tlswg/tls13-spec/issues/1001>. [PS18] Patton, C. and T. Shrimpton, "Partially specified channels: The TLS 1.3 record layer without elision", 2018, <https://eprint.iacr.org/2018/634>. [PSK-FINISHED] Cremers, C., Horvat, M., van der Merwe, T., and S. Scott, "Revision 10: possible attack if client authentication is allowed during PSK", message to the TLS mailing list, , 2015, <https://www.ietf.org/mail-archive/web/tls/current/ msg18215.html>. [REKEY] Abdalla, M., Bellare, M., and Springer Berlin Heidelberg, "Increasing the Lifetime of a Key: A Comparative Analysis of the Security of Re-keying Techniques", Advances in Cryptology — ASIACRYPT 2000, pp. 546-559, DOI 10.1007/3-540-44448-3_42, 2000, <http://dx.doi.org/10.1007/3-540-44448-3_42>. Rescorla Expires 27 September 2023 [Page 111] Internet-Draft TLS March 2023 [Res17a] Rescorla, E., "Preliminary data on Firefox TLS 1.3 Middlebox experiment", message to the TLS mailing list , 2017, <https://www.ietf.org/mail-archive/web/tls/current/ msg25091.html>. [Res17b] Rescorla, E., "More compatibility measurement results", message to the TLS mailing list , December 2017, <https://www.ietf.org/mail-archive/web/tls/current/ msg25179.html>. [RFC2246] Dierks, T. and C. Allen, "The TLS Protocol Version 1.0", RFC 2246, DOI 10.17487/RFC2246, January 1999, <https://www.rfc-editor.org/info/rfc2246>. [RFC3552] Rescorla, E. and B. Korver, "Guidelines for Writing RFC Text on Security Considerations", BCP 72, RFC 3552, DOI 10.17487/RFC3552, July 2003, <https://www.rfc-editor.org/info/rfc3552>. [RFC4086] Eastlake 3rd, D., Schiller, J., and S. Crocker, "Randomness Requirements for Security", BCP 106, RFC 4086, DOI 10.17487/RFC4086, June 2005, <https://www.rfc-editor.org/info/rfc4086>. [RFC4346] Dierks, T. and E. Rescorla, "The Transport Layer Security (TLS) Protocol Version 1.1", RFC 4346, DOI 10.17487/RFC4346, April 2006, <https://www.rfc-editor.org/info/rfc4346>. [RFC4366] Blake-Wilson, S., Nystrom, M., Hopwood, D., Mikkelsen, J., and T. Wright, "Transport Layer Security (TLS) Extensions", RFC 4366, DOI 10.17487/RFC4366, April 2006, <https://www.rfc-editor.org/info/rfc4366>. [RFC4492] Blake-Wilson, S., Bolyard, N., Gupta, V., Hawk, C., and B. Moeller, "Elliptic Curve Cryptography (ECC) Cipher Suites for Transport Layer Security (TLS)", RFC 4492, DOI 10.17487/RFC4492, May 2006, <https://www.rfc-editor.org/info/rfc4492>. [RFC5077] Salowey, J., Zhou, H., Eronen, P., and H. Tschofenig, "Transport Layer Security (TLS) Session Resumption without Server-Side State", RFC 5077, DOI 10.17487/RFC5077, January 2008, <https://www.rfc-editor.org/info/rfc5077>. Rescorla Expires 27 September 2023 [Page 112] Internet-Draft TLS March 2023 [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>. [RFC5764] McGrew, D. and E. Rescorla, "Datagram Transport Layer Security (DTLS) Extension to Establish Keys for the Secure Real-time Transport Protocol (SRTP)", RFC 5764, DOI 10.17487/RFC5764, May 2010, <https://www.rfc-editor.org/info/rfc5764>. [RFC5929] Altman, J., Williams, N., and L. Zhu, "Channel Bindings for TLS", RFC 5929, DOI 10.17487/RFC5929, July 2010, <https://www.rfc-editor.org/info/rfc5929>. [RFC6091] Mavrogiannopoulos, N. and D. Gillmor, "Using OpenPGP Keys for Transport Layer Security (TLS) Authentication", RFC 6091, DOI 10.17487/RFC6091, February 2011, <https://www.rfc-editor.org/info/rfc6091>. [RFC6101] Freier, A., Karlton, P., and P. Kocher, "The Secure Sockets Layer (SSL) Protocol Version 3.0", RFC 6101, DOI 10.17487/RFC6101, August 2011, <https://www.rfc-editor.org/info/rfc6101>. [RFC6176] Turner, S. and T. Polk, "Prohibiting Secure Sockets Layer (SSL) Version 2.0", RFC 6176, DOI 10.17487/RFC6176, March 2011, <https://www.rfc-editor.org/info/rfc6176>. [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>. [RFC6520] Seggelmann, R., Tuexen, M., and M. Williams, "Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS) Heartbeat Extension", RFC 6520, DOI 10.17487/RFC6520, February 2012, <https://www.rfc-editor.org/info/rfc6520>. [RFC7230] Fielding, R., Ed. and J. Reschke, Ed., "Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing", RFC 7230, DOI 10.17487/RFC7230, June 2014, <https://www.rfc-editor.org/info/rfc7230>. Rescorla Expires 27 September 2023 [Page 113] Internet-Draft TLS March 2023 [RFC7250] Wouters, P., Ed., Tschofenig, H., Ed., Gilmore, J., Weiler, S., and T. Kivinen, "Using Raw Public Keys in Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS)", RFC 7250, DOI 10.17487/RFC7250, June 2014, <https://www.rfc-editor.org/info/rfc7250>. [RFC7465] Popov, A., "Prohibiting RC4 Cipher Suites", RFC 7465, DOI 10.17487/RFC7465, February 2015, <https://www.rfc-editor.org/info/rfc7465>. [RFC7568] Barnes, R., Thomson, M., Pironti, A., and A. Langley, "Deprecating Secure Sockets Layer Version 3.0", RFC 7568, DOI 10.17487/RFC7568, June 2015, <https://www.rfc-editor.org/info/rfc7568>. [RFC7624] Barnes, R., Schneier, B., Jennings, C., Hardie, T., Trammell, B., Huitema, C., and D. Borkmann, "Confidentiality in the Face of Pervasive Surveillance: A Threat Model and Problem Statement", RFC 7624, DOI 10.17487/RFC7624, August 2015, <https://www.rfc-editor.org/info/rfc7624>. [RFC7685] Langley, A., "A Transport Layer Security (TLS) ClientHello Padding Extension", RFC 7685, DOI 10.17487/RFC7685, October 2015, <https://www.rfc-editor.org/info/rfc7685>. [RFC7924] Santesson, S. and H. Tschofenig, "Transport Layer Security (TLS) Cached Information Extension", RFC 7924, DOI 10.17487/RFC7924, July 2016, <https://www.rfc-editor.org/info/rfc7924>. [RFC8305] Schinazi, D. and T. Pauly, "Happy Eyeballs Version 2: Better Connectivity Using Concurrency", RFC 8305, DOI 10.17487/RFC8305, December 2017, <https://www.rfc-editor.org/info/rfc8305>. [RFC8422] Nir, Y., Josefsson, S., and M. Pegourie-Gonnard, "Elliptic Curve Cryptography (ECC) Cipher Suites for Transport Layer Security (TLS) Versions 1.2 and Earlier", RFC 8422, DOI 10.17487/RFC8422, August 2018, <https://www.rfc-editor.org/info/rfc8422>. [RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018, <https://www.rfc-editor.org/info/rfc8446>. Rescorla Expires 27 September 2023 [Page 114] Internet-Draft TLS March 2023 [RFC8447] Salowey, J. and S. Turner, "IANA Registry Updates for TLS and DTLS", RFC 8447, DOI 10.17487/RFC8447, August 2018, <https://www.rfc-editor.org/info/rfc8447>. [RFC8448] Thomson, M., "Example Handshake Traces for TLS 1.3", RFC 8448, DOI 10.17487/RFC8448, January 2019, <https://www.rfc-editor.org/info/rfc8448>. [RFC8449] Thomson, M., "Record Size Limit Extension for TLS", RFC 8449, DOI 10.17487/RFC8449, August 2018, <https://www.rfc-editor.org/info/rfc8449>. [RFC8773] Housley, R., "TLS 1.3 Extension for Certificate-Based Authentication with an External Pre-Shared Key", RFC 8773, DOI 10.17487/RFC8773, March 2020, <https://www.rfc-editor.org/info/rfc8773>. [RFC8879] Ghedini, A. and V. Vasiliev, "TLS Certificate Compression", RFC 8879, DOI 10.17487/RFC8879, December 2020, <https://www.rfc-editor.org/info/rfc8879>. [RFC8937] Cremers, C., Garratt, L., Smyshlyaev, S., Sullivan, N., and C. Wood, "Randomness Improvements for Security Protocols", RFC 8937, DOI 10.17487/RFC8937, October 2020, <https://www.rfc-editor.org/info/rfc8937>. [RSA] Rivest, R. L., Shamir, A., Adleman, L., and Association for Computing Machinery (ACM), "A method for obtaining digital signatures and public-key cryptosystems", Communications of the ACM, vol. 21, no. 2, pp. 120-126, DOI 10.1145/359340.359342, February 1978, <http://dx.doi.org/10.1145/359340.359342>. [SIGMA] Krawczyk, H. and Springer Berlin Heidelberg, "SIGMA: The ‘SIGn-and-MAc’ Approach to Authenticated Diffie-Hellman and Its Use in the IKE Protocols", Advances in Cryptology - CRYPTO 2003, pp. 400-425, DOI 10.1007/978-3-540-45146-4_24, 2003, <http://dx.doi.org/10.1007/978-3-540-45146-4_24>. [SLOTH] Bhargavan, K., Leurent, G., and Internet Society, "Transcript Collision Attacks: Breaking Authentication in TLS, IKE, and SSH", Proceedings 2016 Network and Distributed System Security Symposium, DOI 10.14722/ndss.2016.23418, 2016, <http://dx.doi.org/10.14722/ndss.2016.23418>. [SSL2] Hickman, K., "The SSL Protocol& Note: For interoperability and consistent text display, values of this attribute (a) SHOULD be normalized as recommended in "Unicode Format for Network Interchange" [RFC5198]; (b) SHOULD NOT contain DEL or any C0 or C1 control characters except for HT, CR, and LF; and (c) SHOULD only contain CR and LF characters together (not as singletons). 4.6. printer-info ( 1.3.18.0.2.4.1139 NAME 'printer-info' DESC 'Descriptive information about this Printer.' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE ) For example: 'This Printer can be used for printing color transparencies for HR presentations' 'Out of courtesy for others, please print only small (1-5 page) jobs at this Printer' 'This Printer is going away on July 1, 1997; please find a new Printer' Note: For compatibility with IPP/1.1 [RFC2911], values of this attribute SHOULD NOT exceed 127 octets in length. Note: For interoperability and consistent text display, values of this attribute (a) SHOULD be normalized as recommended in "Unicode Format for Network Interchange" [RFC5198]; (b) SHOULD NOT contain DEL or any C0 or C1 control characters except for HT, CR, and LF; and (c) SHOULD only contain CR and LF characters together (not as singletons). Fleming & McDonald Informational [Page 20] RFC 7612 LDAP Schema for Printer Services June 2015 4.7. printer-more-info ( 1.3.18.0.2.4.1134 NAME 'printer-more-info' DESC 'A URI for more information about this specific Printer.' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE ) For example, this could be an HTTP URI referencing an HTML page accessible to a Web Browser. The information obtained from this URI is intended for end user consumption. See [STD66] for details of URI syntax. Note: For compatibility with IPP/1.1 [RFC2911], values of this attribute SHOULD NOT exceed 1023 octets in length. Note: LDAP application clients SHOULD NOT attempt to use malformed URI values read from this attribute. LDAP administrative clients SHOULD NOT write malformed URI values into this attribute. Note: See Sections 1.4.1, 1.4.2, and 1.4.3 for rationale for design choices. 4.8. printer-make-and-model ( 1.3.18.0.2.4.1138 NAME 'printer-make-and-model' DESC 'Make and model of this Printer.' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE ) Note: For compatibility with IPP/1.1 [RFC2911], values of this attribute SHOULD NOT exceed 127 octets in length. Note: The Printer manufacturer MAY initially populate this attribute. Fleming & McDonald Informational [Page 21] RFC 7612 LDAP Schema for Printer Services June 2015 Note: For interoperability and consistent text display, values of this attribute (a) SHOULD be normalized as recommended in "Unicode Format for Network Interchange" [RFC5198]; (b) SHOULD NOT contain DEL or any C0 or C1 control characters except for HT, CR, and LF; and (c) SHOULD only contain CR and LF characters together (not as singletons). 4.9. printer-ipp-versions-supported ( 1.3.18.0.2.4.1133 NAME 'printer-ipp-versions-supported' DESC 'Comma-delimited list of IPP versions supported by this Printer.' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) For example: '1.1,2.0' Note: Length overflow in values of this attribute MUST be handled by multiple instances of this attribute, i.e., individual comma-delimited list members MUST NOT be truncated. The IPP protocol version(s) MUST include major and minor versions, i.e., the exact version numbers for which this Printer implementation meets the IPP version-specific conformance requirements as registered in the IANA IPP registry [IANAIPP]. IANA-registered versions of IPP currently are: '1.0' (IPP/1.0 [RFC2566], OBSOLETE) '1.1' (IPP/1.1 [RFC2911]) '2.0' (IPP/2.0 [PWG5100.12]) '2.1' (IPP/2.1 [PWG5100.12]) '2.2' (IPP/2.2 [PWG5100.12]) Fleming & McDonald Informational [Page 22] RFC 7612 LDAP Schema for Printer Services June 2015 4.10. printer-multiple-document-jobs-supported ( 1.3.18.0.2.4.1132 NAME 'printer-multiple-document-jobs-supported' DESC 'Indicates whether or not this Printer supports more than one document per job.' EQUALITY booleanMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 SINGLE-VALUE ) 4.11. printer-charset-configured ( 1.3.18.0.2.4.1109 NAME 'printer-charset-configured' DESC 'The configured charset for IPP protocol values of error and status messages generated by this Printer.' EQUALITY caseIgnoreMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE ) Also, a possible charset for IPP protocol string attributes set by operator, system administrator, or manufacturer. For example: 'utf-8' (ISO 10646/Unicode in UTF-8 transform [STD63]) 'iso-8859-1' (ISO Latin1) Values of charset tags SHOULD be defined in the IANA registry of Character Sets [IANACHAR] (see also [BCP19]), and the '(preferred MIME name)' SHOULD be used as the charset tag in this attribute. Note: For compatibility with IPP/1.1 [RFC2911], values of this attribute SHOULD NOT exceed 63 octets in length. Note: For compatibility with IPP/1.1 [RFC2911], charset tags in this attribute SHOULD be lowercase normalized. Fleming & McDonald Informational [Page 23] RFC 7612 LDAP Schema for Printer Services June 2015 4.12. printer-charset-supported ( 1.3.18.0.2.4.1131 NAME 'printer-charset-supported' DESC 'One of the charsets supported for IPP protocol values of IPP string attributes that correspond to attributes of syntax DirectoryString (UTF-8) for this directory entry.' EQUALITY caseIgnoreMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) For example: 'utf-8' (ISO 10646/Unicode in UTF-8 transform [STD63]) 'iso-8859-1' (ISO Latin1) Note: Multiple values for this attribute are represented as multiple instances of this attribute. Values of charset tags SHOULD be defined in the IANA registry of Character Sets [IANACHAR] (see also [BCP19]), and the '(preferred MIME name)' SHOULD be used as the charset tag in this attribute. Note: For compatibility with IPP/1.1 [RFC2911], values of this attribute SHOULD NOT exceed 63 octets in length. Note: For compatibility with IPP/1.1 [RFC2911], charset tags in this attribute SHOULD be lowercase normalized. 4.13. printer-generated-natural-language-supported ( 1.3.18.0.2.4.1137 NAME 'printer-generated-natural-language-supported' DESC 'One of the natural languages supported for LDAP attributes of syntax DirectoryString (UTF-8) in this directory entry.' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) Values of language tags SHOULD conform to "Tags for Identifying Languages" [BCP47]. For example: 'en-us' (English as spoken in the US) 'fr-ca' (French as spoken in Canada) Note: Multiple values for this attribute are represented as multiple instances of this attribute. Fleming & McDonald Informational [Page 24] RFC 7612 LDAP Schema for Printer Services June 2015 Note: For compatibility with IPP/1.1 [RFC2911], values of this attribute SHOULD NOT exceed 63 octets in length. Note: For compatibility with IPP/1.1 [RFC2911], language tags in this attribute SHOULD be lowercase normalized. 4.14. printer-document-format-supported ( 1.3.18.0.2.4.1130 NAME 'printer-document-format-supported' DESC 'One of the source document formats that can be interpreted and printed by this Printer.' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) Values of document formats SHOULD be MIME media types defined in the IANA registry of MIME Media Types [IANAMIME] (see also [BCP13]). For example: 'application/postscript' (Adobe PostScript) 'text/plain' (plain text) Note: Multiple values for this attribute are represented as multiple instances of this attribute. Note: For compatibility with IPP/1.1 [RFC2911], values of this attribute SHOULD NOT exceed 255 octets in length. 4.15. printer-color-supported ( 1.3.18.0.2.4.1129 NAME ", 9 February 1995. Rescorla Expires 27 September 2023 [Page 115] Internet-Draft TLS March 2023 [TIMING] Boneh, D. and D. Brumley, "Remote Timing Attacks Are Practical", USENIX Security Symposium, 2003. [X501] ITU-T, "Information Technology - Open Systems Interconnection - The Directory: Models", ISO/IEC 9594-2:2020 , October 2019. Appendix A. State Machine This appendix provides a summary of the legal state transitions for the client and server handshakes. State names (in all capitals, e.g., START) have no formal meaning but are provided for ease of comprehension. Actions which are taken only in certain circumstances are indicated in []. The notation "K_{send,recv} = foo" means "set the send/recv key to the given key". A.1. Client START <----+ Send ClientHello | | Recv HelloRetryRequest [K_send = early data] | | v | / WAIT_SH ----+ | | Recv ServerHello | | K_recv = handshake Can | V send | WAIT_EE early | | Recv EncryptedExtensions data | +--------+--------+ | Using | | Using certificate | PSK | v | | WAIT_CERT_CR | | Recv | | Recv CertificateRequest | | Certificate | v | | | WAIT_CERT | | | | Recv Certificate | | v v | | WAIT_CV | | | Recv CertificateVerify | +> WAIT_FINISHED <+ | | Recv Finished \ | [Send EndOfEarlyData] | K_send = handshake | [Send Certificate [+ CertificateVerify]] Can send | Send Finished app data --> | K_send = K_recv = application after here v CONNECTED Rescorla Expires 27 September 2023 [Page 116] Internet-Draft TLS March 2023 Note that with the transitions as shown above, clients may send alerts that derive from post-ServerHello messages in the clear or with the early data keys. If clients need to send such alerts, they SHOULD first rekey to the handshake keys if possible. A.2. Server START <-----+ Recv ClientHello | | Send HelloRetryRequest v | RECVD_CH ----+ | Select parameters v NEGOTIATED | Send ServerHello | K_send = handshake | Send EncryptedExtensions | [Send CertificateRequest] Can send | [Send Certificate + CertificateVerify] app data | Send Finished after --> | K_send = application here +--------+--------+ No 0-RTT | | 0-RTT | | K_recv = handshake | | K_recv = early data [Skip decrypt errors] | +------> WAIT_EOED -+ | | Recv | | Recv EndOfEarlyData | | early data | | K_recv = handshake | +------------+ | | | +> WAIT_FLIGHT2 <--------+ | +--------+--------+ No auth | | Cert-based client auth | | | v | WAIT_CERT | Recv | | Recv Certificate | empty | v | Certificate | WAIT_CV | | | Recv | v | CertificateVerify +-> WAIT_FINISHED <---+ | Recv Finished | K_recv = application v CONNECTED Rescorla Expires 27 September 2023 [Page 117] Internet-Draft TLS March 2023 Appendix B. Protocol Data Structures and Constant Values This appendix provides the normative protocol types and the definitions for constants. Values listed as "_RESERVED" were used in previous versions of TLS and are listed here for completeness. TLS 1.3 implementations MUST NOT send them but might receive them from older TLS implementations. B.1. Record Layer enum { invalid(0), change_cipher_spec(20), alert(21), handshake(22), application_data(23), (255) } ContentType; struct { ContentType type; ProtocolVersion legacy_record_version; uint16 length; opaque fragment[TLSPlaintext.length]; } TLSPlaintext; struct { opaque content[TLSPlaintext.length]; ContentType type; uint8 zeros[length_of_padding]; } TLSInnerPlaintext; struct { ContentType opaque_type = application_data; /* 23 */ ProtocolVersion legacy_record_version = 0x0303; /* TLS v1.2 */ uint16 length; opaque encrypted_record[TLSCiphertext.length]; } TLSCiphertext; B.2. Alert Messages Rescorla Expires 27 September 2023 [Page 118] Internet-Draft TLS March 2023 enum { warning(1), fatal(2), (255) } AlertLevel; enum { close_notify(0), unexpected_message(10), bad_record_mac(20), decryption_failed_RESERVED(21), record_overflow(22), decompression_failure_RESERVED(30), handshake_failure(40), no_certificate_RESERVED(41), bad_certificate(42), unsupported_certificate(43), certificate_revoked(44), certificate_expired(45), certificate_unknown(46), illegal_parameter(47), unknown_ca(48), access_denied(49), decode_error(50), decrypt_error(51), export_restriction_RESERVED(60), protocol_version(70), insufficient_security(71), internal_error(80), inappropriate_fallback(86), user_canceled(90), no_renegotiation_RESERVED(100), missing_extension(109), unsupported_extension(110), certificate_unobtainable_RESERVED(111), unrecognized_name(112), bad_certificate_status_response(113), bad_certificate_hash_value_RESERVED(114), unknown_psk_identity(115), certificate_required(116), general_error(117), no_application_protocol(120), (255) } AlertDescription; struct { AlertLevel level; AlertDescription description; } Alert; B.3. Handshake Protocol Rescorla Expires 27 September 2023 [Page 119] Internet-Draft TLS March 2023 enum { hello_request_RESERVED(0), client_hello(1), server_hello(2), hello_verify_request_RESERVED(3), new_session_ticket(4), end_of_early_data(5), hello_retry_request_RESERVED(6), encrypted_extensions(8), certificate(11), server_key_exchange_RESERVED(12), certificate_request(13), server_hello_done_RESERVED(14), certificate_verify(15), client_key_exchange_RESERVED(16), finished(20), certificate_url_RESERVED(21), certificate_status_RESERVED(22), supplemental_data_RESERVED(23), key_update(24), message_hash(254), (255) } HandshakeType; struct { HandshakeType msg_type; /* handshake type */ uint24 length; /* remaining bytes in message */ select (Handshake.msg_type) { case client_hello: ClientHello; case server_hello: ServerHello; case end_of_early_data: EndOfEarlyData; case encrypted_extensions: EncryptedExtensions; case certificate_request: CertificateRequest; case certificate: Certificate; case certificate_verify: CertificateVerify; case finished: Finished; case new_session_ticket: NewSessionTicket; case key_update: KeyUpdate; }; } Handshake; B.3.1. Key Exchange Messages Rescorla Expires 27 September 2023 [Page 120] Internet-Draft TLS March 2023 uint16 ProtocolVersion; opaque Random[32]; uint8 CipherSuite[2]; /* Cryptographic suite selector */ struct { ProtocolVersion legacy_version = 0x0303; /* TLS v1.2 */ Random random; opaque legacy_session_id<0..32>; CipherSuite cipher_suites<2..2^16-2>; opaque legacy_compression_methods<1..2^8-1>; Extension extensions<8..2^16-1>; } ClientHello; struct { ProtocolVersion legacy_version = 0x0303; /* TLS v1.2 */ Random random; opaque legacy_session_id_echo<0..32>; CipherSuite cipher_suite; uint8 legacy_compression_method = 0; Extension extensions<6..2^16-1>; } ServerHello; struct { ExtensionType extension_type; opaque extension_data<0..2^16-1>; } Extension; enum { server_name(0), /* RFC 6066 */ max_fragment_length(1), /* RFC 6066 */ status_request(5), /* RFC 6066 */ supported_groups(10), /* RFC 8422, 7919 */ signature_algorithms(13), /* RFC 8446 */ use_srtp(14), /* RFC 5764 */ heartbeat(15), /* RFC 6520 */ application_layer_protocol_negotiation(16), /* RFC 7301 */ signed_certificate_timestamp(18), /* RFC 6962 */ client_certificate_type(19), /* RFC 7250 */ server_certificate_type(20), /* RFC 7250 */ padding(21), /* RFC 7685 */ pre_shared_key(41), /* RFC 8446 */ early_data(42), /* RFC 8446 */ supported_versions(43), /* RFC 8446 */ cookie(44), /* RFC 8446 */ psk_key_exchange_modes(45), /* RFC 8446 */ certificate_authorities(47), /* RFC 8446 */ oid_filters(48), /* RFC 8446 */ Rescorla Expires 27 September 2023 [Page 121] Internet-Draft TLS March 2023 post_handshake_auth(49), /* RFC 8446 */ signature_algorithms_cert(50), /* RFC 8446 */ key_share(51), /* RFC 8446 */ (65535) } ExtensionType; struct { NamedGroup group; opaque key_exchange<1..2^16-1>; } KeyShareEntry; struct { KeyShareEntry client_shares<0..2^16-1>; } KeyShareClientHello; struct { NamedGroup selected_group; } KeyShareHelloRetryRequest; struct { KeyShareEntry server_share; } KeyShareServerHello; struct { uint8 legacy_form = 4; opaque X[coordinate_length]; opaque Y[coordinate_length]; } UncompressedPointRepresentation; enum { psk_ke(0), psk_dhe_ke(1), (255) } PskKeyExchangeMode; struct { PskKeyExchangeMode ke_modes<1..255>; } PskKeyExchangeModes; struct {} Empty; struct { select (Handshake.msg_type) { case new_session_ticket: uint32 max_early_data_size; case client_hello: Empty; case encrypted_extensions: Empty; }; } EarlyDataIndication; struct { opaque identity<1..2^16-1>; uint32 obfuscated_ticket_age; Rescorla Expires 27 September 2023 [Page 122] Internet-Draft TLS March 2023 } PskIdentity; opaque PskBinderEntry<32..255>; struct { PskIdentity identities<7..2^16-1>; PskBinderEntry binders<33..2^16-1>; } OfferedPsks; struct { select (Handshake.msg_type) { case client_hello: OfferedPsks; case server_hello: uint16 selected_identity; }; } PreSharedKeyExtension; B.3.1.1. Version Extension struct { select (Handshake.msg_type) { case client_hello: ProtocolVersion versions<2..254>; case server_hello: /* and HelloRetryRequest */ ProtocolVersion selected_version; }; } SupportedVersions; B.3.1.2. Cookie Extension struct { opaque cookie<1..2^16-1>; } Cookie; B.3.1.3. Signature Algorithm Extension Rescorla Expires 27 September 2023 [Page 123] Internet-Draft TLS March 2023 enum { /* RSASSA-PKCS1-v1_5 algorithms */ rsa_pkcs1_sha256(0x0401), rsa_pkcs1_sha384(0x0501), rsa_pkcs1_sha512(0x0601), /* ECDSA algorithms */ ecdsa_secp256r1_sha256(0x0403), ecdsa_secp384r1_sha384(0x0503), ecdsa_secp521r1_sha512(0x0603), /* RSASSA-PSS algorithms with public key OID rsaEncryption */ rsa_pss_rsae_sha256(0x0804), rsa_pss_rsae_sha384(0x0805), rsa_pss_rsae_sha512(0x0806), /* EdDSA algorithms */ ed25519(0x0807), ed448(0x0808), /* RSASSA-PSS algorithms with public key OID RSASSA-PSS */ rsa_pss_pss_sha256(0x0809), rsa_pss_pss_sha384(0x080a), rsa_pss_pss_sha512(0x080b), /* Legacy algorithms */ rsa_pkcs1_sha1(0x0201), ecdsa_sha1(0x0203), /* Reserved Code Points */ obsolete_RESERVED(0x0000..0x0200), dsa_sha1_RESERVED(0x0202), obsolete_RESERVED(0x0204..0x0400), dsa_sha256_RESERVED(0x0402), obsolete_RESERVED(0x0404..0x0500), dsa_sha384_RESERVED(0x0502), obsolete_RESERVED(0x0504..0x0600), dsa_sha512_RESERVED(0x0602), obsolete_RESERVED(0x0604..0x06FF), private_use(0xFE00..0xFFFF), (0xFFFF) } SignatureScheme; struct { SignatureScheme supported_signature_algorithms<2..2^16-2>; } SignatureSchemeList; Rescorla Expires 27 September 2023 [Page 124] Internet-Draft TLS March 2023 B.3.1.4. Supported Groups Extension enum { unallocated_RESERVED(0x0000), /* Elliptic Curve Groups (ECDHE) */ obsolete_RESERVED(0x0001..0x0016), secp256r1(0x0017), secp384r1(0x0018), secp521r1(0x0019), obsolete_RESERVED(0x001A..0x001C), x25519(0x001D), x448(0x001E), /* Finite Field Groups (DHE) */ ffdhe2048(0x0100), ffdhe3072(0x0101), ffdhe4096(0x0102), ffdhe6144(0x0103), ffdhe8192(0x0104), /* Reserved Code Points */ ffdhe_private_use(0x01FC..0x01FF), ecdhe_private_use(0xFE00..0xFEFF), obsolete_RESERVED(0xFF01..0xFF02), (0xFFFF) } NamedGroup; struct { NamedGroup named_group_list<2..2^16-1>; } NamedGroupList; Values within "obsolete_RESERVED" ranges are used in previous versions of TLS and MUST NOT be offered or negotiated by TLS 1.3 implementations. The obsolete curves have various known/theoretical weaknesses or have had very little usage, in some cases only due to unintentional server configuration issues. They are no longer considered appropriate for general use and should be assumed to be potentially unsafe. The set of curves specified here is sufficient for interoperability with all currently deployed and properly configured TLS implementations. B.3.2. Server Parameters Messages Rescorla Expires 27 September 2023 [Page 125] Internet-Draft TLS March 2023 opaque DistinguishedName<1..2^16-1>; struct { DistinguishedName authorities<3..2^16-1>; } CertificateAuthoritiesExtension; struct { opaque certificate_extension_oid<1..2^8-1>; opaque certificate_extension_values<0..2^16-1>; } OIDFilter; struct { OIDFilter filters<0..2^16-1>; } OIDFilterExtension; struct {} PostHandshakeAuth; struct { Extension extensions<0..2^16-1>; } EncryptedExtensions; struct { opaque certificate_request_context<0..2^8-1>; Extension extensions<0..2^16-1>; } CertificateRequest; B.3.3. Authentication Messages Rescorla Expires 27 September 2023 [Page 126] Internet-Draft TLS March 2023 enum { X509(0), OpenPGP_RESERVED(1), RawPublicKey(2), (255) } CertificateType; struct { select (certificate_type) { case RawPublicKey: /* From RFC 7250 ASN.1_subjectPublicKeyInfo */ opaque ASN1_subjectPublicKeyInfo<1..2^24-1>; case X509: opaque cert_data<1..2^24-1>; }; Extension extensions<0..2^16-1>; } CertificateEntry; struct { opaque certificate_request_context#x27;printer-color-supported' DESC 'Indicates whether or not this Printer is capable of any type of color printing at all, including highlight color.' EQUALITY booleanMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 SINGLE-VALUE ) Fleming & McDonald Informational [Page 25] RFC 7612 LDAP Schema for Printer Services June 2015 4.16. printer-compression-supported ( 1.3.18.0.2.4.1128 NAME 'printer-compression-supported' DESC 'Comma-delimited list of compression algorithms supported by this Printer.' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) For example: 'none' 'deflate,gzip' Note: Length overflow in values of this attribute MUST be handled by multiple instances of this attribute, i.e., individual comma-delimited list members MUST NOT be truncated. Note: For compatibility with IPP/1.1 [RFC2911], values of this attribute SHOULD NOT exceed 255 octets in length. Values defined in IPP/1.1 [RFC2911] and recorded in the IANA IPP registry [IANAIPP] include: 'none' (no compression is used) 'deflate' (public domain ZIP described in [RFC1951]) 'gzip' (GNU ZIP described in [RFC1952]) 'compress' (UNIX compression described in [RFC1977]) 4.17. printer-pages-per-minute ( 1.3.18.0.2.4.1127 NAME 'printer-pages-per-minute' DESC 'The nominal number of pages per minute that can be output by this Printer.' EQUALITY integerMatch ORDERING integerOrderingMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE ) This attribute is informative, not a service guarantee. Typically, it is the value used in marketing literature to describe this Printer -- for example, the value for a simplex or black-and-white print mode. Fleming & McDonald Informational [Page 26] RFC 7612 LDAP Schema for Printer Services June 2015 4.18. printer-pages-per-minute-color ( 1.3.18.0.2.4.1126 NAME 'printer-pages-per-minute-color' DESC 'The nominal number of color pages per minute that can be output by this Printer.' EQUALITY integerMatch ORDERING integerOrderingMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE ) This attribute is informative, not a service guarantee. Typically, it is the value used in marketing literature to describe this Printer. 4.19. printer-finishings-supported ( 1.3.18.0.2.4.1125 NAME 'printer-finishings-supported' DESC 'Comma-delimited list of finishing operations supported by this Printer.' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) For example: 'staple' 'staple,punch,bind' Note: Length overflow in values of this attribute MUST be handled by multiple instances of this attribute, i.e., individual comma-delimited list members MUST NOT be truncated. Note: For compatibility with IPP/1.1 [RFC2911], values of this attribute SHOULD NOT exceed 255 octets in length. Values defined in IPP/1.1 [RFC2911] and recorded in the IANA IPP registry [IANAIPP] include: 'none', 'staple', 'punch', 'cover', 'bind', 'saddle-stitch', 'edge-stitch', 'staple-top-left', 'staple-bottom-left', 'staple-top-right', 'staple-bottom-right', 'edge-stitch-left', 'edge-stitch-top', 'edge-stitch-right', 'edge-stitch-bottom', 'staple-dual-left', 'staple-dual-top', 'staple-dual-right', 'staple-dual-bottom'. Fleming & McDonald Informational [Page 27] RFC 7612 LDAP Schema for Printer Services June 2015 Note: Implementations MAY support other values. 4.20. printer-number-up-supported ( 1.3.18.0.2.4.1124 NAME 'printer-number-up-supported' DESC 'Maximum number of print-stream pages that can be imposed upon a single side of an instance of a selected medium by this Printer.' EQUALITY integerMatch ORDERING integerOrderingMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE ) For example: '1' '4' Note: Values of this attribute differ from the corresponding IPP attribute, in that only the maximum number-up is mapped from the corresponding IPP attribute 'number-up-supported' defined in [RFC2911]. 4.21. printer-sides-supported ( 1.3.18.0.2.4.1123 NAME 'printer-sides-supported' DESC 'Comma-delimited list of impression sides (one or two) and the two-sided impression rotations supported by this Printer.' EQUALITY caseIgnoreMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) For example: 'one-sided' 'one-sided,two-sided-short-edge' Note: Length overflow in values of this attribute MUST be handled by multiple instances of this attribute, i.e., individual comma-delimited list members MUST NOT be truncated. Note: For compatibility with IPP/1.1 [RFC2911], values of this attribute SHOULD NOT exceed 255 octets in length. Fleming & McDonald Informational [Page 28] RFC 7612 LDAP Schema for Printer Services June 2015 Values defined in IPP/1.1 [RFC2911] and recorded in the IANA IPP registry [IANAIPP] are: 'one-sided' 'two-sided-long-edge' 'two-sided-short-edge' 4.22. printer-media-supported ( 1.3.18.0.2.4.1122 NAME 'printer-media-supported' DESC 'One of the names/sizes/types/colors of the media supported by this Printer.' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) Values SHOULD conform to "PWG Media Standardized Names 2.0 (MSN2)" [PWG5101.1]. Note: For compatibility with IPP/1.1 [RFC2911], values of this attribute SHOULD NOT exceed 255 octets in length. Values of standardized media size names defined in [PWG5101.1] and recorded in the IANA IPP registry [IANAIPP] include: 'na_letter_8.5x11in' 'iso_a4_210x297mm' Values of standardized media types defined in [PWG5101.1] and recorded in the IANA IPP registry [IANAIPP] include: 'envelope' 'stationery' Values of standardized media colors defined in [PWG5101.1] and recorded in the IANA IPP registry [IANAIPP] include: 'white' 'blue' Note: Multiple values for this attribute are represented as multiple instances of this attribute. Fleming & McDonald Informational [Page 29] RFC 7612 LDAP Schema for Printer Services June 2015 4.23. printer-media-local-supported ( 1.3.18.0.2.4.1117 NAME 'printer-media-local-supported' DESC 'One of the site-specific media supported by this Printer.' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) Values SHOULD conform to "PWG Media Standardized Names 2.0 (MSN2)" [PWG5101.1]. For example: 'custom_purchasing-form_8.5x11in' (site-specific name) Note: Multiple values for this attribute are represented as multiple instances of this attribute. Note: For compatibility with IPP/1.1 [RFC2911], values of this attribute SHOULD NOT exceed 255 octets in length. 4.24. printer-resolution-supported ( 1.3.18.0.2.4.1121 NAME 'printer-resolution-supported' DESC 'One of the resolutions supported for printing documents by this Printer.' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) Each resolution value MUST be a string containing three fields: 1) Cross-feed direction resolution (positive integer); 2) Feed direction resolution (positive integer); 3) Unit -- 'dpi' (dots per inch) or 'dpcm' (dots per centimeter). Each resolution field MUST be delimited by '>', with optional trailing whitespace. For example: '300> 300> dpi>' '600> 600> dpi>' Fleming & McDonald Informational [Page 30] RFC 7612 LDAP Schema for Printer Services June 2015 Note: See the note in Section 4 about the different field delimiters used in the printer-xri-supported and printer-resolution-supported attributes ('<' and '>', respectively), chosen for compatibility with the IANA-registered SLP 'service:printer:' v2.0 template [SLPPRT20]. Note: Multiple values for this attribute are represented as multiple instances of this attribute. Note: This attribute is based on 'printer-resolution-supported' defined in IPP/1.1 [RFC2911] with a complex encoding derived from 'prtMarkerAddressabilityFeedDir', 'prtMarkerAddressabilityXFeedDir', and 'prtMarkerAddressabilityUnit' defined in "Printer MIB v2" [RFC3805] (which have integer encodings). Note: The syntax and delimiter for this attribute are aligned with the equivalent attribute in the 'service:printer:' v2.0 template [SLPPRT20]. Whitespace is permitted after (but not before) the delimiter '>'. 4.25. printer-print-quality-supported ( 1.3.18.0.2.4.1120 NAME 'printer-print-quality-supported' DESC 'Comma-delimited list of print qualities supported for printing documents on this Printer.' EQUALITY caseIgnoreMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) For example: 'unknown' 'draft,normal,high' Note: Length overflow in values of this attribute MUST be handled by multiple instances of this attribute, i.e., individual comma-delimited list members MUST NOT be truncated. Values defined in IPP/1.1 [RFC2911] and recorded in the IANA IPP registry [IANAIPP] include: 'draft' 'normal' 'high' Note: The value 'unknown' MUST only be reported if the corresponding IPP attribute is not present, i.e., the value 'unknown' is an artifact of this LDAP mapping. Fleming & McDonald Informational [Page 31] RFC 7612 LDAP Schema for Printer Services June 2015 4.26. printer-job-priority-supported ( 1.3.18.0.2.4.1110 NAME 'printer-job-priority-supported' DESC 'Indicates the number of job priority levels supported by this Printer.' EQUALITY integerMatch ORDERING integerOrderingMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE ) An IPP/1.1 [RFC2911] conformant Printer, which supports job priority, always supports a full range of priorities from '1' to '100' (to ensure consistent behavior); therefore, this attribute describes the 'granularity' of priority supported. Values of this attribute are from '1' to '100'. 4.27. printer-copies-supported ( 1.3.18.0.2.4.1118 NAME 'printer-copies-supported' DESC 'The maximum number of copies of a document that can be printed as a single job on this Printer.' EQUALITY integerMatch ORDERING integerOrderingMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE ) A positive value indicates the maximum supported copies. A value of '0' indicates no maximum limit. A value of '-1' indicates 'unknown'. Note: The syntax and values for this attribute are aligned with the equivalent attribute in the 'service:printer:' v2.0 template [SLPPRT20]. Fleming & McDonald Informational [Page 32] RFC 7612 LDAP Schema for Printer Services June 2015 4.28. printer-job-k-octets-supported ( 1.3.18.0.2.4.1111 NAME 'printer-job-k-octets-supported' DESC 'The maximum size of an incoming print job that this Printer will accept, in kilobytes (1,024 octets).' EQUALITY integerMatch ORDERING integerOrderingMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE ) A positive value indicates the maximum supported job size. A value of '0' indicates no maximum limit. A value of '-1' indicates 'unknown'. Note: The syntax and values for this attribute are aligned with the equivalent attribute in the 'service:printer:' v2.0 template [SLPPRT20]. 4.29. printer-current-operator ( 1.3.18.0.2.4.1112 NAME 'printer-current-operator' DESC 'The identity of the current human operator responsible for operating this Printer.' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE ) The value of this attribute SHOULD include information that would enable other humans to reach the operator, such as a telephone number. Note: For interoperability and consistent text display, values of this attribute (a) SHOULD be normalized as recommended in "Unicode Format for Network Interchange" [RFC5198]; (b) SHOULD NOT contain DEL or any C0 or C1 control characters except for HT, CR, and LF; and (c) SHOULD only contain CR and LF characters together (not as singletons). Fleming & McDonald Informational [Page 33] RFC 7612 LDAP Schema for Printer Services June 2015 4.30. printer-service-person ( 1.3.18.0.2.4.1113 NAME 'printer-service-person' DESC 'The identity of the current human service person responsible for servicing this Printer.' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE ) The value of this attribute SHOULD include information that would enable other humans to reach the service person, such as a telephone number. Note: For interoperability and consistent text display, values of this attribute (a) SHOULD be normalized as recommended in "Unicode Format for Network Interchange" [RFC5198]; (b) SHOULD NOT contain DEL or any C0 or C1 control characters except for HT, CR, and LF; and (c) SHOULD only contain CR and LF characters together (not as singletons). 4.31. printer-delivery-orientation-supported ( 1.3.18.0.2.4.1114 NAME 'printer-delivery-orientation-supported' DESC 'Comma-delimited list of delivery orientations of pages as they are printed and ejected supported by this Printer.' EQUALITY caseIgnoreMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) For example: 'unknown' 'face-up,face-down' Values defined in "Printer MIB v2" [RFC3805] for prtOutputPageDeliveryOrientation are: 'face-up' 'face-down' Note: The value 'unknown' MUST only be reported if the corresponding Printer MIB attribute is not present, i.e., the value 'unknown' is an artifact of this LDAP mapping. Fleming & McDonald Informational [Page 34] <0..2^8-1>; CertificateEntry certificate_list<0..2^24-1>; } Certificate; struct { SignatureScheme algorithm; opaque signature<0..2^16-1>; } CertificateVerify; struct { opaque verify_data[Hash.length]; } Finished; B.3.4. Ticket Establishment struct { uint32 ticket_lifetime; uint32 ticket_age_add; opaque ticket_nonce<0..255>; opaque ticket<1..2^16-1>; Extension extensions<0..2^16-1>; } NewSessionTicket; B.3.5. Updating Keys Rescorla Expires 27 September 2023 [Page 127] Internet-Draft TLS March 2023 struct {} EndOfEarlyData; enum { update_not_requested(0), update_requested(1), (255) } KeyUpdateRequest; struct { KeyUpdateRequest request_update; } KeyUpdate; B.4. Cipher Suites A cipher suite defines the pair of the AEAD algorithm and hash algorithm to be used with HKDF. Cipher suite names follow the naming convention: CipherSuite TLS_AEAD_HASH = VALUE; +===========+================================================+ | Component | Contents | +===========+================================================+ | TLS | The string "TLS" | +-----------+------------------------------------------------+ | AEAD | The AEAD algorithm used for record protection | +-----------+------------------------------------------------+ | HASH | The hash algorithm used with HKDF | +-----------+------------------------------------------------+ | VALUE | The two byte ID assigned for this cipher suite | +-----------+------------------------------------------------+ Table 4: Cipher Suite Name Structure This specification defines the following cipher suites for use with TLS 1.3. Rescorla Expires 27 September 2023 [Page 128] Internet-Draft TLS March 2023 +==============================+=============+ | Description | Value | +==============================+=============+ | TLS_AES_128_GCM_SHA256 | {0x13,0x01} | +------------------------------+-------------+ | TLS_AES_256_GCM_SHA384 | {0x13,0x02} | +------------------------------+-------------+ | TLS_CHACHA20_POLY1305_SHA256 | {0x13,0x03} | +------------------------------+-------------+ | TLS_AES_128_CCM_SHA256 | {0x13,0x04} | +------------------------------+-------------+ | TLS_AES_128_CCM_8_SHA256 | {0x13,0x05} | +------------------------------+-------------+ Table 5: Cipher Suite List The corresponding AEAD algorithms AEAD_AES_128_GCM, AEAD_AES_256_GCM, and AEAD_AES_128_CCM are defined in [RFC5116]. AEAD_CHACHA20_POLY1305 is defined in [RFC8439]. AEAD_AES_128_CCM_8 is defined in [RFC6655]. The corresponding hash algorithms are defined in [SHS]. Although TLS 1.3 uses the same cipher suite space as previous versions of TLS, TLS 1.3 cipher suites are defined differently, only specifying the symmetric ciphers, and cannot be used for TLS 1.2. Similarly, cipher suites for TLS 1.2 and lower cannot be used with TLS 1.3. New cipher suite values are assigned by IANA as described in Section 11. Appendix C. Implementation Notes The TLS protocol cannot prevent many common security mistakes. This appendix provides several recommendations to assist implementors. [RFC8448] provides test vectors for TLS 1.3 handshakes. C.1. Random Number Generation and Seeding TLS requires a cryptographically secure pseudorandom number generator (CSPRNG). In most cases, the operating system provides an appropriate facility such as /dev/urandom, which should be used absent other (e.g., performance) concerns. It is RECOMMENDED to use an existing CSPRNG implementation in preference to crafting a new one. Many adequate cryptographic libraries are already available under favorable license terms. Should those prove unsatisfactory, [RFC4086] provides guidance on the generation of random values. Rescorla Expires 27 September 2023 [Page 129] Internet-Draft TLS March 2023 TLS uses random values (1) in public protocol fields such as the public Random values in the ClientHello and ServerHello and (2) to generate keying material. With a properly functioning CSPRNG, this does not present a security problem, as it is not feasible to determine the CSPRNG state from its output. However, with a broken CSPRNG, it may be possible for an attacker to use the public output to determine the CSPRNG internal state and thereby predict the keying material, as documented in [CHECKOWAY] and [DSA-1571-1]. Implementations can provide extra security against this form of attack by using separate CSPRNGs to generate public and private values. [RFC8937] describes a way way for security protocol implementations to augment their (pseudo)random number generators using a long-term private key and a deterministic signature function. This improves randomness from broken or otherwise subverted random number generators. C.2. Certificates and Authentication Implementations are responsible for verifying the integrity of certificates and should generally support certificate revocation messages. Absent a specific indication from an application profile, certificates should always be verified to ensure proper signing by a trusted certificate authority (CA). The selection and addition of trust anchors should be done very carefully. Users should be able to view information about the certificate and trust anchor. Applications SHOULD also enforce minimum and maximum key sizes. For example, certification paths containing keys or signatures weaker than 2048-bit RSA or 224-bit ECDSA are not appropriate for secure applications. Note that it is common practice in some protocols to use the same certificate in both client and server modes. This setting has not been extensively analyzed and it is the responsibility of the higher level protocol to ensure there is no ambiguity in this case about the higher-level semantics. C.3. Implementation Pitfalls Implementation experience has shown that certain parts of earlier TLS specifications are not easy to understand and have been a source of interoperability and security problems. Many of these areas have been clarified in this document but this appendix contains a short list of the most important things that require special attention from implementors. Rescorla Expires 27 September 2023 [Page 130] Internet-Draft TLS March 2023 TLS protocol issues: * Do you correctly handle handshake messages that are fragmented to multiple TLS records (see Section 5.1)? Do you correctly handle corner cases like a ClientHello that is split into several small fragments? Do you fragment handshake messages that exceed the maximum fragment size? In particular, the Certificate and CertificateRequest handshake messages can be large enough to require fragmentation. Certificate compression as defined in [RFC8879] can be used to reduce the risk of fragmentation. * Do you ignore the TLS record layer version number in all unencrypted TLS records (see Appendix E)? * Have you ensured that all support for SSL, RC4, EXPORT ciphers, and MD5 (via the "signature_algorithms" extension) is completely removed from all possible configurations that support TLS 1.3 or later, and that attempts to use these obsolete capabilities fail correctly? (see Appendix E)? * Do you handle TLS extensions in ClientHellos correctly, including unknown extensions? * When the server has requested a client certificate but no suitable certificate is available, do you correctly send an empty Certificate message, instead of omitting the whole message (see Section 4.4.2)? * When processing the plaintext fragment produced by AEAD-Decrypt and scanning from the end for the ContentType, do you avoid scanning past the start of the cleartext in the event that the peer has sent a malformed plaintext of all zeros? * Do you properly ignore unrecognized cipher suites (Section 4.1.2), hello extensions (Section 4.2), named groups (Section 4.2.7), key shares (Section 4.2.8), supported versions (Section 4.2.1), and signature algorithms (Section 4.2.3) in the ClientHello? * As a server, do you send a HelloRetryRequest to clients which support a compatible (EC)DHE group but do not predict it in the "key_share" extension? As a client, do you correctly handle a HelloRetryRequest from the server? Cryptographic details: * What countermeasures do you use to prevent timing attacks [TIMING]? Rescorla Expires 27 September 2023 [Page 131] Internet-Draft TLS March 2023 * When using Diffie-Hellman key exchange, do you correctly preserve leading zero bytes in the negotiated key (see Section 7.4.1)? * Does your TLS client check that the Diffie-Hellman parameters sent by the server are acceptable (see Section 4.2.8.1)? * Do you use a strong and, most importantly, properly seeded random number generator (see Appendix C.1) when generating Diffie-Hellman private values, the ECDSA "k" parameter, and other security- critical values? It is RECOMMENDED that implementations implement "deterministic ECDSA" as specified in [RFC6979]. Note that purely deterministic ECC signatures such as deterministic ECDSA and EdDSA may be vulnerable to certain side-channel and fault injection attacks in easily accessible IoT devices. * Do you zero-pad Diffie-Hellman public key values and shared secrets to the group size (see Section 4.2.8.1 and Section 7.4.1)? * Do you verify signatures after making them, to protect against RSA-CRT key leaks [FW15]? C.4. Client and Server Tracking Prevention Clients SHOULD NOT reuse a ticket for multiple connections. Reuse of a ticket allows passive observers to correlate different connections. Servers that issue tickets SHOULD offer at least as many tickets as the number of connections that a client might use; for example, a web browser using HTTP/1.1 [RFC7230] might open six connections to a server. Servers SHOULD issue new tickets with every connection. This ensures that clients are always able to use a new ticket when creating a new connection. Offering a ticket to a server additionally allows the server to correlate different connections. This is possible independent of ticket reuse. Client applications SHOULD NOT offer tickets across connections that are meant to be uncorrelated. For example, [FETCH] defines network partition keys to separate cache lookups in web browsers. Clients and Servers SHOULD NOT reuse a key share for multiple connections. Reuse of a key share allows passive observers to correlate different connections. Reuse of a client key share to the same server additionally allows the server to correlate different connections. Rescorla Expires 27 September 2023 [Page 132] Internet-Draft TLS March 2023 If an external PSK identity is used for multiple connections, then it will generally be possible for an external observer to track clients and/or servers across connections. Use of the Encrypted Client Hello [I-D.ietf-tls-esni] extension can mitigate this risk, as can mechanisms external to TLS that rotate the PSK identity. C.5. Unauthenticated Operation Previous versions of TLS offered explicitly unauthenticated cipher suites based on anonymous Diffie-Hellman. These modes have been deprecated in TLS 1.3. However, it is still possible to negotiate parameters that do not provide verifiable server authentication by several methods, including: * Raw public keys [RFC7250]. * Using a public key contained in a certificate but without validation of the certificate chain or any of its contents. Either technique used alone is vulnerable to man-in-the-middle attacks and therefore unsafe for general use. However, it is also possible to bind such connections to an external authentication mechanism via out-of-band validation of the server's public key, trust on first use, or a mechanism such as channel bindings (though the channel bindings described in [RFC5929] are not defined for TLS 1.3). If no such mechanism is used, then the connection has no protection against active man-in-the-middle attack; applications MUST NOT use TLS in such a way absent explicit configuration or a specific application profile. Appendix D. Updates to TLS 1.2 To align with the names used this document, the following terms from [RFC5246] are renamed: * The master secret, computed in Section 8.1 of [RFC5246], is renamed to the main secret. It is referred to as main_secret in formulas and structures, instead of master_secret. However, the label parameter to the PRF function is left unchanged for compatibility. * The premaster secret is renamed to the preliminary secret. It is referred to as preliminary_secret in formulas and structures, instead of pre_master_secret. * The PreMasterSecret and EncryptedPreMasterSecret structures, defined in Section 7.4.7.1 of [RFC5246], are renamed to PreliminarySecret and EncryptedPreliminarySecret, respectively. Rescorla Expires 27 September 2023 [Page 133] Internet-Draft TLS March 2023 Correspondingly, the extension defined in [RFC7627] is renamed to the "Extended Main Secret" extension. The extension code point is renamed to "extended_main_secret". The label parameter to the PRF function in Section 4 of [RFC7627] is left unchanged for compatibility. Appendix E. Backward Compatibility The TLS protocol provides a built-in mechanism for version negotiation between endpoints potentially supporting different versions of TLS. TLS 1.x and SSL 3.0 use compatible ClientHello messages. Servers can also handle clients trying to use future versions of TLS as long as the ClientHello format remains compatible and there is at least one protocol version supported by both the client and the server. Prior versions of TLS used the record layer version number (TLSPlaintext.legacy_record_version and TLSCiphertext.legacy_record_version) for various purposes. As of TLS 1.3, this field is deprecated. The value of TLSPlaintext.legacy_record_version MUST be ignored by all implementations. The value of TLSCiphertext.legacy_record_version is included in the additional data for deprotection but MAY otherwise be ignored or MAY be validated to match the fixed constant value. Version negotiation is performed using only the handshake versions (ClientHello.legacy_version and ServerHello.legacy_version, as well as the ClientHello, HelloRetryRequest, and ServerHello "supported_versions" extensions). In order to maximize interoperability with older endpoints, implementations that negotiate the use of TLS 1.0-1.2 SHOULD set the record layer version number to the negotiated version for the ServerHello and all records thereafter. For maximum compatibility with previously non-standard behavior and misconfigured deployments, all implementations SHOULD support validation of certification paths based on the expectations in this document, even when handling prior TLS versions' handshakes (see Section 4.4.2.2). TLS 1.2 and prior supported an "Extended Main Secret" [RFC7627] extension which digested large parts of the handshake transcript into the secret and derived keys. Note this extension was renamed in Appendix D. Because TLS 1.3 always hashes in the transcript up to the server Finished, implementations which support both TLS 1.3 and earlier versions SHOULD indicate the use of the Extended Main Secret extension in their APIs whenever TLS 1.3 is used. Rescorla Expires 27 September 2023 [Page 134] Internet-Draft TLS March 2023 E.1. Negotiating with an Older Server A TLS 1.3 client who wishes to negotiate with servers that do not support TLS 1.3 will send a normal TLS 1.3 ClientHello containing 0x0303 (TLS 1.2) in ClientHello.legacy_version but with the correct version(s) in the "supported_versions" extension. If the server does not support TLS 1.3, it will respond with a ServerHello containing an older version number. If the client agrees to use this version, the negotiation will proceed as appropriate for the negotiated protocol. A client using a ticket for resumption SHOULD initiate the connection using the version that was previously negotiated. Note that 0-RTT data is not compatible with older servers and SHOULD NOT be sent absent knowledge that the server supports TLS 1.3. See Appendix E.3. If the version chosen by the server is not supported by the client (or is not acceptable), the client MUST abort the handshake with a "protocol_version" alert. Some legacy server implementations are known to not implement the TLS specification properly and might abort connections upon encountering TLS extensions or versions which they are not aware of. Interoperability with buggy servers is a complex topic beyond the scope of this document. Multiple connection attempts may be required in order to negotiate a backward-compatible connection; however, this practice is vulnerable to downgrade attacks and is NOT RECOMMENDED. E.2. Negotiating with an Older Client A TLS server can also receive a ClientHello indicating a version number smaller than its highest supported version. If the "supported_versions" extension is present, the server MUST negotiate using that extension as described in Section 4.2.1. If the "supported_versions" extension is not present, the server MUST negotiate the minimum of ClientHello.legacy_version and TLS 1.2. For example, if the server supports TLS 1.0, 1.1, and 1.2, and legacy_version is TLS 1.0, the server will proceed with a TLS 1.0 ServerHello. If the "supported_versions" extension is absent and the server only supports versions greater than ClientHello.legacy_version, the server MUST abort the handshake with a "protocol_version" alert. Note that earlier versions of TLS did not clearly specify the record layer version number value in all cases (TLSPlaintext.legacy_record_version). Servers will receive various TLS 1.x versions in this field, but its value MUST always be ignored. Rescorla Expires 27 September 2023 [Page 135] Internet-Draft TLS March 2023 RFC 7612 LDAP Schema for Printer Services June 2015 Note: The syntax and values for this attribute are aligned with the equivalent attribute in the 'service:printer:' v2.0 template [SLPPRT20]. 4.32. printer-stacking-order-supported ( 1.3.18.0.2.4.1115 NAME 'printer-stacking-order-supported' DESC 'Comma-delimited list of stacking orders of pages as they are printed and ejected supported by this Printer.' EQUALITY caseIgnoreMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) For example: 'unknown' 'first-to-last' 'first-to-last,last-to-first' Values defined in "Printer MIB v2" [RFC3805] for prtOutputStackingOrder are: 'first-to-last' 'last-to-first' Note: The value 'unknown' MUST only be reported if the corresponding Printer MIB attribute is not present, i.e., the value 'unknown' is an artifact of this LDAP mapping. Note: The syntax and values for this attribute are aligned with the equivalent attribute in the 'service:printer:' v2.0 template [SLPPRT20]. Fleming & McDonald Informational [Page 35] RFC 7612 LDAP Schema for Printer Services June 2015 4.33. printer-output-features-supported ( 1.3.18.0.2.4.1116 NAME 'printer-output-features-supported' DESC 'Comma-delimited list of output features supported by this Printer.' EQUALITY caseIgnoreMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) For example: 'unknown' 'bursting,decollating' 'offset-stacking' Note: Length overflow in values of this attribute MUST be handled by multiple instances of this attribute, i.e., individual comma-delimited list members MUST NOT be truncated. Values defined in "Printer MIB v2" [RFC3805] for prtOutputBursting, prtOutputDecollating, prtOutputPageCollated, and prtOutputOffsetStacking are: 'bursting' 'decollating' 'page-collating' 'offset-stacking' Note: The value 'unknown' MUST only be reported if the corresponding Printer MIB attributes are not present, i.e., the value 'unknown' is an artifact of this LDAP mapping. Note: The syntax and values for this attribute are aligned with the equivalent attribute in the 'service:printer:' v2.0 template [SLPPRT20]. Note: Implementations MAY support other values. Fleming & McDonald Informational [Page 36] RFC 7612 LDAP Schema for Printer Services June 2015 4.34. printer-aliases ( 1.3.18.0.2.4.1108 NAME 'printer-aliases' DESC 'One of the site-specific administrative names of this Printer in addition to the value specified for printer-name.' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) Values of this attribute SHOULD be specified in the language specified in printer-natural-language-configured (for example, to support text-to-speech conversions), although the Printer's alias MAY be specified in any language. Note: Multiple values for this attribute are represented as multiple instances of this attribute. Note: For compatibility with IPP/1.1 [RFC2911], values of this attribute SHOULD NOT exceed 255 octets in length. Note: For interoperability, values of this attribute (a) SHOULD be normalized as recommended in "Unicode Format for Network Interchange" [RFC5198]; and (b) SHOULD NOT contain DEL or any C0 or C1 control characters. 4.35. printer-device-id ( 1.3.18.0.2.24.46.1.101 NAME 'printer-device-id' DESC 'The IEEE 1284 Device ID for this Printer.' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE ) Values of this attribute SHOULD conform to "PWG Command Set Format for IEEE 1284 Device ID v1.0" [PWG5107.2]. Note: For compatibility with [PWG5100.14] and [PWG5107.2], values of this attribute SHOULD NOT exceed 1023 octets in length. Fleming & McDonald Informational [Page 37] RFC 7612 LDAP Schema for Printer Services June 2015 4.36. printer-device-service-count ( 1.3.18.0.2.24.46.1.102 NAME 'printer-device-service-count' DESC 'The number of Printer (print service) instances configured on this Imaging Device (host system).' EQUALITY integerMatch ORDERING integerOrderingMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE ) A positive value indicates the number of Printer (print service) instances. A value of '-1' indicates 'unknown'. A value of '0' is not meaningful (because this attribute must be reported by some Printer instance). Note: The syntax and values for this attribute are aligned with the equivalent 'device-service-count' attribute defined in [PWG5100.13]. 4.37. printer-uuid ( 1.3.18.0.2.24.46.1.104 NAME 'printer-uuid' DESC 'A URN specifying the UUID of this Printer (print service) instance on this Imaging Device (host system).' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE ) For example: 'urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6' Values of this attribute MUST conform to the Universally Unique Identifier (UUID) URN namespace [RFC4122]. Note: For compatibility with [PWG5100.13] and [RFC4122], values of this attribute SHOULD NOT exceed 45 octets in length. Note: LDAP application clients SHOULD NOT attempt to use malformed URN values read from this attribute. LDAP administrative clients SHOULD NOT write malformed URN values into this attribute. Note: The syntax and values for this attribute are aligned with the equivalent 'printer-uuid' attribute defined in [PWG5100.13]. Fleming & McDonald Informational [Page 38] RFC 7612 LDAP Schema for Printer Services June 2015 4.38. printer-charge-info ( 1.3.18.0.2.24.46.1.105 NAME 'printer-charge-info' DESC 'Descriptive information about paid printing services for this Printer.' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE ) For example: 'This Printer can be used for paid printing at 2 cents/page.' Note: For compatibility with [PWG5100.13], values of this attribute SHOULD NOT exceed 1023 octets in length. Note: For interoperability and consistent text display, values of this attribute (a) SHOULD be normalized as recommended in "Unicode Format for Network Interchange" [RFC5198]; (b) SHOULD NOT contain any C0 or C1 control characters except for HT, CR, and LF; and (c) SHOULD only contain CR and LF characters together (not as singletons). Note: The syntax and values for this attribute are aligned with the equivalent 'printer-charge-info&E.3. 0-RTT Backward Compatibility 0-RTT data is not compatible with older servers. An older server will respond to the ClientHello with an older ServerHello, but it will not correctly skip the 0-RTT data and will fail to complete the handshake. This can cause issues when a client attempts to use 0-RTT, particularly against multi-server deployments. For example, a deployment could deploy TLS 1.3 gradually with some servers implementing TLS 1.3 and some implementing TLS 1.2, or a TLS 1.3 deployment could be downgraded to TLS 1.2. A client that attempts to send 0-RTT data MUST fail a connection if it receives a ServerHello with TLS 1.2 or older. It can then retry the connection with 0-RTT disabled. To avoid a downgrade attack, the client SHOULD NOT disable TLS 1.3, only 0-RTT. To avoid this error condition, multi-server deployments SHOULD ensure a uniform and stable deployment of TLS 1.3 without 0-RTT prior to enabling 0-RTT. E.4. Middlebox Compatibility Mode Field measurements [Ben17a] [Ben17b] [Res17a] [Res17b] have found that a significant number of middleboxes misbehave when a TLS client/ server pair negotiates TLS 1.3. Implementations can increase the chance of making connections through those middleboxes by making the TLS 1.3 handshake look more like a TLS 1.2 handshake: * The client always provides a non-empty session ID in the ClientHello, as described in the legacy_session_id section of Section 4.1.2. * If not offering early data, the client sends a dummy change_cipher_spec record (see the third paragraph of Section 5) immediately before its second flight. This may either be before its second ClientHello or before its encrypted handshake flight. If offering early data, the record is placed immediately after the first ClientHello. * The server sends a dummy change_cipher_spec record immediately after its first handshake message. This may either be after a ServerHello or a HelloRetryRequest. When put together, these changes make the TLS 1.3 handshake resemble TLS 1.2 session resumption, which improves the chance of successfully connecting through middleboxes. This "compatibility mode" is partially negotiated: the client can opt to provide a session ID or not, and the server has to echo it. Either side can send Rescorla Expires 27 September 2023 [Page 136] Internet-Draft TLS March 2023 change_cipher_spec at any time during the handshake, as they must be ignored by the peer, but if the client sends a non-empty session ID, the server MUST send the change_cipher_spec as described in this appendix. E.5. Security Restrictions Related to Backward Compatibility Implementations negotiating the use of older versions of TLS SHOULD prefer forward secret and AEAD cipher suites, when available. The security of RC4 cipher suites is considered insufficient for the reasons cited in [RFC7465]. Implementations MUST NOT offer or negotiate RC4 cipher suites for any version of TLS for any reason. Old versions of TLS permitted the use of very low strength ciphers. Ciphers with a strength less than 112 bits MUST NOT be offered or negotiated for any version of TLS for any reason. The security of SSL 2.0 [SSL2], SSL 3.0 [RFC6101], TLS 1.0 [RFC2246], and TLS 1.1 [RFC4346] are considered insufficient for the reasons enumerated in [RFC6176], [RFC7568], and [RFC8996] and they MUST NOT be negotiated for any reason. Implementations MUST NOT send an SSL version 2.0 compatible CLIENT- HELLO. Implementations MUST NOT negotiate TLS 1.3 or later using an SSL version 2.0 compatible CLIENT-HELLO. Implementations are NOT RECOMMENDED to accept an SSL version 2.0 compatible CLIENT-HELLO in order to negotiate older versions of TLS. Implementations MUST NOT send a ClientHello.legacy_version or ServerHello.legacy_version set to 0x0300 or less. Any endpoint receiving a Hello message with ClientHello.legacy_version or ServerHello.legacy_version set to 0x0300 MUST abort the handshake with a "protocol_version" alert. Implementations MUST NOT send any records with a version less than 0x0300. Implementations SHOULD NOT accept any records with a version less than 0x0300 (but may inadvertently do so if the record version number is ignored completely). Implementations MUST NOT use the Truncated HMAC extension, defined in Section 7 of [RFC6066], as it is not applicable to AEAD algorithms and has been shown to be insecure in some scenarios. Rescorla Expires 27 September 2023 [Page 137] Internet-Draft TLS March 2023 Appendix F. Overview of Security Properties A complete security analysis of TLS is outside the scope of this document. In this appendix, we provide an informal description of the desired properties as well as references to more detailed work in the research literature which provides more formal definitions. We cover properties of the handshake separately from those of the record layer. F.1. Handshake The TLS handshake is an Authenticated Key Exchange (AKE) protocol which is intended to provide both one-way authenticated (server-only) and mutually authenticated (client and server) functionality. At the completion of the handshake, each side outputs its view of the following values: * A set of "session keys" (the various secrets derived from the main secret) from which can be derived a set of working keys. * A set of cryptographic parameters (algorithms, etc.). * The identities of the communicating parties. We assume the attacker to be an active network attacker, which means it has complete control over the network used to communicate between the parties [RFC3552]. Even under these conditions, the handshake should provide the properties listed below. Note that these properties are not necessarily independent, but reflect the protocol consumers' needs. Establishing the same session keys: The handshake needs to output the same set of session keys on both sides of the handshake, provided that it completes successfully on each endpoint (see [CK01]; Definition 1, part 1). Secrecy of the session keys: The shared session keys should be known only to the communicating parties and not to the attacker (see [CK01]; Definition 1, part 2). Note that in a unilaterally authenticated connection, the attacker can establish its own session keys with the server, but those session keys are distinct from those established by the client. Peer Authentication: The client's view of the peer identity should reflect the server's identity. If the client is authenticated, the server's view of the peer identity should match the client's identity. Rescorla Expires 27 September 2023 [Page 138] Internet-Draft TLS March 2023 Uniqueness of the session keys: Any two distinct handshakes should produce distinct, unrelated session keys. Individual session keys produced by a handshake should also be distinct and independent. Downgrade Protection: The cryptographic parameters should be the same on both sides and should be the same as if the peers had been communicating in the absence of an attack (see [BBFGKZ16]; Definitions 8 and 9). Forward secret with respect to long-term keys: If the long-term keying material (in this case the signature keys in certificate- based authentication modes or the external/resumption PSK in PSK with (EC)DHE modes) is compromised after the handshake is complete, this does not compromise the security of the session key (see [DOW92]), as long as the session key itself (and all material that could be used to recreate the session key) has been erased. In particular, private keys corresponding to key shares, shared secrets, and keys derived in the TLS Key Schedule other than binder_key, resumption_secret, and PSKs derived from the resumption_secret also need to be erased. The forward secrecy property is not satisfied when PSK is used in the "psk_ke" PskKeyExchangeMode. Failing to erase keys or secrets intended to be ephemeral or connection-specific in effect creates additional long-term keys that must be protected. Compromise of those long- term keys (even after the handshake is complete) can result in loss of protection for the connection's traffic. Key Compromise Impersonation (KCI) resistance: In a mutually authenticated connection with certificates, compromising the long- term secret of one actor should not break that actor's authentication of their peer in the given connection (see [HGFS15]). For example, if a client's signature key is compromised, it should not be possible to impersonate arbitrary servers to that client in subsequent handshakes. Protection of endpoint identities: The server's identity (certificate) should be protected against passive attackers. The client's identity (certificate) should be protected against both passive and active attackers. This property does not hold for cipher suites without confidentiality; while this specification does not define any such cipher suites, other documents may do so. Informally, the signature-based modes of TLS 1.3 provide for the establishment of a unique, secret, shared key established by an (EC)DHE key exchange and authenticated by the server's signature over the handshake transcript, as well as tied to the server's identity by a MAC. If the client is authenticated by a certificate, it also signs over the handshake transcript and provides a MAC tied to both Rescorla Expires 27 September 2023 [Page 139] Internet-Draft TLS March 2023 identities. [SIGMA] describes the design and analysis of this type of key exchange protocol. If fresh (EC)DHE keys are used for each connection, then the output keys are forward secret. The external PSK and resumption PSK bootstrap from a long-term shared secret into a unique per-connection set of short-term session keys. This secret may have been established in a previous handshake. If PSK with (EC)DHE key establishment is used, these session keys will also be forward secret. The resumption PSK has been designed so that the resumption secret computed by connection N and needed to form connection N+1 is separate from the traffic keys used by connection N, thus providing forward secrecy between the connections. In addition, if multiple tickets are established on the same connection, they are associated with different keys, so compromise of the PSK associated with one ticket does not lead to the compromise of connections established with PSKs associated with other tickets. This property is most interesting if tickets are stored in a database (and so can be deleted) rather than if they are self-encrypted. Forward secrecy limits the effect of key leakage in one direction (compromise of a key at time T2 does not compromise some key at time T1 where T1 < T2). Protection in the other direction (compromise at time T1 does not compromise keys at time T2) can be achieved by rerunning EC(DHE). If a long-term authentication key has been compromised, a full handshake with EC(DHE) gives protection against passive attackers. If the resumption_master_secret has been compromised, a resumption handshake with EC(DHE) gives protection against passive attackers and a full handshake with EC(DHE) gives protection against active attackers. If a traffic secret has been compromised, any handshake with EC(DHE) gives protection against active attackers. Using the terms in [RFC7624], forward secrecy without rerunning EC(DHE) does not stop an attacker from doing static key exfiltration. After key exfiltration of application_traffic_secret_N, an attacker can e.g., passively eavesdrop on all future data sent on the connection including data encrypted with application_traffic_secret_N+1, application_traffic_secret_N+2, etc. Frequently rerunning EC(DHE) forces an attacker to do dynamic key exfiltration (or content exfiltration). Rescorla Expires 27 September 2023 [Page 140] Internet-Draft TLS March 2023 The PSK binder value forms a binding between a PSK and the current handshake, as well as between the session where the PSK was established and the current session. This binding transitively includes the original handshake transcript, because that transcript is digested into the values which produce the resumption secret. This requires that both the KDF used to produce the resumption secret and the MAC used to compute the binder be collision resistant. See Appendix F.1.1 for more on this. Note: The binder does not cover the binder values from other PSKs, though they are included in the Finished MAC. Note: This specification does not currently permit the server to send a certificate_request message in non-certificate-based handshakes (e.g., PSK). If this restriction were to be relaxed in future, the client's signature would not cover the server's certificate directly. However, if the PSK was established through a NewSessionTicket, the client's signature would transitively cover the server's certificate through the PSK binder. [PSK-FINISHED] describes a concrete attack on constructions that do not bind to the server's certificate (see also [Kraw16]). It is unsafe to use certificate-based client authentication when the client might potentially share the same PSK/ key-id pair with two different endpoints. In the absence of some other specification to the contrary, implementations MUST NOT combine external PSKs with certificate-based authentication of either the client or server. [RFC8773] provides an extension to permit this, but has not received the level of analysis as this specification. If an exporter is used, then it produces values which are unique and secret (because they are generated from a unique session key). Exporters computed with different labels and contexts are computationally independent, so it is not feasible to compute one from another or the session secret from the exported value. Note: Exporters can produce arbitrary-length values; if exporters are to be used as channel bindings, the exported value MUST be large enough to provide collision resistance. The exporters provided in TLS 1.3 are derived from the same Handshake Contexts as the early traffic keys and the application traffic keys, respectively, and thus have similar security properties. Note that they do not include the client's certificate; future applications which wish to bind to the client's certificate may need to define a new exporter that includes the full handshake transcript. For all handshake modes, the Finished MAC (and, where present, the signature) prevents downgrade attacks. In addition, the use of certain bytes in the random nonces as described in Section 4.1.3 allows the detection of downgrade to previous TLS versions. See [BBFGKZ16] for more details on TLS 1.3 and downgrade. Rescorla Expires 27 September 2023 [Page 141] Internet-Draft TLS March 2023 As soon as the client and the server have exchanged enough information to establish shared keys, the remainder of the handshake is encrypted, thus providing protection against passive attackers, even if the computed shared key is not authenticated. Because the server authenticates before the client, the client can ensure that if it authenticates to the server, it only reveals its identity to an authenticated server. Note that implementations must use the provided record-padding mechanism during the handshake to avoid leaking information about the identities due to length. The client's proposed PSK identities are not encrypted, nor is the one that the server selects. F.1.1. Key Derivation and HKDF Key derivation in TLS 1.3 uses HKDF as defined in [RFC5869] and its two components, HKDF-Extract and HKDF-Expand. The full rationale for the HKDF construction can be found in [Kraw10] and the rationale for the way it is used in TLS 1.3 in [KW16]. Throughout this document, each application of HKDF-Extract is followed by one or more invocations of HKDF-Expand. This ordering should always be followed (including in future revisions of this document); in particular, one SHOULD NOT use an output of HKDF-Extract as an input to another application of HKDF-Extract without an HKDF-Expand in between. Multiple applications of HKDF-Expand to some of the same inputs are allowed as long as these are differentiated via the key and/or the labels. Note that HKDF-Expand implements a pseudorandom function (PRF) with both inputs and outputs of variable length. In some of the uses of HKDF in this document (e.g., for generating exporters and the resumption_secret), it is necessary that the application of HKDF- Expand be collision resistant; namely, it should be infeasible to find two different inputs to HKDF-Expand that output the same value. This requires the underlying hash function to be collision resistant and the output length from HKDF-Expand to be of size at least 256 bits (or as much as needed for the hash function to prevent finding collisions). F.1.2. Certificate-Based Client Authentication A client that has sent certificate-based authentication data to a server, either during the handshake or in post-handshake authentication, cannot be sure whether the server afterwards considers the client to be authenticated or not. If the client needs to determine if the server considers the connection to be unilaterally or mutually authenticated, this has to be provisioned by the application layer. See [CHHSV17] for details. In addition, the analysis of post-handshake authentication from [Kraw16] shows that Rescorla Expires 27 September 2023 [Page 142] Internet-Draft TLS March 2023 the client identified by the certificate sent in the post-handshake phase possesses the traffic key. This party is therefore the client that participated in the original handshake or one to whom the original client delegated the traffic key (assuming that the traffic key has not been compromised). F.1.3. 0-RTT The 0-RTT mode of operation generally provides security properties similar to those of 1-RTT data, with the two exceptions that the 0-RTT encryption keys do not provide full forward secrecy and that the server is not able to guarantee uniqueness of the handshake (non- replayability) without keeping potentially undue amounts of state. See Section 8 for mechanisms to limit the exposure to replay. F.1.4. Exporter Independence The exporter_secret and early_exporter_secret are derived to be independent of the traffic keys and therefore do not represent a threat to the security of traffic encrypted with those keys. However, because these secrets can be used to compute any exporter value, they SHOULD be erased as soon as possible. If the total set of exporter labels is known, then implementations SHOULD pre-compute the inner Derive-Secret stage of the exporter computation for all those labels, then erase the [early_]exporter_secret, followed by each inner values as soon as it is known that it will not be needed again. F.1.5. Post-Compromise Security TLS does not provide security for handshakes which take place after the peer's long-term secret (signature key or external PSK) is compromised. It therefore does not provide post-compromise security [CCG16], sometimes also referred to as backwards or future secrecy. This is in contrast to KCI resistance, which describes the security guarantees that a party has after its own long-term secret has been compromised. F.1.6. External References The reader should refer to the following references for analysis of the TLS handshake: [DFGS15], [CHSV16], [DFGS16], [KW16], [Kraw16], [FGSW16], [LXZFH16], [FG17], and [BBK17]. Rescorla Expires 27 September 2023 [Page 143] Internet-Draft TLS March 2023 F.2. Record Layer The record layer depends on the handshake producing strong traffic secrets which can be used to derive bidirectional encryption keys and nonces. Assuming that is true, and the keys are used for no more data than indicated in Section 5.5, then the record layer should provide the following guarantees: Confidentiality: An attacker should not be able to determine the plaintext contents of a given record. Integrity: An attacker should not be able to craft a new record which is different from an existing record which will be accepted by the receiver. Order protection/non-replayability: An attacker should not be able to cause the receiver to accept a record which it has already accepted or cause the receiver to accept record N+1 without having first processed record N. Length concealment: Given a record with a given external length, the attacker should not be able to determine the amount of the record that is content versus padding. Forward secrecy after key change: If the traffic key update mechanism described in Section 4.6.3 has been used and the previous generation key is deleted, an attacker who compromises the endpoint should not be able to decrypt traffic encrypted with the old key. Informally, TLS 1.3 provides these properties by AEAD-protecting the plaintext with a strong key. AEAD encryption [RFC5116] provides confidentiality and integrity for the data. Non-replayability is provided by using a separate nonce for each record, with the nonce being derived from the record sequence number (Section 5.3), with the sequence number being maintained independently at both sides; thus records which are delivered out of order result in AEAD deprotection failures. In order to prevent mass cryptanalysis when the same plaintext is repeatedly encrypted by different users under the same key (as is commonly the case for HTTP), the nonce is formed by mixing the sequence number with a secret per-connection initialization vector derived along with the traffic keys. See [BT16] for analysis of this construction. The rekeying technique in TLS 1.3 (see Section 7.2) follows the construction of the serial generator as discussed in [REKEY], which shows that rekeying can allow keys to be used for a larger number of encryptions than without rekeying. This relies on the security of Rescorla Expires 27 September 2023 [Page 144] Internet-Draft TLS March 2023 the HKDF-Expand-Label function as a pseudorandom function (PRF). In addition, as long as this function is truly one way, it is not possible to compute traffic keys from prior to a key change (forward secrecy). TLS does not provide security for data which is communicated on a connection after a traffic secret of that connection is compromised. That is, TLS does not provide post-compromise security/future secrecy/backward secrecy with respect to the traffic secret. Indeed, an attacker who learns a traffic secret can compute all future traffic secrets on that connection. Systems which want such guarantees need to do a fresh handshake and establish a new connection with an (EC)DHE exchange. F.2.1. External References The reader should refer to the following references for analysis of the TLS record layer: [BMMRT15], [BT16], [BDFKPPRSZZ16], [BBK17], and [PS18]. F.3. Traffic Analysis TLS is susceptible to a variety of traffic analysis attacks based on observing the length and timing of encrypted packets [CLINIC] [HCJC16]. This is particularly easy when there is a small set of possible messages to be distinguished, such as for a video server hosting a fixed corpus of content, but still provides usable information even in more complicated scenarios. TLS does not provide any specific defenses against this form of attack but does include a padding mechanism for use by applications: The plaintext protected by the AEAD function consists of content plus variable-length padding, which allows the application to produce arbitrary-length encrypted records as well as padding-only cover traffic to conceal the difference between periods of transmission and periods of silence. Because the padding is encrypted alongside the actual content, an attacker cannot directly determine the length of the padding, but may be able to measure it indirectly by the use of timing channels exposed during record processing (i.e., seeing how long it takes to process a record or trickling in records to see which ones elicit a response from the server). In general, it is not known how to remove all of these channels because even a constant- time padding removal function will likely feed the content into data- dependent functions. At minimum, a fully constant-time server or client would require close cooperation with the application-layer protocol implementation, including making that higher-level protocol constant time. Rescorla Expires 27 September 2023 [Page 145] Internet-Draft TLS March 2023 Note: Robust traffic analysis defenses will likely lead to inferior performance due to delays in transmitting packets and increased traffic volume. F.4. Side Channel Attacks In general, TLS does not have specific defenses against side-channel attacks (i.e., those which attack the communications via secondary channels such as timing), leaving those to the implementation of the relevant cryptographic primitives. However, certain features of TLS are designed to make it easier to write side-channel resistant code: * Unlike previous versions of TLS which used a composite MAC-then- encrypt structure, TLS 1.3 only uses AEAD algorithms, allowing implementations to use self-contained constant-time implementations of those primitives. * TLS uses a uniform "bad_record_mac" alert for all decryption errors, which is intended to prevent an attacker from gaining piecewise insight into portions of the message. Additional resistance is provided by terminating the connection on such errors; a new connection will have different cryptographic material, preventing attacks against the cryptographic primitives that require multiple trials. Information leakage through side channels can occur at layers above TLS, in application protocols and the applications that use them. Resistance to side-channel attacks depends on applications and application protocols separately ensuring that confidential information is not inadvertently leaked. F.5. Replay Attacks on 0-RTT Replayable 0-RTT data presents a number of security threats to TLS- using applications, unless those applications are specifically engineered to be safe under replay (minimally, this means idempotent, but in many cases may also require other stronger conditions, such as constant-time response). Potential attacks include: * Duplication of actions which cause side effects (e.g., purchasing an item or transferring money) to be duplicated, thus harming the site or the user. * Attackers can store and replay 0-RTT messages in order to reorder them with respect to other messages (e.g., moving a delete to after a create). Rescorla Expires 27 September 2023 [Page 146] Internet-Draft TLS March 2023 #x27; attribute defined in [PWG5100.13]. 4.39. printer-charge-info-uri ( 1.3.18.0.2.24.46.1.106 NAME 'printer-charge-info-uri' DESC 'A URI for a human-readable Web page for paid printing services for this Printer.' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE ) For example: 'http://example.com/charges' See [STD66] for details of URI syntax. Note: For compatibility with IPP/1.1 [RFC2911] and [PWG5100.13], values of this attribute SHOULD NOT exceed 1023 octets in length. Fleming & McDonald Informational [Page 39] RFC 7612 LDAP Schema for Printer Services June 2015 Note: LDAP application clients SHOULD NOT attempt to use malformed URI values read from this attribute. LDAP administrative clients SHOULD NOT write malformed URI values into this attribute. Note: The syntax and values for this attribute are aligned with the equivalent 'printer-charge-info-uri' attribute defined in [PWG5100.13]. 4.40. printer-geo-location ( 1.3.18.0.2.24.46.1.107 NAME 'printer-geo-location' DESC 'A geo: URI specifying the geographic location of this Printer.' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE ) For example: 'geo:13.4125,103.8667' Values of this attribute MUST conform to the 'geo' URI scheme [RFC5870]. Note: For compatibility with IPP/1.1 [RFC2911] and [PWG5100.13], values of this attribute SHOULD NOT exceed 1023 octets in length. Note: LDAP application clients SHOULD NOT attempt to use malformed URI values read from this attribute. LDAP administrative clients SHOULD NOT write malformed URI values into this attribute. Note: The syntax and values for this attribute are aligned with the equivalent 'printer-geo-location' attribute defined in [PWG5100.13]. Fleming & McDonald Informational [Page 40] RFC 7612 LDAP Schema for Printer Services June 2015 4.41. printer-ipp-features-supported ( 1.3.18.0.2.24.46.1.108 NAME 'printer-ipp-features-supported' DESC 'Comma-delimited list of IPP protocol features that this Printer supports.' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) For example: 'none' 'unknown' 'proof-print' 'ipp-everywhere,proof-print,job-save' Note: Length overflow in values of this attribute MUST be handled by multiple instances of this attribute, i.e., individual comma-delimited list members MUST NOT be truncated. Values of this attribute SHOULD specify only IANA-registered keywords for the 'ipp-features-supported' attribute defined in [PWG5100.13] or other Standards Track IETF or IEEE-ISTO PWG specifications if this Printer implementation meets all of the IPP feature-specific conformance requirements. IANA-registered values include: 'none' (No extension features are supported) 'document-object' (Document object defined in [PWG5100.5]) 'job-save' (Job save defined in [PWG5100.11]) 'ipp-everywhere' ("IPP Everywhere" defined in [PWG5100.14]) 'page-overrides' (Page overrides defined in [PWG5100.6]) 'proof-print' (Proof print defined in [PWG5100.11]) 'subscription-object' (Subscription object defined in [RFC3995]) Note: The value 'unknown' MUST only be reported if the corresponding IPP Printer attribute is not present, i.e., the value 'unknown' is an artifact of this LDAP mapping. Note: The syntax and values for this attribute are aligned with the equivalent 'ipp-features-supported' attribute defined in [PWG5100.13]. Fleming & McDonald Informational [Page 41] RFC 7612 LDAP Schema for Printer Services June 2015 5. Definition of Syntaxes No new attribute syntaxes are defined by this document. The attribute types defined in Section 4 of this document reference syntax OIDs defined in Section 3 of [RFC4517], which are summarized below: Syntax OID Syntax Description ------------------------------ ------------------------------- 1.3.6.1.4.1.1466.115.121.1.7 Boolean 1.3.6.1.4.1.1466.115.121.1.15 DirectoryString (UTF-8 [STD63]) 1.3.6.1.4.1.1466.115.121.1.27 Integer 6. Definition of Matching Rules No new matching rules are defined by this document. The attribute types defined in Section 4 of this document reference matching rules defined in Section 4 of [RFC4517], which are summarized below: Matching Rule OID Matching Rule Name Usage ----------------------------- ------------------ -------- 2.5.13.13 booleanMatch EQUALITY 2.5.13.2 caseIgnoreMatch EQUALITY 2.5.13.14 integerMatch EQUALITY 2.5.13.15 integerOrderingMatch ORDERING 2.5.13.4 caseIgnoreSubstringsMatch SUBSTR 7. IANA Considerations This document does not define any new syntaxes or matching rules. This document defines a few new attribute types that have been registered by IANA per this document (see Section 7.1 below). All of the object classes and most of the attribute types described in this document were registered by IANA when RFC 3712 was published (see Section 7.2 below). Fleming & McDonald Informational [Page 42] RFC 7612 LDAP Schema for Printer Services June 2015 7.1. Registration of Attribute Types The following Attribute Type OIDs have been assigned by the IEEE-ISTO PWG (see Section 1.3.2) and have been registered by IANA. Subject: Request for Object Identifier Descriptor Registration Descriptor (short name): see table below Object Identifier: see table below Person & email address to contact for further information: see below Usage: attribute type Specification: RFC 7612 (this document) Author/Change Controller: Ira McDonald High North Inc. 221 Ridge Ave. Grand Marais, MI 49839 United States Phone: +1 906-494-2434 Email: blueroofmusic@gmail.com Comments: Attribute Type OID ------------------------------------ ---------------------- printer-device-id 1.3.18.0.2.24.46.1.101 printer-device-service-count 1.3.18.0.2.24.46.1.102 printer-uuid 1.3.18.0.2.24.46.1.104 printer-charge-info 1.3.18.0.2.24.46.1.105 printer-charge-info-uri 1.3.18.0.2.24.46.1.106 printer-geo-location 1.3.18.0.2.24.46.1.107 printer-ipp-features-supported 1.3.18.0.2.24.46.1.108 Fleming & McDonald Informational [Page 43] RFC 7612 LDAP Schema for Printer Services June 2015 7.2. Object Classes and Attribute Types from RFC 3712 This section is strictly informative. None of the LDAP OIDs listed in this section have been re-registered by IANA. The following Object Class OIDs were assigned by IBM (see Section 1.3.1) and were already registered by IANA when RFC 3712 was published. Object Class OID ------------------------------------ ---------------- slpServicePrinter 1.3.18.0.2.6.254 printerAbstract 1.3.18.0.2.6.258 printerService 1.3.18.0.2.6.255 printerServiceAuxClass 1.3.18.0.2.6.257 printerIPP 1.3.18.0.2.6.256 printerLPR 1.3.18.0.2.6.253 The following Attribute Type OIDs were assigned by IBM (see Section 1.3.1) and were already registered by IANA when RFC 3712 was published. Attribute Type OID ------------------------------------ ----------------- printer-uri 1.3.18.0.2.4.1140 printer-xri-supported 1.3.18.0.2.4.1107 printer-name 1.3.18.0.2.4.1135 printer-natural-language-configured 1.3.18.0.2.4.1119 printer-location 1.3.18.0.2.4.1136 printer-info 1.3.18.0.2.4.1139 printer-more-info 1.3.18.0.2.4.1134 printer-make-and-model 1.3.18.0.2.4.1138 printer-ipp-versions-supported 1.3.18.0.2.4.1133 printer-multiple-document-jobs-supported 1.3.18.0.2.4.1132 printer-charset-configured 1.3.18.0.2.4.1109 printer-charset-supported 1.3.18.0.2.4.1131 printer-generated-natural-language-supported 1.3.18.0.2.4.1137 printer-document-format-supported 1.3.18.0.2.4.1130 printer-color-supported 1.3.18.0.2.4.1129 printer-compression-supported 1.3.18.0.2.4.1128 printer-pages-per-minute 1.3.18.0.2.4.1127 printer-pages-per-minute-color 1.3.18.0.2.4.1126 printer-finishings-supported 1.3.18.0.2.4.1125 printer-number-up-supported 1.3.18.0.2.4.1124 printer-sides-supported 1.3.18.0.2.4.1123 printer-media-supported 1.3.18.0.2.4.1122 printer-media-local-supported 1.3.18.0.2.4.1117 printer-resolution-supported 1.3.18.0.2.4.1121 Fleming & McDonald Informational [Page 44] RFC 7612 LDAP Schema for Printer Services June 2015 printer-print-quality-supported 1.3.18.0.2.4.1120 printer-job-priority-supported 1.3.18.0.2.4.1110 printer-copies-supported 1.3.18.0.2.4.1118 printer-job-k-octets-supported 1.3.18.0.2.4.1111 printer-current-operator 1.3.18.0.2.4.1112 printer-service-person 1.3.18.0.2.4.1113 printer-delivery-orientation-supported 1.3.18.0.2.4.1114 printer-stacking-order-supported 1.3.18.0.2.4.1115 printer-output-features-supported 1.3.18.0.2.4.1116 printer-aliases 1.3.18.0.2.4.1108 8. Internationalization Considerations All text string attributes defined in this document of syntax 'DirectoryString' [RFC4517] have values that are encoded in UTF-8 [STD63], as required by [RFC4517]. A language tag [BCP47] for all of the text string attributes defined in this document is contained in the printer-natural-language-configured attribute. Therefore, all object classes defined in this document conform to the IETF Policy on Character Sets and Languages [BCP18]. Note: For interoperability and consistent text display, values of attributes defined in this document (a) SHOULD be normalized as recommended in "Unicode Format for Network Interchange" [RFC5198]; (b) SHOULD NOT contain DEL or any C0 or C1 control characters except for HT, CR, and LF; (c) SHOULD only contain CR and LF characters together (not as singletons); and (d) SHOULD NOT contain HT, CR, or LF characters in names, e.g., printer-name and printer-aliases. 9. Security Considerations See [RFC4513] for detailed guidance on authentication methods for LDAP and the use of TLS/1.2 [RFC5246] to supply connection confidentiality and data integrity for LDAP sessions. As with any LDAP schema, it is important to protect specific entries and attributes with the appropriate access control. It is particularly important that only administrators can modify entries defined in this LDAP Printer schema. Otherwise, an LDAP client might be fooled into diverting print service requests from the original Printer (or spooler) to a malicious intruder's host system, thus exposing the information in printed documents. Fleming & McDonald Informational [Page 45] RFC 7612 LDAP Schema for Printer Services June 2015 Note: Security vulnerabilities can arise if DEL or any C0 or C1 control characters are included in names, e.g., printer-name or printer-aliases. For additional security considerations regarding deploying Printers in an IPP environment, see Section 8 of [RFC2911]. 10. References 10.1. Normative References [BCP47] Phillips, A. and M. Davis, "Matching of Language Tags", BCP 47, RFC 4647, September 2006. Phillips, A., Ed., and M. Davis, Ed., "Tags for Identifying Languages", BCP 47, RFC 5646, September 2009. <http://www.rfc-editor.org/info/bcp47> [IANACHAR] Internet Assigned Numbers Authority (IANA) registry "Character Sets", <http://www.iana.org/assignments/character-sets>. [IANAIPP] Internet Assigned Numbers Authority (IANA) registry "Internet Printing Protocol (IPP) Registrations", <http://www.iana.org/assignments/ipp-registrations>. [IANAMIME] Internet Assigned Numbers Authority (IANA) registry "Media Types", <http://www.iana.org/assignments/ media-types/index.html>. [PWG5100.5] Carney, D., Hastings, T., and P. Zehler, "IPP Document Object", PWG 5100.5-2003, October 2003, <http://www.pwg.org/standards.html>. [PWG5100.6] Zehler, P., Herriot, R., and K. Ocke, "IPP Page Overrides", PWG 5100.6-2003, October 2003, <http://www.pwg.org/standards.html>. [PWG5100.11] Hastings, T. and D. Fullman, "IPP Job and Printer Extensions - Set 2 (JPS2)", PWG 5100.11-2010, October 2010, <http://www.pwg.org/standards.html>. [PWG5100.12] Bergman, R., Lewis, H., McDonald, I., and M. Sweet, "IPP Version 2.0 Second Edition (IPP/2.0 SE)", PWG 5100.12-2011, February 2011, <http://www.pwg.org/standards.html>. Fleming & McDonald Informational [Page 46] RFC 7612 LDAP Schema for Printer Services June 2015 [PWG5100.13] Sweet, M., McDonald, I., and P. Zehler, "IPP Job and Printer Extensions - Set 3 (JPS3)", PWG 5100.13-2012, July 2012, <http://www.pwg.org/standards.html>. [PWG5100.14] Sweet, M., McDonald, I., Mitchell, A., and J. Hutchings, "IPP Everywhere", PWG 5100.14-2013, January 2013, <http://www.pwg.org/standards.html>. [PWG5101.1] Sweet, M., Bergman, R., and T. Hastings, "PWG Media Standardized Names 2.0 (MSN2)", PWG 5101.1-2013, March 2013, <http://www.pwg.org/standards.html>. [PWG5107.2] McDonald, I., "PWG Command Set Format for IEEE 1284 Device ID v1.0", PWG 5107.2-2010, May 2010, <http://www.pwg.org/standards.html>. [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>. [RFC2617] Franks, J., Hallam-Baker, P., Hostetler, J., Lawrence, S., Leach, P., Luotonen, A., and L. Stewart, "HTTP Authentication: Basic and Digest Access Authentication", RFC 2617, DOI 10.17487/RFC2617, June 1999, <http://www.rfc-editor.org/info/rfc2617>. [RFC2707] Bergman, R., Hastings, T., Isaacson, S., and H. Lewis, "Job Monitoring MIB - V1.0", RFC 2707, DOI 10.17487/RFC2707, November 1999, <http://www.rfc-editor.org/info/rfc2707>. [RFC2911] Hastings, T., Ed., Herriot, R., deBry, R., Isaacson, S., and P. Powell, "Internet Printing Protocol/1.1: Model and Semantics", RFC 2911, DOI 10.17487/RFC2911, September 2000, <http://www.rfc-editor.org/info/rfc2911>. [RFC2926] Kempf, J., Moats, R., and P. St. Pierre, "Conversion of LDAP Schemas to and from SLP Templates", RFC 2926, DOI 10.17487/RFC2926, September 2000, <http://www.rfc-editor.org/info/rfc2926>. [RFC3510] Herriot, R. and I. McDonald, "Internet Printing Protocol/1.1: IPP URL Scheme", RFC 3510, DOI 10.17487/RFC3510, April 2003, <http://www.rfc-editor.org/info/rfc3510>. Fleming & McDonald Informational [Page 47] RFC 7612 LDAP Schema for Printer Services June 2015 [RFC3805] Bergman, R., Lewis, H., and I. McDonald, "Printer MIB v2", RFC 3805, DOI 10.17487/RFC3805, June 2004, <http://www.rfc-editor.org/info/rfc3805>. [RFC3987] Duerst, M. and M. Suignard, "Internationalized Resource Identifiers (IRIs)", RFC 3987, DOI 10.17487/RFC3987, January 2005, <http://www.rfc-editor.org/info/rfc3987>. [RFC3995] Herriot, R. and T. Hastings, "Internet Printing Protocol (IPP): Event Notifications and Subscriptions", RFC 3995, DOI 10.17487/RFC3995, March 2005, <http://www.rfc-editor.org/info/rfc3995>. [RFC4122] Leach, P., Mealling, M., and R. Salz, "A Universally Unique IDentifier (UUID) URN Namespace", RFC 4122, DOI 10.17487/RFC4122, July 2005, <http://www.rfc-editor.org/info/rfc4122>. [RFC4510] Zeilenga, K., Ed., "Lightweight Directory Access Protocol (LDAP): Technical Specification Road Map", RFC 4510, DOI 10.17487/RFC4510, June 2006, <http://www.rfc-editor.org/info/rfc4510>. [RFC4513] Harrison, R., Ed., "Lightweight Directory Access Protocol (LDAP): Authentication Methods and Security Mechanisms", RFC 4513, DOI 10.17487/RFC4513, June 2006, <http://www.rfc-editor.org/info/rfc4513>. [RFC4517] Legg, S., Ed., "Lightweight Directory Access Protocol (LDAP): Syntaxes and Matching Rules", RFC 4517, DOI 10.17487/RFC4517, June 2006, <http://www.rfc-editor.org/info/rfc4517>. [RFC4524] Zeilenga, K., Ed., "COSINE LDAP/X.500 Schema", RFC 4524, DOI 10.17487/RFC4524, June 2006, <http://www.rfc-editor.org/info/rfc4524>. [RFC5198] Klensin, J. and M. Padlipsky, "Unicode Format for Network Interchange", RFC 5198, DOI 10.17487/RFC5198, March 2008, <http://www.rfc-editor.org/info/rfc5198>. [RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security (TLS) Protocol Version 1.2", RFC 5246, DOI 10.17487/RFC5246, August 2008, <http://www.rfc-editor.org/info/rfc5246>. Fleming & McDonald Informational [Page 48] RFC 7612 LDAP Schema for Printer Services June 2015 [RFC5280] Cooper, D., Santesson, S., Farrell, S., Boeyen, S., Housley, R., and W. Polk, "Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile", RFC 5280, DOI 10.17487/RFC5280, May 2008, <http://www.rfc-editor.org/info/rfc5280>. [RFC5870] Mayrhofer, A. and C. Spanring, "A Uniform Resource Identifier for Geographic Locations ('geo' URI)", RFC 5870, DOI 10.17487/RFC5870, June 2010, <http://www.rfc-editor.org/info/rfc5870>. [RFC6818] Yee, P., "Updates to the Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile", RFC 6818, DOI 10.17487/RFC6818, January 2013, <http://www.rfc-editor.org/info/rfc6818>. [RFC7235] Fielding, R., Ed., and J. Reschke, Ed., "Hypertext Transfer Protocol (HTTP/1.1): Authentication", RFC 7235, DOI 10.17487/RFC7235, June 2014, <http://www.rfc-editor.org/info/rfc7235>. [RFC7472] McDonald, I. and M. Sweet, "Internet Printing Protocol (IPP) over HTTPS Transport Binding and the 'ipps' URI Scheme", RFC 7472, DOI 10.17487/RFC7472, March 2015, <http://www.rfc-editor.org/info/rfc7472>. [STD63] Yergeau, F., "UTF-8, a transformation format of ISO 10646", STD 63, RFC 3629, November 2003, <http://www.rfc-editor.org/info/std63>. [STD66] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform Resource Identifier (URI): Generic Syntax", STD 66, RFC 3986, January 2005, <http://www.rfc-editor.org/info/std66>. * Amplifying existing information leaks caused by side effects like caching. An attacker could learn information about the content of a 0-RTT message by replaying it to some cache node that has not cached some resource of interest, and then using a separate connection to check whether that resource has been added to the cache. This could be repeated with different cache nodes as often as the 0-RTT message is replayable. If data can be replayed a large number of times, additional attacks become possible, such as making repeated measurements of the speed of cryptographic operations. In addition, they may be able to overload rate-limiting systems. For a further description of these attacks, see [Mac17]. Ultimately, servers have the responsibility to protect themselves against attacks employing 0-RTT data replication. The mechanisms described in Section 8 are intended to prevent replay at the TLS layer but do not provide complete protection against receiving multiple copies of client data. TLS 1.3 falls back to the 1-RTT handshake when the server does not have any information about the client, e.g., because it is in a different cluster which does not share state or because the ticket has been deleted as described in Section 8.1. If the application-layer protocol retransmits data in this setting, then it is possible for an attacker to induce message duplication by sending the ClientHello to both the original cluster (which processes the data immediately) and another cluster which will fall back to 1-RTT and process the data upon application-layer replay. The scale of this attack is limited by the client's willingness to retry transactions and therefore only allows a limited amount of duplication, with each copy appearing as a new connection at the server. If implemented correctly, the mechanisms described in Section 8.1 and Section 8.2 prevent a replayed ClientHello and its associated 0-RTT data from being accepted multiple times by any cluster with consistent state; for servers which limit the use of 0-RTT to one cluster for a single ticket, then a given ClientHello and its associated 0-RTT data will only be accepted once. However, if state is not completely consistent, then an attacker might be able to have multiple copies of the data be accepted during the replication window. Because clients do not know the exact details of server behavior, they MUST NOT send messages in early data which are not safe to have replayed and which they would not be willing to retry across multiple 1-RTT connections. Rescorla Expires 27 September 2023 [Page 147] Internet-Draft TLS March 2023 Application protocols MUST NOT use 0-RTT data without a profile that defines its use. That profile needs to identify which messages or interactions are safe to use with 0-RTT and how to handle the situation when the server rejects 0-RTT and falls back to 1-RTT. In addition, to avoid accidental misuse, TLS implementations MUST NOT enable 0-RTT (either sending or accepting) unless specifically requested by the application and MUST NOT automatically resend 0-RTT data if it is rejected by the server unless instructed by the application. Server-side applications may wish to implement special processing for 0-RTT data for some kinds of application traffic (e.g., abort the connection, request that data be resent at the application layer, or delay processing until the handshake completes). In order to allow applications to implement this kind of processing, TLS implementations MUST provide a way for the application to determine if the handshake has completed. F.5.1. Replay and Exporters Replays of the ClientHello produce the same early exporter, thus requiring additional care by applications which use these exporters. In particular, if these exporters are used as an authentication channel binding (e.g., by signing the output of the exporter) an attacker who compromises the PSK can transplant authenticators between connections without compromising the authentication key. In addition, the early exporter SHOULD NOT be used to generate server-to-client encryption keys because that would entail the reuse of those keys. This parallels the use of the early application traffic keys only in the client-to-server direction. F.6. PSK Identity Exposure Because implementations respond to an invalid PSK binder by aborting the handshake, it may be possible for an attacker to verify whether a given PSK identity is valid. Specifically, if a server accepts both external-PSK and certificate-based handshakes, a valid PSK identity will result in a failed handshake, whereas an invalid identity will just be skipped and result in a successful certificate handshake. Servers which solely support PSK handshakes may be able to resist this form of attack by treating the cases where there is no valid PSK identity and where there is an identity but it has an invalid binder identically. Rescorla Expires 27 September 2023 [Page 148] Internet-Draft TLS March 2023 F.7. Sharing PSKs TLS 1.3 takes a conservative approach to PSKs by binding them to a specific KDF. By contrast, TLS 1.2 allows PSKs to be used with any hash function and the TLS 1.2 PRF. Thus, any PSK which is used with both TLS 1.2 and TLS 1.3 must be used with only one hash in TLS 1.3, which is less than optimal if users want to provision a single PSK. The constructions in TLS 1.2 and TLS 1.3 are different, although they are both based on HMAC. While there is no known way in which the same PSK might produce related output in both versions, only limited analysis has been done. Implementations can ensure safety from cross-protocol related output by not reusing PSKs between TLS 1.3 and TLS 1.2. F.8. Attacks on Static RSA Although TLS 1.3 does not use RSA key transport and so is not directly susceptible to Bleichenbacher-type attacks [Blei98]if TLS 1.3 servers also support static RSA in the context of previous versions of TLS, then it may be possible to impersonate the server for TLS 1.3 connections [JSS15]. TLS 1.3 implementations can prevent this attack by disabling support for static RSA across all versions of TLS. In principle, implementations might also be able to separate certificates with different keyUsage bits for static RSA decryption and RSA signature, but this technique relies on clients refusing to accept signatures using keys in certificates that do not have the digitalSignature bit set, and many clients do not enforce this restriction. Appendix G. Change Log [[RFC EDITOR: Please remove in final RFC.]] Since -06 - Updated text about differences from RFC 8446. - Clarify which parts of IANA considerations are new to this document. - Upgrade the requirement to initiate key update before exceeding key usage limits to MUST. - Add some text around use of the same cert for client and server. Since -05 * Port in text on key update limits from RFC 9147 (Issue 1257) * Clarify that you need to ignore NST if you don't do resumption (Issue 1280) * Discuss the privacy implications of external key reuse (Issue 1287) * Advice on key deletion (PR 1282) Rescorla Expires 27 September 2023 [Page 149] Internet-Draft TLS March 2023 * Clarify what unsolicited extensions means (PR 1275) * close_notify should be warning (PR 1290) * Reference RFC 8773 (PR 1296) * Add some more information about application bindings and cite 6125-bis (PR 1297) Since -04 * Update the extension table (Issue 1241) * Clarify user_canceled (Issue 1208) * Clarify 0-RTT cache side channels (Issue 1225) * Require that message reinjection be done with the current hash. Potentially a clarification and potentially a wire format change depending on previous interpretation (Issue 1227) Changelog not updated between -00 and -03 Since -00 * Update TLS 1.2 terminology * Specify "certificate-based" client authentication * Clarify that privacy guarantees don't apply when you have null encryption * Shorten some names * Address tracking implications of resumption Contributors Martin Abadi University of California, Santa Cruz abadi@cs.ucsc.edu Christopher Allen (co-editor of TLS 1.0) Alacrity Ventures ChristopherA@AlacrityManagement.com Nimrod Aviram Rescorla Expires 27 September 2023 [Page 150] Internet-Draft TLS March 2023 Tel Aviv University nimrod.aviram@gmail.com Richard Barnes Cisco rlb@ipv.sx Steven M. Bellovin Columbia University smb@cs.columbia.edu David Benjamin Google davidben@google.com Benjamin Beurdouche INRIA & Microsoft Research benjamin.beurdouche@ens.fr Karthikeyan Bhargavan (editor of [RFC7627]) INRIA karthikeyan.bhargavan@inria.fr Simon Blake-Wilson (co-author of [RFC4492]) BCI sblakewilson@bcisse.com Nelson Bolyard (co-author of [RFC4492]) Sun Microsystems, Inc. nelson@bolyard.com Ran Canetti IBM canetti@watson.ibm.com Matt Caswell OpenSSL matt@openssl.org Stephen Checkoway University of Illinois at Chicago sfc@uic.edu Pete Chown Skygate Technology Ltd Rescorla Expires 27 September 2023 [Page 151] Internet-Draft TLS March 2023 pc@skygate.co.uk Katriel Cohn-Gordon University of Oxford me@katriel.co.uk Cas Cremers University of Oxford cas.cremers@cs.ox.ac.uk Antoine Delignat-Lavaud (co-author of [RFC7627]) INRIA antdl@microsoft.com Tim Dierks (co-author of TLS 1.0, co-editor of TLS 1.1 and 1.2) Independent tim@dierks.org Roelof DuToit Symantec Corporation roelof_dutoit@symantec.com Taher Elgamal Securify taher@securify.com Pasi Eronen Nokia pasi.eronen@nokia.com Cedric Fournet Microsoft fournet@microsoft.com Anil Gangolli anil@busybuddha.org David M. Garrett dave@nulldereference.com Illya Gerasymchuk Independent illya@iluxonchik.me Alessandro Ghedini Cloudflare Inc. Rescorla Expires 27 September 2023 [Page 152] Internet-Draft TLS March 2023 alessandro@cloudflare.com Daniel Kahn Gillmor ACLU dkg@fifthhorseman.net Matthew Green Johns Hopkins University mgreen@cs.jhu.edu Jens Guballa ETAS jens.guballa@etas.com Felix Guenther TU Darmstadt mail@felixguenther.info Vipul Gupta (co-author of [RFC4492]) Sun Microsystems Laboratories vipul.gupta@sun.com Chris Hawk (co-author of [RFC4492]) Corriente Networks LLC chris@corriente.net Kipp Hickman Alfred Hoenes David Hopwood Independent Consultant david.hopwood@blueyonder.co.uk Marko Horvat MPI-SWS mhorvat@mpi-sws.org Jonathan Hoyland Royal Holloway, University of London jonathan.hoyland@gmail.com Subodh Iyengar Facebook subodh@fb.com Rescorla Expires 27 September 2023 [Page 153] Fleming & McDonald Informational [Page 49] RFC 7612 LDAP Schema for Printer Services June 2015 10.2. Informative References [BCP13] Freed, N. and J. Klensin, "Multipurpose Internet Mail Extensions (MIME) Part Four: Registration Procedures", BCP 13, RFC 4289, December 2005. Freed, N., Klensin, J., and T. Hansen, "Media Type Specifications and Registration Procedures", BCP 13, RFC 6838, January 2013. <http://www.rfc-editor.org/info/bcp13> [BCP18] Alvestrand, H., "IETF Policy on Character Sets and Languages", BCP 18, RFC 2277, January 1998, <http://www.rfc-editor.org/info/bcp18>. [BCP19] Freed, N. and J. Postel, "IANA Charset Registration Procedures", BCP 19, RFC 2978, October 2000, <http://www.rfc-editor.org/info/bcp19>. [RFC1179] McLaughlin, L., "Line printer daemon protocol", RFC 1179, DOI 10.17487/RFC1179, August 1990, <http://www.rfc-editor.org/info/rfc1179>. [RFC1951] Deutsch, P., "DEFLATE Compressed Data Format Specification version 1.3", RFC 1951, DOI 10.17487/RFC1951, May 1996, <http://www.rfc-editor.org/info/rfc1951>. [RFC1952] Deutsch, P., "GZIP file format specification version 4.3", RFC 1952, DOI 10.17487/RFC1952, May 1996, <http://www.rfc-editor.org/info/rfc1952>. [RFC1977] Schryver, V., "PPP BSD Compression Protocol", RFC 1977, DOI 10.17487/RFC1977, August 1996, <http://www.rfc-editor.org/info/rfc1977>. [RFC2079] Smith, M., "Definition of an X.500 Attribute Type and an Object Class to Hold Uniform Resource Identifiers (URIs)", RFC 2079, DOI 10.17487/RFC2079, January 1997, <http://www.rfc-editor.org/info/rfc2079>. [RFC2566] deBry, R., Hastings, T., Herriot, R., Isaacson, S., and P. Powell, "Internet Printing Protocol/1.0: Model and Semantics", RFC 2566, DOI 10.17487/RFC2566, April 1999, <http://www.rfc-editor.org/info/rfc2566>. Fleming & McDonald Informational [Page 50] RFC 7612 LDAP Schema for Printer Services June 2015 [RFC2608] Guttman, E., Perkins, C., Veizades, J., and M. Day, "Service Location Protocol, Version 2", RFC 2608, DOI 10.17487/RFC2608, June 1999, <http://www.rfc-editor.org/info/rfc2608>. [RFC3712] Fleming, P. and I. McDonald, "Lightweight Directory Access Protocol (LDAP): Schema for Printer Services", RFC 3712, DOI 10.17487/RFC3712, February 2004, <http://www.rfc-editor.org/info/rfc3712>. [RFC4559] Jaganathan, K., Zhu, L., and J. Brezak, "SPNEGO-based Kerberos and NTLM HTTP Authentication in Microsoft Windows", RFC 4559, DOI 10.17487/RFC4559, June 2006, <http://www.rfc-editor.org/info/rfc4559>. [SLPPRT20] IANA, "Service Location Protocol, Version 2 (SLPv2) Templates", <http://www.iana.org/assignments/svrloc-templates>. Fleming & McDonald Informational [Page 51] RFC 7612 LDAP Schema for Printer Services June 2015 Appendix A. Changes since RFC 3712 1) Added many editorial corrections and clarifications - corrected typos, missing words, and ambiguous sentences; - replaced lowercase 'printer' with titlecase 'Printer' for readability and consistency with IETF and IEEE-ISTO PWG IPP standards usage; - added implementation notes; - updated and added references. 2) Deleted length restrictions from formal definitions of DirectoryString syntax attributes - replaced with notes recommending length restrictions for compatibility with existing implementations of [RFC3712] and underlying string length limits in [RFC2707], [RFC2911], [RFC3805], [PWG5107.2], [PWG5100.13], and [PWG5100.14]. 3) Added new Printer attributes defined in [PWG5107.2], [PWG5100.13], and [PWG5100.14] (see Section 7.1) - updated the table of Printer attributes and source documents in Section 4 ("Definition of Attribute Types"); - added support for IEEE-ISTO PWG "IPP Everywhere" [PWG5100.14] project. 4) Added implementation note to Section 4 about string encodings - added discussion of 'List of xxx' and 'One of xxx' encodings; - stated that any of these attributes can be represented as multiple instances (i.e., to avoid length overflow). 5) Improved comma-delimited examples of string attributes - added both single-valued and multi-valued examples. Fleming & McDonald Informational [Page 52] RFC 7612 LDAP Schema for Printer Services June 2015 6) Clarified use of printer-xri-supported and printer-resolution-supported attributes, and their corresponding field delimiters - added note in Section 4 ("Definition of Attribute Types") to explain the origin of the different field delimiters; - added examples to show optional *trailing* whitespace after '<' delimiters in printer-xri-supported; - added examples to show optional *trailing* whitespace after '>' delimiters in printer-resolution-supported. 7) Clarified Section 8 ("Internationalization Considerations") - added note about Net-Unicode [RFC5198] and avoiding use of C0 and C1 control characters. 8) Clarified Section 9 ("Security Considerations") - added note about security vulnerabilities caused by use of DEL or any C0 or C1 control characters in names. 9) Clarified terms and abbreviations - renamed Section 2 ("Conventions Used in This Document"); - added Section 2.1 ("Requirements Language"); - added Section 2.2 ("LDAP Schema Descriptions"); - added Section 2.3 ("Abbreviations"). Internet-Draft TLS March 2023 Benjamin Kaduk Akamai Technologies kaduk@mit.edu Hubert Kario Red Hat Inc. hkario@redhat.com Phil Karlton (co-author of SSL 3.0) Leon Klingele Independent mail@leonklingele.de Paul Kocher (co-author of SSL 3.0) Cryptography Research paul@cryptography.com Hugo Krawczyk IBM hugokraw@us.ibm.com Adam Langley (co-author of [RFC7627]) Google agl@google.com Olivier Levillain ANSSI olivier.levillain@ssi.gouv.fr Xiaoyin Liu University of North Carolina at Chapel Hill xiaoyin.l@outlook.com Ilari Liusvaara Independent ilariliusvaara@welho.com Atul Luykx K.U. Leuven atul.luykx@kuleuven.be Colm MacCarthaigh Amazon Web Services colm@allcosts.net Rescorla Expires 27 September 2023 [Page 154] Internet-Draft TLS March 2023 Carl Mehner USAA carl.mehner@usaa.com Jan Mikkelsen Transactionware janm@transactionware.com Bodo Moeller (co-author of [RFC4492]) Google bodo@acm.org Kyle Nekritz Facebook knekritz@fb.com Erik Nygren Akamai Technologies erik+ietf@nygren.org Magnus Nystrom Microsoft mnystrom@microsoft.com Kazuho Oku DeNA Co., Ltd. kazuhooku@gmail.com Kenny Paterson Royal Holloway, University of London kenny.paterson@rhul.ac.uk Christopher Patton University of Florida cjpatton@ufl.edu Alfredo Pironti (co-author of [RFC7627]) INRIA alfredo.pironti@inria.fr Andrei Popov Microsoft andrei.popov@microsoft.com John {{{Preuß Mattsson}}} Ericsson Rescorla Expires 27 September 2023 [Page 155] Internet-Draft TLS March 2023 john.mattsson@ericsson.com Marsh Ray (co-author of [RFC7627]) Microsoft maray@microsoft.com Robert Relyea Netscape Communications relyea@netscape.com Kyle Rose Akamai Technologies krose@krose.org Jim Roskind Amazon jroskind@amazon.com Michael Sabin Joe Salowey Tableau Software joe@salowey.net Rich Salz Akamai rsalz@akamai.com David Schinazi Apple Inc. dschinazi@apple.com Sam Scott Royal Holloway, University of London me@samjs.co.uk Thomas Shrimpton University of Florida teshrim@ufl.edu Dan Simon Microsoft, Inc. dansimon@microsoft.com Brian Smith Independent brian@briansmith.org Rescorla Expires 27 September 2023 [Page 156] Internet-Draft TLS March 2023 Ben Smyth Ampersand www.bensmyth.com Brian Sniffen Akamai Technologies ietf@bts.evenmere.org Nick Sullivan Cloudflare Inc. nick@cloudflare.com Bjoern Tackmann University of California, San Diego btackmann@eng.ucsd.edu Tim Taubert Mozilla ttaubert@mozilla.com Martin Thomson Mozilla mt@mozilla.com Hannes Tschofenig Arm Limited Hannes.Tschofenig@arm.com Sean Turner sn3rd sean@sn3rd.com Steven Valdez Google svaldez@google.com Filippo Valsorda Cloudflare Inc. filippo@cloudflare.com Thyla van der Merwe Royal Holloway, University of London tjvdmerwe@gmail.com Victor Vasiliev Google vasilvv@google.com Rescorla Expires 27 September 2023 [Page 157] Internet-Draft TLS March 2023 Hoeteck Wee Ecole Normale Superieure, Paris hoeteck@alum.mit.edu Tom Weinstein David Wong NCC Group david.wong@nccgroup.trust Christopher A. Wood Apple Inc. cawood@apple.com Tim Wright Vodafone timothy.wright@vodafone.com Peter Wu Independent peter@lekensteyn.nl Kazu Yamamoto Internet Initiative Japan Inc. kazu@iij.ad.jp Author's Address Eric Rescorla Mozilla Email: ekr@rtfm.com Rescorla Expires 27 September 2023 [Page 158]