Classe : Terminale S (ISN) Décembre 2015 Nom :
Cryptographie visuelle
Le problème :
Votre frère (un féru d’informatique) est en voyage au bout du monde. Il souhaite vous faire parvenir
une photo de sa dernière rencontre. Il décide de vous la transmettre par mail, mais, afin que vos
parents ne puissent pas en prendre connaissance, il vous transmet la version cryptée que voici :
Le but de ce travail, est de voir comment on peut arriver à décrypter cette image...
Page 1/4
Décembre 2015 Cryptographie visuelle
1 Les fonctions booléennes
On a vu que l’ « information » est codée par une longue suite de nombres qui sont chacun constitués
de bits. Chaque bit peut prendre l’état 0 ou 1. On distingue les opérations suivantes sur ces bits :
1. L’opération « NON » (NOT en anglais) permute tous les bits :
Opération « NON »
xNON(x)
0 1
1 0
Opérateur python :
2. L’opération « ET » (AND en anglais) renvoie vrai si et seulement si les 2 bits sont vrais :
Opération « ET »
x y x ET y
0 0 0
0 1 0
1 0 0
1 1 1
Opérateur python : &
3. L’opération « OU » (OR en anglais) renvoie faux si et seulement si les 2 bits sont faux :
Opération « OU »
x y x OU y
0 0 0
0 1 1
1 0 1
1 1 1
Opérateur python : |
4. L’opération « OU EXCLUSIF » (XOR en anglais) renvoie vrai si et seulement si un et un seul
bit est vrai :
Opération « OU EXCLUSIF »
x y x XOR y
0 0 0
0 1 1
1 0 1
1 1 0
Opérateur python :
Exercice I
Vérifier que l’opérateur « XOR » est le même que l’addition « modulo 2 » :
x y x +ymodulo 2
0 0
0 1
1 0
1 1
Page 2/4
Classe : Terminale S (ISN) Décembre 2015 Nom :
Exercice II
Les opérations précédentes peuvent aussi s’appliquer (via une conversion) sur des nombres entiers.
Supposons (pour simplifier !) que l’on code des entiers (non signés) sur 4 bits.
NON(5) = ...............................................................................
5 ET 3 = ................................................................................
5 OU 3 = ................................................................................
5 XOR 3 = ..............................................................................
Exercice III
Q 1 Que vaut : (5 XOR 3) XOR 3 = . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Q 2 Que vaut : (xXOR y) XOR y= ..........................................................
Q 3 Compléter la phrase : en appliquant l’opérateur XOR deux fois successivement on . . . . . . . . . . .
..........................................................................................
C’est cette dernière remarque qui est à la base de la méthode de cryptage employée ici...
2 Cryptage/Décryptage
Voyons ce qui se passe sur un exemple simple, que l’on peut traiter à la main.
Considérons les trois images de taille 5x5 suivantes :
Image originale Masque jetable Image cryptée
La première est l’image originale que l’on souhaite crypter, la seconde est un masque jetable (appelé
aussi clé) qui est obtenu par la génération aléatoire de 25 chiffres 0 ou 1. On applique alors l’opération
« XOR » entre ces deux images pour obtenir la troisième, qui représente l’image cryptée.
Q 1 Que faut-il faire pour décrypter limage ? ..................................................
Q 2 Vérifier votre réponse :
Image décryptée
Page 3/4
Décembre 2015 Cryptographie visuelle
3 Solution du problème
Si vous avez bien compris, pour décrypter la photo envoyée par votre frère, vous avez besoin . . . . . .
...............................................................................................
Bien sûr il a pris soin de vous le faire parvenir dans un deuxième mail indépendant.
Vu la taille des images, il n’est plus question de faire le décryptage à la main, mais un ordinateur va
nous être d’un grand secours.
Quelques informations nécessaires à la programmation :
On a besoin d’une bibliothèque, nommé PIL (= Pyhton Image Library), pour manipuler les
images. Attention elle n’est disponible que dans les versions 2.x de python... son portage vers
les versions 3.x s’appelle Pillow. Les commandes sont les mêmes !
La commande img = Image.open("nomfich") : charge l’image contenue dans le fichier nomfich
et la stocke dans la variable img.
Si img est une variable contenant une image (chargée par la technique précédente), alors la
commande a = img.getpixel((x,y)) récupère la valeur du pixel de coordonnées (x,y) et la
stocke dans la variable a.
Si img est une variable contenant une image la commande img.putpixel((x,y),c) remplace la
valeur du pixel de coordonnées (x,y) par la valeur contenue dans la variable c.
Q 1 Saisir sur ordinateur puis compléter le programme python (2.x) ci-après afin de découvrir la
fameuse photo tant convoitée :
1" " " Ce programme cha rge une image cod ee par l a methode du masque XOR
2et a f f i c h e l ’ image decodee " " "
3
4from PIL import Image # l a b i b l i o t h e q u e PIL permet de char g e r / sau ver
des images
5
6print ( " Decodage d une image par l a methode du XOR" )
7
8XMAX, YMAX = # Retro uver l a t a i l l e des images . . . . . . . . . . . . .
9
10 codee = Image . open( " image_codee . pgm" ) # o u v e r t u r e de l image c odee
11 masque = Image . open( " image_masque . pgm" ) # o u v e r t u r e du masque
12 de codee = Image . new ( "L " , (XMAX,YMAX) ) # d e c l a r a t i o n de l a f u t u re
image decodee ( "L" pour N&B sur 8 b i t s )
13
14 # Decodage :
15 # . . . . . . . . . . . e n t r e r v o t re code . . . . . . . . .
16
17 deco de e . sa ve ( " image_decodee . pgm" ) # Sauve l ’ image decodee
18 decod ee . show ( ) # A f f i c h e a l e cr an l image de codee
Q 2 Essayer de voir ce qui se passe si l’on applique l’opération « OU » au lieu de « XOR »...
Q 3 Envisager une méthode pratique (sans ordinateur) pour décrypter a peu près l’image, sans ordi-
nateur simplement à l’aide de l’image cryptée et du masque...
Page 4/4
1 / 4 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !