Cryptographie Visuelle

De Wiki du LAMA (UMR 5127)
Aller à la navigation Aller à la recherche
Auteurs : Gabriel Gomila, Anthony Vincent et Nicolas Baudon

Introduction

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.


Superposition.png


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 ==


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 :

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.

Masque jetable sans perte information.png