crypto-systèmes basés chaos robustes et efficaces
3.2 Structure des crypto‐systèmes basés chaos conçus et réalisés
Nous décrivons dans ce paragraphe les crypto‐systèmes proposés, qui sont généralement appropriés pour des mises en œuvre logicielles et matérielles. Les crypto‐systèmes réalisés peuvent être utilisés pour assurer le service de confidentialité tel que : communications câblées, sans fil, et radio‐mobiles, les transactions bancaires, etc.
Ces crypto‐systèmes utilisent des algorithmes de chiffrement/déchiffrement par bloc de type symétrique.
Des résultats expérimentaux sont donnés pour chaque crypto‐système ainsi qu’une étude comparative des performances de ces crypto‐systèmes selon une batterie de tests les plus adéquats.
Tous les algorithmes de chiffrement/déchiffrement proposés sont réalisés pour tous les modes opératoires de la norme NIST (ECB, CBC, OFB, CTR, CMAC, CCM et GCM). Les trois premiers modes, à part le mode ECB, renforcent la confidentialité des crypto‐systèmes et les trois derniers modes renforcent la confidentialité et réalisent lʹauthentification. Par ailleurs, les crypto‐systèmes réalisés sont applicables à pratiquement tous les formats d’images JPEG, JPEG2000, JPSEC etc.
Nous présentons par la suite, le diagramme de chiffrement/déchiffrement des différents crypto‐systèmes proposés en mode ECB, sachant que nous avons aussi, mis en œuvre les autres modes cryptographiques à savoir: CBC, OFB CTR, CCM, CMAC, GCM.
3.2.1 Crypto‐systèmes basés chaos utilisant les réseaux de substitution‐
permutation
La structure moderne d’un algorithme de chiffrement par bloc, basé sur les réseaux de substitution‐permutation (SPN), consiste, dans le cas où le processus de permutation est réalisé sur les octets, en quatre transformations de base, appelées aussi couches qui sont: ‐ la transformation d’addition de clés dynamiques ‐ la transformation de substitution ‐ la transformation de permutation ‐ la transformation de mélange linéaire Chaque transformation est appliquée un certain nombre de fois (itérations) avant de passer à la transformation suivante, ceci permet d’augmenter considérablement la sécurité de l’algorithme, [Shannon, 1949]. Notons au passage que la transformation de mélange linéaire utilisée par l’algorithme AES pour assurer la diffusion, consomme pratiquement les ¾ du temps de calcul, ceci est causé par les multiples opérations de multiplication. D’où l’intérêt de proposer une couche de diffusion simple du point de vue de l’implémentation, donc rapide et aussi performante comparée à celle de l’AES.
Dans le cas où la permutation est faite sur les bits, la dernière couche (transformation de mélange linéaire) n’est pas nécessaire.
Le déchiffrement est réalisé par les transformations inverses appliquées dans lʹordre inverse du chiffrement.
En général, dans les crypto‐systèmes basés chaos, les différentes couches citées plus haut sont appliquées en temps réel sur chaque bloc, utilisant des clés dynamiques comme paramètres de contrôle. Certains algorithmes utilisent la même clé dynamique d’itération pour chaque transformation, d’autres, dont font partie les deux premiers crypto‐systèmes proposés, utilisent des clés dynamiques différentes pour chaque itération, ce qui augmente considérablement la robustesse de l’algorithme. Notons aussi que la sécurité d’un algorithme de chiffrement dépend grandement de la robustesse de la couche de substitution. Plus le processus de substitution est fortement non‐linéaire, plus grande est la robustesse globale de l’algorithme.
Pour des applications qui ont une contrainte de ressources (capacité de mémoires et moyen de calculs) comme les réseaux mobiles, le processus de substitution peut être réalisé par des transformations non‐linéaires, comme par exemple la carte chaotique skew tent qui est inversible. Le processus de permutation peut lui aussi être réalisé par la même carte chaotique skew tent légèrement modifiée (avec deux versions selon que la permutation est réalisée sur les bits ou sur les octets) ou aussi par une fonction polynomiale comme celle utilisée par l’algorithme RC6 [ Rivest et al, 1998].
Pour les applications qui nécessitent le traitement d’une importante quantité d’information et aussi la transmission à un grand débit, et tout cela en temps réel, comme la transmission des vidéo chiffrées, les couches de substitution et de permutation sont générées dynamiquement et sauvegardées dans des mémoires sûres, pour ensuite être utilisées par l’algorithme de chiffrement/déchiffrement. Dans ce cas, le troisième crypto‐système proposé s’applique. A ce propos, plusieurs techniques, basées chaos, de création des boîtes de substitution (boîtes‐S, S‐boxes) et de permutation (boîtes‐P, P‐boxes) dépendantes de clés dynamiques sont proposées. Les boîtes de substitution sont conçues pour une entrée/sortie de 8 bits (traitement octet par octet).
Les boîtes de permutation sont essentiellement conçues à partir des cartes chaotiques monodimensionnelles (1‐D) et bidimensionnelles (2‐D) comme les cartes cat et standard qui sont bijectives mais non inversibles à cause de la fonction modulo. Notons au passage que la carte chaotique standard est extrêmement coûteuse en implémentation matérielle, car elle utilise la fonction sinus qui sera forcement calculée en virgule flottante.
Pour cette catégorie de crypto‐systèmes, le gain obtenu en termes de quantité d’information traitée et de temps de traitement est balancé par la robustesse globale obtenue.
Chaque algorithme de chiffrement/déchiffrement est aussi caractérisé par : • les composantes du SPN (ou la fonction d’itération)
• taille du bloc à chiffrer/déchiffrer en bits : 64, 256, 1024 bits
• taille de la clé secrète qui doit être supérieure à 128 bits, pour contourner les attaques exhaustives.
Par ailleurs, pour tous les algorithmes proposés, avant de commencer le processus de chiffrement, dʹabord, nous lisons lʹimage I et lʹexprimons sous forme d’un tableau 1‐D de taille , où est le nombre de lignes, est le nombre de colonnes et est le nombre de plan (P=3, pour une image couleur RGB). Ensuite, nous divisons le tableau 1‐D en blocs de taille fixe 2 bits, avec entier. Le nombre dʹoctets dans un bloc est égal à /8 2 .