Rabbit is a software-efficient (profile 1), synchronous stream cipher using a 128-bit key and a 64-bit initialisation vector. A set of eight 32-bit state registers and eight 32-bit counters are used to provide an efficient encryption mechanism based on simple arithmetic and other basic operations such as rotation. Testing during the eSTREAM process confirmed that the cipher was among the most efficient stream ciphers submitted, and this efficiency was visible on a wide range of platforms. Like many stream ciphers, there is some marginal cost incurred during initialisation; this however has a minor impact on the total cost of encryption when encrypting short message streams. For more information about the stream cipher performance in software, refer to the eSTREAM testing framework page.
A distinguisher for Rabbit was described by Aumasson (article), and later improved by Lu, Wang and Ling (article). However the complexity of the distinguishers is greater than the complexity of exhaustive key search, and these results seem therefore to be of theoretical interest only. While there are no other known cryptanalytic results on Rabbit, we note that, like all other cryptographic algorithms, care needs to be taken with its implementation: in this regard, see for example work on the side-channel analysis of Rabbit by Kircanski and Youssef (article) and by Berzati et. al. (article).
Rabbit was initially covered by intellectual property and commercialised by Cryptico. However in late 2008 the designers released the cipher into the public domain, and made the algorithm free for any use (see statement). Rabbit is described in RFC 4503 and is included in ISO/IEC 18033-4. The cipher has been proposed for use in wireless networks (see article) and it is included in the latest release version of CyaSSL, a lightweight, open source embedded implementation of the SSL/TLS protocol.