x
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@16198 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
@@ -0,0 +1,785 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
NETWORK WORKING GROUP N. Williams
|
||||||
|
Internet-Draft Sun
|
||||||
|
Expires: April 19, 2006 October 16, 2005
|
||||||
|
|
||||||
|
|
||||||
|
Extended Generic Security Service Mechanism Inquiry APIs
|
||||||
|
draft-ietf-kitten-extended-mech-inquiry-01.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 April 19, 2006.
|
||||||
|
|
||||||
|
Copyright Notice
|
||||||
|
|
||||||
|
Copyright (C) The Internet Society (2005).
|
||||||
|
|
||||||
|
Abstract
|
||||||
|
|
||||||
|
This document introduces new application programming interfaces
|
||||||
|
(APIs) to the Generic Security Services API (GSS-API) for extended
|
||||||
|
mechanism attribute inquiry. These interfaces are primarily intended
|
||||||
|
for use in mechanism composition, but also to reduce instances of
|
||||||
|
hardcoding of mechanism identifiers in GSS applications.
|
||||||
|
|
||||||
|
These interfaces include: mechanism attributes and attribute sets, a
|
||||||
|
function for inquiring the attributes of a mechanism, a function for
|
||||||
|
indicating mechanisms that posses given attributes, and a function
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Williams Expires April 19, 2006 [Page 1]
|
||||||
|
|
||||||
|
Internet-Draft Extended GSS Mech Inquiry October 2005
|
||||||
|
|
||||||
|
|
||||||
|
for displaying mechanism attributes.
|
||||||
|
|
||||||
|
|
||||||
|
Table of Contents
|
||||||
|
|
||||||
|
1. Conventions used in this document . . . . . . . . . . . . 3
|
||||||
|
2. Introduction . . . . . . . . . . . . . . . . . . . . . . . 3
|
||||||
|
3. New GSS-API Interfaces . . . . . . . . . . . . . . . . . . 3
|
||||||
|
3.1. Mechanism Attributes and Attribute Sets . . . . . . . . . 3
|
||||||
|
3.2. Determination of Attribute Sets of Composite Mechs . . . . 4
|
||||||
|
3.3. List of Known Mechanism Attributes . . . . . . . . . . . . 4
|
||||||
|
3.4. Mechanism Attribute Sets of Existing Mechs . . . . . . . . 6
|
||||||
|
3.5. New GSS-API Function Interfaces . . . . . . . . . . . . . 8
|
||||||
|
3.5.1. GSS_Indicate_mechs_by_attr() . . . . . . . . . . . . . . . 8
|
||||||
|
3.5.2. GSS_Inquire_attrs_for_mech() . . . . . . . . . . . . . . . 9
|
||||||
|
3.5.3. GSS_Display_mech_attr() . . . . . . . . . . . . . . . . . 10
|
||||||
|
3.5.4. New Major Status Values . . . . . . . . . . . . . . . . . 10
|
||||||
|
3.5.5. C-Bindings . . . . . . . . . . . . . . . . . . . . . . . . 10
|
||||||
|
4. Requirements for Mechanism Designers . . . . . . . . . . . 11
|
||||||
|
5. IANA Considerations . . . . . . . . . . . . . . . . . . . 11
|
||||||
|
6. Security considerations . . . . . . . . . . . . . . . . . 11
|
||||||
|
7. References . . . . . . . . . . . . . . . . . . . . . . . . 12
|
||||||
|
7.1. Normative . . . . . . . . . . . . . . . . . . . . . . . . 12
|
||||||
|
7.2. Normative . . . . . . . . . . . . . . . . . . . . . . . . 12
|
||||||
|
Author's Address . . . . . . . . . . . . . . . . . . . . . 13
|
||||||
|
Intellectual Property and Copyright Statements . . . . . . 14
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Williams Expires April 19, 2006 [Page 2]
|
||||||
|
|
||||||
|
Internet-Draft Extended GSS Mech Inquiry October 2005
|
||||||
|
|
||||||
|
|
||||||
|
1. Conventions used in this document
|
||||||
|
|
||||||
|
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 [RFC2119].
|
||||||
|
|
||||||
|
|
||||||
|
2. Introduction
|
||||||
|
|
||||||
|
|
||||||
|
3. New GSS-API Interfaces
|
||||||
|
|
||||||
|
GSS-API applications face, today, the problem of how to select from
|
||||||
|
multiple GSS-API mechanisms that may be available. For example,
|
||||||
|
applications that support mechanism negotiation directly often have
|
||||||
|
to be careful not to use SPNEGO to avoid two-layer mechanism
|
||||||
|
negotiation, but since SPNEGO may be indicated by
|
||||||
|
GSS_Indicate_mechs() and since there's no way to know that a
|
||||||
|
mechanism negotiates mechanisms other than to hardcode the OIDs of
|
||||||
|
such mechanisms, such applications must hardcode the SPNEGO OID.
|
||||||
|
This problem is likely to be exacerbated by the introduction of
|
||||||
|
composite mechanisms.
|
||||||
|
|
||||||
|
To address this problem we introduce a new concept: that of mechanism
|
||||||
|
attributes. By allowing applications to query the set of attributes
|
||||||
|
associated with individual mechanisms and to find out which
|
||||||
|
mechanisms support a given set of attributes we allow applications to
|
||||||
|
select mechanisms based on their attributes yet without having to
|
||||||
|
hardcode mechanism OIDs.
|
||||||
|
|
||||||
|
Section 3.1 describes the mechanism attributes concept. Sections
|
||||||
|
3.5.1, 3.5.2 and 3.5.3 describe three new interfaces that deal in
|
||||||
|
mechanisms and attribute sets:
|
||||||
|
|
||||||
|
o GSS_Indicate_mechs_by_attrs()
|
||||||
|
o GSS_Inquire_attrs_for_mech()
|
||||||
|
o GSS_Display_mech_attr()
|
||||||
|
|
||||||
|
3.1. Mechanism Attributes and Attribute Sets
|
||||||
|
|
||||||
|
An abstraction for the features provided by pseudo-mechanisms is
|
||||||
|
needed in order to facilitate the programmatic selection of
|
||||||
|
mechanisms as well as for the programmatic composition of mechanisms.
|
||||||
|
|
||||||
|
Two data types are needed: one for individual mechanism attributes
|
||||||
|
and one for mechanism attribute sets. To simplify the mechanism
|
||||||
|
attributes interfaces we reuse the 'OID' and 'OID set' data types and
|
||||||
|
model individual mechanism attribute types as OIDs.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Williams Expires April 19, 2006 [Page 3]
|
||||||
|
|
||||||
|
Internet-Draft Extended GSS Mech Inquiry October 2005
|
||||||
|
|
||||||
|
|
||||||
|
To this end we define an open namespace of mechanism attributes and
|
||||||
|
assign them arcs off of this OID:
|
||||||
|
|
||||||
|
<TBD> [1.3.6.1.5.5.12 appears to be available, registration w/ IANA
|
||||||
|
TBD]
|
||||||
|
|
||||||
|
3.2. Determination of Attribute Sets of Composite Mechs
|
||||||
|
|
||||||
|
Each mechanism, composite or otherwise, has a set of mechanism
|
||||||
|
attributes that it supports as specified.
|
||||||
|
|
||||||
|
The mechanism attribute set of a composite mechanism is to be
|
||||||
|
determined by the top-most stackable pseudo-mechanism of the
|
||||||
|
composite according to its own attribute set and that of the
|
||||||
|
remainder of the composite mechanism stack below it.
|
||||||
|
|
||||||
|
It may well be that some composite mechanisms' attribute sets consist
|
||||||
|
of the union of those of their every component, however this need not
|
||||||
|
be the case and MUST NOT be assumed.
|
||||||
|
|
||||||
|
Every stackable pseudo-mechanism's specification MUST specify the
|
||||||
|
rules for determining the mechanism attribute set of mechanisms
|
||||||
|
composed by it.
|
||||||
|
|
||||||
|
3.3. List of Known Mechanism Attributes
|
||||||
|
|
||||||
|
+-------------------------+--------+--------------------------------+
|
||||||
|
| Mech Attr Name | OID | Arc Name |
|
||||||
|
| | Arc | |
|
||||||
|
+-------------------------+--------+--------------------------------+
|
||||||
|
| GSS_C_MA_MECH_CONCRETE | (1) | concrete-mech |
|
||||||
|
| GSS_C_MA_MECH_STACKABLE | (2) | pseudo-mech |
|
||||||
|
| GSS_C_MA_MECH_COMPOSITE | (3) | composite-mech |
|
||||||
|
| GSS_C_MA_MECH_NEGO | (4) | mech-negotiation-mech |
|
||||||
|
| GSS_C_MA_MECH_GLUE | (5) | mech-glue |
|
||||||
|
| GSS_C_MA_NOT_MECH | (6) | not-mech |
|
||||||
|
| GSS_C_MA_DEPRECATED | (7) | mech-deprecated |
|
||||||
|
| GSS_C_MA_NOT_DFLT_MECH | (8) | mech-not-default |
|
||||||
|
| GSS_C_MA_ITOK_FRAMED | (9) | initial-is-framed |
|
||||||
|
| GSS_C_MA_AUTH_INIT | (10) | auth-init-princ |
|
||||||
|
| GSS_C_MA_AUTH_TARG | (11) | auth-targ-princ |
|
||||||
|
| GSS_C_MA_AUTH_INIT_INIT | (12) | auth-init-princ-initial |
|
||||||
|
| GSS_C_MA_AUTH_TARG_INIT | (13) | auth-targ-princ-initial |
|
||||||
|
| GSS_C_MA_AUTH_INIT_ANON | (14) | auth-init-princ-anon |
|
||||||
|
| GSS_C_MA_AUTH_TARG_ANON | (15) | auth-targ-princ-anon |
|
||||||
|
| GSS_C_MA_DELEG_CRED | (16) | deleg-cred |
|
||||||
|
| GSS_C_MA_INTEG_PROT | (17) | integ-prot |
|
||||||
|
| GSS_C_MA_CONF_PROT | (18) | conf-prot |
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Williams Expires April 19, 2006 [Page 4]
|
||||||
|
|
||||||
|
Internet-Draft Extended GSS Mech Inquiry October 2005
|
||||||
|
|
||||||
|
|
||||||
|
| GSS_C_MA_MIC | (19) | mic |
|
||||||
|
| GSS_C_MA_WRAP | (20) | wap |
|
||||||
|
| GSS_C_MA_PROT_READY | (21) | prot-ready |
|
||||||
|
| GSS_C_MA_REPLAY_DET | (22) | replay-detection |
|
||||||
|
| GSS_C_MA_OOS_DET | (23) | oos-detection |
|
||||||
|
| GSS_C_MA_CBINDINGS | (24) | channel-bindings |
|
||||||
|
| GSS_C_MA_CBINDINGS_BIDI | (25) | channel-bindings-bidirectional |
|
||||||
|
| GSS_C_MA_CBINDINGS_NEGO | (26) | channel-bindings-negotiate |
|
||||||
|
| GSS_C_MA_PFS | (27) | pfs |
|
||||||
|
| GSS_C_MA_COMPRESS | (28) | compress |
|
||||||
|
| GSS_C_MA_CTX_TRANS | (29) | context-transfer |
|
||||||
|
| <reserved> | (30..) | |
|
||||||
|
+-------------------------+--------+--------------------------------+
|
||||||
|
|
||||||
|
Table 1
|
||||||
|
|
||||||
|
+-------------------------+-----------------------------------------+
|
||||||
|
| Mech Attr Name | Purpose |
|
||||||
|
+-------------------------+-----------------------------------------+
|
||||||
|
| GSS_C_MA_MECH_CONCRETE | Indicates that a mech is neither a |
|
||||||
|
| | pseudo- mechanism nor a composite |
|
||||||
|
| | mechanism. |
|
||||||
|
| GSS_C_MA_MECH_STACKABLE | Indicates that a mech is a |
|
||||||
|
| | pseudo-mechanism. |
|
||||||
|
| GSS_C_MA_MECH_COMPOSITE | Indicates that a mech is a composite |
|
||||||
|
| | mechanism. |
|
||||||
|
| GSS_C_MA_MECH_NEGO | Indicates that a mech negotiates other |
|
||||||
|
| | mechs (e.g., SPNEGO has this |
|
||||||
|
| | attribute). |
|
||||||
|
| GSS_C_MA_MECH_GLUE | Indicates that the OID is not for a |
|
||||||
|
| | mechanism but for the GSS-API itself. |
|
||||||
|
| GSS_C_MA_NOT_MECH | Indicates that the OID is known, yet |
|
||||||
|
| | also known not to be the OID of any |
|
||||||
|
| | GSS-API mechanism (or the GSS-API |
|
||||||
|
| | itself). |
|
||||||
|
| GSS_C_MA_DEPRECATED | Indicates that a mech (or its OID) is |
|
||||||
|
| | deprecated and MUST NOT be used as a |
|
||||||
|
| | default mechanism. |
|
||||||
|
| GSS_C_MA_NOT_DFLT_MECH | Indicates that a mech (or its OID) MUST |
|
||||||
|
| | NOT be used as a default mechanism. |
|
||||||
|
| GSS_C_MA_ITOK_FRAMED | Indicates that the given mechanism's |
|
||||||
|
| | initial context tokens are properly |
|
||||||
|
| | framed as per-section 3.1 of rfc2743. |
|
||||||
|
| GSS_C_MA_AUTH_INIT | Indicates support for authentication of |
|
||||||
|
| | initiator to acceptor. |
|
||||||
|
| GSS_C_MA_AUTH_TARG | Indicates support for authentication of |
|
||||||
|
| | acceptor to initiator. |
|
||||||
|
| GSS_C_MA_AUTH_INIT_INIT | Indicates support for initial |
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Williams Expires April 19, 2006 [Page 5]
|
||||||
|
|
||||||
|
Internet-Draft Extended GSS Mech Inquiry October 2005
|
||||||
|
|
||||||
|
|
||||||
|
| | authentication of initiator to |
|
||||||
|
| | acceptor. |
|
||||||
|
| GSS_C_MA_AUTH_TARG_INIT | Indicates support for initial |
|
||||||
|
| | authentication of acceptor to |
|
||||||
|
| | initiator. |
|
||||||
|
| GSS_C_MA_AUTH_INIT_ANON | Indicates support for initiator |
|
||||||
|
| | anonymity. |
|
||||||
|
| GSS_C_MA_AUTH_TARG_ANON | Indicates support for acceptor |
|
||||||
|
| | anonymity. |
|
||||||
|
| GSS_C_MA_DELEG_CRED | Indicates support for credential |
|
||||||
|
| | delegation. |
|
||||||
|
| GSS_C_MA_INTEG_PROT | Indicates support for per-message |
|
||||||
|
| | integrity protection. |
|
||||||
|
| GSS_C_MA_CONF_PROT | Indicates support for per-message |
|
||||||
|
| | confidentiality protection. |
|
||||||
|
| GSS_C_MA_MIC | Indicates support for MIC tokens. |
|
||||||
|
| GSS_C_MA_WRAP | Indicates support for WRAP tokens. |
|
||||||
|
| GSS_C_MA_PROT_READY | Indicates support for per-message |
|
||||||
|
| | protection prior to full context |
|
||||||
|
| | establishment. |
|
||||||
|
| GSS_C_MA_REPLAY_DET | Indicates support for replay detection. |
|
||||||
|
| GSS_C_MA_OOS_DET | Indicates support for out-of-sequence |
|
||||||
|
| | detection. |
|
||||||
|
| GSS_C_MA_CBINDINGS | Indicates support for channel bindings. |
|
||||||
|
| GSS_C_MA_CBINDINGS_BIDI | Indicates that acceptors |
|
||||||
|
| | unconditionally indicate to initiators |
|
||||||
|
| | whether their channel bindings were |
|
||||||
|
| | matched the acceptors', even when the |
|
||||||
|
| | acceptor applications use |
|
||||||
|
| | GSS_C_NO_CHANNEL_BINDINGS.. |
|
||||||
|
| GSS_C_MA_CBINDINGS_NEGO | Indicates that the mech acts as a |
|
||||||
|
| | signal for application support for and |
|
||||||
|
| | willingness to use channel bindings. |
|
||||||
|
| GSS_C_MA_PFS | Indicates support for Perfect Forward |
|
||||||
|
| | Security. |
|
||||||
|
| GSS_C_MA_COMPRESS | Indicates support for compression of |
|
||||||
|
| | data inputs to GSS_Wrap(). |
|
||||||
|
| GSS_C_MA_CTX_TRANS | Indicates support for security context |
|
||||||
|
| | export/import. |
|
||||||
|
+-------------------------+-----------------------------------------+
|
||||||
|
|
||||||
|
Table 2
|
||||||
|
|
||||||
|
3.4. Mechanism Attribute Sets of Existing Mechs
|
||||||
|
|
||||||
|
The Kerberos V mechanism [RFC1964] [CFX] provides the following
|
||||||
|
mechanism attributes:
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Williams Expires April 19, 2006 [Page 6]
|
||||||
|
|
||||||
|
Internet-Draft Extended GSS Mech Inquiry October 2005
|
||||||
|
|
||||||
|
|
||||||
|
o GSS_C_MA_MECH_CONCRETE
|
||||||
|
o GSS_C_MA_ITOK_FRAMED
|
||||||
|
o GSS_C_MA_AUTH_INIT
|
||||||
|
o GSS_C_MA_AUTH_TARG
|
||||||
|
o GSS_C_MA_DELEG_CRED
|
||||||
|
o GSS_C_MA_INTEG_PROT
|
||||||
|
o GSS_C_MA_CONF_PROT
|
||||||
|
o GSS_C_MA_MIC
|
||||||
|
o GSS_C_MA_WRAP
|
||||||
|
o GSS_C_MA_PROT_READY
|
||||||
|
o GSS_C_MA_REPLAY_DET
|
||||||
|
o GSS_C_MA_OOS_DET
|
||||||
|
o GSS_C_MA_CBINDINGS
|
||||||
|
o GSS_C_MA_CTX_TRANS (some implementations, using implementation-
|
||||||
|
specific exported context token formats)
|
||||||
|
|
||||||
|
The Kerberos V mechanism also has a deprecated OID which has the same
|
||||||
|
mechanism attributes as above, and GSS_C_MA_DEPRECATED.
|
||||||
|
|
||||||
|
[The mechanism attributes of the SPKM family of mechanisms will be
|
||||||
|
provided in a separate document as SPKM is current being reviewed for
|
||||||
|
possibly significant changes due to problems in its specifications.]
|
||||||
|
|
||||||
|
The LIPKEY mechanism offers the following attributes:
|
||||||
|
|
||||||
|
o GSS_C_MA_MECH_CONCRETE (should be stackable, but does not compose)
|
||||||
|
o GSS_C_MA_ITOK_FRAMED
|
||||||
|
o GSS_C_MA_AUTH_INIT_INIT
|
||||||
|
o GSS_C_MA_AUTH_TARG (from SPKM-3)
|
||||||
|
o GSS_C_MA_AUTH_TARG_ANON (from SPKM-3)
|
||||||
|
o GSS_C_MA_INTEG_PROT
|
||||||
|
o GSS_C_MA_CONF_PROT
|
||||||
|
o GSS_C_MA_REPLAY_DET
|
||||||
|
o GSS_C_MA_OOS_DET
|
||||||
|
o GSS_C_MA_CTX_TRANS (some implementations, using implementation-
|
||||||
|
specific exported context token formats)
|
||||||
|
|
||||||
|
(LIPKEY should also provide GSS_C_MA_CBINDINGS, but SPKM-3
|
||||||
|
requires clarifications on this point.)
|
||||||
|
|
||||||
|
The SPNEGO mechanism [SPNEGO] provides the following attributes:
|
||||||
|
o GSS_C_MA_MECH_NEGO
|
||||||
|
o GSS_C_MA_ITOK_FRAMED
|
||||||
|
|
||||||
|
The attributes of mechanisms negotiated by SPNEGO are not modified by
|
||||||
|
the use of SPNEGO.
|
||||||
|
|
||||||
|
All other mechanisms' attributes will be described elsewhere.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Williams Expires April 19, 2006 [Page 7]
|
||||||
|
|
||||||
|
Internet-Draft Extended GSS Mech Inquiry October 2005
|
||||||
|
|
||||||
|
|
||||||
|
3.5. New GSS-API Function Interfaces
|
||||||
|
|
||||||
|
Several new interfaces are given by which, for example, GSS-API
|
||||||
|
applications may determine what features are provided by a given
|
||||||
|
mechanism, what mechanisms provide what features and what
|
||||||
|
compositions are legal.
|
||||||
|
|
||||||
|
These new interfaces are all OPTIONAL.
|
||||||
|
|
||||||
|
In order to preserve backwards compatibility with applications that
|
||||||
|
do not use the new interfaces GSS_Indicate_mechs() MUST NOT indicate
|
||||||
|
support for any stackable pseduo-mechanisms. GSS_Indicate_mechs()
|
||||||
|
MAY indicate support for some, all or none of the available composite
|
||||||
|
mechanisms; which composite mechanisms, if any, are indicated through
|
||||||
|
GSS_Indicate_mechs() SHOULD be configurable. GSS_Acquire_cred() and
|
||||||
|
GSS_Add_cred() MUST NOT create credentials for composite mechanisms
|
||||||
|
not explicitly requested or, if no desired mechanism or mechanisms
|
||||||
|
are given, for composite mechanisms not indicated by
|
||||||
|
GSS_Indicate_mechs().
|
||||||
|
|
||||||
|
Applications SHOULD use GSS_Indicate_mechs_by_attr() instead of
|
||||||
|
GSS_Indicate_mechs() wherever possible.
|
||||||
|
|
||||||
|
Applications can use GSS_Indicate_mechs_by_attr() to determine what,
|
||||||
|
if any, mechanisms provide a given set of features.
|
||||||
|
|
||||||
|
GSS_Indicate_mechs_by_attr() can also be used to indicate (as in
|
||||||
|
GSS_Indicate_mechs()) the set of available mechanisms of each type
|
||||||
|
(concrete, mechanism negotiation pseudo-mechanism, stackable pseudo-
|
||||||
|
mechanism and composite mechanisms).
|
||||||
|
|
||||||
|
Applications may use GSS_Inquire_attrs_for_mech() to test whether a
|
||||||
|
given composite mechanism is available and the set of features that
|
||||||
|
it offers.
|
||||||
|
|
||||||
|
3.5.1. GSS_Indicate_mechs_by_attr()
|
||||||
|
|
||||||
|
Inputs:
|
||||||
|
o desired_mech_attrs SET OF OBJECT IDENTIFIER -- set of GSS_C_MA_*
|
||||||
|
OIDs that the mechanisms indicated in the mechs output parameter
|
||||||
|
MUST offer.
|
||||||
|
o except_mech_attrs SET OF OBJECT IDENTIFIER -- set of GSS_C_MA_*
|
||||||
|
OIDs that the mechanisms indicated in the mechs output parameter
|
||||||
|
MUST NOT offer.
|
||||||
|
|
||||||
|
Outputs:
|
||||||
|
o major_status INTEGER,
|
||||||
|
o minor_status INTEGER,
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Williams Expires April 19, 2006 [Page 8]
|
||||||
|
|
||||||
|
Internet-Draft Extended GSS Mech Inquiry October 2005
|
||||||
|
|
||||||
|
|
||||||
|
o mechs SET OF OBJECT IDENTIFIER -- set of mechanisms that support
|
||||||
|
-- the desired_mech_attrs but not the except_mech_attrs.
|
||||||
|
|
||||||
|
Return major_status codes:
|
||||||
|
o GSS_S_COMPLETE indicates success; the output mechs parameter MAY
|
||||||
|
be the empty set (GSS_C_NO_OID_SET).
|
||||||
|
o GSS_BAD_MECH_ATTR indicates that at least one mechanism attribute
|
||||||
|
OID in desired_mech_attrs or except_mech_attrs is unknown to the
|
||||||
|
implementation.
|
||||||
|
o GSS_S_FAILURE indicates that the request failed for some other
|
||||||
|
reason.
|
||||||
|
|
||||||
|
GSS_Indicate_mechs_by_mech_attrs() returns the set of mechanism OIDs
|
||||||
|
that offer at least the desired_mech_attrs but none of the
|
||||||
|
except_mech_attrs.
|
||||||
|
|
||||||
|
When desired_mech_attrs and except_mech_attrs are the empty set this
|
||||||
|
function acts as a version of GSS_indicate_mechs() that outputs the
|
||||||
|
set of all supported mechanisms of all types. By setting the
|
||||||
|
desired_mechs input parameter to a set of a single GSS_C_MA_MECH*
|
||||||
|
feature applications can obtain the list of all supported mechanisms
|
||||||
|
of a given type (concrete, stackable, etc...).
|
||||||
|
|
||||||
|
3.5.2. GSS_Inquire_attrs_for_mech()
|
||||||
|
|
||||||
|
Inputs:
|
||||||
|
o mech OBJECT IDENTIFIER -- mechanism OID
|
||||||
|
|
||||||
|
Outputs:
|
||||||
|
o major_status INTEGER,
|
||||||
|
o minor_status INTEGER,
|
||||||
|
o mech_attrs SET OF OBJECT IDENTIFIER -- set of mech_attrs OIDs
|
||||||
|
(GSS_C_MA_*)
|
||||||
|
|
||||||
|
Return major_status codes:
|
||||||
|
o GSS_S_COMPLETE indicates success; the output mech_attrs parameter
|
||||||
|
MAY be the empty set (GSS_C_NO_OID_SET).
|
||||||
|
o GSS_S_BAD_MECH indicates that the mechanism named by the mech
|
||||||
|
parameter does not exist or that mech is GSS_C_NO_OID and no
|
||||||
|
default mechanism could be determined.
|
||||||
|
o GSS_S_FAILURE indicates that the request failed for some other
|
||||||
|
reason.
|
||||||
|
|
||||||
|
GSS_Inquire_mech_attrs_for_mech() indicates the set of mechanism
|
||||||
|
attributes supported by a given mechanism.
|
||||||
|
|
||||||
|
Because the mechanism attribute sets of composite mechanisms need not
|
||||||
|
be the union of their components', when called to obtain the feature
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Williams Expires April 19, 2006 [Page 9]
|
||||||
|
|
||||||
|
Internet-Draft Extended GSS Mech Inquiry October 2005
|
||||||
|
|
||||||
|
|
||||||
|
set of a composite mechanism GSS_Inquire_mech_attrs_for_mech()
|
||||||
|
obtains it by querying the mechanism at the top of the stack. See
|
||||||
|
Section 3.1.
|
||||||
|
|
||||||
|
3.5.3. GSS_Display_mech_attr()
|
||||||
|
|
||||||
|
Inputs:
|
||||||
|
o mech_attr OBJECT IDENTIFIER -- mechanism attribute OID
|
||||||
|
|
||||||
|
Outputs:
|
||||||
|
o major_status INTEGER,
|
||||||
|
o minor_status INTEGER,
|
||||||
|
o name OCTET STRING, -- name of mechanism attribute (e.g.,
|
||||||
|
GSS_C_MA_*)
|
||||||
|
o short_desc OCTET STRING, -- a short description of the mechanism
|
||||||
|
attribute
|
||||||
|
o long_desc OCTET STRING -- a longer description of the mechanism
|
||||||
|
attribute
|
||||||
|
|
||||||
|
Return major_status codes:
|
||||||
|
o GSS_S_COMPLETE indicates success.
|
||||||
|
o GSS_S_BAD_MECH_ATTR indicates that the mechanism attribute
|
||||||
|
referenced by the mech_attr parameter is unknown to the
|
||||||
|
implementation.
|
||||||
|
o GSS_S_FAILURE indicates that the request failed for some other
|
||||||
|
reason.
|
||||||
|
|
||||||
|
This function can be used to obtain human-readable descriptions of
|
||||||
|
GSS-API mechanism attributes.
|
||||||
|
|
||||||
|
3.5.4. New Major Status Values
|
||||||
|
|
||||||
|
A single new major status code is added for GSS_Display_mech_attr():
|
||||||
|
o GSS_S_BAD_MECH_ATTR
|
||||||
|
roughly corresponding to GSS_S_BAD_MECH, but applicable to mechanism
|
||||||
|
attribute OIDs, rather than to mechanism OIDs.
|
||||||
|
|
||||||
|
For the C-bindings GSS_S_BAD_MECH_ATTR shall have a routine error
|
||||||
|
number of 19 (this is shifted to the left by
|
||||||
|
GSS_C_ROUTINE_ERROR_OFFSET).
|
||||||
|
|
||||||
|
3.5.5. C-Bindings
|
||||||
|
|
||||||
|
|
||||||
|
#define GSS_S_BAD_MECH_ATTR (19ul << GSS_C_ROUTINE_ERROR_OFFSET)
|
||||||
|
|
||||||
|
OM_uint32 gss_inquire_mechs_for_mech_attrs(
|
||||||
|
OM_uint32 *minor_status,
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Williams Expires April 19, 2006 [Page 10]
|
||||||
|
|
||||||
|
Internet-Draft Extended GSS Mech Inquiry October 2005
|
||||||
|
|
||||||
|
|
||||||
|
const gss_OID_set desired_mech_attrs,
|
||||||
|
gss_OID_set *mechs);
|
||||||
|
|
||||||
|
OM_uint32 gss_inquire_mech_attrs_for_mech(
|
||||||
|
OM_uint32 *minor_status,
|
||||||
|
const gss_OID mech,
|
||||||
|
gss_OID_set *mech_attrs);
|
||||||
|
|
||||||
|
OM_uint32 gss_display_mech_attr(
|
||||||
|
OM_uint32 *minor_status,
|
||||||
|
const gss_OID mech_attr,
|
||||||
|
gss_buffer_t name,
|
||||||
|
gss_buffer_t short_desc,
|
||||||
|
gss_buffer_t long_desc);
|
||||||
|
|
||||||
|
|
||||||
|
Figure 1
|
||||||
|
|
||||||
|
|
||||||
|
4. Requirements for Mechanism Designers
|
||||||
|
|
||||||
|
Stackable pseudo-mechanisms specifications MUST:
|
||||||
|
o list the set of GSS-API mechanism attributes associated with them
|
||||||
|
o list their initial mechanism composition rules
|
||||||
|
o specify a mechanism for updating their mechanism composition rules
|
||||||
|
|
||||||
|
All other mechanism specifications MUST:
|
||||||
|
o list the set of GSS-API mechanism attributes associated with them
|
||||||
|
|
||||||
|
|
||||||
|
5. IANA Considerations
|
||||||
|
|
||||||
|
The namsepace of programming language symbols with names beginning
|
||||||
|
with GSS_C_MA_* is reserved for allocation by the IANA.
|
||||||
|
|
||||||
|
Allocation of arcs in the namespace of OIDs relative to the base
|
||||||
|
mechanism attribute OID specified in Section 3.1 is reserved to the
|
||||||
|
IANA.
|
||||||
|
|
||||||
|
|
||||||
|
6. Security considerations
|
||||||
|
|
||||||
|
...
|
||||||
|
|
||||||
|
|
||||||
|
7. References
|
||||||
|
|
||||||
|
7.1. Normative
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Williams Expires April 19, 2006 [Page 11]
|
||||||
|
|
||||||
|
Internet-Draft Extended GSS Mech Inquiry October 2005
|
||||||
|
|
||||||
|
|
||||||
|
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
|
||||||
|
Requirement Levels", BCP 14, RFC 2119, March 1997.
|
||||||
|
|
||||||
|
[RFC2743] Linn, J., "Generic Security Service Application Program
|
||||||
|
Interface Version 2, Update 1", RFC 2743, January 2000.
|
||||||
|
|
||||||
|
[RFC2744] Wray, J., "Generic Security Service API Version 2 :
|
||||||
|
C-bindings", RFC 2744, January 2000.
|
||||||
|
|
||||||
|
7.2. Normative
|
||||||
|
|
||||||
|
[RFC1964] Linn, J., "The Kerberos Version 5 GSS-API Mechanism",
|
||||||
|
RFC 1964, June 1996.
|
||||||
|
|
||||||
|
[RFC2478] Baize, E. and D. Pinkas, "The Simple and Protected GSS-API
|
||||||
|
Negotiation Mechanism", RFC 2478, December 1998.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Williams Expires April 19, 2006 [Page 12]
|
||||||
|
|
||||||
|
Internet-Draft Extended GSS Mech Inquiry October 2005
|
||||||
|
|
||||||
|
|
||||||
|
Author's Address
|
||||||
|
|
||||||
|
Nicolas Williams
|
||||||
|
Sun Microsystems
|
||||||
|
5300 Riata Trace Ct
|
||||||
|
Austin, TX 78727
|
||||||
|
US
|
||||||
|
|
||||||
|
Email: Nicolas.Williams@sun.com
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Williams Expires April 19, 2006 [Page 13]
|
||||||
|
|
||||||
|
Internet-Draft Extended GSS Mech Inquiry October 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.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Williams Expires April 19, 2006 [Page 14]
|
||||||
|
|
||||||
|
|
@@ -0,0 +1,897 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
KITTEN WG N. Williams
|
||||||
|
Internet-Draft Sun
|
||||||
|
Expires: April 19, 2006 October 16, 2005
|
||||||
|
|
||||||
|
|
||||||
|
Clarifications and Extensions to the GSS-API for the Use of Channel
|
||||||
|
Bindings
|
||||||
|
draft-ietf-kitten-gssapi-channel-bindings-01.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 April 19, 2006.
|
||||||
|
|
||||||
|
Copyright Notice
|
||||||
|
|
||||||
|
Copyright (C) The Internet Society (2005).
|
||||||
|
|
||||||
|
Abstract
|
||||||
|
|
||||||
|
This document clarifies and generalizes the GSS-API "channel
|
||||||
|
bindings" facility. This document also specifies the format of the
|
||||||
|
various types of channel bindings.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Williams Expires April 19, 2006 [Page 1]
|
||||||
|
|
||||||
|
Internet-Draft GSS-API Channel Bindings October 2005
|
||||||
|
|
||||||
|
|
||||||
|
Table of Contents
|
||||||
|
|
||||||
|
1. Conventions used in this document . . . . . . . . . . . . . . 3
|
||||||
|
2. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 4
|
||||||
|
3. Generic Structure for GSS-API Channel Bindings . . . . . . . . 5
|
||||||
|
3.1. Proper Mechanism Use of Channel Bindings . . . . . . . . . 5
|
||||||
|
4. Channel Bindings for SSHv2 . . . . . . . . . . . . . . . . . . 6
|
||||||
|
4.1. GSS_Make_sshv2_channel_bindings() . . . . . . . . . . . . 6
|
||||||
|
4.1.1. C-Bindings . . . . . . . . . . . . . . . . . . . . . . 7
|
||||||
|
5. Channel Bindings for TLS . . . . . . . . . . . . . . . . . . . 8
|
||||||
|
5.1. GSS_Make_tls_channel_bindings() . . . . . . . . . . . . . 8
|
||||||
|
5.1.1. C-Bindings . . . . . . . . . . . . . . . . . . . . . . 9
|
||||||
|
6. Channel Bindings for IPsec . . . . . . . . . . . . . . . . . . 10
|
||||||
|
6.1. GSS_Make_ipsec_channel_bindings() . . . . . . . . . . . . 10
|
||||||
|
6.1.1. C-Bindings . . . . . . . . . . . . . . . . . . . . . . 11
|
||||||
|
7. Security Considerations . . . . . . . . . . . . . . . . . . . 12
|
||||||
|
8. References . . . . . . . . . . . . . . . . . . . . . . . . . . 13
|
||||||
|
8.1. Normative . . . . . . . . . . . . . . . . . . . . . . . . 13
|
||||||
|
8.2. Informative . . . . . . . . . . . . . . . . . . . . . . . 13
|
||||||
|
Appendix A. Acknowledgments . . . . . . . . . . . . . . . . . . . 14
|
||||||
|
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 15
|
||||||
|
Intellectual Property and Copyright Statements . . . . . . . . . . 16
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Williams Expires April 19, 2006 [Page 2]
|
||||||
|
|
||||||
|
Internet-Draft GSS-API Channel Bindings October 2005
|
||||||
|
|
||||||
|
|
||||||
|
1. Conventions used in this document
|
||||||
|
|
||||||
|
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 [RFC2119].
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Williams Expires April 19, 2006 [Page 3]
|
||||||
|
|
||||||
|
Internet-Draft GSS-API Channel Bindings October 2005
|
||||||
|
|
||||||
|
|
||||||
|
2. Introduction
|
||||||
|
|
||||||
|
The concept of "channel bindings" and the abstract construction of
|
||||||
|
channel bindings for several types of channels are described in
|
||||||
|
[CHANNEL-BINDINGS]
|
||||||
|
|
||||||
|
To actually use channel bindings in GSS-API aplications additional
|
||||||
|
details are required that are given below.
|
||||||
|
|
||||||
|
First the structure given to channel bindings data in [RFC2744] is
|
||||||
|
generalized to all of the GSS-API, not just its C-Bindings.
|
||||||
|
|
||||||
|
Then the actual construction of channel bindings to SSHv2, TLS and
|
||||||
|
IPsec channels is given.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Williams Expires April 19, 2006 [Page 4]
|
||||||
|
|
||||||
|
Internet-Draft GSS-API Channel Bindings October 2005
|
||||||
|
|
||||||
|
|
||||||
|
3. Generic Structure for GSS-API Channel Bindings
|
||||||
|
|
||||||
|
The base GSS-API v2, update 1 specification [RFC2743]describes
|
||||||
|
channel bindings as an OCTET STRING and leaves it to the GSS-API v2,
|
||||||
|
update 1 C-Bindings specification to specify the structure of the
|
||||||
|
contents of the channel bindings OCTET STRINGs. The C-Bindings
|
||||||
|
specification [RFC2744]then defines, in terms of C, what should be
|
||||||
|
generic structure for channel bindings. The Kerberos V GSS mechanism
|
||||||
|
[RFC1964]then defines a method for encoding GSS channel bindings in a
|
||||||
|
way that is independent of the C-Bindings!
|
||||||
|
|
||||||
|
In other words, the structure of GSS channel bindings given in
|
||||||
|
[RFC2744] is actually generic, rather than specific to the C
|
||||||
|
programming language.
|
||||||
|
|
||||||
|
Here, then, is a generic re-statement of this structure, in pseudo-
|
||||||
|
ASN.1:
|
||||||
|
|
||||||
|
GSS-CHANNEL-BINDINGS := SEQUENCE {
|
||||||
|
initiator-address-type INTEGER,
|
||||||
|
initiator-address OCTET STRING,
|
||||||
|
acceptor-address-type INTEGER,
|
||||||
|
acceptor-address OCTET STRING,
|
||||||
|
application-data OCTET STRING,
|
||||||
|
}
|
||||||
|
|
||||||
|
The values for the address fields are described in [RFC2744].
|
||||||
|
|
||||||
|
Language-specific bindings of the GSS-API should specify a language-
|
||||||
|
specific formulation of this structure.
|
||||||
|
|
||||||
|
3.1. Proper Mechanism Use of Channel Bindings
|
||||||
|
|
||||||
|
As described in [CHANNEL-BINDINGS], GSS mechanisms should exchange
|
||||||
|
integrity protected proofs of channel bindings, where the proof is
|
||||||
|
obtained by running a strong hash of the channel bindings data
|
||||||
|
(encoded as per some mechanism-specific, such as in [RFC1964]) and a
|
||||||
|
binary value to represent the initiator->acceptor, and opposite,
|
||||||
|
direction.
|
||||||
|
|
||||||
|
The encoding of channel bindings used in [RFC1964], with the addition
|
||||||
|
of a binary value as described above, and the substitution of SHA-1
|
||||||
|
for MD5 is a reasonable, generic encoding of GSS-CHANNEL-BINDINGS
|
||||||
|
that any future GSS mechanisms can use.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Williams Expires April 19, 2006 [Page 5]
|
||||||
|
|
||||||
|
Internet-Draft GSS-API Channel Bindings October 2005
|
||||||
|
|
||||||
|
|
||||||
|
4. Channel Bindings for SSHv2
|
||||||
|
|
||||||
|
The SSHv2 channel bindings are constructed as an octet string for the
|
||||||
|
'application-data' field of the channel bindings by concatenating the
|
||||||
|
following values and in this order:
|
||||||
|
|
||||||
|
1. The ASCII string "GSS SSHv2 CB:"
|
||||||
|
|
||||||
|
2. The SSHv2 session ID
|
||||||
|
|
||||||
|
3. Any additional application-provided data, encoded as the DER
|
||||||
|
encoding of an ASN.1 OCTET STRING
|
||||||
|
|
||||||
|
4.1. GSS_Make_sshv2_channel_bindings()
|
||||||
|
|
||||||
|
Inputs:
|
||||||
|
|
||||||
|
|
||||||
|
o session_id OCTET STRING,
|
||||||
|
|
||||||
|
o additional_app_data OCTET STRING
|
||||||
|
|
||||||
|
Outputs:
|
||||||
|
|
||||||
|
|
||||||
|
o major_status INTEGER,
|
||||||
|
|
||||||
|
o minor_status INTEGER,
|
||||||
|
|
||||||
|
o channel_bindings_app_data OCTET STRING
|
||||||
|
|
||||||
|
Return major_status codes:
|
||||||
|
|
||||||
|
o GSS_S_COMPLETE indicates no error.
|
||||||
|
|
||||||
|
o GSS_S_FAILURE indicates failure to construct the channel bindings
|
||||||
|
as a result, perhaps, of a memory management, or similar failure.
|
||||||
|
|
||||||
|
This function constructs an OCTET STRING for use as the value of the
|
||||||
|
application-data field of the GSS-CHANNEL-BINDINGS structure
|
||||||
|
described above.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Williams Expires April 19, 2006 [Page 6]
|
||||||
|
|
||||||
|
Internet-Draft GSS-API Channel Bindings October 2005
|
||||||
|
|
||||||
|
|
||||||
|
4.1.1. C-Bindings
|
||||||
|
|
||||||
|
OM_uint32 gss_make_sshv2_channel_bindings(
|
||||||
|
OM_uint32 *minor_status,
|
||||||
|
const gss_buffer_t session_id,
|
||||||
|
const gss_buffer_t additional_app_data,
|
||||||
|
gss_buffer_t channel_bindings_app_data
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Williams Expires April 19, 2006 [Page 7]
|
||||||
|
|
||||||
|
Internet-Draft GSS-API Channel Bindings October 2005
|
||||||
|
|
||||||
|
|
||||||
|
5. Channel Bindings for TLS
|
||||||
|
|
||||||
|
The TLS channel bindings are constructed as an octet string for the
|
||||||
|
'application-data' field of the channel bindings by concatenating the
|
||||||
|
following values and in this order:
|
||||||
|
|
||||||
|
1. The ASCII string "GSS TLSv1.0 CB:"
|
||||||
|
|
||||||
|
2. The TLS finished message sent by the client
|
||||||
|
|
||||||
|
3. The TLS finished message sent by the server
|
||||||
|
|
||||||
|
4. Any additional application-provided data, encoded as the DER
|
||||||
|
encoding of an ASN.1 OCTET STRING
|
||||||
|
|
||||||
|
5.1. GSS_Make_tls_channel_bindings()
|
||||||
|
|
||||||
|
Inputs:
|
||||||
|
|
||||||
|
|
||||||
|
o client_finished_msg OCTET STRING,
|
||||||
|
|
||||||
|
o server_finished_msg OCTET STRING,
|
||||||
|
|
||||||
|
o additional_app_data OCTET STRING
|
||||||
|
|
||||||
|
Outputs:
|
||||||
|
|
||||||
|
|
||||||
|
o major_status INTEGER,
|
||||||
|
|
||||||
|
o minor_status INTEGER,
|
||||||
|
|
||||||
|
o channel_bindings_app_data OCTET STRING
|
||||||
|
|
||||||
|
Return major_status codes:
|
||||||
|
|
||||||
|
o GSS_S_COMPLETE indicates no error.
|
||||||
|
|
||||||
|
o GSS_S_FAILURE indicates failure to construct the channel bindings
|
||||||
|
as a result, perhaps, of a memory management, or similar failure.
|
||||||
|
|
||||||
|
This function constructs an OCTET STRING for use as the value of the
|
||||||
|
application-data field of the GSS-CHANNEL-BINDINGS structure
|
||||||
|
described above.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Williams Expires April 19, 2006 [Page 8]
|
||||||
|
|
||||||
|
Internet-Draft GSS-API Channel Bindings October 2005
|
||||||
|
|
||||||
|
|
||||||
|
5.1.1. C-Bindings
|
||||||
|
|
||||||
|
OM_uint32 gss_make_tls_channel_bindings(
|
||||||
|
OM_uint32 *minor_status,
|
||||||
|
const gss_buffer_t client_finished_msg,
|
||||||
|
const gss_buffer_t server_finished_msg,
|
||||||
|
const gss_buffer_t additional_app_data,
|
||||||
|
gss_buffer_t channel_bindings_app_data
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Williams Expires April 19, 2006 [Page 9]
|
||||||
|
|
||||||
|
Internet-Draft GSS-API Channel Bindings October 2005
|
||||||
|
|
||||||
|
|
||||||
|
6. Channel Bindings for IPsec
|
||||||
|
|
||||||
|
The IPsec channel bindings are constructed as an octet string for the
|
||||||
|
'application-data' field of the channel bindings by concatenating the
|
||||||
|
following values and in this order:
|
||||||
|
|
||||||
|
|
||||||
|
1. The ASCII string "GSS IPsec CB:"
|
||||||
|
|
||||||
|
2. The transform ID for encryption, as a 16-bit big-endian word
|
||||||
|
|
||||||
|
3. The transform ID for integrity protection, as 16-bit in big-
|
||||||
|
endian word
|
||||||
|
|
||||||
|
4. NOTE: The following needs to be updated to take into account
|
||||||
|
progress of BTNS.
|
||||||
|
|
||||||
|
5. The initiator ID payload as used in the key exchange protocol
|
||||||
|
used for setting up the channel's SAs
|
||||||
|
|
||||||
|
6. The responder ID payload as used in the key exchange protocol
|
||||||
|
used for setting up the channel's SAs
|
||||||
|
|
||||||
|
7. Any additional application-provided data, encoded as the DER
|
||||||
|
encoding of an ASN.1 OCTET STRING
|
||||||
|
|
||||||
|
Note that traffic selectors are not included. Inclusion of
|
||||||
|
confidentiality/integrity algorithms protects against MITMs that can
|
||||||
|
compromise weaker algorithms that policy might permit, for the same
|
||||||
|
peers, for other traffic.
|
||||||
|
|
||||||
|
6.1. GSS_Make_ipsec_channel_bindings()
|
||||||
|
|
||||||
|
Inputs:
|
||||||
|
|
||||||
|
|
||||||
|
o encr_alg INTEGER,
|
||||||
|
|
||||||
|
o integ_alg INTEGER,
|
||||||
|
|
||||||
|
o initiator_id OCTET_STRING,
|
||||||
|
|
||||||
|
o acceptor_id OCTET_STRING,
|
||||||
|
|
||||||
|
o additional_app_data OCTET STRING
|
||||||
|
|
||||||
|
Outputs:
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Williams Expires April 19, 2006 [Page 10]
|
||||||
|
|
||||||
|
Internet-Draft GSS-API Channel Bindings October 2005
|
||||||
|
|
||||||
|
|
||||||
|
o major_status INTEGER,
|
||||||
|
|
||||||
|
o minor_status INTEGER,
|
||||||
|
|
||||||
|
o channel_bindings_app_data OCTET STRING
|
||||||
|
|
||||||
|
Return major_status codes:
|
||||||
|
|
||||||
|
o GSS_S_COMPLETE indicates no error.
|
||||||
|
|
||||||
|
o GSS_S_FAILURE indicates failure to construct the channel bindings
|
||||||
|
as a result, perhaps, of a memory management, or similar failure.
|
||||||
|
|
||||||
|
This function constructs an OCTET STRING for use as the value of the
|
||||||
|
application-data field of the GSS-CHANNEL-BINDINGS structure
|
||||||
|
described above.
|
||||||
|
|
||||||
|
6.1.1. C-Bindings
|
||||||
|
|
||||||
|
OM_uint32 gss_make_ipsec_channel_bindings(
|
||||||
|
OM_uint32 *minor_status,
|
||||||
|
OM_uint32 encr_alg,
|
||||||
|
OM_uint32 integ_alg,
|
||||||
|
const gss_buffer_t initiator_id,
|
||||||
|
const gss_buffer_t acceptor_id,
|
||||||
|
const gss_buffer_t additional_app_data,
|
||||||
|
gss_buffer_t channel_bindings_app_data
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Williams Expires April 19, 2006 [Page 11]
|
||||||
|
|
||||||
|
Internet-Draft GSS-API Channel Bindings October 2005
|
||||||
|
|
||||||
|
|
||||||
|
7. Security Considerations
|
||||||
|
|
||||||
|
For general security considerations relating to channel bindings see
|
||||||
|
[CHANNEL-BINDINGS]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Williams Expires April 19, 2006 [Page 12]
|
||||||
|
|
||||||
|
Internet-Draft GSS-API Channel Bindings October 2005
|
||||||
|
|
||||||
|
|
||||||
|
8. References
|
||||||
|
|
||||||
|
8.1. Normative
|
||||||
|
|
||||||
|
[RFC1964] Linn, J., "The Kerberos Version 5 GSS-API Mechanism",
|
||||||
|
RFC 1964, June 1996.
|
||||||
|
|
||||||
|
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
|
||||||
|
Requirement Levels", BCP 14, RFC 2119, March 1997.
|
||||||
|
|
||||||
|
[RFC2743] Linn, J., "Generic Security Service Application Program
|
||||||
|
Interface Version 2, Update 1", RFC 2743, January 2000.
|
||||||
|
|
||||||
|
[RFC2744] Wray, J., "Generic Security Service API Version 2 :
|
||||||
|
C-bindings", RFC 2744, January 2000.
|
||||||
|
|
||||||
|
8.2. Informative
|
||||||
|
|
||||||
|
[RFC0854] Postel, J. and J. Reynolds, "Telnet Protocol
|
||||||
|
Specification", STD 8, RFC 854, May 1983.
|
||||||
|
|
||||||
|
[RFC1035] Mockapetris, P., "Domain names - implementation and
|
||||||
|
specification", STD 13, RFC 1035, November 1987.
|
||||||
|
|
||||||
|
[RFC2025] Adams, C., "The Simple Public-Key GSS-API Mechanism
|
||||||
|
(SPKM)", RFC 2025, October 1996.
|
||||||
|
|
||||||
|
[RFC2203] Eisler, M., Chiu, A., and L. Ling, "RPCSEC_GSS Protocol
|
||||||
|
Specification", RFC 2203, September 1997.
|
||||||
|
|
||||||
|
[RFC2478] Baize, E. and D. Pinkas, "The Simple and Protected GSS-API
|
||||||
|
Negotiation Mechanism", RFC 2478, December 1998.
|
||||||
|
|
||||||
|
[RFC2623] Eisler, M., "NFS Version 2 and Version 3 Security Issues
|
||||||
|
and the NFS Protocol's Use of RPCSEC_GSS and Kerberos V5",
|
||||||
|
RFC 2623, June 1999.
|
||||||
|
|
||||||
|
[RFC3530] Shepler, S., Callaghan, B., Robinson, D., Thurlow, R.,
|
||||||
|
Beame, C., Eisler, M., and D. Noveck, "Network File System
|
||||||
|
(NFS) version 4 Protocol", RFC 3530, April 2003.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Williams Expires April 19, 2006 [Page 13]
|
||||||
|
|
||||||
|
Internet-Draft GSS-API Channel Bindings October 2005
|
||||||
|
|
||||||
|
|
||||||
|
Appendix A. Acknowledgments
|
||||||
|
|
||||||
|
The author would like to thank Mike Eisler for his work on the
|
||||||
|
Channel Conjunction Mechanism I-D and for bringing the problem to a
|
||||||
|
head, Sam Hartman for pointing out that channel bindings provide a
|
||||||
|
general solution to the channel binding problem, Jeff Altman for his
|
||||||
|
suggestion of using the TLS finished messages as the TLS channel
|
||||||
|
bindings, Bill Sommerfeld, for his help in developing channel
|
||||||
|
bindings for IPsec, and Radia Perlman for her most helpful comments.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Williams Expires April 19, 2006 [Page 14]
|
||||||
|
|
||||||
|
Internet-Draft GSS-API Channel Bindings October 2005
|
||||||
|
|
||||||
|
|
||||||
|
Author's Address
|
||||||
|
|
||||||
|
Nicolas Williams
|
||||||
|
Sun Microsystems
|
||||||
|
5300 Riata Trace Ct
|
||||||
|
Austin, TX 78727
|
||||||
|
US
|
||||||
|
|
||||||
|
Email: Nicolas.Williams@sun.com
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Williams Expires April 19, 2006 [Page 15]
|
||||||
|
|
||||||
|
Internet-Draft GSS-API Channel Bindings October 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.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Williams Expires April 19, 2006 [Page 16]
|
||||||
|
|
||||||
|
|
@@ -0,0 +1,617 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
NETWORK WORKING GROUP N. Williams
|
||||||
|
Internet-Draft Sun
|
||||||
|
Expires: April 19, 2006 October 16, 2005
|
||||||
|
|
||||||
|
|
||||||
|
GSS-API Domain-Based Service Names and Name Type
|
||||||
|
draft-ietf-kitten-gssapi-domain-based-names-01.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 April 19, 2006.
|
||||||
|
|
||||||
|
Copyright Notice
|
||||||
|
|
||||||
|
Copyright (C) The Internet Society (2005).
|
||||||
|
|
||||||
|
Abstract
|
||||||
|
|
||||||
|
This document describes domainname-based service principal names and
|
||||||
|
the corresponding name type for the Generic Security Service
|
||||||
|
Application Programming Interface (GSS-API).
|
||||||
|
|
||||||
|
Domain-based service names are similar to host-based service names,
|
||||||
|
but using a domain name (not necessarily and Internat domain name)
|
||||||
|
instead of or in addition to a hostname. The primary purpose of
|
||||||
|
domain-based service names is to provide a way to name clustered
|
||||||
|
services after the domain which they service, thereby allowing their
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Williams Expires April 19, 2006 [Page 1]
|
||||||
|
|
||||||
|
Internet-Draft GSS Domain Based Names October 2005
|
||||||
|
|
||||||
|
|
||||||
|
clients to authorize the service's servers based on authentication of
|
||||||
|
their names.
|
||||||
|
|
||||||
|
|
||||||
|
Table of Contents
|
||||||
|
|
||||||
|
1. Conventions used in this document . . . . . . . . . . . . . 3
|
||||||
|
2. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 4
|
||||||
|
3. Name Type OID and Symbolic Name . . . . . . . . . . . . . . 5
|
||||||
|
4. Query and Display Syntaxes . . . . . . . . . . . . . . . . . 6
|
||||||
|
5. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . 7
|
||||||
|
6. Security Considerations . . . . . . . . . . . . . . . . . . 8
|
||||||
|
7. References . . . . . . . . . . . . . . . . . . . . . . . . . 9
|
||||||
|
7.1. Normative . . . . . . . . . . . . . . . . . . . . . . . . . 9
|
||||||
|
7.2. Informative . . . . . . . . . . . . . . . . . . . . . . . . 9
|
||||||
|
Author's Address . . . . . . . . . . . . . . . . . . . . . . 10
|
||||||
|
Intellectual Property and Copyright Statements . . . . . . . 11
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Williams Expires April 19, 2006 [Page 2]
|
||||||
|
|
||||||
|
Internet-Draft GSS Domain Based Names October 2005
|
||||||
|
|
||||||
|
|
||||||
|
1. Conventions used in this document
|
||||||
|
|
||||||
|
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 [RFC2119].
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Williams Expires April 19, 2006 [Page 3]
|
||||||
|
|
||||||
|
Internet-Draft GSS Domain Based Names October 2005
|
||||||
|
|
||||||
|
|
||||||
|
2. Introduction
|
||||||
|
|
||||||
|
The use of hostbased principal names for domain-wide services
|
||||||
|
presents the problem of how to distinguish between an instance of a
|
||||||
|
hostbased service that is authorized to respond for a domain and one
|
||||||
|
that isn't.
|
||||||
|
|
||||||
|
Consider LDAP. LDAP [RFC3377] with SASL [RFC2222] and the Kerberos V
|
||||||
|
mechanism [RFC1964] for the GSS-API [RFC2743] uses a hostbased
|
||||||
|
principal with a service name of "ldap", a reasonable approach,
|
||||||
|
provided there is only one logical LDAP directory in a Kerberos
|
||||||
|
realm's domain, and that all ldap servers in that realm serve that
|
||||||
|
one LDAP directory. If there were other LDAP directories, then
|
||||||
|
clients could not tell which service is authorized to serve which
|
||||||
|
directory, not without assuming a secure method for finding LDAP
|
||||||
|
servers (e.g., DNSSEC). This is a significant, and oft-unstated
|
||||||
|
restriction on users of LDAP.
|
||||||
|
|
||||||
|
Domain based names can eliminate this problem by allowing LDAP
|
||||||
|
service names to indicate which LDAP directory they are authorized to
|
||||||
|
serve.
|
||||||
|
|
||||||
|
A domain-based name consists of three required elements:
|
||||||
|
|
||||||
|
o a service name
|
||||||
|
|
||||||
|
o a domain name
|
||||||
|
|
||||||
|
o a hostname
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Williams Expires April 19, 2006 [Page 4]
|
||||||
|
|
||||||
|
Internet-Draft GSS Domain Based Names October 2005
|
||||||
|
|
||||||
|
|
||||||
|
3. Name Type OID and Symbolic Name
|
||||||
|
|
||||||
|
The new name type has an OID of
|
||||||
|
|
||||||
|
[NOTE: OID assignment to be made with IANA.]
|
||||||
|
|
||||||
|
{iso(1) org(3) dod(6) internet(1) security(5) nametypes(6) gss-
|
||||||
|
domain-based(5)}
|
||||||
|
|
||||||
|
The recommended symbolic name for this GSS-API name type is
|
||||||
|
"GSS_C_NT_DOMAINBASED_SERVICE".
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Williams Expires April 19, 2006 [Page 5]
|
||||||
|
|
||||||
|
Internet-Draft GSS Domain Based Names October 2005
|
||||||
|
|
||||||
|
|
||||||
|
4. Query and Display Syntaxes
|
||||||
|
|
||||||
|
There is a single name syntax for domain-based names.
|
||||||
|
|
||||||
|
The syntax is:
|
||||||
|
|
||||||
|
domain-based-name :=
|
||||||
|
|
||||||
|
| <service> '@' <domain> '@' <hostname>
|
||||||
|
|
||||||
|
Note that for Internet domain names the trailing '.' is not and MUST
|
||||||
|
NOT be included in the domain name (or hostname) parts of the display
|
||||||
|
form GSS-API domain-based MNs.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Williams Expires April 19, 2006 [Page 6]
|
||||||
|
|
||||||
|
Internet-Draft GSS Domain Based Names October 2005
|
||||||
|
|
||||||
|
|
||||||
|
5. Examples
|
||||||
|
|
||||||
|
o ldap@example.tld@ds1.example.tld
|
||||||
|
|
||||||
|
o kadmin@example.tld@kdc1.example.tld
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Williams Expires April 19, 2006 [Page 7]
|
||||||
|
|
||||||
|
Internet-Draft GSS Domain Based Names October 2005
|
||||||
|
|
||||||
|
|
||||||
|
6. Security Considerations
|
||||||
|
|
||||||
|
Use of GSS-API domain-based names may not be negotiable by some GSS-
|
||||||
|
API mechanisms, and some acceptors may not support GSS-API domain-
|
||||||
|
based names. In such cases initiators are left to fallback on the
|
||||||
|
use of hostbased names, in which case the initiators MUST also verify
|
||||||
|
that the acceptor's hostbased name is authorized to provide the given
|
||||||
|
service for the domain that the initiator had wanted.
|
||||||
|
|
||||||
|
The above security consideration also applies to all GSS-API
|
||||||
|
initiators who lack support for domain-based service names.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Williams Expires April 19, 2006 [Page 8]
|
||||||
|
|
||||||
|
Internet-Draft GSS Domain Based Names October 2005
|
||||||
|
|
||||||
|
|
||||||
|
7. References
|
||||||
|
|
||||||
|
7.1. Normative
|
||||||
|
|
||||||
|
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
|
||||||
|
Requirement Levels", BCP 14, RFC 2119, March 1997.
|
||||||
|
|
||||||
|
[RFC2743] Linn, J., "Generic Security Service Application Program
|
||||||
|
Interface Version 2, Update 1", RFC 2743, January 2000.
|
||||||
|
|
||||||
|
7.2. Informative
|
||||||
|
|
||||||
|
[RFC1964] Linn, J., "The Kerberos Version 5 GSS-API Mechanism",
|
||||||
|
RFC 1964, June 1996.
|
||||||
|
|
||||||
|
[RFC2222] Myers, J., "Simple Authentication and Security Layer
|
||||||
|
(SASL)", RFC 2222, October 1997.
|
||||||
|
|
||||||
|
[RFC3377] Hodges, J. and R. Morgan, "Lightweight Directory Access
|
||||||
|
Protocol (v3): Technical Specification", RFC 3377,
|
||||||
|
September 2002.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Williams Expires April 19, 2006 [Page 9]
|
||||||
|
|
||||||
|
Internet-Draft GSS Domain Based Names October 2005
|
||||||
|
|
||||||
|
|
||||||
|
Author's Address
|
||||||
|
|
||||||
|
Nicolas Williams
|
||||||
|
Sun Microsystems
|
||||||
|
5300 Riata Trace Ct
|
||||||
|
Austin, TX 78727
|
||||||
|
US
|
||||||
|
|
||||||
|
Email: Nicolas.Williams@sun.com
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Williams Expires April 19, 2006 [Page 10]
|
||||||
|
|
||||||
|
Internet-Draft GSS Domain Based Names October 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.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Williams Expires April 19, 2006 [Page 11]
|
||||||
|
|
||||||
|
|
@@ -0,0 +1,393 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
NETWORK WORKING GROUP N. Williams
|
||||||
|
Internet-Draft Sun
|
||||||
|
Expires: April 19, 2006 October 16, 2005
|
||||||
|
|
||||||
|
|
||||||
|
Namespace Considerations and Registries for GSS-API Extensions
|
||||||
|
draft-ietf-kitten-gssapi-extensions-iana-01.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 April 19, 2006.
|
||||||
|
|
||||||
|
Copyright Notice
|
||||||
|
|
||||||
|
Copyright (C) The Internet Society (2005).
|
||||||
|
|
||||||
|
Abstract
|
||||||
|
|
||||||
|
This document describes the ways in which the GSS-API may be extended
|
||||||
|
and directs the creation of IANA registries for various GSS-API
|
||||||
|
namespaces.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Williams Expires April 19, 2006 [Page 1]
|
||||||
|
|
||||||
|
Internet-Draft GSS IANA Instructions October 2005
|
||||||
|
|
||||||
|
|
||||||
|
Table of Contents
|
||||||
|
|
||||||
|
1. Conventions used in this document . . . . . . . . . . . . . . . 3
|
||||||
|
2. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3
|
||||||
|
3. Extensions to the GSS-API . . . . . . . . . . . . . . . . . . . 3
|
||||||
|
4. Generic GSS-API Namespaces . . . . . . . . . . . . . . . . . . 3
|
||||||
|
5. Language Binding-Specific GSS-API Namespaces . . . . . . . . . 4
|
||||||
|
6. Extension-Specific GSS-API Namespaces . . . . . . . . . . . . . 4
|
||||||
|
7. Registration Form(s) . . . . . . . . . . . . . . . . . . . . . 4
|
||||||
|
8. Initial Namespace Registrations . . . . . . . . . . . . . . . . 5
|
||||||
|
9. Security Considerations . . . . . . . . . . . . . . . . . . . . 5
|
||||||
|
10. Normative . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
|
||||||
|
Author's Address . . . . . . . . . . . . . . . . . . . . . . . 6
|
||||||
|
Intellectual Property and Copyright Statements . . . . . . . . 7
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Williams Expires April 19, 2006 [Page 2]
|
||||||
|
|
||||||
|
Internet-Draft GSS IANA Instructions October 2005
|
||||||
|
|
||||||
|
|
||||||
|
1. Conventions used in this document
|
||||||
|
|
||||||
|
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 [RFC2119].
|
||||||
|
|
||||||
|
|
||||||
|
2. Introduction
|
||||||
|
|
||||||
|
There is a need for generic and mechanism-specific extensions to the
|
||||||
|
Generic Security Services Application Programming Interface (GSS-
|
||||||
|
API). As such extensions are designed and standardized, both at the
|
||||||
|
IETF and elsewhere, there is a non-trivial risk of namespace
|
||||||
|
pollution and conflicts. To avoid this we set out guidelines for
|
||||||
|
extending the GSS-API and create IANA registries of GSS-API
|
||||||
|
namespaces.
|
||||||
|
|
||||||
|
The registration of name prefixes and constant value ranges is
|
||||||
|
allowed so as to save the IANA the trouble of registering every GSS-
|
||||||
|
API name and constant, and to allow for reservation of portions of
|
||||||
|
some GSS namespaces for private extensions or extensions which lack
|
||||||
|
IETF Standards-Track extensions.
|
||||||
|
|
||||||
|
|
||||||
|
3. Extensions to the GSS-API
|
||||||
|
|
||||||
|
Extensions to the GSS-API can be categorized as follows:
|
||||||
|
o Generic
|
||||||
|
o Implementation-specific
|
||||||
|
o Mechanism-specific
|
||||||
|
o Language binding-specific
|
||||||
|
o Any combination of two or all three of the last three
|
||||||
|
|
||||||
|
Extensions to the GSS-API may be purely semantic, without effect on
|
||||||
|
the GSS-API's namespaces. Or they may introduce new functions,
|
||||||
|
constants, types, etc...; these clearly affect the GSS-API
|
||||||
|
namespaces.
|
||||||
|
|
||||||
|
Extensions that affect the GSS-API namespaces should be registered
|
||||||
|
with the IANA.
|
||||||
|
|
||||||
|
|
||||||
|
4. Generic GSS-API Namespaces
|
||||||
|
|
||||||
|
All the function, constant and type names, as well as all the
|
||||||
|
constant values specified in the base GSS-API specification for the
|
||||||
|
basic generic GSS-API namespace.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Williams Expires April 19, 2006 [Page 3]
|
||||||
|
|
||||||
|
Internet-Draft GSS IANA Instructions October 2005
|
||||||
|
|
||||||
|
|
||||||
|
The generic GSS-API namespaces are:
|
||||||
|
o Type names
|
||||||
|
o Function names
|
||||||
|
o Constant names for each type
|
||||||
|
o Constant values for each type
|
||||||
|
o Mechanism OIDs
|
||||||
|
o Name Type OIDs
|
||||||
|
o Mechanism Attribute OIDs (see [EXTENDED-INQUIRY])
|
||||||
|
|
||||||
|
|
||||||
|
5. Language Binding-Specific GSS-API Namespaces
|
||||||
|
|
||||||
|
<Add text; discuss header, module, library, class, method namespaces
|
||||||
|
and whatever else comes up that is language-specific and appropriate
|
||||||
|
for registration with the IANA.>
|
||||||
|
|
||||||
|
|
||||||
|
6. Extension-Specific GSS-API Namespaces
|
||||||
|
|
||||||
|
Extensions to the GSS-API may create additional namespaces.
|
||||||
|
Instructions to the IANA should included for the handling of such
|
||||||
|
namespaces.
|
||||||
|
|
||||||
|
|
||||||
|
7. Registration Form(s)
|
||||||
|
|
||||||
|
Registrations for GSS-API namespaces SHALL take the following form:
|
||||||
|
|
||||||
|
<TBD>
|
||||||
|
|
||||||
|
The IANA should create a single GSS-API namespace registry, or
|
||||||
|
multiple registries, one for symbolic names and one for constant
|
||||||
|
values, or it may create a registry per-programming language, at its
|
||||||
|
convenience.
|
||||||
|
|
||||||
|
Entries in these registries should consist of all the fields from
|
||||||
|
their corresponding registration entries.
|
||||||
|
|
||||||
|
Entries SHOULD be sorted by object type, proggamming language, symbol
|
||||||
|
name.
|
||||||
|
|
||||||
|
<Add text on guidelines for IANA consideration of registration
|
||||||
|
applications, particularly with respect to entries lacking normative
|
||||||
|
references, "magic" entries (e.g., special values of 'time' types
|
||||||
|
which indicate something other than absolute or relative time, such
|
||||||
|
as GSS_C_INDEFINITE), expert review requirements (if any) for
|
||||||
|
registrations lacking normative references, etc....>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Williams Expires April 19, 2006 [Page 4]
|
||||||
|
|
||||||
|
Internet-Draft GSS IANA Instructions October 2005
|
||||||
|
|
||||||
|
|
||||||
|
8. Initial Namespace Registrations
|
||||||
|
|
||||||
|
<Add registration entries for namespaces (name prefixes) for RFC2743/
|
||||||
|
RFC2744/RFC2853.>
|
||||||
|
|
||||||
|
<Add registration entries for private namespaces (name prefixes) for
|
||||||
|
implementation- and/or platform-specific extensions.>
|
||||||
|
|
||||||
|
|
||||||
|
9. Security Considerations
|
||||||
|
|
||||||
|
This document has no security considerations.
|
||||||
|
|
||||||
|
10. Normative
|
||||||
|
|
||||||
|
[EXTENDED-INQUIRY]
|
||||||
|
Williams, N., "Extended Generic Security Service Mechanism
|
||||||
|
Inquiry APIs",
|
||||||
|
draft-ietf-kitten-extended-mech-inquiry-00.txt (work in
|
||||||
|
progress).
|
||||||
|
|
||||||
|
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
|
||||||
|
Requirement Levels", BCP 14, RFC 2119, March 1997.
|
||||||
|
|
||||||
|
[RFC2743] Linn, J., "Generic Security Service Application Program
|
||||||
|
Interface Version 2, Update 1", RFC 2743, January 2000.
|
||||||
|
|
||||||
|
[RFC2744] Wray, J., "Generic Security Service API Version 2 :
|
||||||
|
C-bindings", RFC 2744, January 2000.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Williams Expires April 19, 2006 [Page 5]
|
||||||
|
|
||||||
|
Internet-Draft GSS IANA Instructions October 2005
|
||||||
|
|
||||||
|
|
||||||
|
Author's Address
|
||||||
|
|
||||||
|
Nicolas Williams
|
||||||
|
Sun Microsystems
|
||||||
|
5300 Riata Trace Ct
|
||||||
|
Austin, TX 78727
|
||||||
|
US
|
||||||
|
|
||||||
|
Email: Nicolas.Williams@sun.com
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Williams Expires April 19, 2006 [Page 6]
|
||||||
|
|
||||||
|
Internet-Draft GSS IANA Instructions October 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.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Williams Expires April 19, 2006 [Page 7]
|
||||||
|
|
||||||
|
|
617
doc/standardisation/draft-ietf-kitten-gssapi-store-cred-01.txt
Normal file
617
doc/standardisation/draft-ietf-kitten-gssapi-store-cred-01.txt
Normal file
@@ -0,0 +1,617 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
NETWORK WORKING GROUP N. Williams
|
||||||
|
Internet-Draft Sun
|
||||||
|
Expires: April 19, 2006 October 16, 2005
|
||||||
|
|
||||||
|
|
||||||
|
GSS-API Extension for Storing Delegated Credentials
|
||||||
|
draft-ietf-kitten-gssapi-store-cred-01.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 April 19, 2006.
|
||||||
|
|
||||||
|
Copyright Notice
|
||||||
|
|
||||||
|
Copyright (C) The Internet Society (2005).
|
||||||
|
|
||||||
|
Abstract
|
||||||
|
|
||||||
|
This document defines a new function for the GSS-API which allows
|
||||||
|
applications to store delegated (and other) credentials in the
|
||||||
|
implicit GSS-API credential store. This is needed for GSS-API
|
||||||
|
applications to use delegated credentials as they would use other
|
||||||
|
credentials.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Williams Expires April 19, 2006 [Page 1]
|
||||||
|
|
||||||
|
Internet-Draft GSS_Store_cred() October 2005
|
||||||
|
|
||||||
|
|
||||||
|
Table of Contents
|
||||||
|
|
||||||
|
1. Conventions used in this document . . . . . . . . . . . . . . 3
|
||||||
|
2. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 4
|
||||||
|
3. GSS_Store_cred() . . . . . . . . . . . . . . . . . . . . . . . 5
|
||||||
|
4. C-Bindings . . . . . . . . . . . . . . . . . . . . . . . . . . 7
|
||||||
|
5. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
|
||||||
|
6. Security considerations . . . . . . . . . . . . . . . . . . . 9
|
||||||
|
7. Normative . . . . . . . . . . . . . . . . . . . . . . . . . . 9
|
||||||
|
Author's Address . . . . . . . . . . . . . . . . . . . . . . . 10
|
||||||
|
Intellectual Property and Copyright Statements . . . . . . . . 11
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Williams Expires April 19, 2006 [Page 2]
|
||||||
|
|
||||||
|
Internet-Draft GSS_Store_cred() October 2005
|
||||||
|
|
||||||
|
|
||||||
|
1. Conventions used in this document
|
||||||
|
|
||||||
|
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 [RFC2119].
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Williams Expires April 19, 2006 [Page 3]
|
||||||
|
|
||||||
|
Internet-Draft GSS_Store_cred() October 2005
|
||||||
|
|
||||||
|
|
||||||
|
2. Introduction
|
||||||
|
|
||||||
|
The GSS-API [RFC2743] clearly assumes that credentials exist in an
|
||||||
|
implicit store whence they can be acquired using GSS_Acquire_cred()
|
||||||
|
and GSS_Add_cred() or through use of the default credential.
|
||||||
|
Multiple credential stores may exist on a given host, but only one
|
||||||
|
store may be accessed by GSS_Acquire_cred() and GSS_Add_cred() at any
|
||||||
|
given time.
|
||||||
|
|
||||||
|
This assumption can be seen in sections 1.1.1.2 and 1.1.1.3 of
|
||||||
|
[RFC2743] as well as in section 3.5 of [RFC2744].
|
||||||
|
|
||||||
|
Note to the RFC editor: please remove this note before publication.]
|
||||||
|
|
||||||
|
Applications may be able to change the credential store from which
|
||||||
|
credentials can be acquired, either by changing user contexts (where
|
||||||
|
the applications have the privilege to do so) or by other means
|
||||||
|
(where a user may have multiple credential stores).
|
||||||
|
|
||||||
|
Some GSS-API acceptor applications always change user contexts, after
|
||||||
|
accepting a GSS-API security context and making appropriate
|
||||||
|
authorization checks, to the user context corresponding to the
|
||||||
|
initiator principal name or to a context requested by the initiator.
|
||||||
|
The means by which credential stores are managed are generally beyond
|
||||||
|
the scope of the GSS-API.
|
||||||
|
|
||||||
|
In the case of delegated credential handles however, such credentials
|
||||||
|
do not exist in the acceptor's credential store or in the credential
|
||||||
|
stores of the user contexts to which the acceptor application might
|
||||||
|
change - which is precisely the raison d'etre of credential
|
||||||
|
delegation. But the GSS-API provides no mechanism by which delegated
|
||||||
|
credential handles can be made available for acquisition through
|
||||||
|
GSS_Acquire_cred()/GSS_Add_cred(). The GSS-API also does not provide
|
||||||
|
any credential import/export interfaces like the GSS-API context
|
||||||
|
import/export interfaces.
|
||||||
|
|
||||||
|
Thus acceptors are limited to making only direct use of delegated
|
||||||
|
credential handles and only with GSS_Init_sec_context(),
|
||||||
|
GSS_Inquire_cred*() and GSS_Release_cred(). This limitation is
|
||||||
|
particularly onerous on Unix systems where a call to exec() to
|
||||||
|
replace the process image obliterates the delegated credentials
|
||||||
|
handle.
|
||||||
|
|
||||||
|
In order to make delegated credentials generally as useful as
|
||||||
|
credentials that can be acquired with GSS_Acquire_cred() and
|
||||||
|
GSS_Add_cred() a primitive is needed which allows storing of
|
||||||
|
credentials in the implicit credential store. This primitive we call
|
||||||
|
"GSS_Store_cred()."
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Williams Expires April 19, 2006 [Page 4]
|
||||||
|
|
||||||
|
Internet-Draft GSS_Store_cred() October 2005
|
||||||
|
|
||||||
|
|
||||||
|
3. GSS_Store_cred()
|
||||||
|
|
||||||
|
Inputs:
|
||||||
|
|
||||||
|
o input_cred_handle CREDENTIAL HANDLE, -- credential to store; MUST
|
||||||
|
NOT be GSS_C_NO_CREDENTIAL
|
||||||
|
|
||||||
|
o cred_usage INTEGER -- 0=INITIATE-AND-ACCEPT, 1=INITIATE-ONLY,
|
||||||
|
2=ACCEPT-ONLY
|
||||||
|
|
||||||
|
o desired_mech_element OBJECT IDENTIFIER, -- if GSS_C_NULL_OID then
|
||||||
|
store all the elements of the input_cred_handle, otherwise store
|
||||||
|
only the element of the corresponding mechanism
|
||||||
|
|
||||||
|
o overwrite_cred BOOLEAN, -- if TRUE replace any credential for the
|
||||||
|
same principal in the credential store
|
||||||
|
|
||||||
|
o default_cred BOOLEAN -- if TRUE make the stored credential
|
||||||
|
available as the default credential (for acquisition with
|
||||||
|
GSS_C_NO_NAME as the desired name or for use as
|
||||||
|
GSS_C_NO_CREDENTIAL)
|
||||||
|
|
||||||
|
Outputs:
|
||||||
|
|
||||||
|
o major_status INTEGER,
|
||||||
|
|
||||||
|
o minor_status INTEGER,
|
||||||
|
|
||||||
|
o mech_elements_stored SET OF OBJECT IDENTIFIER, -- the set of
|
||||||
|
mechanism OIDs for which credential elements were successfully
|
||||||
|
stored
|
||||||
|
|
||||||
|
o cred_usage_stored INTEGER -- like cred_usage, but indicates what
|
||||||
|
kind of credential was stored (useful when the cred_usage input
|
||||||
|
parameter is set to INITIATE-AND-ACCEPT)
|
||||||
|
|
||||||
|
Return major_status codes:
|
||||||
|
|
||||||
|
o GSS_S_COMPLETE indicates that the credentials were successfully
|
||||||
|
stored.
|
||||||
|
|
||||||
|
o GSS_S_CREDENTIALS_EXPIRED indicates that the input credentials had
|
||||||
|
expired or expired before they could be stored.
|
||||||
|
|
||||||
|
o GSS_S_NO_CRED indicates that no input credentials were given.
|
||||||
|
|
||||||
|
o GSS_S_UNAVAILABLE indicates that the credential store is not
|
||||||
|
available.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Williams Expires April 19, 2006 [Page 5]
|
||||||
|
|
||||||
|
Internet-Draft GSS_Store_cred() October 2005
|
||||||
|
|
||||||
|
|
||||||
|
o GSS_S_DUPLICATE_ELEMENT indicates that an element of the input
|
||||||
|
credential could not be stored because a credential for the same
|
||||||
|
principal exists in the current credential store and the
|
||||||
|
overwrite_cred input argument was FALSE.
|
||||||
|
|
||||||
|
o GSS_S_FAILURE indicates that the credential could not be stored
|
||||||
|
for some other reason. The minor status code may provide more
|
||||||
|
information if a non-GSS_C_NULL_OID desired_mech_element was
|
||||||
|
given.
|
||||||
|
|
||||||
|
GSS_Store_cred() is used to store, in the current credential store, a
|
||||||
|
given credential that has either been acquired from a different
|
||||||
|
credential store or been accepted as a delegated credential.
|
||||||
|
|
||||||
|
Specific mechanism elements of a credential can be stored one at a
|
||||||
|
time by specifying a non-GSS_C_NULL_OID mechanism OID as the
|
||||||
|
desired_mech_element input argument, in which case the minor status
|
||||||
|
output SHOULD have a mechanism-specific value when the major status
|
||||||
|
is not GSS_S_COMPLETE.
|
||||||
|
|
||||||
|
The initiator, acceptor or both usages of the input credential may be
|
||||||
|
stored as per the cred_usage input argument.
|
||||||
|
|
||||||
|
The credential elements that were actually stored, when the major
|
||||||
|
status is GSS_S_COMPLETE, are indicated through the cred_usage_stored
|
||||||
|
and mech_elements_stored function outputs.
|
||||||
|
|
||||||
|
If credentials already exist in the current store for the principal
|
||||||
|
of the input_cred_handle, then those credentials are not replaced
|
||||||
|
with the input credentials unless the overwrite_cred input argument
|
||||||
|
is TRUE.
|
||||||
|
|
||||||
|
Finally, if the current credential store has no default credential
|
||||||
|
(that is, no credential that could be acquired for GSS_C_NO_NAME) or
|
||||||
|
if the default_cred input argument is TRUE, and the input credential
|
||||||
|
can be successfully stored, then the input credential will be
|
||||||
|
available for acquisition with GSS_C_NO_NAME as the desired name
|
||||||
|
input to GSS_Acquire_cred() or GSS_Add_cred() as well as for use as
|
||||||
|
GSS_C_NO_CREDENTIAL for the cred_handle inputs to GSS_Inquire_cred(),
|
||||||
|
GSS_Inquire_cred_by_mech(), GSS_Init_sec_context() and
|
||||||
|
GSS_Accept_sec_context().
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Williams Expires April 19, 2006 [Page 6]
|
||||||
|
|
||||||
|
Internet-Draft GSS_Store_cred() October 2005
|
||||||
|
|
||||||
|
|
||||||
|
4. C-Bindings
|
||||||
|
|
||||||
|
The C-bindings for GSS_Store_cred() make use of types from and are
|
||||||
|
designed based on the style of the GSS-APIv2 C-Bindings [RFC2744].
|
||||||
|
|
||||||
|
|
||||||
|
OM_uint32 gss_store_cred(
|
||||||
|
OM_uint32 *minor_status,
|
||||||
|
gss_cred_id_t input_cred,
|
||||||
|
gss_cred_usage_t cred_usage,
|
||||||
|
const gss_OID desired_mech,
|
||||||
|
OM_uint32 overwrite_cred,
|
||||||
|
OM_uint32 default_cred,
|
||||||
|
gss_OID_set *elements_stored,
|
||||||
|
gss_cred_usage_t *cred_usage_stored)
|
||||||
|
|
||||||
|
|
||||||
|
Figure 1
|
||||||
|
|
||||||
|
The two boolean arguments, 'overwrite_cred' and 'default_cred' are
|
||||||
|
typed as OM_uint32; 0 corresponds to FALSE, non-zero values
|
||||||
|
correspond to TRUE.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Williams Expires April 19, 2006 [Page 7]
|
||||||
|
|
||||||
|
Internet-Draft GSS_Store_cred() October 2005
|
||||||
|
|
||||||
|
|
||||||
|
5. Examples
|
||||||
|
|
||||||
|
The intended usage of GSS_Store_cred() is to make delegated
|
||||||
|
credentials available to child processes of GSS-API acceptor
|
||||||
|
applications. Example pseudo-code:
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* <GSS_Accept_sec_context() loop resulting in GSS_S_COMPLETE,
|
||||||
|
* an initiator name (hereafter, "src_name") and a delegated
|
||||||
|
* credential handle (hereafter "deleg_cred").>
|
||||||
|
*
|
||||||
|
* <"requested_username" is a username derived from the
|
||||||
|
* initiator name or explicitly requested by the initiator
|
||||||
|
* application.>
|
||||||
|
*/
|
||||||
|
...
|
||||||
|
|
||||||
|
if (authorize_gss_client(src_name, requested_username)) {
|
||||||
|
/*
|
||||||
|
* For Unix-type platforms this may mean calling setuid() and
|
||||||
|
* it may or may not also mean setting/unsetting such
|
||||||
|
* environment variables as KRB5CCNAME and what not.
|
||||||
|
*/
|
||||||
|
if (change_user_context(requested_username))
|
||||||
|
(void) gss_store_creds(&minor_status, deleg_cred,
|
||||||
|
GSS_C_INITIATE, actual_mech,
|
||||||
|
0, 1, NULL, NULL);
|
||||||
|
}
|
||||||
|
else ...
|
||||||
|
}
|
||||||
|
else ...
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Williams Expires April 19, 2006 [Page 8]
|
||||||
|
|
||||||
|
Internet-Draft GSS_Store_cred() October 2005
|
||||||
|
|
||||||
|
|
||||||
|
6. Security considerations
|
||||||
|
|
||||||
|
Acceptor applications MUST only store delegated credentials into
|
||||||
|
appropriate credential stores and only after proper authorization of
|
||||||
|
the authenticated initiator principal to the requested service(s).
|
||||||
|
|
||||||
|
Acceptor applications that have no use for delegated credentials MUST
|
||||||
|
release them (such acceptor applications that use the GSS-API
|
||||||
|
C-Bindings may simply provide a NULL value for the
|
||||||
|
delegated_cred_handle argument to gss_accept_sec_context()).
|
||||||
|
|
||||||
|
7. Normative
|
||||||
|
|
||||||
|
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
|
||||||
|
Requirement Levels", BCP 14, RFC 2119, March 1997.
|
||||||
|
|
||||||
|
[RFC2743] Linn, J., "Generic Security Service Application Program
|
||||||
|
Interface Version 2, Update 1", RFC 2743, January 2000.
|
||||||
|
|
||||||
|
[RFC2744] Wray, J., "Generic Security Service API Version 2 :
|
||||||
|
C-bindings", RFC 2744, January 2000.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Williams Expires April 19, 2006 [Page 9]
|
||||||
|
|
||||||
|
Internet-Draft GSS_Store_cred() October 2005
|
||||||
|
|
||||||
|
|
||||||
|
Author's Address
|
||||||
|
|
||||||
|
Nicolas Williams
|
||||||
|
Sun Microsystems
|
||||||
|
5300 Riata Trace Ct
|
||||||
|
Austin, TX 78727
|
||||||
|
US
|
||||||
|
|
||||||
|
Email: Nicolas.Williams@sun.com
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Williams Expires April 19, 2006 [Page 10]
|
||||||
|
|
||||||
|
Internet-Draft GSS_Store_cred() October 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.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Williams Expires April 19, 2006 [Page 11]
|
||||||
|
|
||||||
|
|
1233
doc/standardisation/draft-ietf-kitten-gssapi-v3-guide-to-01.txt
Normal file
1233
doc/standardisation/draft-ietf-kitten-gssapi-v3-guide-to-01.txt
Normal file
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,953 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
NETWORK WORKING GROUP N. Williams
|
||||||
|
Internet-Draft Sun
|
||||||
|
Expires: April 19, 2006 October 16, 2005
|
||||||
|
|
||||||
|
|
||||||
|
Stackable Generic Security Service Pseudo-Mechanisms
|
||||||
|
draft-ietf-kitten-stackable-pseudo-mechs-01.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 April 19, 2006.
|
||||||
|
|
||||||
|
Copyright Notice
|
||||||
|
|
||||||
|
Copyright (C) The Internet Society (2005).
|
||||||
|
|
||||||
|
Abstract
|
||||||
|
|
||||||
|
This document defines and formalizes the concept of stackable pseudo-
|
||||||
|
mechanisms, and associated concept of composite mechanisms, for the
|
||||||
|
Generic Security Service Application Programming Interface (GSS-API),
|
||||||
|
as well as several utility functions.
|
||||||
|
|
||||||
|
Stackable GSS-API pseudo-mechanisms allow for the composition of new
|
||||||
|
mechanisms that combine features from multiple mechanisms. Stackable
|
||||||
|
mechanisms that add support for Perfect Forward Security (PFS), data
|
||||||
|
compression, additional authentication factors, etc... are
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Williams Expires April 19, 2006 [Page 1]
|
||||||
|
|
||||||
|
Internet-Draft Stackable GSS Mechs October 2005
|
||||||
|
|
||||||
|
|
||||||
|
facilitated by this document.
|
||||||
|
|
||||||
|
|
||||||
|
Table of Contents
|
||||||
|
|
||||||
|
1. Conventions used in this document . . . . . . . . . . . . 3
|
||||||
|
2. Introduction . . . . . . . . . . . . . . . . . . . . . . . 3
|
||||||
|
2.1. Glossary . . . . . . . . . . . . . . . . . . . . . . . . . 3
|
||||||
|
3. Mechanism Composition Issues . . . . . . . . . . . . . . . 4
|
||||||
|
4. Mechanism Composition . . . . . . . . . . . . . . . . . . 5
|
||||||
|
4.1. Construction of Composed Mechanism OIDs . . . . . . . . . 5
|
||||||
|
4.2. Mechanism Composition Rules . . . . . . . . . . . . . . . 6
|
||||||
|
4.3. Interfacing with Composite Mechanisms . . . . . . . . . . 7
|
||||||
|
4.4. Compatibility with the Basic GSS-APIv2u1 Interfaces . . . 7
|
||||||
|
4.5. Processing of Tokens for Composite Mechanisms . . . . . . 8
|
||||||
|
5. New GSS-API Interfaces . . . . . . . . . . . . . . . . . . 8
|
||||||
|
5.1. New GSS-API Function Interfaces . . . . . . . . . . . . . 9
|
||||||
|
5.1.1. GSS_Compose_oid() . . . . . . . . . . . . . . . . . . . . 9
|
||||||
|
5.1.2. GSS_Decompose_oid() . . . . . . . . . . . . . . . . . . . 10
|
||||||
|
5.1.3. GSS_Release_oid() . . . . . . . . . . . . . . . . . . . . 10
|
||||||
|
5.1.4. GSS_Indicate_negotiable_mechs() . . . . . . . . . . . . . 11
|
||||||
|
5.1.5. GSS_Negotiate_mechs() . . . . . . . . . . . . . . . . . . 12
|
||||||
|
5.1.6. C-Bindings . . . . . . . . . . . . . . . . . . . . . . . . 12
|
||||||
|
6. Negotiation of Composite Mechanisms . . . . . . . . . . . 13
|
||||||
|
6.1. Negotiation of Composite Mechanisms Through SPNEGO . . . . 14
|
||||||
|
7. Requirements for Mechanism Designers . . . . . . . . . . . 14
|
||||||
|
8. IANA Considerations . . . . . . . . . . . . . . . . . . . 14
|
||||||
|
9. Security considerations . . . . . . . . . . . . . . . . . 14
|
||||||
|
10. Normative . . . . . . . . . . . . . . . . . . . . . . . . 15
|
||||||
|
Author's Address . . . . . . . . . . . . . . . . . . . . . 16
|
||||||
|
Intellectual Property and Copyright Statements . . . . . . 17
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Williams Expires April 19, 2006 [Page 2]
|
||||||
|
|
||||||
|
Internet-Draft Stackable GSS Mechs October 2005
|
||||||
|
|
||||||
|
|
||||||
|
1. Conventions used in this document
|
||||||
|
|
||||||
|
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 [RFC2119].
|
||||||
|
|
||||||
|
|
||||||
|
2. Introduction
|
||||||
|
|
||||||
|
Recent discussions within the IETF have shown the need for a
|
||||||
|
refactoring of the features that GSS-API mechanisms may provide and a
|
||||||
|
way to compose new mechanisms from smaller components.
|
||||||
|
|
||||||
|
One way to do this is to "stack" multiple mechanisms on top of each
|
||||||
|
other such that the features of all of them are summed into a new,
|
||||||
|
composite mechanism.
|
||||||
|
|
||||||
|
One existing GSS-API mechanism, LIPKEY [LIPKEY], is essentially
|
||||||
|
stacked over another, SPKM-3 [LIPKEY] (although LIPKEY does not
|
||||||
|
conform to the stackable pseduo-mechanism framework described
|
||||||
|
herein).
|
||||||
|
|
||||||
|
The first truly stackable pseudo-mechanism proposed, CCM [CCM], is
|
||||||
|
intended for signalling, during negotiation of mechanisms, the
|
||||||
|
willingness of an initiator and/or acceptor to utilize channel
|
||||||
|
bindings
|
||||||
|
|
||||||
|
Since then other similar mechanism compositing needs and ideas have
|
||||||
|
come up, along with problems such as "what combinations are possible,
|
||||||
|
useful, reasonable and secure?" This document addresses those
|
||||||
|
problems. It introduces the concepts of stackable pseudo-mechanisms,
|
||||||
|
composite mechanisms and mechanism features or attributes, as well as
|
||||||
|
new inquiry and related interfaces to help in the mechanism
|
||||||
|
compositing.
|
||||||
|
|
||||||
|
(Mechanism features are more formally referred to as "mechanism
|
||||||
|
attributes" below. The terms "feature" and mechanism attribute" are
|
||||||
|
sometimes used interchangeably.)
|
||||||
|
|
||||||
|
2.1. Glossary
|
||||||
|
|
||||||
|
Concrete GSS-API mechanism
|
||||||
|
A mechanism which can be used standalone. Examples include: the
|
||||||
|
Kerberos V mechanism [CFX], SPKM-1/2 [SPKM] and SPKM-3 [LIPKEY].
|
||||||
|
|
||||||
|
GSS-API Pseudo-mechanism
|
||||||
|
A mechanism which uses other mechanisms in the construction of its
|
||||||
|
context and/or per-message tokens and security contexts. SPNEGO
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Williams Expires April 19, 2006 [Page 3]
|
||||||
|
|
||||||
|
Internet-Draft Stackable GSS Mechs October 2005
|
||||||
|
|
||||||
|
|
||||||
|
is an example of this.
|
||||||
|
|
||||||
|
Stackable GSS-API pseudo-mechanism
|
||||||
|
A mechanism which uses a single other mechanism in the
|
||||||
|
construction of its tokens such that the OID of the composite
|
||||||
|
result can be constructed by prepending the OID of the stackable
|
||||||
|
pseudo-mechanism to the OID of the mechanism to be used by it.
|
||||||
|
|
||||||
|
Mechanism-negotiation GSS-API pseudo-mechanism
|
||||||
|
A GSS-API mechanism that negotiates the use of GSS-API mechanisms.
|
||||||
|
SPNEGO [SPNEGO] is an example of this.
|
||||||
|
|
||||||
|
|
||||||
|
3. Mechanism Composition Issues
|
||||||
|
|
||||||
|
Interfacing with composite mechanisms through the existing GSS-API
|
||||||
|
interfaces and the handling of composite mechanism tokens is
|
||||||
|
straightforward enough and described in Section 4.
|
||||||
|
|
||||||
|
However, the concepts of stackable and composite mechanisms do give
|
||||||
|
rise to several minor problems:
|
||||||
|
|
||||||
|
o How to determine allowable combinations of mechanisms;
|
||||||
|
o How to encode composite mechanism OIDs;
|
||||||
|
o How to decompose the OID of a composite mechanism and process its
|
||||||
|
tokens properly;
|
||||||
|
o Application interfacing issues such as:
|
||||||
|
|
||||||
|
* Whether and/or which composite mechanisms should be listed by
|
||||||
|
GSS_Indicate_mechs();
|
||||||
|
* Whether and/or which composite mechanisms not listed by
|
||||||
|
GSS_Indicate_mechs() may nonetheless be available for use by
|
||||||
|
applications and how applications can detect their
|
||||||
|
availability;
|
||||||
|
* What additional, if any, interfaces should be provided to help
|
||||||
|
applications select appropriate mechanisms;
|
||||||
|
o
|
||||||
|
|
||||||
|
Mechanism negotiation issues (related to the application interface
|
||||||
|
issues listed above), such as: vspace blankLines='1'/>
|
||||||
|
* Should applications advertise composite mechanisms in SPNEGO or
|
||||||
|
other application-specific mechanism negotiation contexts?
|
||||||
|
* Or should applications implicitly advertise composite
|
||||||
|
mechanisms by advertising concrete and stackable pseudo-
|
||||||
|
mechanisms in SPNEGO or other application-specific mechanism
|
||||||
|
negotiation contexts?
|
||||||
|
|
||||||
|
Section 4 addresses the OID composition, decomposition and encoding
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Williams Expires April 19, 2006 [Page 4]
|
||||||
|
|
||||||
|
Internet-Draft Stackable GSS Mechs October 2005
|
||||||
|
|
||||||
|
|
||||||
|
issues, as well as basic interfacing and token handling issues.
|
||||||
|
|
||||||
|
Section 5 addresses interfacing issues more generally through the
|
||||||
|
specification of additional, optional APIs.
|
||||||
|
|
||||||
|
Section 6 addresses mechanism negotiation issues.
|
||||||
|
|
||||||
|
|
||||||
|
4. Mechanism Composition
|
||||||
|
|
||||||
|
Mechanism composition by stacking pseudo-mechanisms on a concrete
|
||||||
|
mechanism is conceptually simple: join the OIDs of the several
|
||||||
|
mechanisms in question and process GSS-API tokens and routine calls
|
||||||
|
through the top-most pseudo-mechanism in a stack, which can then, if
|
||||||
|
necessary, recursively call the GSS-API to process any tokens for the
|
||||||
|
remainder of the stack.
|
||||||
|
|
||||||
|
Some stackable pseudo-mechanisms may do nothing more than perform
|
||||||
|
transformations on application data (e.g., compression); such pseudo-
|
||||||
|
mechanisms will generally chain the processing of tokens and routine
|
||||||
|
calls to the mechanisms below them in the stack.
|
||||||
|
|
||||||
|
Other stackable pseudo-mechanisms may utilize the mechanisms below
|
||||||
|
them only during security context setup. For example, a stackable
|
||||||
|
pseudo-mechanism could perform a Diffie-Hellman key exchange and
|
||||||
|
authenticate it by binding a security context established with the
|
||||||
|
mechanism stacked below it; such a mechanism would provide its own
|
||||||
|
per-message tokens.
|
||||||
|
|
||||||
|
4.1. Construction of Composed Mechanism OIDs
|
||||||
|
|
||||||
|
Composition of mechanism OIDs is simple: prepend the OID of one
|
||||||
|
pseudo-mechanism to the OID of another mechanism (composite or
|
||||||
|
otherwise), but there MUST always be at least one final mechanism OID
|
||||||
|
and it MUST be useful standalone (i.e., it MUST NOT be a pseudo-
|
||||||
|
mechanism). A composite mechanism OID forms, essentially, a stack.
|
||||||
|
|
||||||
|
The encoding of composed mechanism OIDs is not quite the
|
||||||
|
concatenation of the component OIDs' encodings, however. This is
|
||||||
|
because the first two arcs of ASN.1 OIDs are encoded differently from
|
||||||
|
subsequent arcs (the first two arcs have a limited namespace and are
|
||||||
|
encoded as a single octet), so were composite mechanism OIDs to be
|
||||||
|
encoded as the concatenation of the component OIDs the result would
|
||||||
|
not decode as the concatenation of the component OIDs. To avoid this
|
||||||
|
problem the first two arcs of each component of a composite mechanism
|
||||||
|
OID, other than the leading component, will be encoded as other arcs
|
||||||
|
would.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Williams Expires April 19, 2006 [Page 5]
|
||||||
|
|
||||||
|
Internet-Draft Stackable GSS Mechs October 2005
|
||||||
|
|
||||||
|
|
||||||
|
Decomposition of composite mechanism OIDs is similar, with each
|
||||||
|
pseudo-mechanism in the stack being able to determine the OID suffix
|
||||||
|
from knowledge of its own OID(s).
|
||||||
|
|
||||||
|
New pseudo-mechanisms MAY be allocated OIDs from the prefix given
|
||||||
|
below as follows by assignment of a sub-string of OID arcs to be
|
||||||
|
appended to this prefix. This prefix OID is:
|
||||||
|
|
||||||
|
<TBD> [1.3.6.1.5.5.11 appears to be available, registration w/ IANA
|
||||||
|
TBD]
|
||||||
|
|
||||||
|
All OID allocations below this OID MUST be for stackable pseudo-
|
||||||
|
mechanisms and MUST consist of a single arc. This will make it
|
||||||
|
possible to decompose the OIDs of composite mechanisms without
|
||||||
|
necessarily knowing a priori the OIDs of the component stackable
|
||||||
|
pseudo-mechanisms.
|
||||||
|
|
||||||
|
4.2. Mechanism Composition Rules
|
||||||
|
|
||||||
|
All new stackable pseudo-mechanisms MUST specify the rules for
|
||||||
|
determining whether they can stack above a given mechanism, composite
|
||||||
|
or otherwise. Such rules may be based on specific mechanism
|
||||||
|
attribute OID sets [EXTENDED-INQUIRY] and/or specific mechanism OIDs
|
||||||
|
(composite and otherwise).
|
||||||
|
|
||||||
|
All stackable pseudo-mechanisms MUST have the following mechanism
|
||||||
|
composition rule relating to unknown mechanism attributes:
|
||||||
|
|
||||||
|
o composition with mechanisms supporting unknown mechanism
|
||||||
|
attributes MUST NOT be permitted.
|
||||||
|
|
||||||
|
This rule protects against compositions which cannot be considered
|
||||||
|
today but which might nonetheless arise due to the introduction of
|
||||||
|
new mechanisms and which might turn out to be insecure or otherwise
|
||||||
|
undesirable.
|
||||||
|
|
||||||
|
Mechanism composition rules for stackable pseudo-mechanisms MAY and
|
||||||
|
SHOULD be updated as new GSS-API mechanism attributes and mechanisms
|
||||||
|
sporting them are introduced. The specifications of mechanisms that
|
||||||
|
introduce new mechanism attributes or which otherwise should not be
|
||||||
|
combined with others in ways which would be permitted under existing
|
||||||
|
rules SHOULD also update the mechanism composition rules of affected
|
||||||
|
pseudo-mechanisms.
|
||||||
|
|
||||||
|
A RECOMMENDED way to describe the stacking rules for stackable
|
||||||
|
mechanisms is as an ordered sequence of "MAY stack above X
|
||||||
|
mechanism," "REQUIRES Y mechanism feature(s)," "MUST NOT stack above
|
||||||
|
Z mechanism," and/or "MUST NOT stack above a mechanism with Z
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Williams Expires April 19, 2006 [Page 6]
|
||||||
|
|
||||||
|
Internet-Draft Stackable GSS Mechs October 2005
|
||||||
|
|
||||||
|
|
||||||
|
mechanism feature(s)."
|
||||||
|
|
||||||
|
For example a stackable mechanism that provides its own per-msg
|
||||||
|
tokens and does not use the underlying mechnism's per-msg token
|
||||||
|
facilities might require a rule such as "MUST NOT stack above a
|
||||||
|
mechanism with the GSS_C_MA_COMPRESS mechanism feature."
|
||||||
|
|
||||||
|
4.3. Interfacing with Composite Mechanisms
|
||||||
|
|
||||||
|
The basic GSS-API [RFC2743] interfaces MUST NOT accept as input or
|
||||||
|
provide as output the OID of any stackable pseudo-mechanism.
|
||||||
|
Composite mechanisms MUST be treated as concrete mechanisms by the
|
||||||
|
basic GSS-API interfaces [RFC2743].
|
||||||
|
|
||||||
|
Thus the way in which a composite mechanism is used by applications
|
||||||
|
with the basic GSS-API (version 2, update 1) is straightforward:
|
||||||
|
exactly as if composite mechanisms were normal GSS-API mechanisms.
|
||||||
|
|
||||||
|
This is facilitated by the fact that in all cases where the GSS-API
|
||||||
|
implementation might need to know how to process or create a token it
|
||||||
|
has the necessary contextual information, that is, the mechanism OID,
|
||||||
|
available and can decompose composite mechanism OIDs as necessary.
|
||||||
|
|
||||||
|
For example, for initial GSS_Init_sec_context() calls the
|
||||||
|
implementation knows the desired mechanism OID, and if it should be
|
||||||
|
left unspecified, it can pick a default mechanism given the initiator
|
||||||
|
credentials provided by the application (and if none are provided
|
||||||
|
other default mechanism and credential selections can still be made).
|
||||||
|
For subsequent calls to GSS_Init_sec_context() the implementation
|
||||||
|
knows which mechanism to use from the given [partially established]
|
||||||
|
security context. Similarly for GSS_Accept_sec_context, where on
|
||||||
|
initial calls the mechanism OID can be determined from the given
|
||||||
|
initial context token's framing.
|
||||||
|
|
||||||
|
The manner in which GSS-API implementations and the various
|
||||||
|
mechanisms and pseudo-mechanisms interface with one another is left
|
||||||
|
as an excercise to implementors.
|
||||||
|
|
||||||
|
4.4. Compatibility with the Basic GSS-APIv2u1 Interfaces
|
||||||
|
|
||||||
|
In order to preserve backwards compatibility with applications that
|
||||||
|
use only the basic GSS-API interfaces (version 2, update 1), several
|
||||||
|
restrictions are imposed on the use of composite and stackable
|
||||||
|
pseduo-mechanisms with the basic GSS-API interfaces:
|
||||||
|
|
||||||
|
o GSS_Indicate_mechs() MUST NOT indicate support for any stackable
|
||||||
|
pseduo-mechanisms under any circumstance.
|
||||||
|
o GSS_Indicate_mechs() MAY indicate support for some, all or none of
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Williams Expires April 19, 2006 [Page 7]
|
||||||
|
|
||||||
|
Internet-Draft Stackable GSS Mechs October 2005
|
||||||
|
|
||||||
|
|
||||||
|
the available composite mechanisms.
|
||||||
|
o Which composite mechanisms, if any, are indicated through
|
||||||
|
GSS_Indicate_mechs() SHOULD be configurable.
|
||||||
|
o Composite mechanisms which are not indicated by
|
||||||
|
GSS_Indicate_mechs() MUST NOT be considered as the default
|
||||||
|
mechanism (GSS_C_NULL_OID) or as part of the default mechanism set
|
||||||
|
(GSS_C_NULL_OID_SET).
|
||||||
|
o The OIDs of *stackable* (not composite) pseudo-mechanisms MUST NOT
|
||||||
|
be accepted as inputs or produced in the output of any of the
|
||||||
|
basic GSS-APIv2, update 1 API functions, except for any OID set
|
||||||
|
construction/iteration functions. And, if present in any OID SET
|
||||||
|
input parameters of GSS-APIv2, update 1 functions, they MUST be
|
||||||
|
ignored.
|
||||||
|
o The OIDs of *stackable* (not composite) pseudo-mechanisms MAY only
|
||||||
|
be used as inputs or produced as outputs of functions whose
|
||||||
|
specification explicitly allows for them or which are concerned
|
||||||
|
with the creation/iteration of OID containters, such as OID SETs.
|
||||||
|
|
||||||
|
4.5. Processing of Tokens for Composite Mechanisms
|
||||||
|
|
||||||
|
The initial context token for any standard mechanism, including
|
||||||
|
mechanisms composited from standard pseudo- and concrete mechanisms,
|
||||||
|
MUST be encapsulated as described in section 3.1 of rfc2743
|
||||||
|
[RFC2743], and the OID used in that framing MUST be that of the
|
||||||
|
mechanism, but in the case of composite mechanisms this OID MUST be
|
||||||
|
the OID of the leading component of the composite mechanism.
|
||||||
|
|
||||||
|
Note that this has implications for pluggable multi-mechanism
|
||||||
|
implementations of the GSS-API, namely that acceptors must route
|
||||||
|
initial context tokens to the appropriate mechanism and they must
|
||||||
|
allow that mechanism to determine the composite mechanism OID (such
|
||||||
|
as by allowing that mechanism's GSS_Accept_sec_context() to output
|
||||||
|
the actual mechanism to the application.
|
||||||
|
|
||||||
|
In all other cases the mechanism that produced or is to produce a
|
||||||
|
given token can be determined internally through the given security
|
||||||
|
context.
|
||||||
|
|
||||||
|
|
||||||
|
5. New GSS-API Interfaces
|
||||||
|
|
||||||
|
...
|
||||||
|
|
||||||
|
Utility functions for mechanism OID composition and decomposition are
|
||||||
|
given in sections 5.1.1, 5.1.2 and 5.1.3.
|
||||||
|
|
||||||
|
Two utility functions, GSS_Indicate_negotiable_mechs() and
|
||||||
|
GSS_Negotiate_mechs(), to aid applications in mechanism negotiation
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Williams Expires April 19, 2006 [Page 8]
|
||||||
|
|
||||||
|
Internet-Draft Stackable GSS Mechs October 2005
|
||||||
|
|
||||||
|
|
||||||
|
are described in sections 5.1.4 and 5.1.5. These two interfaces may
|
||||||
|
be implemented entirely in terms of the other interfaces described
|
||||||
|
herein.
|
||||||
|
|
||||||
|
5.1. New GSS-API Function Interfaces
|
||||||
|
|
||||||
|
Several new interfaces are given by which, for example, GSS-API
|
||||||
|
applications may determine what features are provided by a given
|
||||||
|
mechanism, what mechanisms provide what features and what
|
||||||
|
compositions are legal.
|
||||||
|
|
||||||
|
These new interfaces are all OPTIONAL.
|
||||||
|
|
||||||
|
In order to preserve backwards compatibility with applications that
|
||||||
|
do not use the new interfaces GSS_Indicate_mechs() MUST NOT indicate
|
||||||
|
support for any stackable pseduo-mechanisms. GSS_Indicate_mechs()
|
||||||
|
MAY indicate support for some, all or none of the available composite
|
||||||
|
mechanisms; which composite mechanisms, if any, are indicated through
|
||||||
|
GSS_Indicate_mechs() SHOULD be configurable. GSS_Acquire_cred() and
|
||||||
|
GSS_Add_cred() MUST NOT create credentials for composite mechanisms
|
||||||
|
not explicitly requested or, if no desired mechanism or mechanisms
|
||||||
|
are given, for composite mechanisms not indicated by
|
||||||
|
GSS_Indicate_mechs().
|
||||||
|
|
||||||
|
Applications SHOULD use GSS_Indicate_mechs_by_mech_attrs() instead of
|
||||||
|
GSS_Indicate_mechs() wherever possible.
|
||||||
|
|
||||||
|
Applications can use GSS_Indicate_mechs_by_mech_attrs() to determine
|
||||||
|
what, if any, mechanisms provide a given set of features.
|
||||||
|
|
||||||
|
GSS_Indicate_mechs_by_mech_attrs() can also be used to indicate (as
|
||||||
|
in GSS_Indicate_mechs()) the set of available mechanisms of each type
|
||||||
|
(concrete, mechanism negotiation pseudo-mechanism, stackable pseudo-
|
||||||
|
mechanism and composite mechanisms).
|
||||||
|
|
||||||
|
Applications may use GSS_Inquire_mech_attrs_for_mech() to test
|
||||||
|
whether a given composite mechanism is available and the set of
|
||||||
|
features that it offers.
|
||||||
|
|
||||||
|
GSS_Negotiate_mechs() may be used to negotiate the use of mechanisms
|
||||||
|
such that composite mechanisms need not be advertised but instead be
|
||||||
|
implied by offering stackable pseudo-mechanisms.
|
||||||
|
|
||||||
|
5.1.1. GSS_Compose_oid()
|
||||||
|
|
||||||
|
Inputs:
|
||||||
|
o mech1 OBJECT IDENTIFIER, -- mechanism OID
|
||||||
|
o mech2 OBJECT IDENTIFIER -- mechanism OID
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Williams Expires April 19, 2006 [Page 9]
|
||||||
|
|
||||||
|
Internet-Draft Stackable GSS Mechs October 2005
|
||||||
|
|
||||||
|
|
||||||
|
Outputs:
|
||||||
|
o major_status INTEGER,
|
||||||
|
o minor_status INTEGER,
|
||||||
|
o composite OBJECT IDENTIFIER -- OID composition of mech1 with mech2
|
||||||
|
({mech1 mech2})
|
||||||
|
|
||||||
|
Return major_status codes:
|
||||||
|
o GSS_S_COMPLETE indicates success.
|
||||||
|
o GSS_S_BAD_MECH indicates that mech1 is not supported.
|
||||||
|
o GSS_S_FAILURE indicates that the request failed for some other
|
||||||
|
reason. The minor status will be specific to mech1 and may
|
||||||
|
provide further information.
|
||||||
|
|
||||||
|
5.1.2. GSS_Decompose_oid()
|
||||||
|
|
||||||
|
Inputs:
|
||||||
|
o input_mech OBJECT IDENTIFIER, -- mechanism OID.
|
||||||
|
o mechs SET OF OBJECT IDENTIFIER -- mechanism OIDs (if
|
||||||
|
GSS_C_NULL_OID_SET defaults to the set of stackable pseudo-
|
||||||
|
mechanism OIDs indicated by GSS_Indicate_mechs_by_mech_attrs()).
|
||||||
|
|
||||||
|
Outputs:
|
||||||
|
o major_status INTEGER,
|
||||||
|
o minor_status INTEGER,
|
||||||
|
o lead_mech OBJECT IDENTIFIER, -- leading stackable pseudo-
|
||||||
|
mechanism OID.
|
||||||
|
o trail_mech OBJECT IDENTIFIER -- input_mech with lead_mech removed
|
||||||
|
from the front.
|
||||||
|
|
||||||
|
Return major_status codes:
|
||||||
|
o GSS_S_COMPLETE indicates success.
|
||||||
|
o GSS_S_BAD_MECH indicates that the input_mech could not be
|
||||||
|
decomposed as no stackable pseudo-mechanism is available whose OID
|
||||||
|
is a prefix of the input_mech.
|
||||||
|
o GSS_S_FAILURE indicates that the request failed for some other
|
||||||
|
reason.
|
||||||
|
|
||||||
|
5.1.3. GSS_Release_oid()
|
||||||
|
|
||||||
|
The following text is adapted from the obsoleted rfc2078 [RFC2078].
|
||||||
|
|
||||||
|
Inputs:
|
||||||
|
o oid OBJECT IDENTIFIER
|
||||||
|
|
||||||
|
Outputs:
|
||||||
|
o major_status INTEGER,
|
||||||
|
o minor_status INTEGER
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Williams Expires April 19, 2006 [Page 10]
|
||||||
|
|
||||||
|
Internet-Draft Stackable GSS Mechs October 2005
|
||||||
|
|
||||||
|
|
||||||
|
Return major_status codes:
|
||||||
|
o GSS_S_COMPLETE indicates successful completion
|
||||||
|
o GSS_S_FAILURE indicates that the operation failed
|
||||||
|
|
||||||
|
Allows the caller to release the storage associated with an OBJECT
|
||||||
|
IDENTIFIER buffer allocated by another GSS-API call, specifically
|
||||||
|
GSS_Compose_oid() and GSS_Decompose_oid(). This call's specific
|
||||||
|
behavior depends on the language and programming environment within
|
||||||
|
which a GSS-API implementation operates, and is therefore detailed
|
||||||
|
within applicable bindings specifications; in particular, this call
|
||||||
|
may be superfluous within bindings where memory management is
|
||||||
|
automatic.
|
||||||
|
|
||||||
|
5.1.4. GSS_Indicate_negotiable_mechs()
|
||||||
|
|
||||||
|
Inputs:
|
||||||
|
o input_cred_handle CREDENTIAL HANDLE, -- credential handle to be
|
||||||
|
used with GSS_Init_sec_context(); may be GSS_C_NO_CREDENTIAL.
|
||||||
|
o peer_type_known BOOLEAN, -- indicates whether the peer is known to
|
||||||
|
support or not supprot the stackable pseudo-mechanism framework.
|
||||||
|
o peer_has_mech_stacking BOOLEAN -- indicates whether the peer
|
||||||
|
supports the stackable pseudo-mechanism framework; ignore if
|
||||||
|
peer_type_known is FALSE.
|
||||||
|
|
||||||
|
Outputs:
|
||||||
|
o major_status INTEGER,
|
||||||
|
o minor_status INTEGER,
|
||||||
|
o offer_mechs SET OF OBJECT IDENTIFIER, -- mechanisms to offer.
|
||||||
|
|
||||||
|
Return major_status codes:
|
||||||
|
o GSS_S_COMPLETE indicates success.
|
||||||
|
o GSS_S_NO_CREDENTIAL indicates that the caller's credentials are
|
||||||
|
expired or, if input_cred_handle is GSS_C_NO_CREDENTIAL, that no
|
||||||
|
credentials could be acquired for GSS_C_NO_NAME.
|
||||||
|
o GSS_S_FAILURE indicates that the request failed for some other
|
||||||
|
reason.
|
||||||
|
|
||||||
|
This function produces a set of mechanism OIDs, optimized for space,
|
||||||
|
that its caller should advertise to peers during mechanism
|
||||||
|
negotiation.
|
||||||
|
|
||||||
|
The output offer_mechs parameter will include all of the mechanisms
|
||||||
|
for which the input_cred_handle has elements (as indicated by
|
||||||
|
GSS_Inquire_cred()), but composite mechanisms will be included either
|
||||||
|
implicitly or implicitly as per the following rules:
|
||||||
|
o if peer_type_known is TRUE and peer_has_mech_stacking is FALSE
|
||||||
|
then no composite mechanisms not indicated by GSS_Indicate_mechs()
|
||||||
|
will be advertised, explictly or implicitly;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Williams Expires April 19, 2006 [Page 11]
|
||||||
|
|
||||||
|
Internet-Draft Stackable GSS Mechs October 2005
|
||||||
|
|
||||||
|
|
||||||
|
o if peer_type_known is FALSE then all composite mechanisms
|
||||||
|
indicated by GSS_Indicate_mechs() for which input_cred_handle has
|
||||||
|
elements will be indicated in offer_mechs explicitly and all
|
||||||
|
others may be indicated in offer_mechs implicitly, by including
|
||||||
|
their component stackable pseduo-mechanism OIDs (see below);
|
||||||
|
o if peer_type_known is TRUE and peer_has_mech_stacking is TRUE
|
||||||
|
composite mechanisms will generally not be advertised explicitly,
|
||||||
|
but will be advertised implicitly, by including their component
|
||||||
|
stackable pseduo-mechanism OIDs (see below); no composite
|
||||||
|
mechanisms will be advertised explicitly
|
||||||
|
o if the input_cred_handle does not have elements for all of the
|
||||||
|
possible composite mechanisms that could be constructed from the
|
||||||
|
its elements' decomposed mechanisms, then all composite mechanisms
|
||||||
|
for which the input_cred_handle does have elements will be
|
||||||
|
advertised explicitly in offer_mechs.
|
||||||
|
|
||||||
|
5.1.5. GSS_Negotiate_mechs()
|
||||||
|
|
||||||
|
Inputs:
|
||||||
|
o input_credential_handle CREDENTIAL HANDLE, -- mechanisms offered
|
||||||
|
by the caller.
|
||||||
|
o peer_mechs SET OF OBJECT IDENTIFIER -- mechanisms offered by the
|
||||||
|
caller's peer.
|
||||||
|
|
||||||
|
Outputs:
|
||||||
|
o major_status INTEGER,
|
||||||
|
o minor_status INTEGER,
|
||||||
|
o mechs SET OF OBJECT IDENTIFIER -- mechanisms common to the
|
||||||
|
caller's credentials and the caller's peer.
|
||||||
|
|
||||||
|
Return major_status codes:
|
||||||
|
o GSS_S_COMPLETE indicates success; the output mechs parameter MAY
|
||||||
|
be the empty set (GSS_C_NO_OID_SET).
|
||||||
|
o GSS_S_NO_CREDENTIAL indicates that the caller's credentials are
|
||||||
|
expired or, if input_cred_handle is GSS_C_NO_CREDENTIAL, that no
|
||||||
|
credentials could be acquired for GSS_C_NO_NAME.
|
||||||
|
o GSS_S_FAILURE indicates that the request failed for some other
|
||||||
|
reason.
|
||||||
|
|
||||||
|
This function matches the mechanisms for which the caller has
|
||||||
|
credentials with the mechanisms offered by the caller's peer and
|
||||||
|
returns the set of mechanisms in common to both, accounting for any
|
||||||
|
composite mechanisms offered by the peer implicitly.
|
||||||
|
|
||||||
|
5.1.6. C-Bindings
|
||||||
|
|
||||||
|
|
||||||
|
OM_uint32 gss_compose_oid(
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Williams Expires April 19, 2006 [Page 12]
|
||||||
|
|
||||||
|
Internet-Draft Stackable GSS Mechs October 2005
|
||||||
|
|
||||||
|
|
||||||
|
OM_uint32 *minor_status,
|
||||||
|
const gss_OID mech1,
|
||||||
|
const gss_OID mech2,
|
||||||
|
gss_OID *composite);
|
||||||
|
|
||||||
|
OM_uint32 gss_decompose_oid(
|
||||||
|
OM_uint32 *minor_status,
|
||||||
|
const gss_OID input_mech,
|
||||||
|
const gss_OID_set mechs,
|
||||||
|
gss_OID *lead_mech,
|
||||||
|
gss_OID *trail_mech);
|
||||||
|
|
||||||
|
OM_uint32 gss_release_oid(
|
||||||
|
OM_uint32 *minor_status,
|
||||||
|
gss_OID *oid);
|
||||||
|
|
||||||
|
OM_uint32 gss_indicate_negotiable_mechs(
|
||||||
|
OM_uint32 *minor_status,
|
||||||
|
const gss_cred_id_t input_cred_handle,
|
||||||
|
OM_uint32 peer_type_known,
|
||||||
|
OM_uint32 peer_has_mech_stacking,
|
||||||
|
gss_OID_set *offer_mechs);
|
||||||
|
|
||||||
|
OM_uint32 gss_negotiate_mechs(
|
||||||
|
OM_uint32 *minor_status,
|
||||||
|
const gss_cred_id_t input_cred_handle,
|
||||||
|
const gss_OID_set peer_mechs,
|
||||||
|
const gss_OID_set *mechs);
|
||||||
|
|
||||||
|
|
||||||
|
Figure 1
|
||||||
|
|
||||||
|
|
||||||
|
6. Negotiation of Composite Mechanisms
|
||||||
|
|
||||||
|
Where GSS-API implementations do not support the stackable mechanism
|
||||||
|
framework interfaces applications may only negotiate explicitly from
|
||||||
|
a set of concrete and composite mechanism OIDs as indicated by
|
||||||
|
GSS_Indicate_mechs() and for which suitable credentials are
|
||||||
|
available. GSS_Indicate_mechs(), as described in Section 4.4, MUST
|
||||||
|
NOT indicate support for individual stackable pseudo-mechanisms, so
|
||||||
|
there will not be any composite mechanisms implied but not explicitly
|
||||||
|
offered in the mechanism negotiation.
|
||||||
|
|
||||||
|
Applications that support the stackable mechanism framework SHOULD
|
||||||
|
use GSS_Indicate_negotiable_mechs() to construct the set of mechanism
|
||||||
|
OIDs to offer to their peers. GSS_Indicate_negotiable_mechs()
|
||||||
|
optimizes for bandwidth consumption by using decomposed OIDs instead
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Williams Expires April 19, 2006 [Page 13]
|
||||||
|
|
||||||
|
Internet-Draft Stackable GSS Mechs October 2005
|
||||||
|
|
||||||
|
|
||||||
|
of composed OIDs, where possible. See Section 5.1.4.
|
||||||
|
|
||||||
|
Peers that support the stackable mechanism framework interfaces
|
||||||
|
SHOULD use GSS_Negotiate_mechs() to select a mechanism as that
|
||||||
|
routine accounts for composite mechanisms implicit in the mechanism
|
||||||
|
offers.
|
||||||
|
|
||||||
|
6.1. Negotiation of Composite Mechanisms Through SPNEGO
|
||||||
|
|
||||||
|
SPNEGO applications MUST advertise either the set of mechanism OIDs
|
||||||
|
for which they have suitable credentials or the set of mechanism OIDs
|
||||||
|
produced by calling GSS_Indicate_negotiable_mechs() with the
|
||||||
|
available credentials and the peer_type_known parameter as FALSE.
|
||||||
|
|
||||||
|
|
||||||
|
7. Requirements for Mechanism Designers
|
||||||
|
|
||||||
|
Stackable pseudo-mechanisms specifications MUST:
|
||||||
|
o list the set of GSS-API mechanism attributes associated with them
|
||||||
|
o list their initial mechanism composition rules
|
||||||
|
o specify a mechanism for updating their mechanism composition rules
|
||||||
|
|
||||||
|
All other mechanism specifications MUST:
|
||||||
|
o list the set of GSS-API mechanism attributes associated with them
|
||||||
|
|
||||||
|
|
||||||
|
8. IANA Considerations
|
||||||
|
|
||||||
|
Allocation of arcs in the namespace of OIDs relative to the base
|
||||||
|
stackable pseduo-mechanism OID specified in Section 4.1 is reserved
|
||||||
|
to the IANA.
|
||||||
|
|
||||||
|
|
||||||
|
9. Security considerations
|
||||||
|
|
||||||
|
Some composite mechanisms may well not be secure. The mechanism
|
||||||
|
composition rules of pseudo-mechanisms (including the default
|
||||||
|
composition rule given in Section 4 for unknown mechanism attributes)
|
||||||
|
should be used to prevent the use of unsafe composite mechanisms.
|
||||||
|
|
||||||
|
Designers of pseudo-mechanisms should study the possible combinations
|
||||||
|
of their mechanisms with others and design mechanism composition
|
||||||
|
rules accordingly.
|
||||||
|
|
||||||
|
Similarly, pseudo-mechanism designers MUST specify, and implementors
|
||||||
|
MUST implement, composite mechanism attribute set determination rules
|
||||||
|
appropriate to the subject pseduo-mechanism, as described in section
|
||||||
|
4.2. Failure to do so may lead to inappropriate composite mechanisms
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Williams Expires April 19, 2006 [Page 14]
|
||||||
|
|
||||||
|
Internet-Draft Stackable GSS Mechs October 2005
|
||||||
|
|
||||||
|
|
||||||
|
being deemed permissible by programmatic application of flawed
|
||||||
|
mechanism composition rules or to by their application with incorrect
|
||||||
|
mechanism attribute sets.
|
||||||
|
|
||||||
|
10. Normative
|
||||||
|
|
||||||
|
[EXTENDED-INQUIRY]
|
||||||
|
Williams, N., "Extended Generic Security Service Mechanism
|
||||||
|
Inquiry APIs",
|
||||||
|
draft-ietf-kitten-extended-mech-inquiry-00.txt (work in
|
||||||
|
progress).
|
||||||
|
|
||||||
|
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
|
||||||
|
Requirement Levels", BCP 14, RFC 2119, March 1997.
|
||||||
|
|
||||||
|
[RFC2743] Linn, J., "Generic Security Service Application Program
|
||||||
|
Interface Version 2, Update 1", RFC 2743, January 2000.
|
||||||
|
|
||||||
|
[RFC2744] Wray, J., "Generic Security Service API Version 2 :
|
||||||
|
C-bindings", RFC 2744, January 2000.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Williams Expires April 19, 2006 [Page 15]
|
||||||
|
|
||||||
|
Internet-Draft Stackable GSS Mechs October 2005
|
||||||
|
|
||||||
|
|
||||||
|
Author's Address
|
||||||
|
|
||||||
|
Nicolas Williams
|
||||||
|
Sun Microsystems
|
||||||
|
5300 Riata Trace Ct
|
||||||
|
Austin, TX 78727
|
||||||
|
US
|
||||||
|
|
||||||
|
Email: Nicolas.Williams@sun.com
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Williams Expires April 19, 2006 [Page 16]
|
||||||
|
|
||||||
|
Internet-Draft Stackable GSS Mechs October 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.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Williams Expires April 19, 2006 [Page 17]
|
||||||
|
|
||||||
|
|
Reference in New Issue
Block a user