Projet Matlab : un logiciel de cryptage



Documents pareils
Projet Matlab/Octave : segmentation d'un ballon de couleur dans une image couleur et insertion d'un logo

IMAGES NUMÉRIQUES MATRICIELLES EN SCILAB

TD : Codage des images

Traitement numérique de l'image. Raphaël Isdant

Créer le schéma relationnel d une base de données ACCESS

TP : Gestion d une image au format PGM

Structure du format BMP, sa lecture, sa construction et son écriture

Conversion d un entier. Méthode par soustraction

Introduction à MATLAB R

Définition 0,752 = 0,7 + 0,05 + 0,002 SYSTÈMES DE NUMÉRATION POSITIONNELS =

Transmission d informations sur le réseau électrique

Formats d images. 1 Introduction

nom : Collège Ste Clotilde

AGASC / BUREAU INFORMATION JEUNESSE Saint Laurent du Var Tel : bij@agasc.fr Word: Les tableaux.

Fête de la science Initiation au traitement des images

TP SIN Traitement d image

Utiliser le logiciel Photofiltre Sommaire

1 Introduction au codage

Création de maquette web

Algorithme. Table des matières

GESTION DU LOGO. 1. Comment gérer votre logo? Format de l image Dimensions de l image Taille de l image 9

Animation Shop PREAMBULE... 2 CONTRAINTE... 2 CREER UNE ANIMATION... 2 AJOUTER DES IMAGES... 3 ENREGISTRER UNE ANIMATION... 3

Guide d usage pour Word 2007

Chapitre 22 Optimisation pour diffusion à l'écran, pour le web

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

Codage d information. Codage d information : -Définition-

Tapez le titre de la page «BASTIA ville méditerranéenne», puis allez deux fois à la ligne à l aide de la touche Entrée.

Traitement bas-niveau

Manuel MyUnisoft Mes devis et Factures

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

Sur trois couches, on obtient donc 2563 = de couleurs, soit 24bpp (Bit Per Pixel).

FICHE 17 : CREER UN SITE WEB

Guide d utilisation 2012

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

Création d un formulaire de contact Procédure

Créer des étiquettes avec les adresses d'un tableau Calc

Initiation à linfographie

Pop-Art façon Roy Liechtenstein

Cours de numérisation sur Epson Perfection

SAUVEGARDER SES DONNEES PERSONNELLES

Chap17 - CORRECTİON DES EXERCİCES

COPY. Picture Style Editor Ver. 1.4 MODE D EMPLOI. Logiciel de création de fichiers de style d image. Contenu de ce mode d emploi

Création d articles sur le site web du GSP


Leica Application Suite

Créer des documents interactifs

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Utilisation avancée de SugarCRM Version Professional 6.5

Trier les ventes (sales order) avec Vtiger CRM

L alternative, c est malin 1. Comment faire plein de choses pour pas cher sur MacIntosh

Outils permettant la diffusion de l information. Un point sur le droit numérique

Tutorial Terminal Server sous

INFO 2 : Traitement des images

1. Avoir un fichier InDesign correct :

Automatisation d'une Facture 4. Liste Déroulante Remises Case à cocher Calculs

CREATION D UNE EVALUATION AVEC JADE par Patrick RUER (

TUTORIEL IMPRESS. Ouvrir Impress cocher «présentation vierge», «suivant» cocher «écran», «suivant» cocher «standard», «créer»

Infolettre #18 : Les graphiques avec Excel 2010

1 Comment faire un document Open Office /writer de façon intelligente?

1 Introduction et installation

Date M.P Libellé Catégorie S.Catégorie Crédit Débit Solde S.B

1. Installation du Module

Manuel Utilisateur Version 1.6 Décembre 2001

ContactForm et ContactFormLight - Gestionnaires de formulaire pour Prestashop Edité par ARETMIC S.A.

Notice de fonctionnement DVR H Méthode de Visionnage ESEENET

Utilisation de XnView

USTL - Licence ST-A 1ère année Codage de l information TP 1 :

COURS WINDEV NUMERO 3

MATLAB : COMMANDES DE BASE. Note : lorsqu applicable, l équivalent en langage C est indiqué entre les délimiteurs /* */.

UTILISATION D'UN RADIOCHRONOMETRE POUR DATER DES GRANITES

Conservation des documents numériques

Formation > Développement > Internet > Réseaux > Matériel > Maintenance

Opérations de base sur ImageJ

T u t o r i e l s PhotoFiltre

Fiches d aide à l utilisation

FORMATS DE FICHIERS. Quels sont les différents types d informations numériques dans un document multimédia?

Dragon Naturally Speaking 13

GUIDE DE DEMARRAGE RAPIDE:

Comme chaque ligne de cache a 1024 bits. Le nombre de lignes de cache contenu dans chaque ensemble est:

JPEG, PNG, PDF, CMJN, HTML, Préparez-vous à communiquer!

Création d un site web avec Nvu

Initiation à Excel. Frédéric Gava (MCF)

Les différentes étapes à suivre pour la création d un feuillet

MANUEL DE L UTILISATEUR

Gestion de projet. GanttProject Didacticiel V novembre Gérard Gervois Frédéric Giamarchi

Eteindre. les. lumières MATH EN JEAN Mme BACHOC. Elèves de seconde, première et terminale scientifiques :

Les 1 er pas sur. Guide d utilisation

Compléments de documentation Scilab : affichage de texte et formatage de nombres

Création d une SIGNATURE ANIMÉE avec PHOTOFILTRE 7

Manuel d utilisation du module Liste de cadeaux PRO par Alize Web

IV- Comment fonctionne un ordinateur?

Installation de CPA STUDIO :

Prise en main du logiciel Smart BOARD

URECA Initiation Matlab 2 Laurent Ott. Initiation Matlab 2

INTRODUCTION A L ELECTRONIQUE NUMERIQUE ECHANTILLONNAGE ET QUANTIFICATION I. ARCHITECTURE DE L ELECRONIQUE NUMERIQUE

Dans l idéal, ceci devrait être fait en amont pour chaque image envoyée sur l espace de stockage de votre site internet.

Manuel d utilisation TruView 3.0

Transcription:

Projet Matlab : un logiciel de cryptage La stéganographie (du grec steganos : couvert et graphein : écriture) consiste à dissimuler une information au sein d'une autre à caractère anodin, de sorte que l'existence même du message caché passe inaperçue. Alors qu'avec la cryptographie, la sécurité repose sur le fait que le message ne sera sans doute pas compris, la stéganographie, s appuie sur le fait que le message ne sera pas détecté. Ce projet vous propose de mettre en application l une des méthodes les plus basiques, en termes de stéganographie. L'idée est de prendre une image et de la modifier de manière imperceptible afin d'y dissimuler l'information à transmettre, en l occurrence une autre image binaire (composée de deux niveaux : 0 et 1) contenant du texte. I. Quelques notions essentielles 1- Codage des images sous matlab Une image n est autre que l extension d un signal à 2 dimensions. Une image couleur est la superposition de 3 composantes de base (Rouge Vert et Bleu). Sous Matlab une telle image peut être codée par une matrice tridimensionnelle. Elle correspond à la mise en cascade des 3 matrices (2D : N*M) correspondant aux 3 composantes primaires (Rouge Vert et Bleu). Chacune de ces 3 matrices primaires (aussi appelées «plans couleur») contient le niveau de couleur pour chaque point de l image considérée. En général chaque niveau de couleur est codé entre 0 (canal colorimétrique éteint) et 255 (canal colorimétrique maximum) ce qui correspond à 255 3 = 16 581 375 combinaisons de couleurs possibles. 3 matrices (2D) primaires N points Image M points Dans le cas particulier des images en noir et blanc, les 3 composantes de chaque point de l image considérée (pixel) sont égales. Nous avons donc 256 niveaux de gris (de 0 pour le noir à 255 pour le blanc, en passant par un gris moyen pour 128).

Matrice Image Représentation de l Image f = 0 15 30 45 60 75 90 105 120 135 150 165 180 195 210 225 X Y Rq : Lorsque l on charge une image sous matlab, la matrice correspondante est de type uint8 (codage sur 8 bits non signés, autrement dit : 0-255). Pour simplifier les calculs et pouvoir utiliser toutes les fonctions matlab sur ces données, il est préférable de les convertir en réels (commande «double»), puis après traitement les reconvertir en entier codé sur 8 bits nonsigné avant de sauvegarder en format bmp (commande «uint8» ). 2- Une technique de stéganographie La technique de base, dite LSB (pour Least Significant Bit ou bit de poids faible, en français) consiste à modifier le(s) bit(s) de poids faible des pixels codant l'image. En effet, supposons que le niveau des couleurs soit codé sur 8 bits (256 niveaux, comme nous l avons vu précédemment), le fait de modifier le ou les bits de poids faible entraînera un changement de couleur presque imperceptible pour le pixel considéré. 11111111 11111110 Changement d un bit 00000010 00000001 00000000 0 Cette technique de stéganographie très basique s'applique tout particulièrement au format d'image BMP, format sans compression destructive, avec codage des pixels sur 3 octets (3*8 bits) comme énoncé ci-dessus.

II. Travail à réaliser Le logiciel que vous allez constituer, va donc permettre, à l aide de la méthode de sténographie présentée ci dessus, de crypter une information cachée dans une image. Cette information sera sous la forme d une image binaire (en noir et blanc) de texte, comme dans l exemple ci-dessous : A droite, l image dans laquelle est cryptée le texte (mis sous la forme d une image) de gauche Dans cet exemple (dont nous vous fournirons l image), le texte est codé dans le dernier bit du plan «rouge» de l image de droite ; un bit à 1 correspondra à un pixel blanc et un bit à 0 un pixel noir de l image de texte. Il suffit donc d extraire la matrice (composée de 0 et 1) de l image de ouran-outan pour retrouver le texte (sous la forme d une image noir et blanc). Afin de constituer ce logiciel, vous allez procéder par étapes : la première constituera en le codage de méthodes simplifiées de cryptage et décryptage, où l information cachée ne sera cryptée que dans un seul plan (à la manière de l exemple de l oran-outan) et où les images cachées seront crées à l aide d un logiciel externe à Matlab (MS Paint). la seconde introduira la notion d une clef de cryptage (relativement simple) qui sera indispensable pour décrypter correctement l image. Seules les personnes connaissant cette clef pourront décrypter simplement l image. La troisième étape consistera à ajouter la possibilité de créer une image de texte à partir de Matlab (sans passer par un logiciel externe). Il sera important de créer une interface utilisateur transparente (c est-à-dire que des personnes ne connaissant quasiment rien en Matlab puissent utiliser), en utilisant notamment les fonctions d entrées-sorties («input», «disp», ) ainsi que des menus à boutons.

1. Scripts simplifiés de cryptage et décryptage Lors de cette étape, il ne s agit pas encore de créer le logiciel final, mais simplement pour vous de mettre en pratique, et ainsi de maîtriser, les méthodes de cryptage et décryptage. Tout d abord, vous devez prendre une image quelconque (cherchez la sur internet par exemple) que vous devez convertir en format bmp (par exemple, à l aide de MS Paint ou même de Matlab avec «imread» et «imwrite»). Nommons-la «image.bmp» pour faciliter la suite des explications. Ensuite à l aide de MS Paint, créez une image de même taille (cf. l option «attributs» de MS Paint) que votre image et toute blanche. Dans cette seconde image, à l aide de MS Paint, écrivez quelque chose en noir. Sauvegardez en format bmp (monochrome) sous un autre nom (par exemple «imagetexte.bmp»). Ensuite, créez deux scripts «cryptage.m» et «decryptage.m» : Le premier doit charger les deux images, puis remplacer le bit de poids faible du plan «rouge» de l image «image.bmp» avec l information contenue dans l image «imagedetexte.bmp». Puis sauvegarder l image obtenue sous format «bmp» (sous le nom «imagecrypte.bmp»). Le second doit charger l image «imagecryptee.bmp» pour en extraire du plan «rouge» l information cryptée. Nous vous rappelons que la valeur d un pixel est codée sur 8 bits, selon la relation suivante : valeur = bit0 + bit1*2 1 + bit2*2 2 + bit3*2 3 + + bit7*2 7. Par exemple : 173 = 1+0*2+1*4+1*8+0*16+1*2^5+0*2^6+1*2^7 -> 10101101 Vous pouvez utiliser la fonction imagesc de Matlab pour visualiser les différentes images. 2. Clef de cryptage Précédemment, vous avez codé l information cachée dans un seul plan (le «rouge») de l image couleur. Cependant, toute personne au fait de la technique serait en mesure de décrypter votre image (et donc de lire l information cachée). A présent, vous allez introduire une clef de cryptage : seule la personne qui connaît aussi la clef sera en mesure de décrypter votre image. Dans cette partie, la clef consistera en une suite de 1, 2 et 3, correspondant aux plans couleurs où sera codée l information : ainsi si la clef est 231321, le premier pixel de l image «imagedetexte.bmp» sera codée dans le plan 2 (i.e. «vert»), le second pixel sera codé dans le plan 3 (i.e. «bleu»), le troisième dans le plan 1, le quatrième dans le plan 3, le cinquième dans le plan 2, le sixième dans le plan 1. Les pixels suivants seront codés en répétant la clef ; le septième sera codé dans le plan 2, le huitième dans le plan 3, etc. Pour compliquer encore un peu, nous allons coder cette clef en la traduisant sous forme des coefficients (sous forme rationnelle) du polynôme passant exactement par les points correspondants. La clef 231312 sera ainsi traduite par les coefficients du polynôme passant par les points de coordonnées (1,2), (2,3), (3,1), (4,3), (5,1) et (6,2). Il s agit donc d un polynôme d ordre 5 : 1/4*x5-35/8*x4+86/3*x3-693/8*x2+1417/12*x-54=0. La clef codée finale sera la concaténation des numérateurs et des dénominateurs : 1-35 86-693 1417-54 4 8 3 8 12 1

Au niveau de la forme, le programme devra incorporer une interface utilisateur transparente et se décomposer en plusieurs scripts et fonctions. Un script principal devra demander à l utilisateur les informations nécessaires au fonctionnement et lancer les différentes fonctions nécessaires : - en premier lieu, il demandera si l utilisateur veut crypter ou décrypter. - en fonction de la réponse de l utilisateur, il demandera les noms des fichiers images à crypter ou à décrypter. - puis il demandera la clef de cryptage soit sous la forme d une série (dans le cas du cryptage) soit sous la forme des coefficients du polynôme (dans le cas du décryptage). - Il lancera alors une fonction de traduction de la clef (série->polynôme, «serie2poly.m, ou polynôme-> série, «poly2serie.m»,) - Puis il lancera une fonction de cryptage («crypt.m») ou de décryptage («decrypt.m»). - Enfin, il en affichera le résultat (l image résultante, ou de la clef codée) et le sauvegardera dans un fichier bmp. Ceci peut être mis sous la forme de l organigramme suivant : Choix «cryptage» ou «décryptage» si «décryptage» SI si «cryptage» Saisie du nom du fichier à décrypter Saisie des coefficients du polynôme clef, sous forme rationnelle Saisie des noms des fichiers : image où crypter et de l image de texte Saisie de la série de 1, 2 et 3 «poly2serie» «decrypt» «serie2poly» «crypt» Affichage de l image de texte Affichage de la clef codée Sauvegarde de l image de texte Sauvegarde de l image cryptée

3. Création sous Matlab d une image de texte Un des points faibles du programme développé est la nécessité de faire appel à un programme externe (MS Paint) pour créer l image de texte. Dans cette dernière étape, vous allez coder une fonction pour créer l image de texte selon un texte saisi par l utilisateur. Afin de réaliser cela, chaque caractère du texte saisi donnera lieu à une petite matrice (de taille 11x8) de 0 et 1 dessinant le caractère. En fait, chaque matrice sera issue de l assemblage de plusieurs éléments de base (composés de barres verticales et horizontales), à la manière d un affichage digitale d une montre. Nous limiterons les caractères aux seuls caractères numériques ( 0, 1, 2, 3, 4, 5, 6, 7, 8 et 9 ). Tous autres caractères donnera lieu simplement à une matrice nulle (toujours de taille 11x8), correspondant à un «espace» dans le texte. Ceci nous permet de nous limiter dans le nombre d éléments de base. Ceci sont au nombre de 7 : Par exemple, pour obtenir le caractère 9, nous combinons : AND AND AND AND AND Il suffit donc de traduire tous les caractères numériques saisis par l utilisateur sous cette forme matricielle et de les insérer (chaque caractère à la suite de l autre) dans une matrice de la même taille que l image où crypter. Attention, chaque caractère, traduit sous la forme de matrice, aura une taille de 11x8 pixels. Dans une image de taille 480x640 pixels, le maximum de caractères possibles est donc de 3440 (80 caractères par ligne et 43 caractères par colonne). Vous devrez tenir compte de cette limitation. De même, les dimensions de l image ne sont pas forcément des multiples de 11 ou de 8. III. Améliorations facultatives Bien que cela ne soit pas requis, vous pouvez, si vous disposez encore de temps, améliorer encore votre programme : - en incluant d autres caractères (les caractères alphabétiques, les ponctuations, ). Cela nécessitera de définir d autres éléments de base (des barres diagonales ). - en incluant votre programme dans une boucle infinie qui ne s arrêtera que si vous faîtes le choix de quitter le programme (option à ajouter dans le choix). Ceci permettra de répéter plusieurs fois les opérations de cryptage ou de décryptage sans relancer à chaque fois le programme. - en compliquant le cryptage ; actuellement, seul le bit de poids le plus faible (sur un des 3 plans couleurs) sert au cryptage. Il est possible de répartir aussi sur d autres bit de poids faibles (un parmi les 4 bits les plus faibles) selon une seconde clef de cryptage. Vous pouvez aussi proposer vos propres améliorations. Toutes ces améliorations sont facultatives.

IV. Annexe : fonctions Matlab utiles Dans cette annexe, nous présentons une liste de fonctions Matlab qui pourraient vous être éventuellement utiles (en plus, de celles que vous connaissez déjà) dans ce projet. N hésitez pas à lire l aide Matlab (à l aide de la commande «help») pour comprendre comment elles fonctionnent et les utiliser. floor : renvoie la partie entière d un nombre imagesc ou image : affiche une image. imread : permet de charger une image imwrite : permet de sauvegarder une image colormap : attribut aux différents pixels de l image la couleur correspondante. rem : renvoie le reste de la division entière reshape : permet de réorganiser les lignes et colonnes d une matrice (changement de taille) rat : renvoie la forme rationnelle d un nombre (numérateur et dénominateur)