Qu'est-ce que SHAttered? Explications sur les collisions SHA-1

Table des matières:

Qu'est-ce que SHAttered? Explications sur les collisions SHA-1
Qu'est-ce que SHAttered? Explications sur les collisions SHA-1

Vidéo: Qu'est-ce que SHAttered? Explications sur les collisions SHA-1

Vidéo: Qu'est-ce que SHAttered? Explications sur les collisions SHA-1
Vidéo: Comment masquer automatiquement la barre des tâches sous Windows 10 - YouTube 2024, Avril
Anonim
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.
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?

Image
Image

Le SHA dans SHA-1 signifie Algorithme de hachage sécurisé, et, 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 est l’un des composants essentiels 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'approfondirons pas les mathématiques et l'informatique d'aucune des fonctions 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é. Si cela correspond au hachage d'origine, on peut supposer que l'entrée est la même et l'accès à vos données vous sera accordé.
Nous n'approfondirons pas les mathématiques et l'informatique d'aucune des fonctions 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é. Si cela correspond au hachage d'origine, on peut supposer que l'entrée est 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, à l'aide de chiffrements et de 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.
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, à l'aide de chiffrements et de 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?

Image
Image

Disons que vous devez visiter un site Web en privé. Votre banque, vos courriels, voire votre compte Facebook, utilisent tous le cryptage pour préserver la confidentialité des données que vous leur transmettez. Un site Web professionnel assurera le chiffrement en obtenant un certificat auprès d'une autorité de confiance - une tierce partie, chargée de s'assurer que le chiffrement est au même 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 Californieest crucial, 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 très connues, par exemple.

Image
Image

Examinons un scénario théorique: How-To Geek veut que les sessions des utilisateurs connectés restent confidentiels 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 requête 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.
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.
Image
Image

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. En fait, plus haut que prévu, 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 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 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.
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 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.
Image
Image

La recherche de correspondances dans deux fichiers est appelée un attaque par collision. Au moins une attaque par collision à grande échelle est déjà connue pour les hash 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. Vous pouvez effectuer de nombreux changements minimes 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, tels que les fichiers ISO, les certificats sont spécifiés de manière rigide, rendant ainsi une telle attaque peu probable.

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 de SHA), un nombre impressionnant. 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 qu'une collision se produise. Louer ce temps de calcul sur Amazon AWS coûterait environ 110 000 USD. N'oubliez pas que lorsque les prix des pièces d'ordinateur chutent et que vous pouvez obtenir plus d'énergie à moindre coût, des attaques telles que SHAttered deviennent plus faciles à maîtriser.

$ 110,000 peut sembler beaucoup, mais cela relève du domaine des coûts pour certaines organisations - ce qui signifie que les vrais cybervilliens pourraient créer 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 légitime d’une ISO Linux maligne.

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 ne prennent plus en charge ces certificats. 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 des attaques SHA-1?

L’utilisateur typique 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 un 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 à l'auteur Web inconnu, Google.

Conseillé: