[Discuss] KeePassX

Edward Ned Harvey (blu) blu at nedharvey.com
Sun Oct 6 22:43:08 EDT 2013


> From: Kent Borg [mailto:kentborg at borg.org]
> Sent: Wednesday, August 14, 2013 10:25 AM
> 
> But you don't mean AES-128 can be broken today with 2^64 operations, do
> you?  That sounds wrong--or theoretical.

I found my book (Cryptography Engineering) and looked it up.  The answer is:

"Most modern block ciphers have a 128-bit block size, but they operate on 32-bit words.  They build the encryption function from many 32-bit operations.  This has proved to be a very successful method, but it has one side effect.  It is rather hard to build an odd permutation from small operations; as a result, virtually all block ciphers only generate even permutations."

"This [] has no practical significance whatsoever."

So, the even/odd permutation thing is a completely unrelated red herring.  The important question is regarding key length:

"A 128-bit key would be great, except for one problem:  collision attacks.  Time and time again, we find systems that can be attacked -- at least theoretically, if not practically -- by a birthday attack or a  meet-in-the-middle attack.  We know these attacks exist.  Sometimes designers just ignore them, and sometimes they think they are safe, but somebody finds a new, clever way of using them.  Most block cipher modes allow meet-in-the-middle attacks of some form.  We've had enough of this race, so here is our recommendation:  For a security level of n bits, every cryptographic value should be at least 2n bits long."

In other words, if you want 128 bits of security, use a 256 bit key.  Uncrackable by an international superpower within a lifetime.

If you use a 128 bit key, you should assume it's crackable in 2^64 operations, which can be achieved by a schmo with a laptop.  Maybe not in reality, maybe not in every situation, but take it as a baseline assumption.



More information about the Discuss mailing list