Improve GTK-DOC coverage.
[gnutls.git] / doc / protocol / draft-ietf-tls-rfc3546bis-01.txt
blob9dd452752777b300282082a54ec5b71bb127bdee
2 TLS Working Group                                        S. Blake-Wilson
3 Internet-Draft                                                       BCI
4 Obsoletes: 3546 (if approved)                                 M. Nystrom
5 Updates: 2246                                               RSA Security
6 Category: Standards Track                                     D. Hopwood
7 Expires: November 2005                            Independent Consultant
8                                                             J. Mikkelsen
9                                                          Transactionware
10                                                                T. Wright
11                                                                 Vodafone
12                                                                 May 2005
14                Transport Layer Security (TLS) Extensions
15                    <draft-ietf-tls-rfc3546bis-01.txt>
17 Status of this Memo
19    This document is an Internet-Draft and is subject to all provisions
20    of section 3 of RFC 3667.
22    By submitting this Internet-Draft, each author represents that any 
23    applicable patent or other IPR claims of which he or she is aware
24    have been or will be disclosed, and any of which he or she becomes 
25    aware will be disclosed, in accordance with Section 6 of BCP 79.
27    Internet-Drafts are working documents of the Internet Engineering
28    Task Force (IETF), its areas, and its working groups.  Note that
29    other groups may also distribute working documents as Internet-
30    Drafts.
32    Internet-Drafts are draft documents valid for a maximum of six months
33    and may be updated, replaced, or obsoleted by other documents at any
34    time.  It is inappropriate to use Internet-Drafts as reference
35    material or to cite them other than as "work in progress."
37    The list of current Internet-Drafts can be accessed at http://
38    www.ietf.org/ietf/1id-abstracts.txt.
40    The list of Internet-Draft Shadow Directories can be accessed at
41    http://www.ietf.org/shadow.html.
43    This Internet-Draft will expire in November 2005.
45 Copyright Notice
47    Copyright (C) The Internet Society (2005).  All Rights Reserved.
49 Abstract
51    This document describes extensions that may be used to add
52    functionality to Transport Layer Security (TLS).  It provides both
53    generic extension mechanisms for the TLS handshake client and server
54    hellos, and specific extensions using these generic mechanisms.
56    The extensions may be used by TLS clients and servers.  The
57    extensions are backwards compatible - communication is possible
58    between TLS 1.0 clients that support the extensions and TLS 1.0
59    servers that do not support the extensions, and vice versa.
61 Blake-Wilson, et. al.       Standards Track                     [Page 1]
63 Internet-Draft               TLS Extensions                     May 2005
65 Conventions used in this Document
67    The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
68    "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
69    document are to be interpreted as described in BCP 14, RFC 2119
70    [KEYWORDS].
72 Table of Contents
74    1.  Introduction .............................................  2
75    2.  General Extension Mechanisms .............................  4
76        2.1. Extended Client Hello ...............................  5
77        2.2. Extended Server Hello ...............................  5
78        2.3. Hello Extensions ....................................  6
79        2.4. Extensions to the handshake protocol ................  7
80    3.  Specific Extensions ......................................  8
81        3.1. Server Name Indication ..............................  8
82        3.2. Maximum Fragment Length Negotiation ................. 10
83        3.3. Client Certificate URLs ............................. 11
84        3.4. Trusted CA Indication ............................... 14
85        3.5. Truncated HMAC ...................................... 15
86        3.6. Certificate Status Request........................... 16
87    4. Error alerts .............................................. 18
88    5. Procedure for Defining New Extensions...................... 20
89    6.  Security Considerations .................................. 21
90        6.1. Security of server_name ............................. 21
91        6.2. Security of max_fragment_length ..................... 21
92        6.3. Security of client_certificate_url .................. 22
93        6.4. Security of trusted_ca_keys ......................... 23
94        6.5. Security of truncated_hmac .......................... 23
95        6.6. Security of status_request .......................... 24
96    7.  Internationalization Considerations ...................... 24
97    8.  IANA Considerations ...................................... 24
98    9.  Intellectual Property Rights ............................. 26
99    10. Acknowledgments .......................................... 26
100    11. Normative References ..................................... 27
101    12. Informative References ................................... 28
102    13. Authors' Addresses ....................................... 28
103    14. Full Copyright Statement ................................. 29
105 1. Introduction
107    This document describes extensions that may be used to add
108    functionality to Transport Layer Security (TLS).  It provides both
109    generic extension mechanisms for the TLS handshake client and server
110    hellos, and specific extensions using these generic mechanisms.
112    TLS is now used in an increasing variety of operational environments
113    - many of which were not envisioned when the original design criteria
114    for TLS were determined.  The extensions introduced in this document
115    are designed to enable TLS to operate as effectively as possible in
116    new environments like wireless networks.
118 Blake-Wilson, et. al.       Standards Track                     [Page 2]
120 Internet-Draft               TLS Extensions                     May 2005
122    Wireless environments often suffer from a number of constraints not
123    commonly present in wired environments.  These constraints may
124    include bandwidth limitations, computational power limitations,
125    memory limitations, and battery life limitations.
127    The extensions described here focus on extending the functionality
128    provided by the TLS protocol message formats.  Other issues, such as
129    the addition of new cipher suites, are deferred.
131    Specifically, the extensions described in this document:
133    -  Allow TLS clients to provide to the TLS server the name of the
134       server they are contacting.  This functionality is desirable to
135       facilitate secure connections to servers that host multiple
136       'virtual' servers at a single underlying network address.
138    -  Allow TLS clients and servers to negotiate the maximum fragment
139       length to be sent.  This functionality is desirable as a result of
140       memory constraints among some clients, and bandwidth constraints
141       among some access networks.
143    -  Allow TLS clients and servers to negotiate the use of client
144       certificate URLs.  This functionality is desirable in order to
145       conserve memory on constrained clients.
147    -  Allow TLS clients to indicate to TLS servers which CA root keys
148       they possess.  This functionality is desirable in order to prevent
149       multiple handshake failures involving TLS clients that are only
150       able to store a small number of CA root keys due to memory
151       limitations.
153    -  Allow TLS clients and servers to negotiate the use of truncated
154       MACs.  This functionality is desirable in order to conserve
155       bandwidth in constrained access networks.
157    -  Allow TLS clients and servers to negotiate that the server sends
158       the client certificate status information (e.g., an Online
159       Certificate Status Protocol (OCSP) [OCSP] response) during a TLS
160       handshake.  This functionality is desirable in order to avoid
161       sending a Certificate Revocation List (CRL) over a constrained
162       access network and therefore save bandwidth.
164    In order to support the extensions above, general extension
165    mechanisms for the client hello message and the server hello message
166    are introduced.
168    The extensions described in this document may be used by TLS 1.0
169    clients and TLS 1.0 servers.  The extensions are designed to be
170    backwards compatible - meaning that TLS 1.0 clients that support the
171    extensions can talk to TLS 1.0 servers that do not support the
172    extensions, and vice versa.
174 Blake-Wilson, et. al.       Standards Track                     [Page 3]
176 Internet-Draft               TLS Extensions                     May 2005
178    Backwards compatibility is primarily achieved via two considerations:
180    -  Clients typically request the use of extensions via the extended
181       client hello message described in Section 2.1. TLS 1.0 [TLS]
182       requires servers to accept extended client hello messages, even if
183       the server does not "understand" the extension.
185    -  For the specific extensions described here, no mandatory server
186       response is required when clients request extended functionality.
188    Note however, that although backwards compatibility is supported,
189    some constrained clients may be forced to reject communications with
190    servers that do not support the extensions as a result of the limited
191    capabilities of such clients.
193    This document is a revision of the RFC3546 [RFC3546]. The only 
194    major change concerns the definition of new extensions. New 
195    extensions can now be defined via the IETF Consensus Process (rather
196    than requiring a standards track RFC). In addition, a few minor 
197    clarifications and editorial improvements were made.
199    The remainder of this document is organized as follows.  Section 2
200    describes general extension mechanisms for the client hello and
201    server hello handshake messages.  Section 3 describes specific
202    extensions to TLS 1.0.  Section 4 describes new error alerts for use
203    with the TLS extensions.  The final sections of the document address
204    IPR, security considerations, registration of the 
205    application/pkix-pkipath MIME type, acknowledgements, and references.
207 2. General Extension Mechanisms
209    This section presents general extension mechanisms for the TLS
210    handshake client hello and server hello messages.
212    These general extension mechanisms are necessary in order to enable
213    clients and servers to negotiate whether to use specific extensions,
214    and how to use specific extensions.  The extension formats described
215    are based on [MAILING LIST].
217    Section 2.1 specifies the extended client hello message format,
218    Section 2.2 specifies the extended server hello message format, and
219    Section 2.3 describes the actual extension format used with the
220    extended client and server hellos.
222 Blake-Wilson, et. al.       Standards Track                     [Page 4]
224 Internet-Draft               TLS Extensions                     May 2005
226 2.1. Extended Client Hello
228    Clients MAY request extended functionality from servers by sending
229    the extended client hello message format in place of the client hello
230    message format.  The extended client hello message format is:
232       struct {
233           ProtocolVersion client_version;
234           Random random;
235           SessionID session_id;
236           CipherSuite cipher_suites<2..2^16-1>;
237           CompressionMethod compression_methods<1..2^8-1>;
238           Extension client_hello_extension_list<0..2^16-1>;
239       } ClientHello;
241    Here the new "client_hello_extension_list" field contains a list of
242    extensions.  The actual "Extension" format is defined in Section 2.3.
244    In the event that a client requests additional functionality using
245    the extended client hello, and this functionality is not supplied by
246    the server, the client MAY abort the handshake.
248    Note that [TLS], Section 7.4.1.2, allows additional information to be
249    added to the client hello message.  Thus the use of the extended
250    client hello defined above should not "break" existing TLS 1.0
251    servers.
253    A server that supports the extensions mechanism MUST accept only
254    client hello messages in either the original or extended ClientHello
255    format, and (as for all other messages) MUST check that the amount of
256    data in the message precisely matches one of these formats; if not
257    then it MUST send a fatal "decode_error" alert.  This overrides the
258    "Forward compatibility note" in [TLS].
260 2.2. Extended Server Hello
262    The extended server hello message format MAY be sent in place of the
263    server hello message when the client has requested extended
264    functionality via the extended client hello message specified in
265    Section 2.1.  The extended server hello message format is:
277 Blake-Wilson, et. al.       Standards Track                     [Page 5]
279 Internet-Draft               TLS Extensions                     May 2005
281       struct {
282           ProtocolVersion server_version;
283           Random random;
284           SessionID session_id;
285           CipherSuite cipher_suite;
286           CompressionMethod compression_method;
287           Extension server_hello_extension_list<0..2^16-1>;
288       } ServerHello;
290    Here the new "server_hello_extension_list" field contains a list of
291    extensions.  The actual "Extension" format is defined in Section 2.3.
293    Note that the extended server hello message is only sent in response
294    to an extended client hello message.  This prevents the possibility
295    that the extended server hello message could "break" existing TLS 1.0
296    clients.
298 2.3. Hello Extensions
300    The extension format for extended client hellos and extended server
301    hellos is:
303       struct {
304           ExtensionType extension_type;
305           opaque extension_data<0..2^16-1>;
306       } Extension;
308    Here:
310    - "extension_type" identifies the particular extension type.
312    - "extension_data" contains information specific to the particular
313    extension type.
315    The extension types defined in this document are:
317       enum {
318           server_name(0), max_fragment_length(1),
319           client_certificate_url(2), trusted_ca_keys(3),
320           truncated_hmac(4), status_request(5), (65535)
321       } ExtensionType;
323    The list of defined extension types is maintained by the IANA. The
324    current list can be found at XXX (suggest 
325    http://www.iana.org/assignments/tls-extensions). See sections 5 and
326    8 for more information on how new values are added.
328    Note that for all extension types (including those defined in
329    future), the extension type MUST NOT appear in the extended server
330    hello unless the same extension type appeared in the corresponding
331    client hello.  Thus clients MUST abort the handshake if they receive
332    an extension type in the extended server hello that they did not
333    request in the associated (extended) client hello.
335 Blake-Wilson, et. al.       Standards Track                     [Page 6]
337 Internet-Draft               TLS Extensions                     May 2005
339    Nonetheless "server initiated" extensions may be provided in the 
340    future within this framework - such an extension, say of type x, 
341    would require the client to first send an extension of type x in the 
342    (extended) client hello with empty extension_data to indicate that it 
343    supports the extension type.
345    Also note that when multiple extensions of different types are
346    present in the extended client hello or the extended server hello,
347    the extensions may appear in any order.  There MUST NOT be more than
348    one extension of the same type.
350    Finally note that an extended client hello may be sent both when
351    starting a new session and when requesting session resumption.
352    Indeed a client that requests resumption of a session does not in 
353    general know whether the server will accept this request, and 
354    therefore it SHOULD send an extended client hello if it would 
355    normally do so for a new session. In general the specification of 
356    each extension type must include a discussion of the effect of the
357    extension both during new sessions and during resumed sessions.
359 2.4. Extensions to the handshake protocol
361    This document suggests the use of two new handshake messages,
362    "CertificateURL" and "CertificateStatus".  These messages are
363    described in Section 3.3 and Section 3.6, respectively. The new
364    handshake message structure therefore becomes:
366       enum {
367           hello_request(0), client_hello(1), server_hello(2),
368           certificate(11), server_key_exchange (12),
369           certificate_request(13), server_hello_done(14),
370           certificate_verify(15), client_key_exchange(16),
371           finished(20), certificate_url(21), certificate_status(22),
372           (255)
373       } HandshakeType;
386 Blake-Wilson, et. al.       Standards Track                     [Page 7]
388 Internet-Draft               TLS Extensions                     May 2005
390       struct {
391           HandshakeType msg_type;    /* handshake type */
392           uint24 length;             /* bytes in message */
393           select (HandshakeType) {
394               case hello_request:       HelloRequest;
395               case client_hello:        ClientHello;
396               case server_hello:        ServerHello;
397               case certificate:         Certificate;
398               case server_key_exchange: ServerKeyExchange;
399               case certificate_request: CertificateRequest;
400               case server_hello_done:   ServerHelloDone;
401               case certificate_verify:  CertificateVerify;
402               case client_key_exchange: ClientKeyExchange;
403               case finished:            Finished;
404               case certificate_url:     CertificateURL;
405               case certificate_status:  CertificateStatus;
406           } body;
407       } Handshake;
409 3. Specific Extensions
411    This section describes the specific TLS extensions specified in this
412    document.
414    Note that any messages associated with these extensions that are sent
415    during the TLS handshake MUST be included in the hash calculations
416    involved in "Finished" messages.
418    Note also that all the extensions defined in this Section are
419    relevant only when a session is initiated. When a client includes
420    one or more of the defined extension types in an extended client
421    hello while requesting session resumption:
423    - If the resumption request is denied, the use of the extensions
424    is negotiated as normal.  
426    - If, on the other hand, the older session is resumed, then the 
427    server MUST ignore the extensions and send a server hello containing 
428    none of the extension types; in this case the functionality of these
429    extensions negotiated during the original session initiation is 
430    applied to the resumed session.
432    Section 3.1 describes the extension of TLS to allow a client to
433    indicate which server it is contacting.  Section 3.2 describes the
434    extension to provide maximum fragment length negotiation.  Section
435    3.3 describes the extension to allow client certificate URLs.
436    Section 3.4 describes the extension to allow a client to indicate
437    which CA root keys it possesses.  Section 3.5 describes the extension
438    to allow the use of truncated HMAC.  Section 3.6 describes the
439    extension to support integration of certificate status information
440    messages into TLS handshakes.
442 Blake-Wilson, et. al.       Standards Track                     [Page 8]
444 Internet-Draft               TLS Extensions                     May 2005
446 3.1. Server Name Indication
448    [TLS] does not provide a mechanism for a client to tell a server the
449    name of the server it is contacting.  It may be desirable for clients
450    to provide this information to facilitate secure connections to
451    servers that host multiple 'virtual' servers at a single underlying
452    network address.
454    In order to provide the server name, clients MAY include an extension
455    of type "server_name" in the (extended) client hello.  The
456    "extension_data" field of this extension SHALL contain
457    "ServerNameList" where:
459       struct {
460           NameType name_type;
461           select (name_type) {
462               case host_name: HostName;
463           } name;
464       } ServerName;
466       enum {
467           host_name(0), (255)
468       } NameType;
470       opaque HostName<1..2^16-1>;
472       struct {
473           ServerName server_name_list<1..2^16-1>
474       } ServerNameList;
476    Currently the only server names supported are DNS hostnames, however
477    this does not imply any dependency of TLS on DNS, and other name
478    types may be added in the future (by an RFC that Updates this
479    document).  TLS MAY treat provided server names as opaque data and
480    pass the names and types to the application.
482    "HostName" contains the fully qualified DNS hostname of the server,
483    as understood by the client. The hostname is represented as a byte
484    string using UTF-8 encoding [UTF8], without a trailing dot.
486    If the hostname labels contain only US-ASCII characters, then the
487    client MUST ensure that labels are separated only by the byte 0x2E,
488    representing the dot character U+002E (requirement 1 in section 3.1
489    of [IDNA] notwithstanding). If the server needs to match the HostName
490    against names that contain non-US-ASCII characters, it MUST perform
491    the conversion operation described in section 4 of [IDNA], treating
492    the HostName as a "query string" (i.e. the AllowUnassigned flag MUST
493    be set). Note that IDNA allows labels to be separated by any of the
494    Unicode characters U+002E, U+3002, U+FF0E, and U+FF61, therefore
495    servers MUST accept any of these characters as a label separator.  If
497 Blake-Wilson, et. al.       Standards Track                     [Page 9]
499 Internet-Draft               TLS Extensions                     May 2005
501    the server only needs to match the HostName against names containing
502    exclusively ASCII characters, it MUST compare ASCII names case-
503    insensitively.
505    Literal IPv4 and IPv6 addresses are not permitted in "HostName".
507    It is RECOMMENDED that clients include an extension of type
508    "server_name" in the client hello whenever they locate a server by a
509    supported name type.
511    A server that receives a client hello containing the "server_name"
512    extension, MAY use the information contained in the extension to
513    guide its selection of an appropriate certificate to return to the
514    client, and/or other aspects of security policy.  In this event, the
515    server SHALL include an extension of type "server_name" in the
516    (extended) server hello.  The "extension_data" field of this
517    extension SHALL be empty.
519    If the server understood the client hello extension but does not
520    recognize the server name, it SHOULD send an "unrecognized_name"
521    alert (which MAY be fatal).
523    If an application negotiates a server name using an application
524    protocol, then upgrades to TLS, and a server_name extension is sent,
525    then the extension SHOULD contain the same name that was negotiated
526    in the application protocol.  If the server_name is established in
527    the TLS session handshake, the client SHOULD NOT attempt to request a
528    different server name at the application layer.
530 3.2. Maximum Fragment Length Negotiation
532    [TLS] specifies a fixed maximum plaintext fragment length of 2^14
533    bytes.  It may be desirable for constrained clients to negotiate a
534    smaller maximum fragment length due to memory limitations or
535    bandwidth limitations.
537    In order to negotiate smaller maximum fragment lengths, clients MAY
538    include an extension of type "max_fragment_length" in the (extended)
539    client hello.  The "extension_data" field of this extension SHALL
540    contain:
542       enum{
543           2^9(1), 2^10(2), 2^11(3), 2^12(4), (255)
544       } MaxFragmentLength;
546    whose value is the desired maximum fragment length.  The allowed
547    values for this field are: 2^9, 2^10, 2^11, and 2^12.
550 Blake-Wilson, et. al.       Standards Track                    [Page 10]
552 Internet-Draft               TLS Extensions                     May 2005
554    Servers that receive an extended client hello containing a
555    "max_fragment_length" extension, MAY accept the requested maximum
556    fragment length by including an extension of type
557    "max_fragment_length" in the (extended) server hello.  The
558    "extension_data" field of this extension SHALL contain
559    "MaxFragmentLength" whose value is the same as the requested maximum
560    fragment length.
562    If a server receives a maximum fragment length negotiation request
563    for a value other than the allowed values, it MUST abort the
564    handshake with an "illegal_parameter" alert.  Similarly, if a client
565    receives a maximum fragment length negotiation response that differs
566    from the length it requested, it MUST also abort the handshake with
567    an "illegal_parameter" alert.
569    Once a maximum fragment length other than 2^14 has been successfully
570    negotiated, the client and server MUST immediately begin fragmenting
571    messages (including handshake messages), to ensure that no fragment
572    larger than the negotiated length is sent.  Note that TLS already
573    requires clients and servers to support fragmentation of handshake
574    messages.
576    The negotiated length applies for the duration of the session
577    including session resumptions.
579    The negotiated length limits the input that the record layer may
580    process without fragmentation (that is, the maximum value of
581    TLSPlaintext.length; see [TLS] section 6.2.1).  Note that the output
582    of the record layer may be larger.  For example, if the negotiated
583    length is 2^9=512, then for currently defined cipher suites (those
584    defined in [TLS], [KERB], and [AESSUITES]), and when null compression
585    is used, the record layer output can be at most 793 bytes: 5 bytes of
586    headers, 512 bytes of application data, 256 bytes of padding, and 20
587    bytes of MAC.  That means that in this event a TLS record layer peer
588    receiving a TLS record layer message larger than 793 bytes may
589    discard the message and send a "record_overflow" alert, without
590    decrypting the message.
592 3.3. Client Certificate URLs
594    [TLS] specifies that when client authentication is performed, client
595    certificates are sent by clients to servers during the TLS handshake.
596    It may be desirable for constrained clients to send certificate URLs
597    in place of certificates, so that they do not need to store their
598    certificates and can therefore save memory.
605 Blake-Wilson, et. al.       Standards Track                    [Page 11]
607 Internet-Draft               TLS Extensions                     May 2005
609    In order to negotiate to send certificate URLs to a server, clients
610    MAY include an extension of type "client_certificate_url" in the
611    (extended) client hello.  The "extension_data" field of this
612    extension SHALL be empty.
614    (Note that it is necessary to negotiate use of client certificate
615    URLs in order to avoid "breaking" existing TLS 1.0 servers.)
617    Servers that receive an extended client hello containing a
618    "client_certificate_url" extension, MAY indicate that they are
619    willing to accept certificate URLs by including an extension of type
620    "client_certificate_url" in the (extended) server hello.  The
621    "extension_data" field of this extension SHALL be empty.
623    After negotiation of the use of client certificate URLs has been
624    successfully completed (by exchanging hellos including
625    "client_certificate_url" extensions), clients MAY send a
626    "CertificateURL" message in place of a "Certificate" message:
628       enum {
629           individual_certs(0), pkipath(1), (255)
630       } CertChainType;
632       enum {
633           false(0), true(1)
634       } Boolean;
636       struct {
637           CertChainType type;
638           URLAndOptionalHash url_and_hash_list<1..2^16-1>;
639       } CertificateURL;
641       struct {
642           opaque url<1..2^16-1>;
643           Boolean hash_present;
644           select (hash_present) {
645               case false: struct {};
646               case true: SHA1Hash;
647           } hash;
648       } URLAndOptionalHash;
650       opaque SHA1Hash[20];
652    Here "url_and_hash_list" contains a sequence of URLs and optional
653    hashes.
660 Blake-Wilson, et. al.       Standards Track                    [Page 12]
662 Internet-Draft               TLS Extensions                     May 2005
664    When X.509 certificates are used, there are two possibilities:
666    -  if CertificateURL.type is "individual_certs", each URL refers to a
667       single DER-encoded X.509v3 certificate, with the URL for the
668       client's certificate first, or
670    -  if CertificateURL.type is "pkipath", the list contains a single
671       URL referring to a DER-encoded certificate chain, using the type
672       PkiPath described in Section 8.
674    When any other certificate format is used, the specification that
675    describes use of that format in TLS should define the encoding format
676    of certificates or certificate chains, and any constraint on their
677    ordering.
679    The hash corresponding to each URL at the client's discretion is
680    either not present or is the SHA-1 hash of the certificate or
681    certificate chain (in the case of X.509 certificates, the DER-encoded
682    certificate or the DER-encoded PkiPath).
684    Note that when a list of URLs for X.509 certificates is used, the
685    ordering of URLs is the same as that used in the TLS Certificate
686    message (see [TLS] Section 7.4.2), but opposite to the order in which
687    certificates are encoded in PkiPath.  In either case, the self-signed
688    root certificate MAY be omitted from the chain, under the assumption
689    that the server must already possess it in order to validate it.
691    Servers receiving "CertificateURL" SHALL attempt to retrieve the
692    client's certificate chain from the URLs, and then process the
693    certificate chain as usual.  A cached copy of the content of any URL
694    in the chain MAY be used, provided that a SHA-1 hash is present for
695    that URL and it matches the hash of the cached copy.
697    Servers that support this extension MUST support the http: URL scheme
698    for certificate URLs, and MAY support other schemes.
700    If the protocol used to retrieve certificates or certificate chains
701    returns a MIME formatted response (as HTTP does), then the following
702    MIME Content-Types SHALL be used: when a single X.509v3 certificate
703    is returned, the Content-Type is "application/pkix-cert" [PKIOP], and
704    when a chain of X.509v3 certificates is returned, the Content-Type is
705    "application/pkix-pkipath" (see Section 8).
715 Blake-Wilson, et. al.       Standards Track                    [Page 13]
717 Internet-Draft               TLS Extensions                     May 2005
719    If a SHA-1 hash is present for an URL, then the server MUST check
720    that the SHA-1 hash of the contents of the object retrieved from that
721    URL (after decoding any MIME Content-Transfer-Encoding) matches the
722    given hash.  If any retrieved object does not have the correct SHA-1
723    hash, the server MUST abort the handshake with a
724    "bad_certificate_hash_value" alert.
726    Note that clients may choose to send either "Certificate" or
727    "CertificateURL" after successfully negotiating the option to send
728    certificate URLs. The option to send a certificate is included to
729    provide flexibility to clients possessing multiple certificates.
731    If a server encounters an unreasonable delay in obtaining
732    certificates in a given CertificateURL, it SHOULD time out and signal
733    a "certificate_unobtainable" error alert.
735 3.4. Trusted CA Indication
737    Constrained clients that, due to memory limitations, possess only a
738    small number of CA root keys, may wish to indicate to servers which
739    root keys they possess, in order to avoid repeated handshake
740    failures.
742    In order to indicate which CA root keys they possess, clients MAY
743    include an extension of type "trusted_ca_keys" in the (extended)
744    client hello.  The "extension_data" field of this extension SHALL
745    contain "TrustedAuthorities" where:
747       struct {
748           TrustedAuthority trusted_authorities_list<0..2^16-1>;
749       } TrustedAuthorities;
751       struct {
752           IdentifierType identifier_type;
753           select (identifier_type) {
754               case pre_agreed: struct {};
755               case key_sha1_hash: SHA1Hash;
756               case x509_name: DistinguishedName;
757               case cert_sha1_hash: SHA1Hash;
758           } identifier;
759       } TrustedAuthority;
761       enum {
762           pre_agreed(0), key_sha1_hash(1), x509_name(2),
763           cert_sha1_hash(3), (255)
764       } IdentifierType;
766       opaque DistinguishedName<1..2^16-1>;
770 Blake-Wilson, et. al.       Standards Track                    [Page 14]
772 Internet-Draft               TLS Extensions                     May 2005
774    Here "TrustedAuthorities" provides a list of CA root key identifiers
775    that the client possesses.  Each CA root key is identified via
776    either:
778    -  "pre_agreed" - no CA root key identity supplied.
780    -  "key_sha1_hash" - contains the SHA-1 hash of the CA root key.  For
781       DSA and ECDSA keys, this is the hash of the "subjectPublicKey"
782       value.  For RSA keys, the hash is of the big-endian byte string
783       representation of the modulus without any initial 0-valued bytes.
784       (This copies the key hash formats deployed in other environments.)
786    -  "x509_name" - contains the DER-encoded X.509 DistinguishedName of
787       the CA.
789    -  "cert_sha1_hash" - contains the SHA-1 hash of a DER-encoded
790       Certificate containing the CA root key.
792    Note that clients may include none, some, or all of the CA root keys
793    they possess in this extension.
795    Note also that it is possible that a key hash or a Distinguished Name
796    alone may not uniquely identify a certificate issuer - for example if
797    a particular CA has multiple key pairs - however here we assume this
798    is the case following the use of Distinguished Names to identify
799    certificate issuers in TLS.
801    The option to include no CA root keys is included to allow the client
802    to indicate possession of some pre-defined set of CA root keys.
804    Servers that receive a client hello containing the "trusted_ca_keys"
805    extension, MAY use the information contained in the extension to
806    guide their selection of an appropriate certificate chain to return
807    to the client.  In this event, the server SHALL include an extension
808    of type "trusted_ca_keys" in the (extended) server hello.  The
809    "extension_data" field of this extension SHALL be empty.
811 3.5. Truncated HMAC
813    Currently defined TLS cipher suites use the MAC construction HMAC
814    with either MD5 or SHA-1 [HMAC] to authenticate record layer
815    communications.  In TLS the entire output of the hash function is
816    used as the MAC tag.  However it may be desirable in constrained
817    environments to save bandwidth by truncating the output of the hash
818    function to 80 bits when forming MAC tags.
825 Blake-Wilson, et. al.       Standards Track                    [Page 15]
827 Internet-Draft               TLS Extensions                     May 2005
829    In order to negotiate the use of 80-bit truncated HMAC, clients MAY
830    include an extension of type "truncated_hmac" in the extended client
831    hello.  The "extension_data" field of this extension SHALL be empty.
833    Servers that receive an extended hello containing a "truncated_hmac"
834    extension, MAY agree to use a truncated HMAC by including an
835    extension of type "truncated_hmac", with empty "extension_data", in
836    the extended server hello.
838    Note that if new cipher suites are added that do not use HMAC, and
839    the session negotiates one of these cipher suites, this extension
840    will have no effect.  It is strongly recommended that any new cipher
841    suites using other MACs consider the MAC size as an integral part of
842    the cipher suite definition, taking into account both security and
843    bandwidth considerations.
845    If HMAC truncation has been successfully negotiated during a TLS
846    handshake, and the negotiated cipher suite uses HMAC, both the client
847    and the server pass this fact to the TLS record layer along with the
848    other negotiated security parameters.  Subsequently during the
849    session, clients and servers MUST use truncated HMACs, calculated as
850    specified in [HMAC].  That is, CipherSpec.hash_size is 10 bytes, and
851    only the first 10 bytes of the HMAC output are transmitted and
852    checked.  Note that this extension does not affect the calculation of
853    the PRF as part of handshaking or key derivation.
855    The negotiated HMAC truncation size applies for the duration of the
856    session including session resumptions.
858 3.6. Certificate Status Request
860    Constrained clients may wish to use a certificate-status protocol
861    such as OCSP [OCSP] to check the validity of server certificates, in
862    order to avoid transmission of CRLs and therefore save bandwidth on
863    constrained networks.  This extension allows for such information to
864    be sent in the TLS handshake, saving roundtrips and resources.
866    In order to indicate their desire to receive certificate status
867    information, clients MAY include an extension of type
868    "status_request" in the (extended) client hello.  The
869    "extension_data" field of this extension SHALL contain
870    "CertificateStatusRequest" where:
880 Blake-Wilson, et. al.       Standards Track                    [Page 16]
882 Internet-Draft               TLS Extensions                     May 2005
884       struct {
885           CertificateStatusType status_type;
886           select (status_type) {
887               case ocsp: OCSPStatusRequest;
888           } request;
889       } CertificateStatusRequest;
891       enum { ocsp(1), (255) } CertificateStatusType;
893       struct {
894           ResponderID responder_id_list<0..2^16-1>;
895           Extensions  request_extensions;
896       } OCSPStatusRequest;
898       opaque ResponderID<1..2^16-1>;
899       opaque Extensions<0..2^16-1>;
901    In the OCSPStatusRequest, the "ResponderIDs" provides a list of OCSP
902    responders that the client trusts.  A zero-length "responder_id_list"
903    sequence has the special meaning that the responders are implicitly
904    known to the server - e.g., by prior arrangement.  "Extensions" is a
905    DER encoding of OCSP request extensions.
907    Both "ResponderID" and "Extensions" are DER-encoded ASN.1 types as
908    defined in [OCSP].  "Extensions" is imported from [PKIX].  A zero-
909    length "request_extensions" value means that there are no extensions
910    (as opposed to a zero-length ASN.1 SEQUENCE, which is not valid for
911    the "Extensions" type).
913    In the case of the "id-pkix-ocsp-nonce" OCSP extension, [OCSP] is
914    unclear about its encoding; for clarification, the nonce MUST be a
915    DER-encoded OCTET STRING, which is encapsulated as another OCTET
916    STRING (note that implementations based on an existing OCSP client
917    will need to be checked for conformance to this requirement).
919    Servers that receive a client hello containing the "status_request"
920    extension, MAY return a suitable certificate status response to the
921    client along with their certificate.  If OCSP is requested, they
922    SHOULD use the information contained in the extension when selecting
923    an OCSP responder, and SHOULD include request_extensions in the OCSP
924    request.
926    Servers return a certificate response along with their certificate by
927    sending a "CertificateStatus" message immediately after the
928    "Certificate" message (and before any "ServerKeyExchange" or
929    "CertificateRequest" messages).  If a server returns a
935 Blake-Wilson, et. al.       Standards Track                    [Page 17]
937 Internet-Draft               TLS Extensions                     May 2005
939    "CertificateStatus" message, then the server MUST have included an
940    extension of type "status_request" with empty "extension_data" in the
941    extended server hello.
943       struct {
944           CertificateStatusType status_type;
945           select (status_type) {
946               case ocsp: OCSPResponse;
947           } response;
948       } CertificateStatus;
950       opaque OCSPResponse<1..2^24-1>;
952    An "ocsp_response" contains a complete, DER-encoded OCSP response
953    (using the ASN.1 type OCSPResponse defined in [OCSP]).  Note that
954    only one OCSP response may be sent.
956    The "CertificateStatus" message is conveyed using the handshake
957    message type "certificate_status".
959    Note that a server MAY also choose not to send a "CertificateStatus"
960    message, even if it receives a "status_request" extension in the
961    client hello message.
963    Note in addition that servers MUST NOT send the "CertificateStatus"
964    message unless it received a "status_request" extension in the client
965    hello message.
967    Clients requesting an OCSP response, and receiving an OCSP response
968    in a "CertificateStatus" message MUST check the OCSP response and
969    abort the handshake if the response is not satisfactory.
971 4. Error Alerts
973    This section defines new error alerts for use with the TLS extensions
974    defined in this document.
976    The following new error alerts are defined.  To avoid "breaking"
977    existing clients and servers, these alerts MUST NOT be sent unless
978    the sending party has received an extended hello message from the
979    party they are communicating with.
981    -  "unsupported_extension" - this alert is sent by clients that
982       receive an extended server hello containing an extension that they
983       did not put in the corresponding client hello (see Section 2.3).
984       This message is always fatal.
990 Blake-Wilson, et. al.       Standards Track                    [Page 18]
992 Internet-Draft               TLS Extensions                     May 2005
994    -  "unrecognized_name" - this alert is sent by servers that receive a
995       server_name extension request, but do not recognize the server
996       name.  This message MAY be fatal.
998    -  "certificate_unobtainable" - this alert is sent by servers who are
999       unable to retrieve a certificate chain from the URL supplied by
1000       the client (see Section 3.3).  This message MAY be fatal - for
1001       example if client authentication is required by the server for the
1002       handshake to continue and the server is unable to retrieve the
1003       certificate chain, it may send a fatal alert.
1005    -  "bad_certificate_status_response" - this alert is sent by clients
1006       that receive an invalid certificate status response (see Section
1007       3.6).  This message is always fatal.
1009    -  "bad_certificate_hash_value" - this alert is sent by servers when
1010       a certificate hash does not match a client provided
1011       certificate_hash.  This message is always fatal.
1013    These error alerts are conveyed using the following syntax:
1015       enum {
1016           close_notify(0),
1017           unexpected_message(10),
1018           bad_record_mac(20),
1019           decryption_failed(21),
1020           record_overflow(22),
1021           decompression_failure(30),
1022           handshake_failure(40),
1023           /* 41 is not defined, for historical reasons */
1024           bad_certificate(42),
1025           unsupported_certificate(43),
1026           certificate_revoked(44),
1027           certificate_expired(45),
1028           certificate_unknown(46),
1029           illegal_parameter(47),
1030           unknown_ca(48),
1031           access_denied(49),
1032           decode_error(50),
1033           decrypt_error(51),
1034           export_restriction(60),
1035           protocol_version(70),
1036           insufficient_security(71),
1037           internal_error(80),
1038           user_canceled(90),
1039           no_renegotiation(100),
1040           unsupported_extension(110),           /* new */
1041           certificate_unobtainable(111),        /* new */
1045 Blake-Wilson, et. al.       Standards Track                    [Page 19]
1047 Internet-Draft               TLS Extensions                     May 2005
1049           unrecognized_name(112),               /* new */
1050           bad_certificate_status_response(113), /* new */
1051           bad_certificate_hash_value(114),      /* new */
1052           (255)
1053       } AlertDescription;
1055 5. Procedure for Defining New Extensions
1057    The list of extension types, as defined in Section 2.3, is 
1058    maintained by the Internet Assigned Numbers Authority (IANA). Thus 
1059    an application needs to be made to the IANA in order to obtain a new  
1060    extension type value. Since there are subtle (and not so subtle) 
1061    interactions that may occur in this protocol between new features and 
1062    existing features which may result in a significant reduction in 
1063    overall security, new values SHALL be defined only through the IETF 
1064    Consensus process specified in [IANA].
1066    (This means that new assignments can be made only via RFCs approved 
1067    by the IESG.)
1069    The following considerations should be taken into account when
1070    designing new extensions:
1072    -  All of the extensions defined in this document follow the
1073       convention that for each extension that a client requests and that
1074       the server understands, the server replies with an extension of
1075       the same type.
1077    -  Some cases where a server does not agree to an extension are error
1078       conditions, and some simply a refusal to support a particular
1079       feature.  In general error alerts should be used for the former,
1080       and a field in the server extension response for the latter.
1082    -  Extensions should as far as possible be designed to prevent any
1083       attack that forces use (or non-use) of a particular feature by
1084       manipulation of handshake messages.  This principle should be
1085       followed regardless of whether the feature is believed to cause a
1086       security problem.
1088       Often the fact that the extension fields are included in the
1089       inputs to the Finished message hashes will be sufficient, but
1090       extreme care is needed when the extension changes the meaning of
1091       messages sent in the handshake phase. Designers and implementors
1092       should be aware of the fact that until the handshake has been
1093       authenticated, active attackers can modify messages and insert,
1094       remove, or replace extensions.
1098 Blake-Wilson, et. al.       Standards Track                    [Page 20]
1100 Internet-Draft               TLS Extensions                     May 2005
1102    -  It would be technically possible to use extensions to change major
1103       aspects of the design of TLS; for example the design of cipher
1104       suite negotiation.  This is not recommended; it would be more
1105       appropriate to define a new version of TLS - particularly since
1106       the TLS handshake algorithms have specific protection against
1107       version rollback attacks based on the version number, and the
1108       possibility of version rollback should be a significant
1109       consideration in any major design change.
1111 6. Security Considerations
1113    Security considerations for the extension mechanism in general, and
1114    the design of new extensions, are described in the previous section.
1115    A security analysis of each of the extensions defined in this
1116    document is given below.
1118    In general, implementers should continue to monitor the state of the
1119    art, and address any weaknesses identified.
1121    Additional security considerations are described in the TLS 1.0 RFC
1122    [TLS].
1124 6.1. Security of server_name
1126    If a single server hosts several domains, then clearly it is
1127    necessary for the owners of each domain to ensure that this satisfies
1128    their security needs.  Apart from this, server_name does not appear
1129    to introduce significant security issues.
1131    Implementations MUST ensure that a buffer overflow does not occur
1132    whatever the values of the length fields in server_name.
1134    Although this document specifies an encoding for internationalized
1135    hostnames in the server_name extension, it does not address any
1136    security issues associated with the use of internationalized
1137    hostnames in TLS - in particular, the consequences of "spoofed" names
1138    that are indistinguishable from another name when displayed or
1139    printed.  It is recommended that server certificates not be issued
1140    for internationalized hostnames unless procedures are in place to
1141    mitigate the risk of spoofed hostnames.
1143 6.2. Security of max_fragment_length
1145    The maximum fragment length takes effect immediately, including for
1146    handshake messages.  However, that does not introduce any security
1147    complications that are not already present in TLS, since [TLS]
1148    requires implementations to be able to handle fragmented handshake
1149    messages.
1153 Blake-Wilson, et. al.       Standards Track                    [Page 21]
1155 Internet-Draft               TLS Extensions                     May 2005
1157    Note that as described in section 3.2, once a non-null cipher suite
1158    has been activated, the effective maximum fragment length depends on
1159    the cipher suite and compression method, as well as on the negotiated
1160    max_fragment_length.  This must be taken into account when sizing
1161    buffers, and checking for buffer overflow.
1163 6.3. Security of client_certificate_url
1165    There are two major issues with this extension.
1167    The first major issue is whether or not clients should include
1168    certificate hashes when they send certificate URLs.
1170    When client authentication is used *without* the
1171    client_certificate_url extension, the client certificate chain is
1172    covered by the Finished message hashes.  The purpose of including
1173    hashes and checking them against the retrieved certificate chain, is
1174    to ensure that the same property holds when this extension is used -
1175    i.e., that all of the information in the certificate chain retrieved
1176    by the server is as the client intended.
1178    On the other hand, omitting certificate hashes enables functionality
1179    that is desirable in some circumstances - for example clients can be
1180    issued daily certificates that are stored at a fixed URL and need not
1181    be provided to the client.  Clients that choose to omit certificate
1182    hashes should be aware of the possibility of an attack in which the
1183    attacker obtains a valid certificate on the client's key that is
1184    different from the certificate the client intended to provide.
1185    Although TLS uses both MD5 and SHA-1 hashes in several other places,
1186    this was not believed to be necessary here.  The property required of
1187    SHA-1 is second pre-image resistance.
1189    The second major issue is that support for client_certificate_url
1190    involves the server acting as a client in another URL protocol.  The
1191    server therefore becomes subject to many of the same security
1192    concerns that clients of the URL scheme are subject to, with the
1193    added concern that the client can attempt to prompt the server to
1194    connect to some, possibly weird-looking URL.
1196    In general this issue means that an attacker might use the server to
1197    indirectly attack another host that is vulnerable to some security
1198    flaw.  It also introduces the possibility of denial of service
1199    attacks in which an attacker makes many connections to the server,
1200    each of which results in the server attempting a connection to the
1201    target of the attack.
1208 Blake-Wilson, et. al.       Standards Track                    [Page 22]
1210 Internet-Draft               TLS Extensions                     May 2005
1212    Note that the server may be behind a firewall or otherwise able to
1213    access hosts that would not be directly accessible from the public
1214    Internet; this could exacerbate the potential security and denial of
1215    service problems described above, as well as allowing the existence
1216    of internal hosts to be confirmed when they would otherwise be
1217    hidden.
1219    The detailed security concerns involved will depend on the URL
1220    schemes supported by the server.  In the case of HTTP, the concerns
1221    are similar to those that apply to a publicly accessible HTTP proxy
1222    server.  In the case of HTTPS, the possibility for loops and
1223    deadlocks to be created exists and should be addressed.  In the case
1224    of FTP, attacks similar to FTP bounce attacks arise.
1226    As a result of this issue, it is RECOMMENDED that the
1227    client_certificate_url extension should have to be specifically
1228    enabled by a server administrator, rather than being enabled by
1229    default.  It is also RECOMMENDED that URI protocols be enabled by the
1230    administrator individually, and only a minimal set of protocols be
1231    enabled, with unusual protocols offering limited security or whose
1232    security is not well-understood being avoided.
1234    As discussed in [URI], URLs that specify ports other than the default
1235    may cause problems, as may very long URLs (which are more likely to
1236    be useful in exploiting buffer overflow bugs).
1238    Also note that HTTP caching proxies are common on the Internet, and
1239    some proxies do not check for the latest version of an object
1240    correctly.  If a request using HTTP (or another caching protocol)
1241    goes through a misconfigured or otherwise broken proxy, the proxy may
1242    return an out-of-date response.
1244 6.4. Security of trusted_ca_keys
1246    It is possible that which CA root keys a client possesses could be
1247    regarded as confidential information.  As a result, the CA root key
1248    indication extension should be used with care.
1250    The use of the SHA-1 certificate hash alternative ensures that each
1251    certificate is specified unambiguously.  As for the previous
1252    extension, it was not believed necessary to use both MD5 and SHA-1
1253    hashes.
1255 6.5. Security of truncated_hmac
1257    It is possible that truncated MACs are weaker than "un-truncated"
1258    MACs.  However, no significant weaknesses are currently known or
1259    expected to exist for HMAC with MD5 or SHA-1, truncated to 80 bits.
1263 Blake-Wilson, et. al.       Standards Track                    [Page 23]
1265 Internet-Draft               TLS Extensions                     May 2005
1267    Note that the output length of a MAC need not be as long as the
1268    length of a symmetric cipher key, since forging of MAC values cannot
1269    be done off-line: in TLS, a single failed MAC guess will cause the
1270    immediate termination of the TLS session.
1272    Since the MAC algorithm only takes effect after all handshake
1273    messages that affect extension parameters have been authenticated by 
1274    the hashes in the Finished messages, it is not possible for an active 
1275    attacker to force negotiation of the truncated HMAC extension where it 
1276    would not otherwise be used (to the extent that the handshake 
1277    authentication is secure).  Therefore, in the event that any security 
1278    problem were found with truncated HMAC in future, if either the client 
1279    or the server for a given session were updated to take into account 
1280    the problem, they would be able to veto use of this extension.
1282 6.6. Security of status_request
1284    If a client requests an OCSP response, it must take into account that
1285    an attacker's server using a compromised key could (and probably
1286    would) pretend not to support the extension.  A client that requires
1287    OCSP validation of certificates SHOULD either contact the OCSP server
1288    directly in this case, or abort the handshake.
1290    Use of the OCSP nonce request extension (id-pkix-ocsp-nonce) may
1291    improve security against attacks that attempt to replay OCSP
1292    responses; see section 4.4.1 of [OCSP] for further details.
1294 7. Internationalization Considerations
1296    None of the extensions defined here directly use strings subject to
1297    localization.  Domain Name System (DNS) hostnames are encoded using
1298    UTF-8.  If future extensions use text strings, then
1299    internationalization should be considered in their design.
1301 8. IANA Considerations
1303    Sections 2.3 and 5 describes a registry of ExtensionType values to be
1304    maintained by the IANA. ExtensionType values are to be assigned via 
1305    IETF Consensus as defined in RFC 2434 [IANA].
1307    The MIME type "application/pkix-pkipath" has been registered by the
1308    IANA with the following template:
1310    To: ietf-types@iana.org Subject: Registration of MIME media type
1311    application/pkix-pkipath
1313    MIME media type name: application
1315    MIME subtype name: pkix-pkipath
1317    Required parameters: none
1319 Blake-Wilson, et. al.       Standards Track                    [Page 24]
1321 Internet-Draft               TLS Extensions                     May 2005
1323    Optional parameters: version (default value is "1")
1325    Encoding considerations:
1326       This MIME type is a DER encoding of the ASN.1 type PkiPath,
1327       defined as follows:
1328         PkiPath ::= SEQUENCE OF Certificate
1329         PkiPath is used to represent a certification path.  Within the
1330         sequence, the order of certificates is such that the subject of
1331         the first certificate is the issuer of the second certificate,
1332         etc.
1334       This is identical to the definition published in [X509-4th-TC1]; 
1335       note that it is different from that in [X509-4th].
1337       All Certificates MUST conform to [PKIX].  (This should be
1338       interpreted as a requirement to encode only PKIX-conformant
1339       certificates using this type.  It does not necessarily require
1340       that all certificates that are not strictly PKIX-conformant must
1341       be rejected by relying parties, although the security consequences
1342       of accepting any such certificates should be considered
1343       carefully.)
1345       DER (as opposed to BER) encoding MUST be used.  If this type is
1346       sent over a 7-bit transport, base64 encoding SHOULD be used.
1348    Security considerations:
1349       The security considerations of [X509-4th] and [PKIX] (or any
1350       updates to them) apply, as well as those of any protocol that uses
1351       this type (e.g., TLS).
1353       Note that this type only specifies a certificate chain that can be
1354       assessed for validity according to the relying party's existing
1355       configuration of trusted CAs; it is not intended to be used to
1356       specify any change to that configuration.
1358    Interoperability considerations:
1359       No specific interoperability problems are known with this type,
1360       but for recommendations relating to X.509 certificates in general,
1361       see [PKIX].
1363    Published specification: this memo, and [PKIX].
1365    Applications which use this media type: TLS.  It may also be used by
1366       other protocols, or for general interchange of PKIX certificate
1367       chains.
1374 Blake-Wilson, et. al.       Standards Track                    [Page 25]
1376 Internet-Draft               TLS Extensions                     May 2005
1378    Additional information:
1379       Magic number(s): DER-encoded ASN.1 can be easily recognized.
1380         Further parsing is required to distinguish from other ASN.1
1381         types.
1382       File extension(s): .pkipath
1383       Macintosh File Type Code(s): not specified
1385    Person & email address to contact for further information:
1386       Magnus Nystrom <magnus@rsasecurity.com>
1388    Intended usage: COMMON
1390    Author/Change controller:
1391       Magnus Nystrom <magnus@rsasecurity.com>
1393 9. Intellectual Property Rights
1395    The IETF takes no position regarding the validity or scope of any
1396    Intellectual Property Rights or other rights that might be claimed
1397    to pertain to the implementation or use of the technology
1398    described in this document or the extent to which any license
1399    under such rights might or might not be available; nor does it
1400    represent that it has made any independent effort to identify any
1401    such rights.  Information on the procedures with respect to rights
1402    in RFC documents can be found in BCP 78 and BCP 79.
1404    Copies of IPR disclosures made to the IETF Secretariat and any
1405    assurances of licenses to be made available, or the result of an
1406    attempt made to obtain a general license or permission for the use
1407    of such proprietary rights by implementers or users of this
1408    specification can be obtained from the IETF on-line IPR repository
1409    at http://www.ietf.org/ipr.
1411    The IETF invites any interested party to bring to its attention
1412    any copyrights, patents or patent applications, or other
1413    proprietary rights that may cover technology that may be required
1414    to implement this standard.  Please address the information to the
1415    IETF at ietf-ipr@ietf.org.
1417 10. Acknowledgments
1419    The authors wish to thank the TLS Working Group and the WAP Security
1420    Group.  This document is based on discussion within these groups.
1428 Blake-Wilson, et. al.       Standards Track                    [Page 26]
1430 Internet-Draft               TLS Extensions                     May 2005
1432 11. Normative References
1434    [HMAC]         Krawczyk, H., Bellare, M. and R. Canetti, "HMAC:
1435                   Keyed-hashing for message authentication", RFC 2104,
1436                   February 1997.
1438    [HTTP]         Fielding, R., Gettys, J., Mogul, J., Frystyk, H.,
1439                   Masinter, L., Leach, P. and T. Berners-Lee, "Hypertext
1440                   Transfer Protocol -- HTTP/1.1", RFC 2616, June 1999.
1442    [IANA]         Narten, T. and H. Alvestrand, "Guidelines for Writing
1443                   an IANA Considerations Section in RFCs", RFC 2434,
1444                   October 1998.
1446    [IDNA]         Faltstrom, P., Hoffman, P. and A. Costello,
1447                   "Internationalizing Domain Names in Applications
1448                   (IDNA)", RFC 3490, March 2003.
1450    [KEYWORDS]     Bradner, S., "Key words for use in RFCs to Indicate
1451                   Requirement Levels", BCP 14, RFC 2119, March 1997.
1453    [OCSP]         Myers, M., Ankney, R., Malpani, A., Galperin, S. and
1454                   C. Adams, "Internet X.509 Public Key Infrastructure:
1455                   Online Certificate Status Protocol - OCSP", RFC 2560,
1456                   June 1999.
1458    [PKIOP]        Housley, R. and P. Hoffman, "Internet X.509 Public Key
1459                   Infrastructure - Operation Protocols: FTP and HTTP",
1460                   RFC 2585, May 1999.
1462    [PKIX]         Housley, R., Polk, W., Ford, W. and D. Solo, "Internet
1463                   Public Key Infrastructure - Certificate and
1464                   Certificate Revocation List (CRL) Profile", RFC 3280,
1465                   April 2002.
1467    [TLS]          Dierks, T. and C. Allen, "The TLS Protocol Version
1468                   1.0", RFC 2246, January 1999.
1470    [URI]          Berners-Lee, T., Fielding, R. and L. Masinter,
1471                   "Uniform Resource Identifiers (URI): Generic Syntax",
1472                   RFC 2396, August 1998.
1474    [UTF8]         Yergeau, F., "UTF-8, a transformation format of ISO
1475                   10646", RFC 3629, November 2003.
1477    [X509-4th]     ITU-T Recommendation X.509 (2000) | ISO/IEC 9594-
1478                   8:2001, "Information Systems - Open Systems
1479                   Interconnection - The Directory:  Public key and
1480                   attribute certificate frameworks."
1483 Blake-Wilson, et. al.       Standards Track                    [Page 27]
1485 Internet-Draft               TLS Extensions                     May 2005
1487    [X509-4th-TC1] ITU-T Recommendation X.509(2000) Corrigendum 1(2001) |
1488                   ISO/IEC 9594-8:2001/Cor.1:2002, Technical Corrigendum
1489                   1 to ISO/IEC 9594:8:2001.
1491 12. Informative References
1493    [AESSUITES]    Chown, P., "Advanced Encryption Standard (AES)
1494                   Ciphersuites for Transport Layer Security (TLS)", RFC
1495                   3268, June 2002.
1497    [KERB]         Medvinsky, A. and M. Hur, "Addition of Kerberos Cipher
1498                   Suites to Transport Layer Security (TLS)", RFC 2712,
1499                   October 1999.
1501    [MAILING LIST] J. Mikkelsen, R. Eberhard, and J. Kistler, "General
1502                   ClientHello extension mechanism and virtual hosting,"
1503                   ietf-tls mailing list posting, August 14, 2000.
1505    [RFC3546]      S. Blake-Wilson, M.Nystrom, D. Hopwood, J. Mikkelsen,
1506                   and T. Wright, "Transport Layer Security (TLS)
1507                   Extensions", RFC 3546, June 2003.  
1509 13. Authors' Addresses
1511    Simon Blake-Wilson
1512    BCI
1513    EMail: sblakewilson@bcisse.com
1515    Magnus Nystrom
1516    RSA Security
1517    EMail: magnus@rsasecurity.com
1519    David Hopwood
1520    Independent Consultant
1521    EMail: david.hopwood@blueyonder.co.uk
1523    Jan Mikkelsen
1524    Transactionware
1525    EMail: janm@transactionware.com
1527    Tim Wright
1528    Vodafone
1529    EMail: timothy.wright@vodafone.com
1535 Blake-Wilson, et. al.       Standards Track                    [Page 28]
1537 Internet-Draft               TLS Extensions                November 2004
1539 14.  Full Copyright Statement
1541    Copyright (C) The Internet Society (2005).  This document is
1542    subject to the rights, licenses and restrictions contained in BCP
1543    78, and except as set forth therein, the authors retain all their
1544    rights.
1546    This document and the information contained herein are provided
1547    on an "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE
1548    REPRESENTS OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND
1549    THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES,
1550    EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT
1551    THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR
1552    ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A
1553    PARTICULAR PURPOSE.
1555 Acknowledgement
1557    Funding for the RFC Editor function is currently provided by the
1558    Internet Society.
1581 Blake-Wilson, et. al.       Standards Track                    [Page 29]