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
 IDEA

Introduction

Développé à Zurich en Suisse par Xuejia Lai et James Massey en 1992, le chiffrement par blocs IDEA (International Data Encryption Algorithm) utilise des blocs de 64 bits et est contrôlé par une clé de 128 bits. Malgré le fait que IDEA n'est pas un chiffrement Feistel, le déchiffrement est effectué avec la même fonction que celle utilisée dans le chiffrement. L'algorithme a innové dans son domaine en utilisant des opérations de trois groupes algébriques différents.

Le processus de chiffrement est le même que pour le déchiffrement, à moins d'une utilisation de différentes sous-clés, ce qui est rare. En gros, le processus se résume à huit étapes de chiffrement identiques, les rounds, suivies d'une transformation au bloc de sortie. Contrairement au DES et à Blowfish, IDEA n'utilise aucune S-Box.

L'algorithme peut être utilisé avec les modes d'opération ECB, CBC, CFB et OFB. Sa vitesse est environ la même que le DES.

Les droits d'exploitation sont détenus par Ascom Systec AG.

Algorithme


Chifffement

Les opérations utilisées sont le OU exclusif, l'addition modulo 216 (65 536) et la multiplication modulo 216 + 1 (65 537, qui est un nombre premier).

Le bloc de 64 bits en entrée est tout d'abord divisé en quatre blocs de 16 bits chacun. À noter que toutes les opérations algébriques utilisées dans le chiffrement fonctionnent avec des blocs de 16 bits.

Un processus produit, pour chacun des 8 rounds, 6 sous-clés de 16 bits chacune selon la clé de 128 bits. Avec quatre autres clés générées pour la transformation finale à la suite des huit rounds, un total de 52 sous-clés doit être généré.

Détermination des sous-clés

Les 52 sous-clés générées à partir de la clé de 128 bits sont produites comme suit :
  1. La clé de 128 bits est divisée en huit blocs. Ces huit blocs sont en fait les huit premières sous-clés utilisées dans le chiffrement.
  2. La clé de 128 bits est ensuite cycliquement décalée de 25 positions et divisée en huit blocs de 16 bits. Ces huit blocs sont les huit sous-clés suivantes utilisées dans le chiffrement.
  3. Le cycle est répété jusqu'à ce que les 52 sous-clés soient toutes générées.
Utilisation des sous-clés de chiffrement :

Round 1 K[1] , K[2] , K[3] , K[4] , K[5] , K[6]
Round 2 K[7] , K[8] , K[9] , K[10] , K[11] , K[12]
Round 3 K[13] , K[14] , K[15] , K[16] , K[17] , K[18]
Round 4 K[19] , K[20] , K[21] , K[22] , K[23] , K[24]
Round 5 K[25] , K[26] , K[27] , K[28] , K[29] , K[30]
Round 6 K[31] , K[32] , K[33] , K[34] , K[35] , K[36]
Round 7 K[37] , K[38] , K[39] , K[40] , K[41] , K[42]
Round 8 K[43] , K[44] , K[45] , K[46] , K[47] , K[48]
Transformation
finale
K[49] , K[50] , K[51] , K[52]

Texte clair (64 bits)
Texte chiffré (64 bits)
OU-Exclusif sur 2 blocs de 16 bits
Addition modulo 216 sur 2 blocs de 16 bits
Multiplication modulo 216 + 1 sur 2 blocs de 16 bits

Dans le premier round, les quatre premières sous-clés sont combinées avec tout d'abord deux blocs de 16 bits du texte clair selon l'addition modulo 216, et avec deux autres blocs de texte clair en utilisant la multiplication modulo 216 + 1. Les résultats sont ensuite traités plus loin, où deux autres sous-clés sont employées et l'opération du troisième groupe algébrique, le OU exclusif bit-à-bit, est utilisée. À la fin du premier round de chiffrement, quatre valeurs de 16 bits sont produites et elles sont utilisées comme valeurs d'entrée au deuxième round de chiffrement, dans un ordre interchangé.

Le même processus s'effectue dans les sept rounds de chiffrement suivants, avec des sous-clés différentes pour chaque combinaison. Les quatre blocs de 16 bits produits par le dernier round, le huitième, sont combinés avec les quatre dernières sous-clés selon l'addition modulo 216 et la multiplication modulo 216. Le résultat final forme quatre blocs chiffrés de 16 bits, donc 64 bits de texte chiffré.

Il est à noter que dans la multiplication de deux blocs de 16 bits modulo 216 + 1, un bloc de 16 bits ayant tout ses bits à 0 n'est pas interprété comme ayant une valeur totale de 0 mais plutôt une valeur de 216.

En équations

Soient A, B, C et D quatre blocs de 16 bits et 52 sous-clé K[1] à K[52].
(· est une multiplication et + est une addition)

Avant d'effectuer le premier round

A = A · K[1]
B = B + K[2]
C = C + K[3]
D = D · K[4]

Round 1

E = A XOR C
F = B XOR D
E = E · K[5]
F = F + E
F = F · K[6]
E = E + F
A = F XOR A
C = F XOR C
B = E XOR B
D = E XOR D
Tampon = B
B = C
C = Tampon

Répéter sept autres fois en utilisant les sous-clés suivantes : K[7] à K[12] pour le deuxième round, ..., K[43] à K[48] pour le huitième round

Après le huitième round

A = A · K[49]
B = B + K[50]
C = C + K[51]
D = D · K[52]


Déchiffrement

Le déchiffrement s'effectue essentiellement de la même manière que le chiffrement. La seule différence est que les 52 sous-clés sont générées de façon inverse au chiffrement. Aussi les blocs de texte chiffré doivent être traités dans l'ordre inverse du chiffrement pour inverser parfaitement le processus de chiffrement.

Utilisation des sous-clés de déchiffrement, selon les sous-clés de chiffrement (Ex.: Kdéchiffrement[1] = 1 / Kchiffrement[49]) :

Transformation
initiale
     1 / K[49], - K[50], - K[51], 1 / K[52]
Round 1 K[47], K[48], 1 / K[43], - K[45], - K[44], 1 / K[46]
Round 2 K[41], K[42], 1 / K[37], - K[39], - K[38], 1 / K[40]
Round 3 K[35], K[36], 1 / K[31], - K[33], - K[32], 1 / K[34]
Round 4 K[29], K[30], 1 / K[25], - K[27], - K[26], 1 / K[28]
Round 5 K[23], K[24], 1 / K[19] , - K[21] , - K[20] , 1 / K[22]
Round 6 K[17], K[18], 1 / K[13] , - K[15] , - K[14] , 1 / K[16]
Round 7 K[11], K[12], 1 / K[7], - K[9], - K[8], 1 / K[10]
Round 8 K[5], K[6], 1 / K[1], - K[3], - K[2], 1 / K[4]


Considérations

La méthode de génération des sous-clés de l'IDEA est toujours régulière et donc pourrait être une faiblesse à l'algorithme. Cependant, il est considéré comme étant hautement sécuritaire. En effet, pour résoudre IDEA avec l'attaque en force, il faudrait effectuer 2128, donc 1038 opérations.

IDEA est protégé par les lois internationales de "copyright" et a été breveté dans plusieurs pays. Néanmoins, son utilisation non commerciale est gratuite.




Pour en savoir plus
· Page officielle :
http://www.mediacrypt.com
· Codes sources C/C++/Java :
ftp://ftp.funet.fi/pub/crypt/cryptography/symmetric/idea/
http://www.cryptix.org
/codes/idea/


.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