30.11.2012 Views

technique - Zenk - Security

technique - Zenk - Security

technique - Zenk - Security

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

des données. D’autres principes plus<br />

efficaces pourraient être mis en place<br />

au niveau logiciel.<br />

Morcellement des clés<br />

La première solution proposée consiste<br />

à morceler les clés en RAM. Cette solution<br />

empêche l’utilisation de aeskeyfind, qui<br />

effectue des recherches sur des blocs<br />

de 128, 256 bits contigus. Les clés étant<br />

morcelées, il n’est plus possible d’effectuer<br />

cette analyse. Prenons le cas ou l’on<br />

fragmente les clés octet par octet. On aurait<br />

donc 64 morceaux (2 clés de 256 bits)<br />

à disperser. Le principe est le suivant :<br />

lorsque l’on veut accéder en lecture ou en<br />

écriture à un fichier, le FDE va rassembler<br />

la clé en RAM et effectuer l’opération<br />

de chiffrement ou de déchiffrement. Une<br />

fois terminé, les clés seront à nouveau<br />

dispersées. La Figure 8 illustre le principe<br />

de morcellement avec une clé coupée<br />

en quatre parties. La partie supérieure du<br />

schéma représente la répartition en RAM de<br />

chaque bloc avant et après chaque étapes.<br />

Ce mode de fonctionnement donne la<br />

possibilité d’attaquer les clés lorsqu’elles<br />

sont rassemblées en RAM, surtout lors<br />

d'opérations sur des fichiers volumineux.<br />

Mais quels sont les impacts sur les<br />

performances? Nous allons mesurer de<br />

manière qualitative les conséquences<br />

de cette approche au niveau des<br />

performances sur un disque de données<br />

et un disque système. Les mesures ont<br />

été réalisées avec l’outil procmon de<br />

Sysinternals (cf. Figure 9).<br />

1 er cas : Disque de données<br />

Un disque contenant uniquement des<br />

données a été monitoré pendant trente<br />

Figure 10. Algorithme de génération des<br />

clés leurres<br />

Listing 5. Implémentation partielle du camouflage de clés<br />

minutes, en étant utilisé normalement<br />

(modification de fichier txt et visualisation<br />

d’images). Il en ressort que durant ces trente<br />

minutes, 32000 opérations ont été faites<br />

sur les fichiers ce qui représente un temps<br />

d’exécution de 42,3s soit 2,4% du temps<br />

total. Par conséquent si on morcelle les clés<br />

à la fin de chaque opération, on diminue le<br />

temps d'exposition à l’attaque de 97,6%. Ce<br />

résultat est à modérer en fonction du niveau<br />

d’utilisation du disque. Car le recours à des<br />

programmes utilisant beaucoup de fichiers,<br />

on obtiendra un résultat moins performant.<br />

2 ème cas : Disque système<br />

Cette fois un disque contenant Windows<br />

XP a été monitoré pendant 30 minutes. Ce<br />

qui représente 170000 opérations ayant un<br />

temps d’exécution de 232s, c'est-à-dire 12,9%<br />

du temps de l’analyse. Bien que ce résultat<br />

ne soit pas surprenant, on remarque que<br />

l’utilisation du morcellement de clé est moins<br />

avantageux que dans le cas précédent.<br />

Une autre conséquence de ce<br />

système est la dégradation des<br />

performances, car à chaque accès<br />

disque, il faudra rassembler les clés<br />

et les morceler ensuite. Cela entraînera<br />

fatalement une diminution des perfor-<br />

LA RAM<br />

//Generating decoy keys<br />

int nbKey=(100000-2)/2;<br />

clock_t start,end;<br />

start = clock ();<br />

unsigned char eltSecret[64] = {0x01,0x54,0x33,0xe1,0x99,<br />

0x9b,0xa6,0x5d,<br />

0x80,0x6e,0x2d,0x2b,0xbd,0x6a,0x10,0x34,<br />

0x3c,0xab,0x8a,0x95,0xab,0x49,0xe4,0x2d,<br />

0xd7,0x00,0x6e,0x78,0x0a,0xfe,0xc1,0x3c,<br />

0xdf,0xea,0x30,0x67,0xdb,0x77,0x30,0x64,<br />

0xf3,0xc2,0x29,0x9d,0x8e,0xbc,0x10,0xfd,<br />

0x57,0xb4,0x14,0x0a,0x57,0x0c,0x25,0x6b,<br />

0x53,0xde,0xfc,0x56,0x23,0x12,0x51,0x09};<br />

unsigned char hash[nbKey][64];<br />

sha512(hash[0],eltSecret,64);<br />

for(int i=1;i

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!