Aller au contenu

International Data Encryption Algorithm

Un article de Wikipédia, l'encyclopédie libre.
Ceci est une version archivée de cette page, en date du 5 avril 2013 à 02:41 et modifiée en dernier par AlterMind (discuter | contributions) (typos corrections and style enhancements). Elle peut contenir des erreurs, des inexactitudes ou des contenus vandalisés non présents dans la version actuelle.

IDEA
Description de l'image International Data Encryption Algorithm InfoBox Diagram.svg.
Résumé
Concepteur(s) Xuejia Lai, James Massey
Première publication 1991
Dérivé de PES
Chiffrement(s) basé(s) sur cet algorithme FOX, IDEA NXT, Akelarre, MESH
Caractéristiques
Taille(s) du bloc 64 bits
Longueur(s) de la clé 128 bits
Structure schéma de Lai-Massey
Nombre de tours 8 tours + ½ tour final

Meilleure cryptanalyse

Attaque par collision avec 224 textes clairs, complexité de 2126 pour un IDEA de 5 rondes.

IDEA, pour International Data Encryption Algorithm, est un algorithme de chiffrement symétrique conçu par Xuejia Lai et James Massey.

L'algorithme IDEA a été breveté par la société suisse Mediacrypt ; le brevet a expiré en 2011 en Europe, et en janvier 2012 aux États-Unis et au Japon. Mediacrypt met en avant depuis mai 2005 son nouveau chiffrement nommé « IDEA NXT » qui est en fait FOX.

Survol

IDEA est un algorithme de chiffrement symétrique par blocs utilisé pour chiffrer et déchiffrer des données. Il manipule des blocs de texte en clair de 64 bits. Une clé de chiffrement longue de 128 bits (qui doit être choisie aléatoirement) est utilisée pour le chiffrement des données. La même clé secrète est requise pour les déchiffrer.

Comme tous les algorithmes de chiffrement par blocs, IDEA utilise à la fois la confusion et la diffusion. L'algorithme est basé sur une combinaison d'opérations de différents groupes algébriques. Il y a trois groupes algébriques dont les opérations sont mélangées. Toutes ces opérations sont facilement réalisables à la fois sous forme logicielle ou matérielle :

  • OU exclusif (représenté par un )
  • addition modulo 216 (représenté par un )
  • multiplication modulo 216+1 (représenté par un )

Toutes ces opérations manipulent des sous-blocs de 16 bits. Cet algorithme est ainsi efficace même sur des processeurs 16 bits.

Description

Le bloc de données de 64 bits est divisé en 4 sous-blocs de 16 bits : X1, X2, X3 et X4. Ces quatre sous-blocs deviennent les entrées de la première ronde de l'algorithme. Il y a huit rondes au total. À chaque ronde, les 4 sous-blocs sont combinés par OU exclusif, additionnés, multipliés entre eux et avec 6 sous-clefs K1 ... K6 de 16 bits dérivés de la clé de chiffrement. Entre chaque ronde, les deuxième et troisième sous-blocs sont échangés. Enfin, les quatre sous-blocs obtenus après la huitième ronde sont traités avec quatre dernières sous-clefs dans une transformation finale.

À chaque ronde, la séquence d'évènements est la suivante :

  1. multipliez X1 et la première sous-clef ;
  2. additionnez X2 et la deuxième sous-clef ;
  3. additionnez X3 et la troisième sous-clef ;
  4. multipliez X4 et la quatrième sous-clef ;
  5. combinez par OU exclusif les résultats des étapes (1) et (3) ;
  6. combinez par OU exclusif les résultats des étapes (2) et (4) ;
  7. multipliez le résultat de l'étape (5) avec la cinquième sous-clef ;
  8. additionnez les résultats des étapes (6) et (7) ;
  9. multipliez le résultat de l'étape (8) par la sixième sous-clef ;
  10. additionnez les résultats des étapes (7) et (9) ;
  11. combinez par OU exclusif les résultats des étapes (1) et (9) ;
  12. combinez par OU exclusif les résultats des étapes (3) et (9) ;
  13. combinez par OU exclusif les résultats des étapes (2) et (10) ;
  14. combinez par OU exclusif les résultats des étapes (4) et (10).

La sortie de la ronde est constituée des 4 sous-blocs produits par les étapes (11), (13), (12) et (14). Permutez les deux sous-blocs intérieurs (sauf lors de la dernière ronde) et cela donne l'entrée de la ronde suivante.
Après la huitième ronde, il y a une transformation finale :

  1. multipliez X1 et la première sous-clef ;
  2. additionnez X2 et la deuxième sous-clef ;
  3. additionnez X3 et la troisième sous-clef ;
  4. multipliez X4 et la quatrième sous-clef.

Enfin les 4 sous-blocs sont réassemblés pour former le texte chiffré de 64 bits.

Chaque ronde utilise 6 sous-clés de 16 bits distinctes et la transformation finale utilise 4 sous-clés; un total de 52 sous-clés est donc utilisé. Les premières 8 sous-clés sont extraites directement de la clé de chiffrement de 128 bits, avec K1 étant pris dans les 16 bits de poids le plus faible. Les groupes suivants de 8 sous-clés sont extraits après rotation à gauche de 25 bits de la clé de chiffrement, ce qui donne 6 rotations en total.

Liens externes

Modèle:Lien BA