add an invalid protection level to the enum
[heimdal.git] / doc / standardisation / draft-hartman-gss-naming-01.txt
blob544eba2845fe9122bc2ca0c7225dc6131c061bda
4 Network Working Group                                         S. Hartman
5 Internet-Draft                                                       MIT
6 Expires: April 24, 2005                                 October 24, 2004
9            GSSAPI Mechanisms without a Single Canonical Name
10                     draft-hartman-gss-naming-01.txt
12 Status of this Memo
14    This document is an Internet-Draft and is subject to all provisions
15    of section 3 of RFC 3667.  By submitting this Internet-Draft, each
16    author represents that any applicable patent or other IPR claims of
17    which he or she is aware have been or will be disclosed, and any of
18    which he or she become aware will be disclosed, in accordance with
19    RFC 3668.
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
24    Internet-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    This Internet-Draft will expire on April 24, 2005.
39 Copyright Notice
41    Copyright (C) The Internet Society (2004).
43 Abstract
45    The Generic Security Services API (GSSAPI) provides a naming
46    architecture that supports  name-based authorization.  GSSAPI
47    authenticates two named parties to each other.  Names can be stored
48    on access control lists to make authorization decisions.  Advances in
49    security mechanisms and the way implementers wish to use GSSAPI
50    require this model to be extended.  Some mechanisms such as
51    public-key mechanisms do not have a single name to be used.  Other
52    mechanisms such as Kerberos allow names to change as people move
56 Hartman                  Expires April 24, 2005                 [Page 1]
58 Internet-Draft            GSS Name Attributes               October 2004
61    around organizations.  This document proposes expanding the
62    definition of GSSAPI names to deal with these situations.
112 Hartman                  Expires April 24, 2005                 [Page 2]
114 Internet-Draft            GSS Name Attributes               October 2004
117 1.  Introduction
119    The Generic  Security Services API [1] provides a function called
120    gss_export_name that will flatten a GSSAPI name  into a binary blob
121    suitable for comparisons.  This binary blob can be stored on ACLs and
122    then authorization decisions can be made simply by comparing the name
123    exported from a newly accepted context to the name on the ACL.
125    As a side effect of this model, each mechanism name needs to be able
126    to be represented in a single canonical form and anyone importing
127    that name needs to be able to retrieve the canonical form.
129    Several security mechanisms have been proposed for which this naming
130    architecture is too restrictive.  In some cases it is not always
131    possible to canonicalize any name that is imported.  In other cases
132    there is no single canonical name.  In addition, there is a desire to
133    have more complex authorization models  in GSSAPI than the current
134    name based authorization model.
136    This draft discusses two different cases where the current GSSAPI
137    naming seems inadequate.  Two proposals that have been discussed
138    within the IETF Kitten community are discussed.  Finally, the
139    problems that need to be resolved to adopt either of these proposals
140    are discussed.
168 Hartman                  Expires April 24, 2005                 [Page 3]
170 Internet-Draft            GSS Name Attributes               October 2004
173 2.  Kerberos Naming
175    The Kerberos Referrals draft [2] proposes a new type of Kerberos name
176    called an enterprise name.  The intent is that the enterprise name is
177    an alias that the user knows for themselves and can use to login.
178    The Kerberos KDC translates this name into a normal Kerberos
179    principal and gives the user tickets for this principal.  This normal
180    principal is used for authorization.  The intent is that the
181    enterprise name tracks the user as they move throughout the
182    organization, even if they move to parts of the organization that
183    have different naming policies.  The name they type at login remains
184    constant, but the Kerberos principal used to authenticate them to
185    services changes.
187    Performing a mapping from enterprise  name to principal name is not
188    generally possible for unauthenticated services.  So in order to
189    canonicalize an enterprise name to get a principal, a service must
190    have credentials.  However it may not be desirable to allow services
191    to map enterprise names to principal names in the general case.
192    Also, Kerberos does not (and does not plan to) provide a mechanism
193    for mapping enterprise names to principals besides authentication as
194    the enterprise name.  So any such mapping would be vendor-specific.
195    With this feature in Kerberos, it is not possible to implement
196    gss_canonicalize_name for enterprise name types.
198    Another issue arises with enterprise names.  IN some cases it would
199    be desirable to put   the enterprise name on the ACL instead of a
200    principal name.  Thus, it would be desirable to include the
201    enterprise name in the name exported by gss_export_name.  However
202    then the exported name would change whenever the mapping changed,
203    defeating the purpose  of including the enterprise name.  So in some
204    cases it would be desirable to have the exported name be based on the
205    enterprise name and in others based on the principal name, but this
206    is not currently possible.
208    Another development also complicates GSSAPI naming for Kerberos.
209    Several vendors have been looking at mechanisms to include group
210    membership information in Kerberos authorization data.  It is
211    desirable to put these group names on ACLs.  Again, GSSAPI currently
212    has no mechanism to use this information.
224 Hartman                  Expires April 24, 2005                 [Page 4]
226 Internet-Draft            GSS Name Attributes               October 2004
229 3.  X.509 Names
231    X.509 names are at least as complex as Kerberos names.  It seems like
232    you might want to use the subject name as the name to be exported in
233    a GSSAPI mechanism.  However RFC 3280 [3] does not even require the
234    subject name to be a non-empty sequence.  Instead there are cases
235    where the subjectAltName extension is the only thing to identify the
236    subject of the certificate.  As in the case of Kerberos group
237    memberships, there may be many subjectAltName extensions available in
238    a certificate.  Different applications will care about different
239    extensions.  Thus there is no single value that can be  defined as
240    the exported GSSAPI name that will be generally useful.
242    A profile of a particular X.509  GSSAPI mechanism could require a
243    specific name be used.  However this would limit that mechanism to
244    require a particular type of certificate.  There is interest in being
245    able to use arbitrary X.509 certificates with GSSAPI for some
246    applications.
280 Hartman                  Expires April 24, 2005                 [Page 5]
282 Internet-Draft            GSS Name Attributes               October 2004
285 4.  Composite Names
287    One proposal to solve these problems is to extend the concept of a
288    GSSAPI name to include a set of name attributes.  Each attribute
289    would be an octet-string labeled by an OID.  Examples of attributes
290    would include Kerberos enterprise names, group memberships in an
291    authorization infrastructure, Kerberos authorization data attributes
292    and subjectAltName attributes in a certificate.  Several new
293    operations would be needed:
294    1.  Add attribute to name
295    2.  Query attributes of name
296    3.  Query values of an attribute
297    4.  Delete an attribute from a name
299 4.1  Usage of Name Attributes
301    Since attributes are part of GSSAPI names, the acceptor can retrieve
302    the attributes of the initiator's name from the context.  These
303    attributes can then be used for authorization.
305    Most name attributes will probably not come from explicit operations
306    to add attributes to a name.  Instead, name attributes will probably
307    come from mechanism specific credentials.  Mechanism specific naming
308    and group membership can be  mapped into name attributes by the
309    mechanism implementation.  The specific form of this mapping will
310    general require protocol specification for each mechanism.
312 4.2  Open issues
314    This section describes parts of the proposal to add attributes to
315    names that will need to be explored before the proposal can become a
316    protocol specification.
318    Are mechanisms expected to be able to carry arbitrary name attributes
319    as part of a context establishment?   At first it seems like this
320    would be desirable.  However the point of GSSAPI is to establish an
321    authenticated context between two peers.  In particular, a context
322    authenticates two named entities to each other.  The names of these
323    entities and attributes associated with these names will be used for
324    authorization decisions.  If an initiator or acceptor is allowed to
325    assert name attributes and the authenticity of these assertions is
326    not validated by the mechanisms, then security problems may result.
327    On the other hand, requiring that name attributes be mechanism
328    specific and only be carried by mechanisms that understand the name
329    attributes and can validate them compromises GSSAPI's place as a
330    generic API.  Application authors would be forced to understand
331    mechanism-specific attributes to make authorization decisions.  In
332    addition if mechanisms are not required to transport arbitrary
336 Hartman                  Expires April 24, 2005                 [Page 6]
338 Internet-Draft            GSS Name Attributes               October 2004
341    attributes, then application authors will need to deal with different
342    implementations of the same mechanism that support different sets of
343    name attributes.  One possible solution is to carry a source along
344    with each name attribute; this source could indicate whether the
345    attribute comes from a mechanism data structure or from the other
346    party in the authentication.
348    Another related question is how will name attributes be mapped into
349    their mechanism-specific forms.  For example it would be desirable to
350    map many  Kerberos authorization data elements into name attributes.
351    In the case of the Microsoft PAC, it would be desirable for some
352    applications to get the entire PAC.  However in many cases, the
353    specific lists of security IDs contained in the PAC would be more
354    directly useful to an application.  So there may not be a good
355    one-to-one mapping between the mechanism-specific elements and the
356    representation desirable at the GSSAPI layer.
358    Specific name matching rules need to be developed.  How do names with
359    attributes compare?  What is the effect of a name attribute on a
360    target name in gss_accept_sec_context?
362 4.3  Handling gss_export_name
364    For many mechanisms, there will be  an obvious choice to use for the
365    name exported by gss_export_name.  For example in the case of
366    Kerberos, the principal name can continue to be used as the exported
367    name.  This will allow applications depending on existing GSSAPI
368    name-based authorization to continue to work.  However it is probably
369    desirable to allow GSSAPI mechanisms for which gss_export_name cannot
370    meaningfully be defined.  The behavior of gss_export_name in such
371    cases should probably be to return some error.  Such mechanisms may
372    not work with existing applications and cannot conform to the current
373    version of the GSSAPI.
392 Hartman                  Expires April 24, 2005                 [Page 7]
394 Internet-Draft            GSS Name Attributes               October 2004
397 5.  Credential Extensions
399    An alternative to the name attributes proposal  is to extend GSSAPI
400    credentials  with extensions labeled by OIDs.  Interfaces would be
401    needed to manipulate these credential extensions and to retrieve the
402    credential extensions for credentials used to establish a context.
403    Even if name attributes are used, credential extensions may be useful
404    for other unrelated purposes.
406    It is possible to solve problems discussed in this document using
407    some credential extension mechanism.  Doing so will have many of the
408    same open issues as discussed in the  name attributes proposal.  The
409    main advantage of a credential extensions proposal is that  it avoids
410    specifying how name attributes interact with name comparison or
411    target names.
413    The primary advantage of the name attributes proposal over credential
414    extensions is that name attributes seem to fit better into the GSSAPI
415    authorization model.  Names are already available at all points when
416    authorization decisions are made.  In addition, for many mechanisms
417    the sort of information carried as name attributes will also be
418    carried as part of the name in the mechanism
448 Hartman                  Expires April 24, 2005                 [Page 8]
450 Internet-Draft            GSS Name Attributes               October 2004
453 6.  Mechanisms for Export Name
455    Another proposal is to define some GSSAPI mechanisms whose only
456    purpose is to have an exportable name form that is useful.  For
457    example, you might be able to export a name as a local machine user
458    ID with such a mechanism.
460    This solution works well especially for name information that can be
461    looked up in a directory.  It was unclear from the discussion whether
462    this solution would allow mechanism-specific name information to be
463    extracted from a context.  If so, then this solution would meet many
464    of the goals of this document.
466    One advantage of this solution is that it requires few if any changes
467    to GSSAPI semantics.  It is not as flexible as other solutions.
468    Also, it is not clear how to handle mechanisms that do not have a
469    well defined name to export with this solution.
504 Hartman                  Expires April 24, 2005                 [Page 9]
506 Internet-Draft            GSS Name Attributes               October 2004
509 7.  Security Considerations
511    GSSAPI sets up a security context between two named parties.  The
512    GSSAPI names are security assertions that are authenticated by the
513    context establishment process.  As such  the GSS naming architecture
514    is critical to the security of GSSAPI.
516    Currently GSSAPI uses a simplistic naming model for authorization.
517    Names can be compared  against a set of names on an access control
518    list.  This architecture is relatively simple and its security
519    properties are well understood.  However it does not provide the
520    flexibility and feature set for future deployments of GSSAPI.
522    This proposal will significantly increase the complexity of the GSS
523    naming architecture.  As this proposal is fleshed out, we need to
524    consider ways of managing security exposures created by this
525    increased complexity.
560 Hartman                  Expires April 24, 2005                [Page 10]
562 Internet-Draft            GSS Name Attributes               October 2004
565 8.  Acknowledgements
567    John Brezak, Paul Leach and Nicolas Williams all participated in
568    discussions that defined the problem this proposal attempts to solve.
569    Nicolas Williams and I discussed details of proposals to solve this
570    problem.  However the details and open issues presented here have
571    only been reviewed by me and so I am responsible for their errors.
573 9  Informative References
575    [1]  Linn, J., "Generic Security Service Application Program
576         Interface Version 2, Update 1", RFC 2743, January 2000.
578    [2]  Jaganathan , K., Zhu, L., Swift, M. and J. Brezak, "Generating
579         KDC Referrals to locate Kerberos realms",
580         draft-ietf-krb-wg-kerberos-referrals-03.txt (work in progress),
581         2004.
583    [3]  Housley, R., Polk, W., Ford, W. and D. Solo, "Internet X.509
584         Public Key Infrastructure Certificate and Certificate Revocation
585         List (CRL) Profile", rfc 3280, April 2002.
588 Author's Address
590    Sam Hartman
591    MIT
593    EMail: hartmans@mit.edu
616 Hartman                  Expires April 24, 2005                [Page 11]
618 Internet-Draft            GSS Name Attributes               October 2004
621 Intellectual Property Statement
623    The IETF takes no position regarding the validity or scope of any
624    Intellectual Property Rights or other rights that might be claimed to
625    pertain to the implementation or use of the technology described in
626    this document or the extent to which any license under such rights
627    might or might not be available; nor does it represent that it has
628    made any independent effort to identify any such rights.  Information
629    on the procedures with respect to rights in RFC documents can be
630    found in BCP 78 and BCP 79.
632    Copies of IPR disclosures made to the IETF Secretariat and any
633    assurances of licenses to be made available, or the result of an
634    attempt made to obtain a general license or permission for the use of
635    such proprietary rights by implementers or users of this
636    specification can be obtained from the IETF on-line IPR repository at
637    http://www.ietf.org/ipr.
639    The IETF invites any interested party to bring to its attention any
640    copyrights, patents or patent applications, or other proprietary
641    rights that may cover technology that may be required to implement
642    this standard.  Please address the information to the IETF at
643    ietf-ipr@ietf.org.
646 Disclaimer of Validity
648    This document and the information contained herein are provided on an
649    "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
650    OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
651    ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
652    INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
653    INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
654    WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
657 Copyright Statement
659    Copyright (C) The Internet Society (2004).  This document is subject
660    to the rights, licenses and restrictions contained in BCP 78, and
661    except as set forth therein, the authors retain all their rights.
664 Acknowledgment
666    Funding for the RFC Editor function is currently provided by the
667    Internet Society.
672 Hartman                  Expires April 24, 2005                [Page 12]