This improvements comes from the observation that more than 50% of the cryptanalysis time is devoted to detect false alarms. Checkpoints make possible to detect a lot of false alarm without having to reconstruct the sequence from starting point to endpoint.

Concept

edit

Checkpoints

edit

The idea is to define a set of positions   in the chains to be checkpoints. When a chain reaches such a position, we compute the value of a given function   for the corresponding value in the chain. This calculated   value is called checkpoint and stored with the end of the chain.

Use of the checkpoints

edit

During the online phase, when we generate the values  , we also calculate the value of  .

When we reach an endpoint, we first control the values of the checkpoints. If they differ at least for one checkpoint, we know that it is a false alarm. If not, we have to generate the whole chain as in the Hellman's Time-Memory Trade-Off method.

The choice of   must be easy to compute and cheap to store. One choice could simply be a function   that outputs the less significant bit of  . With such a function, we detect 50% of the false alarms passing through one checkpoint, 75% of the false alarms passing through two checkpoints, and so on.

Theoretical analysis

edit

The time gain can has been computed and is given in the article in reference[1].

We can also compute the trade-off of the checkpoint method. Let the memory cost of rainbow chain be   and   for the checkpoints method. Let define   and   the time gain. We can define   and  . The extra memory cost of the checkpoints method on the classic rainbow method is given by:  . On the same way, the time gain is given by:  .

Given that  , we find  . So instead of storing additional chains, we can use the memory to store checkpoints.

Numerical results are impressive. An additional   of memory save   of time. The gain storing extra chains in the same amount of memory is only  .

Some more improvements

edit

Storing the chain endpoints

edit

During the generation of the lookup table, the function   is composed of 2 parts: the enciphering of the plaintext with the key and the reduction of the ciphertext to the size of a potential key. As the result of the reduction is smaller than the ciphertext, it is better to store the potential keys than the ciphertexts.

As the endpoint have to be sorted, successive one often have the same prefix. An other optimization is to remove a certain length prefix and replace it by an index table table that gives the prefixes.

Storing the chain starting points

edit

As we have the choice of the starting points, it is possible to choose successive keys as starting points. This means that every starting point would have the same prefix which needs to be stored only one. The table could thus only stores the lasts bits of the starting points.

See also

edit

External links

edit
  • LINK TO Art 3
  1. ^ Art3