Improve GTK-DOC coverage.
[gnutls.git] / doc / protocol / draft-santesson-tls-ume-07.txt
blob79b62409d68cb2dfb702922b3a2a441d53d01e0e
5 INTERNET-DRAFT                                  S. Santesson (Microsoft)
6 Updates: 2246, 4346 (once approved)             A. Medvinsky (Microsoft)
7 Intended Category: Standards track                   J. Ball (Microsoft)
8 Expires November 2006                                           May 2006
11                        TLS User Mapping Extension
12                     <draft-santesson-tls-ume-07.txt>
15 Status of this Memo
17    By submitting this Internet-Draft, each author represents that any
18    applicable patent or other IPR claims of which he or she is aware
19    have been or will be disclosed, and any of which he or she becomes
20    aware will be disclosed, in accordance with Section 6 of BCP 79.
22    Internet-Drafts are working documents of the Internet Engineering
23    Task Force (IETF), its areas, and its working groups.  Note that
24    other groups may also distribute working documents as Internet-
25    Drafts.
27    Internet-Drafts are draft documents valid for a maximum of six months
28    and may be updated, replaced, or obsoleted by other documents at any
29    time.  It is inappropriate to use Internet-Drafts as reference
30    material or to cite them other than a "work in progress."
32    The list of current Internet-Drafts can be accessed at
33    http://www.ietf.org/1id-abstracts.html
35    The list of Internet-Draft Shadow Directories can be accessed at
36    http://www.ietf.org/shadow.html
39 Abstract
41    This document specifies a TLS extension that enables clients to send
42    generic user mapping hints in a supplemental data handshake message
43    defined in RFC TBD. One such mapping hint is defined in an
44    informative section, the UpnDomainHint, which may be used by a server
45    to locate a user in a directory database. Other mapping hints may be
46    defined in other documents in the future.
48    (NOTE TO RFC EDITOR:  Replace "RFC TBD" with the RFC number assigned
49    to draft-santesson-tls-supp-00.txt)
56 Santesson, et. all                                              [Page 1]
58 INTERNET DRAFT         TLS User Mapping extension               May 2006
61 Table of Contents
63    1  Introduction ................................................    2
64    2  User mapping extension ......................................    3
65    3  User mapping handshake exchange .............................    4
66    4  Message flow ................................................    6
67    5  Security Considerations .....................................    8
68    6  UPN domain hint (Informative) ...............................    9
69    7  References ..................................................   10
70    8  IANA Considerations .........................................   10
71    Authors' Addresses .............................................   11
72    Acknowledgements ...............................................   11
73    Disclaimer .....................................................   12
74    Copyright Statement ............................................   12
76 1.  Introduction
78    This document has a normative part and an informative part. Sections
79    2-5 are normative. Section 6 is informative.
81    This specification defines a TLS extension and a payload for the
82    SupplementalData handshake message, defined in RFC TBD [N6], to
83    accommodate mapping of users to their user accounts when using TLS
84    client authentication as the authentication method.
86    The new TLS extension (user_mapping) is sent in the client hello
87    message. Per convention defined in RFC 4366 [N4], the server places
88    the same extension (user_mapping) in the server hello message, to
89    inform the client that the server understands this extension. If the
90    server does not understand the extension, it will respond with a
91    server hello omitting this extension and the client will proceed as
92    normal, ignoring the extension, and not include the
93    UserMappingDataList data in the TLS handshake.
95    If the new extension is understood, the client will inject
96    UserMappingDataList data in the SupplementalData handshake message
97    prior to the Client's Certificate message. The server will then parse
98    this message, extracting the client's domain, and store it in the
99    context for use when mapping the certificate to the user's directory
100    account.
102    No other modifications to the protocol are required. The messages are
103    detailed in the following sections.
106 1.1  Terminology
108    The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
112 Santesson, et. all                                              [Page 2]
114 INTERNET DRAFT         TLS User Mapping extension               May 2006
117    "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
118    document are to be interpreted as described in RFC 2119 [N1].
120    The syntax for the TLS User Mapping extension is defined using the
121    TLS Presentation Language, which is specified in Section 4 of [N2].
123 1.2  Design considerations
125    The reason the mapping data itself is not placed in the extension
126    portion of the client hello is to prevent broadcasting this
127    information to servers that don't understand the extension.
130 2  User mapping extension
132    A new extension type (user_mapping(TBD)) is added to the Extension
133    used in both the client hello and server hello messages. The
134    extension type is specified as follows.
137       enum {
138            user_mapping(TBD), (65535)
139       } ExtensionType;
141    The "extension_data" field of this extension SHALL contain
142    "UserMappingTypeList" with a list of supported hint types where:
144       struct {
145             UserMappingType user_mapping_types<1..2^8-1>
146       } UserMappingTypeList;
148    Enumeration of hint types (user_mapping_types) defined in this
149    document is provided in section 3.
151    The list of user_mapping_types included in a client hello SHALL
152    signal the hint types supported by the client. The list of
153    user_mapping_types included in the server hello SHALL signal the hint
154    types preferred by the server.
156    If none of the hint types listed by the client is supported by the
157    server, the server SHALL omit the user_mapping extension in the
158    server hello.
160    When the user_mapping extension is included in the server hello, the
161    list of hint types in "UserMappingTypeList" SHALL be either equal to,
162    or a subset of, the list provided by the client.
168 Santesson, et. all                                              [Page 3]
170 INTERNET DRAFT         TLS User Mapping extension               May 2006
173 3  User mapping handshake exchange
175    The underlying structure of the SupplementalData handshake message,
176    used to carry information defined in this section, is defined in RFC
177    TBD [N6].
179    A new SupplementalDataType [N6] is defined to accommodate
180    communication of generic user mapping data. See RFC 2246 (TLS 1.0)
181    [N2] and RFC 4346 (TLS 1.1) [N3] for other handshake types.
183    The information in this data type carries one or more unauthenticated
184    hints, UserMappingDataList, inserted by the client side. Upon receipt
185    and successful completion of the TLS handshake, the server MAY use
186    this hint to locate the user's account from which user information
187    and credentials MAY be retrieved to support authentication based on
188    the client certificate.
191       struct {
192             SupplementalDataType supp_data_type;
193             select(SupplementalDataType) {
194                case user_mapping_data: UserMappingDataList;
195                }
196       } SupplementalDataEntry;
198       enum {
199             user_mapping_data(TBD), (65535)
200       } SupplementalDataType;
203    The user_mapping_data(TBD) enumeration results in a new supplemental
204    data type UserMappingDataList with the following structure:
207       enum {
208             (255)
209       } UserMappingType;
211       struct {
212              UserMappingType user_mapping_version
213              select(UserMappingType) { }
214       } UserMappingData;
216       struct{
217          UserMappingData user_mapping_data_list<1..2^16-1>;
218       }UserMappingDataList;
224 Santesson, et. all                                              [Page 4]
226 INTERNET DRAFT         TLS User Mapping extension               May 2006
229    The UserMappingData structure contains a single mapping of type
230    UserMappingType.  This structure can be leveraged to define new types
231    of user mapping hints in the future.  The UserMappingDataList MAY
232    carry multiple hints; it is defined as a vector of UserMappingData
233    structures.
235    No preference is given to the order in which hints are specified in
236    this vector.  If the client sends more then one hint then the Server
237    SHOULD use the applicable mapping supported by the server.
239    Implementations MAY support the UPN domain hint as specified in
240    section 6 of this document.  Implementations MAY also support other
241    user mapping types as they are defined.  Definitions of standards-
242    track user mapping types must include a discussion of
243    internationalization considerations.
280 Santesson, et. all                                              [Page 5]
282 INTERNET DRAFT         TLS User Mapping extension               May 2006
285 4  Message flow
287    In order to negotiate to send user mapping data to a server in
288    accordance with this specification, clients MUST include an extension
289    of type "user_mapping" in the (extended) client hello, which SHALL
290    contain a list of supported hint types.
292    Servers that receive an extended client hello containing a
293    "user_mapping" extension, MAY indicate that they are willing to
294    accept user mapping data by including an extension of type
295    "user_mapping" in the (extended) server hello, which SHALL contain a
296    list of preferred hint types.
298    After negotiation of the use of user mapping has been successfully
299    completed (by exchanging hello messages including "user_mapping"
300    extensions), clients MAY send a "SupplementalData" message containing
301    the "UserMappingDataList" before the "Certificate" message. The
302    message flow is illustrated in Fig. 1 below.
304       Client                                               Server
306       ClientHello
307        /* with user_mapping ext */ -------->
309                                                       ServerHello
310                                       /* with user-mapping ext */
311                                                      Certificate*
312                                                ServerKeyExchange*
313                                               CertificateRequest*
314                                    <--------      ServerHelloDone
316       SupplementalData
317        /* with UserMappingDataList */
318       Certificate*
319       ClientKeyExchange
320       CertificateVerify*
321       [ChangeCipherSpec]
322       Finished                     -------->
323                                                [ChangeCipherSpec]
324                                    <--------             Finished
325       Application Data             <------->     Application Data
327              Fig. 1 - Message flow with user mapping data
329    * Indicates optional or situation-dependent messages that are not
330    always sent according to RFC 2246 [N2] and RFC 4346 [N3].
332    The server MUST expect and gracefully handle the case where the
336 Santesson, et. all                                              [Page 6]
338 INTERNET DRAFT         TLS User Mapping extension               May 2006
341    client chooses to not send any supplementalData handshake message
342    even after successful negotiation of extensions. The client MAY at
343    its own discretion decide that the user mapping hint it initially
344    intended to send no longer is relevant for this session. One such
345    reason could be that the server certificate fails to meet certain
346    requirements.
392 Santesson, et. all                                              [Page 7]
394 INTERNET DRAFT         TLS User Mapping extension               May 2006
397 5  Security Considerations
399    The user mapping hint sent in the UserMappingDataList is
400    unauthenticated data that MUST NOT be treated as a trusted
401    identifier. Authentication of the user represented by that user
402    mapping hint MUST rely solely on validation of the client
403    certificate. One way to do this is to use the user mapping hint to
404    locate and extract a certificate of the claimed user from the trusted
405    directory and subsequently match this certificate against the
406    validated client certificate from the TLS handshake.
408    As the client is the initiator of this TLS extension, it needs to
409    determine when it is appropriate to send the User Mapping
410    Information. It may not be prudent to broadcast a user mapping hint
411    to just any server at any time.
413    To avoid superfluously sending user mapping hints, clients SHOULD
414    only send this information if it recognizes the server as a
415    legitimate recipient. Recognition of the server can be done in many
416    ways. One way to do this could be to recognize the name and address
417    of the server.
419    In some cases, the user mapping hint may itself be regarded as
420    sensitive. In such case the double handshake technique described in
421    [N6] can be used to provide protection for the user mapping hint
422    information.
448 Santesson, et. all                                              [Page 8]
450 INTERNET DRAFT         TLS User Mapping extension               May 2006
453 6  UPN domain hint (Informative)
455    This specification provides informative description of one user
456    mapping hint type for Domain Name hints and User Principal Name
457    hints. Other hint types may be defined in other documents in the
458    future.
460    The User Principal Name (UPN) in this hint type represents a name
461    which specifies a user's entry in a directory in the form
462    userName@domainName. Traditionally Microsoft has relied on such name
463    form to be present in the client certificate when logging on to a
464    domain account. This has however several drawbacks since it prevents
465    the use of certificates with an absent UPN and also requires re-
466    issuance of certificates or issuance of multiple certificates to
467    reflect account changes or creation of new accounts. The TLS
468    extension in combination with the defined hint type provide a
469    significant improvement to this situation as it allows a single
470    certificate to be mapped to one or more accounts of the user and does
471    not require the certificate to contain a UPN.
473    The domain_name field MAY be used when only domain information is
474    needed, e.g. where a user have accounts in multiple domains using the
475    same username name, where that user name is known from another source
476    (e.g. from the client certificate). When the user name is also
477    needed, the user_principal_name field MAY be used to indicate both
478    username and domain name. If both fields are present, then the server
479    can make use of whichever one it chooses.
482       enum {
483              upn_domain_hint(64), (255)
484       } UserMappingType;
486       struct {
487              opaque user_principal_name<0..2^16-1>;
488              opaque domain_name<0..2^16-1>;
489       } UpnDomainHint;
491       struct {
492              UserMappingType user_mapping_version
493              select(UserMappingType) {
494                    case upn_domain_hint:
495                         UpnDomainHint;
496              }
497       } UserMappingData;
504 Santesson, et. all                                              [Page 9]
506 INTERNET DRAFT         TLS User Mapping extension               May 2006
509    The user_principal_name field, when specified, SHALL be of the form
510    "user@domain", where "user" is a UTF-8 encoded Unicode string that
511    does not contain the "@" character, and "domain" is a domain name
512    meeting the requirements in the following paragraph.
514    The domain_name field, when specified, SHALL contain a domain name in
515    the usual text form: in other words, a sequence of one or more domain
516    labels separated by ".", each domain label starting and ending with
517    an alphanumeric character and possibly also containing "-"
518    characters.  This field is an "IDN-unaware domain name slot" as
519    defined in RFC 3490 [N7] and therefore, domain names containing non-
520    ASCII characters have to be processed as described in RFC 3490 before
521    being stored in this field.
523    The UpnDomainHint MUST at least contain a non empty
524    user_principal_name or a non empty domain_name. The UpnDomainHint MAY
525    contain both user_principal_name and domain_name.
560 Santesson, et. all                                             [Page 10]
562 INTERNET DRAFT         TLS User Mapping extension               May 2006
565 6 References
567    Normative references:
569    [N1]      S. Bradner, "Key words for use in RFCs to Indicate
570              Requirement Levels", BCP 14, RFC 2119, March 1997.
572    [N2]      T. Dierks, C. Allen, "The TLS Protocol Version 1.0",
573              RFC 2246, January 1999.
575    [N3]      T. Dierks, E. Rescorla, "The TLS Protocol Version 1.1",
576              RFC 4346, January 2006.
578    [N4]      S. Blake-Wilson, M. Nystrom, D. Hopwood, J. Mikkelsen,
579              T. Wright, "Transport Layer Security (TLS) Extensions",
580              RFC 4366, February 2006.
582    [N5]      Mockapetris, P., "Domain Names - Concepts and
583              Facilities", STD 13, RFC 1034, November 1987.
585    [N6]      S. Santesson, "TLS Handshake Message for Supplementary
586              Data", RFC TBD (currently: draft-santesson-tls-supp-02,
587              Date 2006.
589    [N7]      P. Faltstrom, P. Hoffman, A. Costello, "Internationalizing
590              Domain Names in Applications (IDNA)", RFC 3490, March 2003
592    [N8]      T. Narten, H. Alvestrand, "Guidelines for Writing an IANA
593              Considerations Section in RFCs", RFC 2434, October 1998
596 7 IANA Considerations
598    IANA needs to take the following actions:
600    1) Create an entry, user_mapping(TBD), in the existing registry for
601    ExtensionType (defined in RFC 4366 [N4]).
603    2) Create an entry, user_mapping_data(TBD), in the new registry for
604    SupplementalDataType (defined in draft-santesson-tls-supp-02).
606    3) Establish a registry for TLS UserMappingType values.  The first
607    entry in the registry is upn_domain_hint(64). TLS UserMappingType
608    values in the inclusive range 0-63 (decimal) are assigned via RFC
609    2434 [N8] Standards Action.  Values from the inclusive range 64-223
610    (decimal) are assigned via RFC 2434 Specification Required.  Values
611    from the inclusive range 224-255 (decimal) are reserved for RFC 2434
612    Private Use.
616 Santesson, et. all                                             [Page 11]
618 INTERNET DRAFT         TLS User Mapping extension               May 2006
621 Authors' Addresses
624    Stefan Santesson
625    Microsoft
626    Finlandsgatan 30
627    164 93 KISTA
628    Sweden
630    EMail: stefans(at)microsoft.com
633    Ari Medvinsky
634    Microsoft
635    One Microsoft Way
636    Redmond, WA 98052-6399
637    USA
639    Email: arimed(at)microsoft.com
642    Joshua Ball
643    Microsoft
644    One Microsoft Way
645    Redmond, WA 98052-6399
646    USA
648    Email: joshball(at)microsoft.com
652 Acknowledgements
654    The authors extend a special thanks to Russ Housley, Eric Resocorla
655    and Paul Leach for their substantial contributions.
672 Santesson, et. all                                             [Page 12]
674 INTERNET DRAFT         TLS User Mapping extension               May 2006
677 Disclaimer
679    This document and the information contained herein are provided on an
680    "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
681    OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
682    ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
683    INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
684    INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
685    WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
688 Copyright Statement
690    Copyright (C) The Internet Society (2006).
692    This document is subject to the rights, licenses and restrictions
693    contained in BCP 78, and except as set forth therein, the authors
694    retain all their rights.
697 Expires November 2006
728 Santesson, et. all                                             [Page 13]