[1877] in Kerberos_V5_Development

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

Re: bug in the rfc and in the kdc

daemon@ATHENA.MIT.EDU (Marc Horowitz)
Fri Oct 25 15:11:09 1996

To: "Theodore Y. Ts'o" <tytso@MIT.EDU>
Cc: krbdev@MIT.EDU
In-Reply-To: Your message of "Fri, 25 Oct 1996 14:45:32 EDT."
             <9610251845.AA13949@dcl.MIT.EDU> 
Date: Fri, 25 Oct 1996 15:09:42 EDT
From: Marc Horowitz <marc@MIT.EDU>

>> Well, if you take the union of the two constraints, it's not a
>> contradiction...  but yes, the text should be fixed to say that the
>> checksum must be keyed AND collision proof, per section 3.3.2.

I can't think of any good reason why it needs to be keyed.  The
checksum is inside the authenticator, which is encrypted itself.  I
suppose keying it could protect against some obscure cryptanalytic
attack.

>> Huh?  Section 5.4.2 is quite explicit.  Use the sub-session key if
>> present, otherwise use the ticket-granting ticket key.

I don't have my original messages around anymore, but there's clearly
some confusion.  I'm talking about the Checksum in the Authenticator
in the PA-TGS-REQ padata of the TGS-REQ.  Section 5.4.2 is explicit,
but it talks about the TGS-REP.

>> Our implementation isn't checking the sub-session key in the
>> authenticator; this is a bug.  But adding this shouldn't be all that
>> difficult.  (We need to modify comp_cksum() in kdc_util.c)

comp_cksum() verifies the Checksum in the TGS-REQ.  It is not used in
generating the TGS-REP.  It uses the key in the Ticket, which seems
like as good a key as any, but this should be made explicit.

The only text I can find describing the Checksum in the TGS-REQ is
here, from section 5.4.1:

   padata    The padata (pre-authentication data) field contains a of
             authentication information which may be needed before
             credentials can be issued or decrypted.  In the case of
             requests for additional tickets (KRB_TGS_REQ), this field
             will include an element with padata-type of PA-TGS-REQ and
             data of an authentication header (ticket-granting ticket
             and authenticator). 

>                                The checksum in the authenticator
>            (which must be collisionproof) is to be computed over the
>            KDC-REQ-BODY encoding.  

				    In most requests for initial
             authentication (KRB_AS_REQ) and most replies (KDC-REP), the
             padata field will be left out.

and here, from section 3.3.2:

   Once the accompanying ticket has been decrypted, the user-supplied
   checksum in the Authenticator must be verified against the contents
   of the request, and the message rejected if the checksums do not
   match (with an error code of KRB_AP_ERR_MODIFIED) or if the checksum
   is not keyed or not collision-proof (with an error code of
   KRB_AP_ERR_INAPP_CKSUM).  If the checksum type is not supported, the
   KDC_ERR_SUMTYPE_NOSUPP error is returned.

None of this mentions what key is to be used if the checksum is keyed.

		Marc

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