HEIMDAL: move code from source4/heimdal* to third_party/heimdal*
[samba.git] / source4 / heimdal / doc / standardisation / draft-ietf-kitten-gss-naming-02.txt
diff --git a/source4/heimdal/doc/standardisation/draft-ietf-kitten-gss-naming-02.txt b/source4/heimdal/doc/standardisation/draft-ietf-kitten-gss-naming-02.txt
deleted file mode 100644 (file)
index b5d0447..0000000
+++ /dev/null
@@ -1,842 +0,0 @@
-
-
-
-
-Network Working Group                                         S. Hartman
-Internet-Draft                                                       MIT
-Expires: December 4, 2005                                   June 2, 2005
-
-
-                 Desired Enhancements to GSSAPI Naming
-                  draft-ietf-kitten-gss-naming-02.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.
-
-   This Internet-Draft will expire on December 4, 2005.
-
-Copyright Notice
-
-   Copyright (C) The Internet Society (2005).
-
-Abstract
-
-   The Generic Security Services API (GSS-API) provides a naming
-   architecture that supports  name-based authorization.  GSS-API
-   authenticates two named parties to each other.  Names can be stored
-   on access control lists to make authorization decisions.  Advances in
-   security mechanisms and the way implementers wish to use GSS-API
-   require this model to be extended.  As people move within an
-   organization or change their names, the name authenticated by GSS-API
-   may change.  Using some sort of constant identifier would make ACLs
-   more stable.  Some mechanisms such as public-key mechanisms do not
-
-
-
-Hartman                 Expires December 4, 2005                [Page 1]
-\f
-Internet-Draft                  GSS Names                      June 2005
-
-
-   have a single name to be used across all environments.  Other
-   mechanisms such as Kerberos include may include group membership or
-   role information as part of authentication.  This document motivates
-   extensions to GSS-API naming and describes the extensions under
-   discussion.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Hartman                 Expires December 4, 2005                [Page 2]
-\f
-Internet-Draft                  GSS Names                      June 2005
-
-
-1.  Introduction
-
-   The Generic Security Services API [2] authenticates two named parties
-   to each other.  GSS names can be imported in a variety of formats
-   through the gss_import_name call.  Several mechanism-independent name
-   formats are provided including GSS_C_NT_HOSTBASED_SERVICE for
-   services running on an Internet host and GSS_C_NT_USER_NAME for the
-   names of users.  Other mechanism-specific name types are also
-   provided.  By the time a name is used in acquiring a mechanism-
-   specific credential or establishing a security context, it has been
-   transformed into one of these mechanism-specific name types.  In
-   addition, the GSS-API provides a function called gss_export_name that
-   will flatten a GSS-API name into a binary blob suitable for
-   comparisons.  This binary blob can be stored on ACLs and then
-   authorization decisions can be made simply by comparing the name
-   exported from a newly accepted context to the name on the ACL.
-
-   Storing names on ACLs can be problematic because names tend to change
-   over time .  If the name contains organizational information such as
-   a domain part or an indication of what department someone works for,
-   this changes as the person moves around the organization.  Even if no
-   organizational information is included in the name, the name will
-   change as people change their names.  Updating ACLs to reflect name
-   changes is difficult.  Another significant problem is that names can
-   be reused to apply to another entity than the entity to which they
-   originally applied.  For example if a Unix user ID is placed on an
-   ACL, the account deleted and then a new user assigned the old ID,
-   then that new user may gain privileges intended for the old user.
-
-   Inherent in the GSS naming  model is the idea that  mechanism names
-   need to be able to be represented in a single canonical form.  Anyone
-   importing that name needs to be able to retrieve the canonical form
-   of that name.
-
-   Several security mechanisms have been proposed for which this naming
-   architecture is too restrictive.  In some cases it is not always
-   possible to canonicalize any name that is imported.  In other cases
-   there is no single canonical name.
-
-   Also, as GSS-API is used in more complex environments, there is a
-   desire to use attribute certificates [6], Kerberos authorization data
-   [3], or other non-name-based authorization models.  GSS-API needs to
-   be enhanced in order to support these uses in a mechanism-independent
-   manner.
-
-   This document discusses the particular naming problems with two
-   important classes of GSS-API mechanisms.  It also discusses the set
-   of proposed solutions and open issues with these solutions.  This
-
-
-
-Hartman                 Expires December 4, 2005                [Page 3]
-\f
-Internet-Draft                  GSS Names                      June 2005
-
-
-   draft limits discussion to these solutions and provides a description
-   of the problem against which the solutions can be judged.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Hartman                 Expires December 4, 2005                [Page 4]
-\f
-Internet-Draft                  GSS Names                      June 2005
-
-
-2.  Kerberos Naming
-
-   The Kerberos mechanism demonstrates both the naming stability problem
-   and the authorization extension problem.
-
-   The Kerberos Referrals draft [4] proposes a new type of Kerberos name
-   called an enterprise name.  The intent is that the enterprise name is
-   an alias that the user knows for themselves and can use to login.
-   The Kerberos KDC translates this name into a normal Kerberos
-   principal and gives the user tickets for this principal.  This normal
-   principal is used for authorization.  The intent is that the
-   enterprise name tracks the user as they move throughout the
-   organization, even if they move to parts of the organization that
-   have different naming policies.  The name they type at login remains
-   constant, but the Kerberos principal used to authenticate them to
-   services changes.
-
-   Performing a mapping from enterprise  name to principal name is not
-   generally possible for unauthenticated services.  Even authenticated
-   services may not be authorized to perform this mapping except for
-   their own name.  Also, Kerberos does not (and does not plan to)
-   provide a mechanism for mapping enterprise names to principals
-   besides authentication as the enterprise name.  Thus, any such
-   mapping would be vendor-specific.  With this feature in Kerberos, it
-   is not possible to implement gss_canonicalize_name for enterprise
-   name types.
-
-   Another issue arises with enterprise names.  IN some cases it would
-   be desirable to put   the enterprise name on the ACL instead of a
-   principal name for greater ACL stability.  At first glance this could
-   be accomplished by including the enterprise name in the name exported
-   by gss_export_name.  Unfortunately, if this were done, the exported
-   name would change whenever the mapping changed, invalidating any ACL
-   entries based off the old exported name and defeating the purpose  of
-   including the enterprise name in the exported name.  In some cases it
-   would be desirable to have the exported name be based on the
-   enterprise name and in others based on the principal name, but this
-   is not permitted by the current GSS-API.
-
-   Another development also complicates GSS-API naming for Kerberos.
-   Several vendors have been looking at mechanisms to include group
-   membership information in Kerberos authorization data.  It is
-   desirable to put these group names on ACLs.  Again, GSS-API currently
-   has no mechanism to use this information.
-
-
-
-
-
-
-
-Hartman                 Expires December 4, 2005                [Page 5]
-\f
-Internet-Draft                  GSS Names                      June 2005
-
-
-3.  X.509 Names
-
-   X.509 names are more complicated than Kerberos names.  In the
-   Kerberos case there is a single principal carried in all Kerberos
-   messages.  X.509 certificates have multiple options.  It seems  the
-   subject name might be the appropriate name to use as the name to be
-   exported in a GSS-API mechanism.  However RFC 3280 [5] does not even
-   require the subject name to be a non-empty sequence.  Instead there
-   are cases where the subjectAltName extension is the only thing to
-   identify the subject of the certificate.  As in the case of Kerberos
-   group memberships, there may be many subjectAltName extensions
-   available in a certificate.  Different applications will care about
-   different extensions.  One possible candidate for an exported name
-   would be all the names and SubjectAltName extensions from a
-   certificate.  However as new names are added then existing ACL
-   entries would be invalidated; this is undesirable.  Thus there is no
-   single value that can be  defined as the exported GSS-API name that
-   will be useful in all environments.
-
-   A profile of a particular X.509  GSS-API mechanism could require a
-   specific name be used.  However this would limit that mechanism to
-   require a particular type of certificate.  There is interest in being
-   able to use arbitrary X.509 certificates with GSS-API for some
-   applications.
-
-   Experience so far has not lead to sufficient interoperability with
-   GSS-API X.509 mechanisms.  Even if the subject name is used, there is
-   ambiguity in how to handle sorting of name components.  Martin Rex
-   said that he was aware of several SPKM [1] implementations but no two
-   were fully interoperable on names.
-
-   Also, as discussed in the introduction, it is desirable to support
-   X.509 attribute certificates.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Hartman                 Expires December 4, 2005                [Page 6]
-\f
-Internet-Draft                  GSS Names                      June 2005
-
-
-4.  Composite Names
-
-   One proposal to solve these problems is to extend the concept of a
-   GSS-API name to include a set of name attributes.  Each attribute
-   would be an octet-string labeled by an OID.  Examples of attributes
-   would include Kerberos enterprise names, group memberships in an
-   authorization infrastructure, Kerberos authorization data attributes
-   and subjectAltName attributes in a certificate.  Several new
-   operations would be needed:
-
-   1.  Add an  attribute to name.
-
-   2.  Query attributes of name.
-
-   3.  Query values of an attribute.
-
-   4.  Delete an attribute from a name.
-
-   5.  Export a complete composite name and all its attributes for
-       transport between processes.
-
-   Note that an exported composite name would not generally be suitable
-   for binary comparison.  Avoiding confusion between this operation and
-   the existing gss_export_name operation will require careful work.
-
-   Additional utility operations will probably be needed depending on
-   the implementation of name attributes.
-
-4.1  Usage of Name Attributes
-
-   Since attributes are part of GSS-API names, the acceptor can retrieve
-   the attributes of the initiator's and acceptor's name from the
-   context.  These attributes can then be used for authorization.
-
-   Most name attributes will probably not come from explicit operations
-   to add attributes to a name.  Instead, name attributes will probably
-   come from mechanism specific credentials.  Components of these
-   mechanism specific credentials may come from platform or environment-
-   specific names.  Mechanism specific naming and group membership can
-   be  mapped into name attributes by the mechanism implementation.  The
-   specific form of this mapping will generally require protocol
-   specification for each mechanism.
-
-   The value of many  name attributes may be suitable for use in binary
-   comparison.  This should enable applications to use these name
-   attributes on ACLs the same way exported names are now used on ACLs.
-   For example if a particular Subjectaltname extension contains the
-   appropriate  identity for an application, then  the name attribute
-
-
-
-Hartman                 Expires December 4, 2005                [Page 7]
-\f
-Internet-Draft                  GSS Names                      June 2005
-
-
-   for this Subjectaltname can be placed on the ACL.  This is only true
-   if the name attribute is stored in some canonical form.
-
-4.2  Open issues
-
-   This section describes parts of the proposal to add attributes to
-   names that will need to be explored before the proposal can become a
-   protocol specification.
-
-   Are mechanisms expected to be able to carry arbitrary name attributes
-   as part of a context establishment?  At first it seems like this
-   would be desirable.  However the purpose of GSS-API is to establish
-   an authenticated context between two peers.  In particular, a context
-   authenticates two named entities to each other.  The names of these
-   entities and attributes associated with these names will be used for
-   authorization decisions.  If an initiator or acceptor is allowed to
-   assert name attributes and the authenticity of these assertions is
-   not validated by the mechanisms, then security problems will result.
-   On the other hand, requiring that name attributes be mechanism
-   specific and only be carried by mechanisms that understand the name
-   attributes and can validate them compromises GSS-API's place as a
-   generic API.  Application authors would be forced to understand
-   mechanism-specific attributes to make authorization decisions.  In
-   addition if mechanisms are not required to transport arbitrary
-   attributes, then application authors will need to deal with different
-   implementations of the same mechanism that support different sets of
-   name attributes.  One possible solution is to carry a source along
-   with each name attribute; this source could indicate whether the
-   attribute comes from a mechanism data structure or from the other
-   party in the authentication.
-
-   Another related question is how will name attributes be mapped into
-   their mechanism-specific forms.  For example it would be desirable to
-   map many  Kerberos authorization data elements into name attributes.
-   In the case of the Microsoft PAC, it would be desirable for some
-   applications to get the entire PAC.  However in many cases, the
-   specific lists of security IDs contained in the PAC would be more
-   directly useful to an application.  So there may not be a good one-
-   to-one mapping between the mechanism-specific elements and the
-   representation desirable at the GSS-API layer.
-
-   Specific name matching rules need to be developed.  How do names with
-   attributes compare?  What is the effect of a name attribute on a
-   target name in gss_accept_sec_context?
-
-4.3  Handling gss_export_name
-
-   For many mechanisms, there will be  an obvious choice to use for the
-
-
-
-Hartman                 Expires December 4, 2005                [Page 8]
-\f
-Internet-Draft                  GSS Names                      June 2005
-
-
-   name exported by gss_export_name.  For example in the case of
-   Kerberos, the principal name can continue to be used as the exported
-   name.  This will allow applications depending on existing GSS-API
-   name-based authorization to continue to work.  However it is probably
-   desirable to allow GSS-API mechanisms for which gss_export_name
-   cannot meaningfully be defined.  The behavior of gss_export_name in
-   such cases should probably be to return some error.  Such mechanisms
-   may not work with existing applications and cannot conform to the
-   current version of the GSS-API.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Hartman                 Expires December 4, 2005                [Page 9]
-\f
-Internet-Draft                  GSS Names                      June 2005
-
-
-5.  Credential Extensions
-
-   An alternative to the name attributes proposal  is to extend GSS-API
-   credentials  with extensions labeled by OIDs.  Interfaces would be
-   needed to manipulate these credential extensions and to retrieve the
-   credential extensions for credentials used to establish a context.
-   Even if name attributes are used, credential extensions may be useful
-   for other unrelated purposes.
-
-   It is possible to solve problems discussed in this document using
-   some credential extension mechanism.  Doing so will have many of the
-   same open issues as discussed in the  composite names  proposal.  The
-   main advantage of a credential extensions proposal is that  it avoids
-   specifying how name attributes interact with name comparison or
-   target names.
-
-   The primary advantage of the name attributes proposal over credential
-   extensions is that name attributes seem to fit better into the GSS-
-   API authorization model.  Names are already available at all points
-   when authorization decisions are made.  In addition, for many
-   mechanisms the sort of information carried as name attributes will
-   also be carried as part of the name in the mechanism
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Hartman                 Expires December 4, 2005               [Page 10]
-\f
-Internet-Draft                  GSS Names                      June 2005
-
-
-6.  Mechanisms for Export Name
-
-   Another proposal is to define some GSS-API mechanisms whose only
-   purpose is to have an exportable name form that is useful.  For
-   example, you might be able to export a name as a local machine user
-   ID with such a mechanism.
-
-   This solution works well especially for name information that can be
-   looked up in a directory.  It was unclear from the p      discussion
-   whether this solution would allow mechanism-specific name information
-   to be extracted from a context.  If so, then this solution would meet
-   many of the goals of this document.
-
-   One advantage of this solution is that it requires few if any changes
-   to GSS-API semantics.  It is not as flexible as other solutions.
-   Also, it is not clear how to handle mechanisms that do not have a
-   well defined name to export with this solution.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Hartman                 Expires December 4, 2005               [Page 11]
-\f
-Internet-Draft                  GSS Names                      June 2005
-
-
-7.  Deferring Credential Binding
-
-   Currently GSS-API credentials represent a single mechanism name.
-   While working on other issues discussion came up focused around
-   choosing the correct credential for a particular target.  There are
-   several situations where an implementation can do a better job of
-   choosing a default source name to use given the name of the target to
-   connect to.  Currently, GSS-API does not provide a mechanism to do
-   this.  Adding such a mechanism would be desirable.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Hartman                 Expires December 4, 2005               [Page 12]
-\f
-Internet-Draft                  GSS Names                      June 2005
-
-
-8.  Security Considerations
-
-   GSS-API sets up a security context between two named parties.  The
-   GSS-API names are security assertions that are authenticated by the
-   context establishment process.  As such  the GSS naming architecture
-   is critical to the security of GSS-API.
-
-   Currently GSS-API uses a simplistic naming model for authorization.
-   Names can be compared  against a set of names on an access control
-   list.  This architecture is relatively simple and its security
-   properties are well understood.  However it does not provide the
-   flexibility and feature set for future deployments of GSS-API.
-
-   This proposal will significantly increase the complexity of the GSS
-   naming architecture.  As this proposal is fleshed out, we need to
-   consider ways of managing security exposures created by this
-   increased complexity.
-
-   One area where the complexity may lead to security problems is
-   composite names with attributes from different sources.  This may be
-   desirable so that name attributes that carry their own
-   authentication.  However the design of any solutions needs to make
-   sure that applications can assign appropriate trust to name
-   components.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Hartman                 Expires December 4, 2005               [Page 13]
-\f
-Internet-Draft                  GSS Names                      June 2005
-
-
-9.  Acknowledgements
-
-   John Brezak, Paul Leach and Nicolas Williams all participated in
-   discussions that lead to a desire to enhance GSS naming.  Martin Rex
-   provided descriptions of the current naming architecture and pointed
-   out many ways in which proposed enhancements would create
-   interoperability problems or increase complexity.  Martin also
-   provided excellent information on what aspects of GSS naming have
-   tended to be implemented badly or have not met the needs of some
-   customers.
-
-   Nicolas Williams helped describe the possible approaches for
-   enhancing naming.
-
-10.  Informative References
-
-   [1]  Adams, C., "The Simple Public-Key GSS-API Mechanism (SPKM)",
-        rfc 2025, October 1996.
-
-   [2]  Linn, J., "Generic Security Service Application Program
-        Interface Version 2, Update 1", RFC 2743, January 2000.
-
-   [3]  Neuman, C., Yu, T., Hartman, S., and K. Raeburn, "The Kerberos
-        Network Authentication Service (V5)",
-        draft-ietf-krb-wg-kerberos-clarifications-06.txt (work in
-        progress), June 2004.
-
-   [4]  Jaganathan , K., Zhu, L., Swift, M., and J. Brezak, "Generating
-        KDC Referrals to locate Kerberos realms",
-        draft-ietf-krb-wg-kerberos-referrals-03.txt (work in progress),
-        2004.
-
-   [5]  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.
-
-   [6]  Farrell, S. and R. Housley, "An Internet Attribute Certificate
-        Profile for Authorization.", rfc 3281, April 2002.
-
-
-Author's Address
-
-   Sam Hartman
-   MIT
-
-   Email: hartmans@mit.edu
-
-
-
-
-
-Hartman                 Expires December 4, 2005               [Page 14]
-\f
-Internet-Draft                  GSS Names                      June 2005
-
-
-Intellectual Property Statement
-
-   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
-   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.
-
-
-Disclaimer of Validity
-
-   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 (2005).  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.
-
-
-Acknowledgment
-
-   Funding for the RFC Editor function is currently provided by the
-   Internet Society.
-
-
-
-
-Hartman                 Expires December 4, 2005               [Page 15]
-\f
-