Groupe : ………… Noms : Prénoms : Classe : Nom de votre équipe : 1 Voici les messages retrouvés par les enquêteurs : Un des messages retrouvés chez Emma (message 1): DRTYV IZVZC DVKRI UVHLF EJVMF ZVJRD VUZAR ZDVIR ZJKRE KHLFE GLZJJ VJVMF ZIKFL JCVJA FLIJA VKRZD VKVCC VDVEK Message retrouvé dans sa poche lors de la découverte de son corps (message 2) : DRTYV IZVKL DVDRE HLVJK IFGIV KIFLM VDFZR CVEUI FZKYR SZKLV CAVLU ZRGIV JCVJT FLIJ Autre message retrouvé chez Emma (message 3) : XCIEX CPVYC PWLJJ RDPDI YTVME RZGSO IKPFY INCYI NOMNP GPMDG PVBID PLRZW OCPXP GYIAI DWBID PLQJR QWNUF SXIXS NWLUZ PLRZV YWZVP TJMDX ZPFWV MOWOU FSXIE ODXAC PVFBO VLJVM WSIQL HCWXO DWUSI IDIDW AONWF FLYTZ HETHX VFEPE CFDZP FVMEW GWTZY INCPZ CODXN SLYTG ZTLGN IPBOV PBJYD WGQLR ZNLTV MEQJQ AFZRO FZTWI NHFBZ JZWNU FWGRP GPTAC MXPFV MEDVW BIZNP TVWDS YYXOG EDOAM WZZNP GVMDE PIEIK IYGZW BIZNP LVKPF ZIEEP IUSYI GFVMD ZVUFW OXPFH ETGEI EONWF FZUFS HIDQM ETBOI DGJRE TJROS ZWZBY IGFVM EDVVE WMXCS NPZWI XZWZX XCDPZ WIHPH JYDQZ WDCPG TGYID EPSYO PVLZZ FLQEI ESEYC SLYZB KECHD VLZJM YHMID ZJMYR DGTON EXSYM XOXLP FDI 2 1) Observez ces messages. a) Que remarquez-vous ? ………………………………………………………………………………………………………………………………………………….. ………………………………………………………………………………………………………………………………………………….. ………………………………………………………………………………………………………………………………………………….. b) Que peut-on supposer ? ………………………………………………………………………………………………………………………………………………….. ………………………………………………………………………………………………………………………………………………….. ………………………………………………………………………………………………………………………………………………….. 2) Effectuer une recherche sur internet sur les thèmes suivants : Code de César Analyse fréquentielle afin de répondre aux questions suivantes : a) En quoi consiste le code de César ? ………………………………………………………………………………………………………………………………………………….. ………………………………………………………………………………………………………………………………………………….. b) A quoi doit-il son nom ? ………………………………………………………………………………………………………………………………………………….. ………………………………………………………………………………………………………………………………………………….. c) Coder le mot « oui » à l’aide du code de César avec une clé de 10 ………………………………………………………………………………………………………………………………………………….. 3 d) Compléter cet algorithme (i.e. = cette suite finie d’instructions) vous permettant de construire un disque de chiffrement, c’est-à-dire un disque de ce type : Tracer un disque de rayon 5cm Marquer son centre Le découper e) Construire un disque de chiffrement (qui sera à joindre à ce dossier- mettez le nom de votre groupe au dos) f) Coder le mot « MATHEMATIQUES » à l’aide du chiffre de César avec une clé de 8 : …………………………………………………………………………………………………………………………………………..… g) Décoder le mot « XNWRK » avec une clé de 22 : ……………………………………………………………………………………………………………………………………………..….. 3) Quelle est la donnée manquante pour décoder les messages retrouvés par les enquêteurs, à supposer qu’ils utilisent un code de César ? ………………………………………………………………………………………………………………………………………………….. 4) Comment peut-on « casser » un code de César ? ………………………………………………………………………………………………………………………………………………….. ………………………………………………………………………………………………………………………………………………….. ………………………………………………………………………………………………………………………………………………….. 4 5) On considère le texte ci-dessous : « J’adore suivre l’enseignement d’exploration « méthodes et pratiques scientifiques », surtout en mathématiques ! Je me demande ce qui a bien pu arriver à cette pauvre Emma et si on va retrouver l’assassin. » Notre but est de construire un tableau donnant la fréquence d’apparition de chacune des lettres de l’alphabet dans ce texte, puis dans les messages 1 et 2 retrouvés par les enquêteurs de la police criminelle. a) Aller à l’adresse : http://[email protected], puis dans la rubrique MPS télécharger la feuille de calcul intitulée « fréquence d’apparition ». b) Compléter cette feuille puis imprimer. (On fera afficher les fréquences sous forme de pourcentage avec deux chiffres après la virgule). c) Quelles sont les lettres qui ont la plus grande fréquence d’apparition ? ………………………………………………………………………………………………………………………………………………….. d) D’après ce que vous venez de faire, quelle(s) clef(s) êtes-vous tenté de tenter ? ……………………………………………………………………………………………………………………… e) Trouvez quelle est la bonne clef puis décoder la séquence de lettres : « DRTYVIZV » commune aux messages 1 et 2 inscrits en page 2 : …………………………………………………………………………………………( avec la clef ……………………) Vous pensez avoir découvert la clé des messages, mais décoder toutes les lettres des trois messages risque d’être fastidieux. C’est pourquoi vous allez écrire un algorithme que vous allez programmer sur Algobox, pour qu’il décode le message à votre place. Pour cela vous aurez besoin d’être un peu formés : 5 1) Boucle : Il s’agit du procédé itératif le plus courant en algorithmique, on demande de faire une action pour i allant de telle valeur initiale à telle valeur finale. Exemple : Ecrire un algorithme faisant afficher à l’écran tous les entiers de 1 à 100 (un nombre sur chaque ligne) 2) Faîtes une recherche sur internet sur le code ASCII puis répondre aux questions suivantes : a) Que signifient les initiales ASCII ? ………………………………………………………………………………………………………………………………………………….. b) Dans le code ASCII, par quels nombres sont codées les lettres A à Z ? ………………………………………………………………………………………………………………………………………………….. c) Quelle opération faudrait-il appliquer au code ASCII des lettres A à Z pour qu’elles soient codées cette fois-ci par les nombres 0 à 25 ? ………………………………………………………………………………………………………………………………………………….. d) Sur Algobox : L’instruction a.charCodeAt(p) permet d’obtenir le nombre égal au code ascii de la lettre figurant à la position p dans la chaîne de caractère a Atttention : dans une chaîne de caractères, le premier caractère est à la position 0, le deuxième à la position 1, etc… Application : Si la variable a contient le mot « MATHEMATIQUES » et qu’on stocke dans la variable b : a.charCodeAt(1), que contient la variable b ?…………………………………………… L’instruction String.fromCharCode(nombre) renvoie une chaîne contenant le caractère dont le code ascii est égal à ce nombre Application : Si on stocke dans la variable b : String.fromCharCode(67), que contient la variable b ? ………………………………………………………………………………… 3) Congruences modulo n : En se servant du code ASCII des lettres du message, on se ramène à des nombres, on peut donc faire des calculs. Admettons qu’on soit parvenu à représenter chacune des lettres de A à Z par un chiffre de 0 à 25 de la sorte : (cf remarque du 2)c)) 6 Imaginons à présent qu’on ait un message crypté par un code de César avec une clé de 5. a) Quel calcul devez-vous faire pour retrouver la lettre dans le message en clair correspondant à un N dans le message codé ? ………………………………………………………………………………………………………………………………………………… b) Même question pour la lettre J : ………………………………………………………………………………………………………………………………………………… c) Que se passe-t-il si on applique le même raisonnement à la lettre C ? ………………………………………………………………………………………………………………………………………………… ………………………………………………………………………………………………………………………………………………… Pour pallier ce problème, les mathématiciens ont inventé un ensemble appelé anneau d’entiers, noté ℤ 26ℤ qui contient des nombres notés 0, 1, …, 25. A chaque entier relatif, on associe un et un seul de ces nombres en prenant son reste dans sa division euclidienne par 26. Exemple 1 : 59 = 26 × 2 + 𝟓, Le reste de 59 dans sa division euclidienne par 26 est donc 5. On dit que 59 est congru à 5 modulo 26. On note aussi : 59 ≡ 5 modulo26 Le nombre 59 est donc représenté par le nombre 5 dans l’anneau des entiers ℤ 26ℤ. Exemple 2 : Reprenons l’exemple de tout-à-l’heure : en voulant décoder le C avec une clé de 5, on était tombé sur le nombre -3. Or : −3 = 26 × −1 + 23. Donc −3 ≡ 23 modulo26 On trouve donc que la lettre C cryptait en fait la lettre ………………………………………… d) A vous de jouer : Retrouvez à quels entiers de ℤ 26ℤ correspondent les nombres suivants : (la 1ère ligne a été remplie d’après ce qui précède à titre d’exemple) Nombre donné : Nombre Calcul explicatif ℤ correspondant dans 26ℤ 59 = 26 × 2 + 𝟓 5 59 27 79 -8 -12 e) Vérifiez les nombres trouvés dans la 2ème colonne grâce à l’instruction nombre%26 d’Algobox qui donne le reste d’un nombre dans sa division euclidienne par 26. Attention : pour Algobox il faut que nombre soit positif, donc vous pouvez lui rajouter 26 (qui ne changera pas le reste) pour avoir un nombre positif 7 4) L’algorithme enfin !! Ci-dessous a été écrit un algorithme en français, permettant de décrypter un message donné si on a la clef. Certaines parties sont manquantes. a) Compléter les pointillés Algorithme en Français : Commentaires : Variables : i est de type ……………………………. i sera le Compteur de la boucle L est de type ……………………………. L contiendra la Longueur du message a est de type ……………………………. a contiendra le message à déchiffrer Clé est de type …………………………. Clé contiendra la clé à utiliser b est de type nombre b contiendra le code ascii de chaque lettre après décryptage c est de type ………………………………. c contiendra chaque lettre décryptée Début de l’algorithme : Afficher : « entrer le message à (avec un retour à la ligne) décoder en majuscules et sans espace » Lire ce message et le stocker dans …….. Afficher : « quel clef dois-je utiliser ? » (avec un retour à la ligne) Lire la clef et la stocker dans …………….. Stocker dans L la longueur du message a La fonction a.length donne la longueur du message contenu dans la variable a Pour i allant de 0 à L-1 : Prendre le code ascii de la lettre On utilise : en position i, ………………………………………………………………… lui enlever ………………… Pour se ramener à un nombre entre 0 et 25 soustraire ……………………. Pour déchiffrer Rajouter 26 Pour être sûr d’avoir un nombre positif prendre le résultat modulo 26 de (pour rester entre 0 et 25) : ce calcul On utilise : …………………………………………… rajouter ……………………… Pour retourner entre 65 et 90 stocker le résultat dans b Stocker dans c la lettre ayant On utilise : pour code ascii le nombre b ………………………………………………………………… Afficher c (sans retour à la ligne !) Fin de la boucle pour Fin de l’algorithme. b) Programmer l’algorithme sur algobox, et s’en servir pour décrypter les messages 8 c) Que donne chacun des messages ? Message 1 : Message 2 : Message 3 : Vous avez constaté que le message n°3 semble avoir été codé dans un autre langage. En examinant l’historique de l’ordinateur d’Emma, les enquêteurs ont remarqué qu’elle avait fait une recherche sur Vigénère. Nous supposons que le message 3 a été codé par un chiffre de Vigénère et allons tenter de le déchiffrer grâce au test de Kasiski. 1) Effectuer une recherche sur les termes en gras et soulignés ci-dessus. 2) Repérer dans le message 3 des séquences répétées puis compléter le tableau ci-après Longueurs de clef possibles (diviseurs de la distance différents de 1) Séquence répétée Distance entre les répétitions BID PZWI BIZNP ZJMY 9 3) Quelle est selon vous la longueur de la clef utilisée ? ………………………. 4) Soit k ce nombre. Alors les 1er, (k+1)ème, (2k+1)ème etc. caractères ont été codés par la même lettre : la première lettre de la clef de Vigénère. Retrouvez cette première lettre à l’aide d’une analyse fréquentielle. Procéder de même avec les autres lettres du code. Selon vous, quel est le code qui a été utilisé ? ……………………………. 5) Programmer Algobox en adaptant l’algorithme du 4) de la deuxième partie, puis noter dans le cadre ci-dessous le message 3 après décryptage : Correction pour les groupes qui ont du mal : THE END, alors qu’en pensez-vous ? qu’est-il-arrivé à Emma ? 10