Linux-based wireless mesh suite adds crypto engine support

John Kelsey kelsey.j at
Tue Oct 5 09:37:11 EDT 2004

>From: John Gilmore <gnu at>
>Sent: Sep 30, 2004 6:25 PM
>To: cryptography at, gnu at
>Subject: Re: Linux-based wireless mesh suite adds crypto engine support 

>Crypto hardware that does algorithms can be tested by periodically
>comparing its results to a software implementation.  Production
>applications should probably be doing this -- maybe 1% of the time.

I think the need for interoperability constrains the ability for a crypto module to implement some weak algorithm in place of AES or 3DES.  Unless the designer can know which encrypted messages have to be handled by someone else's non-hacked module, he can't safely do this.  

>Crypto hardware that generates "random" numbers can't be tested in
>production in many useful ways.  My suggestion would be to XOR a
>hardware-generated and a software-generated random number stream.  If
>one fails, whether by accident, malice, or design, the other will
>still randomize the resulting stream.  Belt AND suspenders will keep
>your source of randomness from being your weakest link.

I'll note that this is supported two separate ways in the (in progress) X9.82 standard.  

a.  A standard way to produce a random bit generator with a guaranteed fallback to computational security is to XOR  the outputs of some good hardware generator with the outputs of a crypto PRNG (aka DRBG in X9.82-ese).  

b.  Any approved random bit generator can always be combined with an unapproved generator by XORing.  The only security requirement here is that the unapproved generator be independent of the approved one.

All that said, though, it's far from clear how you monitor this in the standard crypto environment, since you usually take great pains to make it hard for anyone to get key material out of the tamper-resistant modules.  You provide the random value to XOR into the RNG output, and the module says "Thanks, I XORed it in.  Trust me."  Or, you demand the random value from its RNG, XOR in your own, but now, you've exposed the key outside the tamper-resistant module, which introduces a whole different set of problems.  I'm sure there are some clever crypto protocol ways to address this (basically, do a zero-knowledge proof of the value of the random number you used in deriving the key), but I have a hard time thinking this is at all practical....

>	John

--John Kelsey

The Cryptography Mailing List
Unsubscribe by sending "unsubscribe cryptography" to majordomo at

More information about the cryptography mailing list