diff options
author | Thomas Voss <mail@thomasvoss.com> | 2024-11-27 20:54:24 +0100 |
---|---|---|
committer | Thomas Voss <mail@thomasvoss.com> | 2024-11-27 20:54:24 +0100 |
commit | 4bfd864f10b68b71482b35c818559068ef8d5797 (patch) | |
tree | e3989f47a7994642eb325063d46e8f08ffa681dc /doc/rfc/rfc7924.txt | |
parent | ea76e11061bda059ae9f9ad130a9895cc85607db (diff) |
doc: Add RFC documents
Diffstat (limited to 'doc/rfc/rfc7924.txt')
-rw-r--r-- | doc/rfc/rfc7924.txt | 1067 |
1 files changed, 1067 insertions, 0 deletions
diff --git a/doc/rfc/rfc7924.txt b/doc/rfc/rfc7924.txt new file mode 100644 index 0000000..0bba178 --- /dev/null +++ b/doc/rfc/rfc7924.txt @@ -0,0 +1,1067 @@ + + + + + + +Internet Engineering Task Force (IETF) S. Santesson +Request for Comments: 7924 3xA Security AB +Category: Standards Track H. Tschofenig +ISSN: 2070-1721 ARM Ltd. + July 2016 + + + Transport Layer Security (TLS) Cached Information Extension + +Abstract + + Transport Layer Security (TLS) handshakes often include fairly static + information, such as the server certificate and a list of trusted + certification authorities (CAs). This information can be of + considerable size, particularly if the server certificate is bundled + with a complete certificate chain (i.e., the certificates of + intermediate CAs up to the root CA). + + This document defines an extension that allows a TLS client to inform + a server of cached information, thereby enabling the server to omit + already available information. + +Status of This Memo + + This is an Internet Standards Track document. + + This document is a product of the Internet Engineering Task Force + (IETF). It represents the consensus of the IETF community. It has + received public review and has been approved for publication by the + Internet Engineering Steering Group (IESG). Further information on + Internet Standards is available in 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 + http://www.rfc-editor.org/info/rfc7924. + + + + + + + + + + + + + + + + +Santesson & Tschofenig Standards Track [Page 1] + +RFC 7924 TLS Cached Information Extension July 2016 + + +Copyright Notice + + Copyright (c) 2016 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. Code Components extracted from this document must + include Simplified BSD License text as described in Section 4.e of + the Trust Legal Provisions and are provided without warranty as + described in the Simplified BSD License. + +Table of Contents + + 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 + 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3 + 3. Cached Information Extension . . . . . . . . . . . . . . . . 3 + 4. Exchange Specification . . . . . . . . . . . . . . . . . . . 5 + 4.1. Server Certificate Message . . . . . . . . . . . . . . . 6 + 4.2. CertificateRequest Message . . . . . . . . . . . . . . . 7 + 5. Fingerprint Calculation . . . . . . . . . . . . . . . . . . . 7 + 6. Example . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 + 7. Security Considerations . . . . . . . . . . . . . . . . . . . 10 + 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 10 + 8.1. New Entry to the TLS ExtensionType Registry . . . . . . . 10 + 8.2. New Registry for CachedInformationType . . . . . . . . . 11 + 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 11 + 9.1. Normative References . . . . . . . . . . . . . . . . . . 11 + 9.2. Informative References . . . . . . . . . . . . . . . . . 12 + Appendix A. Example . . . . . . . . . . . . . . . . . . . . . . 13 + Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . 18 + Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 19 + + + + + + + + + + + + + + + + +Santesson & Tschofenig Standards Track [Page 2] + +RFC 7924 TLS Cached Information Extension July 2016 + + +1. Introduction + + Reducing the amount of information exchanged during a Transport Layer + Security handshake to a minimum helps to improve performance in + environments where devices are connected to a network with a low + bandwidth and lossy radio technology. With the Internet of Things, + such environments exist, for example, when devices use IEEE 802.15.4, + Bluetooth Low Energy, or low power wide area networks. For more + information about the challenges with smart object deployments, + please see [RFC6574]. + + This specification defines a TLS extension that allows a client and a + server to exclude transmission information cached in an earlier TLS + handshake. + + A typical example exchange may therefore look as follows. First, the + client and the server execute the full TLS handshake. The client + then caches the certificate provided by the server. When the TLS + client connects to the TLS server some time in the future, without + using session resumption, it then attaches the "cached_info" + extension defined in this document to the ClientHello message to + indicate that it has cached the certificate, and it provides the + fingerprint of it. If the server's certificate has not changed, then + the TLS server does not need to send its certificate and the + corresponding certificate chain again. In case information has + changed, which can be seen from the fingerprint provided by the + client, the certificate payload is transmitted to the client to allow + the client to update the cache. + +2. Terminology + + The key words "MUST", "MUST NOT", "REQUIRED", "MUST", "MUST NOT", + "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this + document are to be interpreted as described in [RFC2119]. + + This document refers to the TLS protocol, but the description is + equally applicable to Datagram Transport Layer Security (DTLS) as + well. + +3. Cached Information Extension + + This document defines a new extension type (cached_info(25)), which + is used in ClientHello and ServerHello messages. The extension type + is specified as follows. + + enum { + cached_info(25), (65535) + } ExtensionType; + + + +Santesson & Tschofenig Standards Track [Page 3] + +RFC 7924 TLS Cached Information Extension July 2016 + + + The extension_data field of this extension, when included in the + ClientHello, MUST contain the CachedInformation structure. The + client MAY send multiple CachedObjects of the same + CachedInformationType. This may, for example, be the case when the + client has cached multiple certificates from a server. + + enum { + cert(1), cert_req(2) (255) + } CachedInformationType; + + struct { + select (type) { + case client: + CachedInformationType type; + opaque hash_value<1..255>; + case server: + CachedInformationType type; + } body; + } CachedObject; + + struct { + CachedObject cached_info<1..2^16-1>; + } CachedInformation; + + This document defines the following two types: + + 'cert' type for not sending the complete server certificate message: + + With the type field set to 'cert', the client MUST include the + fingerprint of the Certificate message in the hash_value field. + For this type, the fingerprint MUST be calculated using the + procedure described in Section 5 with the Certificate message as + input data. + + 'cert_req' Type for not sending the complete CertificateRequest + Message: + + With the type set to 'cert_req', the client MUST include the + fingerprint of the CertificateRequest message in the hash_value + field. For this type, the fingerprint MUST be calculated using + the procedure described in Section 5 with the CertificateRequest + message as input data. + + New cached info types can be added following the policy described in + the IANA Considerations (Section 8). New message digest algorithms + for use with these types can also be added by registering a new type + that makes use of the updated message digest algorithm. For + practical reasons, we recommend reusing hash algorithms already + + + +Santesson & Tschofenig Standards Track [Page 4] + +RFC 7924 TLS Cached Information Extension July 2016 + + + available with TLS ciphersuites. To avoid additional code and to + keep the collision probability low, new hash algorithms MUST NOT have + a collision resistance worse than SHA-256. + +4. Exchange Specification + + Clients supporting this extension MAY include the "cached_info" + extension in the (extended) ClientHello. If the client includes the + extension, then it MUST contain one or more CachedObject attributes. + + A server supporting this extension MAY include the "cached_info" + extension in the (extended) ServerHello. By returning the + "cached_info" extension, the server indicates that it supports the + cached info types. For each indicated cached info type, the server + MUST alter the transmission of respective payloads, according to the + rules outlined with each type. If the server includes the extension, + it MUST only include CachedObjects of a type also supported by the + client (as expressed in the ClientHello). For example, if a client + indicates support for 'cert' and 'cert_req', then the server cannot + respond with a "cached_info" attribute containing support for + ('foo-bar'). + + Since the client includes a fingerprint of information it cached (for + each indicated type), the server is able to determine whether cached + information is stale. If the server supports this specification and + notices a mismatch between the data cached by the client and its own + information, then the server MUST include the information in full and + MUST NOT list the respective type in the "cached_info" extension. + + Note: If a server is part of a hosting environment, then the client + may have cached multiple data items for a single server. To allow + the client to select the appropriate information from the cache, it + is RECOMMENDED that the client utilizes the Server Name Indication + (SNI) extension [RFC6066]. + + Following a successful exchange of the "cached_info" extension in the + ClientHello and ServerHello, the server alters sending the + corresponding handshake message. How information is altered from the + handshake messages and for the types defined in this specification is + defined in Sections 4.1 and 4.2, respectively. + + Appendix A shows an example hash calculation, and Section 6 + illustrates an example protocol exchange. + + + + + + + + +Santesson & Tschofenig Standards Track [Page 5] + +RFC 7924 TLS Cached Information Extension July 2016 + + +4.1. Server Certificate Message + + When a ClientHello message contains the "cached_info" extension with + a type set to 'cert', then the server MAY send the Certificate + message shown in Figure 1 under the following conditions: + + o The server software implements the "cached_info" extension defined + in this specification. + + o The 'cert' "cached_info" extension is enabled (for example, a + policy allows the use of this extension). + + o The server compared the value in the hash_value field of the + client-provided "cached_info" extension with the fingerprint of + the Certificate message it normally sends to clients. This check + ensures that the information cached by the client is current. The + procedure for calculating the fingerprint is described in + Section 5. + + The original certificate handshake message syntax is defined in + [RFC5246] and has been extended with [RFC7250]. RFC 7250 allows the + certificate payload to contain only the SubjectPublicKeyInfo instead + of the full information typically found in a certificate. Hence, + when this specification is used in combination with [RFC7250] and the + negotiated certificate type is a raw public key, then the TLS server + omits sending a certificate payload that contains an ASN.1 + certificate structure with the included SubjectPublicKeyInfo rather + than the full certificate chain. As such, this extension is + compatible with the raw public key extension defined in RFC 7250. + Note: We assume that the server implementation is able to select the + appropriate certificate or SubjectPublicKeyInfo from the received + hash value. If the SNI extension is used by the client, then the + server has additional information to guide the selection of the + appropriate cached info. + + When the cached info specification is used, then a modified version + of the Certificate message is exchanged. The modified structure is + shown in Figure 1. + + struct { + opaque hash_value<1..255>; + } Certificate; + + Figure 1: Cached Info Certificate Message + + + + + + + +Santesson & Tschofenig Standards Track [Page 6] + +RFC 7924 TLS Cached Information Extension July 2016 + + +4.2. CertificateRequest Message + + When a fingerprint for an object of type 'cert_req' is provided in + the ClientHello, the server MAY send the CertificateRequest message + shown in Figure 2 under the following conditions: + + o The server software implements the "cached_info" extension defined + in this specification. + + o The 'cert_req' "cached_info" extension is enabled (for example, a + policy allows the use of this extension). + + o The server compared the value in the hash_value field of the + client-provided "cached_info" extension with the fingerprint of + the CertificateRequest message it normally sends to clients. This + check ensures that the information cached by the client is + current. The procedure for calculating the fingerprint is + described in Section 5. + + o The server wants to request a certificate from the client. + + The original CertificateRequest handshake message syntax is defined + in [RFC5246]. The modified structure of the CertificateRequest + message is shown in Figure 2. + + struct { + opaque hash_value<1..255>; + } CertificateRequest; + + Figure 2: Cached Info CertificateRequest Message + + The CertificateRequest payload is the input parameter to the + fingerprint calculation described in Section 5. + +5. Fingerprint Calculation + + The fingerprint for the two cached info objects defined in this + document MUST be computed as follows: + + 1. Compute the SHA-256 [RFC6234] hash of the input data. The input + data depends on the cached info type. This document defines two + cached info types, described in Sections 4.1 and in 4.2. Note + that the computed hash only covers the input data structure (and + not any type and length information of the record layer). + Appendix A shows an example. + + 2. Use the output of the SHA-256 hash. + + + + +Santesson & Tschofenig Standards Track [Page 7] + +RFC 7924 TLS Cached Information Extension July 2016 + + + The purpose of the fingerprint provided by the client is to help the + server select the correct information. For example, in case of a + Certificate message, the fingerprint identifies the server + certificate (and the corresponding private key) for use with the rest + of the handshake. Servers may have more than one certificate, and + therefore a hash needs to be long enough to keep the probably of hash + collisions low. On the other hand, the cached info design aims to + reduce the amount of data being exchanged. The security of the + handshake depends on the private key and not on the size of the + fingerprint. Hence, the fingerprint is a way to prevent the server + from accidentally selecting the wrong information. If an attacker + injects an incorrect fingerprint, then two outcomes are possible: (1) + the fingerprint does not relate to any cached state and the server + has to fall back to a full exchange, and (2) if the attacker manages + to inject a fingerprint that refers to data the client has not + cached, then the exchange will fail later when the client continues + with the handshake and aims to verify the digital signature. The + signature verification will fail since the public key cached by the + client will not correspond to the private key that was used by the + server to sign the message. + +6. Example + + In the regular, full TLS handshake exchange, shown in Figure 3, the + TLS server provides its certificate in the certificate payload to the + client; see step (1). This allows the client to store the + certificate for future use. After some time, the TLS client again + interacts with the same TLS server and makes use of the TLS + "cached_info" extension, as shown in Figure 4. The TLS client + indicates support for this specification via the "cached_info" + extension, see step (2), and indicates that it has stored the + certificate from the earlier exchange (by indicating the 'cert' + type). With step (3), the TLS server acknowledges the support of the + 'cert' type and by including the value in the ServerHello, it informs + the client that the content of the certificate payload contains the + fingerprint of the certificate instead of the payload, defined in RFC + 5246, of the Certificate message; see step (4). + + + + + + + + + + + + + + +Santesson & Tschofenig Standards Track [Page 8] + +RFC 7924 TLS Cached Information Extension July 2016 + + + ClientHello -> + <- ServerHello + Certificate* // (1) + ServerKeyExchange* + CertificateRequest* + ServerHelloDone + + Certificate* + ClientKeyExchange + CertificateVerify* + [ChangeCipherSpec] + Finished -> + + <- [ChangeCipherSpec] + Finished + + Application Data <-------> Application Data + + Figure 3: Example Message Exchange: Initial (Full) Exchange + + + ClientHello + cached_info=(cert) -> // (2) + <- ServerHello + cached_info=(cert) (3) + Certificate (4) + ServerKeyExchange* + ServerHelloDone + + ClientKeyExchange + CertificateVerify* + [ChangeCipherSpec] + Finished -> + + <- [ChangeCipherSpec] + Finished + + Application Data <-------> Application Data + + Figure 4: Example Message Exchange: TLS Cached Extension Usage + + + + + + + + + + + +Santesson & Tschofenig Standards Track [Page 9] + +RFC 7924 TLS Cached Information Extension July 2016 + + +7. Security Considerations + + This specification defines a mechanism to reference stored state + using a fingerprint. Sending a fingerprint of cached information in + an unencrypted handshake, as the ClientHello and ServerHello does, + may allow an attacker or observer to correlate independent TLS + exchanges. While some information elements used in this + specification, such as server certificates, are public objects and + usually do not contain sensitive information, other types that are + not yet defined may. Those who implement and deploy this + specification should therefore make an informed decision whether the + cached information is in line with their security and privacy goals. + In case of concerns, it is advised to avoid sending the fingerprint + of the data objects in clear. + + The use of the "cached_info" extension allows the server to send + significantly smaller TLS messages. Consequently, these omitted + parts of the messages are not included in the transcript of the + handshake in the TLS Finish message. However, since the client and + the server communicate the hash values of the cached data in the + initial handshake messages, the fingerprints are included in the TLS + Finish message. + + Clients MUST ensure that they only cache information from legitimate + sources. For example, when the client populates the cache from a TLS + exchange, then it must only cache information after the successful + completion of a TLS exchange to ensure that an attacker does not + inject incorrect information into the cache. Failure to do so allows + for man-in-the-middle attacks. + + Security considerations for the fingerprint calculation are discussed + in Section 5. + +8. IANA Considerations + +8.1. New Entry to the TLS ExtensionType Registry + + IANA has added an entry to the existing TLS "ExtensionType Values" + registry, defined in [RFC5246], for cached_info(25) defined in this + document. + + + + + + + + + + + +Santesson & Tschofenig Standards Track [Page 10] + +RFC 7924 TLS Cached Information Extension July 2016 + + +8.2. New Registry for CachedInformationType + + IANA has established a registry titled "TLS CachedInformationType + Values". The entries in the registry are: + + Value Description + ----- ----------- + 0 Reserved + 1 cert + 2 cert_req + 224-255 Reserved for Private Use + + The policy for adding new values to this registry, following the + terminology defined in [RFC5226], is as follows: + + o 0-63 (decimal): Standards Action + + o 64-223 (decimal): Specification Required + +9. References + +9.1. Normative References + + [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>. + + [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>. + + [RFC6066] Eastlake 3rd, D., "Transport Layer Security (TLS) + Extensions: Extension Definitions", RFC 6066, + DOI 10.17487/RFC6066, January 2011, + <http://www.rfc-editor.org/info/rfc6066>. + + [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, + <http://www.rfc-editor.org/info/rfc6234>. + + + + + + + + + +Santesson & Tschofenig Standards Track [Page 11] + +RFC 7924 TLS Cached Information Extension July 2016 + + +9.2. Informative References + + [ASN.1-Dump] + Gutmann, P., "ASN.1 Object Dump Program", November 2010, + <http://manpages.ubuntu.com/manpages/precise/man1/ + dumpasn1.1.html>. + + [RFC5226] Narten, T. and H. Alvestrand, "Guidelines for Writing an + IANA Considerations Section in RFCs", BCP 26, RFC 5226, + DOI 10.17487/RFC5226, May 2008, + <http://www.rfc-editor.org/info/rfc5226>. + + [RFC6574] Tschofenig, H. and J. Arkko, "Report from the Smart Object + Workshop", RFC 6574, DOI 10.17487/RFC6574, April 2012, + <http://www.rfc-editor.org/info/rfc6574>. + + [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, <http://www.rfc-editor.org/info/rfc7250>. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Santesson & Tschofenig Standards Track [Page 12] + +RFC 7924 TLS Cached Information Extension July 2016 + + +Appendix A. Example + + Consider a certificate containing a NIST P256 elliptic curve public + key displayed using Peter Gutmann's ASN.1 decoder [ASN.1-Dump] in + Figure 5. + + 0 556: SEQUENCE { + 4 434: SEQUENCE { + 8 3: [0] { + 10 1: INTEGER 2 + : } + 13 1: INTEGER 13 + 16 10: SEQUENCE { + 18 8: OBJECT IDENTIFIER ecdsaWithSHA256 (1 2 840 10045 4 3 2) + : } + 28 62: SEQUENCE { + 30 11: SET { + 32 9: SEQUENCE { + 34 3: OBJECT IDENTIFIER countryName (2 5 4 6) + 39 2: PrintableString 'NL' + : } + : } + 43 17: SET { + 45 15: SEQUENCE { + 47 3: OBJECT IDENTIFIER organizationName (2 5 4 10) + 52 8: PrintableString 'PolarSSL' + : } + : } + 62 28: SET { + 64 26: SEQUENCE { + 66 3: OBJECT IDENTIFIER commonName (2 5 4 3) + 71 19: PrintableString 'Polarssl Test EC CA' + : } + : } + : } + 92 30: SEQUENCE { + 94 13: UTCTime 24/09/2013 15:52:04 GMT + 109 13: UTCTime 22/09/2023 15:52:04 GMT + : } + 124 65: SEQUENCE { + 126 11: SET { + 128 9: SEQUENCE { + 130 3: OBJECT IDENTIFIER countryName (2 5 4 6) + 135 2: PrintableString 'NL' + : } + : } + + + + + +Santesson & Tschofenig Standards Track [Page 13] + +RFC 7924 TLS Cached Information Extension July 2016 + + + 139 17: SET { + 141 15: SEQUENCE { + 143 3: OBJECT IDENTIFIER organizationName (2 5 4 10) + 148 8: PrintableString 'PolarSSL' + : } + : } + 158 31: SET { + 160 29: SEQUENCE { + 162 3: OBJECT IDENTIFIER commonName (2 5 4 3) + 167 22: PrintableString 'PolarSSL Test Client 2' + : } + : } + : } + 191 89: SEQUENCE { + 193 19: SEQUENCE { + 195 7: OBJECT IDENTIFIER ecPublicKey (1 2 840 10045 2 1) + 204 8: OBJECT IDENTIFIER prime256v1 (1 2 840 10045 3 1 7) + : } + 214 66: BIT STRING + : 04 57 E5 AE B1 73 DF D3 AC BB 93 B8 81 FF 12 AE + : EE E6 53 AC CE 55 53 F6 34 0E CC 2E E3 63 25 0B + : DF 98 E2 F3 5C 60 36 96 C0 D5 18 14 70 E5 7F 9F + : D5 4B 45 18 E5 B0 6C D5 5C F8 96 8F 87 70 A3 E4 + : C7 + : } + 282 157: [3] { + 285 154: SEQUENCE { + 288 9: SEQUENCE { + 290 3: OBJECT IDENTIFIER basicConstraints (2 5 29 19) + 295 2: OCTET STRING, encapsulates { + 297 0: SEQUENCE {} + : } + : } + 299 29: SEQUENCE { + 301 3: OBJECT IDENTIFIER subjectKeyIdentifier (2 5 29 14) + 306 22: OCTET STRING, encapsulates { + 308 20: OCTET STRING + : 7A 00 5F 86 64 FC E0 5D E5 11 10 3B B2 E6 3B C4 + : 26 3F CF E2 + : } + : } + 330 110: SEQUENCE { + 332 3: OBJECT IDENTIFIER authorityKeyIdentifier (2 5 29 35) + 337 103: OCTET STRING, encapsulates { + 339 101: SEQUENCE { + + + + + + +Santesson & Tschofenig Standards Track [Page 14] + +RFC 7924 TLS Cached Information Extension July 2016 + + + 341 20: [0] + : 9D 6D 20 24 49 01 3F 2B CB 78 B5 19 BC 7E 24 + : C9 DB FB 36 7C + 363 66: [1] { + 365 64: [4] { + 367 62: SEQUENCE { + 369 11: SET { + 371 9: SEQUENCE { + 373 3: OBJECT IDENTIFIER countryName (2 5 4 6) + 378 2: PrintableString 'NL' + : } + : } + 382 17: SET { + 384 15: SEQUENCE { + 386 3: OBJECT IDENTIFIER organizationName + : (2 5 4 10) + 391 8: PrintableString 'PolarSSL' + : } + : } + 401 28: SET { + 403 26: SEQUENCE { + 405 3: OBJECT IDENTIFIER commonName (2 5 4 3) + 410 19: PrintableString 'Polarssl Test EC CA' + : } + : } + : } + : } + : } + 431 9: [2] 00 C1 43 E2 7E 62 43 CC E8 + : } + : } + : } + : } + : } + : } + 442 10: SEQUENCE { + 444 8: OBJECT IDENTIFIER ecdsaWithSHA256 (1 2 840 10045 4 3 2) + : } + 454 104: BIT STRING, encapsulates { + 457 101: SEQUENCE { + 459 48: INTEGER + : 4A 65 0D 7B 20 83 A2 99 B9 A8 0F FC 8D EE 8F 3D + : BB 70 4C 96 03 AC 8E 78 70 DD F2 0E A0 B2 16 CB + : 65 8E 1A C9 3F 2C 61 7E F8 3C EF AD 1C EE 36 20 + + + + + + + +Santesson & Tschofenig Standards Track [Page 15] + +RFC 7924 TLS Cached Information Extension July 2016 + + + 509 49: INTEGER + : 00 9D F2 27 A6 D5 74 B8 24 AE E1 6A 3F 31 A1 CA + : 54 2F 08 D0 8D EE 4F 0C 61 DF 77 78 7D B4 FD FC + : 42 49 EE E5 B2 6A C2 CD 26 77 62 8E 28 7C 9E 57 + : 45 + : } + : } + : } + + Figure 5: ASN.1-Based Certificate: Example + + To include the certificate shown in Figure 5 in a TLS/DTLS + Certificate message, it is prepended with a message header. This + Certificate message header in our example is 0b 00 02 36 00 02 33 00 + 02 00 02 30, which indicates: + + Message Type: 0b -- 1-byte type field indicating a Certificate + message + + Length: 00 02 36 -- 3-byte length field indicating a 566-byte + payload + + Certificates Length: 00 02 33 -- 3-byte length field indicating 563 + bytes for the entire certificates_list structure, which may + contain multiple certificates. In our example, only one + certificate is included. + + Certificate Length: 00 02 30 -- 3-byte length field indicating 560 + bytes of the actual certificate following immediately afterwards. + In our example, this is the certificate content with 30 82 02 .... + 9E 57 45 shown in Figure 6. + + + + + + + + + + + + + + + + + + + + +Santesson & Tschofenig Standards Track [Page 16] + +RFC 7924 TLS Cached Information Extension July 2016 + + + The hex encoding of the ASN.1-encoded certificate payload shown in + Figure 5 leads to the following encoding. + + 30 82 02 2C 30 82 01 B2 A0 03 02 01 02 02 01 0D + 30 0A 06 08 2A 86 48 CE 3D 04 03 02 30 3E 31 0B + 30 09 06 03 55 04 06 13 02 4E 4C 31 11 30 0F 06 + 03 55 04 0A 13 08 50 6F 6C 61 72 53 53 4C 31 1C + 30 1A 06 03 55 04 03 13 13 50 6F 6C 61 72 73 73 + 6C 20 54 65 73 74 20 45 43 20 43 41 30 1E 17 0D + 31 33 30 39 32 34 31 35 35 32 30 34 5A 17 0D 32 + 33 30 39 32 32 31 35 35 32 30 34 5A 30 41 31 0B + 30 09 06 03 55 04 06 13 02 4E 4C 31 11 30 0F 06 + 03 55 04 0A 13 08 50 6F 6C 61 72 53 53 4C 31 1F + 30 1D 06 03 55 04 03 13 16 50 6F 6C 61 72 53 53 + 4C 20 54 65 73 74 20 43 6C 69 65 6E 74 20 32 30 + 59 30 13 06 07 2A 86 48 CE 3D 02 01 06 08 2A 86 + 48 CE 3D 03 01 07 03 42 00 04 57 E5 AE B1 73 DF + D3 AC BB 93 B8 81 FF 12 AE EE E6 53 AC CE 55 53 + F6 34 0E CC 2E E3 63 25 0B DF 98 E2 F3 5C 60 36 + 96 C0 D5 18 14 70 E5 7F 9F D5 4B 45 18 E5 B0 6C + D5 5C F8 96 8F 87 70 A3 E4 C7 A3 81 9D 30 81 9A + 30 09 06 03 55 1D 13 04 02 30 00 30 1D 06 03 55 + 1D 0E 04 16 04 14 7A 00 5F 86 64 FC E0 5D E5 11 + 10 3B B2 E6 3B C4 26 3F CF E2 30 6E 06 03 55 1D + 23 04 67 30 65 80 14 9D 6D 20 24 49 01 3F 2B CB + 78 B5 19 BC 7E 24 C9 DB FB 36 7C A1 42 A4 40 30 + 3E 31 0B 30 09 06 03 55 04 06 13 02 4E 4C 31 11 + 30 0F 06 03 55 04 0A 13 08 50 6F 6C 61 72 53 53 + 4C 31 1C 30 1A 06 03 55 04 03 13 13 50 6F 6C 61 + 72 73 73 6C 20 54 65 73 74 20 45 43 20 43 41 82 + 09 00 C1 43 E2 7E 62 43 CC E8 30 0A 06 08 2A 86 + 48 CE 3D 04 03 02 03 68 00 30 65 02 30 4A 65 0D + 7B 20 83 A2 99 B9 A8 0F FC 8D EE 8F 3D BB 70 4C + 96 03 AC 8E 78 70 DD F2 0E A0 B2 16 CB 65 8E 1A + C9 3F 2C 61 7E F8 3C EF AD 1C EE 36 20 02 31 00 + 9D F2 27 A6 D5 74 B8 24 AE E1 6A 3F 31 A1 CA 54 + 2F 08 D0 8D EE 4F 0C 61 DF 77 78 7D B4 FD FC 42 + 49 EE E5 B2 6A C2 CD 26 77 62 8E 28 7C 9E 57 45 + + Figure 6: Hex Encoding of the Example Certificate + + Applying the SHA-256 hash function to the Certificate message, which + starts with 0b 00 02 and ends with 9E 57 45, produces + 0x086eefb4859adfe977defac494fff6b73033b4ce1f86b8f2a9fc0c6bf98605af. + + + + + + + +Santesson & Tschofenig Standards Track [Page 17] + +RFC 7924 TLS Cached Information Extension July 2016 + + +Acknowledgments + + We would like to thank the following persons for your detailed + document reviews: + + o Paul Wouters and Nikos Mavrogiannopoulos (December 2011) + + o Rob Stradling (February 2012) + + o Ondrej Mikle (March 2012) + + o Ilari Liusvaara, Adam Langley, and Eric Rescorla (July 2014) + + o Sean Turner (August 2014) + + o Martin Thomson (August 2015) + + o Jouni Korhonen (November 2015) + + o Dave Garrett (December 2015) + + o Matt Miller (December 2015) + + o Anirudh Ramachandran (March 2016) + + We would also to thank Martin Thomson, Karthikeyan Bhargavan, Sankalp + Bagaria, and Eric Rescorla for their feedback regarding the + fingerprint calculation. + + Finally, we would like to thank the TLS working group chairs, Sean + Turner and Joe Salowey, as well as the responsible Security Area + Director, Stephen Farrell, for their support and their reviews. + + + + + + + + + + + + + + + + + + + +Santesson & Tschofenig Standards Track [Page 18] + +RFC 7924 TLS Cached Information Extension July 2016 + + +Authors' Addresses + + Stefan Santesson + 3xA Security AB + Forskningsbyn Ideon + Lund 223 70 + Sweden + + Email: sts@aaa-sec.com + + + Hannes Tschofenig + ARM Ltd. + Hall in Tirol 6060 + Austria + + Email: Hannes.tschofenig@gmx.net + URI: http://www.tschofenig.priv.at + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Santesson & Tschofenig Standards Track [Page 19] + |