29.11.2014 Views

Cryptographie et reverse engineering en ... - Actes du SSTIC

Cryptographie et reverse engineering en ... - Actes du SSTIC

Cryptographie et reverse engineering en ... - Actes du SSTIC

SHOW MORE
SHOW LESS

Create successful ePaper yourself

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

12 <strong>Actes</strong> <strong>du</strong> symposium <strong>SSTIC</strong>04<br />

dont le résultat devrait être compris <strong>en</strong>tre 0x38000000 <strong>et</strong> 0x3fffffff, soit un espace<br />

de 2 2 7 valeurs, une ré<strong>du</strong>ction significative (bi<strong>en</strong> que pas forcém<strong>en</strong>t exacte) des<br />

graînes possibles.<br />

Travail sur les nombres premiers Bi<strong>en</strong> qu’ayant ré<strong>du</strong>it, de façon plausible,<br />

l’espace des valeurs à parcourir, la quantité d’opérations à effectuer reste<br />

conséqu<strong>en</strong>te, notamm<strong>en</strong>t à cause des opérations sur les grands nombres <strong>et</strong> les<br />

tests de primalités.<br />

Dans un premier temps, il est nécessaire de s’affranchir de ces fameux tests.<br />

L’écart moy<strong>en</strong> <strong>en</strong>tre le nombre généré P <strong>et</strong> ce fameux nombre premier immédiatem<strong>en</strong>t<br />

supérieur (appelons le P’) est grossièrem<strong>en</strong>t de l’ordre de log(P) [6], qui<br />

vaut <strong>en</strong>viron 355 dans le cas qui nous intéresse (2 5 12 < P < 2 5 13). Il est donc<br />

raisonnable de p<strong>en</strong>ser que la majeure partie des bits de poids fort de P <strong>et</strong> P’ est<br />

id<strong>en</strong>tique. Il <strong>en</strong> va bi<strong>en</strong> évidemm<strong>en</strong>t de même pour Q.<br />

En conséqu<strong>en</strong>ce, une très grande partie des bits de poids fort <strong>du</strong> pro<strong>du</strong>it<br />

P ∗ Q sera similaire à P ′ ∗ Q ′ (largem<strong>en</strong>t supérieure à 512 bits).<br />

Le nombre de couples possibles (P, Q) étant de l’ordre de 2 3 2 <strong>et</strong> normalem<strong>en</strong>t<br />

assez bi<strong>en</strong> répartis, il est raisonnable de p<strong>en</strong>ser qu’un comparaison <strong>du</strong> nombre N<br />

de ASProtect avec le nombre N que nous allons être am<strong>en</strong>és à calculer sur leurs<br />

64 bits de poids fort, ou plus, donnera des résultats satisfaisants.<br />

Les tests de primalités <strong>en</strong> moins, le facteur limitant des itérations devi<strong>en</strong>t la<br />

multiplication des nombres non premiers P <strong>et</strong> Q de 512 bits. Un détail va nous<br />

perm<strong>et</strong>tre d’y remédier. Ces fameux nombres se fait par blocs de 32 bits. En<br />

multipliant les 32 bits de poids fort de P à ceux de Q, on obti<strong>en</strong>dra un nombre<br />

de 64 bits dont les 32 bits de poids fort correspondront à ceux <strong>du</strong> pro<strong>du</strong>it compl<strong>et</strong><br />

P ∗ Q aux r<strong>et</strong><strong>en</strong>ues près.<br />

C<strong>et</strong>te comparaison sur 32 bits perm<strong>et</strong>tra de déterminer si de plus amples<br />

calculs sont nécessaires, ou si l’on peut passer directem<strong>en</strong>t à la graine suivante.<br />

On <strong>en</strong> dé<strong>du</strong>it le cont<strong>en</strong>u des itérations à effectuer lors <strong>du</strong> parcours de l’espace<br />

des graines :<br />

1. initialisation de la graine;<br />

2. génération <strong>du</strong> nombre P de 512 bits avec 2 bits de poids fort à 1, par 16<br />

appels successifs à la fonction de génération d’un nombre de 32 bits issue <strong>du</strong><br />

code de RSAVR.dll ;<br />

3. génération <strong>du</strong> nombre Q de 512 bits avec 2 bits de poids fort à 1, de façon<br />

similaire;<br />

4. si P <strong>et</strong> Q sont trop proches, r<strong>et</strong>our à l’étape 3 ;<br />

5. calcul <strong>du</strong> pro<strong>du</strong>it des <strong>en</strong>tiers de poids fort de P <strong>et</strong> Q;<br />

6. si les 32 bits de poids fort <strong>du</strong> pro<strong>du</strong>it ne correspond<strong>en</strong>t pas aux 32 bits de<br />

poids fort de N (aux r<strong>et</strong><strong>en</strong>ues près), on incrém<strong>en</strong>te la graine <strong>et</strong> on continue<br />

<strong>en</strong> 2.;<br />

7. s’il y a correspondance, on calcul le pro<strong>du</strong>it compl<strong>et</strong> de P <strong>et</strong> Q, <strong>et</strong> on compare<br />

davantage de bits ;

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

Saved successfully!

Ooh no, something went wrong!