• Aucun résultat trouvé

Application aux images

Dans le document HABILITATION A DIRIGER DES RECHERCHES (Page 188-193)

4.3.1 Chiffrement d’images par DES ou par TEA

Dans le cas de ces deux algorithmes par bloc la longueur des blocs est impos´ee et est ´egale `a 64 bits, donc 8 pixels. Du fait de l’information bidimensionnelle d’une image, plusieurs solutions de regroupement de pixels sont possibles. En effet dans l’objectif de mieux r´esister `a une compression aval ou de comprimer en mˆeme temps que le chiffrement, il nous semble int´eressant de regrouper les pixels avec leurs voisins les plus proches, illustr´e figure 63.

Fig. 63 – Regroupements possibles des pixels dans l’image afin de former des blocs de 64 bits.

Chaque bloc de 8 pixels sera crypt´e ind´ependamment par DES ou par TEA. Le bloc crypt´e obtenu viendra alors se substituer dans l’image au bloc original. Dans ce chapitre, le parcours de lecture des blocs sera ex´ecut´e uniquement de mani`ere lin´eaire (scan line).

Nous verrons, chapitre suivant, qu’il est souvent plus int´eressant d’utiliser d’autres types de parcours (spirale, zig-zag, . . . ).

4.3.2 Cryptage d’images par RSA

La longueur des blocs crypt´es par RSA doit ˆetre plus petite que la valeur dende mani`ere

`

a conserver une r´eversibilit´e. Cependant, afin de conserver les valeurs des pixels sup´erieurs ou ´egaux `an, il faut bien souvent effectuer un ´echantillonnage [Borie 02a, Borie 02b]. Pour ne pas perdre trop d’information `a l’´echantillonnage, la valeur de ndoit ´egalement ˆetre le plus proche possible de la valeur maximale du bloc `a coder sans d´epasser cette valeur. En effet si la valeur den est plus grande que cette valeur maximale, le bloc chiffr´e risque de n´ecessiter un nombre de bits plus important que le bloc initial.

Pour consid´erer des clefs plus grandes, les pixels voisins formant un bloc sont regroup´es

4.3. APPLICATION AUX IMAGES 175

de la mani`ere suivante :

bloc[i/k] = p(i) + 256∗p(i+ 1) + 2562∗p(i+ 2)

+...+ 256k−1∗p(i+k−1), (68)

avec k´etant le nombre de pixels pris en compte pour former le bloc.

Du fait de la diffusion des clefs publiques, les clefs doivent ˆetre cod´ees sur au moins 512 bits pour assurer une r´eelle s´ecurit´e, soit 64 pixels. De part la manipulation de grands nombres au niveau des ´equations (64) et (65), cette solution impose un temps de calcul relativement important.

4.3.2.1 Une premi`ere impl´ementation de RSA

Dans une premi`ere impl´ementation de l’algorithme RSA appliqu´e aux images [Borie 02b], le programme g´en´erait automatiquement les clefs en fonction des nombres petq et cr´eait bloc par bloc l’image crypt´ee ou d´ecrypt´ee.

Il est `a noter que dans le cryptage d’une image par RSA et dans le cas o`u l’on veut que le fichier crypt´e soit ´egalement une image, contrairement aux m´ethodes de chiffrement sym´etriques par blocs comme DES, nous aurons une l´eg`ere d´egradation de l’image originale et l’image crypt´ee et d´ecrypt´ee, bien que souvent invisible pour le SVH (Syst`eme Visuel Humain). Cette d´egradation s’explique de la mani`ere suivante :

Supposons que le cryptage s’effectue pixel par pixel (8 bits). Alors le nombre ndevra ˆ

etre inf´erieur `a 256 pour s’assurer que le r´esultat tienne ´egalement sur 8 bits. Par exemple le plus grand npossible sera 253, produit des deux nombres premiers 23 et 11. Mais dans ce cas, les valeurs des pixels crypt´es et d´ecrypt´es ne pourront d´epasser 252. En effet, `a cause du modulo 253 et afin de conserver une bijection entre les pixels clairs et les pixels crypt´es, les niveaux de gris sup´erieurs ou ´egaux `a 253 ne peuvent pas ˆetre conserv´es. Nous effectuons donc un ´echantillonnage de l’histogramme de l’image, ce qui nous vaut une perte de 3 niveaux de gris [Borie 02a].

Dans le cas d’un chiffrement pixel par pixel, la s´ecurit´e du RSA est loin d’ˆetre assur´ee.

En effet dans le cas de cette premi`ere impl´ementation le probl`eme de manipulation des grands nombres n’a pas ´et´e abord´e. En effet la taille des types standards dans les langages de programmation ´etant limit´ee, les blocs de donn´ees `a chiffrer n’atteignaient que la taille de deux pixels, `a savoir 16 bits (nombres de l’ordre de 104), alors que mˆeme 1024 bits (10300) n’offrent `a RSA, si l’adversaire est puissant, qu’une s´ecurit´e relative. Il a donc fallu trouver un moyen de r´esoudre ce probl`eme, `a savoir cr´eer une m´ethode de gestion personnelle des grands nombres.

4.3.2.2 RSA et les grands nombres

La m´ethode consiste `a cr´eer un nouveau type de nombres entiers, que nous avons appel´e le type grand, une structure qui puisse repr´esenter tout nombre entier positif de taille quelconque, dans un espace m´emoire adapt´e et dynamique. L’unit´e de m´emoire que nous avons choisie est l’octet (type unsigned char) car c’est la taille la plus naturelle pour le stockage en m´emoire, et celle que nous estimons ˆetre la plus efficace en terme de temps de calculs.

Par exemple, un nombre compris entre 0 et 255 sera cod´e sur un seul octet, entre 256 et (2562−1) sur deux octets, . . . entre 256n−1 et (256n−1) surnoctets.

Mais surtout, pour que ces grands entiers puissent ˆetre manipul´es, nous devons ˆetre en mesure d’y effectuer les op´erations de base que sont la somme, la diff´erence, le produit, le quotient, le reste de la division enti`ere (modulo) et enfin la comparaison de deux nombres.

Dans tous les cas, la m´ethode consistera `a adapter les op´erations afin de les programmer non pas en base 10, mais en base 256.

Prenons par exemple l’addition de deux nombres en baseb, en comparant la base 256 `a la base 10 que nous connaissons bien (figure 64). On calcule d’abord la somme des chiffres de droite. On place dans le r´esultat la somme obtenue modulo b. Si cette somme est sup´erieure ou ´egale `ab, alors on garde une retenue de 1 pour la somme des deux prochains chiffres.

Fig. 64 – Addition de deux nombres en base 10 et en base 256.

Il n’y a donc pas de r´eelle nouveaut´e dans la d´emarche `a suivre, et ce pour n’importe quelle base b ∈ N. Nous ne d´etaillerons donc pas les algorithmes de chaque op´eration, mais on imagine que la division par exemple (qui fait ´egalement office demodulo) est plus difficile `a mettre en œuvre (figure 65).

Il ne faut pas oublier que chaque fonction op´eration se charge d’allouer la taille n´ecessaire en octets du nombre r´esultat, tout en le codant sur le nombre exact, et pas plus, d’octets dont il a besoin (par exemple, on ne code pas un nombre inf´erieur `a 256 sur deux octets avec le premier `a z´ero).

4.3. APPLICATION AUX IMAGES 177

Fig. 65 – Division de deux nombres en base 10 et en base 256.

4.3.3 Chiffrement d’images par flot asynchrone

Dans cette section nous pr´esentons un nouvel algorithme de chiffrement par flot asyn-chrone appliqu´e aux images. SoitK une clef de longueurkbitsbı etK =b1b2...bk. L’unit´e de cryptage est le pixel (1 octet). La m´ethode r´eside dans le fait que pour chaque pixel de l’image le cryptage d´epend du pixel original, de la valeur de la clef K, et des k/2 pixels pr´ec´edemment crypt´es. Pour utiliser les ´equations (67) nous avonst=k/2.

Pour chaque pixelpıde l’image originale, nous calculons la valeur du pixelp0ıde l’image chiffr´ee en utilisant l’´equation suivante :

(

zı = (Pk/2

=1αp0ı−)mod256

p0ı = (zı+pı)mod256, (69) avec ı ∈ [0, . . . ,N −1], o`u N est le nombre de pixels de l’image, k est la longueur de la clef, avec k ∈[1,N], et α est une s´equence de k/2 coefficients g´en´er´ee `a partir de la clef secr`eteK [Puech 01c, Puech 01b].

Le principe de chiffrement est le mˆeme que celui illustr´e figure 61.a. Les ´equations (69) ont une r´ecurrence d’ordre k/2, correspondant `a la moiti´e de la longueur de la clef [Puech 01a, Puech 01d]. Les coefficients α sont des coefficients entiers compris entre −2 et +2 tel que :

α−1 siβ∈ {0,1,2},

α=±2 siβ= 3, (70)

avec β = 2b2−1+b2, o`u b2−1 etb2 sont deux bits voisins de la clef secr`ete K.

De plus, la densit´e de probabilit´e des α doit ˆetre uniforme afin d’att´enuer le bruit durant l’´etape de d´ecryptage. Le signe devant les coefficients ´egaux `a 2 d´epend de la somme des coefficients α afin d’avoir :

1 k/2

k/2

X

=1

α'0. (71)

Une autre information est ´egalement construite `a partir de la clefK. En effet, en prenant en compte que le chiffrement d’un pixel s’appuie sur lesk/2 pixels pr´ec´edemment crypt´es,

nous ne pouvons pas chiffrer lesk/2 premiers pixels de l’image de la mˆeme mani`ere. Il est n´ecessaire d’associer la s´equence des coefficients αı `a une s´equence de k/2 pixels virtuels crypt´es p0−ı, pour ı ∈ [1, . . . ,k/2], correspondant `a un vecteur d’initialisation (VI). Par cons´equent, un VI est cod´e dans la clef : k/2 valeurs de pixels virtuels qui permettent de crypter les k/2 premiers pixels de l’image comme si ils avaient des pr´ed´ecesseurs.

La longueurk de la clef K doit ˆetre suffisamment grande afin de garantir une s´ecurit´e maximale. Supposons k = 128, comme nous avons 2 bits par coefficient α, l’ordre de la r´ecurrence est 64. Concernant le VI, nous avons montr´e qu’il ´etait n´ecessaire pour chiffrer les k/2 premiers pixels. Nous ne lui donnons donc pas plus de place suppl´ementaire dans la clef, mais la valeur du VI est d´eduite de la clef de 128 bits par le principe suivant. Il est bas´e sur une fenˆetre glissante qui lit les bits de la clef de la gauche vers la droite. La fenˆetre lit le premier octet afin de g´en´erer le premier pixel virtuel, le syst`eme se d´eplace alors d’un bit de la clef vers la droite afin d’obtenir un nouvel octet et de g´en´erer un autre pixel virtuel. Le d´eplacement de un bit vers la droite s’effectue jusqu’`a obtenir le nombre n´ecessaire de pixels virtuels.

L’´equation 72 pr´esente la proc´edure de d´ecryptage. Dans la proc´edure de d´ecryptage, nous devons appliquer le processus inverse. Nous pouvons noter que la fonction g´en´eratrice la clef dynamique est la mˆeme qu’`a l’´equation (69):

(

zı = (Pk/2

=1αp0ı−)mod256

pı = (p0ı−zı)mod256, (72)

Dans le document HABILITATION A DIRIGER DES RECHERCHES (Page 188-193)