Rabbit is a stream cipher that uses a key with a length of 128 bits and a 64-bit initialization vector.
Rabbit was developed in 2003 by Martin Boesgaard, Mette Vesterager, Thomas Pedersen, Jesper Christiansen and Ove Scavenius at the company Cryptico and first presented at the 10th FSE Workshop in February 2003. The algorithm is described in RFC 4503, a patent for the algorithm was filed by Cryptico and for many years they demanded a license fee for the commercial use of the encryption. Since October 2008, the software is licensed as public domain software and can therefore be used free of charge for commercial purposes.
How it works
The Rabbit algorithm takes a secret 128 bit key and a 64 bit initialization vector as input and generates an output block of 128 pseudorandom bits for each iteration from a combination of the internal status bits.
Encryption and decryption are performed by bitwise XORing the pseudorandom data with the clear or cipher text. The size of the internal state is 513 bits, divided among eight 32-bit state variables, eight 32-bit counters, and one carry bit.
A 128-bit key makes it robust against brute force attacks. It is also fairly simple to implement and requires minimal storage of state. Compared to AES for low-power devices, there are advantages for the Rabbit algorithm in speed and robustness. So far, no vulnerabilities have been found in Rabbit encryption.