Does anybody have a copy of Cryptography Engineering?  I seem to have misplaced 
mine - which probably means I let somebody borrow it and neglected to remember 
who.


There's a specific question I wanted to look up.  I seem to recall, if you want 
a block cipher to withstand 2^128 operations, you actually need 256 bits in the 
key.  I'm looking for clarification, if I'm remembering correctly, or not.  
Sanity check.



I'm almost certain you can look up even / odd permutations in the index and 
find 2-3 pages in the chapter about block ciphers.  If I recall correctly, they 
say, that because of even/odd permutations, and the nature of all existing 
block ciphers being constrained to even-only, you have to use a 256bit key in 
order for the cipher to withstand 2^128 operations of brute force attack.  A 
128 bit key is attackable in 2^64 operations (which is actually very realistic 
to accomplish).  It was this information that led me to conclude, that only a 
256 bit key is strong enough.



This is all I can really remember of it:



Given that one of the requirements of a block cipher is a 1-1 mapping of all 
possible plaintexts to all possible ciphertexts (message must be losslessly 
decipherable), you can imagine having a (impossibly) huge table that maps each 
possible plaintext to a corresponding ciphertext, given a specified Key & IV.  
Ideally, the plaintext-to-ciphertext table would be a completely independent 
random shuffling of the ordering of ciphertexts, for each different Key/IV 
combination.  But since we're not doing an *actual* shuffle, we're actually 
mathematically constructing the table by a sequence of ciphertext reorder 
operations, and we're constrained by the 1-1 mapping requirement, you 
acknowledge, if you imagine beginning to construct this table, every time you 
set one of the plaintexts to correspond to one of the ciphertexts, it means 
that ciphertext can no longer be associated to the plaintext that it was 
formerly associated with, which means the *other* plaintext must now be 
associated to the ciphertext that was formerly associated with the plaintext 
that you just set.  In other words, every change you make to the table implies 
another (inverse) change to the table.  Every change you make must involve 
swapping the relationships between two plaintexts and two ciphertexts.



Every possible mapping of plaintexts to ciphertexts is called a permutation of 
the table, and every permutation can be either even or odd - that is - the 
number of reordering operations to construct the table is either even or odd.  
But because we're not using a true random shuffling, we're instead performing 
this sequence of location swaps that involve two swaps for every intended 
swap...  It means that every known real block cipher uses only even 
permutations.



How you translate this weakness into an attack, I don't know.  It may be 
theoretical for all I know.  Also, my understanding of the mathematics would 
have me conclude that I only lost one bit from my key, not half the bits.  
That's why I only *use* cryptography and don't *create* it.  I read a book and 
took a class on how to *use* cryptography.  I am utterly unqualified to create 
ciphers and hashes.  As I recall, the book talked about some more stuff, that I 
don't really understand (or at least don't remember clearly) and he concluded 
that all known real-world block ciphers using 256 bit keys actually require 
2^128 operations to break.



This is separate from and not to be confused with the birthday attack - wherein 
you only need 2^128 operations to produce an expected collision on a 256 bit 
hash function.

_______________________________________________
Tech mailing list
Tech@lists.lopsa.org
https://lists.lopsa.org/cgi-bin/mailman/listinfo/tech
This list provided by the League of Professional System Administrators
 http://lopsa.org/

Reply via email to