2.6.5 Kitten (GSS-API Next Generation) (kitten)

NOTE: This charter is a snapshot of the 61st IETF Meeting in Washington, DC USA. It may now be out-of-date.

Last Modified: 2004-11-03

Chair(s):

Jeffrey Altman <jaltman@columbia.edu>

Security Area Director(s):

Russell Housley <housley@vigilsec.com>
Steven Bellovin <smb@research.att.com>

Security Area Advisor:

Russell Housley <housley@vigilsec.com>

Mailing Lists:

General Discussion: kitten@lists.ietf.org
To Subscribe: https://www1.ietf.org/mailman/listinfo/kitten
Archive: http://www1.ietf.org/mail-archive/web/kitten/current/index.html

Description of Working Group:

The Generic Security Services API [RFC 2743, RFC 2744] provides an API
for applications to set up security contexts and to use these contexts
for per-message protection services. The Common Authentication
Technology Next Generation Working Group (Kitten) will work on
standardizing extensions and improvements to the core GSSAPI
specification and language bindings that the IETF believes are necessary
based on experience using GSSAPI over the last 10 years. Extensions may
be published as separate drafts or included in a GSSAPI version 3. While
version 2 of the GSSAPI may be clarified, no backward incompatible
changes will be made to this version of the API.

This working group is chartered to revise the GSSAPI v2 RFCs for the
purpose of clarifying areas of ambiguity:
o Use of channel bindings
o Thread safety restrictions
o C language utilization clarifications and recommendations
(e.g., type utilization, name spaces)
o Guidelines for GSS-API mechanism designers
o Guidelines for GSS-API application protocol designers

This working group is chartered to specify a non-backward compatible
GSSAPI v3 including support for the following extensions:
o Clarify the portable use of channel bindings and better specify
channel bindings in a language-independent manner.
o Specify thread safety extensions to allow multi-threaded applications
to use GSSAPI
o Definitions of channel bindings for TLS, IPSec, SSH and other
cryptographic channels based on work started in the NFSV4 working
group.
o Define a GSSAPI extension to allow applications to store credentials.
Discussions to be started based upon:
o draft-williams-gss-store-deleg-creds-xx.txt
o Extensions to solve problems posed by the Global Grid Forum's GSSAPI
extensions document.
o Extensions to deal with mechanism-specific extensibility in a
multi-mechanism environment.
o Extend the GSS-API to support authorization by portable GSS
applications while also supporting mechanisms that do not have a
single canonical name for each authentication identity.
o Specify a Domain-based GSS service principal name consisting of:
service name, host name, and domain name for use by application
services hosted across multiple servers.
o Extensions to support stackable GSSAPI mechanisms.
o Define a Psuedo-Random Function for GSSAPI

This working group is chartered to perform the following GSSAPI
mechanism specification work:

o Specify a GSSAPI v2/v3 Channel Conjunction Mechanism
o Revise RFC 2748 (SPNEGO) to correct problems that make the
specification unimplementable and to document the problems
found in widely-deployed attempts to implement this spec.
o Update the GSSAPI Java Language Bindings to match actual implementation

This working group is chartered to perform the following new GSSAPI
Language Binding specification work:

o Specify a language binding for C#

DELIVERABLES

Either:
o Clarifications to GSSAPIv2 (May 2005 to IESG)Informational
[editor: TBD]
Or:
o Generic Security Service Application Program Interface Version 2, Update 2
[editor: TBD]
o Generic Security Service API Version 2, Update 1 : C-bindings
[editor: TBD]
End:

o The Channel Conjunction Mechanism (CCM) for the GSSAPI
[editors: Mike Eisler/Nicolas Williams]
(based on draft-ietf-nfsv4-ccm, which has been discussed previously in
the NFSv4 WG)

o On the Use of Channel Bindings to Secure Channels
[editor: Nicolas Williams]
(based on draft-ietf-nfsv4-channel-bindings, which has been discussed
previously in the NFSv4 WG)

o GSSAPIv3
[editor: to be determined]

o Stackable Generic Security Service Pseudo-mechanisms
[editor: Nicolas Williams]
draft-williams-gssapi-stackable-pseudo-mechs

o GSS-APIv2 Extension for Storing Delegated Credentials
[editor: Nicolas Williams]
draft-williams-gssapi-store-deleg-creds

o GSSAPI Mechanisms without a Unique Canonical Name
[editor: Sam Hartman]
draft-hartman-gss-naming

o SPNEGO (RFC 2478) Revisions
[editor: Wyllys Ingersoll / Larry Zhu]
draft-zhu-spnego-2478bis

o Guide to the GSS-APIv3
[editor: Nicolas Williams]
draft-williams-gssapi-v3-guide-to

o Namespace Considerations and Registries for GSS-API Extensions
[editor: Nicolas Williams]
draft-williams-gssapi-extensions-iana

o GSS-API Domain-Based Service Names and Name Type
[editor: Nicolas Williams]
draft-williams-gssapi-domain-based-names

o GSS-API Domain-Based Service Names Mapping for the Kerberos V GSS
Mechanism
[editor: Nicolas Williams]
draft-williams-krb5-gssapi-domain-based-names

o A PRF API extension for the GSS-API
[editor: Nicolas Williams]
draft-williams-gssapi-prf

o A PRF for the Kerberos V GSS-API Mechanism
[editor: Nicolas Williams]
draft-williams-krb5-gssapi-prf

o Generic Security Service API Version 2 : Java & C# Bindings
[editors: Larry Zhu / Corby Morris]
draft-morris-java-gssapi-update-for-csharp

Goals and Milestones:

Nov 04  First Meeting
Mar 05  First drafts of either 'Clarifications to GSSAPIv2' as Informational ORsubmit 'Generic Security Service Application Program Interface Version 2, Update 2' and 'Generic Security Service API Version 2, Update 2 : C-bindings' to the IESG as Proposed Standard
Jul 05  Submit either 'Clarifications to GSSAPIv2' as Informational OR submit 'Generic Security Service Application Program Interface Version 2, Update 2' and 'Generic Security Service API Version 2, Update 2 : C-bindings' to the IESG as Proposed Standard
Jul 05  Submit 'The Channel Conjunction Mechanism (CCM) for the GSSAPI' to the IESG as Proposed Standard
Jul 05  Submit 'On the Use of Channel Bindings to Secure Channels' to the IESG as Proposed Standard
Jul 05  Submit 'The Simple and Protected GSS-API Negotiation Mechanism (Revised)' to the IESG as Proposed Standard
Nov 05  Submit 'GSSAPI Mechanisms without a Unique Canonical Name' to the IESG as Proposed Standard
Jul 06  Submit 'Generic Security Service Application Program Interface Version 3' to the IESG as Proposed Standard
Jul 06  Submit 'Generic Security Service API Version 3 : C-bindings' to the IESG as Proposed Standard
Jul 06  Submit 'Generic Security Service API Version 3 : Java and C# bindings' to the IESG as Proposed Standard
Nov 06  Charter Review

No Current Internet-Drafts

No Request For Comments

Current Meeting Report

IETF 61: Kitten Working Group Summary
Monday, November 8, 2004
Jeffrey Altman <jaltman@secure-endpoints.com> [chair]

Presentations:
http://web.mit.edu/jaltman/Public/Kitten/ietf61/ietf61-kitten.pdf

The chair announced the creation of the working group by the IESG; reviewed the charter and the group's initial milestones. (please see the presentation slides for details).

Since the BOF at IETF 60 there has been significant progress on:
+ describing the GSS Naming problem
+ solving the interoperability problems between protected SPNEGO and implementations which have been widely deployed
+ defining the requirements and interfaces for PRFs
+ C# bindings
+ producing a roadmap document



Nico Williams gave a presentation on Pseudo-random function API: Many applications would like to obtain an encryption key from the GSSAPI context. Breaking the abstraction layer to obtain the negotiated key is dangerous. To solve the problem we are proposing the use of a new PRF seeded with internal keying material. Calls to GSS_Pseudo_Random() will be deterministic. When initialized with the same context and input it will produce the same output.



Nico Williams gave a presentation on a Kerberos v5 GSS Mech PRF: We will construct the Krb5 PRF based on the Kerberos v5 crypto framework PRF. For new mechanisms we will always use the acceptor's subkey. For 1964 mechs the initiator subkey can be used. Key usage to be determined.



Nico Williams gave a presentation on Domain based Service Names for GSS and the Krb5 Mechanism:

Domain based Service names are meant mitigate against attacks caused by the use of insecure DNS SRV to obtain the host/service pair for a given domain.
The generic name syntax is:

<service>@<domain>@<host>

an OID for GSS_C_NT_DOMAINBASED_SERVICE needs to be allocated. Since the I-Ds were published the Krb5 name form was changed to

<service>/<hostname>/<domain>@<REALM>

An open question is "how do we determine the realm of the domain?" We do not want the realm to be that of the host.
+ Must fold edits in for:
? Domain name not optional in 'query' name form
? Switch order of krb5 princ name components
- Add Security considerations
Both I-Ds will soon be ready for WG Last Call



Chair presented Corby Morris' presentation on C# Bindings:

# bindings will be very similar to the Java bindings except for some minor differences in the method declarations due to language requirements.
draft-morris-java-gssapi-update-for-csharp

Note: Java Security team will soon submit an update to RFC 2853 which will correct differences between the rfc and the implemented org.ietf.jgss package.



Larry Zhu gave a presentation on SPNEGO:

The goals for this work is to update 2478 to restore the 'P' in SPNEGO while maintaining backwards compatibility with the existing Windows SPNEGO implementation. Initial draft published: draft-zhu-spnego-2478bis-00 The basis of the backwards compatibility is provided by a set of rules called: Safe-To-Omit-MIC rules.

Significant issues:
+ Safe-to-omit MIC rules: what are they? and when can they be used?
+ should we protect reqFlags?
+ SHOULD or MAY use optimistic token?
+ How is the MIC token computed?
+ Do we need out -of-band negotiation with down-level clients and servers?

There was heavy discussion on the need for negotiation and the case for maintaining compatibility with existing implementations even though they do not implement the existing RFC. Conclusions were that negotiation is important and there is a need to provide protected negotiation while maintaining interoperability if it can be done securely. The discussion on the use of the optimistic token did not produce an opinion on the use of SHOULD vs MAY. There were strong feelings against supporting the use of mechanisms which do not provide integrity protection. No conclusion was reached on how the MIC token is to be computed. Is it over the OCTET-STREAM, with or without the OID.



Sam Hartman gave a presentation on GSS Naming:

The immediate goal of this document has been to describe problems that we're trying to solve to prevent scope creep. We want to support authentication of internal identities (uuids) and allow applications to work with parts of composite names. Applications should be able to query available credentials and presented names based on components and thereby find the most appropriate credential for a target. (Martin Rex points out that you can't do authentication of internal identities portably today) We think it can be portable, and Nico and I think at least we can do a lot better than we can do today. There are several levels of GSSAPI v2 compatibility we need to look at.
+ New mechanisms used by old applications (should they be visible? Or only do GSSAPI v2 features?)
+ File formats for ACLs containing names
Possible Solutions include name attributes, GSSAPI credential extensions, client given ability to assert a name, a facility for enumerating the credentials that we have, choose different credential depending on the party that they're talking to.

name attributes: names are composed of attributes. attributes are OID label plus ??????

client aserted names: allow clients to assert part of a name to be exported. tell implementation what part of the name that it gets. this would provide better compatibility with older applications

credential extensions: add labelled extensions to credentials similar in functionality to name attirubutes, but requires more changes to contexts.

credential enumeration: Basically a "GSSAPI klist" facility to find credentials that are available.

Consensus was reached that we will have a document describing the solution space.


Chair lead discussion on whether or not implementation of Kerberos 5 mechanism support for PRF and Domain Names should take place in kitten or krb-wg.

Close of Meeting.


DECISIONS (to be validated on the list):

+ Maintaining interoperability with existing deployed SPNEGO implementations is more important then the ability to add new features such as protect reqFlags

+ No consensus was reached on whether the use of an optimistic token in SPNEGO will be SHOULD or MAY.

+ There are strong feelings against the relaxing the MUST NOT applied to the negotiation of mechanisms which do not support integrity protection

+ The GSS Naming document will describe the problem space and not just solutions

+ The Kerberos 5 mechanism documents will working group documents of Kitten. We will work closely with the Kerberos WG to ensure proper review and we we last call in both. This decision was made by flipping a coin.


ACTION ITEMS:

+ Larry Zhu will follow up on the outstanding issues with SPNEGO and report to the list by Fri Nov 19

+ The chair will send a list of working group documents to the secretariat

+ Nico Williams will publish new I-Ds for PRF and Domain Names including results of recent on-list discussions

+ The Chair will contact Sun Java Security team to obtain a draft describing the incompatibilities between RFC and org.ietf.jgss

+ Sam Hartman will revise GSS Naming document and then hand it off to a new editor



MILESTONES:

Nov 04  First Meeting
Dec 04  Prepare SPNEGO for Last Call
Mar 05  Submit SPNEGO to the IESG as Proposed Standard
Mar 05  First drafts of either 'Clarifications to GSSAPIv2' as Informational OR submit 'Generic Security Service Application Program Interface Version 2, Update 2' and 'Generic Security Service API Version 2, Update 2 : C-bindings' to the IESG as Proposed Standard
Jul 05  Submit either 'Clarifications to GSSAPIv2' as Informational OR submit 'Generic Security Service Application Program Interface Version 2, Update 2' and 'Generic Security Service API Version 2, Update 2 : C-bindings' to the IESG as Proposed Standard
Jul 05  Submit 'The Channel Conjunction Mechanism (CCM) for the GSSAPI' to the IESG as Proposed Standard
Jul 05  Submit 'The Simple and Protected GSS-API Negotiation Mechanism (Revised)' to the IESG as Proposed Standard
Nov 05  Submit 'GSSAPI Mechanisms without a Unique Canonical Name' to the IESG as Proposed Standard
Jul 06  Submit 'Generic Security Service Application Program Interface Version 3' to the IESG as Proposed Standard
Jul 06  Submit 'Generic Security Service API Version 3 : C-bindings' to the IESG as Proposed Standard
Jul 06  Submit 'Generic Security Service API Version 3 : Java and C# bindings' to the IESG as Proposed Standard
Nov 06  Charter Review

Slides

Agenda