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
As mentioned abovethisalgorithmuses 6permutations toencrypt the message.Andineach of thepermutationsdo exactly the same.
Herethe processof eachpermutation:
1-. The X(64) if is the first permutation is the same of Plain text. After this, Usethe substitution methodXorand dividethose 64bitsinto smallblocks of 8bits.
2-. EachS-box will be used and the 64 bits will be separated in two blocks of 32 bits.
3-. Then afunction is perfomed tocause slightdiffusion so that is harder todetect patterns ofsequence.
4-. We usetwo 32-bits keys forthe Xor substitution methodand also We mergethe 64-bit.
5-. With this input. We repeat step 1
6-. After that, we perform a function thatcause strongestdiffusion so that is harder todetect patterns in thesequence, and we created a matrix of 2x2. then marge the 64-bit.
7-. This outputX(64)isthe new entryin the next permutation.
8-Do this steps all 6permutations.
9-. FinallyencryptsX(64)with a 64-bits key toget ourciphertext.
This algorithmis strong andweak comparedtoothers in several ways.
1-. The designand structure aremuch larger thantheFeistelstructureandtakes longer.
2-. The Diffusion´s widht is twice of the Feistel structure.
Feiselencryptionhasa symmetrical structurethat uses ablockcipher, named for the Germanand cryptographerHorstFeistel
3-. Inputsize limits.
2-. Better securityagainststatisticalattacks Special thanks to Esteban Sifuentes for checking my Orthography.
Reference: http://en.wikipedia.org/wiki/Rijndael_S-box http://en.wikipedia.org/wiki/Hierocrypt http://es.wikipedia.org/wiki/Criptograf%C3%ADa link de pdf de las imagenes LINK http://en.wikipedia.org/wiki/Feistel_cipher http://en.wikipedia.org/wiki/Advanced_Encryption_Standard