Vous êtes sur la page 1sur 5

Sécurité / Cryptologie

Correction TD de cryptographie no 1
——

Ce TD survole les différents concepts vus en cours

1 Se familiariser avec les ordres de grandeur

x Exercice 1. La force brute

Le facteur de travail d’un algorithme est le nombre d’instructions élémentaires nécessaire à son
exécution. La puissance d’une machine est le nombre d’instructions qu’elle exécute par unité de
temps. Nous allons approximer la puissance d’un PC actuel à environ 2000 Mips (millions d’ins-
tructions par seconde).
Le facteur de travail d’un algorithme optimisé pour tester une clé de 128 bits de l’algorithme
AES est d’environ 1200 instructions élémentaires.
On dispose d’un couple clair/chiffré connu et on désire retrouver la clé utilisée par force brute,
c’est-à-dire en testant toutes les clés les unes après les autres. Une clé est constituée d’un mot de
128 bits. On suppose que toutes les clés sont équiprobables.
1. En combien de temps une machine de 2000 Mips teste-t-elle une clé ?
2. Combien y a-t-il de clés possibles ? Quel est le nombre moyen de clés à tester avant de trouver
la bonne ?
3. À quel temps moyen de calcul cela correspond-il si on suppose qu’un seul PC effectue la
recherche ? Si les 1 milliard de PC de l’Internet sont mobilisés à cette tâche ?

!
Correction :
facteur de travail 1200
1. t = puissance = 2000 = 0, 6µs.
2. Nbre de clés possibles = 2128 . On considère les clés possible comme étant les entiers de 0 à 2128 − 1, et
la clé secrète est notée k. On a deux scenarios d’attaque par force brute possible. On note n = 2128 .
— Si on essaie tous les entiers les uns après les autres. La probabilité, pour un entier i donné, d’avoir
k = i (et donc d’avoir exactement i+1 tirages à effectuer si on part de 0), est égale à n1 . L’espérance
du nombre d’essais est donc :
n−1
X 1 n(n + 1) n
(i + 1) = ≈ .
i=0
n 2n 2

— Si on effectue un grand nombre de tirages aléatoires parmi 2128 , on a une loi binomiale. Chaque
tirage a une probabilité de succès n1 = p. La probabilité qu’on trouve la clé au bout de i tirages
est :
(1 − p)i−1 p
. On a donc l’espérance du nombre de tirages nécessaires :

X
E= i(1 − p)i−1 p = pf 0 (1 − p), où f (x) = 1
1−x .
i=1
1 1
=p = .
(1 − (1 − p))2 p

1
3. On use et abuse des approximations 103 = 1000 ≈ 21 0, 1jour = 216 s, 1an = 29 jour = 225 secondes, etc.
On calcule d’abord le nombre d’instructions calculées en un an à la fréquence de 2000 Mips.

2000 Mips.années ≈ 2000 × 220 × 29 × 216 ≈ 245 instructions,


≈ 211+20+9+16 ≈ 256 .

Le nombre d’instructions à effectuer pour trouver la clé est : 1200 × 2127 ≈ 2138 . Soit un temps de
≈ 2138−56 ≈ 281 années (ou, en base 10 : 2 × (21 0)8 ≈ 2 × 1024 ).
Les un milliard (≈ 230 ) de PC d’Internet permettent de gagner un facteur 23 0, ou 109 . Soit quelque
chose comme 2 × 1015 années, soit un petit million de fois l’âge de l’univers.
!

x Exercice 2. La loi de Moore

Il est admis que, grâce aux progrès technologiques permanents, la puissance des machines double
en moyenne tous les 18 mois (loi empirique de Moore). On suppose maintenant que l’on change
les machines tous les mois en commençant avec une machine d’une puissance de 1000 Mips. Pour
tout entier n, on note Wn le nombre d’instructions exécutées par la machine du mois n.
1. Quel est le facteur d’amélioration a de la puissance des machines d’un mois à l’autre ?
2. Calculer W0 , puis Wn en fonction de W0 , de a et de n.
3. Quel est le temps moyen nécessaire pour trouver la clé de l’exercice précédent avec une machine
changée tous les mois ?

!
Correction :
1. On a d’un part Wn+1 √= aWn et la loi de Moore nous indique que Wn+18 = a18 · Wn = 2Wn . On en
déduit donc que a = 18 2.
2. L’hypothèse est que la machine a une fréquence de 1000 Mips (230 par seconde), donc en un mois (25
jours de 216 secondes, en gros), ça fait 251 instructions. En outre on a : Wn = an W0 .
3. Au bout de n mois, le nombre d’instructions Sn effectué est W0 + · · · + Wn−1 , soit :

Sn = W0 (1 + a + · · · + an−1 ),
an − 1
= 251 .
a−1
Pour que Sn dépasse le nombre d’instructions à effectuer, qui est (2127 × 211 = 2138 ), il faut une
1
estimation à la louche de a − 1. À la calculatrice on obtient a − 1 ≈ 25 . On vise donc :

an − 1 ≈ 2138−51 × (a − 1),
287
≈ ≈ 28 2,
25
82 log 2
n≈ ,
log a
≈ 82 × 18 ≈ 123 années.

Ce qui est très très loin du temps calculé à l’exercice précédent. Il faut penser à rajouter qu’on a donc
besoin de changer 1476 fois d’ordinateurs.
!

2
2 Fonctions de hachage

x Exercice 3. Le buzz free mobile

Aujourd’hui 6 janvier 2012, les geeks s’agitent pour savoir si les forfaits de la marque
Free Mobile seront lancés aujourd’hui, demain, à Pâques, où à la Saint-Glinglin. Pour
amuser la galerie, le site live.free.fr contient un dessin de fusée, avec les symboles :
efb7929e6a5b7dcc6ebb79aa3c45af13. Cette valeur est ce que renvoie la fonction de hachage md5
sur la donnée jesaispas. Des petits malins y voient aussi un second message caché en in-
terprétant la chaı̂ne efb7929e6a5b7dcc6ebb79aa3c45af13 dans le codage ascii. On y lirait NIEL
JOIN RACE >>START :

1. Est-il plausible de parvenir à fabriquer un message intelligible (si tant est que celui-ci le soit !)
dans le haché d’un message intelligible qu’on passe à une fonction de hachage ?

!
Correction :
1. Non pas du tout. Il n’est pas possible de faire sortir ce qu’on décide à la fonction de hachage. Inverse-
ment, étant donné une écriture, si cryptique soit-elle, d’un message caché qu’on voudrait mettre dans
la valeur de hachage, il est impossible de trouver un antécédent.
!

3 Clé secrète

 x Exercice 4. Authentification de type défi–réponse

Il existe des protocoles permettant d’authentifier une entité A auprès d’une entité B. Cela
présuppose donc que A sache effectivement que l’entité vérificatrice est bien B, et pas un attaquant
C qui se fait passer pour B. Or lors de la plupart des connexions, rien ne l’en assure. Il faudrait
alors que B s’authentifie également auprès de A. C’est ce qu’on appelle l’authentification mutuelle.
L’idée générale est alors de reprendre les protocoles qui existent pour l’authentification d’une
entité et de l’appliquer de manière symétrique pour authentifier B auprès de A. Nous allons voir
sur deux exemples qu’il est tout de même nécessaire de prévoir quelques ajustements.
1. Expliquer pourquoi il n’est pas possible de faire de l’authentification mutuelle par mot de
passe.
2. Suggérer alors une attaque qui permet de récupérer un mot de passe UNIX. Énumérez d’autres
situations dans lesquelles une interception de mot de passe est possible en l’absence d’authen-
tification du serveur.

3
On cherche maintenant à utiliser une authentification de type défi–réponse utilisant un système
à clé secrète. Considérons le protocole suivant qui utilise un chiffrement à clé secrète. A et B
partagent au préalable une clé secrète K.
(i) A tire une valeur aléatoire rA et l’envoie à B ;
(ii) B tire une valeur aléatoire rB et calcule β = EK (rA , rB ). B envoie β à A ;
(iii) A calcule DK (β). S’il n’y a pas eu d’attaque, il retrouve rA : B s’est authentifié.
Il prend connaissance de rB . Il envoie rB à B : A s’est authentifié.
3. Trouver une attaque de ce protocole par rejeu. On donne les éléments de départ de l’approche.
Le participant A est honnête, et l’attaquant C (malhonnête !) se fait passer pour B. C va,
parallèlement à la tentative d’authentification mutuelle émanant de A (vers B, pense-t-il)
appelée  session 1 , initier une session d’authentification vers A (en faisant croire qu’elle
émane de B), qu’on appellera  session 2 . Les messages de ces deux sessions s’entrelacent.
Les premières étapes sont (exactement dans cet ordre) :
— (session 1) : A envoie rA à C.
— (session 2) : C envoie rA à A.
Compléter, et expliquer d’où provient le problème.
4. Suggérer une amélioration.

!
Correction :
1. Il n’est pas possible de faire de l’authentification mutuelle par mot de passe tout simplement parce
qu’on ne peut donner un mot de passe qu’à une entité de confiance (on doit être sûr de qui elle est) ce
qui n’est évidemment pas le cas si on a besoin d’authentification mutuelle.-
2. Le faux écran de login sous toutes ses formes. . .
Il est possible si un serveur DNS est compromis qu’un nom renvoie à une adresse IP différente. Un
utilisateur non averti peut donc penser communiquer avec le véritable serveur.
3. Il suffit que l’attaquant C lance en parallèle une autre session d’authentification mutuelle vers A en
rejouant immédiatement les aléas envoyés et en entrelaçant correctement les envois de manière à faire
calculer à A les valeurs des réponses. Cela donne :
1 A tire une valeur aléatoire rA et l’envoie à
C qui se fait passer pour B ;
1bis C rejoue immédiatement la valeur rA en
lançant en parallèle une autre session d’au-
thentification ;
0
2bis A tire une valeur aléatoire rA et calcule α =
0
EK (rA , rA ). A envoie α à C ;
2 C renvoie alors α (qu’il ne peut pas
déchiffrer) à A ;
3 A calcule DK (α). Il retrouve rA : C s’est
0
authentifié. Il prend connaissance de rA . Il
0
envoie rA à C ;
0
3bis C renvoie rA à A.
4. Le problème provient du fait que les messages ne sont pas personnalisés et que les procédés sont
symétriques. Afin d’introduire de la dissymétrie dans un procédé à clé secrète, il faut utiliser des MAC.
On aménage alors le protocole précédent en concaténant les identités aux valeurs aléatoires tirées par
chaque partie avant de calculer le MAC.
!

4 Clé publique

4
x Exercice 5. Petit exposant commun

Alice veut envoyer le même message m chiffré par RSA à trois personnes B1 , B2 et B3 . Chacune
de ces personnes Bi utilise un module RSA Ni différent mais tous utilisent le même exposant public
e = 3. En supposant que leurs modules RSA sont premiers entre eux et que m3 < N1 · N2 · N3 , dire
comment Ève peut retrouver le message en observant les trois chiffrés qu’Alice aura produit.

!
Correction : On pose M = me = m3 . M est alors défini par un système de trois relations de congruence
correspondant au chiffrement pour chaque Bi . On peut résoudre alors ce système par le théorème des restes
chinois, on obtiendra M modulo N1 · N2 · N3 . Comme on a supposé M < N1 · N2 · N3 , on a obtenu M
exactement. On meut alors prendre la racine cubique de M dans Z.
Remarque 1 : On ne peut pas calculer facilement une racine cubique dans Z/N Z si on ne connait pas
ϕ(N ).
Remarque 2 : la condition m3 < N1 · N2 · N3 est trivialement vérifiée car pour pouvoir être chiffré, m doit
être inférieur à chacun des Ni .
!

x Exercice 6. Module commun

Alice et Bob ont choisi le même module RSA NA = NB mais choisissent deux exposants publics
différents et premiers entre eux (eA ∧ eB = 1).
1. Pourrez-vous déclarer votre flamme à Alice ou Bob sans que l’autre soit au courant en utilisant
sa clé publique RSA ?
2. On suppose maintenant qu’Alice et Bob s’envoie chacun le même message m. Pouvez vous
retrouver ce message ? Si oui, estimer le coût de votre calcul.

!
Correction :
1. Non ! Comme NA = NB , on a aussi ϕ(NA ) = ϕ(NB ) hors comme eA est public, Bob peut facilement
calculer dA = e−1
A (mod ϕ(NA ))
2. Comme eA ∧ eB = 1, il existe (et on peut calculer) uA et uB tel que :

1 = uA eA + uB eB .

Il suffira alors de calculer cuAA · cuBB (mod N ) = meA uA · meB uB (mod N ) = M (mod N ). Cela deman-
dera deux exponentiation modulaire (exponentiation rapide) ainsi qu’une inversion modulaire (Euclide
étendu) car l’un des ui est négatif.
!

Vous aimerez peut-être aussi