Arrêtez d'utiliser SHA-1 ! Des chercheurs affirment être parvenus à casser l'algorithme de hachage
Et recommandent des versions plus sécurisées
Le 2017-02-24 14:59:04, par Stéphane le calme, Chroniqueur Actualités
En 1995, SHA-1 (Secure Hash Algorithm), l’algorithme de hachage cryptographique conçu par la NSA, a été publié par le gouvernement des États-Unis comme standard fédéral de traitement de l'information. SHA-1 venait remplacer SHA-0 qui a été rapidement mis de côté par le NIST (Institut national des normes et de la technologie, une agence du département du Commerce des États-Unis) pour des raisons de sécurité insuffisante.
Néanmoins, avec les années, SHA-1 n’a plus été considéré comme sûr face à des adversaires disposant de moyens importants, c’est ce qu’ont suggéré des cryptanalystes qui se sont penchés sur des attaques théoriques. Aussi, l’institut américain des standards avait déclaré SHA-1 obsolète en 2011. Il n’en a pas fallu beaucoup plus aux principaux navigateurs pour se décider à déprécier cet algorithme : Microsoft, Google et Mozilla ont annoncé la fin du support de SHA-1 sur leurs produits respectifs.
De la théorie à la pratique
En 2012, des cryptographes ont estimé qu'une attaque pratique contre SHA-1 pourrait coûter 700 000 dollars en utilisant les services de cloud computing en 2015 et 173 000 dollars en 2018. Cependant, en 2015, un groupe de chercheurs de Centrum Wiskunde et Informatica (CWI) aux Pays-Bas, Nanyang Technological University (NTU) à Singapour et INRIA en France ont conçu une nouvelle façon de briser le SHA-1 qui, selon eux, réduirait considérablement le coût des attaques.
Depuis lors, les chercheurs de l'ICA ont travaillé avec Google, en utilisant l'infrastructure cloud de l'entreprise ainsi que son expertise technique pour réaliser une collision pratique.
« Aujourd'hui, plus de 20 ans après que SHA-1 a été présenté pour la première fois, nous annonçons la première technique pratique pour générer une collision. Cela représente le point culminant de deux années de recherche issues d'une collaboration entre le CWI Institute d'Amsterdam et Google », a annoncé Google sur un billet.
L’objectif de cette démarche était de souligner à quel point il est impérieux d’abandonner cet algorithme, dans un contexte où les machines sont de plus en plus puissantes, et de passer à des algorithmes plus sécurisés comme SHA-256 et SHA-3. Aussi, les chercheurs ont réalisé la toute première collision cryptographique de hachage sur SHA-1.
La collision cryptographique de hachage, qu’est-ce que c’est ?
L’une des propriétés des fonctions cryptographiques est le fait qu’elles sont unidirectionnelles ; en clair, il n’est pas possible de retrouver la chaîne originelle à partir du hash. Une seconde est que, théoriquement, deux chaînes de caractères différentes donneront systématiquement deux hash différents. C’est cette théorie que les chercheurs sont parvenus à démentir.
Google explique qu’une collision se produit lorsque deux morceaux de données distinctes (un document, un binaire ou un certificat de site Web) figurent dans la même signature (voir le schéma ci-dessous). Comme expliqué plus haut, les collisions ne devraient jamais se produire pour des fonctions de hachage sécurisées. Cependant, si l'algorithme de hachage a quelques défauts, comme SHA-1, un attaquant bien équipé peut créer une collision. L'attaquant pourrait alors utiliser cette collision pour tromper les systèmes qui s'appuient sur les hachages et leur faire accepter un fichier malveillant à la place de son équivalent bénin. Par exemple, deux contrats d'assurance avec des termes radicalement différents. Les attaquants pourraient également créer une mise à jour logicielle frauduleuse, qui serait acceptée et exécutée par un mécanisme de mise à jour qui valide les mises à jour en vérifiant les signatures numériques.
Pour leur attaque, les chercheurs ont produit deux fichiers PDF différents avec la même signature SHA-1.« En 2013, Marc Stevens a publié un article qui décrit une approche théorique pour créer une collision SHA-1. Nous avons commencé par créer un préfixe PDF spécifiquement conçu pour nous permettre de générer deux documents avec des contenus visuels distincts arbitraires, mais qui aurait un même hachage SHA-1 », ont expliqué les chercheurs.
Cependant, ils ont dû faire face à un défi de taille : la puissance de calcul. Google s’est appuyé sur son expertise technique et son infrastructure cloud pour lancer une collision « qui est l’un des plus gros calculs jamais faits ». Voici quelques chiffres que Google a partagés : au total, neuf quintillions (9 223 372 036 854 775 808) de calculs SHA-1, 6 500 ans de calcul CPU pour compléter la première phase de l'attaque et 110 ans de calcul GPU pour compléter la deuxième phase.
Source : blog Google
Voir aussi :
Google annonce la fin du support de SHA-1 dans Chrome, la firme accélère la mort de l'algorithme de hachage cryptographique
SHA-1 : Microsoft suit l'exemple de Mozilla et opte pour une fin de support en juin 2016, au lieu de janvier 2017 sur son navigateur
Néanmoins, avec les années, SHA-1 n’a plus été considéré comme sûr face à des adversaires disposant de moyens importants, c’est ce qu’ont suggéré des cryptanalystes qui se sont penchés sur des attaques théoriques. Aussi, l’institut américain des standards avait déclaré SHA-1 obsolète en 2011. Il n’en a pas fallu beaucoup plus aux principaux navigateurs pour se décider à déprécier cet algorithme : Microsoft, Google et Mozilla ont annoncé la fin du support de SHA-1 sur leurs produits respectifs.
De la théorie à la pratique
En 2012, des cryptographes ont estimé qu'une attaque pratique contre SHA-1 pourrait coûter 700 000 dollars en utilisant les services de cloud computing en 2015 et 173 000 dollars en 2018. Cependant, en 2015, un groupe de chercheurs de Centrum Wiskunde et Informatica (CWI) aux Pays-Bas, Nanyang Technological University (NTU) à Singapour et INRIA en France ont conçu une nouvelle façon de briser le SHA-1 qui, selon eux, réduirait considérablement le coût des attaques.
Depuis lors, les chercheurs de l'ICA ont travaillé avec Google, en utilisant l'infrastructure cloud de l'entreprise ainsi que son expertise technique pour réaliser une collision pratique.
« Aujourd'hui, plus de 20 ans après que SHA-1 a été présenté pour la première fois, nous annonçons la première technique pratique pour générer une collision. Cela représente le point culminant de deux années de recherche issues d'une collaboration entre le CWI Institute d'Amsterdam et Google », a annoncé Google sur un billet.
L’objectif de cette démarche était de souligner à quel point il est impérieux d’abandonner cet algorithme, dans un contexte où les machines sont de plus en plus puissantes, et de passer à des algorithmes plus sécurisés comme SHA-256 et SHA-3. Aussi, les chercheurs ont réalisé la toute première collision cryptographique de hachage sur SHA-1.
La collision cryptographique de hachage, qu’est-ce que c’est ?
L’une des propriétés des fonctions cryptographiques est le fait qu’elles sont unidirectionnelles ; en clair, il n’est pas possible de retrouver la chaîne originelle à partir du hash. Une seconde est que, théoriquement, deux chaînes de caractères différentes donneront systématiquement deux hash différents. C’est cette théorie que les chercheurs sont parvenus à démentir.
Google explique qu’une collision se produit lorsque deux morceaux de données distinctes (un document, un binaire ou un certificat de site Web) figurent dans la même signature (voir le schéma ci-dessous). Comme expliqué plus haut, les collisions ne devraient jamais se produire pour des fonctions de hachage sécurisées. Cependant, si l'algorithme de hachage a quelques défauts, comme SHA-1, un attaquant bien équipé peut créer une collision. L'attaquant pourrait alors utiliser cette collision pour tromper les systèmes qui s'appuient sur les hachages et leur faire accepter un fichier malveillant à la place de son équivalent bénin. Par exemple, deux contrats d'assurance avec des termes radicalement différents. Les attaquants pourraient également créer une mise à jour logicielle frauduleuse, qui serait acceptée et exécutée par un mécanisme de mise à jour qui valide les mises à jour en vérifiant les signatures numériques.
Pour leur attaque, les chercheurs ont produit deux fichiers PDF différents avec la même signature SHA-1.« En 2013, Marc Stevens a publié un article qui décrit une approche théorique pour créer une collision SHA-1. Nous avons commencé par créer un préfixe PDF spécifiquement conçu pour nous permettre de générer deux documents avec des contenus visuels distincts arbitraires, mais qui aurait un même hachage SHA-1 », ont expliqué les chercheurs.
Cependant, ils ont dû faire face à un défi de taille : la puissance de calcul. Google s’est appuyé sur son expertise technique et son infrastructure cloud pour lancer une collision « qui est l’un des plus gros calculs jamais faits ». Voici quelques chiffres que Google a partagés : au total, neuf quintillions (9 223 372 036 854 775 808) de calculs SHA-1, 6 500 ans de calcul CPU pour compléter la première phase de l'attaque et 110 ans de calcul GPU pour compléter la deuxième phase.
Source : blog Google
Voir aussi :
-
dourouc05Responsable Qt & LivresCela fait un certain nombre d'années qu'on recommande de se passer de SHA-1 et d'utiliser quelque chose de plus sérieux, au moins SHA-2 (la première attaque théorique contre SHA-1 date de 2005, où on avait estimé que la fonction devrait être rapidement remplacée). Pour le moment, on ne connaît pas vraiment de faiblesse pour SHA-2 ou 3 : par défaut, tout le monde devrait les utiliser… En tout cas pour des applications cryptographiques.le 24/02/2017 à 16:49
-
dourouc05Responsable Qt & LivresBLAKE2 est un finaliste pour SHA-3 : sa sécurité est très proche de Keccak (qui a été choisi comme SHA-3 au terme de la compétition), mais il est plus rapide à calculer que MD5 (https://leastauthority.com/blog/BLAK...-than-MD5.html). Quelle raison reste-t-il d'utiliser MD5, SHA-1 ?le 25/02/2017 à 14:18
-
dourouc05Responsable Qt & LivresPour reprendre ton parallélisme avec les fonctions modulo : le hachage n'a pas l'objectif de chiffrer quoi que ce soit, juste de donner une empreinte de taille réduite. Un SHA-1 te donne une empreinte de 20 octets : impossible de retrouver le fichier d'origine de façon unique avec seulement ces 20 octets — tout comme il est impossible d'inverser ta fonction modulo pour retrouver 1 000 000 ou 803 depuis 27.
Justement, ce n'est pas qu'un cas particulier : on a maintenant une technique qui permet de créer des collisions comme et quand on veut, avec des moyens "limités" (en tout cas, rien qui soit hors de portée d'une agence gouvernementale).
On cherche surtout à ce que créer une collision soit extrêmement difficile pour un attaquant. On peut survivre sans une fonction parfaite en sécurité.le 26/02/2017 à 16:19 -
BlueScreenJunkyMembre habituéJe ne suis pas sûr que ce soit vrai, du moins pas si on veut avoir un hash dont la longueur peut être inférieur à celle de la chaine originelle que la chaine originelle.
Par exemple si on utilise des hashes Bcrypt de 184 bits pour hasher des documents qui peuvent faire plusieurs ko, il y aura théoriquement toujours un risque de collision... simplement plus l’algorithme de hashage est gourmand en calcul plus il faudra de temps pour réussir à trouver une collision.
De ce que je comprends les gars de chez Google n'ont pas démontré qu'il y avait un risque de collision avec SHA-1 (on le savait déjà), mais qu'il était techniquement possible de trouver une de ces collision de son vivant avec du matériel existant.le 24/02/2017 à 18:58 -
BeanuxMembre éclairéJe partage l'avis de BlueScreenJunky, avec une fonction de hachage, il est impossible de ne pas avoir de collision.
Quelque soit la fonction de hachage, si la taille du hash est plus petit que ce que tu cherches à hacher, il y a obligatoirement un risque de collision.
Pour causer plus math, l'ensemble des résultats de la fonction de hachage (qui est un ensemble fini, vu qu'il a une taille fixe) est un sous ensemble des choses que tu peux hacher (et cet ensemble est infini) parce que tu peux hacher les résultats de ta fonction de hachage. mal dit et un dessin serait plus parlant
Après, comme il (BlueScreenJunky) le dit, c'est trouver la collision qui elle est plus dur. Mais c'est ça qu'ils ont réussi à améliorer.
Après le coût de calcul intervient. Selon les support (par exemple les cartes à puces), ce n'est pas forcément possible.
Après dans ce genre de cas (puces crypto etc), c'est surtout un challenge qui est a relever pour permettre l'authentification, et on peut se contenter d'une fonction crypto "moins sur" mais qu'on sait incassable en un temps donné.le 25/02/2017 à 0:26 -
dourouc05Responsable Qt & LivresLe principe de ces fonctions de hachage, c'est que deux entrées différentes, même légèrement, donneront deux sorties (empreintes) différentes (voire franchement différentes). Il n'y pas vraiment de notion de cycle. Les chercheurs ont trouvé un moyen de produire une collision, c'est-à-dire trouver deux fichiers qui ont la même empreinte par SHA-1.
Le problème, ici, c'est que SVN détermine si deux fichiers sont différents par un test sur le résultat d'une fonction de hachage : dans l'immensément grande majorité des cas, c'est suffisant ; grâce à cette collision, cette technique a été mise à mal, d'où le problème.le 25/02/2017 à 22:11 -
IradrilleExpert confirméCycle je sais pas (j'imagine qu'ils essaient d'éviter); mais plusieurs fichiers peuvent avoir le même hash, oui.
Un fichier est un grand nombre (exemple, un fichier d'1Mo => 2^8096 => ~10^2730); un hash est un "petit" nombre (160 bits pour SHA-1 => ~10^53).
Il n'y a "que" 10^53 hashs différents, et une infinité de fichiers possible en entrée => plusieurs (une infinité) fichiers auront le même hash.
Quand 2 fichiers différents ont le même hash, c'est une collision. Les fonctions de hashages sont faites pour que les collisions soient rares et non prévisibles (preuve de la rareté, le bug de SVN vient seulement d'être trouvé).
Le hashage est utilisé pour vérifier qu'un fichier (ou n'importe quel autre contenu) n'ai pas été altéré (sinon son hash change); si on est capable de créer des collisions, le hashage ne sert plus à rien puisqu'on peut altérer un fichier sans modifier son hash.le 25/02/2017 à 23:25 -
BeanuxMembre éclairéJe pense qu'a la base on est partie sur les hash de fichiers, alors que de toute façon, pour les fichiers la collision existe obligatoirement.
@Artemus24, voit la fonction de hashage comme un moyen d'identification de quelque chose, mot de passe fichier ou autre. Là, des chercheurs ont montré qu'on peut trouver un autre fichier/mot de passe qui aurait le même hash/"identifiant".
Pour expliquer plus dans le détail, par exemple, les sites web stockent les mot de passe sous forme de hash (pour simplifier). Si on arrive à récupérer la base de données, tu récupères les hash, et donc tu peux construire un autre mot de passe basé la dessus.
Il y a le même principe avec les torrent. les fichiers sont identifié avec un hash.
Quand tu télécharges un fichier par ce biais, ton client compare le hash et indique si c’est bien le bon fichier. Le fait que deux fichier puissent avoir le même hash, signifie que tu pourrait envoyer un fichier malicieux en lui ayant donné le même hash, via des torrent qui sont sains (exemple, les distributions linux entre autre).
@dourouc05 a priori aucune raison. Même dans le cas de vérifier les téléchargement de fichiers. Mais les habitudes ont la vie dure.le 26/02/2017 à 1:22 -
BeanuxMembre éclairé@Artemus24
Donc pour reprendre, le hashage, c’est une fonction. Pas un programme informatique ou autre. Comme la fonction addition (7+8) qui fait qu' l'on prend le premier nombre que l'on ajoute au deuxième, ce qui nous donne 15, ce sont des mathématiques. Il n'y a aucun bug. C'est très important de comprendre cela.
Il peut y avoir des bugs quand on traduit la fonction en un programme. Mais avant ça la fonction de hashage, elle existe en dehors de toute conception informatique, seulement mathématique.
Autre chose juste pour éviter des confusions, si l'on parle de fonction de hachage, il vaut mieux parler de d'encrypter, ou d'utiliser la racine crypter, plutôt que chiffrer. Parce que dans sa définition le chiffrement est réversible, celui du d’encrypter ne l'est pas.
Pour la comparaison avec le modulo, elle est peu approprié. Parce qu'il n'y a pas de relation d'ordre avec les fonction de hachage.
Cette notion de cycle c'est ce qui est appelé collision, c’est à dire que pour 2 hash donnés, il y a un même résultat.
Oui cela existe, oui toutes les fonctions de hachage ont des collisions (ce que vous avez nommé "cycles", mais ce qui est important c'est de ne pas arriver à partir du hash à trouver un résultat potentiel qui a mené à ce hash.
Exemple, si je donne le hash "abec64d508a87095ac33f69e1fa40f591b5c5c14", il est a peu près impossible de trouver que "ceci est un hash" a été sa source. Et il est a peu près impossible de trouver un quelconque texte/fichier qui pourrait générer ce hash. Enfin a peu près sauf depuis la publication qui est à l'origine de cet article.
Ici, le modulo est un bon exemple, si on me donne x mod 97 = 3, trouver un x est simple, mais trouver le x que moi j'ai utilisé pour générer ce 3, n'est pas possible. J'ai utilisé 488, mais cela aurait pu être 353374, ou tout aussi bien 3. Sauf que le modulo génère des collision bien trop élevées.
L'important n'est pas la probabilité de collision. Qui elle est complétement utopique. Elle est et sera toujours présente. on prend un entrée un nombre infini de possibilité pour le réduire à un nombre fini; Il y aura toujours de collisions, c'est inévitable.
Et ce n’est pas l’important, l'important est qu'il soit impossible ou extrêmement difficile a partir du hash de retrouver sa source (cf exemple au dessus dans mon message), et que les probabilité de collision soit tout de même assez basses pour permettre une sécurité suffisante.
Justement le papier des chercheur dit qu'a partir du hash, il est possible trouver une phrase en claire qui fournira ce hash. Peut importe si cette phrase en clair a réellement été celle qui a servit à générer le hash. Le problème et qu'a partir du hash, il soit possible de trouver quelque chose qui puisse générer ce hash.
En pratique ça veux dire que si j'ai le hash de votre mot de passe de developpez.net (si ils utilisent ce système, et si ils n'ont pas ajouté d'autres systèmes de sécurité), je peux avoir accès a votre compte sans connaitre votre mot de passe.
Et ça c’est un problème. la possibilité de faire passer pour autre chose quelque chose qui ne l'est pas, en ayant que le hash à sa disposition.le 27/02/2017 à 3:14 -
TiranusKBXExpert confirméToutes les serrures quelles soient de bonne ou mauvaise qualité ne survivent à la perceuse et le foret métal, plus tu à de serrures plus c'est long à ouvrirle 28/02/2017 à 8:00