another similar enctype issue

Will Fiveash William.Fiveash at sun.com
Sun Oct 2 23:47:17 EDT 2005


On Fri, Sep 30, 2005 at 02:22:18PM -0500, Nicolas Williams wrote:
> On Fri, Sep 30, 2005 at 01:24:25PM -0400, Sam Hartman wrote:
> > etype_info_helper
> 
> Exactly, if the principal has a long-term key of one enctype that has
> similar enctypes, then the KDC ought to offer all of them for pre-auth
> modulo realm policy.  And the code is there for that, so if Will is
> seeing failures that indicate that the KDC is not offering des-cbc-crc,
> then maybe we have a bug.
> 
> > My concern is not what happens to the session key, but what happens to
> > the reply key.
> 
> Me too.

After looking at this more closely with Nico, here is what we
discovered:

1. When the KDC is creating a AS_REP and adding padata to it, it uses
   the enctypes in the AS_REQ to determine which of the client's keys to
   use from the princ DB.  There is an issue here as the db2 backend is
   using similiarity matching when looking for the key which appears to
   be a violation of the DAL (see krb5_dbe_find_enctype() and
   krb5_dbe_search_enctype() in kdb_xdr.c).
   
2. The KDC is then using the enctype found in the client key
   (des-cbc-md5) which may not be a literal match to that requested in
   the AS_REQ (des-cbc-crc).  See return_etype_info2().  This appears to
   be a bug as the client code is doing a literal comparion of the
   padata enctype in the AS_REP with those it requested.

3. The KDC is returning only a PA-ETYPE-INFO2 even though the AS_REQ
   only contains des-cbc-crc.  That appears to violate the text in
   rfc4120 below:

   When the AS server is to include pre-authentication data in a
   KRB-ERROR or in an AS-REP, it MUST use PA-ETYPE-INFO2, not PA-ETYPE-
   INFO, if the etype field of the client's AS-REQ lists at least one
   "newer" encryption type.  Otherwise (when the etype field of the
   client's AS-REQ does not list any "newer" encryption types), it MUST
   send both PA-ETYPE-INFO2 and PA-ETYPE-INFO (both with an entry for
   each enctype).  A "newer" enctype is any enctype first officially
   specified concurrently with or subsequent to the issue of this RFC.
   The enctypes DES, 3DES, or RC4 and any defined in [RFC1510] are not
   "newer" enctypes.

   Hint, look at return_padata() in kdc_preauth.c and etype-info
   instance of the preauth_systems[] (no return_padata function
   defined).

So I now understand Sam's point that the problem I'm seeing is not on
the client side but instead it is the KDC code that is buggy.

-- 
Will Fiveash
Sun Microsystems Inc.
Austin, TX, USA (TZ=CST6CDT)


More information about the krbdev mailing list