Le jour où SHA-1 a cédé

Le 23 février 2017, les chercheurs du CWI Amsterdam et de Google ont annoncé conjointement avoir produit la première collision pratique de l’algorithme de hachage SHA-1. Baptisée SHAttered, cette démonstration n’était pas une simple faiblesse théorique de plus : elle fournissait deux fichiers PDF réels, différents, partageant exactement la même empreinte SHA-1. Pour la première fois, une collision contre cet algorithme passait de la spéculation à la réalité concrète.

L’événement a eu un retentissement considérable dans le monde de la sécurité, car SHA-1 était encore présent dans de nombreux systèmes : certificats, gestion de versions, signatures de documents et de logiciels. La preuve que l’algorithme pouvait être brisé en pratique a transformé une recommandation prudente d’abandon en une nécessité urgente.

Qu’est-ce qu’une collision et pourquoi c’est grave

Une fonction de hachage associe à n’importe quelle entrée une empreinte de longueur fixe. Comme le nombre d’entrées possibles est infini et que le nombre d’empreintes est fini, il existe forcément des entrées différentes qui aboutissent à la même empreinte. C’est mathématiquement inévitable. La sécurité d’une fonction de hachage ne repose donc pas sur l’absence de collisions, mais sur l’impossibilité pratique d’en trouver une volontairement.

Une collision se produit lorsqu’on parvient à exhiber deux messages distincts, disons A et B, tels que leur empreinte soit identique. Tant que personne ne sait fabriquer une telle paire, la fonction reste digne de confiance. Le jour où quelqu’un y parvient avec des moyens raisonnables, toute garantie d’intégrité fondée sur cette fonction s’écroule.

Le danger est facile à saisir avec un exemple. Imaginez un contrat numérique signé. La signature porte en réalité sur l’empreinte du document, pas sur le document entier. Si un attaquant peut créer deux contrats au contenu différent mais à l’empreinte identique, il fait signer la version anodine, puis substitue la version frauduleuse. La signature reste valide pour les deux, car le système de vérification ne voit que l’empreinte commune. C’est exactement le scénario que les collisions rendent possible.

La paire de fichiers SHAttered

La démonstration de 2017 a produit deux documents PDF au contenu visuellement distinct. Ces deux fichiers partagent la même empreinte SHA-1 :

38762cf7f55934b34d179ae6a4c80cadccbb7f0a

Pour bien marquer la différence, les chercheurs ont aussi calculé l’empreinte SHA-256 de chacun. Sous SHA-256, les deux fichiers donnent des empreintes totalement différentes, ce qui prouve sans ambiguïté qu’il s’agit de deux fichiers réellement distincts et non d’une duplication. Autrement dit, la collision n’existe que sous SHA-1 ; un algorithme plus solide les distingue immédiatement.

Vous pouvez examiner la paire de documents publiée à l’appui de l’annonce : shattered-1.pdf et shattered-2.pdf. Les détails techniques de la méthode figurent dans l’article de recherche qui accompagne la publication.

L’effort de calcul derrière l’attaque

Produire cette collision n’a rien eu de trivial. L’attaque a nécessité environ 9,2 quintillions de calculs SHA-1, soit un nombre à dix-neuf chiffres. Pour donner un ordre de grandeur en temps machine, cela représente à peu près 6 500 années-processeur de calcul sur CPU, complétées par environ 110 années de calcul sur GPU pour la phase la plus intensive.

Ces chiffres méritent d’être nuancés. D’un côté, ils montrent que l’attaque restait hors de portée d’un particulier isolé en 2017 : il fallait des ressources comparables à celles d’une grande organisation. De l’autre, ils démontraient que l’attaque était bel et bien réalisable, et non plus seulement envisageable sur le papier. Or, en cryptographie, le coût d’une attaque ne fait que baisser avec le temps, à mesure que le matériel devient plus rapide et meilleur marché. Une attaque coûteuse aujourd’hui devient abordable demain.

L’approche employée ne consistait pas à essayer des entrées au hasard jusqu’à tomber sur une coïncidence, ce qui aurait été irréaliste. Les chercheurs ont exploité des faiblesses structurelles de SHA-1 mises en évidence par plus d’une décennie de cryptanalyse, en construisant une collision dite à préfixe identique. Cette technique tire parti de la marge de manœuvre offerte par le format PDF pour insérer des données qui orientent le calcul vers l’empreinte voulue.

Une rupture longtemps annoncée

SHA-1 n’est pas tombé du jour au lendemain. Dès le milieu des années 2000, des travaux de cryptanalyse avaient montré que la résistance réelle de l’algorithme était bien inférieure à ce que sa conception laissait espérer. La communauté savait qu’une collision pratique n’était qu’une question de temps et de ressources. Les organismes de normalisation et les grands acteurs du web avaient d’ailleurs commencé à planifier la transition vers SHA-256 plusieurs années avant 2017.

SHAttered a transformé ce risque latent en fait accompli. La démonstration a servi de point de bascule : ce qui était jusque-là un argument prudent en faveur de la migration est devenu une preuve irréfutable que le maintien de SHA-1 exposait à un danger concret.

Les conséquences sur l’écosystème

L’annonce a accéléré l’abandon de SHA-1 sur plusieurs fronts simultanément.

Du côté des certificats TLS, les principaux navigateurs avaient déjà programmé l’arrêt de la confiance accordée aux certificats signés avec SHA-1. La démonstration de 2017 a confirmé le bien-fondé de cette décision et clos le débat. Les autorités de certification ont définitivement basculé vers SHA-256.

Du côté de Git, le système de gestion de versions identifie les objets par leur empreinte SHA-1. La collision a poussé le projet à intégrer des mécanismes de détection de collision et à engager une réflexion de fond sur la migration vers une fonction plus solide, afin que deux objets distincts ne puissent pas se faire passer l’un pour l’autre.

Du côté des signatures de documents et de logiciels, l’usage de SHA-1 a été déconseillé puis proscrit dans les contextes sensibles. Signer une empreinte SHA-1 revenait désormais à signer quelque chose qu’un adversaire suffisamment motivé pouvait dupliquer.

La leçon à retenir

L’histoire de SHA-1 condense une vérité essentielle de la cryptographie appliquée : aucun algorithme n’est éternel. Une fonction jugée sûre pendant vingt ans peut être mise en échec dès lors que la puissance de calcul rattrape ses faiblesses théoriques. La bonne pratique consiste à anticiper, à suivre les recommandations des organismes de normalisation et à migrer vers des algorithmes modernes comme SHA-256 avant qu’une attaque ne devienne accessible au plus grand nombre.

SHAttered restera comme un repère historique : la démonstration publique, vérifiable et reproductible que SHA-1 ne pouvait plus protéger l’intégrité des données. La paire de PDF qui partage l’empreinte 38762cf7f55934b34d179ae6a4c80cadccbb7f0a en est la trace tangible.