Proposition d’un Système Cryptographique à la base d’Algorithme Génétique Proposition d’un Crypto-Système à Clé Secrète sur la base d’Algorithme Génétique Mohamed Sadek ALI-PACHA Laboratoire SIMPA (Signal-Image-Parole) Université des Sciences et de la Technology d’Oran USTO, BP 1505 El M’Naouer Oran 31036 ALGERIE Email: [email protected] 1 Proposition d’un Système Cryptographique à la base d’Algorithme Génétique Résume : Nous avons assisté ces dernières années à une croissance très rapide des travaux utilisant les algorithmes génétiques. Les algorithmes génétiques (AGs) sont des algorithmes d’optimisation stochastique fondés sur les mécanismes de la sélection naturelle et de la génétique. Cette tendance peut être observée dans tous les domaines y compris dans la transmission de l’information. Dans cette communication on essaye de faire d’une part l’introduction aux algorithmes génétiques et d’autre part étudier la possibilité de mettre les AGs à la disposition de la cryptographie c'est-à-dire tout simplement chercher d’abord des modèles mathématiques adéquats pour sécuriser l’information, et que ses derniers les satisfassent les conditions des AGs. Mots Clés : 2 Algorithmes génétiques, Cryptographie, Générateur des bits pseudo-aléatoires, polynôme primitif. Proposition d’un Système Cryptographique à la base d’Algorithme Génétique 1. Introduction : Les AGs ont été initialement développés par John Holland [1]. C’est au livre de Goldberg [2] que nous devons leur popularisation. Les algorithmes génétiques (AGs) sont des algorithmes d’optimisation stochastique fondés sur les mécanismes de la sélection naturelle et de la génétique. Leur fonctionnement est extrêmement simple. On part avec une population de solutions potentielles (chromosomes) initiales arbitrairement choisies. On évalue leur performance (fitness) relative. Sur la base de ces performances on crée une nouvelle population de solutions potentielles en utilisant des opérateurs évolutionnaires simples : la sélection, le croisement et la mutation. On recommence ce cycle jusqu’à ce que l’on trouve une solution satisfaisante. Leurs champs d’application sont très vastes. Outre l’économie, ils sont utilisés pour l’optimisation de fonctions (De Jong (1980)), en finance (Pereira (2000)), en théorie du contrôle optimal (Krishnakumar et Goldberg (1992), Michalewicz, Janikow et Krawczyk (1992) et Marco et al. (1996)), encore en théorie des jeux répétés (Axelrod (1987)) et différentiels (Özyildirim (1996, 1997) et Özyildirim et Alemdar (1998)). Leur application dans la cryptographie fut initie [3] en 1993 par Spillman, Janssen, Nelson et Kepner, et leur travail été de casser un chiffrement par substitution simple en utilisant un algorithme génétique. Beaucoup de travaux ont été effectue dans ce sens c'est-à-dire, l'approche algorithme génétique a été utilisée uniquement pour casser des crypto systèmes classique (Substitution Mono alphabétique, Substitution Poly alphabétique, Chiffre de Permutation, Chiffrement par Transposition, Chiffre de Merkle-Hellman, Chiffre de Chor-Rivest, Chiffre de Vernam). La cryptographie est l’ensemble des processus de verrouillage visant à protéger l’accès à certaines données afin de les rendre incompréhensible aux personnes non autorisées [4], autrement dit garantir la confidentialité, l’intégrité de ces informations, ainsi que leur imputabilité. La figure N : 1 représente le schéma de principe de chiffrage où S est une source binaire (Laquelle peut être la sortie d’un convertisseur analogique-numérique). Figure N :1 Schéma de principe de chiffrage 3 Proposition d’un Système Cryptographique à la base d’Algorithme Génétique Aussi, beaucoup d'algorithmes génétiques de chiffrement ont été proposées A. Tragha et al. [5, 6], Décrivent un système de chiffrement symétrique par bloc appelé ICIGA (Improved Cryptography Inspired by Genetic Algorithms : cryptographie Amélioration Inspiré par Algorithmes Génétiques) qui génère une clé de session dans un processus aléatoire. Les tailles de bloc et les longueurs de clés sont variables et peuvent être fixés par l'utilisateur au début du chiffrement. Dans la même démarche à ces derniers travaux, nous présentons une nouvelle approche d’un crypto- système basé sur le principe des algorithmes génétiques. 2. Algorithmes Génétiques Holland fut le premier qui a proposé les Algorithmes Génétiques (AGs) dans les années 70. Ces derniers sont des algorithmes d’optimisation stochastique fondés sur les mécanismes de l’évolution génétique des espèces, plus précisément, du principe de sélection naturelle. 2.1. Présentation des Algorithmes Génétiques Les AGs travaillent sur une population de points au lieu d’un point unique. Contrairement aux autres méthodes, Ils utilisent un codage des paramètres et non les paramètres eux mêmes. De plus, les AGs ne prennent en considération que les valeurs de la fonction étudiée, pas sa dérivée, ou une autre connaissance auxiliaire [7]. Lors de leur fonctionnement, ils utilisent des règles de transition probabilistes (en situation de croisement ou de mutation par exemple) et non déterministe. Un AG manipule une population de taille constante N. Cette population se compose d’individus, chacun représente le codage d’une solution potentielle au problème posé, donnée sous la forme d’une chaîne de caractères. Chaque chaîne de caractères correspond à un Chromosome (individu / séquence). Chaque caractère à un gène et chaque lettre de l’alphabet à un allèle. Le locus est la position d’un gène au sein d’un chromosome. Reste la fonction sélective, qui permet d’associer une valeur à chaque individu de la population. Cette fonction est souvent une transformation de la fonction objective à optimiser (appelée fonction de fitness). Par ailleurs, il existe trois principaux types de codage : binaire, gray ou réel. Pour résumer, Lerman et Ngouenet [8] distinguent 4 principaux points qui font la différence fondamentale entre ces algorithmes et les autres méthodes : Individu/chromosome/séquence: une solution potentielle du problème ; Population : un ensemble de chromosomes ou de points de l’espace de recherche ; Environnement : l’espace de recherche ; Fonction de fitness : la fonction - positive - que nous cherchons à maximiser. Le fonctionnement d’un algorithme génétique de base (figure N°2) est comme suit: 4 Proposition d’un Système Cryptographique à la base d’Algorithme Génétique 1. Initialisation: il s’agit de générer aléatoirement une population d’individus de taille donnée ; 2. Evaluation : chaque chromosome est décodé puis évalué ; 3. Sélection : utilisation d’une technique de sélection appropriée afin de créer une nouvelle population de N chromosomes ; 4. Reproduction : il s’agit, en fait, de recombiner deux individus appariés (lors de la phase précédente) pour créer deux nouveaux individus. Il y a donc possibilité de mutation ou de croisement au sein de la nouvelle population. 5. Retour : à la phase de décodage et d’évaluation des chromosomes, jusqu’à l’arrêt du processus. Anciens chromosomes Nouveaux chromosomes Evaluation Crossover / Mutation Sélection Accouplement Figure 2: Cycle de l'algorithme génétique de base 2.2. Opérateurs Génétiques Nous avons signalé que la sélection des parents intervenant dans les opérateurs génétiques se faisait aléatoirement; cependant tous les individus ne sont pas sélectionnés comme parents, une certaine proportion des individus de la population B(t) survit dans la population B(t+1). Il existe quatre opérateurs génétiques classiques: 1. le croisement ou cross-over, 2. l'inversion, 3. la mutation et 4. l'insertion ou échange. L'utilisateur doit aussi fixer le taux d'utilisation des opérateurs génétiques retenus: par exemple 60% des individus sont retenus comme parents pour le cross-over, 1% subit une mutation et les autres sont inchangés. 5 Proposition d’un Système Cryptographique à la base d’Algorithme Génétique 2.2.1 Croisement (cross-over) L'opérateur le plus important est le cross-over ; il concerne deux génotypes parents choisis au hasard au temps t pour donner naissance à deux génotypes enfants qui se vont se substituer à eux dans la population au temps t+1. Il existe plusieurs formes de cross-over. La plus simple est le cross-over à un point : L'opération consiste à sélectionner une position au hasard dans les deux génotypes parents G1 et G2 et de créer les génotypes enfants G'1 et G'2 en attribuant à l'un d'entre eux la tête de G1 et la queue de G2 et à l'autre l'inverse. Exemple avec une coupure en position 22 d'un parent à allèles alphabétiques et d'un autre à allèles décimales : Abcdefghijklmnopqrstuv wxyz parent 1 12345678901234567890 1234 parent 2 Accouplement abcdefghijklmnopqrstuv 1234 enfant 1 12345678901234567890 wxyz enfant 2 Chaque enfant reçoit une partie du don des maths et de celui des langues. Le cross-over à deux points procède de même mais en sélectionnant deux points de coupure et en échangeant les parties centrales : abcdefghijkl mnopqrstuv wxyz parent 1 1234567890 1234567890 1234 parent 2 Accouplement abcdefghijkl 1234567890 1234 enfant 1 1234567890 mnopqrstuv wxyz enfant 2 A coté de ces deux cross-over "historiques" sont apparues d'autres formes plus modernes et plus complexes. Le partially matched cross-over (PMX), l'order cross-over (OX) et le cycle cross-over (CX) qui réordonnent les gènes sans changer leurs valeurs. 2.2.2 Inversion L'inversion est l'opérateur génétique le moins utilisé; il n'emploie qu'un seul parent pour créer un enfant qui le remplace dans la population. Il procède comme le cross-over à un ou deux points mais ne modifie pas les valeurs des allèles ; seulement leur ordre. 6 Proposition d’un Système Cryptographique à la base d’Algorithme Génétique Exemple à deux points : abcdefgh ijklm opqrstuvwxyz parent abcdefgh mlkji opqrstuvwxyz enfant En pratique il faut noter la valeur de l'allèle et la position du gène pour pouvoir continuer à l'identifier. Il en résulte des conflits avec l'opérateur de croisement car les génotypes que l'on essaye de croiser n'ont en général pas leur gènes à la même place. Il faut alors : soit éviter cet opérateur au profit du croisement ; c'est le cas le plus courant, soit réordonner l'un des parents en accord avec l'autre avant chaque application du croisement, soit limiter le croisement à des portions de génotypes contenant les mêmes gènes. 2.2.3 Mutation La mutation est l'opérateur génétique le plus simple; son emploi est peu important en fréquence mais son rôle est indispensable. La mutation consiste à changer la valeur d’un seul allèle choisi au hasard d'un parent et lui donner une valeur différente aléatoire. Exemple la 6e allèle est choisie et la valeur g est remplacée par w. abcdef g hijk parent abcdef w hijk enfant La mutation est indispensable car elle est la seule à pouvoir introduire une valeur d'allèle inexistante dans la population initiale ou réintroduire celle qui aurait disparu suite à l'emploi des autres opérateurs. 2.2.4 Insertion ou Echange L'insertion déplace un gène choisi au hasard vers une autre position choisie aussi au hasard sans changer sa valeur. L'échange choisit deux gènes au hasard et les permute sans changer leurs valeurs. 7 Proposition d’un Système Cryptographique à la base d’Algorithme Génétique 3. Crypto-Système Proposé : On prend les hypothèses suivantes donné par le tableau ci-dessous qui fait la correspondance entre les concepts des algorithmes génétiques et ceux de la cryptographie. Algorithme Génétique Cryptographie Chromosome (individu / séquence) Caractère du texte en claire ou cryptogramme Gène Bit Locus est la position d’un gène au sein d’un chromosome Position dans le caractère Fitness qui permet d’associer une valeur à chaque individu de Valeur ASCII du caractère la population Codage : binaire, gray ou réel Codage binaire ou réel Initialisation de l’algorithme Texte en clair Evaluation (chaque chromosome est décodé puis évalué) Valeur en ASCII Sélection des parents aux hasards pour créer des enfants Ordonnancement des caractères dans le texte en claire 3.1 Processus de Chiffrement Le texte en clair c’est le message à chiffrer. Il peut être une suite de bits, un fichier de texte, un enregistrement de voix numérisé, ou une image vidéo numérique. De toute façon le texte en clair n’est rien d’autre que de l’information binaire, comme il peut être transmis ou stocké. Les caractères du texte en claire sont ordonnancés et sont analysés deux à deux. Donc, la sélection des caractères parents pour produire des enfants sont issus de l’ordonnancement du texte en claire. La fonction fitness est la valeur décimale du code ASCII du caractère. 1. Si le nombre de caractère du texte en claire est impair le dernier caractère est choisi tout seul pour être parent et l’opérateur génétique choisi est l’inversion. 2. Soient A et B les valeurs décimales des caractères sélectionnés pour être parents. 3. La position du caractère qui correspond à la valeur A et avant la position du caractère qui correspond à la valeur B dans le texte en claire. 4. Si on compare A et B on aura trois possibilités : Deux possibilités (A>B ; A<B) l’opérateur génétique choisi est le cross-over ou l’échange selon la sélection au hasard des positions tête et queue des deux génotypes parents G1 et G2 pour créer les génotypes enfants si la position de la tête est inférieur à la position la queue l’opérateur 8 Proposition d’un Système Cryptographique à la base d’Algorithme Génétique génétique choisi est le cross-over dans le cas contraire l’opérateur génétique choisi sera l’échange. une seule possibilité (A=B) l’opérateur génétique choisi est la mutation produisant deux enfants jumeaux. 5. Déroulement d’une procédure d’aléas pour déterminer deux positions qui vont être utilisé pour l’opérateur génétique choisi (Cross-over il faut la tête et la queue ; Inversion deux positions afin d’intervertir les valeurs des allèles ; Mutation deux postions une position ou se fait le remplacement et une autre la valeur de ce changement ; Echange deux positions et on suite on permute). 6. Pour simplifier l’algorithme, on prend les enfants de la première génération. 7. Le caractère obtenu représentant l’enfant sera additionné modulo 2 avec une séquence aléatoire issu du bloc masquage de la même taille du caractère en clair (8 bits). Le résultat est le cryptogramme. Les figures N°3 et N°4 représentent respectivement le principe de chiffrement et de déchiffrement. Evaluation (fitness) Texte en clair Clé de Chiffrement Choix d’Opérateurs Génétiques Sélection Masquage + Texte Chiffré Texte Chiffré Figures N°3: Principe de chiffrement Masquage + Evaluation (fitness) Sélection Clé de Chiffrement Choix d’Opérateurs Génétiques Texte en clair Figures N°4: Principe de déchiffrement Le système cryptographie ainsi obtenu est un système à clé secrète et la clé de chiffrement est constituée par cinq champs suivants : 1 Valeur initiale d’Aléa 2 Nombre de Génération 3 Fonction de rétroaction f 4 Fonction non-linéaire g 5 Valeur initiale des bascules du registre Clé de chiffrement/déchiffrement 9 Proposition d’un Système Cryptographique à la base d’Algorithme Génétique 3.2 Procédure d’Aléas POSITION = POSITION modulo (8) Si Valeur (POSITION) ≤ 2 Then POSITION = POSITION + 1 else POSITION =POSITION + 2 Remarque on extrait la valeur initiale de position par rapport aux champs de la clé de chiffrement. On la note POSITION. Dans cette procédure d’aléas (si on la prend comme exemple) seuls les positions 2 ; 3 ; 5 et 7 dans le caractère ASCII peuvent être choisi les valeurs de ces positions correspondent sont des nombres premiers. 3.3 Masquage Le principal intérêt de l’étude des Générateurs Pseudo-Aléatoires de Suites Cryptographiquement Surs GPASCS est qu’ils sont parfaits pour le chiffrement en continu. Leur construction se fait en tenant compte de: 1. Longue période 2. Pas de répétitions 3. Complexité linéaire locale 4. Critères de non linéarité pour des fonctions booléennes La génération pseudo-aléatoire repose sur l'utilisation d'Automate Cellulaire (CA pour "Cellular Automata") et plus généralement sur l'utilisation d'un Registre à Décalage à Rétroaction Linéaire [9, 10]. Un registre à décalage à rétroaction non-linéaire (NLFFSR) est un mécanisme pour générer des séquences binaires [11]. La figure N : 5 montre un modèle général d'un NLFFSR de n bits avec une fonction de rétroaction f et une fonction non linéaire g. Fonction non-linéaire g Séquence binaire de sortie Fonction de rétraction f Figure 5 : Modèle général de NLFFSR à 4 bits 10 Proposition d’un Système Cryptographique à la base d’Algorithme Génétique NLFFSR sont des bons générateurs pseudo-aléatoires délivrant en sortie des séquences binaires. Lorsque ce registre est initialisé avec une valeur donnée (sauf 0 qui va générer une séquence des 0 binaire pseudo-aléatoire), il génère séquence binaire pseudo-aléatoire qui a une très bonne propriété statistique. Au-delà de cet aspect pseudo-aléatoire, de nombreuses études ont été menées afin de juger le caractère aléatoire des séquences de sortie du générateur en fonction : de la fréquence d'apparition des valeurs 0 et 1 sur les différents bits des vecteurs produits, des corrélations possibles entre ces bits, des densités de 0 et de 1 au sein d'un vecteur donné. Pour les NLFFSR le signal n'est nécessaire que pour la génération de la séquence binaire est une impulsion d'horloge. A chaque impulsion d'horloge la séquence binaire est produite. On prend pour modèle NLFFSR de 4 bits les hypothèses suivantes : la fonction de rétroaction f = 1 + x + x4 et la fonction non-linéaire g est définie par le registre est initialisé à : (1111). La séquence de sortie Zn: 011111000000001... ... ... .. Pour utiliser la séquence Zn dans notre application on peut regroupe chaque huit bits successifs et on obtient a1.a3 + a2.a4 ainsi la séquence décimale comme celle issue du texte en claire. NLFFSR est périodique de période 15 Période de la séquence générée par NLFFSR est maximale si on utilise le polynôme primitif. Le polynôme caractéristique associé à une séquence de longueur maximum est appelé polynôme primitif. Un polynôme primitif est irréductible et satisfait les deux conditions suivantes : 1. il a un nombre impair de termes (le terme 1 inclus) 2. si il est de degré supérieur à 3 alors P(x) doit se diviser en (1+x k), avec k=2n–1 Pour concevoir un système de chiffrement de flux, il faut considérer un registre à décalage non-linéaire avec des polynômes primitifs de rétroaction. 11 Proposition d’un Système Cryptographique à la base d’Algorithme Génétique 4. Conclusion : Dans ce travail, nous avons utilisé les concepts des algorithmes génétiques en cryptographie ainsi que les propriétés aléatoire des NLFFSR, afin de construire une nouvelle approche d’un crypto-système à clé secrète. La difficulté majeure des algorithmes génétiques ne réside pas dans la mise en œuvre de l’algorithme lui-même, mais plutôt, dans le choix des valeurs adéquates des différents paramètres de ce dernier. Le réglage de ces paramètres est une question très délicate qui diffère d’un problème à un autre. Cette étape constitue une part très importante du travail de l’utilisateur qui doit les adapter à la nature du problème posé. Les résultats des simulations de notre crypto-système ont indiqué que les résultats de chiffrement sont complètement chaotiques et, très sensibles aux changements des paramètres. Bibliographies [1] Holland, J. H. (1975), "Adaptation in Natural And Artificial Systems", University of Michigan Press. [2] Goldberg, D. (1989), "Genetic Algorithm In Search, Optimization And Machine Learning", Addison-Wesley. [3] Spillman R., Janssen M., Nelson B., and Kepner M., "Use of a Genetic Algorithm in the Cryptanalysts of Simple Substitution Ciphers", Cryptologia, vol. 16, no. 1, pp. 31- 44, January 1993. [4] Bruce Schneir, "Applied Cryptography, Protocols, Algorithms, and source Code in C", edition John Wiley & Sons Inc., 1994. [5] Tragha A., Omary F., A. Kriouile, “Genetic Algorithms Inspired Cryptography” A.M.S.E Association for the Advancement of Modeling & Simulation Techniques in Enterprises, Series D: Computer Science and Statistics, 2005. [6] Tragha A., Omary F., Mouloudi A.,”ICIGA: Improved Cryptography Inspired by Genetic Algorithms”, Proceedings of the International Conference on Hybrid Information Technology (ICHIT'06), pp. 335-341, 2006. [7] Vallée T. et M. Yildizoglu, Présentation des algorithmes génétiques et de leurs applications en économie, Document de travail n° 2001-3, IFREDE-E3i, Université Montesquieu Bordeaux IV, septembre 2001. [8] Lerman, I. & Ngouenet, F. (1995), Algorithmes génétiques séquentiels et parallèles pour une représentation affine des proximités, Rapport de Recherche de l’INRIA Rennes - Projet REPCO 2570, INRIA. [9] P.H. Bardell, "Analysis of Cellular Automata Used as Pseudorandom Pattern Generators", Proc. of International Test Conference, pp. 762-767, 1990. [10] C. DUFAZA, G. CAMBON, ”LFSR based deterministic and pseudo–random test pattern generator structures”, Proc. ETC’91, pp. 27–34, 1991. [11] Ahmad A., Al-Musharafi M. J., Al-Busaidi S., Al-Naamany A., and Jervase J. A., “An NLFSR Based Sequence Generation for Stream Ciphers”, Proceedings of International Conference on Sequences and their Applications, pp. 11-12, 2001. 12