]> git.ipfire.org Git - thirdparty/gnutls.git/commitdiff
Add.
authorSimon Josefsson <simon@josefsson.org>
Mon, 17 Apr 2006 16:31:29 +0000 (16:31 +0000)
committerSimon Josefsson <simon@josefsson.org>
Mon, 17 Apr 2006 16:31:29 +0000 (16:31 +0000)
doc/protocol/draft-housley-tls-authz-extns-03.txt [new file with mode: 0644]
doc/protocol/draft-santesson-tls-ume-05.txt [new file with mode: 0644]

diff --git a/doc/protocol/draft-housley-tls-authz-extns-03.txt b/doc/protocol/draft-housley-tls-authz-extns-03.txt
new file mode 100644 (file)
index 0000000..b413dfa
--- /dev/null
@@ -0,0 +1,840 @@
+
+
+
+
+Internet-Draft                                                  M. Brown
+April 2006                                             RedPhone Security
+Expires: October 2006                                         R. Housley
+                                                          Vigil Security
+
+        Transport Layer Security (TLS) Authorization Extensions
+                 <draft-housley-tls-authz-extns-03.txt>
+
+
+Status of this Memo
+
+   By submitting this Internet-Draft, each author represents that any
+   applicable patent or other IPR claims of which he or she is aware
+   have been or will be disclosed, and any of which he or she becomes
+   aware will be disclosed, in accordance with Section 6 of BCP 79.
+
+   Internet-Drafts are working documents of the Internet Engineering
+   Task Force (IETF), its areas, and its working groups.  Note that
+   other groups may also distribute working documents as Internet-
+   Drafts.
+
+   Internet-Drafts are draft documents valid for a maximum of six months
+   and may be updated, replaced, or obsoleted by other documents at any
+   time.  It is inappropriate to use Internet-Drafts as reference
+   material or to cite them other than as "work in progress."
+
+   The list of current Internet-Drafts can be accessed at
+   http://www.ietf.org/ietf/1id-abstracts.txt.
+
+   The list of Internet-Draft Shadow Directories can be accessed at
+   http://www.ietf.org/shadow.html.
+
+Copyright Notice
+
+   Copyright (C) The Internet Society (2006).  All Rights Reserved.
+
+Abstract
+
+   This document specifies authorization extensions to the Transport
+   Layer Security (TLS) Handshake Protocol.  Extensions carried in the
+   client and server hello messages to confirm that both parties support
+   the desired authorization data types.  Then, if supported by both the
+   client and the server, authorization information is exchanged in the
+   supplemental data handshake message.
+
+
+
+
+
+
+
+Brown & Housley                                                 [Page 1]
+\f
+Internet-Draft                                                April 2006
+
+
+1. Introduction
+
+   Transport Layer Security (TLS) protocol [TLS1.0][TLS1.1] is being
+   used in an increasing variety of operational environments, including
+   ones that were not envisioned at the time of the original design for
+   TLS.  The extensions introduced in this document are designed to
+   enable TLS to operate in environments where authorization information
+   needs to be exchanged between the client and the server before any
+   protected data is exchanged.
+
+   This document describes authorization extensions for the TLS
+   Handshake Protocol in both TLS 1.0 and TLS 1.1.  These extensions
+   observe the conventions defined for TLS Extensions [TLSEXT] that make
+   use of the general extension mechanisms for the client hello message
+   and the server hello message.  The extensions described in this
+   document confirm that both the client and the server support the
+   desired authorization data types.  Then, if supported, authorization
+   information is exchanged in the supplemental data handshake message
+   [TLSSUPP].
+
+   The authorization extensions may be used in conjunction with TLS 1.0
+   and TLS 1.1.  The extensions are designed to be backwards compatible,
+   meaning that the Handshake Protocol Supplemental Data messages will
+   only contain authorization information of a particular type if the
+   client indicates support for them in the client hello message and the
+   server indicates support for them in the server hello message.
+
+   Clients typically know the context of the TLS session that is being
+   setup, thus the client can use the authorization extensions when they
+   are needed.  Servers must accept extended client hello messages, even
+   if the server does not "understand" the all of the listed extensions.
+   However, the server will not indicate support for these "not
+   understood" extensions.  Then, clients may reject communications with
+   servers that do not support the authorization extensions.
+
+1.1. Conventions
+
+   The syntax for the authorization messages is defined using the TLS
+   Presentation Language, which is specified in Section 4 of [TLS1.0].
+
+   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
+   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
+   document are to be interpreted as described in RFC 2119 [STDWORDS].
+
+1.2. Overview
+
+   Figure 1 illustrates the placement of the authorization extensions
+   and supplemental data messages in the full TLS handshake.
+
+
+
+Brown & Housley                                                 [Page 2]
+\f
+Internet-Draft                                                April 2006
+
+
+    Client                                                   Server
+
+    ClientHello (w/ extensions) -------->
+
+                                        ServerHello (w/ extensions)
+                                                  SupplementalData*
+                                                       Certificate*
+                                                 ServerKeyExchange*
+                                                CertificateRequest*
+                                <--------           ServerHelloDone
+    SupplementalData*
+    Certificate*
+    ClientKeyExchange
+    CertificateVerify*
+    [ChangeCipherSpec]
+    Finished                    -------->
+                                                 [ChangeCipherSpec]
+                                <--------                  Finished
+    Application Data            <------->          Application Data
+
+     *  Indicates optional or situation-dependent messages that
+        are not always sent.
+
+     [] Indicates that ChangeCipherSpec is an independent TLS
+        Protocol content type; it is not actually a TLS
+        handshake message.
+
+        Figure 1. Authorization data exchange in full TLS handshake
+
+
+   The ClientHello message includes an indication of the client
+   authorization data formats that are supported and an indication of
+   the server authorization data formats that are supported.  The
+   ServerHello message contains similar indications, but any
+   authentication data formats that are not supported by the server are
+   not included.  Both the client and the server MUST indicate support
+   for the authorization data types.  If the list of mutually supported
+   authorization data formats is empty, then the ServerHello message
+   MUST NOT carry the affected extension at all.
+
+
+
+
+
+
+
+
+
+
+
+
+Brown & Housley                                                 [Page 3]
+\f
+Internet-Draft                                                April 2006
+
+
+2. Authorization Extension Types
+
+   The general extension mechanisms enable clients and servers to
+   negotiate whether to use specific extensions, and how to use specific
+   extensions.  As specified in [TLSEXT], the extension format used in
+   the extended client hello message and extended server hello message
+   is repeated here for convenience:
+
+      struct {
+         ExtensionType extension_type;
+         opaque extension_data<0..2^16-1>;
+      } Extension;
+
+   The extension_type identifies a particular extension type, and the
+   extension_data contains information specific to the particular
+   extension type.
+
+   As specified in [TLSEXT], for all extension types, the extension type
+   MUST NOT appear in the extended server hello message unless the same
+   extension type appeared in the corresponding client hello message.
+   Clients MUST abort the handshake if they receive an extension type in
+   the extended server hello message that they did not request in the
+   associated extended client hello message.
+
+   When multiple extensions of different types are present in the
+   extended client hello message or the extended server hello message,
+   the extensions can appear in any order, but there MUST NOT be more
+   than one extension of the same type.
+
+   This document specifies the use of two new extension types:
+   client_authz and server_authz.  These extension types are described
+   in Section 2.1 and Section 2.2, respectively.  This specification
+   adds two new types to ExtensionType:
+
+      enum {
+        client_authz(TBD), server_authz(TBD), (65535)
+      } ExtensionType;
+
+   The authorization extensions are relevant when a session is initiated
+   and any subsequent session resumption.  However, a client that
+   requests resumption of a session does not know whether the server
+   will have all of the context necessary to accept this request, and
+   therefore the client SHOULD send an extended client hello message
+   that includes the extension types associated with the authorization
+   extensions.  This way, if the resumption request is denied, then the
+   authorization extensions will be negotiated as normal.
+
+
+
+
+
+Brown & Housley                                                 [Page 4]
+\f
+Internet-Draft                                                April 2006
+
+
+2.1. The client_authz Extension Type
+
+   Clients MUST include the client_authz extension type in the extended
+   client hello message to indicate their desire to send authorization
+   data to the server.  The extension_data field indicates the format of
+   the authorization data that will be sent in the supplemental data
+   handshake message.  The syntax of the client_authz extension_data
+   field is described in Section 2.3.
+
+   Servers that receive an extended client hello message containing the
+   client_authz extension MUST respond with the same client_authz
+   extension in the extended server hello message if the server is
+   willing to receive authorization data in the indicated format.  Any
+   unacceptable formats must be removed from the list provided by the
+   client.  The client_authz extension MUST be omitted from the extended
+   server hello message if the server is not willing to receive
+   authorization data in any of the indicated formats.
+
+2.2. The server_authz Extension Type
+
+   Clients MUST include the server_authz extension type in the extended
+   client hello message to indicate their desire to receive
+   authorization data from the server.  The extension_data field
+   indicates the format of the authorization data that will be sent in
+   the supplemental data handshake message.  The syntax of the
+   server_authz extension_data field as described in Section 2.3.
+
+   Servers that receive an extended client hello message containing the
+   server_authz extension MUST respond with the same server_authz
+   extension in the extended server hello message if the server is
+   willing to provide authorization data in the requested format.  Any
+   unacceptable formats must be removed from the list provided by the
+   client.  The server_authz extension MUST be omitted from the extended
+   server hello message if the server is not able to provide
+   authorization data in any of the indicated formats.
+
+2.3. AuthzDataFormat Type
+
+   The AuthzDataFormat type is used in both the client_authz and the
+   server_authz extensions.  It indicates the format of the
+   authorization data that will be transferred.  The AuthzDataFormat
+   type definition is:
+
+      enum {
+         x509_attr_cert(0), saml_assertion(1), x509_attr_cert_url(2),
+         saml_assertion_url(3), (255)
+      } AuthzDataFormat;
+
+
+
+
+Brown & Housley                                                 [Page 5]
+\f
+Internet-Draft                                                April 2006
+
+
+   When the x509_attr_cert value is present, the authorization data is
+   an X.509 Attribute Certificate (AC) that conforms to the profile in
+   RFC 3281 [ATTRCERT].
+
+   When the saml_assertion value is present, the authorization data is
+   an assertion composed using the Security Assertion Markup Language
+   (SAML) [SAML1.1][SAML2.0].
+
+   When the x509_attr_cert_url value is present, the authorization data
+   is an X.509 AC that conforms to the profile in RFC 3281 [ATTRCERT];
+   however, the AC is fetched with the supplied URL.  A one-way hash
+   value is provided to ensure that the intended AC is obtained.
+
+   When the saml_assertion_url value is present, the authorization data
+   is a SAML Assertion; however, the SAML Assertion is fetched with the
+   supplied URL.  A one-way hash value is provided to ensure that the
+   intended SAML Assertion is obtained.
+
+3. Supplemental Data Handshake Message Usage
+
+   As shown in Figure 1, supplemental data can be exchanges in two
+   places in the handshake protocol.  The client_authz extension
+   determines what authorization data formats are acceptable for
+   transfer from the client to the server, and the server_authz
+   extension determines what authorization data formats are acceptable
+   for transfer from the server to the client.  In both cases, the
+   syntax specified in [TLSSUPP] is used along with the authz_data type
+   defined in this document.
+
+      enum {
+         authz_data(TBD), (65535)
+      } SupplementalDataType;
+
+      struct {
+         SupplementalDataType supplemental_data_type;
+         select(SupplementalDataType) {
+            case authz_data:  AuthorizationData;
+         }
+      } SupplementalData;
+
+3.1. Client Authorization Data
+
+   The SupplementalData message sent from the client to the server
+   contains authorization data associated with the TLS client.
+   Following the principle of least privilege, the client ought to send
+   the minimal set of authorization information necessary to accomplish
+   the task at hand.  That is, only those authorizations that are
+   expected to be required by the server in order to gain access to the
+
+
+
+Brown & Housley                                                 [Page 6]
+\f
+Internet-Draft                                                April 2006
+
+
+   needed server resources ought to be included.  The format of the
+   authentication data depends on the format negotiated in the
+   client_authz hello message extension.  The AuthorizationData
+   structure is described in Section 3.3.
+
+   In some systems, clients present authorization information to the
+   server, and then the server provides new authorization information.
+   This type of transaction is not supported by SupplementalData
+   messages.  In cases where the client intends to request the TLS
+   server to perform authorization translation or expansion services,
+   such translation services ought to occur within the ApplicationData
+   messages, not within the TLS Handshake protocol.
+
+3.2. Server Authorization Data
+
+   The SupplementalData message sent from the server to the client
+   contains authorization data associated with the TLS server.  This
+   authorization information is expected to include statements about the
+   server's qualifications, reputation, accreditation, and so on.
+   Wherever possible, authorizations that can be misappropriated for
+   fraudulent use ought to be avoided.  The format of the authorization
+   data depends on the format negotiated in the server_authz hello
+   message extensions.  The AuthorizationData structure is described in
+   Section 3.3.
+
+3.3. AuthorizationData Type
+
+   The AuthorizationData structure carried authorization information for
+   either the client or the server.  The AuthzDataFormat specified in
+   Section 2.3 for use in the hello extensions is also used in this
+   structure.
+
+   All of the entries in the authz_data_list MUST employ authorization
+   data formats that were negotiated in the relevant hello message
+   extension.
+
+      struct{
+         AuthorizationDataEntry authz_data_list<1..2^16-1>;
+      } AuthorizationData;
+
+
+
+
+
+
+
+
+
+
+
+
+Brown & Housley                                                 [Page 7]
+\f
+Internet-Draft                                                April 2006
+
+
+      struct {
+         AuthzDataFormat authz_format;
+         select (AuthzDataFormat) {
+            case x509_attr_cert:     X509AttrCert;
+            case saml_assertion:     SAMLAssertion;
+            case x509_attr_cert_url: URLandHash;
+            case saml_assertion_url: URLandHash;
+         }
+      } AuthorizationDataEntry;
+
+      enum {
+         x509_attr_cert(0), saml_assertion(1), x509_attr_cert_url(2),
+         saml_assertion_url(3), (255)
+      } AuthzDataFormat;
+
+      opaque X509AttrCert<1..2^16-1>;
+
+      opaque SAMLAssertion<1..2^16-1>;
+
+      struct {
+         opaque url<1..2^16-1>;
+         HashType hash_type;
+         select (hash_type) {
+            case sha1:   SHA1Hash;
+            case sha256: SHA256Hash;
+         } hash;
+      } URLandHash;
+
+      enum {
+         sha1(0), sha256(1), (255)
+      } HashType;
+
+      opaque SHA1Hash[20];
+
+      opaque SHA256Hash[32];
+
+3.3.1. X.509 Attribute Certificate
+
+   When X509AttrCert is used, the field contains an ASN.1 DER-encoded
+   X.509 Attribute Certificate (AC) that follows the profile in RFC 3281
+   [ATTRCERT].  An AC is a structure similar to a public key certificate
+   (PKC) [PKIX1]; the main difference being that the AC contains no
+   public key.  An AC may contain attributes that specify group
+   membership, role, security clearance, or other authorization
+   information associated with the AC holder.
+
+   When making an authorization decision based on an AC, proper linkage
+   between the AC holder and the public key certificate that is
+
+
+
+Brown & Housley                                                 [Page 8]
+\f
+Internet-Draft                                                April 2006
+
+
+   transferred in the TLS Certificate message is needed.  The AC holder
+   field provides this linkage.  The holder field is a SEQUENCE allowing
+   three different (optional) syntaxes: baseCertificateID, entityName
+   and objectDigestInfo.  In the TLS authorization context, the holder
+   field MUST use the either baseCertificateID or entityName.  In the
+   baseCertificateID case, the baseCertificateID field MUST match the
+   issuer and serialNumber fields in the certificate.  In the entityName
+   case, the entityName MUST be the same as the subject field in the
+   certificate or one of the subjectAltName extension values in the
+   certificate.  Note that [PKIX1] mandates that the subjectAltName
+   extension be present if the subject field contains an empty
+   distinguished name.
+
+3.3.2. SAML Assertion
+
+   When SAMLAssertion is used, the field contains XML constructs with a
+   nested structure defined in [SAML1.1][SAML2.0].  SAML is an XML-based
+   framework for exchanging security information.  This security
+   information is expressed in the form of assertions about subjects,
+   where a subject is either human or computer with an identity.  In
+   this context, the SAML assertions are most likely to convey
+   authentication or attribute statements to be used as input to
+   authorization policy governing whether subjects are allowed to access
+   certain resources.  Assertions are issued by SAML authorities.
+
+   When making an authorization decision based on a SAML assertion,
+   proper linkage between the SAML assertion and the public key
+   certificate that is transferred in the TLS Certificate message may be
+   needed.  A "Holder of Key" subject confirmation method in the SAML
+   assertion can provide this linkage.  In other scenarios, it may be
+   acceptable to use alternate confirmation methods that do not provide
+   a strong binding, such as a bearer mechanism.  SAML assertion
+   recipients MUST decide which subject confirmation methods are
+   acceptable; such decisions MAY be specific to the SAML assertion
+   contents and the TLS session context.
+
+   There is no general requirement that the subject of the SAML
+   assertion correspond directly to the subject of the certificate.
+   They may represent the same or different entities.  When they are
+   different, SAML also provides a mechanism by which the certificate
+   subject can be identified separately from the subject in the SAML
+   assertion subject confirmation method.
+
+   Since the SAML assertion is being provided at a part of the TLS
+   Handshake that is unencrypted, an eavesdropper could replay the same
+   SAML assertion when they establish their own TLS session.  This is
+   especially important when a bearer mechanism is employed, the
+   recipient of the SAML assertion assumes that the sender is an
+
+
+
+Brown & Housley                                                 [Page 9]
+\f
+Internet-Draft                                                April 2006
+
+
+   acceptable attesting entity for the SAML assertion.  Some constraints
+   may be included to limit the context where the bearer mechanism will
+   be accepted.  For example, the period of time that the SAML assertion
+   can be short-lived (often minutes), the source address can be
+   constrained, or the destination endpoint can be identified.  Also,
+   bearer assertions are often checked against a cache of SAML assertion
+   unique identifiers that were recently received in order to detect
+   replay.  This is an appropriate countermeasure if the bearer
+   assertion is intended to be used just once.  Section 5 provides a way
+   to protect authorization information when necessary.
+
+3.3.3. URL and Hash
+
+   Since the X.509 AC and SAML assertion can be large, alternatives
+   provide a URL to obtain the ASN.1 DER-encoded X.509 AC or SAML
+   Assertion.  To ensure that the intended object is obtained, a one-way
+   hash value of the object is also included.  Integrity of this one-way
+   hash value is provided by the TLS Finished message.
+
+   Implementations that support either x509_attr_cert_url or
+   saml_assertion_url MUST support URLs that employ the http scheme.
+   Other schemes may also be supported; however, to avoid circular
+   dependencies, supported schemes SHOULD NOT themselves make use of
+   TLS, such as the https scheme.
+
+   Implementations that support either x509_attr_cert_url or
+   saml_assertion_url MUST support both SHA-1 [SHA1] and SHA-256 [SHA2]
+   as one-way hash functions.  Other one-way hash functions may also be
+   supported.  Additional one-way hash functions can be registered in
+   the future using the procedures in section 3.
+
+4. IANA Considerations
+
+   This document defines a two TLS extensions: client_authz(TBD) and
+   server_authz(TBD).  These extension type values are assigned from the
+   TLS Extension Type registry defined in [TLSEXT].
+
+   This document defines one TLS supplemental data type:
+   authz_data(TBD).  This supplemental data type is assigned from the
+   TLS Supplemental Data Type registry defined in [TLSSUPP].
+
+   This document establishes a new registry, to be maintained by IANA,
+   for TLS Authorization Data Formats.  The first four entries in the
+   registry are x509_attr_cert(0), saml_assertion(1),
+   x509_attr_cert_url(2), and saml_assertion_url(3).  TLS Authorization
+   Data Format identifiers with values in the inclusive range 0-63
+   (decimal) are assigned via RFC 2434 [IANA] Standards Action.  Values
+   from the inclusive range 64-223 (decimal) are assigned via RFC 2434
+
+
+
+Brown & Housley                                                [Page 10]
+\f
+Internet-Draft                                                April 2006
+
+
+   Specification Required.  Values from the inclusive range 224-255
+   (decimal) are reserved for RFC 2434 Private Use.
+
+   This document establishes a new registry, to be maintained by IANA,
+   for TLS Hash Types.  The first two entries in the registry are
+   sha1(0) and sha256(1).  TLS Hash Type identifiers with values in the
+   inclusive range 0-158 (decimal) are assigned via RFC 2434 [IANA]
+   Standards Action.  Values from the inclusive range 159-223 (decimal)
+   are assigned via RFC 2434 Specification Required.  Values from the
+   inclusive range 224-255 (decimal) are reserved for RFC 2434 Private
+   Use.
+
+5. Security Considerations
+
+   A TLS server can support more than one application, and each
+   application may include several features, each of which requires
+   separate authorization checks.  This is the reason that more than one
+   piece of authorization information can be provided.
+
+   A TLS server that requires different authorization information for
+   different applications or different application features may find
+   that a client has provided sufficient authorization information to
+   grant access to a subset of these offerings.  In this situation the
+   TLS Handshake protocol will complete successfully; however, the
+   server must ensure that the client will only be able to use the
+   appropriate applications and application features.  That is, the TLS
+   server must deny access to the applications and application features
+   for which authorization has not been confirmed.
+
+   In many cases, the authorization information is itself sensitive.
+   The double handshake technique can be used to provide protection for
+   the authorization information.  Figure 2 illustrates the double
+   handshake, where the initial handshake does not include any
+   authorization extensions, but it does result in protected
+   communications.  Then, a second handshake that includes the
+   authorization information is performed using the protected
+   communications.  In Figure 2, the number on the right side indicates
+   the amount of protection for the TLS message on that line.  A zero
+   (0) indicates that there is no communication protection; a one (1)
+   indicates that protection is provided by the first TLS session; and a
+   two (2) indicates that protection is provided by both TLS sessions.
+
+   The placement of the SupplementalData message in the TLS Handshake
+   results in the server providing its authorization information before
+   the client is authenticated.  In many situations, servers will not
+   want to provide authorization information until the client is
+   authenticated.  The double handshake illustrated in Figure 2 provides
+   a technique to ensure that the parties are mutually authenticated
+
+
+
+Brown & Housley                                                [Page 11]
+\f
+Internet-Draft                                                April 2006
+
+
+   before either party provides authorization information.
+
+6. Acknowledgement
+
+   The authors thank Scott Cantor for his assistance with the SAML
+   Assertion portion of the document.
+
+
+
+    Client                                                   Server
+
+    ClientHello (no extensions) -------->                            |0
+                                        ServerHello (no extensions)  |0
+                                                       Certificate*  |0
+                                                 ServerKeyExchange*  |0
+                                                CertificateRequest*  |0
+                                <--------           ServerHelloDone  |0
+    Certificate*                                                     |0
+    ClientKeyExchange                                                |0
+    CertificateVerify*                                               |0
+    [ChangeCipherSpec]                                               |0
+    Finished                    -------->                            |1
+                                                 [ChangeCipherSpec]  |0
+                                <--------                  Finished  |1
+    ClientHello (w/ extensions) -------->                            |1
+                                        ServerHello (w/ extensions)  |1
+                                  SupplementalData (w/ authz data)*  |1
+                                                       Certificate*  |1
+                                                 ServerKeyExchange*  |1
+                                                CertificateRequest*  |1
+                                <--------           ServerHelloDone  |1
+    SupplementalData (w/ authz data)*                                |1
+    Certificate*                                                     |1
+    ClientKeyExchange                                                |1
+    CertificateVerify*                                               |1
+    [ChangeCipherSpec]                                               |1
+    Finished                    -------->                            |2
+                                                 [ChangeCipherSpec]  |1
+                                <--------                  Finished  |2
+    Application Data            <------->          Application Data  |2
+
+         Figure 2. Double Handshake to Protect Authorization Data
+
+
+
+
+
+
+
+
+
+Brown & Housley                                                [Page 12]
+\f
+Internet-Draft                                                April 2006
+
+
+7. Normative References
+
+   [ATTRCERT]   Farrell, S., and R. Housley, "An Internet Attribute
+                Certificate Profile for Authorization", RFC 3281,
+                April 2002.
+
+   [IANA]       Narten, T., and H. Alvestrand, "Guidelines for Writing
+                an IANA Considerations Section in RFCs", RFC 3434,
+                October 1998.
+
+   [PKIX1]      Housley, R., Polk, W., Ford, W. and D. Solo, "Internet
+                X.509 Public Key Infrastructure Certificate and
+                Certificate Revocation List (CRL) Profile", RFC 3280,
+                April 2002.
+
+   [TLS1.0]     Dierks, T., and C. Allen, "The TLS Protocol, Version 1.0",
+                RFC 2246, January 1999.
+
+   [TLS1.1]     Dierks, T., and E. Rescorla, "The Transport Layer Security
+                (TLS) Protocol, Version 1.1", RFC 4346, February 2006.
+
+   [TLSEXT]     Blake-Wilson, S., Nystrom, M., Hopwood, D., Mikkelsen, J.,
+                and T. Wright, "Transport Layer Security (TLS) Extensions",
+                RFC 3546, June 2003.
+
+   [TLSSUPP]    Santesson, S., " TLS Handshake Message for Supplemental
+                Data", work in progress: draft-santesson-tls-supp,
+                March 2006.
+
+   [SAML1.1]    OASIS Security Services Technical Committee, "Security
+                Assertion Markup Language (SAML) Version 1.1
+                Specification Set", September 2003.
+
+   [SAML2.0]    OASIS Security Services Technical Committee, "Security
+                Assertion Markup Language (SAML) Version 2.0
+                Specification Set", March2005.
+
+   [SHA1]       National Institute of Standards and Technology (NIST),
+                FIPS PUB 180-1, Secure Hash Standard, 17 April 1995.
+
+   [SHA2]       National Institute of Standards and Technology (NIST),
+                FIPS PUB 180-2: Secure Hash Standard, 1 August 2002.
+
+   [STDWORDS]   Bradner, S., "Key words for use in RFCs to Indicate
+                Requirement Levels", BCP 14, RFC 2119, March 1997.
+
+
+
+
+
+
+Brown & Housley                                                [Page 13]
+\f
+Internet-Draft                                                April 2006
+
+
+Author's Address
+
+   Mark Brown
+   RedPhone Security
+   2019 Palace Avenue
+   Saint Paul, MN  55105
+   USA
+   mark <at> redphonesecurity <dot> com
+
+   Russell Housley
+   Vigil Security, LLC
+   918 Spring Knoll Drive
+   Herndon, VA 20170
+   USA
+   housley <at> vigilsec <dot> com
+
+Full Copyright Statement
+
+   Copyright (C) The Internet Society (2006). This document is subject
+   to the rights, licenses and restrictions contained in BCP 78, and
+   except as set forth therein, the authors retain all their rights.
+
+   This document and translations of it may be copied and furnished to
+   others, and derivative works that comment on or otherwise explain it
+   or assist in its implementation may be prepared, copied, published
+   and distributed, in whole or in part, without restriction of any
+   kind, provided that the above copyright notice and this paragraph are
+   included on all such copies and derivative works. However, this
+   document itself may not be modified in any way, such as by removing
+   the copyright notice or references to the Internet Society or other
+   Internet organizations, except as needed for the purpose of
+   developing Internet standards in which case the procedures for
+   copyrights defined in the Internet Standards process must be
+   followed, or as required to translate it into languages other than
+   English.
+
+   This document and the information contained herein are provided on an
+   "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
+   OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
+   ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
+   INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
+   INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
+   WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+
+   The IETF takes no position regarding the validity or scope of any
+   Intellectual Property Rights or other rights that might be claimed to
+   pertain to the implementation or use of the technology described in
+   this document or the extent to which any license under such rights
+
+
+
+Brown & Housley                                                [Page 14]
+\f
+Internet-Draft                                                April 2006
+
+
+   might or might not be available; nor does it represent that it has
+   made any independent effort to identify any such rights.  Information
+   on the procedures with respect to rights in RFC documents can be
+   found in BCP 78 and BCP 79.
+
+   Copies of IPR disclosures made to the IETF Secretariat and any
+   assurances of licenses to be made available, or the result of an
+   attempt made to obtain a general license or permission for the use of
+   such proprietary rights by implementers or users of this
+   specification can be obtained from the IETF on-line IPR repository at
+   http://www.ietf.org/ipr.
+
+   The IETF invites any interested party to bring to its attention any
+   copyrights, patents or patent applications, or other proprietary
+   rights that may cover technology that may be required to implement
+   this standard.  Please address the information to the IETF at
+   ietf-ipr@ietf.org.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Brown & Housley                                                [Page 15]
diff --git a/doc/protocol/draft-santesson-tls-ume-05.txt b/doc/protocol/draft-santesson-tls-ume-05.txt
new file mode 100644 (file)
index 0000000..a9101cb
--- /dev/null
@@ -0,0 +1,616 @@
+
+
+
+
+INTERNET-DRAFT                                  S. Santesson (Microsoft)
+Updates: 2246, 4346 (once approved)             A. Medvinsky (Microsoft)
+Intended Category: Standards track                   J. Ball (Microsoft)
+Expires October 2006                                          April 2006
+
+
+                       TLS User Mapping Extension
+                    <draft-santesson-tls-ume-05.txt>
+
+
+Status of this Memo
+
+   By submitting this Internet-Draft, each author represents that any
+   applicable patent or other IPR claims of which he or she is aware
+   have been or will be disclosed, and any of which he or she becomes
+   aware will be disclosed, in accordance with Section 6 of BCP 79.
+
+   Internet-Drafts are working documents of the Internet Engineering
+   Task Force (IETF), its areas, and its working groups.  Note that
+   other groups may also distribute working documents as Internet-
+   Drafts.
+
+   Internet-Drafts are draft documents valid for a maximum of six months
+   and may be updated, replaced, or obsoleted by other documents at any
+   time.  It is inappropriate to use Internet-Drafts as reference
+   material or to cite them other than a "work in progress."
+
+   The list of current Internet-Drafts can be accessed at
+   http://www.ietf.org/1id-abstracts.html
+
+   The list of Internet-Draft Shadow Directories can be accessed at
+   http://www.ietf.org/shadow.html
+
+
+Abstract
+
+   This document specifies a TLS extension that enables clients to send
+   generic user mapping data in a supplemental data handshake message
+   defined in RFC TBD. One such mapping is defined, the UpnDomainHint,
+   which may be used by a server to locate a user in a directory
+   database. Other mappings may be defined in other documents in the
+   future.
+
+   (NOTE TO RFC EDITOR:  Replace "RFC TBD" with the RFC number assigned
+   to draft-santesson-tls-supp-00.txt)
+
+
+
+
+
+
+Santesson, et. all                                              [Page 1]
+\f
+INTERNET DRAFT         TLS User Mapping extension             April 2006
+
+
+Table of Contents
+
+   1  Introduction ................................................    2
+   2  User mapping extension ......................................    3
+   3  User mapping handshake exchange .............................    4
+   4  Message flow ................................................    7
+   5  Security Considerations .....................................    8
+   6  References ..................................................    9
+   7 IANA Considerations ... ......................................    9
+   Authors' Addresses .............................................   10
+   Acknowledgements ...............................................   10
+   Disclaimer .....................................................   11
+   Copyright Statement ............................................   11
+
+1.  Introduction
+
+   This specification defines a TLS extension and a payload for the
+   SupplementalData handshake message, defined in RFC TBD [N6], to
+   accommodate mapping of users to their user accounts when using TLS
+   client authentication as the authentication method.
+
+   The UPN (User Principal Name) is a name form defined by Microsoft
+   which specifies a user's entry in a directory in the form of
+   userName@domainName.  Traditionally Microsoft has relied on such UPN
+   names to be present in the client certificate when logging on to a
+   domain account.
+
+   This has however several drawbacks since it prevents the use of
+   certificates with an absent UPN and also requires re-issuance of
+   certificates or issuance of multiple certificates to reflect account
+   changes or creation of new accounts.
+
+   The TLS extension defined in this document provide a significant
+   improvement to this situation as it allows a single certificate to be
+   mapped to one or more accounts of the user and does not require the
+   certificate to contain a UPN.
+
+   The new TLS extension (user_mapping) is sent in the client hello
+   message. Per convention defined in RFC 4366 [N4], the server places
+   the same extension (user_mapping) in the server hello message, to
+   inform the client that the server understands this extension. If the
+   server does not understand the extension, it will respond with a
+   server hello omitting this extension and the client will proceed as
+   normal, ignoring the extension, and not include the
+   UserMappingDataList data in the TLS handshake.
+
+   If the new extension is understood, the client will inject
+   UserMappingDataList data in the SupplementalData handshake message
+
+
+
+Santesson, et. all                                              [Page 2]
+\f
+INTERNET DRAFT         TLS User Mapping extension             April 2006
+
+
+   prior to the Client's Certificate message. The server will then parse
+   this message, extracting the client's domain, and store it in the
+   context for use when mapping the certificate to the user's directory
+   account.
+
+   No other modifications to the protocol are required. The messages are
+   detailed in the following sections.
+
+
+1.1  Terminology
+
+   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
+   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
+   document are to be interpreted as described in RFC 2119 [N1].
+
+   The syntax for the TLS User Mapping extension is defined using the
+   TLS Presentation Language, which is specified in Section 4 of [N2].
+
+1.2  Design considerations
+
+   The reason the mapping data itself is not placed in the extension
+   portion of the client hello is to prevent broadcasting this
+   information to servers that don't understand the extension.
+   Additionally, if mapping information were to be considered
+   confidential, the addition of a new user mapping message type could
+   allow the data to be encrypted using the server's public key.
+
+
+2  User mapping extension
+
+   A new extension type (user_mapping(TBD)) is added to the Extension
+   used in both the client hello and server hello messages. The
+   extension type is specified as follows.
+
+
+      enum {
+           user_mapping(TBD), (65535)
+      } ExtensionType;
+
+   The "extension_data" field of this extension SHALL contain
+   "UserMappingTypeList" with a list of supported hint types where:
+
+      struct {
+            UserMappingType user_mapping_types<1..2^8-1>
+      } UserMappingTypeList;
+
+   Enumeration of hint types (user_mapping_types) defined in this
+   document is provided in section 3.
+
+
+
+Santesson, et. all                                              [Page 3]
+\f
+INTERNET DRAFT         TLS User Mapping extension             April 2006
+
+
+   The list of user_mapping_types included in a client hello SHALL
+   signal the hint types supported by the client. The list of
+   user_mapping_types included in the server hello SHALL signal the hint
+   types preferred by the server.
+
+   If none of the hint types listed by the client is supported by the
+   server, the server SHALL omit the user_mapping extension in the
+   server hello.
+
+   When the user_mapping extension is included in the server hello, the
+   list of hint types in "UserMappingTypeList" SHALL be either equal to,
+   or a subset of, the list provided by the client.
+
+3  User mapping handshake exchange
+
+   The underlying structure of the SupplementalData handshake message,
+   used to carry information defined in this section, is defined in RFC
+   TBD [N6].
+
+   A new SupplementalDataType [N6] is defined to accommodate
+   communication of generic user mapping data. See RFC 2246 (TLS 1.0)
+   [N2] and RFC 4346 (TLS 1.1) [N3] for other handshake types.
+
+   The information in this data type carries one or more unauthenticated
+   hints, UserMappingDataList, inserted by the client side. Upon receipt
+   and successful completion of the TLS handshake, the server MAY use
+   this hint to locate the user's account from which user information
+   and credentials MAY be retrieved to support authentication based on
+   the client certificate.
+
+   The hint defined in this specification (upn_domain_hint) specifies
+   two fields, user_principal_name and domain_name. The domain_name
+   field MAY be used when only domain information is needed, e.g. where
+   a user have accounts in multiple domains using the same username
+   name, where that user name is known from another source (e.g. from
+   the client certificate). When the user name is also needed, the
+   upn_domain_hint field MAY be used to indicate both username and
+   domain name. If both fields are present, then the server can make use
+   of whichever one it chooses.
+
+
+      struct {
+            SupplementalDataType supp_data_type;
+            select(SupplementalDataType) {
+               case user_mapping_data: UserMappingDataList;
+               }
+      } SupplementalDataEntry;
+
+
+
+
+Santesson, et. all                                              [Page 4]
+\f
+INTERNET DRAFT         TLS User Mapping extension             April 2006
+
+
+      enum {
+            user_mapping_data(TBD), (65535)
+      } SupplementalDataType;
+
+
+   The user_mapping_data(TBD) enumeration results in a new supplemental
+   data type UserMappingDataList with the following structure:
+
+
+      enum {
+             upn_domain_hint(0), (255)
+      } UserMappingType;
+
+      struct {
+             opaque user_principal_name<0..2^16-1>;
+             opaque domain_name<0..2^16-1>;
+      } UpnDomainHint;
+
+      struct {
+             UserMappingType user_mapping_version
+             select(UserMappingType) {
+                   case upn_domain_hint:
+                        UpnDomainHint;
+             }
+      } UserMappingData;
+
+      struct{
+         UserMappingData user_mapping_data_list<1..2^16-1>;
+      }UserMappingDataList;
+
+
+   The user_principal_name parameter, when specified, SHALL contain a
+   Unicode UPN, encoded as a UTF-8 string in the following form:
+
+      user@domain
+
+   For example the UPN 'foo@example.com' represents user 'foo' at domain
+   'example.com'.
+
+   The user_principal_name field, when specified, SHALL be of the form
+   "user@domain", where "user" is a UTF-8 encoded Unicode string that
+   does not contain the "@" character, and "domain" is a domain name
+   meeting the requirements in the following paragraph.
+
+   The domain_name field, when specified, SHALL contain a domain name in
+   the usual text form: in other words, a sequence of one or more domain
+   labels separated by ".", each domain label starting and ending with
+   an alphanumeric character and possibly also containing "-"
+
+
+
+Santesson, et. all                                              [Page 5]
+\f
+INTERNET DRAFT         TLS User Mapping extension             April 2006
+
+
+   characters.  This field is an "IDN-unaware domain name slot" as
+   defined in RFC 3490 [N7] and therefore, domain names containing non-
+   ASCII characters have to be processed as described in RFC 3490 before
+   being stored in this field.
+
+   The UpnDomainHint MUST at least contain a non empty
+   user_principal_name or a non empty domain_name. The UpnDomainHint MAY
+   contain both user_principal_name and domain_name.
+
+   The UserMappingData structure contains a single mapping of type
+   UserMappingType.  This structure can be leveraged to define new types
+   of user mapping hints in the future.  The UserMappingDataList MAY
+   carry multiple hints; it is defined as a vector of UserMappingData
+   structures.
+
+   No preference is given to the order in which hints are specified in
+   this vector.  If the client sends more then one hint then the Server
+   SHOULD use the applicable mapping supported by the server.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Santesson, et. all                                              [Page 6]
+\f
+INTERNET DRAFT         TLS User Mapping extension             April 2006
+
+
+4  Message flow
+
+   In order to negotiate to send user mapping data to a server in
+   accordance with this specification, clients MUST include an extension
+   of type "user_mapping" in the (extended) client hello, which SHALL
+   contain a list of supported hint types.
+
+   Servers that receive an extended client hello containing a
+   "user_mapping" extension, MAY indicate that they are willing to
+   accept user mapping data by including an extension of type
+   "user_mapping" in the (extended) server hello, which SHALL contain a
+   list of preferred hint types.
+
+   After negotiation of the use of user mapping has been successfully
+   completed (by exchanging hello messages including "user_mapping"
+   extensions), clients MAY send a "SupplementalData" message containing
+   the "UserMappingDataList" before the "Certificate" message. The
+   message flow is illustrated in Fig. 1 below.
+
+      Client                                               Server
+
+      ClientHello
+       /* with user_mapping ext */ -------->
+
+                                                      ServerHello
+                                      /* with user-mapping ext */
+                                                     Certificate*
+                                               ServerKeyExchange*
+                                              CertificateRequest*
+                                   <--------      ServerHelloDone
+
+      SupplementalData
+       /* with UserMappingDataList */
+      Certificate*
+      ClientKeyExchange
+      CertificateVerify*
+      [ChangeCipherSpec]
+      Finished                     -------->
+                                               [ChangeCipherSpec]
+                                   <--------             Finished
+      Application Data             <------->     Application Data
+
+             Fig. 1 - Message flow with user mapping data
+
+   * Indicates optional or situation-dependent messages that are not
+   always sent according to RFC 2246 [N2] and RFC 4346 [N3].
+
+
+
+
+
+Santesson, et. all                                              [Page 7]
+\f
+INTERNET DRAFT         TLS User Mapping extension             April 2006
+
+
+5  Security Considerations
+
+   The UPN sent in the UserMappingDataList is unauthenticated data that
+   MUST NOT be treated as a trusted identifier. Authentication of the
+   user represented by that UPN MUST rely solely on validation of the
+   client certificate. One way to do this in the Microsoft environment
+   is to use the UPN to locate and extract a certificate of the claimed
+   user from the trusted directory and subsequently match this
+   certificate against the validated client certificate from the TLS
+   handshake.
+
+   As the client is the initiator of this TLS extension, it needs to
+   determine when it is appropriate to send the User Mapping
+   Information. It may not be prudent to broadcast this information to
+   just any server at any time, as it can reveal network infrastructure
+   the client and server are using.
+
+   To avoid superfluously sending this information, two techniques
+   SHOULD be used to control its dissemination.
+
+      - The client SHOULD only send the UserMappingDataList in the
+        supplemental data message if it is agreed upon in the hello
+        message exchange, preventing the information from being sent
+        to a server that doesn't understand the User Mapping Extension.
+
+      - The client SHOULD further only send this information if the
+        server belongs to a domain to which the client intends to
+        authenticate using the UPN as identifier.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Santesson, et. all                                              [Page 8]
+\f
+INTERNET DRAFT         TLS User Mapping extension             April 2006
+
+
+6 References
+
+   Normative references:
+
+   [N1]      S. Bradner, "Key words for use in RFCs to Indicate
+             Requirement Levels", BCP 14, RFC 2119, March 1997.
+
+   [N2]      T. Dierks, C. Allen, "The TLS Protocol Version 1.0",
+             RFC 2246, January 1999.
+
+   [N3]      T. Dierks, E. Rescorla, "The TLS Protocol Version 1.1",
+             RFC 4346, January 2006.
+
+   [N4]      S. Blake-Wilson, M. Nystrom, D. Hopwood, J. Mikkelsen,
+             T. Wright, "Transport Layer Security (TLS) Extensions",
+             RFC 4366, February 2006.
+
+   [N5]      Mockapetris, P., "Domain Names - Concepts and
+             Facilities", STD 13, RFC 1034, November 1987.
+
+   [N6]      S. Santesson, "TLS Handshake Message for Supplementary
+             Data", RFC TBD (currently: draft-santesson-tls-supp-00,
+             Date 2006.
+
+   [N7]      P. Faltstrom, P. Hoffman, A. Costello, "Internationalizing
+             Domain Names in Applications (IDNA)", RFC 3490, March 2003
+
+   [N8]      T. Narten, H. Alvestrand, "Guidelines for Writing an IANA
+             Considerations Section in RFCs", RFC 2434, October 1998
+
+
+7 IANA Considerations
+
+   IANA needs to take the following actions:
+
+   1) Create an entry, user_mapping(TBD), in the existing registry for
+   ExtensionType (defined in RFC 4366 [N4]).
+
+   2) Create an entry, user_mapping_data(TBD), in the new registry for
+   SupplementalDataType (defined in draft-santesson-tls-supp-00).
+
+   3) Establish a registry for TLS UserMappingType values.  The first
+   entry in the registry is upn_domain_hint(0). TLS UserMappingType
+   values in the inclusive range 0-63 (decimal) are assigned via RFC
+   2434 [N8] Standards Action.  Values from the inclusive range 64-223
+   (decimal) are assigned via RFC 2434 Specification Required.  Values
+   from the inclusive range 224-255 (decimal) are reserved for RFC 2434
+   Private Use.
+
+
+
+Santesson, et. all                                              [Page 9]
+\f
+INTERNET DRAFT         TLS User Mapping extension             April 2006
+
+
+Authors' Addresses
+
+
+   Stefan Santesson
+   Microsoft
+   Finlandsgatan 30
+   164 93 KISTA
+   Sweden
+
+   EMail: stefans(at)microsoft.com
+
+
+   Ari Medvinsky
+   Microsoft
+   One Microsoft Way
+   Redmond, WA 98052-6399
+   USA
+
+   Email: arimed(at)microsoft.com
+
+
+   Joshua Ball
+   Microsoft
+   One Microsoft Way
+   Redmond, WA 98052-6399
+   USA
+
+   Email: joshball(at)microsoft.com
+
+
+
+Acknowledgements
+
+   The authors extend a special thanks to Russ Housley, Eric Resocorla
+   and Paul Leach for their substantial contributions.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Santesson, et. all                                             [Page 10]
+\f
+INTERNET DRAFT         TLS User Mapping extension             April 2006
+
+
+Disclaimer
+
+   This document and the information contained herein are provided on an
+   "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
+   OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
+   ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
+   INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
+   INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
+   WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+
+
+Copyright Statement
+
+   Copyright (C) The Internet Society (2006).
+
+   This document is subject to the rights, licenses and restrictions
+   contained in BCP 78, and except as set forth therein, the authors
+   retain all their rights.
+
+
+Expires October 2006
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Santesson, et. all                                             [Page 11]