[390] in Kerberos

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

Re: faster encrypted rlogin

daemon@TELECOM.MIT.EDU (Ken Raeburn)
Mon Jun 6 19:57:02 1988

From: Ken Raeburn <raeburn@ATHENA.MIT.EDU>
To: Mike Kazar <kazar+@ANDREW.CMU.EDU>
Cc: kerberos@ATHENA.MIT.EDU
In-Reply-To: Mike Kazar's message of Mon,  6 Jun 88 18:21:21 -0400 (EDT),

   Date: Mon,  6 Jun 88 18:21:21 -0400 (EDT)
   From: Mike Kazar <kazar+@andrew.cmu.edu>

   So, for instance, if I have a ticket authenticating me as "bogon", and it is
   encrypted via your scheme (using DES/XOR with these quasi-random
   numbers), then if I can find the ticket in the cleartext (which
   should be easy, given the sources), I can change the ticket to
   authenticate me as "kazar" instead of "bogon" by XORing the ticket
   with ("kazar" XOR "bogon").

I don't think this attack would work quite as described, but there is
some possible risk here.  Remember, we aren't using XOR for the
authentication encryption, just for later data.  The
authenticator/ticket itself would be DES-encrypted such that only the
intended receiver could decrypt it.  An XOR on this data would produce
meaningless garbage.

However, a known sequence of data could be tampered with through the
attack you describe, but only that portion for which the cleartext
(and position in the data stream) is known, but this isn't difficult.
Hmm...perhaps a randomly-generated (and constantly changing)
translation table, with offsets transmitted?  It wouldn't need to be
too sophisticated, just something that couldn't be reversed (and used
in the forward direction) with a known cleartext.  Perhaps using two
numbers to generate the table; for example:

    Use #1 for the character \000 translates to.

    Use #2 as an offset into a table of the first N numbers relatively
    prime to 256, and use it as an offset to get the consecutive
    numbers in the translate table.  (I.e., \001 maps to (#1 + #2) mod
    256, \002 maps to (#1 + 2 * #2) mod 256, etc.)

There are simpler mathematical methods for getting the results in both
directions here, but I think this provides a means by which we'd be
safe sending data without fear of eavesdropping or tampering, since in
order to substitute a (known) second value, the second random byte
would have to be known.

Would we be safe in taking two bytes of the encryption output for the
random number sequence, or should it require two passes?  Doing the
latter would slow it down, but we can see how it compares against
realtime encryption....

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