« Cryptographie Visuelle » : différence entre les versions

De Wiki du LAMA (UMR 5127)
Aller à la navigation Aller à la recherche
Aucun résumé des modifications
 
(7 versions intermédiaires par le même utilisateur non affichées)
Ligne 64 : Ligne 64 :


A la réception de l’image chiffrée, le receveur va pouvoir utiliser les mêmes méthodes que vues précédemment : un simple OU (superposition du masque M et de l’image chiffrée C), ou bien un XOR (nécessitant un ordinateur). Cette fois-ci, grâce au dédoublement des pixels du masque, aucune information n’est perdue dans le sens ou les pixels blancs ne sont pas modifiés en pixels noirs mais seulement en carrés à moitié noir, donnant une impression visuelle de gris. Nous pouvons alors utiliser une machine pour traiter le XOR qui donnera un rendu parfait mais la simple superposition du masque et de l’image chiffrée pourra être correctement interprétée par le receveur, sans perte d’information.
A la réception de l’image chiffrée, le receveur va pouvoir utiliser les mêmes méthodes que vues précédemment : un simple OU (superposition du masque M et de l’image chiffrée C), ou bien un XOR (nécessitant un ordinateur). Cette fois-ci, grâce au dédoublement des pixels du masque, aucune information n’est perdue dans le sens ou les pixels blancs ne sont pas modifiés en pixels noirs mais seulement en carrés à moitié noir, donnant une impression visuelle de gris. Nous pouvons alors utiliser une machine pour traiter le XOR qui donnera un rendu parfait mais la simple superposition du masque et de l’image chiffrée pourra être correctement interprétée par le receveur, sans perte d’information.

== Méthode par l'éclatement d'une image ==


[[Fichier:repartition_pixels.png‎|vignette]]

Dans les méthodes précédentes, notre image secrète était retrouvée grâce à un éclatement par deux images : le masque et l’image chiffrée. Une autre méthode consiste à augmenter l’éclatement de l’image, en trois, voire plus. L’objectif consiste à ce qu’il faille obtenir toutes les parties afin de reconstituer l’image secrète S. Ainsi, dans l’hypothèse où un espion s’empare de deux parties sur les trois, il ne pourra en aucun cas déchiffrer le moindre élément secret. Plus on éclate l’image secrète, plus la méthode est sûre. Voici comment il faut procéder pour un éclatement en trois :


'''Première étape '''

Comme pour la méthode précédente, nous allons diviser tous les pixels en carré de quatre pixels. Nous allons donc créer trois images A, B et C deux fois plus grandes que notre image secrète S.


'''Seconde étape '''

Construisons l’image A de façon aléatoire. En effet, nous allons nous inspirer de la précédente méthode en attribuant à chaque carré de quatre pixels une partie droite noire et une partie gauche blanche, ou inversement (cf. illustration).


'''Troisième étape '''

Construisons l’image B de façon similaire. Attribuons à chaque carré de quatre pixels une partie haute noire et une partie basse blanche, ou inversement (cf. illustration).


'''Quatrième étape '''

Construisons l’image C. Contrairement aux images A et B, les pixels ne seront pas choisis aléatoirement. Nous allons nous référer aux pixels de l’image secrète S. Un pixel est soit blanc, soit noir. Nous choisissons donc deux combinaisons de répartition équitable entre pixels blanc et noir dans un carré de quatre pixels, différente des répartitions utilisées pour les images A et B. Par exemple, un pixel sera représenté par la diagonale montante en noire, ou bien par la diagonale descendante en noire. Le choix doit se faire de façon à ce que la superposition de A, B et C donne un pixel blanc sur quatre pour un pixel blanc de l’image secrète et quatre pixel noir pour un pixel noir de l’image secrète.


Afin de décrypter les images reçues (A, B et C), la même opération est à faire :

'''A XOR B XOR C'''


Mais, toujours à l’avantage de la cryptographie visuelle, l’œil est capable de décrypter l’image secrète en superposant les trois images, ce qui correspond à l’opération logique OU pixel par pixel :

'''A OU B OU C'''

Comme nous pouvons le voir dans l’exemple ci-contre, nous avons une grande perte de contraste, mais cela n’empêche pas la bonne interprétation par l’œil.

[[Fichier:eclatement_image.png‎]]


== Masques imagés ==

La technique du masque imagé est une dissimulation de la réalité, on réalise différents M qui grâce au niveaux de gris représente une image. Si un espion observe plusieurs images grises d’apparence aléatoire, il se doutera qu’elles contiennent une informations cachée. Pour réaliser cette méthode, il faut jouer sur les niveaux de gris pour que lors la superposition des images (M et C), les dessins qu’elles représentent disparaissent pour laisser place au secret. Sur l’exemple suivant, les images M et C ( masque et chiffré ) sont composées de 2 niveaux de gris différent (½ pixel noir, ½ pixel blanc et ¼ pixel blanc, ¾ pixels noir) afin de distinguer une image. L’image reconstitué (secret) se démarque du fond noir et blanc en une image totalement noir.

Dernière version du 20 novembre 2016 à 11:30

Auteurs : Gabriel Gomila, Anthony Vincent et Nicolas Baudon

Introduction

Superposition.png

La cryptographie visuelle est une technique qui permet de crypter des informations visuelles (images, textes etc..) afin que leurs décryptages se fassent par lecture visuelle.

Cette méthode a été développé en 1994 d'un travail de Moni Naor et Adi Shamir (RSA), même si des méthodes similaires ont été utilisées dans les années 1960.

Un simple exemple de son fonctionnement est l'utilisation de transparents, où l'un représente le masque (clé de déchiffrement) et l'autre l'image cryptée. Chacun de ses transparents ne révèle aucune information sur le secret (image claire), mais une fois superposés ce dernier apparaît à l'oeil.

La cryptographie visuelle peut être utilisée pour protéger des modèles biométriques où le décryptage ne nécessite pas de calculs complexes.

Principe

Partons d'une image M (le masque) dont les pixels (noirs ou blancs) sont tirés aléatoirement et d'une image S (le secret) de meme taille et composée également de pixels noirs ou blancs représentant l'image qu'on souhaite cacher. Le secret peut etre un dessin, une photo ou un texte. Il faut ensuite opérer le "ou exclusif" (noté XOR en informatique) entre les pixels de M et de S. Le résultat sera une image chiffrée, que l'on appellera C.


C = M XOR S

Si le pixel de M et celui de S sont de meme couleur, il sera blanc sur C. Si le pixel de M et de celui de S sont différents, il sera noir sur C.


Maintenant en possession des images M et C, imaginons qu'on les imprime sur des transparents, on constatera que leur superposition fait apparaitre S. En effet, la superposition de transparents correspond à faire l'opération "OU" pour notre oeil. L'image apparaitra donc sur un fond gris car environ 50% des pixels blancs deviendront noirs lors de la création de C. Cependant, l'oeil humain distinguera tout de meme l'image.

Visual crypto animation demo.gif


Afin de reconstituer l'image originale sans bruit, il est nécessaire d'opérer le "ou exclusif" (XOR) entre M et C en utilisant un logiciel. Opérer un XOR entre M et C redonne bien S car:

M XOR C = M XOR (M XOR S) = (M XOR M) XOR S = O XOR S = S


Cette méthode étant basée sur le principe du "masque jetable", il est important de ne jamais utiliser deux fois le meme masque ! En effet, considérons 2 secrets de meme taille S et S' et un masque unique M :

C = M XOR S et C' = M XOR S'

Si un espion s'empare de C et C' et opère un XOR entre leurs pixels, il distinguera alors S et S' car :

C XOR C' = (M XOR S) XOR (M XOR S') = S XOR 0 XOR S'= S XOR S'.

L'espion obtiendra donc une image représentant la superposition de S et S'. L'utilisation de masque aléatoire à usage unique est donc une condition nécessaire à l'inviolabilité de cette méthode !


Méthode du masque jetable sans perte d'information

Masque jetable sans perte information.png

Comme nous l’avons indiqué précédemment, l’un des avantages de la cryptographie visuelle est qu’elle ne demande pas nécessairement l’utilisation d’une machine pour décrypter l’image secrète. En effet, l’œil est capable d’effectuer le OU logique entres pixels superposés et l’image apparaît naturellement à nos yeux. Cependant, l’image apparaît modifiée car l’œil n’est pas capable d’effectuer un XOR. Ainsi, l’image se devine avec un certain pourcentage de perte d’information. Le OU logique, ou la simple superposition, appliqué aux pixels de l’image chiffrée et du masque remplace certains pixels blancs en pixels noirs. Cela n’a pas vraiment d’incidence lorsque l’image contient un certain nombre de pixels redondants. C’est lorsque chaque pixel a son importance que cela peut devenir gênant pour l’interprétation du résultat obtenu sans ordinateur. Une méthode a été mise en point pour corriger ce point : le masque jetable sans perte d’information.

Tout d’abord, il s’agit de multiplier la taille du masque et de l’image secrète par deux. Ce qui transforme chaque pixel en un carré de quatre pixels identiques. Pour générer le masque, chaque carré de pixels sera découpé en deux parties de deux pixels : la partie droite et la partie gauche. De façon aléatoire, certains carrés auront la partie droite noire et la partie gauche blanche. On inversera les couleurs pour les carrés restants.

Afin d’obtenir une image chiffrée, celle qui sera envoyée, on effectue :

M XOR S = C

A la réception de l’image chiffrée, le receveur va pouvoir utiliser les mêmes méthodes que vues précédemment : un simple OU (superposition du masque M et de l’image chiffrée C), ou bien un XOR (nécessitant un ordinateur). Cette fois-ci, grâce au dédoublement des pixels du masque, aucune information n’est perdue dans le sens ou les pixels blancs ne sont pas modifiés en pixels noirs mais seulement en carrés à moitié noir, donnant une impression visuelle de gris. Nous pouvons alors utiliser une machine pour traiter le XOR qui donnera un rendu parfait mais la simple superposition du masque et de l’image chiffrée pourra être correctement interprétée par le receveur, sans perte d’information.

Méthode par l'éclatement d'une image

Repartition pixels.png

Dans les méthodes précédentes, notre image secrète était retrouvée grâce à un éclatement par deux images : le masque et l’image chiffrée. Une autre méthode consiste à augmenter l’éclatement de l’image, en trois, voire plus. L’objectif consiste à ce qu’il faille obtenir toutes les parties afin de reconstituer l’image secrète S. Ainsi, dans l’hypothèse où un espion s’empare de deux parties sur les trois, il ne pourra en aucun cas déchiffrer le moindre élément secret. Plus on éclate l’image secrète, plus la méthode est sûre. Voici comment il faut procéder pour un éclatement en trois :


Première étape 

Comme pour la méthode précédente, nous allons diviser tous les pixels en carré de quatre pixels. Nous allons donc créer trois images A, B et C deux fois plus grandes que notre image secrète S.


Seconde étape 

Construisons l’image A de façon aléatoire. En effet, nous allons nous inspirer de la précédente méthode en attribuant à chaque carré de quatre pixels une partie droite noire et une partie gauche blanche, ou inversement (cf. illustration).


Troisième étape 

Construisons l’image B de façon similaire. Attribuons à chaque carré de quatre pixels une partie haute noire et une partie basse blanche, ou inversement (cf. illustration).


Quatrième étape 

Construisons l’image C. Contrairement aux images A et B, les pixels ne seront pas choisis aléatoirement. Nous allons nous référer aux pixels de l’image secrète S. Un pixel est soit blanc, soit noir. Nous choisissons donc deux combinaisons de répartition équitable entre pixels blanc et noir dans un carré de quatre pixels, différente des répartitions utilisées pour les images A et B. Par exemple, un pixel sera représenté par la diagonale montante en noire, ou bien par la diagonale descendante en noire. Le choix doit se faire de façon à ce que la superposition de A, B et C donne un pixel blanc sur quatre pour un pixel blanc de l’image secrète et quatre pixel noir pour un pixel noir de l’image secrète.


Afin de décrypter les images reçues (A, B et C), la même opération est à faire :

A XOR B XOR C


Mais, toujours à l’avantage de la cryptographie visuelle, l’œil est capable de décrypter l’image secrète en superposant les trois images, ce qui correspond à l’opération logique OU pixel par pixel :

A OU B OU C

Comme nous pouvons le voir dans l’exemple ci-contre, nous avons une grande perte de contraste, mais cela n’empêche pas la bonne interprétation par l’œil.

Eclatement image.png


Masques imagés

La technique du masque imagé est une dissimulation de la réalité, on réalise différents M qui grâce au niveaux de gris représente une image. Si un espion observe plusieurs images grises d’apparence aléatoire, il se doutera qu’elles contiennent une informations cachée. Pour réaliser cette méthode, il faut jouer sur les niveaux de gris pour que lors la superposition des images (M et C), les dessins qu’elles représentent disparaissent pour laisser place au secret. Sur l’exemple suivant, les images M et C ( masque et chiffré ) sont composées de 2 niveaux de gris différent (½ pixel noir, ½ pixel blanc et ¼ pixel blanc, ¾ pixels noir) afin de distinguer une image. L’image reconstitué (secret) se démarque du fond noir et blanc en une image totalement noir.