Sécurité / Cryptologie Correction TD de cryptographie n o 1 Ce TD survole les différents concepts vus en cours 1 Se familiariser avec les ordres de grandeur 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 instructions 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? 1. t = facteur de travail puissance = 1200 2000 = 0, 6µs. 2. Nbre de clés possibles = 2 128. On considère les clés possible comme étant les entiers de 0 à 2 128 1, et la clé secrète est notée k. On a deux scenarios d attaque par force brute possible. On note n = 2 128. 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 à 1 n. L espérance du nombre d essais est donc : n 1 (i + 1) 1 n(n + 1) = n n 2n 2. i=0 Si on effectue un grand nombre de tirages aléatoires parmi 2 128, on a une loi binomiale. Chaque tirage a une probabilité de succès 1 n = 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 : E = i=1 i(1 p) i 1 p = pf (1 p), où f(x) = 1 1 x. 1 = p (1 (1 p)) 2 = 1 p. 1
3. On use et abuse des approximations 10 3 = 1000 2 1 0, 1jour = 2 16 s, 1an = 2 9 jour = 2 25 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 2 20 2 9 2 16 2 45 instructions, 2 11+20+9+16 2 56. Le nombre d instructions à effectuer pour trouver la clé est : 1200 2 127 2 138. Soit un temps de 2 138 56 2 81 années (ou, en base 10 : 2 (2 1 0) 8 2 10 24 ). Les un milliard ( 2 30 ) de PC d Internet permettent de gagner un facteur 2 3 0, ou 10 9. Soit quelque chose comme 2 10 15 années, soit un petit million de fois l âge de l univers. 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 W n 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 W 0, puis W n en fonction de W 0, 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? 1. On a d un part W n+1 = aw n et la loi de Moore nous indique que W n+18 = a 18 W n = 2W n. On en déduit donc que a = 18 2. 2. L hypothèse est que la machine a une fréquence de 1000 Mips (2 30 par seconde), donc en un mois (2 5 jours de 2 16 secondes, en gros), ça fait 2 51 instructions. En outre on a : W n = a n W 0. 3. Au bout de n mois, le nombre d instructions S n effectué est W 0 + + W n 1, soit : S n = W 0 (1 + a + + a n 1 ), = 2 51 an 1 a 1. Pour que S n dépasse le nombre d instructions à effectuer, qui est (2 127 2 11 = 2 138 ), il faut une estimation à la louche de a 1. À la calculatrice on obtient a 1 1 25. On vise donc : a n 1 2 138 51 (a 1), 287 25 28 2, 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 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 interpré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? 1. Non pas du tout. Il n est pas possible de faire sortir ce qu on décide à la fonction de hachage. Inversement, é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 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 authentification 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 r A et l envoie à B ; (ii) B tire une valeur aléatoire r B et calcule β = E K (r A, r B ). B envoie β à A ; (iii) A calcule D K (β). S il n y a pas eu d attaque, il retrouve r A : B s est authentifié. Il prend connaissance de r B. Il envoie r B à 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 r A à C. (session 2) : C envoie r A à A. Compléter, et expliquer d où provient le problème. 4. Suggérer une amélioration. 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 r A et l envoie à C qui se fait passer pour B ; 1bis C rejoue immédiatement la valeur r A en lançant en parallèle une autre session d authentification ; 2bis A tire une valeur aléatoire r A et calcule α = E K (r A, r A ). A envoie α à C ; 2 C renvoie alors α (qu il ne peut pas déchiffrer) à A ; 3 A calcule D K (α). Il retrouve r A : C s est authentifié. Il prend connaissance de r A. Il envoie r A à C ; 3bis C renvoie r A à 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
Exercice 5. Petit exposant commun Alice veut envoyer le même message m chiffré par RSA à trois personnes B 1, B 2 et B 3. Chacune de ces personnes B i utilise un module RSA N i différent mais tous utilisent le même exposant public e = 3. En supposant que leurs modules RSA sont premiers entre eux et que m 3 < N 1 N 2 N 3, dire comment Ève peut retrouver le message en observant les trois chiffrés qu Alice aura produit. On pose M = m e = m 3. M est alors défini par un système de trois relations de congruence correspondant au chiffrement pour chaque B i. On peut résoudre alors ce système par le théorème des restes chinois, on obtiendra M modulo N 1 N 2 N 3. Comme on a supposé M < N 1 N 2 N 3, 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/NZ si on ne connait pas ϕ(n). Remarque 2 : la condition m 3 < N 1 N 2 N 3 est trivialement vérifiée car pour pouvoir être chiffré, m doit être inférieur à chacun des N i. Exercice 6. Module commun Alice et Bob ont choisi le même module RSA N A = N B mais choisissent deux exposants publics différents et premiers entre eux (e A e B = 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. 1. Non! Comme N A = N B, on a aussi ϕ(n A ) = ϕ(n B ) hors comme e A est public, Bob peut facilement calculer d A = e 1 A (mod ϕ(n A)) 2. Comme e A e B = 1, il existe (et on peut calculer) u A et u B tel que : 1 = u A e A + u B e B. Il suffira alors de calculer c u A A c u B B (mod N) = m e AuA m e Bu B (mod N) = M (mod N). Cela demandera deux exponentiation modulaire (exponentiation rapide) ainsi qu une inversion modulaire (Euclide étendu) car l un des u i est négatif. 5