Re: KITTEN: IETF 75 - 76

Nicolas Williams <Nicolas.Williams@sun.com> Mon, 17 August 2009 17:37 UTC

Return-Path: <Nicolas.Williams@sun.com>
X-Original-To: kitten@core3.amsl.com
Delivered-To: kitten@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 5B43828C100 for <kitten@core3.amsl.com>; Mon, 17 Aug 2009 10:37:17 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -5.741
X-Spam-Level:
X-Spam-Status: No, score=-5.741 tagged_above=-999 required=5 tests=[AWL=0.005, BAYES_00=-2.599, HELO_MISMATCH_COM=0.553, MIME_8BIT_HEADER=0.3, RCVD_IN_DNSWL_MED=-4]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id vhcnRRS4KkkD for <kitten@core3.amsl.com>; Mon, 17 Aug 2009 10:37:16 -0700 (PDT)
Received: from brmea-mail-1.sun.com (brmea-mail-1.Sun.COM [192.18.98.31]) by core3.amsl.com (Postfix) with ESMTP id 9AFDC3A6C67 for <kitten@ietf.org>; Mon, 17 Aug 2009 10:37:15 -0700 (PDT)
Received: from dm-central-02.central.sun.com ([129.147.62.5]) by brmea-mail-1.sun.com (8.13.6+Sun/8.12.9) with ESMTP id n7HHbK0x007180 for <kitten@ietf.org>; Mon, 17 Aug 2009 17:37:20 GMT
Received: from binky.Central.Sun.COM (binky.Central.Sun.COM [129.153.128.104]) by dm-central-02.central.sun.com (8.13.8+Sun/8.13.8/ENSMAIL, v2.2) with ESMTP id n7HHbGlW022502 for <kitten@ietf.org>; Mon, 17 Aug 2009 11:37:16 -0600 (MDT)
Received: from binky.Central.Sun.COM (localhost [127.0.0.1]) by binky.Central.Sun.COM (8.14.3+Sun/8.14.3) with ESMTP id n7HHQXFH002948; Mon, 17 Aug 2009 12:26:33 -0500 (CDT)
Received: (from nw141292@localhost) by binky.Central.Sun.COM (8.14.3+Sun/8.14.3/Submit) id n7HHQWZ6002947; Mon, 17 Aug 2009 12:26:32 -0500 (CDT)
X-Authentication-Warning: binky.Central.Sun.COM: nw141292 set sender to Nicolas.Williams@sun.com using -f
Date: Mon, 17 Aug 2009 12:26:32 -0500
From: Nicolas Williams <Nicolas.Williams@sun.com>
To: Love Hörnquist Åstrand <lha@kth.se>
Subject: Re: KITTEN: IETF 75 - 76
Message-ID: <20090817172632.GT1043@Sun.COM>
References: <4A87A69A.3050408@sun.com> <20090816235122.GP1043@Sun.COM> <77312362-85D0-4BDC-AD16-28450B38C5CB@kth.se>
Mime-Version: 1.0
Content-Type: text/plain; charset="iso-8859-1"
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <77312362-85D0-4BDC-AD16-28450B38C5CB@kth.se>
User-Agent: Mutt/1.5.7i
Cc: "kitten@ietf.org" <kitten@ietf.org>, Shawn M Emery <Shawn.Emery@sun.com>
X-BeenThere: kitten@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: Common Authentication Technologies - Next Generation <kitten.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/kitten>, <mailto:kitten-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/kitten>
List-Post: <mailto:kitten@ietf.org>
List-Help: <mailto:kitten-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/kitten>, <mailto:kitten-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 17 Aug 2009 17:37:17 -0000

On Mon, Aug 17, 2009 at 06:49:37PM +0200, Love Hörnquist Åstrand wrote:
> 17 aug 2009 kl. 01:51 skrev Nicolas Williams:
> >(2) is really listing of principal names for which the caller has
> >credentials (we can already list mechanisms for which the caller has
> >credentials).  This is likely a difficult thing to design since we
> >will want to be able to control what principals
> >GSS_Accept_sec_context()  can accept sec contexts for, and that means
> >a significant revamp of the semantics of CREDENTIAL HANDLEs _or_ a
> >replacement for GSS_Accept_sec_context().
> 
> accept sec context is not really intresting since it doesn't make  
> thinks not work. init sec context however it mostly useless since the  
> consumers don't know about what credentials they have.

Acceptors with creds for multiple principals have little choice but to
use GSS_C_NO_CREDENTIAL and check the resulting security context to see
if the acceptor principal (and mech, and, if we ever add it, QoP policy)
is acceptable to the app.  That's lame.  I'd rather be able to acquire a
CREDENTIAL HANDLE for all the principals I'm willing to accept sec
contexts for and then use that.

The GSS-API concept of CREDENTIAL HANDLEs is a set of credentials for
the same principal, but different mechanisms.  Changing this to allow it
to be a set of credentials for any {mechanism, principal} seems...
difficult, but perhaps fun anyways.

> have a list of mechs there is credentials for is also mostly useless,
> i have lha@SU.SE (Kerberos), SU.SE\lha (NTLM), KTH.SE (Kerberos)
> E.KTH.SE (sasl-digest-md5),
> lha@LKDC.SHA1:EA35DAB08BD8EC833C160FAFCDF03E4B13F72D6B (Kerberos) any
> many other, knowing that I have some Kerberos credentals is mostly
> useless.

Yes, this problem affects initiators too.  If you want to solve the
Identity Selection problem _above_ the GSS-API (and I agree that the
solutions do belong outside the GSS-API), then you need to solve the
CREDENTIAL HANDLE issue first.

[For the benefit of lurkers: in practice though you always have a
"default" principal, and you have to be able to choose a principal to
use in any given context.  The Identity Selection problem is not as easy
to solve as simply letting CREDENTIAL HANDLEs be sets of creds for any
{mech, princ}, but that is a very helpful first step.]

> >>  4. error message reporting
> >
> >Yes.  (I still believe in the "PGSSAPI" idea where, in the C bindings,
> >we change the semantics and type of the minor_status argument,  
> >though in
> >a binary backwards compatible way.  I can expand if desired.)
> 
> Lets redo the api, ISC is broken as it since there is no way to add  
> new tokens.

ISC?

I don't want to re-design the API from scratch if we can avoid it.
Moreover, all of the enhancements we're discussing are incremental,
_except_ for this one and the multi-princ credentials one; this one fits
right in as proposed above, and we can solve the multi-princ credentials
problem incrementally too.  If we had more problems to fix that are not
incremental then I'd agree on a whole re-design.

Also, I don't agree that there's no way to add new token types, if
that's what you meant.  You could add support for new tokens (e.g.,
re-key tokens, default QoP cipher change, ...) as follows:

a) provide a way to indicate that the app supports the new thing (this
   could be a credential handle property, but it could also be done
   using the PGSSAPI proposal);
b) provide new functions to output the new token types;
c) provide new major status codes (for existing per-msg token generating
   functions) indicating that the caller must first engage in some other
   type of token exchange (e.g., re-key);
d) provide new major status codes (for existing per-msg token consuming
   functions) indicating that an input token is of the wrong type (so
   the caller may then call the correct function with it).

(a) and (b) are the bare minimum that must be done, but you need (c) if
you want async re-keys (i.e., if you want the mech to decide when a
re-key is needed).  (d) is not strictly needed: app protocols have to be
revised anyways to use new token types, so we can expect apps to
identify token types.

> >>  5. asynchronous calls
> >
> >Developers can use threads to work around the lack of these, so it  
> >seems
> >to me that these should be a lower priority.
> 
> I disagree, threads consume lots of resources that and are very  
> complicated to use.

I agree that async versions are desirable.  I believe the other items on
Shawn's list are more important though, that's all.

> >>...along with Alexey's recent request for policy/encryption strength.
> >
> >Yes.  This should be, IMO, a high priority.
> 
> And not over engineered. Let's solve the SASL problem and nothing more.

I agree.  I want nothing to do with, for example, a language for
expressing cryptographic quality of protection policies.  I want only a
way to obtain non-hard-coded, context-specific policies.  The key is
context-specific (because the Kerberos mech can use any enctype in a
context-specific way -- you can't tell which it is just from the mech's
OID, unlike SCRAM).  (A context-specific SSF number is acceptable to
me as a way to support SASL.)

Nico
--