L'algorithme RC-4

RC-4 est un standard RSA créé par Ron Rivest (le R de RSA) en 1987. Celui-ci a été rendu public en 1994 car il n'était déjà plus considéré comme une méthode de cryptage forte[24].

Ici, quand on parlera de RC-4, on fera directement l'association avec tout le protocole de chiffrage du WEP (utilisation d'un IV puis de RC-4) bien que la notion d'IV ne fasse pas partie réellement de RC-4.

RC-4 génère à partir d'une clé privée K et d'un vecteur d'initialisation IV une séquence pseudo-aléatoire S qui sera utilisée pour crypter un contenu.

Tout d'abord, la clé privée K et le vecteur d'initialisation IV passent dans un algorithme appelé KSA (pour Key Scheduling Algorithm) qui génère une table d'états T qui aura la même taille que la clé dérivée. Cette table d'état passe ensuite dans un système de génération de séquences pseudo-aléatoires qui est basé sur l'utilisation de deux compteurs qui servent à organiser un pseudo-aléa. Une séquence pseudo-aléatoire S (qui a toujours la même taille que la clé dérivée) est alors générée. C'est cette séquence qui sera proprement dit la clé de cryptage effective.

L'opération de cryptage des données se fait pas un simple ou-exclusif (XOR) des bits en clair et de S. Bien sûr, S est beaucoup plus petite sue les données en clair. La méthode qui est utilisée consiste à étendre S pour lui faire atteindre la taille du texte plus son CRC32. La méthode d'expansion de S n'est expliquée nulle part mais consiste probablement en la multiplication de S par un polynôme remarquable de degré adéquat ou alors plus simplement par la répétition de ses bits.

Quoi qu'il en soit, les données cryptées C consistent en un simple ou-exclusif du texte clair couplé à son CRC32 avec la version étendue de S comme nous le montre le schéma FIG.[*].

Figure: Principe du cryptage WEP
\includegraphics[width=14cm,angle=0]{img/principe-du-wep.eps}

Le cryptage complet consiste en la formule suivante :

\begin{displaymath}C = (D \vert\vert c(D)) XOR RC4 (IV \vert\vert K) \end{displaymath}

(D sont les données en clair et c(D) le checksum (ou CRC de D))

2004-08-25