Jump to content

User:Boutet.n

From Wikipedia, the free encyclopedia

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