the new makeinfo sets the FLOAT_NAME by default.
[gnutls.git] / doc / protocol / draft-ietf-tls-rfc4366-bis-01.txt
blob367d6667f3f03f6e346e2cdd08c4fc30f6252005
1 TLS Working Group                                    Donald Eastlake 3rd
2 INTERNET-DRAFT                                     Motorola Laboratories
3 Obsoletes: RFC 4366
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-
27    Drafts.
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
41 Abstract
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
61 Acknowledgements
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.
65    Wright.
69 Table of Contents
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
118 1. Introduction
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
161       limitations.
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
238    network address.
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:
245       struct {
246           NameType name_type;
247           select (name_type) {
248               case host_name: HostName;
249           } name;
250       } ServerName;
252       enum {
253           host_name(0), (255)
254       } NameType;
256       opaque HostName<1..2^16-1>;
258       struct {
259           ServerName server_name_list<1..2^16-1>
260       } ServerNameList;
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
297    supported name type.
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
305    empty.
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
330    contain:
332       enum{
333           2^9(1), 2^10(2), 2^11(3), 2^12(4), (255)
334       } MaxFragmentLength;
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
352    fragment length.
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
366    messages.
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
404    SHALL be empty.
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:
420       enum {
421           individual_certs(0), pkipath(1), (255)
422       } CertChainType;
424       enum {
425           false(0), true(1)
426       } Boolean;
428       struct {
429           CertChainType type;
430           URLAndOptionalHash url_and_hash_list<1..2^16-1>;
431       } CertificateURL;
433       struct {
434           opaque url<1..2^16-1>;
435           Boolean hash_present;
436           select (hash_present) {
437               case false: struct {};
438               case true: SHA1Hash;
439           } hash;
440       } URLAndOptionalHash;
442       opaque SHA1Hash[20];
444    Here "url_and_hash_list" contains a sequence of URLs and optional
445    hashes.
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
451    certificate first.
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
467    ordering.
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
480    validate it.
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
491    problems.
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
501    redirects.
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
540    failures.
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:
547       struct {
548           TrustedAuthority trusted_authorities_list<0..2^16-1>;
549       } TrustedAuthorities;
551       struct {
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;
558           } identifier;
559       } TrustedAuthority;
561       enum {
562           pre_agreed(0), key_sha1_hash(1), x509_name(2),
563           cert_sha1_hash(3), (255)
564       } IdentifierType;
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
588       the CA.
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.
614 7. Truncated HMAC
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
655    derivation.
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"
674    where:
676       struct {
677           CertificateStatusType status_type;
678           select (status_type) {
679               case ocsp: OCSPStatusRequest;
680           } request;
683 Donald Eastlake 3rd                                            [Page 12]
685 INTERNET-DRAFT                                 TLS Extension Definitions
688       } CertificateStatusRequest;
690       enum { ocsp(1), (255) } CertificateStatusType;
692       struct {
693           ResponderID responder_id_list<0..2^16-1>;
694           Extensions  request_extensions;
695       } OCSPStatusRequest;
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
723    request.
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.
733       struct {
734           CertificateStatusType status_type;
735           select (status_type) {
736               case ocsp: OCSPResponse;
737           } response;
740 Donald Eastlake 3rd                                            [Page 13]
742 INTERNET-DRAFT                                 TLS Extension Definitions
745       } CertificateStatus;
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
762    hello message.
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 */
772           (255)
773       } AlertDescription;
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
904    of the attack.
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
955    hashes.
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
1044    1999.
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,
1056    March 2003.
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
1063    2005.
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,
1092    April 2006.
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-
1181    ipr@ietf.org.
1196 Donald Eastlake 3rd                                            [Page 21]
1198 INTERNET-DRAFT                                 TLS Extension Definitions
1201 Author's Address
1203    Donald Eastlake 3rd
1204    Motorola Laboratories
1205    111 Locke Drive
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]