## jueves, 25 de octubre de 2012

### Rabbit Cipher Stream

Rabbit Cipher Stream

What is the Rabbit algorithm ?

The Rabbit stream cipher works in a synchronous manner (never ending, always is in iteration) and was featured in Fast Software Encryption workshop in 2003

This algorithm can be described as follows:

Rabbit needs a key of 128 bits and also can use a (iv) 64-bit input which is used in the iterations in the algorithm
Iv = It is a starting vector for different types of cryptographic systems. This can generate a randomly.

Both encryption and decryption use the substitution method to generate our XOR'ed ciphertext. Where the internal state of the algorithm is 512-bit and 8 states are divided by 32 bits each. Different states vectors are modified during the execution of the algorithm.

Diagram of the algorithm

Rabbit algorithm description:

First step:  The key of 128 bits is genereted randomly and is divided into eight subkeys of 16 bits each and also the vector  "IV" 64-bit is genereted

Second step: Initializing a vector "x" and a counter vector "c" with eight elemts

Third step: This step can be skipped but is recommended. Use the substitution method Xor vector for each counter using vector "IV"

Fourth step: This step is the most important of all, the endless cycle begins to generate different outputs "S" and use them to our substitution method Plaintext.
Variable g is used to cycle the different values ​​of both counters as the vector x, and to generate new values ​​for the vector x and iterating using  "g" of the previous two iterations

Here the equations:

Some terms from here:
"<<" Means that there is a tour of some bit to the left
">>" Means that there is a tour of some bit to the right

Fifth step: Subsequently, to get the specific output for each output interaction, the following equations are performed:

The implementation code:

Here is a picture of a first round generating 8 blocks of "Si"

And at the end, encrypt the message by the substitution method Xor through  "Si"vector of current image is shown in the dimensioned vector 8 outputs each other by different iterations is performed

This algorithm has different strengths and weaknesses:

One of the biggest advantages of this algorithm is the use of a 128-bit key that grabs one of the best sytems about execution speed, different blocks also constantly change. The attacks is  more difficult to perform in against a random key.

The strength is the  division of the keys in 8 to modify the state variables, for different types of attacks such as statistical and brute force

http://www3.iam.metu.edu.tr/iam/images/6/6a/Tarkanolcuogluterm.pdf
http://cr.yp.to/streamciphers/rabbit/desc.pdf
https://tools.ietf.org/html/rfc4503
http://reference.kfupm.edu.sa/content/r/a/rabbit__a_new_high_performance_stream_ci_66630.pdf
http://en.wikipedia.org/wiki/Initialization_vector

#### 1 comentario:

1. Me hubiera gustado un ejemplo más bien paso por paso y un poco más sobre lo de ataques. Van 6 pts.