Dossier - Lycée Colbert
Transcription
Dossier - Lycée Colbert
SPEYBROUCK Clément DELSINNE Louis TSSI 2012-2013 PROJET LIÉ A LA SPÉCIALITÉ ISN TROIS MÉTHODES DE CRYPTAGE ET DÉCRYPTAGE DE TEXTE Année 2012/2013 Lycée Colbert, Tourcoing 1 Présentation Le projet conçu dans le cadre de la spécialité Informatique et Sciences du Numérique présenté ici est un site concernant différentes méthodes de cryptage. Il a principalement suscité l'utilisation des langages HTML5 et JavaScript, dans le but de concevoir dans un premier temps le support du projet, c'est à dire le site, et dans un second temps les applets Javascript qui sont présentes sur le site. Ce projet a été conçu dans le but de répondre à une demande de pouvoir crypter du contenu en utilisant un site accessible à tous les utilisateurs et relativement facile à utiliser et à comprendre. Dans cette optique, plusieurs méthodes de cryptage seront brièvement présentées l’une après l’autre. Le code César : En cryptographie, le chiffrement par décalage, aussi connu comme le chiffre de César, est une méthode de chiffrement très simple utilisée par Jules César dans ses correspondances secrètes (ce qui explique son appellation « chiffre de César »). Il est basé sur un simple décalage de l'alphabet dans lequel, on note A = 1, B = 2, ..., Z = 26, on y ajoute une constante chiffrée (+1, +2,…) dont le résultat donnera une nouvelle valeur, à laquelle on appliquera si nécessaire un modulo 26. Cette nouvelle valeur permettra d’obtenir le texte codé. Par exemple, si on code le mot « BONJOUR » en utilisant un décalage de 2, on obtiendra le mot crypté tel que « DQPLQWT ». Car la valeur de B dans l’alphabet classique = 2 , on y ajoute la constante +2 =4 et 4 = D. Pour déchiffrer ce message, rien de plus simple, on fait l’opération inverse, D = 4 et si le décalage est de 2 on obtient : 4-2 =2 et 2 = B. On retrouve bien la lettre B précédemment codée. Le code Vigenère : Le chiffrement utilise une clé composée de lettres. Pour chiffrer, on prend la première lettre du message et la première lettre de la clé que l'on ajoute (les lettres ont une valeur de A=0 à Z=25, on prend la somme modulo 26), on note alors la lettre associée au résultat. Si la longueur de la clé est inférieure à celle du texte, on reprend au début de la clé. Plus la clé est longue, plus le code sera difficile à décrypter. Par exemple : Texte en clair : L ISN C EST GENIAL Clé répétée : C LES C LES CLESCL 2 La première lettre vaut : L + C = 11 + 2 = 13 mod 26 = 13 soit N. Texte chiffré : N TWF E PWL IPRACW Le principe du déchiffrement est le même que le chiffrement, sauf que l'on soustrait la lettre chiffrée par une autre de la clé. En reprenant l’exemple précédent : Texte chiffré : N TWF E PWL IPRACW Clé répétée : C LES C LES CLESCL La première lettre vaut : N- C = 13 - 2 = 11 mod 26 = 11 soit L. Texte en clair : L ISN C EST GENIAL La table de Vigenère, utilisée pour coder le texte est la suivante : Source: bibmath.net 3 Le code affine : Le chiffre affine est une méthode de cryptographie basée sur un chiffrement par substitution. Il s'agit d'un code simple à appréhender mais aussi un des plus faciles à « casser ». On commence par remplacer chaque lettre par son rang dans l'alphabet en commençant par A = 0. Ensuite, on considère deux entiers A et B choisis comme clé et A premier avec 26. Chaque lettre claire est d'abord remplacée par son équivalent numérique x puis chiffrée par le calcul du reste de la division euclidienne par 26 de l'expression affine, on a donc (Ax+B) mod 26. Par exemple, le message « BONJOURATOUS » encodé à l'aide du code affine avec les coefficients A=3 et B=1 nous donne « EROCRJABGRJD ». Pour le décryptage on associe à chaque valeur de y du message codé, une valeur x, résultat de la fonction réciproque x = A'*(y-B) mod 26. La valeur A' est un entier tel que A*A' = 1 mod(26). Soit un chiffrement affine de coefficients A = 3, B = 5. On recherche la valeur A' pour A = 3, une des valeurs possibles est A'=9, car A*A'=3*9=27=1 mod 26. A chaque lettre du message codé OLVOR (O = 14, L = 11, V = 21, O = 14, R = 17) on réalise le calcul A'*(x-B) mod 26. Soit 9*(14-5)=81(mod26)=3=D, 9*(11-5)=54(mod26)=2=C, 9*(14-5)=144(mod26)=14=O, 9*(14-5)=81(mod26)=3=D, 9*(17-5)=108(mod26)=4=E. Le message clair est donc DCODE. Valeurs de A’ possibles : 1 3 5 7 9 11 15 17 19 21 23 25 1 9 21 15 3 19 7 23 11 5 17 2 4 Application pratique : Pour pouvoir réaliser ces 3 moyens de cryptage et/ou décryptage sur le site, nous avons utilisé une méthode permettant d’avoir accès au code ASCII d’une lettre . De plus il existe aussi une méthode qui associe une valeur numérique à un caractère ASCII. Grâce à ces deux techniques, nous n’avons pas eu besoin d’affecter nous même une valeur à une lettre, ce qui a grandement simplifié notre tâche. La première méthode est : charCodeAt(?) qui récupère le code ASCII d’une lettre. Par exemple charCodeAt(A) = 65. La deuxième méthode est : fromCharCode(?) qui en fonction d’une valeur, retrouve son caractère ASCII associé. Par exemple fromCharCode(65) = A. Durant le développement de ces outils, nous avons rencontré principalement un problème, celui du codage de la ponctuation et des espaces. Nous n’avons pas pu le résoudre. Cela pose réellement un problème dans le code Vigenère car la phrase clef doit absolument respecter la ponctuation de la phrase à coder ou à décoder. C’est la raison pour laquelle nous avons précisé ce point à l’utilisateur. 5 Code Javascript du code César : 6 Code Javascript du code Vigenère : 7 Code Javascript du chiffre Affine (partiel) : 8 9 SPEYBROUCK Clément DELSINNE Louis TSSI 2012-2013 PROJET LIE A LA SPECIALITE ISN : TROIS METHODES DE CRYPTAGE Année 2012/2013 Lycée Colbert, Tourcoing 10 Présentation Le projet conçu dans le cadre de la spécialité Informatique et Sciences du Numérique présenté ici est un site concernant différentes méthodes de cryptage. Il a principalement suscité l'utilisation des langages HTML5 et JavaScript, dans le but de concevoir dans un premier temps le support du projet, c'est à dire le site, et dans un second temps les applets Javascript qui sont présentes sur le site. Ce projet a été conçu dans le but de répondre à une demande de pouvoir crypter du contenu en utilisant un site accessible à tous les utilisateurs et relativement facile à utiliser et à comprendre. Dans cette optique, plusieurs méthodes de cryptage seront brièvement présentées l’une après l’autre. Le code César : En cryptographie, le chiffrement par décalage, aussi connu comme le chiffre de César, est une méthode de chiffrement très simple utilisée par Jules César dans ses correspondances secrètes (ce qui explique son appellation « chiffre de César »). Il est basé sur un simple décalage de l'alphabet dans lequel, on note A = 1, B = 2, ..., Z = 26, on y ajoute une constante chiffrée (+1, +2,…) dont le résultat donnera une nouvelle valeur, à laquelle on appliquera si nécessaire un modulo 26.Cette nouvelle valeur permettra d’ obtenir le texte codé. Par exemple, si on code le mot « BONJOUR » en utilisant un décalage de 2, on obtiendra le mot crypté tel que « DQPLQWT ». Car la valeur de B dans l’alphabet classique = 2 , on y ajoute la constante +2 =4 et 4 = D. Pour déchiffrer ce message, rien de plus simple, on fait l’opération inverse, D = 4 et si le décalage est de 2 on obtient : 4-2 =2 et 2 = B. On retrouve bien la lettre B précédemment codée. Le code Vigenère : Le chiffrement utilise une clé composée de lettres. Pour chiffrer, on prend la première lettre du message et la première lettre de la clé que l'on ajoute (les lettres ont une valeur de A=0 à Z=25, on prend la somme modulo 26), on note alors la lettre associée au résultat. Si la longueur de la clé est inférieure à celle du texte, on reprend au début de la clé. Plus la clé est longue, plus le code sera difficile à décrypter. Par exemple : Texte en clair : L ISN C EST GENIAL Clé répétée : C LES C LES CLESCL La première lettre vaut : L + C = 11 + 2 = 13 mod 26 = 13 soit N. Texte chiffré : N TWF E PWL IPRACW 11 Le principe du déchiffrement est le même que le chiffrement, sauf que l'on soustrait la lettre chiffrée par une autre de la clé. En reprenant l’exemple précédent : Texte chiffré : N TWF E PWL IPRACW Clé répétée : C LES C LES CLESCL La première lettre vaut : N- C = 13 - 2 = 11 mod 26 = 11 soit L. Texte en clair : L ISN C EST GENIAL La table de Vigenère, utilisée pour coder le texte est la suivante : Source: bibmath.net 12 Le code affine : Le chiffre affine est une méthode de cryptographie basée sur un chiffrement par substitution. Il s'agit d'un code simple à appréhender mais aussi un des plus faciles à « casser ». On commence par remplacer chaque lettre par son rang dans l'alphabet en commençant par A = 0. Ensuite, on considère deux entiers A et B choisis comme clé et A premier avec 26. Chaque lettre claire est d'abord remplacée par son équivalent numérique x puis chiffrée par le calcul du reste de la division euclidienne par 26 de l'expression affine, on a donc (Ax+B) mod 26. Par exemple, le message « BONJOURATOUS » encodé à l'aide du code affine avec les coefficients A=3 et B=1 nous donne « EROCRJABGRJD ». Pour le décryptage on associe à chaque valeur de y du message codé, une valeur x, résultat de la fonction réciproque x = A'*(y-B) mod 26. La valeur A' est un entier tel que A*A' = 1 mod(26). Soit un chiffrement affine de coefficients A = 3, B = 5. On recherche la valeur A' pour A = 3, une des valeurs possibles est A'=9, car A*A'=3*9=27=1 mod 26. A chaque lettre du message codé OLVOR (O = 14, L = 11, V = 21, O = 14, R = 17) on réalise le calcul A'*(x-B) mod 26. Soit 9*(14-5)=81(mod26)=3=D, 9*(11-5)=54(mod26)=2=C, 9*(14-5)=144(mod26)=14=O, 9*(14-5)=81(mod26)=3=D, 9*(17-5)=108(mod26)=4=E. Le message clair est donc DCODE. Valeurs de A’ possibles : 1 3 5 7 9 11 15 17 19 21 23 25 1 9 21 15 3 19 7 23 11 5 17 2 13 Application pratique : Pour pouvoir réaliser ces 3 moyens de cryptage et/ou décryptage sur le site, nous avons utilisé une méthode permettant d’avoir accès au code ASCII d’une lettre . De plus il existe aussi une méthode qui associe une valeur numérique à un caractère ASCII. Grâce à ces deux techniques, nous n’avons pas eu besoin d’affecter nous même une valeur à une lettre, ce qui a grandement simplifié notre tâche. La première méthode est : charCodeAt(?) qui récupère le code ASCII d’une lettre. Par exemple charCodeAt(A) = 65. La deuxième méthode est : fromCharCode(?) qui en fonction d’une valeur, retrouve son caractère ASCII associé. Par exemple fromCharCode(65) = A. Durant le développement de ces outils, nous avons rencontré principalement un problème, celui du codage de la ponctuation et des espaces. Nous n’avons pas pu le résoudre. Cela pose réellement un problème dans le code Vigenère car la phrase clef doit absolument respecter la ponctuation de la phrase à coder ou à décoder. C’est la raison pour laquelle nous avons précisé ce point à l’utilisateur. 14 Code Javascript du code César : 15 Code Javascript du code Vigenère : 16 Code Javascript du chiffre Affine (partiel) : 17 HTML et CSS : La création du site a également comme on l’a dit suscité l’utilisation des langages informatiques HTML5 et CSS3. Ces deux ci nous ont permis de créer la structure pages et de leur donner un meilleur aspect esthétique. Diverses balises HTML et CSS permettent de modifier l’apparence d’un site internet, notamment le fond de la page ou les couleurs utilisées, parmi d’autres possibilités de personnalisation. Par exemple, dans la création de notre site, on a utilisé la balise HTML « ul » pour créer une zone de navigation qui sera en permanence présente sur le site. On a également, toujours en HTML, utilisé la bannière « textarea », pour permettre à l’utilisateur de rentrer le texte qu’il désire crypter ou décrypter. Le langage CSS permet de personnaliser encore plus un texte ou une page internet. Brièvement, on attribue plusieurs caractéristiques et on les laisse apparaître dans le code HTML de la page internet. 18 Code HTML de la page d’accueil : 19 Code CSS du site (partiel) : 20