Tutoriel de cryptographie Tutoriel de cryptographie

Simon Guillem-Lessard
Projet de fin d'étude 2001-2002
Département des mathématiques et de l'informatique
Université du Québec à Trois-Rivières


Table Des Matières
 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

RC2

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.

RC5

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.

RC6

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
· Page officielle :
http://www.rsasecurity.com/rsalabs/
· Codes sources C/C++/Java :
ftp://ftp.funet.fi/pub/crypt/cryptography/symmetric/rc2/
/codes/rc2/

RC5
· Page officielle :
http://www.rsasecurity.com/rsalabs/
· Codes sources C/C++/Java :
ftp://ftp.funet.fi/pub/crypt/cryptography/symmetric/rc5/
http://www.cryptix.org
/codes/rc5/

RC6
· Page officielle :
http://www.rsasecurity.com/rsalabs/rc6/
· Codes sources C/C++/Java :
ftp://ftp.funet.fi/pub/crypt/cryptography/symmetric/rc6/
http://www.cryptix.org
/codes/rc6/


.Sources.
.Haut de page.


Algorithmes Importants

  Systèmes à clé privée

     Blowfish

     DES

     IDEA

     RC2, RC5, RC6

     RC4

     Rijndael

     SEAL

     TripleDES

  Systèmes à clé publique

     Diffie-Hellman

     DSA

     PGP

     RSA

  Fonctions de hachage

     MD2, MD4, MD5

     RIPEMD-128, RIPEMD-160

     SHA0, SHA1

     Tiger

  Protocoles Web

     SSL

     SHTTP