Cryptographie. -...

17
... ...

Transcript of Cryptographie. -...

Page 1: Cryptographie. - unemainlavelautre.netunemainlavelautre.net/.../2ieme_mps_cryptographie_sujet.pdf · Cryptographie iii.Python n'a pas enregistré un nombre mais une liste de chi res

Cryptographie

Cryptographie.

I Introduction.

Quid de la cryptographie ?

Coder signi�e exprimer dans un autre langage.Coder un algorithme (donc coder un ensemble d'actions à e�ectuer pour arriver

à un résultat) signi�e souvent l'écrire dans un langage informatique compréhensiblepar une machine (Python ou langage de Texas Instruments).

Le code barre est la traduction sous forme de segments plus ou moins épaisd'informations (prix, origine du produit, etc.).

Le code QR est un code sous forme de matrice (ta-bleau) de pixels qui permet de se connecter à unsite internet, d'envoyer un mail, de regarder desvidéos en ligne, . . .Le code QR ci-contre renvoie à mon site.

Le morse, la langue des signes, le codage en binaires sont encore des codes.Les codes sont des conventions pour exprimer de l'information (algorithme, mes-

sages, adresse URL,. . . ) mais, s'ils sont parfois hermétiques, ils n'ont pas forcémentvocation a être secrets.

Crypter et chi�rer, qui sont synonymes, désignent le fait de coder en un langagesecret.

Déchi�rer signi�e décoder un message en connaissant tout ce qui nécessairepour y parvenir.

Décrypter signi�e décoder un message dont la méthode de déchi�rage nous estinconnue.

La cryptographie est la science qui étudie les di�érentes méthodes de cryptagedes messages. Elle s'intéresse aussi bien aux méthodes de cryptage, que de déchif-frage ou de décryptage.

L'outil de la mort qui tue : la division euclidienne.

La division euclidienne est l'outil fondamental de la plupart des techniquesmodernes de cryptage. Rappelons donc son fonctionnement.

Quatre enfants souhaitent partager vingt-trois bonbons. Combien de bonbonsauront chaque enfant ?

-1-

Page 2: Cryptographie. - unemainlavelautre.netunemainlavelautre.net/.../2ieme_mps_cryptographie_sujet.pdf · Cryptographie iii.Python n'a pas enregistré un nombre mais une liste de chi res

Cryptographie

Il s'agit d'un partage équitable nous lui associons donc la division, mais lepartage n'est pas exacte. Pour que le partage soit équitable tous les bonbons neseront pas distribués : il en restera.

On peut représenter ce partage de deux façons.

Opération posée (potence).

2 3−2 03

45

Division euclidienne.

23 = 4× 5 + 3

. 23 est appelé le dividende,

. 4 est appelé le diviseur,

. 5 est appelé le quotient,

. 3 est appelé le reste.

Autrement dit en partageant les 23 bonbons, chacun des 4 enfants aura 5 bon-bons et il restera 3 bonbons.

Pour e�ectuer rapidement des divisions euclidiennes nous utiliserons des moyensinformatiques.

Exercice 1

1. Suivez les explications pour réaliser un programme en Python.

(a) Nous allons tout d'abord créer un �chier dans lequel inscrire toutes les ins-tructions que nous demanderons à Python d'exécuter.� Cliquez sur le bouton Windows en bas en gauche de l'écran.� Recherchez IDLE.� Lancez le logiciel IDLE.� Dans l'onglet File choisissez New File.� Dans l'onglet File du nouveau �chier qui s'est ouvert faites Save as et enre-

gistrer le dans le dossier perso (colonne de droite) sous le nom division_euclidienne.py.

(b) Entrez successivement les commandes dans le �chier précédemment préparé.Le copié-collé ne fonctionne pas.

i. Pour a�cher le message "Dividende ?" :

print ( "Dividende ?" )

ii. Pour enregistrer les chi�res donnés par l'utilisateur en lui donnant le nomde dividende :

d iv idende=input ( )

Le symbole = n'a pas le même sens qu'en mathématique : a = 3 enPython signi�e qu'il faut enregistrer le nombre 3 sous le nom � a �.

-2-

Page 3: Cryptographie. - unemainlavelautre.netunemainlavelautre.net/.../2ieme_mps_cryptographie_sujet.pdf · Cryptographie iii.Python n'a pas enregistré un nombre mais une liste de chi res

Cryptographie

iii. Python n'a pas enregistré un nombre mais une liste de chi�res (� chaîne �)dans dividende. Pour que Python transforme cette chaîne en un nombre(int() comme le mot anglais integer) :

d iv idende=int ( d iv idende )

iv. De même pour enregistrer la valeur du diviseur dans diviseur :

print ( "Div i s eur ?" )d i v i s e u r=input ( )d i v i s e u r=int ( d i v i s e u r )

v. Pour a�cher utilisons l'instruction print, et demandons d'a�cher un mot(entre guillemets) puis le quotient de la division euclidienne (//) :

print ( "Quotient : " , d iv idende // d i v i s e u r )

vi. De même, % permettant de calculer le reste de la division euclidienne :

print ( "Reste : " , d iv idende%d i v i s e u r )

(c) Sauvegardez les commandes inscrites dans le �chier division_euclidienne.py.Puis lancez le script : dans l'onglet Run choisissez Run Module F5

2. Donnez les quotients et restes de la division euclidienne de

(a) 123 par 17,

(b) 383 441 par 97,

(c) 6 788 543 254 398 par 125.

3. 383 441 est-il un nombre premier ?

II Sommes de contrôle.

Quid des sommes de contrôle.

Un message codé peut avoir été modi�é, volontairement ou non, avant d'at-teindre son destinataire. Pour véri�er qu'un message codé n'a pas été altéré il estpossible d'utiliser des sommes de contrôle (ou checksum, ou empreinte).

À partir d'un message, par un procédé de calcul dé�ni au préalable, un al-gorithme donc, on détermine une clef de contrôle associée au message avant del'envoyer. Lorsque le message est reçu on recommence le calcul pour véri�er quel'on retrouve bien la clef de contrôle.

La somme de contrôle ne permet pas de corriger des erreurs mais seulement deles détecter.

Lorsqu'un satellite transmet des informations celles-ci sont parfois altérées (mo-di�ées) avant d'arriver sur Terre. Le checksum permet de s'en rendre compte et dedemander que les informations soient à nouveau envoyées.

Dans ce qui suit nous allons voir quelques exemples de checksum.

-3-

Page 4: Cryptographie. - unemainlavelautre.netunemainlavelautre.net/.../2ieme_mps_cryptographie_sujet.pdf · Cryptographie iii.Python n'a pas enregistré un nombre mais une liste de chi res

Cryptographie

Billets de banques.

Le numéro d'un billet de banque (ici : UA3084443121) est constitué de 12caractères : une ou deux lettres et des chi�res.

La première lettre indique par quel pays le billet est imprimé.L FinlandeM PortugalN AutricheP Pays-BasR LuxembourgS Italie

T IrlandeU FranceV EspagneX AllemagneY GrèceZ Belgique

L'algorithme qui suit permet de véri�er que le numéro de billet UA3084443121est valide grâce à sa clef de contrôle.

Étape 1 Remplacez les lettres par leur rang dans l'alphabet : U = 21 et A = 1donc le numéro du billet est n = 2113084443121.

Étape 2 Calculez la somme des chi�res du nombre n : S = 2+ 1+ 1+ 3+ 0+ 8+4 + 4 + 4 + 3 + 1 + 2 + 1 = 34.

Étape 3 Calculez le reste de la division du nombre S par 9.Posons la division : 3 4−

2 77

93

Ainsi le reste de la division euclidienne de S par 9 est 7.

Étape 4 Contrôle avec la clef.Il faut distinguer deux sortes de billets� ceux de la première série qui ne comportent qu'une lettre et pour

lesquels le reste doit toujours être 8 (ainsi la clef de contrôle est 8),� ceux de la deuxième série qui comportent deux lettres et pour lesquels

le reste doit toujours être 7 (ainsi la clef de contrôle dans ce cas est

7).Le numéro comporte deux lettres il s'agit donc d'un billet de la deuxièmesérie et son reste est bien 7. Le numéro de ce billet est donc valide.

-4-

Page 5: Cryptographie. - unemainlavelautre.netunemainlavelautre.net/.../2ieme_mps_cryptographie_sujet.pdf · Cryptographie iii.Python n'a pas enregistré un nombre mais une liste de chi res

Cryptographie

Exercice 2

Identi�ez avec la clef de contrôle les faux billets parmi ceux dont le numéro est :V 02387040034, UF3141376477, S26374949332, ZB1348185002, UD0156139902,X10688498157,UF3141805804.

Vous détaillerez votre démarche uniquement pour le premier numéro.

Numéro INSEE.

Le numéro INSEE qui apparaît entre autre sur la carte vitale est attribué de lafaçon suivante :

� le premier chi�re est 1 s'il s'agit d'un homme et 2 s'il s'agit d'une femme ;� les deux chi�res suivants désignent les deux derniers chi�res de l'année de

naissance ;� les deux chi�res suivants désignent le mois de naissance ;� les deux chi�res suivants désignent le département de naissance ;� les trois chi�res suivants désignent la commune de naissance ;� les trois chi�res suivants désignent le numéro d'inscription sur le registre

d'état-civil.À ce numéro INSEE est associé une somme de contrôle appelée sa clef de

contrôle. La clef est un nombre de deux chi�res qui est la di�érence entre 97 et lereste de la division euclidienne du numéro INSEE par 97.

Exercice 3

Pour contrôler si des numéros INSEE sont exactes ou non, créons un programme enPython.

1. Recopiez et complétez l'algorithme suivant écrit en Python.

print ( "Numero i n s e e ?" )i n s e e=input ( )i n s e e=int ( i n s e e )print ( " C le f de con t r o l e ?" )c l e f=input ( )c l e f=int ( c l e f )i f . . . . . . == c l e f :

print ( " l e numero e s t . . . . . " )else :

print ( " l e numero e s t . . . . . " )

La double égalité == indique au programme qu'il faut véri�er si l'égalité est vraieou pas.

2. Créez le script insee.py en y transcrivant le programme.

3. Testez votre script avec le numéro 1 62 12 45 044 056 et la clef 42 qui est valide.

-5-

Page 6: Cryptographie. - unemainlavelautre.netunemainlavelautre.net/.../2ieme_mps_cryptographie_sujet.pdf · Cryptographie iii.Python n'a pas enregistré un nombre mais une liste de chi res

Cryptographie

4. Grâce au script insee.py identi�ez les numéros INSEE valides parmi� 2 73 12 41 019 121 clef 52,� 2 84 02 77 380 071 clef 77,� 2 90 10 59 123 254 clef 07.

Cryptage de la photocopieuse.

Exercice 4 pour s'entraîner.

Dans un lycée, un code d'accès à la photocopieuse est attribué à chaque professeur.Ce code est un nombre à quatre chi�res choisi dans la liste (0,1,2,3,4,5,6,7,8,9), chaque chi�re

pouvant être répété à l'intérieur d'un même code. Par exemple, 0027 et 5855 sont des codespossibles.

1. Combien de codes peut-on ainsi former ?

2. Ce code permet aussi de dé�nir un code pour l'accès au réseau informatique.L'identi�ant est constitué du code à quatre chi�res suivi d'une clef calculée à l'aide del'algorithme suivant

1 A�cher � Entrez le code à quatre chi�res �2 Entrer N3 P prend la valeur N4 S prend la valeur 05 K prend la valeur 16 tant que k ≤ 4 faire7 U prend la valeur chi�re des unités de P8 K prend la valeur K + 19 S prend la valeur S +K × U10 P prend la valeur (P − U)/10

11 �n

12 § prend la valeur reste de la division euclidienne deS par 7

13 C prend la valeur 7−R14 A�cher C

Faites fonctionner l'algorithme avec N = 2283 et véri�ez que la clef qui lui correspond est3.Pour cela, faites apparaître les di�érentes étapes du déroulement de l'algorithme en utilisantle tableau ci-dessous appelé tableau d'état des variables.

P S K UInitialisation 2 282 0 1Boucle 1 . . . . . . . . . . . .Boucle 2 . . . . . . . . . . . .

-6-

Page 7: Cryptographie. - unemainlavelautre.netunemainlavelautre.net/.../2ieme_mps_cryptographie_sujet.pdf · Cryptographie iii.Python n'a pas enregistré un nombre mais une liste de chi res

Cryptographie

Code barre.

Code ISBN.

III Le chi�re de César.

Chi�rement par substitution.

Le chi�rement par substitution consiste à remplacer chaque lettre de l'alphabetpar un unique symbole.

Exercice 5

Décryptez le texte d'Anatole du document 1 sachant que celui-ci a été codé par chif-frement par substitution.

Codage par substitution mono-alphabétique.

Le codage par substitution mono-alphabétique consiste à remplacer chaque lettrede l'alphabet par une unique autre lettre.

Autrement dit le codage est dé�ni par une permutation des lettres de l'alphabet.

Par exemple, comme le faisait César, on peut décaler toutes les lettres de l'al-phabet de trois rangs : par exemple pour la lettre a

Décalages :a y

1b y

2c y

3d

Appliquant cela à tout l'alphabet nous obtenons :

Lettres en clair a b c d e f . . . w x y zLettres codées d e f g h i . . . z a b c

-7-

Page 8: Cryptographie. - unemainlavelautre.netunemainlavelautre.net/.../2ieme_mps_cryptographie_sujet.pdf · Cryptographie iii.Python n'a pas enregistré un nombre mais une liste de chi res

Cryptographie

Avec ce codage le mot � math � sera chi�ré en � pdwk �.

Il est possible de choisir un autre entier (même relatif) pour indiquer le décalage.Le nombre de décalages utilisé pour coder le message est appelé la clef du chi�re

de César.

Exercice 6

1. Construisez un tableau de deux lignes : dans la première est écrit l'alphabet en clairet dans la seconde l'alphabet codé avec le chi�re de César dont la clef est 9.

2. À l'aide du précédent tableau chi�rez les quatre premiers mots du message suivant :

� Tout le malheur des hommes vient d'une seule chose, qui est de ne savoir pasdemeurer en repos dans une chambre. � (Pascal Blaise).

Simpli�er le codage-décodage du chi�re de César.

Plutôt que de faire un tableau avec deux lignes pour chaque nouvelle clef duchi�re de César, il est possible d'utiliser deux disques concentriques sur lesquelssont inscrits deux alphabets. Le décalage est alors simple à retrouver.

Exercice 7

1. Pour accélérer le chi�rement et le déchi�rement des messages codés à l'aide d'unchi�re de César, on utilise un disque à chi�rer (inventé au XV siècle par l'architecteLéon Alberti).Avec les photocopies fournies par votre enseignant reproduisez la �gure ci-dessous.

Sinon faites le vous-même. Sur une feuille de papier, e�ectuez la construction décriteci-dessous :� construire un cercle de rayon 4 cm et un cercle de rayon 5 cm ;� partager chaque disque en 26 angles égaux ;� dans chaque angle inscrire chacune des 26 lettres de l'alphabet dans l'ordre

alphabétique et en tournant dans le même sens pour chacun des deux disques ;

-8-

Page 9: Cryptographie. - unemainlavelautre.netunemainlavelautre.net/.../2ieme_mps_cryptographie_sujet.pdf · Cryptographie iii.Python n'a pas enregistré un nombre mais une liste de chi res

Cryptographie

� relier les deux disques par leur centre.

2. Avec les disques ci-dessus (ou en utilisant des tableaux présentant deux alphabetsdécalés) déchi�rez les messages suivants qui ont été chi�rés avec un chi�re de Césardont la clef est

(a) 7, � Slz thaypjlz zvua klz ahislhbe. �

(b) 13, � Yn fpvrapr rg y'ulcbgurfr. (Cbvapner Uraev) �.

(c) 23, � Mlro i'elkkbro ab i'bpmofq erjxfk. (Afbralkkb Gbxk) �.

Déchi�rer le code de César avec un programme.

Exercice 8

Nous allons réaliser un programme en python qui nous permet de déchi�rer un messagecodé avec un chi�re de César dont on connaît la clef.

Nous aurons besoin de nouvelles instruction de Python.Notons déjà que l'opérateur + peut être utilisé pour la concaténation (assemblage)

de mots :

print ( " conca"+" tenat i on " )

renvoie le mot � concaténation �

1. Chaque lettre ou caractère est associé à un nombre par Python. Pour connaître lenuméro d'une lettre il faut utiliser l'instruction ord().

(a) Dans le shell Python entrez la commande suivante pour savoir quel numéroest associé au � a � majuscule :

ord ( "A" )

(b) Trouvez le numéro associé au � z � majuscule.

(c) Quels sont les nombres associés à toutes les lettres de l'alphabet en majuscule ?

2. Pour retrouver le caractère (la lettre) associée à un nombre il faut utiliser l'instruc-tion chr.

(a) Dans le shell Python entrez la commande suivante pour savoir quel lettre estassociée au � 90 � :

chr (90)

(b) Que renvoie la commande suivante ?

chr (ord ( "Z")−25)

-9-

Page 10: Cryptographie. - unemainlavelautre.netunemainlavelautre.net/.../2ieme_mps_cryptographie_sujet.pdf · Cryptographie iii.Python n'a pas enregistré un nombre mais une liste de chi res

Cryptographie

3. Nous allons utiliser les instructions ord() et chr() pour passer des lettres auxnombres et inversement.Un code César de clef 3 revient à rajouter 3 au nombre associé à chaque lettre.Pour décoder nous allons donc retirer 3.

Voici le programme (presque complet) que nous allons utiliser pour déchi�rer lecode César.Nous allons d'abord essayer de le comprendre en décortiquant les phases d'entrée,de traitement et de sortie.

txtcryp="phvvdjh fubswh"txtcryp=txtcryp . upper ( )c l e f=input ( " Ind iquez l a c l e f : " )c l e f=int ( c l e f )t x t c l a i r=""for l e t c r yp in txtcryp :

i f 64<ord ( l e t c r yp )<91:i f ord ( l e t c r yp )− c l e f <65:

l e t c l a i r=chr (ord ( l e t c r yp )+26 − . . . . )else :

l e t c l a i r=chr (ord ( l e t c r yp ) − . . . . )else :

l e t c l a i r=l e t c r ypt x t c l a i r=t x t c l a i r+l e t c l a i r

print ( txtcryp )print ( t x t c l a i r )

(a) La phase d'entrée du programme est la suivante

txtcryp="phvvdjh fubswh"txtcryp=txtcryp . upper ( )c l e f=input ( " Ind iquez l a c l e f : " )c l e f=int ( c l e f )t x t c l a i r=""

i. Identi�ez les trois variables créées et indiquez leur rôle dans le pro-gramme.

ii. Rappelez ce qu'est l'instruction input().

(b) La phase de sortie du programme est la suivante

print ( txtcryp )print ( t x t c l a i r )

i. Rappelez ce qu'est l'instruction print().

-10-

Page 11: Cryptographie. - unemainlavelautre.netunemainlavelautre.net/.../2ieme_mps_cryptographie_sujet.pdf · Cryptographie iii.Python n'a pas enregistré un nombre mais une liste de chi res

Cryptographie

ii. Que renvoie le programme ?

(c) La phase de traitement est constituée d'un gros bloc d'instruction dont l'entêteest

for l e t c r yp in txtcryp :

i. Traduisez for et in. Quel objet désigne la variable letcrypt (nombre, texte,mot, . . . ) ?

ii. Expliquez le rôle de l'instruction

for l e t c r yp in txtcryp :

(d) Que renvoie l'instruction

ord ( l e t c r yp )− c l e f

(e) Que renvoie l'instruction

chr (ord ( l e t c r yp )− c l e f )

(f) Expliquez la condition

64<ord ( l e t c r yp )<91

(g) Téléchargez le script puis complétez-le (que faut-il mettre à la place des troispetits points ?).Lancez le script avec une clef de césar de 3.

(h) En modi�ant le précédent programme déchi�rez le texte suivant

Zcfgeis zsg dsfsg g'vopwhisbh o zowggsf towfs zsg sbtobhg, zcfgeis zsg twzgbs hwsbbsbh dzig qcadhs rs zsifg dofczsg, zcfgeis zsg aowhfsg hfsapzsbhrsjobh zsifg szsjsg sh dfstsfs zsg tzohhsf, zcfgeis twbozsasbh zsg xsibsgasdfwgsbh zsg zcwg dofqsei'wzg bs fsqcbbowggsbh dzig oi-rsggig r'sil

z'oihcfwhs rs fwsb bw rs dsfgcbbs, ozcfg, q'sgh zo, sb hcihs psoihs sh sb hcihsxsibsggs zs rspih rs zo hmfobbws.

sachant qu'il s'agit d'un chi�re de César dont la clef est 14.

Des nombres qui ne tournent pas rond.

Exercice 9 pour s'entraîner.

Sur une montre la petite aiguille n'indique que des heures qui vont de 0 à 12, le 0 et le 12étant d'ailleurs confondus.

1. Si ma montre indique 3 heures, quelle heure indiquera-t-elle dans 12 heures ?2. Si ma montre indique 7 heures, quelle heure indiquera-t-elle dans 15 heures ?3. (a) Écrivez la division euclidienne de 2316 par 12.

(b) Si ma montre indique 9 heures, quelle heure indiquera-t-elle dans 2316 heures ?4. Nous déduisons de ce qui précède que calculer avec les heures revient à considérer que les

nombres sont égaux à leurs restes dans la division euclidienne par 12.

-11-

Page 12: Cryptographie. - unemainlavelautre.netunemainlavelautre.net/.../2ieme_mps_cryptographie_sujet.pdf · Cryptographie iii.Python n'a pas enregistré un nombre mais une liste de chi res

Cryptographie

Déchi�rer avec un tableur.

Exercice 10 pour s'entraîner.

Les lettres majuscules pour les systèmes informatiques sont associées à des nombres commevous l'avez déjà vu dans l'exercice 8. Ce codage informatique appelé le code ASCII est un standarddont la correspondance est la suivante :

Lettre A B . . . ZCode ASCII 65 66 . . . 90

Décrypter le codage par substitution monoalphabétique.

La seule di�culté pour décrypter le code César est de trouver la clef, c'est-à-direle décalage dans l'alphabet.

La méthode la plus simple repose sur une analyse statistique.

Le tableau ci-dessous indique la fréquence des caractères les plus présents dansle corpus Wikipédia en français.

e 12,10

a 7,11

i 6,59

s 6,51

n 6,39

r 6,07

t 5,92

o 5,02

l 4,96

u 4,49

d 3,67

c 3,18

m 2,62

p 2,49

é 1,94

g 1,23

b 1,14

v 1,11

h 1,11

f 1,11

Exercice 11

On considère le texte suivant (téléchargeable en cliquant dessus) qui est codé avec uncode César dont la clef est inconnue.

� Cv sfe jvej vjk cr tyfjv ul dfeuv cr dzvlo grikrxvv: tri tyrtle gvejv ve vkiv jz szveg�iml, hlv tvlo dvdv hlz jfek cvj gclj uzwwztzcvj r tfekvekvi ve k�kv rlkiv tyfjv, e'fekgfzek t�kldv u've uvjzivi gclj hl'zcj ve fek. Ve hlfz zc e'vjk grj mirzjvdscrscv hlv k�j jvkifdgvek; drzj gclkfk tvcr kvdfzxev hlv cr glzjjretv uv szve alxvi, vk uzjkzexlvi cv mirzu'rmvt cv wrlo, hlz vjk gifgivdvek tv hl'fe efddv cv sfe jvej � cr irzjfe, vjk erklivccvdvekvxrcv ve k�j cvj yfddvj; vk rzejz hlv cr uzmvijzkv uv efj fgzezfej ev mzvek grj uv tv hlvcvj lej jfek gclj irzjfeerscvj hlv cvj rlkivj, drzj jvlcvdvek uv tv hlv e�j tfeulzjfej efj gvejvvjgri uzmvijvj mfzvj, vk ev tfejzuvifej grj cvj dvdvj tyfjvj. � (Descartes in Discours de laMéthode.)

1. En vous inspirant de ce qui a été fait dans l'exercice 5 et du tableau de fréquenceci-dessus, expliquez comment par une analyse statistique on peut déterminer la clefdu code César qui a été appliquée.

-12-

Page 13: Cryptographie. - unemainlavelautre.netunemainlavelautre.net/.../2ieme_mps_cryptographie_sujet.pdf · Cryptographie iii.Python n'a pas enregistré un nombre mais une liste de chi res

Cryptographie

2. Déterminez la clef du code César qui a été utilisée ici. Vous pourrez avantageusementutiliser un traitement de texte pour compter le nombre d'occurrences de chaquecaractère.

3. Déchi�rez alors le message. Vous pourrez utiliser le programme python de l'exercice8.

Exercice 12 pour s'entraîner.

Nous souhaitons ici réaliser un programme qui détermine la clef du code César d'un textecrypté.

1. La boucle while, en français tant que, permet de recommencer les instructions tant qu'unecondition est véri�ée.Faites tourner les programmes suivants et indiquez ce qu'ils renvoient.

n=0while n<10:

n=n+1print (n)

n=0while n<10:

n=n+1print (n)

2. Le programme ci-dessous permet de compter le nombre de fois que chaque lettre d'un textechi�ré avec un code César apparaît. txtcrypt désigne le texte crypté, letcryp une lettrecryptée de ce texte et rangletr désigne le rang d'une lettre dans l'alphabet en comptantcomme ceci

Lettre A B C . . .Rang 0 1 2 . . .

print ( "Entrez l e t ex t e crypte sans accent s : " )txtcryp=input ( )txtcryp=txtcryp . upper ( )r an g l e t r=0print ( txtcryp )while 65+rang l e t r <91:

n=0for l e t c r yp in txtcryp :

i f l e t c r yp==chr(65+ rang l e t r ) :n=n+1

print (chr(65+ rang l e t r ) , " appara i t " ,n , " f o i s " )r an g l e t r=r ang l e t r+1

3. Complétez le programme a�n qu'il a�che la clef du code César utilisée.

Exercice 13

1. MPS du jeudi. Mails codés trouvés sur l'ordinateur du laborantin :� Message 1 (envoyé).� Message 2 (reçu).

-13-

Page 14: Cryptographie. - unemainlavelautre.netunemainlavelautre.net/.../2ieme_mps_cryptographie_sujet.pdf · Cryptographie iii.Python n'a pas enregistré un nombre mais une liste de chi res

Cryptographie

� Message 3 (envoyé).Pour le message 3 voyez le code Vigenère ci-dessous et notamment l'exercice 18pour avoir un indice supplémentaire.

2. MPS du vendredi. Message trouvé dans l'appartement de monsieur Pounia.Zs asggous giwjobh o shs qfmdhs ojsq zs qcrs jwusbsfs rcbh xs jcig ow rcbbs zoqzst. smwr eeskiwkw vis, zj vikftke v'ksw ifvtjmsjngn ikn homhwsil lwsieusl vgkxanluwwskuw. Vinkqyuwh hwtlu n�ghrstaes ee xqnkafj ujeftww dwi wasikjk id ijjaajsstmhjd qmu aguk qusikyjr mwi nfqmyjluvux haj ksw jmiyw cgcuwnkqyaof. Kswcgcuwnkqyaof vnfafsnwrw i'jftwdi. Fomi iwvjytfs fezk rwdhgnlhjj axys ve juldejsjltw gzwslytf. Jw cj liwdx s vgjww daiugsajngn. Nezk cgdssikijr mgd fvrwixw elltms hezjrwp ignu cj jeftww vainle vqsk mgd fhpshywmwdy ve kqnft hyjjrw. Zjhe�j iuw ltms xuwwz vyqagwdhw el gzw ngkx fomi wwtjeznejesk bauslol. Zj jekjjs vgjww daiugsajngn ky aguk qaaer rjkoad iw dwjfalk ez v'edurwnli uguj fwgunuwiuw zj velyjfs tyjf cw gzw jw ltms hhthoku.

IV Le code Vigenère.

Principe.

A�n de contrer le décodage par analyse statistique des codes par substitu-tion monoalphabétiques, comme le code de César, il est possible de compliquerla situation en utilisant un code par substitution polyalphabétique. Une lettre estremplacée par plusieurs autres lettres.

Exercice 14

Déchi�rez le message suivant en sachant qu'une lettre sur deux est codée avec un codeCésar de clef 5 et que les autres lettres sont codées avec un code césar de clef 13 :

Qrx tjax qz ztair, unwpj dz'vqf hbsafvxfjay yjf lrsf ir ynqrsg tentnafy, vh'nyx yjfwrhbnijay n ivsrw, aj yjf hbrcwrsajay c� rvjhc cthw pjyf. Zfvx dznsq ta f hs cjh arhhinsf qr rbsqj, yf ftgyvxr ir xrx ufongfayf abzf knng yetc xbzufvyrw qj iniwr, yetc xhuctfjei'vsgjyqvlrspj, qfax yjf rvqvjhc bgfhhwf th q'bs aj ptasnng vhj � �ax ptasnngwr �.

Simpli�er le codage et le décodage.

Dans l'exercice précédent deux codes César s'entre-mêlent ce qui complique ledécodage par une méthode statistique.

Le chi�re de Vigenère consiste précisément à entre-mêler plusieurs chi�res deCésar. La clef associée au codage de Vigenère du précédent exercice est FN :

� le F est la lettre obtenue à partir de A en procédant à un décalage de 5,� N est la lettre obtenue à partir de A en procédant à un décalage de 13.Ainsi la clef n'est pas indiquée par des nombres indiquant le décalage mais par

des lettres qui indiquent ce que devient A lorsqu'il est crypté.

Exercice 15

-14-

Page 15: Cryptographie. - unemainlavelautre.netunemainlavelautre.net/.../2ieme_mps_cryptographie_sujet.pdf · Cryptographie iii.Python n'a pas enregistré un nombre mais une liste de chi res

Cryptographie

Dans cet exercice nous utiliserons un chi�re de Vigenère dont la clef est HENRI.

1. Chi�rez la phrase suivante en vous aidant de l'animation �ash qui détaille la dé-marche pour utiliser un carré de Vigenère :� Douter de tout ou tout croire sont deux solutions également commodes, qui l'uneet l'autre nous dispensent de ré�échir. � (Henri Poincaré).

2. Avec l'aide de la précédente application déchi�rez la phrase :� Vr srqa pn jkpiatm hzrt llw srqaw, pfuti be nhmg lvl qnzavr nmmj hrj xpieimz :qnza brr rkjyzlthxvfv ki srqaw a'vaa tnj xsyf lvl wpzmugr hc'br gra ki czmyvrjv'lwg lvl qnzavr. � (Henri Poincaré).

Le carré de Vigenère est donc le tableau suivant :

Exercice 16

-15-

Page 16: Cryptographie. - unemainlavelautre.netunemainlavelautre.net/.../2ieme_mps_cryptographie_sujet.pdf · Cryptographie iii.Python n'a pas enregistré un nombre mais une liste de chi res

Cryptographie

Le texte suivant a été chi�ré avec un code Vigenère dont la clef est RIV A. À l'aidedu carré de Vigenère déchi�rez le :

� Cmn mvbcoumn sfvo lva casqouumn dv t'zsgzdt vb gej mxoewhiva ye ci hedwdrv. �(Antoine de Rivarol)

Remarque : pour savoir à quelle lettre du mot clef correspond chaque lettre du messageil est possible de présenter sous forme d'un tableau

Clef R I V A R I . . .

Crypté C m n m v b . . .

Clair L . . .

Déchi�rer le code Vigenère.

Une méthode pour déchi�rer le code Vigenère consiste à retrouver la clef ou dumoins sa longueur en usant du test de Kasiski.

Exercice 17

Retrouvez la clef du code Vigenère qui a été utilisée pour chi�rer le texte suivant :

M'fh nilx grcpi ti svjpstlf r f'�isjhoc zvvul xcw xvbexq lfqnvm, oy'vpmv u asivpdjsp'vpphocrti, pl xs qfmoj ukscpj cy qxppf uy je gpvgupx uit glchzgbkysvj. Ev cccy uit'lhgv jivcykiex bmya pvw qvonpvw qfop fvrji fc Gzim uy qm iesvm nvvwfenq ulm femmrk zfeoq, mcw pen crkvf vh qstmfky yzvg mvm yykivim cx cit gicxvw ; fk xczvrvjwmqdi �r neeihplgwkit, zfq sex few�im tll jij iqznpij hfucaeksjiyq, wlv mvm qxrrdvm cxjys cyq tismfasij. Mmj ilx tlbeac pr tbiiji jejenc ie yo kcqwl hf ciseekfj, dswkit r fy zvvjky,kezw nrf nprgfvm, grkisvmqivw, rly niiwpehc r'vbjxy b'ilb, fk ksm ei dfhtmvrovhr tfmoku jilv drlygkisv. Il ijx ivopilb tz u j'stgbjcmr uy ivlmw hy'jcm aiciciylx aythoc hrrt cyqeegulugvv, mmj xgwvru lh ksk hf Uccy vx el gwwkisv ks'mcw evpymvru glcgyis. Zf q'ieitk npslzf hocphyfj-olw hyj rsyrk etjohikxj cy qezru Vpyrxmmv, ksm usjk yrvv gpdgsr rxplm, y pr tsvmcrti e'lh qilp blxgxvys, jy qsex wlm bitsotypxvw qrl bij lbjuphj uvz fcvvxfeugiex bzfjilvt, e'ilx gy qiilseg� xczrru uyq gyvfkccrj yo ucqgfysj wfvvxjvh oyz r'fkugxget wugx gsvi ysb, vx pen cxv wvgjjivw qrl b'elxsvm mvrx�lq, ulm o'fhr il pf kyktj uvvxc pfy� Xgil hbem sr jisdil tiidzjgxv.

Vous pourrez, pour compter les lettres, utiliser avantageusement Libre O�ce Writerou un compteur de lettres en ligne. En cliquant sur le texte vous pourrez récupérer letexte crypté sans espace et ponctuation.

Exercice 18

1. MPS du jeudi. Déchi�rez le mail codé :� Facture du restaurant.� Message 3 (envoyé).� MPS du vendredi. Il vous reste a déchi�rer le message suivant :

Message 3 (envoyé)

-16-

Page 17: Cryptographie. - unemainlavelautre.netunemainlavelautre.net/.../2ieme_mps_cryptographie_sujet.pdf · Cryptographie iii.Python n'a pas enregistré un nombre mais une liste de chi res

Cryptographie

V Bibliographie.

� Bibliothèque tangente hors série 26 cryptographie et codes secrets.� Cryptographie et codes secrets sur le site Bibmath : (lien).

-17-