Le premier jour de 2016, Mozilla a mis fin à la prise en charge d'une technologie de sécurité affaiblie appelée SHA-1 dans le navigateur Web Firefox. Presque immédiatement, ils ont annulé leur décision, car cela réduirait l'accès à certains sites Web plus anciens. Mais en février 2017, leurs craintes se sont enfin réalisées: les chercheurs ont brisé SHA-1 en créant la première attaque de collision dans le monde réel . Voici ce que tout cela signifie.
Qu'est-ce que SHA-1?
Le SHA dans SHA-1 signifie Algorithme de hachage sécurisé , et, en termes simples, vous pouvez le considérer comme une sorte de problème ou de méthode mathématique brouille les données qui y sont placées . Développé par la NSA des États-Unis, il s'agit d'un composant essentiel de nombreuses technologies utilisées pour crypter des transmissions importantes sur Internet. Les méthodes de cryptage courantes SSL et TLS, dont vous avez peut-être entendu parler, peuvent utiliser une fonction de hachage telle que SHA-1 pour créer les certificats signés que vous voyez dans la barre d'outils de votre navigateur.
Nous n’entrerons pas dans les mathématiques et l’informatique des fonctions SHA, mais voici l’idée de base. Un «hachage» est un code unique basé sur l'entrée de n'importe quelle donnée . Même une petite chaîne aléatoire de lettres entrée dans une fonction de hachage telle que SHA-1 renverra un nombre long et défini de caractères, ce qui rendra (potentiellement) impossible le retour de la chaîne de caractères aux données d'origine. C'est ainsi que fonctionne généralement le stockage des mots de passe. Lorsque vous créez un mot de passe, votre entrée de mot de passe est hachée et stockée par le serveur. A votre retour, lorsque vous saisissez votre mot de passe, il est à nouveau haché. Si elle correspond au hachage d'origine, l'entrée peut être considérée comme identique et vous aurez accès à vos données.
Les fonctions de hachage sont principalement utiles car elles permettent de savoir facilement si l'entrée, par exemple, un fichier ou un mot de passe, a changé. Lorsque les données d'entrée sont secrètes, comme un mot de passe, le hachage est presque impossible à inverser et à récupérer les données d'origine (également appelées «clé»). C'est un peu différent du "cryptage", dont le but est de brouiller les données dans le but de les désembrouiller plus tard , en utilisant des chiffrements et des clés secrètes. Les hachages sont simplement destinés à garantir l'intégrité des données - pour s'assurer que tout est identique. Git, le logiciel de contrôle de version et de distribution du code open source, utilise les hachages SHA-1 pour cette raison .
C'est beaucoup d'informations techniques, mais pour le dire simplement: un hachage n'est pas la même chose que le chiffrement, car il est utilisé pour identifier si un fichier a changé .
Comment cette technologie m'affecte-t-elle?
Supposons que vous deviez visiter un site Web en privé. Votre banque, votre messagerie électronique et même votre compte Facebook utilisent tous le cryptage pour garder les données que vous leur envoyez privées. Un site Web professionnel fournira un cryptage en obtenant un certificat d'une autorité de confiance - un tiers, de confiance pour garantir que le cryptage est au niveau, privé entre le site Web et l'utilisateur, et n'est pas espionné par une autre partie. Cette relation avec le tiers, appelée Autorités de certification , ou CETTE , est cruciale, car tout utilisateur peut créer un certificat «auto-signé» - vous pouvez même faites-le vous-même sur une machine exécutant Linux avec Openssl . Symantec et Digicert sont par exemple deux sociétés de CA largement connues.
Passons en revue un scénario théorique: How-To Geek veut garder les sessions des utilisateurs connectés privées avec le chiffrement, il demande donc à une autorité de certification comme Symantec avec un Demande de signature de certificat , ou RSE . Ils créent un public key et Clé privée pour crypter et décrypter les données envoyées sur Internet. La demande CSR envoie la clé publique à Symantec avec des informations sur le site Web. Symantec vérifie la clé par rapport à son enregistrement pour vérifier que les données sont inchangées par toutes les parties, car tout petit changement dans les données rend le hachage radicalement différent.
Ces clés publiques et certificats numériques sont signés par des fonctions de hachage, car la sortie de ces fonctions est facile à voir. Une clé publique et un certificat avec un hachage vérifié de Symantec (dans notre exemple), une autorité, assure à un utilisateur de How-To Geek que la clé est inchangée et qu'elle n'est pas envoyée par une personne malveillante.
Parce que le hachage est facile à surveiller et impossible (certains diront «difficile») à inverser, la signature de hachage correcte et vérifiée signifie que le certificat et la connexion peuvent être fiables, et que les données peuvent être acceptées pour être envoyées cryptées de bout en bout . Mais que faire si le hachage n'était pas vraiment unique ?
Qu'est-ce qu'une attaque par collision et est-ce possible dans le monde réel?
Vous avez peut-être entendu parler du "Problème d'anniversaire" en mathématiques , bien que vous ne sachiez peut-être pas comment il s’appelait. L'idée de base est que si vous rassemblez un groupe de personnes suffisamment important, il y a de fortes chances que deux personnes ou plus fassent le même anniversaire. Plus haut que ce à quoi vous vous attendiez, en fait - assez pour que cela ressemble à une étrange coïncidence. Dans un groupe aussi petit que 23 personnes, il y a 50% de chances que deux personnes partagent un anniversaire.
C'est la faiblesse inhérente à tous les hachages, y compris SHA-1. Théoriquement, la fonction SHA devrait créer un hachage unique pour toutes les données qui y sont placées, mais à mesure que le nombre de hachages augmente, il devient plus probable que différentes paires de données puissent créer le même hachage. On peut donc créer un certificat non approuvé avec un hachage identique à un certificat approuvé. S'ils vous obligent à installer ce certificat non approuvé, il peut se faire passer pour un certificat fiable et diffuser des données malveillantes.
La recherche de hachages correspondants dans deux fichiers est appelée collision attack . Au moins une attaque de collision à grande échelle est connue pour s'être déjà produite pour les hachages MD5. Mais le 27 février 2017, Google a annoncé SHAttered , la toute première collision conçue pour SHA-1. Google a pu créer un fichier PDF qui avait le même hachage SHA-1 qu'un autre fichier PDF, malgré un contenu différent.
SHAttered a été effectué sur un fichier PDF. Les PDF sont un format de fichier relativement lâche; de nombreuses modifications minuscules au niveau des bits peuvent être apportées sans empêcher les lecteurs de l'ouvrir ou provoquer des différences visibles. Les fichiers PDF sont également souvent utilisés pour diffuser des logiciels malveillants. Bien que SHAttered puisse fonctionner sur d'autres types de fichiers, comme les ISO, les certificats sont spécifiés de manière rigide, ce qui rend une telle attaque peu probable.
Alors, à quel point cette attaque est-elle facile à réaliser? SHAttered était basé sur un méthode découvert par Marc Stevens en 2012, ce qui a nécessité plus de 2 ^ 60,3 (9,223 quintillions) d'opérations SHA-1 - un nombre stupéfiant. Cependant, cette méthode représente toujours 100 000 fois moins d'opérations que ce qui serait nécessaire pour obtenir le même résultat avec la force brute. Google a constaté qu'avec 110 cartes graphiques haut de gamme fonctionnant en parallèle, il faudrait environ un an pour produire une collision. La location de ce temps de calcul auprès d'Amazon AWS coûterait environ 110000 USD. Gardez à l'esprit qu'à mesure que les prix des pièces d'ordinateurs baissent et que vous pouvez obtenir plus d'énergie pour moins cher, des attaques comme SHAttered deviennent plus faciles à réaliser.
110000 $ peuvent sembler beaucoup, mais cela relève du domaine de l'abordabilité pour certaines organisations - ce qui signifie que les cybervilliens de la vie réelle pourraient forger des signatures de documents numériques, interférer avec les systèmes de sauvegarde et de contrôle de version comme Git et SVN, ou faire apparaître légitime une ISO Linux malveillante.
Heureusement, il existe des facteurs atténuants qui empêchent de telles attaques. SHA-1 est rarement utilisé pour les signatures numériques. Les autorités de certification ne fournissent plus de certificats signés avec SHA-1, et Chrome et Firefox ont abandonné leur prise en charge. Les distributions Linux sont généralement publiées plus d'une fois par an, ce qui rend impossible pour un attaquant de créer une version malveillante, puis d'en générer une complétée pour avoir le même hachage SHA-1.
D'autre part, certaines attaques basées sur SHAttered se produisent déjà dans le monde réel. Le système de contrôle de version SVN utilise SHA-1 pour différencier les fichiers. Le téléchargement des deux PDF avec des hachages SHA-1 identiques dans un référentiel SVN le provoquera corrompre .
Comment puis-je me protéger des attaques SHA-1?
L’utilisateur type n’a pas grand-chose à faire. Si vous utilisez des sommes de contrôle pour comparer des fichiers, vous devez utiliser SHA-2 (SHA-256) ou SHA-3 plutôt que SHA-1 ou MD5. De même, si vous êtes développeur, veillez à utiliser des algorithmes de hachage plus modernes tels que SHA-2, SHA-3 ou bcrypt. Si vous craignez que SHAttered ait été utilisé pour attribuer le même hachage à deux fichiers distincts, Google a publié un outil sur le Site SHAttered qui peut vérifier pour vous.
Crédits d'image: Lego Firefox , Beaucoup de hasch , Veuillez ne pas blesser l'auteur Web inconnu, Google .