[157] in Kerberos

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

Re: Ooops. SMS cannot store keys th

jon@ATHENA.MIT.EDU (jon@ATHENA.MIT.EDU)
Sun Aug 9 21:35:31 1987

From miller%erlang.DEC@decwrl.DEC.COM  Fri Jan 30 06:39:41 1987
Date: 29-Jan-1987 1032
From: miller%erlang.DEC@decwrl.DEC.COM  (Steve Miller)
To: kerberos@athena.mit.edu  (Distribution list @KERB),
        miller%erlang.DEC@decwrl.DEC.COM
Subject: Re:  Ooops. SMS cannot store keys that get loaded into Kerberos

I agree with Jeff's assessment of the situation, but would address it
more generically.

The Kerberos servers must be secure to protect against the three fundamental
types of threats:
	1)	Unauthorized disclosure;
	2)	Unauthorized modifications;
	3	Denial of service.

In the first case, the unauthorized disclosure risk to Kerberos is its
master key, which in turn allows disclosure of principal keys and
unauthorized modification. The second case, unauthorized modification,
could be, as the previous memo suggested, accomplished if someone had
access to the Kerberos database (directly or through SMS) and could copy
principal A's key to principal B, or otherwise modify a key. This does
not require knowledge of any secret keys, only write access to the
database.  The simplest case of denial of service is pulling the plug
on the Kerberos servers, causing all ticket requests to fail.

Jeff's suggestion is to cryptographically bind an integrity check (xor
the principal name) to the enciphered key.  This may help protect against
the specific attack described, but really only shifts the point of attack
to where this integrity check is applied.  It further assumes that Kerberos
itself has not been compromised.

Even if  an  integrity  check were sufficient, a simple XOR is not. Kerberos
has  to  be  able to detect if a principal's key has been modified. Consider
the  following:  My key, value "01234567" is stored XORd with my name, "spm"
(which  is  usually shorter than an 8-byte key). Then it is encrypted in the
master  key,  resulting in value X, and stored in the SMS/Kerberos database.
An  intruder  copies  his  encrypted key, Y, onto my entry. When I ask for a
ticket,  Kerberos  then  decrypts Y, xors the result with "spm", and ends up
with  "34567890".  But  the  problem  is  that  Kerberos  cant  tell whether
"34567890"  is  ok  or  bad, because there was no redundancy. So in order to
check  properly  for integrity, you need at least implicit redundancy in the
ciphertext  "key".  One  way  to  do  this  is  to  encrypt  my private key,
"01234567",  concatenated  with my name "spm", under the master key into the
saved  "key".  Then  when  you  decrypt it, you get the real key and my name
"spm", which is redundant with the database name. If someone had substituted
a different encrypted value, when it was decrypted it would not yield "spm".
Furthermore,  modifications,  including splicing attacks, can be detected if
the  encryption/decryption  is  performed  using  the  PCBC  DES  mode which
propagates  errors indefinitely. As an optimization on this, since names can
be long, compute a CRC on the name, and use that instead.

However, despite all this, the bottom line is that wherever the master
Kerberos key is in use must be strongly protected against all threats.
But you do find a particular threat to be easy and common, 
it may be worthwhile to address it, as long as it is understood that only
that one hole has been plugged.

Steve.




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