Rabbit (chiffrement)

Illustration de la fonction principale (nommée Next-state) utilisée dans Rabbit

Rabbit est un chiffrement de flux à grande vitesse, créé en 2003. L'algorithme et le code source ont été publiés en 2008 en tant que logiciel du domaine public.

Rabbit fut présenté pour la première fois en février 2003 lors du 10e atelier FSE. En mai 2005, il fut soumis au projet européen eSTREAM du réseau ECRYPT.

Rabbit a été conçu par Martin Boesgaard, Mette Vesterager, Thomas Pedersen, Jesper Christiansen et Ove Scavenius.

Les auteurs du chiffrement ont fourni un ensemble complet de livres blancs cryptanalytiques sur la page d'accueil de Cryptico. Il est également décrit dans la RFC 4503[1]. Après avoir été revendiqué (sous brevet) par Cryptico, l'algorithme a été rendu gratuit pour toute utilisation le 6 octobre 2008[2]. Le site Web indique également que l'algorithme et la mise en œuvre sont des logiciels du domaine public et offrent le code source gratuitement en téléchargement[3].

Fonctionnalité

[modifier | modifier le code]

Rabbit utilise une clé de 128 bits et un vecteur d'initialisation de 64 bits. Le chiffrement a été conçu avec des performances logicielles élevées à l'esprit, où des implémentations optimisées atteignent une vitesse de cryptage allant jusqu'à 3,7 CPB sur un Pentium 3 et de 9,7 CPB sur un ARM7. Cependant, le chiffrement s'avère également très rapide et compact en matériel.

Le composant principal du chiffrement est un générateur de flux binaire qui crypte 128 bits de message par itération. La force du chiffrement repose sur un fort mélange de son état interne entre deux itérations consécutives. La fonction de mixage est entièrement basée sur des opérations arithmétiques qui sont disponibles sur un processeur moderne, c'est-à-dire qu'aucune S-box ou table de consultation n'est nécessaire pour implémenter le chiffrement. La fonction de mélange utilise une fonction g basée sur la quadrature arithmétique et les opérations ARX - XOR logique, rotation bit à bit avec des quantités de rotation câblées et addition modulo 2.

La fonction g utilisée dans Rabbit – mettre au carré un nombre de 32 bits pour produire un nombre de 64 bits, puis combiner la moitié gauche et la moitié droite de ce nombre carré avec xor, pour produire un résultat de 32 bits – fournit de bien meilleurs résultats que d'utiliser les 32 bits du milieu de ce nombre au carré (la méthode du carré moyen)[4].

Rabbit revendique une sécurité de 128 bits contre les attaquants dont la cible est une clé spécifique. Cependant, si l'attaquant cible un grand nombre de clés à la fois et ne se soucie pas vraiment de celle qu'il brise, alors la petite taille de l'IV se traduit par un niveau de sécurité réduit à 96 bits. Cela est dû aux attaques génériques de compromis TMD[5].

Un biais dans la sortie de Rabbit existe[6], résultant en une complexité à 2 247, découvert par Jean-Philippe Aumasson en décembre 2006. Même si cette faiblesse fut améliorée à 2 158 en 2008[7], elle ne représente pas une menace pour la sécurité de Rabbit car sa complexité est significativement plus élevée que la force brute de « l'espace clé » (2 128 ).

Notes et références

[modifier | modifier le code]
  1. (en) M. Boesgaard, M. Vesterager, E. Zenner, « A Description of the Rabbit Stream Cipher Algorithm », Request for comments no 4503,
  2. Rabbit becomes public domain by Erik Zenner (October 6, 2008, archived)
  3. The eSTREAM Project - eSTREAM Phase 3 "Intellectual Property : Rabbit has been released into the public domain and may be used freely for any purpose. See announcement."
  4. Martin Boesgaard; Mette Vesterager; Thomas Christensen; and Erik Zenner. "The Stream Cipher Rabbit". p. 18.
  5. Christophe De Cannière, Joseph Lano, and Bart Preneel, "Comments on the Rediscovery of Time Memory Data Tradeoffs", 2005. (PDF)
  6. Jean-Philippe Aumasson, "On a bias of Rabbit", Proc. SASC 2007. (PDF)
  7. Yi Lu, Huaxiong Wang, San Ling, "Cryptanalysis of Rabbit", Proc. ISC 2008 ()

Liens externes

[modifier | modifier le code]