|
|
Chiffrements par blocs
Rijndael |
Introduction
Rijndael a été conçu par Joan Daemen et Vincent Rijmen, deux chercheurs de la Belgique, dans le but de devenir un candidat à l'Advanced Encryption Standard (AES) du NIST. Après avoir réussi à se classer dans les six premiers, Rijndael a été choisi le standard en 2000, prenant la place du premier véritable standard de la cryptographie : le DES.
Le chiffrement a une longueur de bloc variable, une longueur de clé variable et un nombre de rounds variables. Par contre, Rijndael version "AES" est restreint à des longueurs de clé de 128, 192 et 256 bits avec une longueur de bloc fixée à 128 bits.
Trois critères principaux ont été respectés dans sa conception :
| · |
Résistance face à toutes les attaques connues; |
| · |
rapidité du code sur la plus grande variété de plates-formes possible; |
| · |
simplicité dans la conception. |
Rijndael (1998) a été fortement influencé par son prédécesseur, l'algorithme Square (1997). Les algorithmes Crypton et Twofish utilisent aussi des opérations de Square.
Rijndael se prononce "Rain Doll".
Algorithme
Comme la plupart des chiffrements par blocs modernes, le chiffrement s'effectue en deux parties : une procédure d'expansion de la clé et la fonction principale de chiffrement.
Chiffrement
La fonction de chiffrement se divise en trois : une transformation initiale avec la clé (l'étape "Add Round Key", bloc XOR clé), une série de rounds puis une transformation finale.
Le nombre de rounds s'établit en fonction de la taille des blocs et de la clé :
| · |
9 rounds si la taille des blocs et de la clé sont de 128 bits, |
| · |
11 rounds si la taille des blocs ou de la clé est de 192 bits (maximum), |
| · |
13 rounds si la taille des blocs ou de la clé est de 256 bits. |
Dans un round, quatre transformations sont appliquées au bloc à chiffrer.
La première étape est appelée "Byte Sub". Chaque octet des sous-blocs est alors substitué selon une S-Box. Cette opération augmente la non-linéarité des données.
Ensuite, l'étape "Shift Row" décale les bits des sous-blocs. La taille des sous-blocs dépend de la taille des blocs. Par exemple, pour des blocs de 128 bits, les sous-blocs ont une taille de 16 bits :
| 1 |
5 |
9 |
13 |
| 2 |
6 |
10 |
14 |
| 3 |
7 |
11 |
15 |
| 4 |
8 |
12 |
16 |
|
|
 |
| 1 |
5 |
9 |
13 |
| 14 |
2 |
6 |
10 |
| 11 |
15 |
3 |
7 |
| 8 |
12 |
8 |
4 |
|
|
Cette étape augmente la diffusion des données dans le round.
En troisième lieu, l'étape appelée "Mix Column" est appliquée. L'opération utilisée est la multiplication d'une matrice aux sous-blocs de 16 bits, toujours dans le cas d'un bloc de 128 bits. La matrice est représentée par :
| 1 |
5 |
9 |
13 |
| 2 |
6 |
10 |
14 |
| 3 |
7 |
11 |
15 |
| 4 |
8 |
12 |
16 |
|
Cette étape augmente la diffusion des données entre les rounds. À noter que les octets utilisés dans la multiplication sont traités comme des polynômes plutôt que des nombres.
L'étape finale est appelée "Add Round Key". Cette étape est simplement l'addition des sous-clés aux sous-blocs correspondants.
Déchifffement
Le déchiffrement est l'inverse du chiffrement.
Considérations
Rijndael peut être implémenté sur plusieurs architectures matérielles et une grande variété de processeurs. Étant devenu l'AES proposé, il sera prochainement utilisé par le gouvernement des États-Unis, les banques et les logiciels de chiffrements importants.
Il n'est aucunement question que Rijndael soit breveté, son utilisation est libre de droit.
|
 |
|
|
|
|