Rabbit Cipher Stream
What is the Rabbit algorithm ?
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"
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