2 TLS Working Group Donald Eastlake 3rd
3 INTERNET-DRAFT Motorola Laboratories
5 Updates: RFC 2246, RFC 4346
6 Intended status: Proposed Standard
7 Expires: Decmeber 2007 June 2007
10 Transport Layer Security (TLS) Extensions: Extension Definitions
11 --------- ----- -------- ----- ----------- --------- -----------
12 <draft-ietf-tls-rfc4366-bis-00.txt>
15 Status of This Document
17 By submitting this Internet-Draft, each author represents that any
18 applicable patent or other IPR claims of which he or she is aware
19 have been or will be disclosed, and any of which he or she becomes
20 aware will be disclosed, in accordance with Section 6 of BCP 79.
22 Distribution of this document is unlimited. Comments should be sent
23 to the TLS working group mailing list <tls@ietf.org>.
25 Internet-Drafts are working documents of the Internet Engineering
26 Task Force (IETF), its areas, and its working groups. Note that
27 other groups may also distribute working documents as Internet-
30 Internet-Drafts are draft documents valid for a maximum of six months
31 and may be updated, replaced, or obsoleted by other documents at any
32 time. It is inappropriate to use Internet-Drafts as reference
33 material or to cite them other than as "work in progress."
35 The list of current Internet-Drafts can be accessed at
36 http://www.ietf.org/1id-abstracts.html
38 The list of Internet-Draft Shadow Directories can be accessed at
39 http://www.ietf.org/shadow.html
44 This document provides documentation for existing specific TLS
45 extensions. It is a companion document for the TLS 1.2 specification,
46 draft-ietf-tls-rfc4346-bis-03.txt.
57 Donald Eastlake 3rd [Page 1]
60 INTERNET-DRAFT TLS Extension Definitions
65 This draft is based on material from RFC 4366 for which the authors
66 were S. Blake-Wilson, M. Nystron, D. Hopwood, J. Mikkelsen, and T.
73 Status of This Document....................................1
74 Abstract...................................................1
76 Acknowledgements...........................................2
77 Table of Contents..........................................2
79 1. Introduction............................................3
80 1.1 Specific Extensions Covered............................3
81 1.2 Conventions Used in This Document......................4
83 3. Server Name Indication..................................5
84 4. Maximum Fragment Length Negotiation.....................6
85 5. Client Certificate URLs.................................7
86 6. Trusted CA Indication..................................10
87 7. Truncated HMAC.........................................11
88 8. Certificate Status Request.............................12
90 9. IANA Considerations....................................15
91 10. Security Considerations...............................15
92 10.1 Security Considerations for server_name..............15
93 10.2 Security Considerations for max_fragment_length......15
94 10.3 Security Considerations for client_certificate_url...16
95 10.4 Security Considerations for trusted_ca_keys..........17
96 10.5 Security Considerations for truncated_hmac...........17
97 10.6 Security Considerations for status_request...........18
98 11. Internationalization Considerations...................18
100 12. Normative References..................................19
101 13. Informative References................................19
103 Copyright, Disclaimer, and Additional IPR Provisions......21
105 Author's Address..........................................22
106 Expiration and File Name..................................22
115 Donald Eastlake 3rd [Page 2]
118 INTERNET-DRAFT TLS Extension Definitions
123 The TLS (Transport Layer Security) Protocol Version 1.2 is specified
124 in [RFCTLS]. That specification includes the framework for extensions
125 to TLS, considerations in designing such extensions (see Section
126 7.4.1.4 of [RFCTLS]), and IANA Considerations for the allocation of
127 new extension code points; however, it does not specify any
128 particular extensions other than CertHashTypes (see Section
129 7.4.1.4.1of [RFCTLS]).
131 This document provides the specifications for existing TLS
132 extensions. It is, for the most part, the mere adaptation and editing
133 of material from [RFC4366], which covered all aspects of TLS
134 extensions for TLS 1.0 [RFC2246] and TLS 1.1 [RFC4346].
138 1.1 Specific Extensions Covered
140 The extensions described here focus on extending the functionality
141 provided by the TLS protocol message formats. Other issues, such as
142 the addition of new cipher suites, are deferred.
144 Specifically, the extensions described in this document:
146 - Allow TLS clients to provide to the TLS server the name of the
147 server they are contacting. This functionality is desirable in
148 order to facilitate secure connections to servers that host
149 multiple 'virtual' servers at a single underlying network address.
151 - Allow TLS clients and servers to negotiate the maximum fragment
152 length to be sent. This functionality is desirable as a result of
153 memory constraints among some clients, and bandwidth constraints
154 among some access networks.
156 - Allow TLS clients and servers to negotiate the use of client
157 certificate URLs. This functionality is desirable in order to
158 conserve memory on constrained clients.
160 - Allow TLS clients to indicate to TLS servers which CA root keys
161 they possess. This functionality is desirable in order to prevent
162 multiple handshake failures involving TLS clients that are only
163 able to store a small number of CA root keys due to memory
166 - Allow TLS clients and servers to negotiate the use of truncated
167 MACs. This functionality is desirable in order to conserve
168 bandwidth in constrained access networks.
170 - Allow TLS clients and servers to negotiate that the server sends
173 Donald Eastlake 3rd [Page 3]
176 INTERNET-DRAFT TLS Extension Definitions
179 the client certificate status information (e.g., an Online
180 Certificate Status Protocol (OCSP) [RFC2560] response) during a
181 TLS handshake. This functionality is desirable in order to avoid
182 sending a Certificate Revocation List (CRL) over a constrained
183 access network and therefore save bandwidth.
185 The extensions described in this document may be used by TLS clients
186 and servers. The extensions are designed to be backwards compatible,
187 meaning that TLS clients that support the extensions can talk to TLS
188 servers that do not support the extensions, and vice versa. The
189 document therefore updates TLS 1.0 [RFC2246] and TLS 1.1 [RFC4346].
193 1.2 Conventions Used in This Document
195 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
196 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
197 document are to be interpreted as described in [RFC2119].
231 Donald Eastlake 3rd [Page 4]
234 INTERNET-DRAFT TLS Extension Definitions
237 3. Server Name Indication
239 TLS does not provide a mechanism for a client to tell a server the
240 name of the server it is contacting. It may be desirable for clients
241 to provide this information to facilitate secure connections to
242 servers that host multiple 'virtual' servers at a single underlying
245 In order to provide the server name, clients MAY include an extension
246 of type "server_name" in the (extended) client hello. The
247 "extension_data" field of this extension SHALL contain
248 "ServerNameList" where:
253 case host_name: HostName;
261 opaque HostName<1..2^16-1>;
264 ServerName server_name_list<1..2^16-1>
267 Currently, the only server names supported are DNS hostnames;
268 however, this does not imply any dependency of TLS on DNS, and other
269 name types may be added in the future (by an RFC that updates this
270 document). TLS MAY treat provided server names as opaque data and
271 pass the names and types to the application.
273 "HostName" contains the fully qualified DNS hostname of the server,
274 as understood by the client. The hostname is represented as a byte
275 string using UTF-8 encoding [RFC3629], without a trailing dot.
277 If the hostname labels contain only US-ASCII characters, then the
278 client MUST ensure that labels are separated only by the byte 0x2E,
279 representing the dot character U+002E (requirement 1 in Section 3.1
280 of [RFC3490] notwithstanding). If the server needs to match the
281 HostName against names that contain non-US-ASCII characters, it MUST
282 perform the conversion operation described in Section 4 of [RFC3490],
283 treating the HostName as a "query string" (i.e., the AllowUnassigned
284 flag MUST be set). Note that IDNA allows labels to be separated by
285 any of the Unicode characters U+002E, U+3002, U+FF0E, and U+FF61;
286 therefore, servers MUST accept any of these characters as a label
289 Donald Eastlake 3rd [Page 5]
292 INTERNET-DRAFT TLS Extension Definitions
295 separator. If the server only needs to match the HostName against
296 names containing exclusively ASCII characters, it MUST compare ASCII
297 names case-insensitively.
299 Literal IPv4 and IPv6 addresses are not permitted in "HostName".
301 It is RECOMMENDED that clients include an extension of type
302 "server_name" in the client hello whenever they locate a server by a
305 A server that receives a client hello containing the "server_name"
306 extension MAY use the information contained in the extension to guide
307 its selection of an appropriate certificate to return to the client,
308 and/or other aspects of security policy. In this event, the server
309 SHALL include an extension of type "server_name" in the (extended)
310 server hello. The "extension_data" field of this extension SHALL be
313 If the server understood the client hello extension but does not
314 recognize the server name, it SHOULD send an "unrecognized_name"
315 alert (which MAY be fatal).
317 If an application negotiates a server name using an application
318 protocol and then upgrades to TLS, and if a server_name extension is
319 sent, then the extension SHOULD contain the same name that was
320 negotiated in the application protocol. If the server_name is
321 established in the TLS session handshake, the client SHOULD NOT
322 attempt to request a different server name at the application layer.
326 4. Maximum Fragment Length Negotiation
328 Without this extension, TLS specifies a fixed maximum plaintext
329 fragment length of 2^14 bytes. It may be desirable for constrained
330 clients to negotiate a smaller maximum fragment length due to memory
331 limitations or bandwidth limitations.
333 In order to negotiate smaller maximum fragment lengths, clients MAY
334 include an extension of type "max_fragment_length" in the (extended)
335 client hello. The "extension_data" field of this extension SHALL
339 2^9(1), 2^10(2), 2^11(3), 2^12(4), (255)
342 whose value is the desired maximum fragment length. The allowed
343 values for this field are: 2^9, 2^10, 2^11, and 2^12.
347 Donald Eastlake 3rd [Page 6]
350 INTERNET-DRAFT TLS Extension Definitions
353 Servers that receive an extended client hello containing a
354 "max_fragment_length" extension MAY accept the requested maximum
355 fragment length by including an extension of type
356 "max_fragment_length" in the (extended) server hello. The
357 "extension_data" field of this extension SHALL contain a
358 "MaxFragmentLength" whose value is the same as the requested maximum
361 If a server receives a maximum fragment length negotiation request
362 for a value other than the allowed values, it MUST abort the
363 handshake with an "illegal_parameter" alert. Similarly, if a client
364 receives a maximum fragment length negotiation response that differs
365 from the length it requested, it MUST also abort the handshake with
366 an "illegal_parameter" alert.
368 Once a maximum fragment length other than 2^14 has been successfully
369 negotiated, the client and server MUST immediately begin fragmenting
370 messages (including handshake messages), to ensure that no fragment
371 larger than the negotiated length is sent. Note that TLS already
372 requires clients and servers to support fragmentation of handshake
375 The negotiated length applies for the duration of the session
376 including session resumptions.
378 The negotiated length limits the input that the record layer may
379 process without fragmentation (that is, the maximum value of
380 TLSPlaintext.length; see [RFCTLS], Section 6.2.1). Note that the
381 output of the record layer may be larger. For example, if the
382 negotiated length is 2^9=512, then for currently defined cipher
383 suites (those defined in [RFCTLS], [RFC2712], and [RFC3268]), and
384 when null compression is used, the record layer output can be at most
385 793 bytes: 5 bytes of headers, 512 bytes of application data, 256
386 bytes of padding, and 20 bytes of MAC. This means that in this event
387 a TLS record layer peer receiving a TLS record layer message larger
388 than 793 bytes may discard the message and send a "record_overflow"
389 alert, without decrypting the message.
393 5. Client Certificate URLs
395 Without this extension, TLS specifies that when client authentication
396 is performed, client certificates are sent by clients to servers
397 during the TLS handshake. It may be desirable for constrained clients
398 to send certificate URLs in place of certificates, so that they do
399 not need to store their certificates and can therefore save memory.
401 In order to negotiate sending certificate URLs to a server, clients
402 MAY include an extension of type "client_certificate_url" in the
405 Donald Eastlake 3rd [Page 7]
408 INTERNET-DRAFT TLS Extension Definitions
411 (extended) client hello. The "extension_data" field of this extension
414 (Note that it is necessary to negotiate use of client certificate
415 URLs in order to avoid "breaking" existing TLS servers.)
417 Servers that receive an extended client hello containing a
418 "client_certificate_url" extension MAY indicate that they are willing
419 to accept certificate URLs by including an extension of type
420 "client_certificate_url" in the (extended) server hello. The
421 "extension_data" field of this extension SHALL be empty.
423 After negotiation of the use of client certificate URLs has been
424 successfully completed (by exchanging hellos including
425 "client_certificate_url" extensions), clients MAY send a
426 "CertificateURL" message in place of a "Certificate" message:
429 individual_certs(0), pkipath(1), (255)
438 URLAndOptionalHash url_and_hash_list<1..2^16-1>;
442 opaque url<1..2^16-1>;
443 Boolean hash_present;
444 select (hash_present) {
445 case false: struct {};
448 } URLAndOptionalHash;
452 Here "url_and_hash_list" contains a sequence of URLs and optional
455 When X.509 certificates are used, there are two possibilities:
457 - If CertificateURL.type is "individual_certs", each URL refers to a
458 single DER-encoded X.509v3 certificate, with the URL for the client's
463 Donald Eastlake 3rd [Page 8]
466 INTERNET-DRAFT TLS Extension Definitions
469 - If CertificateURL.type is "pkipath", the list contains a single
470 URL referring to a DER-encoded certificate chain, using the type
471 PkiPath described in Section 8 of [RFCTLS].
473 When any other certificate format is used, the specification that
474 describes use of that format in TLS should define the encoding format
475 of certificates or certificate chains, and any constraint on their
478 The hash corresponding to each URL at the client's discretion either
479 is not present or is the SHA-1 hash of the certificate or certificate
480 chain (in the case of X.509 certificates, the DER-encoded certificate
481 or the DER-encoded PkiPath).
483 Note that when a list of URLs for X.509 certificates is used, the
484 ordering of URLs is the same as that used in the TLS Certificate
485 message (see [RFCTLS], Section 7.4.2), but opposite to the order in
486 which certificates are encoded in PkiPath. In either case, the self-
487 signed root certificate MAY be omitted from the chain, under the
488 assumption that the server must already possess it in order to
491 Servers receiving "CertificateURL" SHALL attempt to retrieve the
492 client's certificate chain from the URLs and then process the
493 certificate chain as usual. A cached copy of the content of any URL
494 in the chain MAY be used, provided that a SHA-1 hash is present for
495 that URL and it matches the hash of the cached copy.
497 Servers that support this extension MUST support the http: URL scheme
498 for certificate URLs, and MAY support other schemes. Use of other
499 schemes than "http", "https", or "ftp" may create unexpected
502 If the protocol used is HTTP, then the HTTP server can be configured
503 to use the Cache-Control and Expires directives described in
504 [RFC2616] to specify whether and for how long certificates or
505 certificate chains should be cached.
507 The TLS server is not required to follow HTTP redirects when
508 retrieving the certificates or certificate chain. The URLs used in
509 this extension SHOULD therefore be chosen not to depend on such
512 If the protocol used to retrieve certificates or certificate chains
513 returns a MIME-formatted response (as HTTP does), then the following
514 MIME Content-Types SHALL be used: when a single X.509v3 certificate
515 is returned, the Content-Type is "application/pkix-cert" [RFC2585],
516 and when a chain of X.509v3 certificates is returned, the Content-
517 Type is "application/pkix-pkipath" (see Section 8 of [RFCTLS]).
521 Donald Eastlake 3rd [Page 9]
524 INTERNET-DRAFT TLS Extension Definitions
527 If a SHA-1 hash is present for an URL, then the server MUST check
528 that the SHA-1 hash of the contents of the object retrieved from that
529 URL (after decoding any MIME Content-Transfer-Encoding) matches the
530 given hash. If any retrieved object does not have the correct SHA-1
531 hash, the server MUST abort the handshake with a
532 "bad_certificate_hash_value" alert.
534 Note that clients may choose to send either "Certificate" or
535 "CertificateURL" after successfully negotiating the option to send
536 certificate URLs. The option to send a certificate is included to
537 provide flexibility to clients possessing multiple certificates.
539 If a server encounters an unreasonable delay in obtaining
540 certificates in a given CertificateURL, it SHOULD time out and signal
541 a "certificate_unobtainable" error alert.
545 6. Trusted CA Indication
547 Constrained clients that, due to memory limitations, possess only a
548 small number of CA root keys may wish to indicate to servers which
549 root keys they possess, in order to avoid repeated handshake
552 In order to indicate which CA root keys they possess, clients MAY
553 include an extension of type "trusted_ca_keys" in the (extended)
554 client hello. The "extension_data" field of this extension SHALL
555 contain "TrustedAuthorities" where:
558 TrustedAuthority trusted_authorities_list<0..2^16-1>;
559 } TrustedAuthorities;
562 IdentifierType identifier_type;
563 select (identifier_type) {
564 case pre_agreed: struct {};
565 case key_sha1_hash: SHA1Hash;
566 case x509_name: DistinguishedName;
567 case cert_sha1_hash: SHA1Hash;
572 pre_agreed(0), key_sha1_hash(1), x509_name(2),
573 cert_sha1_hash(3), (255)
576 opaque DistinguishedName<1..2^16-1>;
579 Donald Eastlake 3rd [Page 10]
582 INTERNET-DRAFT TLS Extension Definitions
585 Here "TrustedAuthorities" provides a list of CA root key identifiers
586 that the client possesses. Each CA root key is identified via either:
588 - "pre_agreed": no CA root key identity supplied.
590 - "key_sha1_hash": contains the SHA-1 hash of the CA root key. For
591 Digital Signature Algorithm (DSA) and Elliptic Curve Digital
592 Signature Algorithm (ECDSA) keys, this is the hash of the
593 "subjectPublicKey" value. For RSA keys, the hash is of the big-
594 endian byte string representation of the modulus without any
595 initial 0-valued bytes. (This copies the key hash formats deployed
596 in other environments.)
598 - "x509_name": contains the DER-encoded X.509 DistinguishedName of
601 - "cert_sha1_hash": contains the SHA-1 hash of a DER-encoded
602 Certificate containing the CA root key.
604 Note that clients may include none, some, or all of the CA root keys
605 they possess in this extension.
607 Note also that it is possible that a key hash or a Distinguished Name
608 alone may not uniquely identify a certificate issuer (for example, if
609 a particular CA has multiple key pairs). However, here we assume this
610 is the case following the use of Distinguished Names to identify
611 certificate issuers in TLS.
613 The option to include no CA root keys is included to allow the client
614 to indicate possession of some pre-defined set of CA root keys.
616 Servers that receive a client hello containing the "trusted_ca_keys"
617 extension MAY use the information contained in the extension to guide
618 their selection of an appropriate certificate chain to return to the
619 client. In this event, the server SHALL include an extension of type
620 "trusted_ca_keys" in the (extended) server hello. The
621 "extension_data" field of this extension SHALL be empty.
627 Currently defined TLS cipher suites use the MAC construction HMAC
628 with either MD5 or SHA-1 [RFC2104] to authenticate record layer
629 communications. In TLS, the entire output of the hash function is
630 used as the MAC tag. However, it may be desirable in constrained
631 environments to save bandwidth by truncating the output of the hash
632 function to 80 bits when forming MAC tags.
634 In order to negotiate the use of 80-bit truncated HMAC, clients MAY
637 Donald Eastlake 3rd [Page 11]
640 INTERNET-DRAFT TLS Extension Definitions
643 include an extension of type "truncated_hmac" in the extended client
644 hello. The "extension_data" field of this extension SHALL be empty.
646 Servers that receive an extended hello containing a "truncated_hmac"
647 extension MAY agree to use a truncated HMAC by including an extension
648 of type "truncated_hmac", with empty "extension_data", in the
649 extended server hello.
651 Note that if new cipher suites are added that do not use HMAC, and
652 the session negotiates one of these cipher suites, this extension
653 will have no effect. It is strongly recommended that any new cipher
654 suites using other MACs consider the MAC size an integral part of the
655 cipher suite definition, taking into account both security and
656 bandwidth considerations.
658 If HMAC truncation has been successfully negotiated during a TLS
659 handshake, and the negotiated cipher suite uses HMAC, both the client
660 and the server pass this fact to the TLS record layer along with the
661 other negotiated security parameters. Subsequently during the
662 session, clients and servers MUST use truncated HMACs, calculated as
663 specified in [RFC2104]. That is, CipherSpec.hash_size is 10 bytes,
664 and only the first 10 bytes of the HMAC output are transmitted and
665 checked. Note that this extension does not affect the calculation of
666 the pseudo-random function (PRF) as part of handshaking or key
669 The negotiated HMAC truncation size applies for the duration of the
670 session including session resumptions.
674 8. Certificate Status Request
676 Constrained clients may wish to use a certificate-status protocol
677 such as OCSP [RFC2560] to check the validity of server certificates,
678 in order to avoid transmission of CRLs and therefore save bandwidth
679 on constrained networks. This extension allows for such information
680 to be sent in the TLS handshake, saving roundtrips and resources.
682 In order to indicate their desire to receive certificate status
683 information, clients MAY include an extension of type
684 "status_request" in the (extended) client hello. The "extension_data"
685 field of this extension SHALL contain "CertificateStatusRequest"
689 CertificateStatusType status_type;
690 select (status_type) {
691 case ocsp: OCSPStatusRequest;
695 Donald Eastlake 3rd [Page 12]
698 INTERNET-DRAFT TLS Extension Definitions
701 } CertificateStatusRequest;
703 enum { ocsp(1), (255) } CertificateStatusType;
706 ResponderID responder_id_list<0..2^16-1>;
707 Extensions request_extensions;
710 opaque ResponderID<1..2^16-1>;
711 opaque Extensions<0..2^16-1>;
713 In the OCSPStatusRequest, the "ResponderIDs" provides a list of OCSP
714 responders that the client trusts. A zero-length "responder_id_list"
715 sequence has the special meaning that the responders are implicitly
716 known to the server, e.g., by prior arrangement. "Extensions" is a
717 DER encoding of OCSP request extensions.
719 Both "ResponderID" and "Extensions" are DER-encoded ASN.1 types as
720 defined in [RFC2560]. "Extensions" is imported from [RFC3280]. A
721 zero-length "request_extensions" value means that there are no
722 extensions (as opposed to a zero-length ASN.1 SEQUENCE, which is not
723 valid for the "Extensions" type).
725 In the case of the "id-pkix-ocsp-nonce" OCSP extension, [RFC2560] is
726 unclear about its encoding; for clarification, the nonce MUST be a
727 DER-encoded OCTET STRING, which is encapsulated as another OCTET
728 STRING (note that implementations based on an existing OCSP client
729 will need to be checked for conformance to this requirement).
731 Servers that receive a client hello containing the "status_request"
732 extension MAY return a suitable certificate status response to the
733 client along with their certificate. If OCSP is requested, they
734 SHOULD use the information contained in the extension when selecting
735 an OCSP responder and SHOULD include request_extensions in the OCSP
738 Servers return a certificate response along with their certificate by
739 sending a "CertificateStatus" message immediately after the
740 "Certificate" message (and before any "ServerKeyExchange" or
741 "CertificateRequest" messages). If a server returns a
742 "CertificateStatus" message, then the server MUST have included an
743 extension of type "status_request" with empty "extension_data" in the
744 extended server hello.
747 CertificateStatusType status_type;
748 select (status_type) {
749 case ocsp: OCSPResponse;
753 Donald Eastlake 3rd [Page 13]
756 INTERNET-DRAFT TLS Extension Definitions
761 opaque OCSPResponse<1..2^24-1>;
763 An "ocsp_response" contains a complete, DER-encoded OCSP response
764 (using the ASN.1 type OCSPResponse defined in [RFC2560]). Note that
765 only one OCSP response may be sent.
767 The "CertificateStatus" message is conveyed using the handshake
768 message type "certificate_status".
770 Note that a server MAY also choose not to send a "CertificateStatus"
771 message, even if it receives a "status_request" extension in the
772 client hello message.
774 Note in addition that servers MUST NOT send the "CertificateStatus"
775 message unless it received a "status_request" extension in the client
778 Clients requesting an OCSP response and receiving an OCSP response in
779 a "CertificateStatus" message MUST check the OCSP response and abort
780 the handshake if the response is not satisfactory.
782 certificate_unobtainable(111), /* new */
783 unrecognized_name(112), /* new */
784 bad_certificate_status_response(113), /* new */
785 bad_certificate_hash_value(114), /* new */
811 Donald Eastlake 3rd [Page 14]
814 INTERNET-DRAFT TLS Extension Definitions
817 9. IANA Considerations
819 IANA Considerations for TLS Extensions and the creation of a Registry
820 therefore are all covered in Section 12 of [RFCTLS]..
824 10. Security Considerations
826 General Security Considerations for TLS Extensions are covered in
827 [RFCTLS]. Security Considerations for particular extensions specified
828 in this document are given below.
830 In general, implementers should continue to monitor the state of the
831 art and address any weaknesses identified.
833 Additional security considerations are described in the TLS 1.0 RFC
834 [RFC2246] and the TLS 1.1 RFC [RFC4346].
838 10.1 Security Considerations for server_name
840 If a single server hosts several domains, then clearly it is
841 necessary for the owners of each domain to ensure that this satisfies
842 their security needs. Apart from this, server_name does not appear to
843 introduce significant security issues.
845 Implementations MUST ensure that a buffer overflow does not occur,
846 whatever the values of the length fields in server_name.
848 Although this document specifies an encoding for internationalized
849 hostnames in the server_name extension, it does not address any
850 security issues associated with the use of internationalized
851 hostnames in TLS (in particular, the consequences of "spoofed" names
852 that are indistinguishable from another name when displayed or
853 printed). It is recommended that server certificates not be issued
854 for internationalized hostnames unless procedures are in place to
855 mitigate the risk of spoofed hostnames.
859 10.2 Security Considerations for max_fragment_length
861 The maximum fragment length takes effect immediately, including for
862 handshake messages. However, that does not introduce any security
863 complications that are not already present in TLS, since TLS requires
864 implementations to be able to handle fragmented handshake messages.
866 Note that as described in Section 4, once a non-null cipher suite has
869 Donald Eastlake 3rd [Page 15]
872 INTERNET-DRAFT TLS Extension Definitions
875 been activated, the effective maximum fragment length depends on the
876 cipher suite and compression method, as well as on the negotiated
877 max_fragment_length. This must be taken into account when sizing
878 buffers, and checking for buffer overflow.
882 10.3 Security Considerations for client_certificate_url
884 There are two major issues with this extension.
886 The first major issue is whether or not clients should include
887 certificate hashes when they send certificate URLs.
889 When client authentication is used *without* the
890 client_certificate_url extension, the client certificate chain is
891 covered by the Finished message hashes. The purpose of including
892 hashes and checking them against the retrieved certificate chain is
893 to ensure that the same property holds when this extension is used,
894 i.e., that all of the information in the certificate chain retrieved
895 by the server is as the client intended.
897 On the other hand, omitting certificate hashes enables functionality
898 that is desirable in some circumstances; for example, clients can be
899 issued daily certificates that are stored at a fixed URL and need not
900 be provided to the client. Clients that choose to omit certificate
901 hashes should be aware of the possibility of an attack in which the
902 attacker obtains a valid certificate on the client's key that is
903 different from the certificate the client intended to provide.
904 Although TLS uses both MD5 and SHA-1 hashes in several other places,
905 this was not believed to be necessary here. The property required of
906 SHA-1 is second pre-image resistance.
908 The second major issue is that support for client_certificate_url
909 involves the server's acting as a client in another URL protocol.
910 The server therefore becomes subject to many of the same security
911 concerns that clients of the URL scheme are subject to, with the
912 added concern that the client can attempt to prompt the server to
913 connect to some (possibly weird-looking) URL.
915 In general, this issue means that an attacker might use the server to
916 indirectly attack another host that is vulnerable to some security
917 flaw. It also introduces the possibility of denial of service attacks
918 in which an attacker makes many connections to the server, each of
919 which results in the server's attempting a connection to the target
922 Note that the server may be behind a firewall or otherwise able to
923 access hosts that would not be directly accessible from the public
924 Internet. This could exacerbate the potential security and denial of
927 Donald Eastlake 3rd [Page 16]
930 INTERNET-DRAFT TLS Extension Definitions
933 service problems described above, as well as allow the existence of
934 internal hosts to be confirmed when they would otherwise be hidden.
936 The detailed security concerns involved will depend on the URL
937 schemes supported by the server. In the case of HTTP, the concerns
938 are similar to those that apply to a publicly accessible HTTP proxy
939 server. In the case of HTTPS, loops and deadlocks may be created, and
940 this should be addressed. In the case of FTP, attacks arise that are
941 similar to FTP bounce attacks.
943 As a result of this issue, it is RECOMMENDED that the
944 client_certificate_url extension should have to be specifically
945 enabled by a server administrator, rather than be enabled by default.
946 It is also RECOMMENDED that URI protocols be enabled by the
947 administrator individually, and only a minimal set of protocols be
948 enabled. Unusual protocols that offer limited security or whose
949 security is not well-understood SHOULD be avoided.
951 As discussed in [RFC3986], URLs that specify ports other than the
952 default may cause problems, as may very long URLs (which are more
953 likely to be useful in exploiting buffer overflow bugs).
955 Also note that HTTP caching proxies are common on the Internet, and
956 some proxies do not check for the latest version of an object
957 correctly. If a request using HTTP (or another caching protocol) goes
958 through a misconfigured or otherwise broken proxy, the proxy may
959 return an out-of-date response.
963 10.4 Security Considerations for trusted_ca_keys
965 It is possible that which CA root keys a client possesses could be
966 regarded as confidential information. As a result, the CA root key
967 indication extension should be used with care.
969 The use of the SHA-1 certificate hash alternative ensures that each
970 certificate is specified unambiguously. As for the previous
971 extension, it was not believed necessary to use both MD5 and SHA-1
976 10.5 Security Considerations for truncated_hmac
978 It is possible that truncated MACs are weaker than "un-truncated"
979 MACs. However, no significant weaknesses are currently known or
980 expected to exist for HMAC with MD5 or SHA-1, truncated to 80 bits.
982 Note that the output length of a MAC need not be as long as the
985 Donald Eastlake 3rd [Page 17]
988 INTERNET-DRAFT TLS Extension Definitions
991 length of a symmetric cipher key, since forging of MAC values cannot
992 be done off-line: in TLS, a single failed MAC guess will cause the
993 immediate termination of the TLS session.
995 Since the MAC algorithm only takes effect after all handshake
996 messages that affect extension parameters have been authenticated by
997 the hashes in the Finished messages, it is not possible for an active
998 attacker to force negotiation of the truncated HMAC extension where
999 it would not otherwise be used (to the extent that the handshake
1000 authentication is secure). Therefore, in the event that any security
1001 problem were found with truncated HMAC in the future, if either the
1002 client or the server for a given session were updated to take the
1003 problem into account, it would be able to veto use of this extension.
1007 10.6 Security Considerations for status_request
1009 If a client requests an OCSP response, it must take into account that
1010 an attacker's server using a compromised key could (and probably
1011 would) pretend not to support the extension. In this case, a client
1012 that requires OCSP validation of certificates SHOULD either contact
1013 the OCSP server directly or abort the handshake.
1015 Use of the OCSP nonce request extension (id-pkix-ocsp-nonce) may
1016 improve security against attacks that attempt to replay OCSP
1017 responses; see Section 4.4.1 of [RFC2560] for further details.
1021 11. Internationalization Considerations
1023 None of the extensions defined here directly use strings subject to
1024 localization. Domain Name System (DNS) hostnames are encoded using
1025 UTF-8. If future extensions use text strings, then
1026 internationalization should be considered in their design.
1043 Donald Eastlake 3rd [Page 18]
1046 INTERNET-DRAFT TLS Extension Definitions
1049 12. Normative References
1051 [RFC2104] Krawczyk, H., Bellare, M., and R. Canetti, "HMAC: Keyed-
1052 Hashing for Message Authentication", RFC 2104, February 1997.
1054 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
1055 Requirement Levels", BCP 14, RFC 2119, March 1997.
1057 [RFC2246] Dierks, T. and C. Allen, "The TLS Protocol Version 1.0",
1058 RFC 2246, January 1999.
1060 [RFC2560] Myers, M., Ankney, R., Malpani, A., Galperin, S., and C.
1061 Adams, "X.509 Internet Public Key Infrastructure Online Certificate
1062 Status Protocol - OCSP", RFC 2560, June 1999.
1064 [RFC2585] Housley, R. and P. Hoffman, "Internet X.509 Public Key
1065 Infrastructure Operational Protocols: FTP and HTTP", RFC 2585, May
1068 [RFC2616] Fielding, R., Gettys, J., Mogul, J., Frystyk, H., Masinter,
1069 L., Leach, P., and T. Berners-Lee, "Hypertext Transfer Protocol --
1070 HTTP/1.1", RFC 2616, June 1999.
1072 [RFC3280] Housley, R., Polk, W., Ford, W., and D. Solo, "Internet
1073 X.509 Public Key Infrastructure Certificate and Certificate
1074 Revocation List (CRL) Profile", RFC 3280, April 2002.
1076 [RFC3490] Faltstrom, P., Hoffman, P., and A. Costello,
1077 "Internationalizing Domain Names in Applications (IDNA)", RFC 3490,
1080 [RFC3629] Yergeau, F., "UTF-8, a transformation format of ISO 10646",
1081 STD 63, RFC 3629, November 2003.
1083 [RFC3986] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform
1084 Resource Identifier (URI): Generic Syntax", STD 66, RFC 3986, January
1087 [RFC4346] Dierks, T. and E. Rescorla, "The Transport Layer Security
1088 (TLS) Protocol Version 1.1", RFC 4346, April 2006.
1090 [RFCTLS] Dierks, T. and E. Rescorla, "The TLS Protocol Version 1.2",
1091 draft-ietf-tls-rfc4346-bis-03.txt, March 2007.
1095 13. Informative References
1097 [RFC2712] Medvinsky, A. and M. Hur, "Addition of Kerberos Cipher
1098 Suites to Transport Layer Security (TLS)", RFC 2712, October 1999.
1101 Donald Eastlake 3rd [Page 19]
1104 INTERNET-DRAFT TLS Extension Definitions
1107 [RFC3268] Chown, P., "Advanced Encryption Standard (AES) Ciphersuites
1108 for Transport Layer Security (TLS)", RFC 3268, June 2002.
1110 [RFC4366] Blake-Wilson, S., Nystrom, M., Hopwood, D., Mikkelsen, J.,
1111 and T. Wright, "Transport Layer Security (TLS) Extensions", RFC 4366,
1159 Donald Eastlake 3rd [Page 20]
1162 INTERNET-DRAFT TLS Extension Definitions
1165 Copyright, Disclaimer, and Additional IPR Provisions
1167 Copyright (C) The IETF Trust (2007).
1169 This document is subject to the rights, licenses and restrictions
1170 contained in BCP 78, and except as set forth therein, the authors
1171 retain all their rights.
1174 This document and the information contained herein are provided on an
1175 "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
1176 OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND
1177 THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS
1178 OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF
1179 THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
1180 WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
1182 The IETF takes no position regarding the validity or scope of any
1183 Intellectual Property Rights or other rights that might be claimed to
1184 pertain to the implementation or use of the technology described in
1185 this document or the extent to which any license under such rights
1186 might or might not be available; nor does it represent that it has
1187 made any independent effort to identify any such rights. Information
1188 on the procedures with respect to rights in RFC documents can be
1189 found in BCP 78 and BCP 79.
1191 Copies of IPR disclosures made to the IETF Secretariat and any
1192 assurances of licenses to be made available, or the result of an
1193 attempt made to obtain a general license or permission for the use of
1194 such proprietary rights by implementers or users of this
1195 specification can be obtained from the IETF on-line IPR repository at
1196 http://www.ietf.org/ipr.
1198 The IETF invites any interested party to bring to its attention any
1199 copyrights, patents or patent applications, or other proprietary
1200 rights that may cover technology that may be required to implement
1201 this standard. Please address the information to the IETF at ietf-
1217 Donald Eastlake 3rd [Page 21]
1220 INTERNET-DRAFT TLS Extension Definitions
1226 Motorola Laboratories
1228 Marlborough, MA 01752
1230 Tel: +1-508-786-7554
1231 Email: Donald.Eastlake@motorola.com
1235 Expiration and File Name
1237 This draft expires in December 2007.
1239 Its file name is draft-ietf-tls-rfc4366-bis-00.txt.
1275 Donald Eastlake 3rd [Page 22]