Improve GTK-DOC coverage.
[gnutls.git] / doc / protocol / draft-ietf-tls-rfc4366-bis-00.txt
blob95ca602f226ebe5541ff51ae516b8e205fef563f
2 TLS Working Group                                    Donald Eastlake 3rd
3 INTERNET-DRAFT                                     Motorola Laboratories
4 Obsoletes: RFC 4366
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-
28    Drafts.
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
42 Abstract
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
63 Acknowledgements
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.
67    Wright.
71 Table of Contents
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
121 1. Introduction
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
164       limitations.
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
243    network address.
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:
250       struct {
251           NameType name_type;
252           select (name_type) {
253               case host_name: HostName;
254           } name;
255       } ServerName;
257       enum {
258           host_name(0), (255)
259       } NameType;
261       opaque HostName<1..2^16-1>;
263       struct {
264           ServerName server_name_list<1..2^16-1>
265       } ServerNameList;
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
303    supported name type.
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
311    empty.
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
336    contain:
338       enum{
339           2^9(1), 2^10(2), 2^11(3), 2^12(4), (255)
340       } MaxFragmentLength;
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
359    fragment length.
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
373    messages.
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
412    SHALL be empty.
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:
428       enum {
429           individual_certs(0), pkipath(1), (255)
430       } CertChainType;
432       enum {
433           false(0), true(1)
434       } Boolean;
436       struct {
437           CertChainType type;
438           URLAndOptionalHash url_and_hash_list<1..2^16-1>;
439       } CertificateURL;
441       struct {
442           opaque url<1..2^16-1>;
443           Boolean hash_present;
444           select (hash_present) {
445               case false: struct {};
446               case true: SHA1Hash;
447           } hash;
448       } URLAndOptionalHash;
450       opaque SHA1Hash[20];
452    Here "url_and_hash_list" contains a sequence of URLs and optional
453    hashes.
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
459    certificate first.
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
476    ordering.
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
489    validate it.
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
500    problems.
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
510    redirects.
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
550    failures.
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:
557       struct {
558           TrustedAuthority trusted_authorities_list<0..2^16-1>;
559       } TrustedAuthorities;
561       struct {
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;
568           } identifier;
569       } TrustedAuthority;
571       enum {
572           pre_agreed(0), key_sha1_hash(1), x509_name(2),
573           cert_sha1_hash(3), (255)
574       } IdentifierType;
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
599       the CA.
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.
625 7. Truncated HMAC
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
667    derivation.
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"
686    where:
688       struct {
689           CertificateStatusType status_type;
690           select (status_type) {
691               case ocsp: OCSPStatusRequest;
692           } request;
695 Donald Eastlake 3rd                                            [Page 12]
698 INTERNET-DRAFT                                 TLS Extension Definitions
701       } CertificateStatusRequest;
703       enum { ocsp(1), (255) } CertificateStatusType;
705       struct {
706           ResponderID responder_id_list<0..2^16-1>;
707           Extensions  request_extensions;
708       } OCSPStatusRequest;
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
736    request.
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.
746       struct {
747           CertificateStatusType status_type;
748           select (status_type) {
749               case ocsp: OCSPResponse;
750           } response;
753 Donald Eastlake 3rd                                            [Page 13]
756 INTERNET-DRAFT                                 TLS Extension Definitions
759       } CertificateStatus;
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
776    hello message.
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 */
786           (255)
787       } AlertDescription;
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
920    of the attack.
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
972    hashes.
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
1066    1999.
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,
1078    March 2003.
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
1085    2005.
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,
1112    April 2006.
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-
1202    ipr@ietf.org.
1217 Donald Eastlake 3rd                                            [Page 21]
1220 INTERNET-DRAFT                                 TLS Extension Definitions
1223 Author's Address
1225    Donald Eastlake 3rd
1226    Motorola Laboratories
1227    111 Locke Drive
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]