[kdc-schema] [Kdc-info] Preliminary draft of LDAP Kerberos schema

Nicolas Williams Nicolas.Williams at sun.com
Fri Jan 20 15:19:51 EST 2006


Comments:

 - krbPrincipalName's value cannot be determined from RFC4120 (successor
   of RFC1510) alone as it provides no string encoding of principal
   names (these being structured data).

   Instead reference the encoding described in RFC1964, section 2.1.1.

 - In general references to RFC1510 need to be upgraded to RFC3961 or
   RFC4120, and, in a handful of places, as mentioned above, corrected
   to be references to RFC1964.

 - What's the harm of having krbPrincipalType be an attribute of
   krbPrincipalAux also?  It may be useful to allow it.

 - The more I think about it the more I think it worthwhile to separate
   the list of enctypes supported by a principal for ticket session keys
   from the list of long-term keys for that principal.

   So I think a separate (optional) attribute for listing the enctypes
   supported by a principal's software (invariably these will be
   principals tightly related to host, typically host-based principals).

   KDCs should compute the actual set of enctypes supported by a a
   principal's software as the union of the entypes listed in such an
   attribute and the enctypes for which the principal has long-term
   keys.

 - krbSecretKey value format doesn't specify which parts are encrypted,
   but it's clear that the intention is not to encrypt all of it, else
   why have the master key vno in there?

 - All of each krbSecretKey value EXCEPT the master key vno should be
   encrypted (with the RFC3961 encrypt() function, that is, integrity
   protected).  Also, it would be very useful to have the kvno in the
   clear, to quickly select the latest key.

 - Two bytes is not really enough for key version numbers, as I recall.

 - So, I think you might want to rearrange the krbSecretKey value format
   as follows:

      First 4 bytes     Version number of this key
      Next  4 bytes     Version number of the master key used to encrypt
			the following data
      <encrypted data>

      The <encrypted data> octets are to be the output of the RFC3961
      encrypt() function (which provides integrity protection in
      addition to confidentiality protection)  applied to data whose
      format is given below using the master key named by the item
      above:

      First 4 bytes     Version number of this key
      First 2 bytes     Length of principal name (princNameLength)
      Next  2 bytes      Number of keys for the principal (noOfKeys)
      [...]

      (And here, again, where the principal name is placed the encoding
      referenced above should be used.)

 - The rationale for putting the time of last password/key change time
   in the krbSecretKey encrypted data should be described.

Cheers,

Nico
-- 



More information about the kdc-schema mailing list