Improve GTK-DOC coverage.
[gnutls.git] / doc / protocol / draft-housley-tls-authz-extns-00.txt
blob8d7deb4e77be5c68244b2465e92c3a95c1f82b43
5 Internet-Draft                                                  M. Brown
6 February 2006                                          RedPhone Security
7 Expires: August 2006                                          R. Housley
8                                                           Vigil Security
10         Transport Layer Security (TLS) Authorization Extensions
11                  <draft-housley-tls-authz-extns-00.txt>
14 Status of this Memo
16    By submitting this Internet-Draft, each author represents that any
17    applicable patent or other IPR claims of which he or she is aware
18    have been or will be disclosed, and any of which he or she becomes
19    aware will be disclosed, in accordance with Section 6 of BCP 79.
21    Internet-Drafts are working documents of the Internet Engineering
22    Task Force (IETF), its areas, and its working groups.  Note that
23    other groups may also distribute working documents as Internet-
24    Drafts.
26    Internet-Drafts are draft documents valid for a maximum of six months
27    and may be updated, replaced, or obsoleted by other documents at any
28    time.  It is inappropriate to use Internet-Drafts as reference
29    material or to cite them other than as "work in progress."
31    The list of current Internet-Drafts can be accessed at
32    http://www.ietf.org/ietf/1id-abstracts.txt.
34    The list of Internet-Draft Shadow Directories can be accessed at
35    http://www.ietf.org/shadow.html.
37 Copyright Notice
39    Copyright (C) The Internet Society (2006).  All Rights Reserved.
41 Abstract
43    This document specifies authorization extensions to the Transport
44    Layer Security (TLS) Handshake Protocol.  Extension types are carried
45    in the client and server hello messages to confirm that both parties
46    support the authorization messages.  The syntax and semantics of the
47    authorization messages are described in detail.
56 Brown & Housley                                                 [Page 1]
58 Internet-Draft                                             February 2006
61 1. Introduction
63    Transport Layer Security (TLS) protocol [TLS1.0][TLS1.1] is being
64    used in an increasing variety of operational environments, including
65    ones that were not envisioned when the original design criteria for
66    TLS were determined.  The extensions introduced in this document are
67    designed to enable TLS to operate in environments where authorization
68    information needs to be exchanged between the client and the server
69    before any protected data is exchanged.
71    This document describes authorization extensions for the TLS
72    Handshake Protocol in both TLS 1.0 and TLS 1.1.  These extensions
73    observe the conventions defined for TLS Extensions [TLSEXT] that make
74    use of the general extension mechanisms for the client hello message
75    and the server hello message.  The extensions described in this
76    document allow TLS clients to provide to the TLS server authorization
77    information, and allow TLS server to provide to the TLS client
78    authorization information about the TLS server.
80    The authorization extensions may be used in conjunction with TLS 1.0
81    and TLS 1.1.  The extensions are designed to be backwards compatible,
82    meaning that the Handshake Protocol messages associated with the
83    authorization extensions will only be exchanged if the client
84    indicates support for them in the client hello message and the server
85    indicates support for them in the server hello message.
87    Clients typically know the context of the TLS session that is being
88    setup, thus the client can request the use of the authorization
89    extensions when they are needed.  Servers must accept extended client
90    hello messages, even if the server does not "understand" the all of
91    the listed extensions.  However, the server will not indicate support
92    for these "not understood" extensions.  Then, clients may reject
93    communications with servers that do not support the authorization
94    extensions.
96 1.1. Conventions
98    The syntax for the authorization messages is defined using the TLS
99    Presentation Language, which is specified in Section 4 of [TLS1.0].
101    The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
102    "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
103    document are to be interpreted as described in RFC 2119 [STDWORDS].
112 Brown & Housley                                                 [Page 2]
114 Internet-Draft                                             February 2006
117 1.2. Overview
119    Figure 1 illustrates the placement of the authorization messages in
120    the full TLS handshake.  In order to avoid unnecessary disclosure of
121    privilege information, the authorization messages appear after the
122    Finished message.  This placement ensures that they are encrypted and
123    integrity protected.
125       Client                                                 Server
127       ClientHello               -------->
128                                                         ServerHello
129                                                        Certificate*
130                                                  ServerKeyExchange*
131                                                 CertificateRequest*
132                                 <--------           ServerHelloDone
133       Certificate*
134       ClientKeyExchange
135       CertificateVerify*
136       [ChangeCipherSpec]
137       Finished                  -------->
138       ClientAuthorizationData   -------->
139                                                  [ChangeCipherSpec]
140                                 <--------                  Finished
141                                 <--------   ServerAuthorizationData
142       Application Data          <------->          Application Data
144        *  Indicates optional or situation-dependent messages that
145           are not always sent.
147        [] Indicates that ChangeCipherSpec is an independent TLS
148           Protocol content type; it is not actually a TLS
149           handshake message.
151         Figure 1. Authorization data exchange in full TLS handshake
153    The ClientHello message includes an indication that the
154    ClientAuthorizationData message and ServerAuthorizationData message
155    are supported.  The ServerHello message also includes an indication
156    that the ClientAuthorizationData message and ServerAuthorizationData
157    message are supported.  Both the client and the server MUST indicate
158    support for the authorization messages, otherwise they MUST NOT be
159    included in the handshake.
168 Brown & Housley                                                 [Page 3]
170 Internet-Draft                                             February 2006
173 2. Authorization Extension Types
175    The general extension mechanisms enable clients and servers to
176    negotiate whether to use specific extensions, and how to use specific
177    extensions.  As specified in [TLSEXT], the extension format used in
178    the extended client hello message and extended server hello message
179    is:
181       struct {
182          ExtensionType extension_type;
183          opaque extension_data<0..2^16-1>;
184       } Extension;
186    The extension_type identifies a particular extension type, and the
187    extension_data contains information specific to the particular
188    extension type.
190    As specified in [TLSEXT], for all extension types, the extension type
191    MUST NOT appear in the extended server hello message unless the same
192    extension type appeared in the corresponding client hello message.
193    Clients MUST abort the handshake if they receive an extension type in
194    the extended server hello message that they did not request in the
195    associated extended client hello message.
197    When multiple extensions of different types are present in the
198    extended client hello message or the extended server hello message,
199    the extensions can appear in any order, but there MUST NOT be more
200    than one extension of the same type.
202    This document specifies the use of two new extension types:
203    client_authz_request and server_authz_request.  These extension types
204    are described in Section 2.1 and Section 2.2, respectively.  This
205    specification adds two new types to ExtensionType:
207       enum {
208         client_authz_request(TBD), server_authz_request(TBD),
209         (65535)
210       } ExtensionType;
212    The authorization extensions are relevant when a session is initiated
213    and any subsequent session resumption.  However, a client that
214    requests resumption of a session does not know whether the server
215    will have all of the context necessary to accept this request, and
216    therefore the client SHOULD send an extended client hello message
217    that includes the extension types associated with the authorization
218    extensions.  This way, if the resumption request is denied, then the
219    authorization extensions will be negotiated as normal.
224 Brown & Housley                                                 [Page 4]
226 Internet-Draft                                             February 2006
229 2.1. The client_authz_request Extension Type
231    Clients MUST include the client_authz_request extension type in the
232    extended client hello message to indicate their desire to send
233    authorization data to the server.  The extension_data field indicates
234    the format of the authorization data that will be sent.  The format
235    is indicated with the AuthzDataFormat type defined in Section 2.3.
237    Servers that receive an extended client hello message containing the
238    client_authz_request extension MUST respond with the same
239    client_authz_request extension in the extended server hello message
240    if the server is willing to receive authorization data in the
241    indicated format.  The client_authz_request extension MUST be omitted
242    from the extended server hello message if the server is not willing
243    to receive authorization data in the indicated format.
245 2.2. The server_authz_request Extension Type
247    Clients MUST include the server_authz_request extension type in the
248    extended client hello message to indicate their desire to receive
249    authorization data from the server.  The extension_data field
250    indicates the format of the authorization data that is desired.  The
251    format is indicated with the AuthzDataFormat type defined in Section
252    2.3.
254    Servers that receive an extended client hello message containing the
255    server_authz_request extension MUST respond with the same
256    server_authz_request extension in the extended server hello message
257    if the server is willing to provide authorization data in the
258    requested format.  The server_authz_request extension MUST be omitted
259    from the extended server hello message if the server is not able to
260    provide authorization data in the requested format.
262 2.3. AuthzDataFormat Type
264    The AuthzDataFormat type is used in both the client_authz_request and
265    the server_authz_request extensions.  It indicates the format of the
266    authorization data that will be transferred.  The AuthzDataFormat
267    type definition is:
269       enum{
270          x509_attr_cert(0), saml_assertion(1), (255)
271       } AuthzDataFormat;
273    When the x509_attr_cert value is present, the authorization data is
274    an X.509 Attribute Certificate that conforms to the profile in RFC
275    3281 [ATTRCERT].
280 Brown & Housley                                                 [Page 5]
282 Internet-Draft                                             February 2006
285    When the saml_assertion value is present, the authorization data is
286    an assertion composed using the Security Assertion Markup Language
287    (SAML) [SAML].
289 3. Handshake Messages
291    This document specifies the use of two new handshake messages: the
292    ClientAuthorizationData message and ServerAuthorizationData message.
293    These messages are described in Section 3.1 and Section 3.2,
294    respectively.  The updated handshake message structure becomes:
296       enum {
297           hello_request(0), client_hello(1), server_hello(2),
298           certificate(11), server_key_exchange (12),
299           certificate_request(13), server_hello_done(14),
300           certificate_verify(15), client_key_exchange(16),
301           finished(20), certificate_url(21), certificate_status(22),
302           client_authz_data(TBD), server_authz_data(TBD), (255)
303       } HandshakeType;
305       struct {
306           HandshakeType msg_type;    /* handshake type */
307           uint24 length;             /* octets in message */
308           select (HandshakeType) {
309               case hello_request:       HelloRequest;
310               case client_hello:        ClientHello;
311               case server_hello:        ServerHello;
312               case certificate:         Certificate;
313               case server_key_exchange: ServerKeyExchange;
314               case certificate_request: CertificateRequest;
315               case server_hello_done:   ServerHelloDone;
316               case certificate_verify:  CertificateVerify;
317               case client_key_exchange: ClientKeyExchange;
318               case finished:            Finished;
319               case certificate_url:     CertificateURL;
320               case certificate_status:  CertificateStatus;
321               case client_authz_data:   ClientAuthorizationData;
322               case server_authz_data:   ServerAuthorizationData;
323           } body;
324       } Handshake;
336 Brown & Housley                                                 [Page 6]
338 Internet-Draft                                             February 2006
341 3.1. ClientAuthorizationData Message
343    The ClientAuthorizationData message contains authorization data
344    associated with the TLS client.  The format of the authentication
345    data depends on the format negotiated in the client_authz_request
346    hello message extensions.
348       struct {
349          client_authz_data AuthorizationData;
350       } ClientAuthorizationData;
352    The AuthorizationData structure is described in Section 3.3.
354 3.2. ServerAuthorizationData Message
356    The ServerAuthorizationData message contains authorization data
357    associated with the TLS server.  The format of the authorization data
358    depends on the format negotiated in the server_authz_request hello
359    message extensions.
361       struct {
362          server_authz_data AuthorizationData;
363       } ServerAuthorizationData;
365    The AuthorizationData structure is described in Section 3.3.
367 3.3. AuthorizationData Type
369    The AuthorizationData structure is defined as follows.  For
370    readability, the definition of AuthzDataFormat is repeated from
371    section 2.3.
373    All of the entries in the authz_data_list MUST contain the same
374    authz_format value, and this value MUST match the one advertised by
375    the client in the extended hello message extension.
377       struct{
378          AuthorizationDataEntry authz_data_list<1..2^16-1>;
379       } AuthorizationData;
381       struct {
382          AuthzDataFormat authz_format;
383          select (authz_format) {
384             case x509_attr_cert: X509AttrCert;
385             case saml_assertion: SAMLAssertion;
386          } authz_data_entry;
387       } AuthorizationDataEntry;
392 Brown & Housley                                                 [Page 7]
394 Internet-Draft                                             February 2006
397       enum{
398          x509_attr_cert(0), saml_assertion(1), (255)
399       } AuthzDataFormat;
401       opaque X509AttrCert<1..2^16-1>;
403       opaque SAMLAssertion<1..2^16-1>;
405    When X509AttrCert is used, the field contains an ASN.1 DER-encoded
406    X.509 Attribute Certificate (AC) that follows the profile in RFC 3281
407    [ATTRCERT].  An AC is a structure similar to a public key certificate
408    (PKC); the main difference being that the AC contains no public key.
409    An AC may contain attributes that specify group membership, role,
410    security clearance, or other authorization information associated
411    with the AC holder.
413    When SAMLAssertion is used, the field contains XML constructs with a
414    nested structure defined in [SAML].  SAML is an XML-based framework
415    for exchanging security information.  This security information is
416    expressed in the form of assertions about subjects, where a subject
417    is either human or computer with an identity.  In this context, the
418    assertions are most likely to convey authorization decisions about
419    whether subjects are allowed to access certain resources.  Assertions
420    are issued by SAML authorities, namely, authentication authorities,
421    attribute authorities, and policy decision points.
423 4. IANA Considerations
425    IANA needs to assign two TLS Extension Types: client_authz_request,
426    and server_authz_request.
428    IANA needs to assign two TLS Handshake Message Types:
429    client_authz_data, and server_authz_data.
431    IANA needs to establish a registry for TLS Authorization Data
432    Formats.  The first two entries in the registry are x509_attr_cert(0)
433    and saml_assertion(1).  TLS Authorization Data Format identifiers
434    with values in the inclusive range 0-63 (decimal) are assigned via
435    RFC 2434 [IANA] Standards Action.  Values from the inclusive range
436    64-223 (decimal) are assigned via RFC 2434 Specification Required.
437    Values from the inclusive range 224-255 (decimal) are reserved for
438    RFC 2434 Private Use.
448 Brown & Housley                                                 [Page 8]
450 Internet-Draft                                             February 2006
453 5. Security Considerations
455    A TLS server can support more than one application, and each
456    application may include several features, each of which requires
457    separate authorization checks.  This is the reason that more than one
458    piece of authorization information can be provided.
460    A TLS server that requires different authorization information for
461    different applications or different application features may find
462    that a client has provided sufficient authorization information to
463    grant access to a subset of these offerings.  In this situation the
464    TLS Handshake protocol will complete successfully; however, the
465    server must ensure that the client will only be able to use the
466    appropriate applications and application features.  That is, the TLS
467    server must deny access to the applications and application features
468    for which authorization has not been confirmed.
470 6. Normative References
472    [ATTRCERT]   Farrell, S., and R. Housley, "An Internet Attribute
473                 Certificate Profile for Authorization", RFC 3281,
474                 April 2002.
476    [IANA]       Narten, T., and H. Alvestrand, "Guidelines for Writing
477                 an IANA Considerations Section in RFCs", RFC 3434,
478                 October 1998.
480    [TLS1.0]     Dierks, T., and C. Allen, "The TLS Protocol, Version 1.0",
481                 RFC 2246, January 1999.
483    [TLS1.1]     Dierks, T., and E. Rescorla, "The Transport Layer Security
484                 (TLS) Protocol, Version 1.1", RFC 4346, February 2006.
486    [TLSEXT]     Blake-Wilson, S., Nystrom, M., Hopwood, D., Mikkelsen, J.,
487                 and T. Wright, "Transport Layer Security (TLS) Extensions",
488                 RFC 3546, June 2003.
490    [SAML]       Organization for the Advancement of Structured Information
491                 Standards, "Security Assertion Markup Language (SAML),
492                 version 1.1", September 2003.  [Version 2.0 is out for
493                 public comment; it will replace this reference if approved.]
495    [STDWORDS]   Bradner, S., "Key words for use in RFCs to Indicate
496                 Requirement Levels", BCP 14, RFC 2119, March 1997.
504 Brown & Housley                                                 [Page 9]
506 Internet-Draft                                             February 2006
509 Author's Address
511    Mark Brown
512    RedPhone Security
513    2019 Palace Avenue
514    Saint Paul, MN  55105
515    USA
516    mark <at> redphonesecurity <dot> com
518    Russell Housley
519    Vigil Security, LLC
520    918 Spring Knoll Drive
521    Herndon, VA 20170
522    USA
523    housley <at> vigilsec <dot> com
525 Full Copyright Statement
527    Copyright (C) The Internet Society (2006). This document is subject
528    to the rights, licenses and restrictions contained in BCP 78, and
529    except as set forth therein, the authors retain all their rights.
531    This document and translations of it may be copied and furnished to
532    others, and derivative works that comment on or otherwise explain it
533    or assist in its implementation may be prepared, copied, published
534    and distributed, in whole or in part, without restriction of any
535    kind, provided that the above copyright notice and this paragraph are
536    included on all such copies and derivative works. However, this
537    document itself may not be modified in any way, such as by removing
538    the copyright notice or references to the Internet Society or other
539    Internet organizations, except as needed for the purpose of
540    developing Internet standards in which case the procedures for
541    copyrights defined in the Internet Standards process must be
542    followed, or as required to translate it into languages other than
543    English.
545    This document and the information contained herein are provided on an
546    "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
547    OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
548    ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
549    INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
550    INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
551    WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
560 Brown & Housley                                                [Page 10]