|
|
Chiffrements par blocs
RC2 - RC5 - RC6 |
Introduction
RC2, RC5 et RC6 sont des algorithmes créés par Ronald Rivest pour la RSA Security. L'acronyme "RC" signifie "Ron's Code" ou "Rivest's Cipher".
Algorithmes
|
Le RC2 a été conçu en 1989. Il avait été programmé pour être efficace avec les processeurs de 16 bits comme remplacement au DES. Il s'opère sur des blocs de 64 bits. La grandeur de la clé est variable, de 1 octet (8 bits) à 128 octets (1024 bits). Habituellement, l'algorithme s'applique avec une clé de 64 bits.
Le procédé nouveau qu'a apporté cet algorithme a été d'offrir aux utilisateurs la possibilité de choisir la grandeur de la clé. Cette propriété est maintenant offerte dans plusieurs chiffrements par blocs, étant primordiale dans les applications commerciales.
Chifffement
Il y a deux parties dans l'algorithme, soit une procédure d'expansion de la clé et une procédure de chiffrement. Ces deux parties utilisent une table de substitution (S-Box) qui spécifie une permutation aléatoire d'entiers de 0 à 255.
Le chiffrement est défini en gros par 2 opérations, appelées MIX et MASH, sur 4 vecteurs de 16 bits contenant au total 64 bits de texte clair.
| MIX : |
fonction de permutations et de substitutions |
| MIXING : |
4 fonctions MIX appliquées à chacun des 4 vecteurs de 16bits. |
|
|
| MASH : |
fonction de permutations et de substitutions |
| MASHING : |
4 fonctions MASH appliquées à chacun des 4 vecteurs de 16bits. |
Étapes :
|
Initialiser les 4 vecteurs de 16 bits chacun, ils contiennent un bloc de 64 bits de texte clair. |
|
Procéder à l'expansion de la clé : initialiser les 64 sous-clés avec la clé. |
|
Effectuer 5 fois la fonction MIXING (5 rounds). |
|
Effectuer 1 fois la fonction MASHING (1 round). |
|
Effectuer 6 fois la fonction MIXING (6 rounds). |
|
Effectuer 1 round de fonction MASHING (1 round). |
|
Effectuer 5 fois la fonction MIXING (5 rounds). |
|
Le texte chiffré est dans les 4 vecteurs de 16 bits. |
Déchiffrement
Le déchiffrement est exactement l'inverse du chiffrement.
|
Le RC5 a été conçu en 1995. Il a l'avantage d'avoir une longueur de bloc de données variable, un nombre de rounds variable et une clé de longueur variable. Ainsi, l'utilisateur a le contrôle sur le rapport entre la vitesse d'exécution et la sécurité de son chiffrement. En général, une longue clé et un nombre élevé de rounds assurent une plus grande sécurité. La taille des blocs de données pour sa part accommode différentes architectures de systèmes.
La simplicité de l'algorithme du RC5 rend son implémentation facile et, le plus important, rend son analyse plus aisée. De plus, la forte utilisation des décalages de bits (appelés rotations) dans le chiffrement prévient l'usage de la cryptanalyse linéaire et différentielle.
En plus du mode EBC (Electronic Code Book), le RC5 est aussi utilisé avec le mode CBC (Cipher-Block Chaining).
Chifffement
Comme pour le RC2, il y a deux parties dans l'algorithme, soit une procédure d'expansion de la clé et une procédure de chiffrement. Les opérations utilisées sont l'addition modulo 2(nombre de bits des blocs) (+), le OU-Exclusif (XOR) et le décalage de bits vers la gauche (<<<).
En équations :
Soient K[0], K[1], ..., K[n] les sous-clés dérivées de la procédure d'expansion de la clé et A et B les deux parties d'un bloc de texte clair à chiffrer.
|
A = A + K[0] |
|
B = B + K[1] |
|
Pour i allant de 1 jusqu'au nombre de rounds |
|
A = ((A XOR B) <<< B) + K[2i] |
|
B = ((B XOR A) <<< A) + K[2i + 1] |
|
Fin Pour |
Déchiffrement
Le déchiffrement est exactement l'inverse du chiffrement.
|
Le RC6 a été créé en 1998. Il propose des améliorations au RC5 et, comme celui-ci, est fortement dépendant de la transformation de décalage de bits (rotation). Comme le RC5, il a l'avantage d'avoir une longueur de bloc de données variable, un nombre de rounds variable et une clé de longueur variable.
Toutefois, il utilise la multiplication, ce qui augmente la diffusion dans chacun des rounds, donc la sécurité, et il a dû se conformer à des spécifications : opérer des blocs de 128 bits divisés en quatre dans le traitement et être hautement sécuritaire par rapport à sa complexité.
RC6 a été soumis au NIST pour devenir le nouveau standard de la cryptographie avancée (Advanced Encryption Standard - AES).
Chifffement
Comme pour le RC2 et le RC5, il y a deux parties dans l'algorithme, soit une procédure d'expansion de la clé et une procédure de chiffrement. Les opérations utilisées sont l'addition modulo 2(nombre de bits des blocs) (+), la multiplication modulo 2(nombre de bits des blocs) (x), le OU-Exclusif (XOR) et le décalage de bits vers la gauche (<<<).
En équations :
Soient K[0], K[1], ..., K[n] les sous-clés dérivées de la procédure d'expansion de la clé et A, B,C et D les quatre parties d'un bloc de texte clair de 128 bits à chiffrer.
|
B = B + K[0] |
|
D = D + K[1] |
|
Pour i allant de 1 jusqu'au nombre de rounds "r" |
|
t = (B x (2B + 1)) <<< log2(nombre de bits des blocs) |
|
u = (D x (2D + 1)) <<< log2(nombre de bits des blocs) |
|
A = ((A XOR t) <<< u) + K[2i] |
|
C = ((C XOR u) <<< t) + K[2i + 1] |
|
(A,B,C,D) = (B,C,D,A) |
|
Fin Pour |
|
A = A + K(2r + 2) |
|
C = C + K(2r + 3) |
Déchiffrement
Le déchiffrement est exactement l'inverse du chiffrement.
Considérations
Les algorithmes de chiffrement RC2, RC5 et RC6 sont simples, donc très propices à la cryptanalyse. Ils sont cependant la propriété de la RSA Security.
À noter que le RC2 est vulnérable aux attaques reliées à la clé (related-key attacks). Il est important d'être assuré que les clés soient générées efficacement par un pseudo-générateur de nombres aléatoires (PRNG) robuste.
|
 |
Pour en savoir plus
RC2
RC5
RC6
|
|
|
|
|