[2295] in Kerberos-V5-bugs

home help back first fref pref prev next nref lref last post

pending/59: GSSAPI RFC 1961 compliance?

daemon@ATHENA.MIT.EDU (Alex Ranous)
Fri Oct 4 20:08:15 1996

Resent-From: gnats@rt-11.MIT.EDU (GNATS Management)
Resent-To: gnats-admin@rt-11.MIT.EDU
Resent-Reply-To: krb5-bugs@MIT.EDU, Alex Ranous <ranous@hpindavg.cup.hp.com>
Date: Fri, 04 Oct 1996 17:08:05 -0700
From: Alex Ranous <ranous@hpindavg.cup.hp.com>
To: krb5-bugs@MIT.EDU


>Number:         59
>Category:       pending
>Synopsis:       GSSAPI RFC 1961 compliance?
>Confidential:   yes
>Severity:       serious
>Priority:       medium
>Responsible:    gnats-admin
>State:          open
>Class:          sw-bug
>Submitter-Id:   unknown
>Arrival-Date:   Fri Oct e 20:08:00 EDT 1996
>Last-Modified:
>Originator:
>Organization:
>Release:
>Environment:
>Description:
>How-To-Repeat:
>Fix:
>Audit-Trail:
>Unformatted:
Now that the MIT Kerberos 5 Beta 7 GSSAPI implements RFC 1964 correctly (it 
uses a zero IV when calculating checksums), I'd thought that I'd revisit the 
issue of DCE GSSAPI/MIT GSSAPI interoperability.  I've identified a numbe of 
problems.  Some of these are DCE problems that I've fixed and have submitted 
to the "proper" authorties.

One problem I ran against was that MIT GSSAPI specifies a subkey in the 
authenticator when initiating a request.  Unfortanately, DCE completely 
ignores the subkey, only using the session key in the ticket for the context 
key.  I've added support to DCE to handle the subkey whan accepting a context. 
 

The problem I have now is that DCE can't generate a subkey when initiating a 
context since it needs to be able to work with legacy DCE based server that 
don't support use of subkeys.  The MIT code expects to see a subkey when 
accepting a context, and returns an error if it's not there.  This appears to 
violate the RFC.  In section 1.2:

        (1) context key: uses Kerberos session key (or subkey, if
        present in authenticator emitted by context initiator) directly

This seems to say that it is up the the initiator whether or not a subkey 
should be used as the context.  DCE violated this by ignoring the subkey.  It 
appears the MIT also violates this by ignoring it's absense.  On the other 
hand, there is a GSS_KRB5_S_KG_NO_SUBKEY defined by the standard, which 
implies that it might be ok to do this.

I believe it would be realitively easy to modify the MIT GSSAPI to handle 
clients who choose not to use subkeys.  Currently in accept_sec_context.c, 
krb5_auth_con_getremotesubkey() is called, and if there isn't a subkey, the 
GSS_KRB5_S_KG_NO_SUBKEY error is returned.

It seems reasonable that if there is no subkey, then call 
krb5_auth_con_getkey() to get the session key and use that in ctx->subkey 
instead.  This should allow a DCE based client to interoperate with a MIT 
server.

Does this seem reasonable?

Alex

BTW, I'm not sure why the MIT bits are using a subkey in the first place.  It 
doesn't seem to be adding any security.  If the session key is vulnerable, 
then the subkey could be retrieved from the authenticator anyway.


home help back first fref pref prev next nref lref last post