Attaque des anniversaires
Une attaque des anniversaires ou attaque par le paradoxe des anniversaires est un type dâattaque en cryptanalyse qui exploite des notions mathĂ©matiques Ă©quivalentes Ă celles quâutilise le paradoxe des anniversaires en thĂ©orie des probabilitĂ©s[1]. L'objet de l'attaque consiste Ă comparer entre-elles les mĂ©thodes de chiffrement de plusieurs sources jusqu'Ă ce que deux d'entre-elles correspondent. Cette attaque peut ĂȘtre utilisĂ©e pour modifier les communications entre deux personnes ou plus. Lâattaque est possible grĂące Ă la probabilitĂ© plus Ă©levĂ©e de collisions avec des tentatives dâattaques alĂ©atoires et un niveau fixe de permutations, comme dans le principe des tiroirs.
Comprendre le problĂšme
Comme exemple du paradoxe des anniversaires, il est possible de considérer le scénario suivant.
« Un enseignant ayant une classe de 30 Ă©lĂšves demande Ă ses Ă©lĂšves de lui donner leurs dates dâanniversaires, afin de dĂ©terminer s'il y a deux Ă©lĂšves qui fĂȘtent leurs anniversaires le mĂȘme jour â cela correspond Ă la collision de hash. »
Intuitivement, la probabilitĂ© que cela arrive paraĂźt faible. Si lâenseignant prenait un jour spĂ©cifique, par exemple le , alors la probabilitĂ© quâau moins un Ă©lĂšve soit nĂ© ce jour spĂ©cifique est , soit environ 7,9 %[note 1].
Par contre, la probabilitĂ© quâau moins un Ă©lĂšve ait la mĂȘme date dâanniversaire que nâimporte lequel des autres Ă©lĂšves est environ Ă©gale Ă 70 %, soit : avec [2].
En mathématiques
Soit une fonction le but de lâattaque est de trouver deux antĂ©cĂ©dents diffĂ©rents tels que Une telle paire est appelĂ©e une collision. La mĂ©thode utilisĂ©e pour trouver une collision est simplement de comparer lâimage de pour diffĂ©rents antĂ©cĂ©dents qui peuvent ĂȘtre choisis de façon alĂ©atoire ou pseudo-alĂ©atoire jusqu'Ă ce que le mĂȘme rĂ©sultat soit trouvĂ© plus dâune fois. GrĂące au paradoxe des anniversaires, cette mĂ©thode peut ĂȘtre trĂšs efficace. Plus prĂ©cisĂ©ment, si une fonction dĂ©finie sur permet dâobtenir des images diffĂ©rentes avec la mĂȘme probabilitĂ© et que est un ensemble suffisamment grand, alors on peut espĂ©rer obtenir une paire d'antĂ©cĂ©dents diffĂ©rents et pour lesquelles aprĂšs avoir calculĂ© lâimage de la fonction pour seulement diffĂ©rents antĂ©cĂ©dents en moyenne.
ConsidĂ©rons lâexpĂ©rience suivante. Dans un ensemble de cardinal on choisit valeurs au hasard en autorisant les rĂ©pĂ©titions. Soit la probabilitĂ© que durant cette expĂ©rience au moins une valeur soit choisie plus dâune fois. Cette probabilitĂ© est Ă peu prĂšs Ă©gale Ă Soit le plus petit nombre de valeurs quâon doit choisir, alors la probabilitĂ© de trouver une collision est au moins En inversant cette expression, on trouve lâapproximation suivante et en attribuant une valeur Ă©gale Ă 0,5 Ă la probabilitĂ© de collision, on trouve Soit le nombre prĂ©vu de valeurs Ă choisir avant de trouver la premiĂšre collision. Ce nombre est environ Ă©gal Ă
Par exemple, si un hash de 64 bits est utilisĂ©, il y a Ă peu prĂšs 1,8 ĂâŻ1019 diffĂ©rentes images. Si elles sont aussi probables Ă obtenir, ce qui est le meilleur des cas pour lâattaquant, alors il faudra « seulement » 5,1 ĂâŻ109, soit environ 5 milliards dâessais pour gĂ©nĂ©rer une collision en utilisant la force brute. Cette valeur est appelĂ©e limite de lâanniversaire[note 2]) et pour en binaire, cette valeur peut ĂȘtre calculĂ©e comme [3].
Nombre de bits du hash |
Images possibles (H) |
Probabilité de collision désirée (p) | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
10â18 | 10â15 | 10â12 | 10â9 | 10â6 | 0,1 % | 1 % | 25 % | 50 % | 75 % | ||
16 | 65 536 | <2 | <2 | <2 | <2 | <2 | 11 | 36 | 190 | 300 | 430 |
32 | 4,3 ĂâŻ109 | <2 | <2 | <2 | 3 | 93 | 2 900 | 9 300 | 50 000 | 77 000 | 110 000 |
64 | 1,8 ĂâŻ1019 | 6 | 190 | 6 100 | 190 000 | 6 100 000 | 1,9 ĂâŻ108 | 6,1 ĂâŻ108 | 3,3 ĂâŻ109 | 5,1 ĂâŻ109 | 7,2 ĂâŻ109 |
128 | 3,4 ĂâŻ1038 | 2,6 ĂâŻ1010 | 8,2 ĂâŻ1011 | 2,6 ĂâŻ1013 | 8,2 ĂâŻ1014 | 2,6 ĂâŻ1016 | 8,3 ĂâŻ1017 | 2,6 ĂâŻ1018 | 1,4 ĂâŻ1019 | 2,2 ĂâŻ1019 | 3,1 ĂâŻ1019 |
256 | 1,2 ĂâŻ1077 | 4,8 ĂâŻ1029 | 1,5 ĂâŻ1031 | 4,8 ĂâŻ1032 | 1,5 ĂâŻ1034 | 4,8 ĂâŻ1035 | 1,5 ĂâŻ1037 | 4,8 ĂâŻ1037 | 2,6 ĂâŻ1038 | 4,0 ĂâŻ1038 | 5,7 ĂâŻ1038 |
384 | 3,9 ĂâŻ10115 | 8,9 ĂâŻ1048 | 2,8 ĂâŻ1050 | 8,9 ĂâŻ1051 | 2,8 ĂâŻ1053 | 8,9 ĂâŻ1054 | 2,8 ĂâŻ1056 | 8,9 ĂâŻ1056 | 4,8 ĂâŻ1057 | 7,4 ĂâŻ1057 | 1,0 ĂâŻ1058 |
512 | 1,3 ĂâŻ10154 | 1,6 ĂâŻ1068 | 5,2 ĂâŻ1069 | 1,6 ĂâŻ1071 | 5,2 ĂâŻ1072 | 1,6 ĂâŻ1074 | 5,2 ĂâŻ1075 | 1,6 ĂâŻ1076 | 8,8 ĂâŻ1076 | 1,4 ĂâŻ1077 | 1,9 ĂâŻ1077 |
Il est facile de constater que si les images de la fonction sont inĂ©galement rĂ©parties, alors une collision peut ĂȘtre trouvĂ©e encore plus vite. La notion « de rĂ©partition des images » dâune fonction de hachage influe directement sur la rĂ©sistance de la fonction Ă des attaques des anniversaires. Cette faiblesse rend vulnĂ©rables des hashs populaires tels que MD et SHA.
La sous-expression dans lâĂ©quation pour nâest pas calculĂ©e avec prĂ©cision pour les petites valeurs de lorsquâelle est directement traduite dans un langage de programmation par log(1/(1-p))â
Ă cause de la perte de signification (en). Quand log1pâ
est disponible par exemple, lâexpression Ă©quivalente -log1p(-p)â
devrait ĂȘtre utilisĂ©e Ă la place. Si ce nâest pas le cas, la premiĂšre colonne du tableau est remplie de zĂ©ros, et de nombreux Ă©lĂ©ments dans la seconde colonne nâont pas de chiffres significatifs corrects.
Exemple de code source
Voici une fonction en Python qui peut générer le tableau ci-dessus avec plus de précision :
def birthday(probability_exponent, bits):
from math import log1p, sqrt
probability = 10. ** probability_exponent
outputs = 2. ** bits
return sqrt(2. * outputs * -log1p(-probability))
Si le code est sauvegardĂ© dans un fichier nommĂ© anniversaire.pyâ
, il peut ĂȘtre lancĂ© dans un terminal comme dans lâexemple suivant :
$ python -i anniversaire.py
>>> birthday(-15, 128)
824963474247.1193
>>> birthday(-6, 32)
92.68192319417072
Approximation rapide
Une bonne rĂšgle gĂ©nĂ©rale qui peut ĂȘtre utilisĂ©e pour calculer mentalement est la relation qui peut aussi sâĂ©crire . Elle fonctionne bien pour les probabilitĂ©s infĂ©rieures ou Ă©gales Ă 0,5.
Ce schĂ©ma d'approximation est particuliĂšrement facile Ă utiliser lorsque lâon travaille avec des exposants. Par exemple, supposons que lâon gĂ©nĂšre des hashs de 32 bits () et que lâon veuille que la probabilitĂ© de collision soit au maximum de un sur un million (). Pour calculer le nombre de hash quâil est possible dâavoir au maximum pour ce risque de collision, on fait ce qui est proche de la rĂ©ponse exacte qui est 93.
Vulnérabilité pour les signatures numériques
Les signatures numĂ©riques peuvent ĂȘtre vulnĂ©rables Ă une attaque des anniversaires. Un message est normalement signĂ© par le premier calcul , oĂč est une fonction de hachage cryptographique et ensuite utiliser une clĂ© secrĂšte pour signer . Supposons que Mallory veuille escroquer Bob en signant un contrat frauduleux. Mallory prĂ©pare un contrat juste â â et un autre, frauduleux â . Ensuite, elle trouve un certain nombre de formulations oĂč change mais pas le sens du contrat, par exemple une virgule inutile Ă insĂ©rer, une ligne vide, un caractĂšre d'espace Ă la place de deux, remplacer des mots par des synonymes, etc. En combinant ces changements, elle peut crĂ©er un grand nombre de versions diffĂ©rentes de et du nombre qui certifie la totalitĂ© du contrat.
De la mĂȘme maniĂšre, Mallory crĂ©e aussi un grand nombre de versions diffĂ©rentes du contrat frauduleux . Ensuite, elle applique la fonction de hash sur toutes ces diffĂ©rentes versions jusquâĂ trouver deux contrats qui aient la mĂȘme valeur de hash, . Elle montre la version du contrat Ă©quitable Ă Bob pour quâil le signe. Une fois le contrat signĂ©, Mallory prend la signature et y attache le contrat frauduleux. La signature est la « preuve » que Bob a signĂ© le contrat frauduleux.
Les probabilitĂ©s diffĂšrent lĂ©gĂšrement du problĂšme d'anniversaires original, comme Mallory ne gagne rien en trouvant deux contrats justes ou deux contrats frauduleux avec le mĂȘme hachage. La stratĂ©gie de Mallory est de gĂ©nĂ©rer des paires dâun contrat juste et dâun contrat frauduleux. Les Ă©quations de problĂšmes dâanniversaires appliquent quand est le nombre de paires. Le nombre de tables de hachage que Mallory gĂ©nĂšre rĂ©ellement est .
Pour Ă©viter cette attaque, la longueur de ce que gĂ©nĂšre la fonction de hachage utilisĂ©e pour un schĂ©ma de signature doit ĂȘtre choisie de maniĂšre Ă ĂȘtre assez grande pour que lâattaque des anniversaires devienne mathĂ©matiquement impossible, soit environ deux fois plus de bits que nĂ©cessaire pour empĂȘcher une attaque par force brute ordinaire.
Lâalgorithme rho de Pollard pour les logarithmes est un exemple utilisant une attaque des anniversaires pour le calcul de logarithmes discrets.
Notes et références
Notes
- Pour simplifier on ignore les années bissextiles.
- Voir majorant ou minorant.
Références
- Michel Barrier, « Attaque des anniversaires : Cyber attaque peu connu mais redoutable », sur Demonblack, (consulté le )
- (en) « Math Forum: Ask Dr. Math FAQ : The Birthday Problem », sur mathforum.org (consulté le ).
- (en) Jacques Patarin et Audrey Montreuil, « Benes and Butterfly schemes revisited » [PDF] [ps], sur eprint.iarc.org, Université de Versailles, (consulté le ).
- (en) « Empirical Measurements of Disk Failure Rates and Error Rates », sur https://arxiv.org (consulté le ).
Annexes
Bibliographie
- [Bellare et Kohno 2004] (en) Mihir Bellare et Tadayoshi Kohno, « Hash Function Balance and Its Impact on Birthday Attacks », Advances in Cryptology â EUROCRYPT 2004, lecture Notes in Computer Science, vol. 3027,â , p. 401â418 (ISBN 978-3-540-21935-4, ISSN 0302-9743, DOI 10.1007/978-3-540-24676-3_24, lire en ligne [PDF]).
- [Schneier 1996] (en) Bruce Schneier, Applied Cryptography : protocols, algorithms, and source code in C , New York, Wiley, , 2e Ă©d., 758 p.
Articles connexes
- Attaque de collisions
- Attaque Meet-in-the-middle (en)
Liens externes
- (en) « Birthday Attack », FAQ de X5 Networks Crypto.