diff options
Diffstat (limited to 'doc/rfc/rfc9150.txt')
-rw-r--r-- | doc/rfc/rfc9150.txt | 524 |
1 files changed, 524 insertions, 0 deletions
diff --git a/doc/rfc/rfc9150.txt b/doc/rfc/rfc9150.txt new file mode 100644 index 0000000..f187420 --- /dev/null +++ b/doc/rfc/rfc9150.txt @@ -0,0 +1,524 @@ + + + + +Independent Submission N. Cam-Winget +Request for Comments: 9150 Cisco Systems +Category: Informational J. Visoky +ISSN: 2070-1721 ODVA + April 2022 + + + TLS 1.3 Authentication and Integrity-Only Cipher Suites + +Abstract + + This document defines the use of cipher suites for TLS 1.3 based on + Hashed Message Authentication Code (HMAC). Using these cipher suites + provides server and, optionally, mutual authentication and data + authenticity, but not data confidentiality. Cipher suites with these + properties are not of general applicability, but there are use cases, + specifically in Internet of Things (IoT) and constrained + environments, that do not require confidentiality of exchanged + messages while still requiring integrity protection, server + authentication, and optional client authentication. This document + gives examples of such use cases, with the caveat that prior to using + these integrity-only cipher suites, a threat model for the situation + at hand is needed, and a threat analysis must be performed within + that model to determine whether the use of integrity-only cipher + suites is appropriate. The approach described in this document is + not endorsed by the IETF and does not have IETF consensus, but it is + presented here to enable interoperable implementation of a reduced- + security mechanism that provides authentication and message integrity + without supporting confidentiality. + +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 candidates for any level of Internet Standard; + see Section 2 of RFC 7841. + + Information about the current status of this document, any errata, + and how to provide feedback on it may be obtained at + https://www.rfc-editor.org/info/rfc9150. + +Copyright Notice + + Copyright (c) 2022 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 + (https://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 + 2. Terminology + 3. Applicability Statement + 4. Cryptographic Negotiation Using Integrity-Only Cipher Suites + 5. Record Payload Protection for Integrity-Only Cipher Suites + 6. Key Schedule when Using Integrity-Only Cipher Suites + 7. Error Alerts + 8. IANA Considerations + 9. Security and Privacy Considerations + 10. References + 10.1. Normative References + 10.2. Informative References + Acknowledgements + Authors' Addresses + +1. Introduction + + There are several use cases in which communications privacy is not + strictly needed, although authenticity of the communications + transport is still very important. For example, within the + industrial automation space, there could be TCP or UDP communications + that command a robotic arm to move a certain distance at a certain + speed. Without authenticity guarantees, an attacker could modify the + packets to change the movement of the robotic arm, potentially + causing physical damage. However, the motion control commands are + not always considered to be sensitive information, and thus there is + no requirement to provide confidentiality. Another Internet of + Things (IoT) example with no strong requirement for confidentiality + is the reporting of weather information; however, message + authenticity is required to ensure integrity of the message. + + There is no requirement to encrypt messages in environments where the + information is not confidential, such as when there is no + intellectual property associated with the processes, or where the + threat model does not indicate any outsider attacks (such as in a + closed system). Note, however, that this situation will not apply + equally to all use cases (for example, in one case a robotic arm + might be used for a process that does not involve any intellectual + property but in another case might be used in a different process + that does contain intellectual property). Therefore, it is important + that a user or system developer carefully examine both the + sensitivity of the data and the system threat model to determine the + need for encryption before deploying equipment and security + protections. + + Besides having a strong need for authenticity and no need for + confidentiality, many of these systems also have a strong requirement + for low latency. Furthermore, several classes of IoT devices + (industrial or otherwise) have limited processing capability. + However, these IoT systems still gain great benefit from leveraging + TLS 1.3 for secure communications. Given the reduced need for + confidentiality, TLS 1.3 cipher suites [RFC8446] that maintain data + integrity without confidentiality are described in this document. + These cipher suites are not meant for general use, as they do not + meet the confidentiality and privacy goals of TLS. They should only + be used in cases where confidentiality and privacy are not a concern + and there are constraints on using cipher suites that provide the + full set of security properties. The approach described in this + document is not endorsed by the IETF and does not have IETF + consensus, but it is presented here to enable interoperable + implementation of a reduced-security mechanism that provides + authentication and message integrity with supporting confidentiality. + +2. Terminology + + This document adopts the conventions for normative language to + provide clarity of instructions to the implementer. The key words + "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", + "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" + in this document are to be interpreted as described in BCP 14 + [RFC2119] [RFC8174] when, and only when, they appear in all capitals, + as shown here. + +3. Applicability Statement + + The two cipher suites defined in this document, which are based on + Hashed Message Authentication Code (HMAC) SHAs [RFC6234], are + intended for a small limited set of applications where + confidentiality requirements are relaxed and the need to minimize the + number of cryptographic algorithms is prioritized. This section + describes some of those applicable use cases. + + Use cases in the industrial automation industry, while requiring data + integrity, often do not require confidential communications. Mainly, + data communicated to unmanned machines to execute repetitive tasks + does not convey private information. For example, there could be a + system with a robotic arm that paints the body of a car. This + equipment is used within a car manufacturing plant and is just one + piece of equipment in a multi-step manufacturing process. The + movements of this robotic arm are likely not a trade secret or + sensitive intellectual property, although some portions of the + manufacturing of the car might very well contain sensitive + intellectual property. Even the mixture for the paint itself might + be confidential, but the mixing is done by a completely different + piece of equipment and therefore communication to/from that equipment + can be encrypted without requiring the communication to/from the + robotic arm to be encrypted. Modern manufacturing often has + segmented equipment with different levels of risk related to + intellectual property, although nearly every communication + interaction has strong data authenticity requirements. + + Another use case that is closely related is that of fine-grained time + updates. Motion systems often rely on time synchronization to ensure + proper execution. Time updates are essentially public; there is no + threat from an attacker knowing the time update information. This + should make intuitive sense to those not familiar with these + applications; rarely if ever does time information present a serious + attack surface dealing with privacy. However, the authenticity is + still quite important. The consequences of maliciously modified time + data can vary from mere denial of service to actual physical damage, + depending on the particular situation and attacker capability. As + these time synchronization updates are very fine-grained, it is again + important for latency to be very low. + + A third use case deals with data related to alarms. Industrial + control sensing equipment can be configured to send alarm information + when it meets certain conditions -- for example, temperature goes + above or below a given threshold. Oftentimes, this data is used to + detect certain out-of-tolerance conditions, allowing an operator or + automated system to take corrective action. Once again, in many + systems the reading of this data doesn't grant the attacker + information that can be exploited; it is generally just information + regarding the physical state of the system. At the same time, being + able to modify this data would allow an attacker to either trigger + alarms falsely or cover up evidence of an attack that might allow for + detection of their malicious activity. Furthermore, sensors are + often low-powered devices that might struggle to process encrypted + and authenticated data. These sensors might be very cost sensitive + such that there is not enough processing power for data encryption. + Sending data that is just authenticated but not encrypted eases the + burden placed on these devices yet still allows the data to be + protected against any tampering threats. A user can always choose to + pay more for a sensor with encryption capability, but for some, data + authenticity will be sufficient. + + A fourth use case considers the protection of commands in the railway + industry. In railway control systems, no confidentiality + requirements are applied for the command exchange between an + interlocking controller and a railway equipment controller (for + instance, a railway point controller of a tram track where the + position of the controlled point is publicly available). However, + protecting the integrity and authenticity of those commands is vital; + otherwise, an adversary could change the target position of the point + by modifying the commands, which consequently could lead to the + derailment of a passing train. Furthermore, requirements for + providing flight-data recording of the safety-related network traffic + can only be fulfilled through using authenticity-only ciphers as, + typically, the recording is used by a third party responsible for the + analysis after an accident. The analysis requires such third party + to extract the safety-related commands from the recording. + + The fifth use case deals with data related to civil aviation + airplanes and ground communication. Pilots can send and receive + messages to/from ground control, such as airplane route-of-flight + updates, weather information, controller and pilot communication, and + airline back-office communication. Similarly, the Air Traffic + Control (ATC) service uses air-to-ground communication to receive the + surveillance data that relies on (is dependent on) downlink reports + from an airplane's avionics. This communication occurs automatically + in accordance with contracts established between the ATC ground + system and the airplane's avionics. Reports can be sent whenever + specific events occur or specific time intervals are reached. In + many systems, the reading of this data doesn't grant the attacker + information that can be exploited; it is generally just information + regarding the states of the airplane, controller pilot communication, + meteorological information, etc. At the same time, being able to + modify this data would allow an attacker to either put aircraft in + the wrong flight trajectory or provide false information to ground + control that might delay flights, damage property, or harm life. + Sending data that is not encrypted but is authenticated allows the + data to be protected against any tampering threats. Data + authenticity is sufficient for the air traffic, weather, and + surveillance information exchanges between airplanes and the ground + systems. + + The above use cases describe the requirements where confidentiality + is not needed and/or interferes with other requirements. Some of + these use cases are based on devices that come with a small runtime + memory footprint and reduced processing power; therefore, the need to + minimize the number of cryptographic algorithms used is a priority. + Despite this, it is noted that memory, performance, and processing + power implications of any given algorithm or set of algorithms are + highly dependent on hardware and software architecture. Therefore, + although these cipher suites may provide performance benefits, they + will not necessarily provide these benefits in all cases on all + platforms. Furthermore, in some use cases, third-party inspection of + data is specifically needed, which is also supported through the lack + of confidentiality mechanisms. + +4. Cryptographic Negotiation Using Integrity-Only Cipher Suites + + The cryptographic negotiation as specified in [RFC8446], + Section 4.1.1 remains the same, with the inclusion of the following + cipher suites: + + TLS_SHA256_SHA256 {0xC0,0xB4} + + TLS_SHA384_SHA384 {0xC0,0xB5} + + As defined in [RFC8446], TLS 1.3 cipher suites denote the + Authenticated Encryption with Associated Data (AEAD) algorithm for + record protection and the hash algorithm to use with the HMAC-based + Key Derivation Function (HKDF). The cipher suites provided by this + document are defined in a similar way, but they use the HMAC + authentication tag to model the AEAD interface, as only an HMAC is + provided for record protection (without encryption). These cipher + suites allow the use of SHA-256 or SHA-384 as the HMAC for data + integrity protection as well as its use for the HKDF. The + authentication mechanisms remain unchanged with the intent to only + update the cipher suites to relax the need for confidentiality. + + Given that these cipher suites do not support confidentiality, they + MUST NOT be used with authentication and key exchange methods that + rely on confidentiality. + +5. Record Payload Protection for Integrity-Only Cipher Suites + + Record payload protection as defined in [RFC8446] is retained in + modified form when integrity-only cipher suites are used. Note that + due to the purposeful use of hash algorithms, instead of AEAD + algorithms, confidentiality protection of the record payload is not + provided. This section describes the mapping of record payload + structures when integrity-only cipher suites are employed. + + Given that there is no encryption to be done at the record layer, the + operations "Protect" and "Unprotect" take the place of "AEAD-Encrypt" + and "AEAD-Decrypt" [RFC8446], respectively. + + As integrity protection is provided over the full record, the + encrypted_record in the TLSCiphertext along with the additional_data + input to protected_data (termed AEADEncrypted data in [RFC8446]) as + defined in Section 5.2 of [RFC8446] remain the same. The + TLSCiphertext.length for the integrity cipher suites will be: + + TLS_SHA256_SHA256: + TLSCiphertext.length = TLSInnerPlaintext_length + 32 + + TLS_SHA384_SHA384: + TLSCiphertext.length = TLSInnerPlaintext_length + 48 + + Note that TLSInnerPlaintext_length is not defined as an explicit + field in [RFC8446]; this refers to the length of the encoded + TLSInnerPlaintext structure. + + The resulting protected_record is the concatenation of the + TLSInnerPlaintext with the resulting HMAC. Note that this is + analogous to the "encrypted_record" as defined in [RFC8446], although + it is referred to as a "protected_record" because of the lack of + confidentiality via encryption. With this mapping, the record + validation order as defined in Section 5.2 of [RFC8446] remains the + same. That is, the encrypted_record field of TLSCiphertext is set + to: + + encrypted_record = TLS13-HMAC-Protected = TLSInnerPlaintext || + HMAC(write_key, nonce || additional_data || TLSInnerPlaintext) + + Here, "nonce" refers to the per-record nonce described in Section 5.3 + of [RFC8446]. + + For DTLS 1.3, the DTLSCiphertext is set to: + + encrypted_record = DTLS13-HMAC-Protected = DTLSInnerPlaintext || + HMAC(write_key, nonce || additional_data || DTLSInnerPlaintext) + + The DTLS "nonce" refers to the per-record nonce described in + Section 4.2.2 of [DTLS13]. + + The Protect and Unprotect operations provide the integrity protection + using HMAC SHA-256 or HMAC SHA-384 as described in [RFC6234]. + + Due to the lack of encryption of the plaintext, record padding does + not provide any obfuscation as to the plaintext size, although it can + be optionally included. + +6. Key Schedule when Using Integrity-Only Cipher Suites + + The key derivation process for integrity-only cipher suites remains + the same as that defined in [RFC8446]. The only difference is that + the keys used to protect the tunnel apply to the negotiated HMAC + SHA-256 or HMAC SHA-384 ciphers. Note that the traffic key material + (client_write_key, client_write_iv, server_write_key, and + server_write_iv) MUST be calculated as per [RFC8446], Section 7.3. + The key lengths and Initialization Vectors (IVs) for these cipher + suites are according to the hash output lengths. In other words, the + following key lengths and IV lengths SHALL be: + + +===================+============+===========+ + | Cipher Suite | Key Length | IV Length | + +===================+============+===========+ + | TLS_SHA256_SHA256 | 32 Bytes | 32 Bytes | + +-------------------+------------+-----------+ + | TLS_SHA384_SHA384 | 48 Bytes | 48 Bytes | + +-------------------+------------+-----------+ + + Table 1 + +7. Error Alerts + + The error alerts as defined by [RFC8446] remain the same; in + particular: + + bad_record_mac: This alert can also occur for a record whose message + authentication code cannot be validated. Since these cipher + suites do not involve record encryption, this alert will only + occur when the HMAC fails to verify. + + decrypt_error: This alert, as described in [RFC8446], Section 6.2, + occurs when the signature or message authentication code cannot be + validated. Note that this error is only sent during the + handshake, not for an error in validating record HMACs. + +8. IANA Considerations + + IANA has registered the following cipher suites, defined by this + document, in the "TLS Cipher Suites" registry: + + +===========+===================+=========+=============+ + | Value | Description | DTLS-OK | Recommended | + +===========+===================+=========+=============+ + | 0xC0,0xB4 | TLS_SHA256_SHA256 | Y | N | + +-----------+-------------------+---------+-------------+ + | 0xC0,0xB5 | TLS_SHA384_SHA384 | Y | N | + +-----------+-------------------+---------+-------------+ + + Table 2 + +9. Security and Privacy Considerations + + In general, except for confidentiality and privacy, the security + considerations detailed in [RFC8446] and [RFC5246] apply to this + document. Furthermore, as the cipher suites described in this + document do not provide any confidentiality, it is important that + they only be used in cases where there are no confidentiality or + privacy requirements and concerns; the runtime memory requirements + can accommodate support for authenticity-only cryptographic + constructs. + + With the lack of data encryption specified in this specification, no + confidentiality or privacy is provided for the data transported via + the TLS session. That is, the record layer is not encrypted when + using these cipher suites, nor is the handshake. To highlight the + loss of privacy, the information carried in the TLS handshake, which + includes both the server and client certificates, while integrity + protected, will be sent unencrypted. Similarly, other TLS extensions + that may be carried in the server's EncryptedExtensions message will + only be integrity protected without provisions for confidentiality. + Furthermore, with this lack of confidentiality, any private Pre- + Shared Key (PSK) data MUST NOT be sent in the handshake while using + these cipher suites. However, as PSKs may be loaded externally, + these cipher suites can be used with the 0-RTT handshake defined in + [RFC8446], with the same security implications discussed therein + applied. + + Application protocols that build on TLS or DTLS for protection (e.g., + HTTP) may have implicit assumptions of data confidentiality. Any + assumption of data confidentiality is invalidated by the use of these + cipher suites, as no data confidentiality is provided. This applies + to any data sent over the application-data channel (e.g., bearer + tokens in HTTP), as data requiring confidentiality MUST NOT be sent + using these cipher suites. + + Limits on key usage for AEAD-based ciphers are described in + [RFC8446]. However, as the cipher suites discussed here are not + AEAD, those same limits do not apply. The general security + properties of HMACs discussed in [RFC2104] and [BCK1] apply. + Additionally, security considerations on the algorithm's strength + based on the HMAC key length and truncation length further described + in [RFC4868] also apply. Until further cryptanalysis demonstrates + limitations on key usage for HMACs, general practice for key usage + recommends that implementations place limits on the lifetime of the + HMAC keys and invoke a key update as described in [RFC8446] prior to + reaching this limit. + + DTLS 1.3 defines a mechanism for encrypting the DTLS record sequence + numbers. However, as these cipher suites do not utilize encryption, + the record sequence numbers are sent unencrypted. That is, the + procedure for DTLS record sequence number protection is to apply no + protection for these cipher suites. + + Given the lack of confidentiality, these cipher suites MUST NOT be + enabled by default. As these cipher suites are meant to serve the + IoT market, it is important that any IoT endpoint that uses them be + explicitly configured with a policy of non-confidential + communications. + +10. References + +10.1. Normative References + + [BCK1] Bellare, M., Canetti, R., and H. Krawczyk, "Keying Hash + Functions for Message Authentication", + DOI 10.1007/3-540-68697-5_1, 1996, + <https://link.springer.com/ + chapter/10.1007/3-540-68697-5_1>. + + [DTLS13] Rescorla, E., Tschofenig, H., and N. Modadugu, "The + Datagram Transport Layer Security (DTLS) Protocol Version + 1.3", RFC 9147, DOI 10.17487/RFC9147, April 2022, + <https://www.rfc-editor.org/info/rfc9147>. + + [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>. + + [RFC4868] Kelly, S. and S. Frankel, "Using HMAC-SHA-256, HMAC-SHA- + 384, and HMAC-SHA-512 with IPsec", RFC 4868, + DOI 10.17487/RFC4868, May 2007, + <https://www.rfc-editor.org/info/rfc4868>. + + [RFC6234] Eastlake 3rd, D. and T. Hansen, "US Secure Hash Algorithms + (SHA and SHA-based HMAC and HKDF)", RFC 6234, + DOI 10.17487/RFC6234, May 2011, + <https://www.rfc-editor.org/info/rfc6234>. + + [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>. + + [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>. + +10.2. Informative References + + [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>. + +Acknowledgements + + The authors would like to acknowledge the work done by Industrial + Communications Standards Groups (such as ODVA) as the motivation for + this document. We would also like to thank Steffen Fries for + providing a fourth use case and Madhu Niraula for a fifth use case. + In addition, we are grateful for the advice and feedback from Joe + Salowey, Blake Anderson, David McGrew, Clement Zeller, and Peter Wu. + +Authors' Addresses + + Nancy Cam-Winget + Cisco Systems + 3550 Cisco Way + San Jose, CA 95134 + United States of America + Email: ncamwing@cisco.com + + + Jack Visoky + ODVA + 1 Allen Bradley Dr + Mayfield Heights, OH 44124 + United States of America + Email: jmvisoky@ra.rockwell.com |