Qu'est-ce que SHAttered? Explications sur les collisions SHA-1
Le premier jour de 2016, Mozilla a mis fin au support 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 concrétisées: des chercheurs ont démantelé SHA-1 en créant la première attaque par 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, tout simplement, vous pouvez penser à cela comme une sorte de problème mathématique ou une méthode qui brouille les données qui y sont mises. Développé par la NSA des États-Unis, il s'agit d'un composant essentiel de nombreuses technologies utilisées pour chiffrer les transmissions importantes sur Internet. Méthodes de cryptage courantes SSL et TLS, dont vous avez peut-être entendu parler, peuvent utiliser une fonction de hachage comme 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 d'aucune des fonctions de SHA, mais voici l'idée de base. Un «hash» est un code unique basé sur la saisie de n'importe quelle donnée. Même une petite chaîne de lettres aléatoire insérée dans une fonction de hachage telle que SHA-1 renvoie un nombre de caractères long et défini, ce qui rend (potentiellement) impossible la restauration de la chaîne de caractères aux données d'origine. Voici comment fonctionne généralement le stockage de mots de passe. Lorsque vous créez un mot de passe, votre saisie est hachée et stockée par le serveur. À votre retour, lorsque vous entrez votre mot de passe, il est à nouveau haché. S'il correspond au hachage d'origine, l'entrée peut être supposée être la même et l'accès à vos données vous sera accordé..
Les fonctions de hachage sont utiles principalement parce qu'elles permettent de déterminer facilement si l'entrée, par exemple un fichier ou un mot de passe, a été modifiée. 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ée «clé»). C’est un peu différent du «chiffrement», qui sert à brouiller des 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 à assurer l'intégrité des données, à s'assurer que tout est identique. Git, le logiciel de contrôle de version et de distribution de code source ouvert, utilise les hachages SHA-1 pour cette raison même.
C'est beaucoup d'informations techniques, mais pour le dire simplement: un hachage n'est pas la même chose que le cryptage, car il est utilisé pour identifier si un fichier a changé.
Comment cette technologie m'affecte-t-elle??
Disons que vous devez visiter un site Web en privé. Votre banque, vos courriels 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 assurera le chiffrement en obtenant un certificat auprès d'une autorité de confiance, une tierce partie, afin de s'assurer que le chiffrement est au niveau privé entre le site Web et l'utilisateur et qu'il n'est pas espionné par une autre partie. Cette relation avec la tierce partie, appelée Autorités de certification, ou Californie, est cruciale, car tout utilisateur peut créer un certificat «auto-signé». Vous pouvez même le faire vous-même sur une machine fonctionnant sous Linux avec Open SSL. Symantec et Digicert sont deux sociétés de CA bien connues, par exemple.
Examinons un scénario théorique: How-To Geek veut que les sessions des utilisateurs connectés restent confidentielles avec un cryptage, de sorte qu'il demande à une autorité de certification comme Symantec de Demande de signature de certificat, ou RSE. Ils créent un Clé publique et Clé privée pour le cryptage et le décryptage des données envoyées sur Internet. La demande de CSR envoie la clé publique à Symantec avec des informations sur le site Web. Symantec compare la clé à son enregistrement pour vérifier que les données ne sont pas modifiées par toutes les parties, car toute modification mineure des 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 à visualiser. Une clé publique et un certificat avec un hachage vérifié de Symantec (dans notre exemple), une autorité, assurent à l'utilisateur de How-To Geek que la clé est inchangée et n'a pas été envoyée par une personne malveillante..
Parce que le hachage est facile à surveiller et impossible (certains diraient «difficile») à inverser, la signature de hachage correcte et vérifiée signifie que le certificat et la connexion peuvent être approuvés et que les données peuvent être acceptées pour être envoyées cryptées de bout en bout. . Mais si le hash n'était pas vraiment unique?
Qu'est-ce qu'une attaque de collision et est-ce possible dans le monde réel??
Vous avez peut-être entendu parler du «problème d'anniversaire» en mathématiques, même si vous ne saviez peut-être pas comment il s'appelait. L'idée de base est que, si vous rassemblez un groupe de personnes assez important, il y a de fortes chances pour que deux personnes ou plus aient le même anniversaire. Plus haut que prévu, en fait, assez pour que cela ressemble à une coïncidence étrange. Dans un groupe aussi petit que 23 personnes, il y a 50% de chances que deux 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 est de plus en plus probable que différentes paires de données puissent créer le même hachage. Il est donc possible de créer un certificat non approuvé avec un hachage identique à un certificat de confiance. S'ils vous obligent à installer ce certificat non approuvé, il peut se faire passer pour un certificat de confiance et distribuer des données malveillantes..
La recherche de correspondances dans deux fichiers est appelée un attaque par collision. On sait qu'au moins une attaque par collision à grande échelle s'est 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 contenant le même hachage SHA-1 qu'un autre fichier PDF, malgré un contenu différent.
SHAttered a été réalisé sur un fichier PDF. Les PDF sont un format de fichier relativement lâche. Il est possible d'effectuer de nombreuses modifications minuscules au niveau des bits sans empêcher les lecteurs de l'ouvrir ni causer de différences visibles. Les PDF sont également souvent utilisés pour diffuser des logiciels malveillants. Bien que SHAttered puisse fonctionner sur d'autres types de fichiers, comme les fichiers ISO, les certificats sont spécifiés de manière rigide, ce qui rend peu probable une telle attaque..
Alors, comment cette attaque est-elle facile à exécuter? SHAttered était basé sur une méthode découverte par Marc Stevens en 2012 qui nécessitait plus de 2 ^ 60,3 (9,223 milliards) d'opérations SHA-1, un nombre effarant. Cependant, cette méthode nécessite toujours 100 000 fois moins d'opérations qu'il n'en faudrait pour atteindre le même résultat avec la force brute. Google a découvert qu'avec 110 cartes graphiques haut de gamme fonctionnant en parallèle, il faudrait environ un an pour produire une collision. Louer ce temps de calcul sur Amazon AWS coûterait environ 110 000 USD. Gardez à l'esprit que lorsque les prix des pièces d'ordinateur chutent et que vous pouvez obtenir plus d'énergie à moindre coût, des attaques comme SHAttered deviennent plus faciles à maîtriser..
110 000 USD peuvent sembler énormes, mais cela reste du domaine de l'abordabilité pour certaines organisations, ce qui signifie que les cybervilliens du monde réel pourraient forger des signatures de documents numériques, interférer avec les systèmes de contrôle de version et de sauvegarde tels que Git et SVN, ou donner l'impression que Linux ISO est légitime..
Heureusement, des facteurs atténuants empêchent de telles attaques. SHA-1 est rarement utilisé pour les signatures numériques. Les autorités de certification ne fournissent plus les certificats signés avec SHA-1 et Chrome et Firefox ont cessé de les prendre en charge. Les distributions Linux sont généralement publiées plus d’une fois par an, ce qui empêche tout attaquant de créer une version illicite, puis d’en générer une avec 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 entraînera sa corruption..
Comment puis-je me protéger contre les 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 donner 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 hachage, s'il vous plaît, ne faites pas de mal au Web auteur inconnu, Google.