Cryptography Reference
In-Depth Information
(The reciprocal of 134 775 813 is formed modulo 2 32 .) Since the most significant
byte of key1 i 1 is given and LSB ( key0 i ) concerns only the eight lowest-order
bits on the left side (except for carryovers), the eight most significant bits on
the left side are given. Consequently, this equation limits the value reserve
for key1 i to about 2 24 / 2 8
2 16 . We can now compute key1 i 1 , except for the
eight least significant bits, which are 'disturbed' by the least significant byte of
key0 i , for each of these 2 16 values. Next, we write the last equation once for
i 1 and put in all 256 (2 8 ) possible values for key1 i 1 there — this time on
the right-hand side. Only every 2 8 th value of key1 i 1 will result in the given
most significant byte of key1 i 2 on average. Again, key1 i is 'unambiguous on
average'. We thus obtain the least significant byte of key0 i . A nice ending,
don't you think?
Let's capture the intermediate state of affairs: we determined 2 22
=
possible
sequences for the values of key2 , and about 2 16
sequences of key1 values
are possible for each of these 2 22
sequences. Altogether, this results in approx-
imately 2 38
(or a quarter of a billion) possibilities.
Things get pretty fast from now onwards. We can determine the values of key0
from (a), (6), and the least significant bytes of key0 for four successive steps
using the solution of a linear equation system. We take this result to compute
the key0 values and compare their least significant bytes with the values given
in 2 38
lists for additional steps. This is basically the solution.
We can now decrypt the ciphertext backwards without knowing the plaintext.
This is much easier than the approach above. We obtain the same initial values
for key2, key1 , and key0 , i.e., the internal representation of the key. With this,
we decrypt the entire archive.
About 12 or 13 coherent plaintext bytes, which don't necessarily have to be
at the beginning of the file, will suffice for the attack. The complexity of the
computation is around 2 38 , i.e., we have to trial-and-error test roughly one
quarter of a billion key lists. This complexity can be dramatically reduced if
more plaintext is known.
When computing key2 i 1 from key2 i , we get double values. This reduces the
number of possible key2 in every computation step. So, with 12 000 known
plaintext bytes, about 2000 lists instead of 2 22 (4 million) remain typically,
reducing the complexity of the entire computation from 2 38
(250 billion) to 2 27
(about 100 million) lists.
Biham and Kocher even found a way to reveal the unknown key. Remem-
ber that it was initially used as 'plaintext', while the 'ciphertext' created
Search WWH ::




Custom Search