1 TLS Working Group Donald Eastlake 3rd
2 INTERNET-DRAFT Motorola Laboratories
4 Updates: RFC 2246, RFC 4346
5 Intended status: Proposed Standard
6 Expires: July 2008 January 14, 2009
9 Transport Layer Security (TLS) Extensions: Extension Definitions
11 <draft-ietf-tls-rfc4366-bis-01.txt>
14 Status of This Document
16 By submitting this Internet-Draft, each author represents that any
17 applicable patent or other IPR claims of which he or she is aware
18 have been or will be disclosed, and any of which he or she becomes
19 aware will be disclosed, in accordance with Section 6 of BCP 79.
21 Distribution of this document is unlimited. Comments should be sent
22 to the TLS working group mailing list <tls@ietf.org>.
24 Internet-Drafts are working documents of the Internet Engineering
25 Task Force (IETF), its areas, and its working groups. Note that
26 other groups may also distribute working documents as Internet-
29 Internet-Drafts are draft documents valid for a maximum of six months
30 and may be updated, replaced, or obsoleted by other documents at any
31 time. It is inappropriate to use Internet-Drafts as reference
32 material or to cite them other than as "work in progress."
34 The list of current Internet-Drafts can be accessed at
35 http://www.ietf.org/1id-abstracts.html
37 The list of Internet-Draft Shadow Directories can be accessed at
38 http://www.ietf.org/shadow.html
43 This document provides documentation for existing specific TLS
44 extensions. It is a companion document for the TLS 1.2 specification,
45 draft-ietf-tls-rfc4346-bis-07.txt.
56 Donald Eastlake 3rd [Page 1]
58 INTERNET-DRAFT TLS Extension Definitions
63 This draft is based on material from RFC 4366 for which the authors
64 were S. Blake-Wilson, M. Nystron, D. Hopwood, J. Mikkelsen, and T.
71 Status of This Document....................................1
72 Abstract...................................................1
74 Acknowledgements...........................................2
75 Table of Contents..........................................2
77 1. Introduction............................................3
78 1.1 Specific Extensions Covered............................3
79 1.2 Conventions Used in This Document......................4
81 3. Server Name Indication..................................5
82 4. Maximum Fragment Length Negotiation.....................6
83 5. Client Certificate URLs.................................7
84 6. Trusted CA Indication..................................10
85 7. Truncated HMAC.........................................11
86 8. Certificate Status Request.............................12
88 9. IANA Considerations....................................15
89 10. Security Considerations...............................15
90 10.1 Security Considerations for server_name..............15
91 10.2 Security Considerations for max_fragment_length......15
92 10.3 Security Considerations for client_certificate_url...16
93 10.4 Security Considerations for trusted_ca_keys..........17
94 10.5 Security Considerations for truncated_hmac...........17
95 10.6 Security Considerations for status_request...........18
96 11. Internationalization Considerations...................18
98 12. Normative References..................................19
99 13. Informative References................................19
101 Copyright, Disclaimer, and Additional IPR Provisions......21
103 Author's Address..........................................22
104 Expiration and File Name..................................22
113 Donald Eastlake 3rd [Page 2]
115 INTERNET-DRAFT TLS Extension Definitions
120 The TLS (Transport Layer Security) Protocol Version 1.2 is specified
121 in [RFCTLS]. That specification includes the framework for extensions
122 to TLS, considerations in designing such extensions (see Section
123 7.4.1.4 of [RFCTLS]), and IANA Considerations for the allocation of
124 new extension code points; however, it does not specify any
125 particular extensions other than CertHashTypes (see Section
126 7.4.1.4.1of [RFCTLS]).
128 This document provides the specifications for existing TLS
129 extensions. It is, for the most part, the mere adaptation and editing
130 of material from [RFC4366], which covered all aspects of TLS
131 extensions for TLS 1.0 [RFC2246] and TLS 1.1 [RFC4346].
135 1.1 Specific Extensions Covered
137 The extensions described here focus on extending the functionality
138 provided by the TLS protocol message formats. Other issues, such as
139 the addition of new cipher suites, are deferred.
141 Specifically, the extensions described in this document:
143 - Allow TLS clients to provide to the TLS server the name of the
144 server they are contacting. This functionality is desirable in
145 order to facilitate secure connections to servers that host
146 multiple 'virtual' servers at a single underlying network address.
148 - Allow TLS clients and servers to negotiate the maximum fragment
149 length to be sent. This functionality is desirable as a result of
150 memory constraints among some clients, and bandwidth constraints
151 among some access networks.
153 - Allow TLS clients and servers to negotiate the use of client
154 certificate URLs. This functionality is desirable in order to
155 conserve memory on constrained clients.
157 - Allow TLS clients to indicate to TLS servers which CA root keys
158 they possess. This functionality is desirable in order to prevent
159 multiple handshake failures involving TLS clients that are only
160 able to store a small number of CA root keys due to memory
163 - Allow TLS clients and servers to negotiate the use of truncated
164 MACs. This functionality is desirable in order to conserve
165 bandwidth in constrained access networks.
167 - Allow TLS clients and servers to negotiate that the server sends
170 Donald Eastlake 3rd [Page 3]
172 INTERNET-DRAFT TLS Extension Definitions
175 the client certificate status information (e.g., an Online
176 Certificate Status Protocol (OCSP) [RFC2560] response) during a
177 TLS handshake. This functionality is desirable in order to avoid
178 sending a Certificate Revocation List (CRL) over a constrained
179 access network and therefore save bandwidth.
181 The extensions described in this document may be used by TLS clients
182 and servers. The extensions are designed to be backwards compatible,
183 meaning that TLS clients that support the extensions can talk to TLS
184 servers that do not support the extensions, and vice versa. The
185 document therefore updates TLS 1.0 [RFC2246] and TLS 1.1 [RFC4346].
189 1.2 Conventions Used in This Document
191 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
192 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
193 document are to be interpreted as described in [RFC2119].
227 Donald Eastlake 3rd [Page 4]
229 INTERNET-DRAFT TLS Extension Definitions
232 3. Server Name Indication
234 TLS does not provide a mechanism for a client to tell a server the
235 name of the server it is contacting. It may be desirable for clients
236 to provide this information to facilitate secure connections to
237 servers that host multiple 'virtual' servers at a single underlying
240 In order to provide the server name, clients MAY include an extension
241 of type "server_name" in the (extended) client hello. The
242 "extension_data" field of this extension SHALL contain
243 "ServerNameList" where:
248 case host_name: HostName;
256 opaque HostName<1..2^16-1>;
259 ServerName server_name_list<1..2^16-1>
262 Currently, the only server names supported are DNS hostnames;
263 however, this does not imply any dependency of TLS on DNS, and other
264 name types may be added in the future (by an RFC that updates this
265 document). TLS MAY treat provided server names as opaque data and
266 pass the names and types to the application.
268 "HostName" contains the fully qualified DNS hostname of the server,
269 as understood by the client. The hostname is represented as a byte
270 string using UTF-8 encoding [RFC3629], without a trailing dot.
272 If the hostname labels contain only US-ASCII characters, then the
273 client MUST ensure that labels are separated only by the byte 0x2E,
274 representing the dot character U+002E (requirement 1 in Section 3.1
275 of [RFC3490] notwithstanding). If the server needs to match the
276 HostName against names that contain non-US-ASCII characters, it MUST
277 perform the conversion operation described in Section 4 of [RFC3490],
278 treating the HostName as a "query string" (i.e., the AllowUnassigned
279 flag MUST be set). Note that IDNA allows labels to be separated by
280 any of the Unicode characters U+002E, U+3002, U+FF0E, and U+FF61;
281 therefore, servers MUST accept any of these characters as a label
284 Donald Eastlake 3rd [Page 5]
286 INTERNET-DRAFT TLS Extension Definitions
289 separator. If the server only needs to match the HostName against
290 names containing exclusively ASCII characters, it MUST compare ASCII
291 names case-insensitively.
293 Literal IPv4 and IPv6 addresses are not permitted in "HostName".
295 It is RECOMMENDED that clients include an extension of type
296 "server_name" in the client hello whenever they locate a server by a
299 A server that receives a client hello containing the "server_name"
300 extension MAY use the information contained in the extension to guide
301 its selection of an appropriate certificate to return to the client,
302 and/or other aspects of security policy. In this event, the server
303 SHALL include an extension of type "server_name" in the (extended)
304 server hello. The "extension_data" field of this extension SHALL be
307 If the server understood the client hello extension but does not
308 recognize the server name, it SHOULD send an "unrecognized_name"
309 alert (which MAY be fatal).
311 If an application negotiates a server name using an application
312 protocol and then upgrades to TLS, and if a server_name extension is
313 sent, then the extension SHOULD contain the same name that was
314 negotiated in the application protocol. If the server_name is
315 established in the TLS session handshake, the client SHOULD NOT
316 attempt to request a different server name at the application layer.
320 4. Maximum Fragment Length Negotiation
322 Without this extension, TLS specifies a fixed maximum plaintext
323 fragment length of 2^14 bytes. It may be desirable for constrained
324 clients to negotiate a smaller maximum fragment length due to memory
325 limitations or bandwidth limitations.
327 In order to negotiate smaller maximum fragment lengths, clients MAY
328 include an extension of type "max_fragment_length" in the (extended)
329 client hello. The "extension_data" field of this extension SHALL
333 2^9(1), 2^10(2), 2^11(3), 2^12(4), (255)
336 whose value is the desired maximum fragment length. The allowed
337 values for this field are: 2^9, 2^10, 2^11, and 2^12.
341 Donald Eastlake 3rd [Page 6]
343 INTERNET-DRAFT TLS Extension Definitions
346 Servers that receive an extended client hello containing a
347 "max_fragment_length" extension MAY accept the requested maximum
348 fragment length by including an extension of type
349 "max_fragment_length" in the (extended) server hello. The
350 "extension_data" field of this extension SHALL contain a
351 "MaxFragmentLength" whose value is the same as the requested maximum
354 If a server receives a maximum fragment length negotiation request
355 for a value other than the allowed values, it MUST abort the
356 handshake with an "illegal_parameter" alert. Similarly, if a client
357 receives a maximum fragment length negotiation response that differs
358 from the length it requested, it MUST also abort the handshake with
359 an "illegal_parameter" alert.
361 Once a maximum fragment length other than 2^14 has been successfully
362 negotiated, the client and server MUST immediately begin fragmenting
363 messages (including handshake messages), to ensure that no fragment
364 larger than the negotiated length is sent. Note that TLS already
365 requires clients and servers to support fragmentation of handshake
368 The negotiated length applies for the duration of the session
369 including session resumptions.
371 The negotiated length limits the input that the record layer may
372 process without fragmentation (that is, the maximum value of
373 TLSPlaintext.length; see [RFCTLS], Section 6.2.1). Note that the
374 output of the record layer may be larger. For example, if the
375 negotiated length is 2^9=512, then for currently defined cipher
376 suites (those defined in [RFCTLS], [RFC2712], and [RFC3268]), and
377 when null compression is used, the record layer output can be at most
378 793 bytes: 5 bytes of headers, 512 bytes of application data, 256
379 bytes of padding, and 20 bytes of MAC. This means that in this event
380 a TLS record layer peer receiving a TLS record layer message larger
381 than 793 bytes may discard the message and send a "record_overflow"
382 alert, without decrypting the message.
386 5. Client Certificate URLs
388 Without this extension, TLS specifies that when client authentication
389 is performed, client certificates are sent by clients to servers
390 during the TLS handshake. It may be desirable for constrained clients
391 to send certificate URLs in place of certificates, so that they do
392 not need to store their certificates and can therefore save memory.
394 In order to negotiate sending certificate URLs to a server, clients
395 MAY include an extension of type "client_certificate_url" in the
398 Donald Eastlake 3rd [Page 7]
400 INTERNET-DRAFT TLS Extension Definitions
403 (extended) client hello. The "extension_data" field of this extension
406 (Note that it is necessary to negotiate use of client certificate
407 URLs in order to avoid "breaking" existing TLS servers.)
409 Servers that receive an extended client hello containing a
410 "client_certificate_url" extension MAY indicate that they are willing
411 to accept certificate URLs by including an extension of type
412 "client_certificate_url" in the (extended) server hello. The
413 "extension_data" field of this extension SHALL be empty.
415 After negotiation of the use of client certificate URLs has been
416 successfully completed (by exchanging hellos including
417 "client_certificate_url" extensions), clients MAY send a
418 "CertificateURL" message in place of a "Certificate" message:
421 individual_certs(0), pkipath(1), (255)
430 URLAndOptionalHash url_and_hash_list<1..2^16-1>;
434 opaque url<1..2^16-1>;
435 Boolean hash_present;
436 select (hash_present) {
437 case false: struct {};
440 } URLAndOptionalHash;
444 Here "url_and_hash_list" contains a sequence of URLs and optional
447 When X.509 certificates are used, there are two possibilities:
449 - If CertificateURL.type is "individual_certs", each URL refers to a
450 single DER-encoded X.509v3 certificate, with the URL for the client's
455 Donald Eastlake 3rd [Page 8]
457 INTERNET-DRAFT TLS Extension Definitions
460 - If CertificateURL.type is "pkipath", the list contains a single
461 URL referring to a DER-encoded certificate chain, using the type
462 PkiPath described in Section 8 of [RFCTLS].
464 When any other certificate format is used, the specification that
465 describes use of that format in TLS should define the encoding format
466 of certificates or certificate chains, and any constraint on their
469 The hash corresponding to each URL at the client's discretion either
470 is not present or is the SHA-1 hash of the certificate or certificate
471 chain (in the case of X.509 certificates, the DER-encoded certificate
472 or the DER-encoded PkiPath).
474 Note that when a list of URLs for X.509 certificates is used, the
475 ordering of URLs is the same as that used in the TLS Certificate
476 message (see [RFCTLS], Section 7.4.2), but opposite to the order in
477 which certificates are encoded in PkiPath. In either case, the self-
478 signed root certificate MAY be omitted from the chain, under the
479 assumption that the server must already possess it in order to
482 Servers receiving "CertificateURL" SHALL attempt to retrieve the
483 client's certificate chain from the URLs and then process the
484 certificate chain as usual. A cached copy of the content of any URL
485 in the chain MAY be used, provided that a SHA-1 hash is present for
486 that URL and it matches the hash of the cached copy.
488 Servers that support this extension MUST support the http: URL scheme
489 for certificate URLs, and MAY support other schemes. Use of other
490 schemes than "http", "https", or "ftp" may create unexpected
493 If the protocol used is HTTP, then the HTTP server can be configured
494 to use the Cache-Control and Expires directives described in
495 [RFC2616] to specify whether and for how long certificates or
496 certificate chains should be cached.
498 The TLS server is not required to follow HTTP redirects when
499 retrieving the certificates or certificate chain. The URLs used in
500 this extension SHOULD therefore be chosen not to depend on such
503 If the protocol used to retrieve certificates or certificate chains
504 returns a MIME-formatted response (as HTTP does), then the following
505 MIME Content-Types SHALL be used: when a single X.509v3 certificate
506 is returned, the Content-Type is "application/pkix-cert" [RFC2585],
507 and when a chain of X.509v3 certificates is returned, the Content-
508 Type is "application/pkix-pkipath" (see Section 8 of [RFCTLS]).
512 Donald Eastlake 3rd [Page 9]
514 INTERNET-DRAFT TLS Extension Definitions
517 If a SHA-1 hash is present for an URL, then the server MUST check
518 that the SHA-1 hash of the contents of the object retrieved from that
519 URL (after decoding any MIME Content-Transfer-Encoding) matches the
520 given hash. If any retrieved object does not have the correct SHA-1
521 hash, the server MUST abort the handshake with a
522 "bad_certificate_hash_value" alert.
524 Note that clients may choose to send either "Certificate" or
525 "CertificateURL" after successfully negotiating the option to send
526 certificate URLs. The option to send a certificate is included to
527 provide flexibility to clients possessing multiple certificates.
529 If a server encounters an unreasonable delay in obtaining
530 certificates in a given CertificateURL, it SHOULD time out and signal
531 a "certificate_unobtainable" error alert.
535 6. Trusted CA Indication
537 Constrained clients that, due to memory limitations, possess only a
538 small number of CA root keys may wish to indicate to servers which
539 root keys they possess, in order to avoid repeated handshake
542 In order to indicate which CA root keys they possess, clients MAY
543 include an extension of type "trusted_ca_keys" in the (extended)
544 client hello. The "extension_data" field of this extension SHALL
545 contain "TrustedAuthorities" where:
548 TrustedAuthority trusted_authorities_list<0..2^16-1>;
549 } TrustedAuthorities;
552 IdentifierType identifier_type;
553 select (identifier_type) {
554 case pre_agreed: struct {};
555 case key_sha1_hash: SHA1Hash;
556 case x509_name: DistinguishedName;
557 case cert_sha1_hash: SHA1Hash;
562 pre_agreed(0), key_sha1_hash(1), x509_name(2),
563 cert_sha1_hash(3), (255)
566 opaque DistinguishedName<1..2^16-1>;
569 Donald Eastlake 3rd [Page 10]
571 INTERNET-DRAFT TLS Extension Definitions
574 Here "TrustedAuthorities" provides a list of CA root key identifiers
575 that the client possesses. Each CA root key is identified via either:
577 - "pre_agreed": no CA root key identity supplied.
579 - "key_sha1_hash": contains the SHA-1 hash of the CA root key. For
580 Digital Signature Algorithm (DSA) and Elliptic Curve Digital
581 Signature Algorithm (ECDSA) keys, this is the hash of the
582 "subjectPublicKey" value. For RSA keys, the hash is of the big-
583 endian byte string representation of the modulus without any
584 initial 0-valued bytes. (This copies the key hash formats deployed
585 in other environments.)
587 - "x509_name": contains the DER-encoded X.509 DistinguishedName of
590 - "cert_sha1_hash": contains the SHA-1 hash of a DER-encoded
591 Certificate containing the CA root key.
593 Note that clients may include none, some, or all of the CA root keys
594 they possess in this extension.
596 Note also that it is possible that a key hash or a Distinguished Name
597 alone may not uniquely identify a certificate issuer (for example, if
598 a particular CA has multiple key pairs). However, here we assume this
599 is the case following the use of Distinguished Names to identify
600 certificate issuers in TLS.
602 The option to include no CA root keys is included to allow the client
603 to indicate possession of some pre-defined set of CA root keys.
605 Servers that receive a client hello containing the "trusted_ca_keys"
606 extension MAY use the information contained in the extension to guide
607 their selection of an appropriate certificate chain to return to the
608 client. In this event, the server SHALL include an extension of type
609 "trusted_ca_keys" in the (extended) server hello. The
610 "extension_data" field of this extension SHALL be empty.
616 Currently defined TLS cipher suites use the MAC construction HMAC
617 with either MD5 or SHA-1 [RFC2104] to authenticate record layer
618 communications. In TLS, the entire output of the hash function is
619 used as the MAC tag. However, it may be desirable in constrained
620 environments to save bandwidth by truncating the output of the hash
621 function to 80 bits when forming MAC tags.
623 In order to negotiate the use of 80-bit truncated HMAC, clients MAY
626 Donald Eastlake 3rd [Page 11]
628 INTERNET-DRAFT TLS Extension Definitions
631 include an extension of type "truncated_hmac" in the extended client
632 hello. The "extension_data" field of this extension SHALL be empty.
634 Servers that receive an extended hello containing a "truncated_hmac"
635 extension MAY agree to use a truncated HMAC by including an extension
636 of type "truncated_hmac", with empty "extension_data", in the
637 extended server hello.
639 Note that if new cipher suites are added that do not use HMAC, and
640 the session negotiates one of these cipher suites, this extension
641 will have no effect. It is strongly recommended that any new cipher
642 suites using other MACs consider the MAC size an integral part of the
643 cipher suite definition, taking into account both security and
644 bandwidth considerations.
646 If HMAC truncation has been successfully negotiated during a TLS
647 handshake, and the negotiated cipher suite uses HMAC, both the client
648 and the server pass this fact to the TLS record layer along with the
649 other negotiated security parameters. Subsequently during the
650 session, clients and servers MUST use truncated HMACs, calculated as
651 specified in [RFC2104]. That is, CipherSpec.hash_size is 10 bytes,
652 and only the first 10 bytes of the HMAC output are transmitted and
653 checked. Note that this extension does not affect the calculation of
654 the pseudo-random function (PRF) as part of handshaking or key
657 The negotiated HMAC truncation size applies for the duration of the
658 session including session resumptions.
662 8. Certificate Status Request
664 Constrained clients may wish to use a certificate-status protocol
665 such as OCSP [RFC2560] to check the validity of server certificates,
666 in order to avoid transmission of CRLs and therefore save bandwidth
667 on constrained networks. This extension allows for such information
668 to be sent in the TLS handshake, saving roundtrips and resources.
670 In order to indicate their desire to receive certificate status
671 information, clients MAY include an extension of type
672 "status_request" in the (extended) client hello. The "extension_data"
673 field of this extension SHALL contain "CertificateStatusRequest"
677 CertificateStatusType status_type;
678 select (status_type) {
679 case ocsp: OCSPStatusRequest;
683 Donald Eastlake 3rd [Page 12]
685 INTERNET-DRAFT TLS Extension Definitions
688 } CertificateStatusRequest;
690 enum { ocsp(1), (255) } CertificateStatusType;
693 ResponderID responder_id_list<0..2^16-1>;
694 Extensions request_extensions;
697 opaque ResponderID<1..2^16-1>;
698 opaque Extensions<0..2^16-1>;
700 In the OCSPStatusRequest, the "ResponderIDs" provides a list of OCSP
701 responders that the client trusts. A zero-length "responder_id_list"
702 sequence has the special meaning that the responders are implicitly
703 known to the server, e.g., by prior arrangement. "Extensions" is a
704 DER encoding of OCSP request extensions.
706 Both "ResponderID" and "Extensions" are DER-encoded ASN.1 types as
707 defined in [RFC2560]. "Extensions" is imported from [RFC3280]. A
708 zero-length "request_extensions" value means that there are no
709 extensions (as opposed to a zero-length ASN.1 SEQUENCE, which is not
710 valid for the "Extensions" type).
712 In the case of the "id-pkix-ocsp-nonce" OCSP extension, [RFC2560] is
713 unclear about its encoding; for clarification, the nonce MUST be a
714 DER-encoded OCTET STRING, which is encapsulated as another OCTET
715 STRING (note that implementations based on an existing OCSP client
716 will need to be checked for conformance to this requirement).
718 Servers that receive a client hello containing the "status_request"
719 extension MAY return a suitable certificate status response to the
720 client along with their certificate. If OCSP is requested, they
721 SHOULD use the information contained in the extension when selecting
722 an OCSP responder and SHOULD include request_extensions in the OCSP
725 Servers return a certificate response along with their certificate by
726 sending a "CertificateStatus" message immediately after the
727 "Certificate" message (and before any "ServerKeyExchange" or
728 "CertificateRequest" messages). If a server returns a
729 "CertificateStatus" message, then the server MUST have included an
730 extension of type "status_request" with empty "extension_data" in the
731 extended server hello.
734 CertificateStatusType status_type;
735 select (status_type) {
736 case ocsp: OCSPResponse;
740 Donald Eastlake 3rd [Page 13]
742 INTERNET-DRAFT TLS Extension Definitions
747 opaque OCSPResponse<1..2^24-1>;
749 An "ocsp_response" contains a complete, DER-encoded OCSP response
750 (using the ASN.1 type OCSPResponse defined in [RFC2560]). Note that
751 only one OCSP response may be sent.
753 The "CertificateStatus" message is conveyed using the handshake
754 message type "certificate_status".
756 Note that a server MAY also choose not to send a "CertificateStatus"
757 message, even if it receives a "status_request" extension in the
758 client hello message.
760 Note in addition that servers MUST NOT send the "CertificateStatus"
761 message unless it received a "status_request" extension in the client
764 Clients requesting an OCSP response and receiving an OCSP response in
765 a "CertificateStatus" message MUST check the OCSP response and abort
766 the handshake if the response is not satisfactory.
768 certificate_unobtainable(111), /* new */
769 unrecognized_name(112), /* new */
770 bad_certificate_status_response(113), /* new */
771 bad_certificate_hash_value(114), /* new */
797 Donald Eastlake 3rd [Page 14]
799 INTERNET-DRAFT TLS Extension Definitions
802 9. IANA Considerations
804 IANA Considerations for TLS Extensions and the creation of a Registry
805 therefore are all covered in Section 12 of [RFCTLS]..
809 10. Security Considerations
811 General Security Considerations for TLS Extensions are covered in
812 [RFCTLS]. Security Considerations for particular extensions specified
813 in this document are given below.
815 In general, implementers should continue to monitor the state of the
816 art and address any weaknesses identified.
818 Additional security considerations are described in the TLS 1.0 RFC
819 [RFC2246] and the TLS 1.1 RFC [RFC4346].
823 10.1 Security Considerations for server_name
825 If a single server hosts several domains, then clearly it is
826 necessary for the owners of each domain to ensure that this satisfies
827 their security needs. Apart from this, server_name does not appear to
828 introduce significant security issues.
830 Implementations MUST ensure that a buffer overflow does not occur,
831 whatever the values of the length fields in server_name.
833 Although this document specifies an encoding for internationalized
834 hostnames in the server_name extension, it does not address any
835 security issues associated with the use of internationalized
836 hostnames in TLS (in particular, the consequences of "spoofed" names
837 that are indistinguishable from another name when displayed or
838 printed). It is recommended that server certificates not be issued
839 for internationalized hostnames unless procedures are in place to
840 mitigate the risk of spoofed hostnames.
844 10.2 Security Considerations for max_fragment_length
846 The maximum fragment length takes effect immediately, including for
847 handshake messages. However, that does not introduce any security
848 complications that are not already present in TLS, since TLS requires
849 implementations to be able to handle fragmented handshake messages.
851 Note that as described in Section 4, once a non-null cipher suite has
854 Donald Eastlake 3rd [Page 15]
856 INTERNET-DRAFT TLS Extension Definitions
859 been activated, the effective maximum fragment length depends on the
860 cipher suite and compression method, as well as on the negotiated
861 max_fragment_length. This must be taken into account when sizing
862 buffers, and checking for buffer overflow.
866 10.3 Security Considerations for client_certificate_url
868 There are two major issues with this extension.
870 The first major issue is whether or not clients should include
871 certificate hashes when they send certificate URLs.
873 When client authentication is used *without* the
874 client_certificate_url extension, the client certificate chain is
875 covered by the Finished message hashes. The purpose of including
876 hashes and checking them against the retrieved certificate chain is
877 to ensure that the same property holds when this extension is used,
878 i.e., that all of the information in the certificate chain retrieved
879 by the server is as the client intended.
881 On the other hand, omitting certificate hashes enables functionality
882 that is desirable in some circumstances; for example, clients can be
883 issued daily certificates that are stored at a fixed URL and need not
884 be provided to the client. Clients that choose to omit certificate
885 hashes should be aware of the possibility of an attack in which the
886 attacker obtains a valid certificate on the client's key that is
887 different from the certificate the client intended to provide.
888 Although TLS uses both MD5 and SHA-1 hashes in several other places,
889 this was not believed to be necessary here. The property required of
890 SHA-1 is second pre-image resistance.
892 The second major issue is that support for client_certificate_url
893 involves the server's acting as a client in another URL protocol.
894 The server therefore becomes subject to many of the same security
895 concerns that clients of the URL scheme are subject to, with the
896 added concern that the client can attempt to prompt the server to
897 connect to some (possibly weird-looking) URL.
899 In general, this issue means that an attacker might use the server to
900 indirectly attack another host that is vulnerable to some security
901 flaw. It also introduces the possibility of denial of service attacks
902 in which an attacker makes many connections to the server, each of
903 which results in the server's attempting a connection to the target
906 Note that the server may be behind a firewall or otherwise able to
907 access hosts that would not be directly accessible from the public
908 Internet. This could exacerbate the potential security and denial of
911 Donald Eastlake 3rd [Page 16]
913 INTERNET-DRAFT TLS Extension Definitions
916 service problems described above, as well as allow the existence of
917 internal hosts to be confirmed when they would otherwise be hidden.
919 The detailed security concerns involved will depend on the URL
920 schemes supported by the server. In the case of HTTP, the concerns
921 are similar to those that apply to a publicly accessible HTTP proxy
922 server. In the case of HTTPS, loops and deadlocks may be created, and
923 this should be addressed. In the case of FTP, attacks arise that are
924 similar to FTP bounce attacks.
926 As a result of this issue, it is RECOMMENDED that the
927 client_certificate_url extension should have to be specifically
928 enabled by a server administrator, rather than be enabled by default.
929 It is also RECOMMENDED that URI protocols be enabled by the
930 administrator individually, and only a minimal set of protocols be
931 enabled. Unusual protocols that offer limited security or whose
932 security is not well-understood SHOULD be avoided.
934 As discussed in [RFC3986], URLs that specify ports other than the
935 default may cause problems, as may very long URLs (which are more
936 likely to be useful in exploiting buffer overflow bugs).
938 Also note that HTTP caching proxies are common on the Internet, and
939 some proxies do not check for the latest version of an object
940 correctly. If a request using HTTP (or another caching protocol) goes
941 through a misconfigured or otherwise broken proxy, the proxy may
942 return an out-of-date response.
946 10.4 Security Considerations for trusted_ca_keys
948 It is possible that which CA root keys a client possesses could be
949 regarded as confidential information. As a result, the CA root key
950 indication extension should be used with care.
952 The use of the SHA-1 certificate hash alternative ensures that each
953 certificate is specified unambiguously. As for the previous
954 extension, it was not believed necessary to use both MD5 and SHA-1
959 10.5 Security Considerations for truncated_hmac
961 It is possible that truncated MACs are weaker than "un-truncated"
962 MACs. However, no significant weaknesses are currently known or
963 expected to exist for HMAC with MD5 or SHA-1, truncated to 80 bits.
965 Note that the output length of a MAC need not be as long as the
968 Donald Eastlake 3rd [Page 17]
970 INTERNET-DRAFT TLS Extension Definitions
973 length of a symmetric cipher key, since forging of MAC values cannot
974 be done off-line: in TLS, a single failed MAC guess will cause the
975 immediate termination of the TLS session.
977 Since the MAC algorithm only takes effect after all handshake
978 messages that affect extension parameters have been authenticated by
979 the hashes in the Finished messages, it is not possible for an active
980 attacker to force negotiation of the truncated HMAC extension where
981 it would not otherwise be used (to the extent that the handshake
982 authentication is secure). Therefore, in the event that any security
983 problem were found with truncated HMAC in the future, if either the
984 client or the server for a given session were updated to take the
985 problem into account, it would be able to veto use of this extension.
989 10.6 Security Considerations for status_request
991 If a client requests an OCSP response, it must take into account that
992 an attacker's server using a compromised key could (and probably
993 would) pretend not to support the extension. In this case, a client
994 that requires OCSP validation of certificates SHOULD either contact
995 the OCSP server directly or abort the handshake.
997 Use of the OCSP nonce request extension (id-pkix-ocsp-nonce) may
998 improve security against attacks that attempt to replay OCSP
999 responses; see Section 4.4.1 of [RFC2560] for further details.
1003 11. Internationalization Considerations
1005 None of the extensions defined here directly use strings subject to
1006 localization. Domain Name System (DNS) hostnames are encoded using
1007 UTF-8. If future extensions use text strings, then
1008 internationalization should be considered in their design.
1025 Donald Eastlake 3rd [Page 18]
1027 INTERNET-DRAFT TLS Extension Definitions
1030 12. Normative References
1032 [RFC2104] Krawczyk, H., Bellare, M., and R. Canetti, "HMAC: Keyed-
1033 Hashing for Message Authentication", RFC 2104, February 1997.
1035 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
1036 Requirement Levels", BCP 14, RFC 2119, March 1997.
1038 [RFC2560] Myers, M., Ankney, R., Malpani, A., Galperin, S., and C.
1039 Adams, "X.509 Internet Public Key Infrastructure Online Certificate
1040 Status Protocol - OCSP", RFC 2560, June 1999.
1042 [RFC2585] Housley, R. and P. Hoffman, "Internet X.509 Public Key
1043 Infrastructure Operational Protocols: FTP and HTTP", RFC 2585, May
1046 [RFC2616] Fielding, R., Gettys, J., Mogul, J., Frystyk, H., Masinter,
1047 L., Leach, P., and T. Berners-Lee, "Hypertext Transfer Protocol --
1048 HTTP/1.1", RFC 2616, June 1999.
1050 [RFC3280] Housley, R., Polk, W., Ford, W., and D. Solo, "Internet
1051 X.509 Public Key Infrastructure Certificate and Certificate
1052 Revocation List (CRL) Profile", RFC 3280, April 2002.
1054 [RFC3490] Faltstrom, P., Hoffman, P., and A. Costello,
1055 "Internationalizing Domain Names in Applications (IDNA)", RFC 3490,
1058 [RFC3629] Yergeau, F., "UTF-8, a transformation format of ISO 10646",
1059 STD 63, RFC 3629, November 2003.
1061 [RFC3986] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform
1062 Resource Identifier (URI): Generic Syntax", STD 66, RFC 3986, January
1065 [RFC4346] Dierks, T. and E. Rescorla, "The Transport Layer Security
1066 (TLS) Protocol Version 1.1", RFC 4346, April 2006.
1068 [RFCTLS] Dierks, T. and E. Rescorla, "The TLS Protocol Version 1.2",
1069 draft-ietf-tls-rfc4346-bis-*.txt, March 2007.
1073 13. Informative References
1075 [RFC2246] Dierks, T. and C. Allen, "The TLS Protocol Version 1.0",
1076 RFC 2246, January 1999.
1078 [RFC2712] Medvinsky, A. and M. Hur, "Addition of Kerberos Cipher
1079 Suites to Transport Layer Security (TLS)", RFC 2712, October 1999.
1082 Donald Eastlake 3rd [Page 19]
1084 INTERNET-DRAFT TLS Extension Definitions
1087 [RFC3268] Chown, P., "Advanced Encryption Standard (AES) Ciphersuites
1088 for Transport Layer Security (TLS)", RFC 3268, June 2002.
1090 [RFC4366] Blake-Wilson, S., Nystrom, M., Hopwood, D., Mikkelsen, J.,
1091 and T. Wright, "Transport Layer Security (TLS) Extensions", RFC 4366,
1139 Donald Eastlake 3rd [Page 20]
1141 INTERNET-DRAFT TLS Extension Definitions
1144 Copyright, Disclaimer, and Additional IPR Provisions
1146 Copyright (C) The IETF Trust (2008).
1148 This document is subject to the rights, licenses and restrictions
1149 contained in BCP 78, and except as set forth therein, the authors
1150 retain all their rights.
1153 This document and the information contained herein are provided on an
1154 "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
1155 OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND
1156 THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS
1157 OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF
1158 THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
1159 WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
1161 The IETF takes no position regarding the validity or scope of any
1162 Intellectual Property Rights or other rights that might be claimed to
1163 pertain to the implementation or use of the technology described in
1164 this document or the extent to which any license under such rights
1165 might or might not be available; nor does it represent that it has
1166 made any independent effort to identify any such rights. Information
1167 on the procedures with respect to rights in RFC documents can be
1168 found in BCP 78 and BCP 79.
1170 Copies of IPR disclosures made to the IETF Secretariat and any
1171 assurances of licenses to be made available, or the result of an
1172 attempt made to obtain a general license or permission for the use of
1173 such proprietary rights by implementers or users of this
1174 specification can be obtained from the IETF on-line IPR repository at
1175 http://www.ietf.org/ipr.
1177 The IETF invites any interested party to bring to its attention any
1178 copyrights, patents or patent applications, or other proprietary
1179 rights that may cover technology that may be required to implement
1180 this standard. Please address the information to the IETF at ietf-
1196 Donald Eastlake 3rd [Page 21]
1198 INTERNET-DRAFT TLS Extension Definitions
1204 Motorola Laboratories
1206 Marlborough, MA 01752
1208 Tel: +1-508-786-7554
1209 Email: Donald.Eastlake@motorola.com
1213 Expiration and File Name
1215 This draft expires in July 2008.
1217 Its file name is draft-ietf-tls-rfc4366-bis-01.txt.
1253 Donald Eastlake 3rd [Page 22]