[2856] in cryptography@c2.net mail archive

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

Re: Brute forcing half a Clipper key.

daemon@ATHENA.MIT.EDU (Adam Shostack)
Thu Jun 25 14:41:20 1998

From: Adam Shostack <adam@homeport.org>
In-Reply-To: <D104150098E6D111B7830000F8D90AE80178EF@exna02.securitydynamics.com> from "Trei, Peter" at "Jun 25, 98 10:14:41 am"
To: ptrei@securitydynamics.com (Trei, Peter)
Date: Thu, 25 Jun 1998 12:35:59 -0400 (EDT)
Cc: colin@nyx.net, cryptography@c2.net

The half keys were (ostensibly) going to be stored as 2 80 bit values
which needed to be xored together to get the key.   So you didn't get
to brute force a 40 bit key.

Adam

Trei, Peter wrote:
| 
| 
| > -----Original Message-----
| > From:	Colin Plumb [SMTP:colin@nyx.net]
| > Sent:	Wednesday, June 24, 1998 8:16 PM
| > To:	cryptography@c2.net; jya@pipeline.com
| > Subject:	RE: "damn the bitmaps..."
| > 
| > As for speed, I'm currently getting 1.36 us/byte (encrypting the same
| > block
| > over and over to make 10 MB) on a (non-MMX) Pentium 133 with C code.
| > 
| > You can *almost* do a good assembly implementation using the 8 byte
| > registers on an x86, leaving si di and bp available for indexing,
| > pointers, and so on, but you need a 9th byte to hold the g2 ^ *key++
| > part of g1 ^= F[g2 ^ *key++] in the inner loop.
| > 
| > Perhaps some work on key scheduling to move the location of the key XOR
| > around would work.
| > 
| > The algorithm is *almost* self-inverse, with just a reversed key schedule.
| > I wonder how the hardware does the switch?
| > 
| > It seems easiest to me to swap the input bytes around (to achieve the
| > effect
| > of swapping the halves in the G operation) and then just change which byte
| > the counter gets added to.
| > -- 
| > 	-Colin
| 	[Trei, Peter]  
| 	I wouldn't touch bp, but have always considered si and di fair
| 	game. 
| 
| 	The almost non-existant key scheduling has interesting implications:
| 
| 	1.36 us/byte @ 133 MHz
| 	-> 10.88 us/block
| 	= 1447 clocks/block
| 
| 	-> 2^39 blocks = 8E14 clocks
| 
| 	-> on average, 69 machine-days on a 133 MHz machine to brute force
| 	a Clipper key if half the bits are known. Note that this is using
| 	what I expect is a far-from-optimized implementation - I would not
| 	be at all astonished if it could be speeded up by a factor of 4 or
| 	more.
| 
| 	The bottom line is: Splitting the key in two, and storing the two
| 	halves in different agencies wouldn't have made people much more
| 	secure from corrupt government agents, or an 'escrow'
| 	agency compromised by other criminals or terrorists. With 
| 	half the key and a dozen high-end machines you could brute 
| 	force a complete unit key in a few hours, after 
| 	which all communications from that Clipper chip would be
| 	compromised.
| 
| 	This is assuming a known plaintext attack on EBC or CBC mode
| 	Clipper, similar to the RSA DES challenges.
| 
| 	Peter Trei
| 
| 
| 


-- 
"It is seldom that liberty of any kind is lost all at once."
					               -Hume



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