Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

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 , par Stéphane le calme

24PARTAGES

6  0 
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

Une erreur dans cette actualité ? Signalez-le nous !

Avatar de dourouc05
Responsable Qt & Livres https://www.developpez.com
Le 24/02/2017 à 16:49
Cela 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.
3  0 
Avatar de dourouc05
Responsable Qt & Livres https://www.developpez.com
Le 25/02/2017 à 14:18
Citation Envoyé par Beanux Voir le message
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é.
BLAKE2 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 ?
3  0 
Avatar de dourouc05
Responsable Qt & Livres https://www.developpez.com
Le 26/02/2017 à 16:19
Citation Envoyé par Artemus24 Voir le message
Je croyais que le hashage avait pour but de chiffrer un fichier, et c'est tout. Et que vient faire la comparaison entre ces deux fichiers ???
Quel est le but justement de cette comparaison et pourquoi le fait qu'ils produisent la même emprunte provoque un bug ?
Pour 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.

Citation Envoyé par Artemus24 Voir le message
Oui, mais un cas particulier ne peut pas remettre en cause le fonctionnement de ce sha-1.
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).

Citation Envoyé par Artemus24 Voir le message
Mais ne croyez-vous pas que le principe du hashage, soit complètement utopique ?
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é.
3  0 
Avatar de BlueScreenJunky
Membre régulier https://www.developpez.com
Le 24/02/2017 à 18:58
Citation Envoyé par Stéphane le calme Voir le message

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.
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.
2  0 
Avatar de Beanux
Membre éclairé https://www.developpez.com
Le 25/02/2017 à 0:26
Citation Envoyé par Stéphane le calme Voir le message

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.
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.

Citation Envoyé par dourouc05 Voir le message
par défaut, tout le monde devrait les utiliser… En tout cas pour des applications cryptographiques.
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é.
2  0 
Avatar de TiranusKBX
Expert confirmé https://www.developpez.com
Le 28/02/2017 à 8:00
Citation Envoyé par Artemus24 Voir le message
[...]Ok, je comprends mieux ! Mais je ne voie toujours pas l'intérêt de cette multiplicité des hash.
Par analogie, auriez-vous intérêt à mettre plusieurs serrures douteuses sur votre porte, où bien une seule si elle est infalsifiable ?
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 à ouvrir
2  0 
Avatar de disedorgue
Expert éminent https://www.developpez.com
Le 25/02/2017 à 14:45
Citation Envoyé par Beanux Voir le message
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
Malheureusement, c'est pas toujours vrai dans la vraie vie: même si le hash est plus petit que que le message que l'on hash...
Un exemple flagrant, c'est les mots de passe: on peut avoir un mot de passe qui dépasse la taille de son propre hash mais comme on nous restreint souvent d'avoir un mot de passe de taille min et max et de plus sur jeu d'alphabet réduit, la collision peut ne pas se produire puisque l'ensemble des mot de passe est aussi fini.
1  0 
Avatar de dourouc05
Responsable Qt & Livres https://www.developpez.com
Le 25/02/2017 à 22:11
Citation Envoyé par Artemus24 Voir le message
Désolé pour mon ignorance, mais pourriez vous traduire vos propos au sujet du Hashage.
Dois-je comprendre que le hashage, c'est comme la fonction modulo. On finit tôt ou tard par retrouver le même cycle.
Le 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.
1  0 
Avatar de Iradrille
Expert confirmé https://www.developpez.com
Le 25/02/2017 à 23:25
Citation Envoyé par Artemus24 Voir le message
Dois-je comprendre que le hashage, c'est comme la fonction modulo. On finit tôt ou tard par retrouver le même cycle.
Cycle je sais pas (j'imagine qu'ils essaient d'éviter); mais plusieurs fichiers peuvent avoir le même hash, oui.

Citation Envoyé par Artemus24 Voir le message
Et en quoi la collision a provoqué un gros bug. Je n'ai rien compris de ce problème.
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.
1  0 
Avatar de Beanux
Membre éclairé https://www.developpez.com
Le 26/02/2017 à 1:22
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.
1  0