211service.com
Empreinte digitale de vos fichiers
Trois cryptographes de l'Université de Stanford ont récemment trouvé une solution intelligente au problème persistant de l'usurpation d'identité sur Internet. Des pirates informatiques rusés en Russie, en Chine et dans d'autres pays envoient des tas de messages électroniques semblant provenir d'une institution financière telle que Citibank ou Paypal. Des millions de consommateurs reçoivent ces messages, qui contiennent des liens HTML intégrés qui amènent le destinataire sans méfiance à des sites Web similaires exécutés dans des endroits lointains. Vous êtes invité à entrer un nom d'utilisateur et un mot de passe, puis le pirate a les clés de votre compte bancaire.
Mais les bons noms d'utilisateur et mots de passe saisis sur de mauvais sites Web ne sont pas la seule menace à laquelle les consommateurs sont confrontés. Un problème potentiellement plus important est que de nombreuses personnes utilisent la même combinaison de nom d'utilisateur et de mot de passe sur plusieurs sites. Cela facilite la mémorisation, mais cela signifie qu'un opérateur de site Web sans scrupules peut prendre une liste de noms d'utilisateur et de mots de passe à partir, par exemple, d'un site de tirage au sort sur Internet et l'utiliser pour essayer de pénétrer dans des comptes bancaires en ligne.
Ainsi, les cryptographes de Stanford, Blake Ross, Dan Boneh et John Mitchell, ont conçu un plug-in intelligent pour Internet Explorer qui résout ce problème en brouillant ce que vous tapez dans le champ du mot de passe afin que chaque site Web voie un mot de passe différent, un mot de passe basé à la fois sur ce que vous tapez et sur le domaine du site Web lui-même.
Maintenant, beaucoup de gens utilisent une variante de cette stratégie. Leur mot de passe Hotmail pourrait être nosmis-hotmail tandis que leur mot de passe Yahoo! Le mot de passe de Personals est nosmis-Yahoo! Mais toute stratégie comme celle-ci est assez simple à déchiffrer. La méthode de brouillage des mots de passe que le trio de Stanford a conçue est basée sur une fonction mathématique appelée fonction à sens unique de type hasha cryptographique qui transforme ce que l'utilisateur tape en un fouillis de chiffres et de lettres d'une manière irréversible. Étant donné que le système de Stanford calcule le hachage cryptographique du domaine du site Web et du mot de passe des utilisateurs, le pirate informatique obtient des mots de passe différents de ceux légitimes. (Cliquez sur ici pour trouver des détails sur cette solution astucieuse.)
Une entreprise qui utilise des hachages cryptographiques de manière très publique est Yahoo! L'année dernière, Yahoo! a repensé le processus de connexion à son site Web pour le rendre à l'épreuve des reniflements. La méthode standard pour le faire est d'utiliser le cryptage. Mais le cryptage peut être lent, surtout lorsque vous exécutez l'un des sites les plus populaires sur Internet.
Alors qu'est-ce que Yahoo! a plutôt été de modifier sa page de connexion pour utiliser un système dit de défi-réponse basé sur un hachage cryptographique. Lorsque vous essayez de vous connecter, le serveur Yahoo! télécharge sur votre navigateur une fonction de hachage cryptographique écrite en JavaScript. Avec cette fonction est un défi une courte séquence de lettres et de chiffres. Lorsque vous saisissez votre mot de passe dans l'écran de connexion, votre navigateur prend votre mot de passe, ajoute ces caractères fournis par Yahoo! et calcule le hachage cryptographique de la chaîne résultante. Le navigateur renvoie ensuite la valeur résultante à Yahoo!, aucun cryptage n'est nécessaire. Même si vous êtes dans un cybercafé et que votre trafic Web est reniflé par des pirates informatiques belges, il n'y a aucun moyen pour les méchants de prendre la valeur de hachage résultante et de dériver votre mot de passe d'origine.
Ce système intelligent de défi-réponse est également à la base du système Mobil Speedpass : c'est ce qui rend la balise d'identification par radiofréquence (RFID) Speedpass si difficile à cloner. D'autres systèmes RFID n'utilisent pas de challenge-response, ce qui rend leur attaque relativement facile.
Mais quelle est cette fonction de hachage cryptographique, de toute façon ?
Le hachage incroyablement utile
Les fonctions de hachage cryptographique sont l'un des éléments fondamentaux de l'économie numérique d'aujourd'hui. Néanmoins, ils restent à bien des égards un mystère tant pour les cryptographes qui les créent que pour le grand public qui les utilise au quotidien.
Les fonctions de hachage sont parfois appelées fonctions d'empreinte digitale car elles peuvent être utilisées pour créer une empreinte unique d'un fichier numérique. Les empreintes digitales sont généralement des nombres de 128 ou 160 bits qui s'affichent sous la forme d'une séquence de chiffres hexadécimaux. L'empreinte de mon nom en utilisant le système MD5, par exemple, est c55bbe0f3ba258f5b1cb6d5b62b0b360. Les fonctions de hachage sont conçues pour que, en théorie du moins, deux fichiers ne soient jamais hachés à la même valeur.
Pour que vous puissiez avoir une idée du fonctionnement de ces fonctions d'empreintes digitales, nous avons intégré ci-dessous une calculatrice MD5 basée sur JavaScript. Tapez simplement du texte et vous pouvez voir le hachage MD5. Remarquez comment cela change complètement chaque fois que vous ajoutez, supprimez ou modifiez une lettre. La manière dont l'empreinte digitale change est en effet imprévisible, si nous pouvions prédire comment elle change, alors les empreintes digitales des fichiers ne seraient pas très utiles.
Saisissez votre texte ci-dessous :Le MD5 c'est :
La plupart des fonctions de hachage utilisées aujourd'hui sont basées sur une technique développée par le professeur du MIT Ron Rivest dans les années 1980. (Rivest est probablement mieux connu pour être le R dans l'algorithme de chiffrement RSA, l'algorithme de chiffrement à clé publique intégré à pratiquement tous les navigateurs Web.) À l'époque, Rivest et d'autres mathématiciens travaillaient sur les détails des opérations cryptographiques de base que nous maintenant tenir pour acquis. Les fonctions de hachage ont été envisagées comme une sorte de système de compression cryptographique, un moyen de prendre un gros fichier et de le réduire en une courte chaîne de lettres et de chiffres.
L'idée était d'utiliser ces empreintes digitales comme une sorte de substitut pour les fichiers eux-mêmes. Au lieu de signer numériquement l'intégralité du fichier, selon Rivest et d'autres, vous pouvez signer numériquement le hachage. Étant donné que la cryptographie à clé publique implique de nombreux calculs lourds, les fonctions de hachage permettent de signer un fichier extrêmement long presque aussi rapidement que de signer un fichier court.
L'une des choses les plus basiques que vous puissiez faire avec une fonction de hachage est de savoir si un fichier a changé : il suffit de calculer le hachage d'un fichier et de le noter. Plus tard, vous recalculez le hachage. Si le hachage n'a pas changé, il y a de fortes chances que le fichier n'ait pas changé non plus.
Par exemple, supposons que vous gérez les finances de votre petite entreprise en utilisant QuickBooks et que vous souhaitez partir en vacances pendant quelques jours : les gens ont besoin d'utiliser votre ordinateur mais vous voulez vous assurer que personne ne modifie les données de QuickBooks. Une chose simple que vous pouvez faire est de calculer le hachage cryptographique du fichier avant de partir et d'écrire le numéro sur une fiche. Lorsque vous revenez de vacances, recalculez simplement le hachage. Si les deux valeurs ne correspondent pas, vous savez que le fichier a été falsifié.
Bien sûr, vous n'avez pas besoin de vous arrêter avec un seul fichier. Vous pouvez calculer le hachage cryptographique de chaque fichier sur votre ordinateur et les mettre tous dans un nouvel appel de fichier ce fichier hashes.txt. Vous pouvez ensuite calculer le hachage de hashes.txt et écrire cette empreinte digitale sur votre carte de note. Répétez le processus lorsque vous revenez de vacances et vous aurez un moyen rapide de savoir si un fichier sur l'ensemble de votre ordinateur a changé. (Vous n'aurez aucun moyen de savoir quel fichier a changé, mais c'est un problème différent.)
Cette idée de calculer le hachage d'un hachage est à la base d'un système de détection d'intrusion appelé Tripwire que le professeur d'informatique de l'Université Purdue Gene Spafford et son étudiant diplômé Gene Kim ont inventé au début des années 1990. (Spafford et moi avons co-écrit cinq livres sur l'informatique.) Aujourd'hui, de nombreux programmes différents utilisent cette approche Tripwire pour assurer l'intégrité des fichiers informatiques et des bases de données.
Le calcul de hachages de hachages est également à la base d'un service d'horodatage sécurisé inventé par Stuart Haber et Scott Stornetta alors que les deux étaient chez Bellcore en 1990. Le service, appelé Surety, permet de générer une preuve cryptographiquement sécurisée et infalsifiable qu'un document donné , une photographie ou un autre fichier existait à un moment donné à une date particulière et qu'il n'a pas été modifié depuis.
La technique de caution fonctionne en calculant un arbre de hachage basé sur les codes de hachage de chaque document horodaté. La racine de l'arbre est alors publiée dans un endroit bien connu, elle pourrait, par exemple, être imprimée dans une petite annonce dans le New York Times . Vous pouvez prouver que votre document existait le jour en question en montrant que l'empreinte digitale de votre document était nécessaire pour générer les empreintes digitales parues dans le journal.
D'autres entreprises et même le service postal américain ont depuis créé leur propre service d'horodatage électronique. Mais tous ces systèmes reposent sur une organisation qui agit comme un tiers de confiance qui signe en fait votre document à l'aide de sa clé privée. Le problème avec cette approche est que le tiers doit être totalement digne de confiance : si ce tiers décide de créer une signature avec la mauvaise date, ou si un pirate parvient à voler la clé privée du tiers, il n'y a aucun moyen de distinguer une signature frauduleuse d'une signature valide. Il est également possible de créer des signatures de caution frauduleuses, bien sûr, mais vous devrez soit remonter dans le temps et modifier ce qui a été imprimé dans le New York Times , ou bien voyager dans le monde entier, trouver chaque copie qui a été imprimée et remplacer l'ancienne empreinte digitale par la nouvelle.
Comment fonctionnent les fonctions de hachage
C'est pourquoi les fonctions de hachage sont utiles. Voyons maintenant à quoi ils ressemblent réellement.
Parmi les fonctions de hachage les plus utilisées aujourd'hui se trouvent les fonctions dites MD5 (pour Message Digest #5). MD5 produit un hachage de 128 bits de long et qui est généralement écrit sous la forme d'une séquence de 32 chiffres hexadécimaux (base 16). Si vous deviez prendre mon nom et le traiter avec MD5, vous obtiendriez cette chaîne apparemment aléatoire :
c55bbe0f3ba258f5b1cb6d5b62b0b360
Ou, pour l'énoncer avec plus de formalité mathématique :
MD5 (Simson Garfinkel) = c55bbe0f3ba258f5b1cb6d5b62b0b360
Chacun de ces caractères hexadécimaux représente 4 bits ; la valeur MD5 de mon nom est en fait :
1100010101011011101111100000111100111011101
00010010110001111010110110001110011011011011
010101101101100010101100001011001101100000
La plupart des gens travaillent avec la représentation hexadécimale car il est assez facile de regarder deux hachages et de dire s'ils sont identiques ou différents.
MD5 fonctionne en divisant le fichier en de nombreux petits morceaux, puis en prenant chacun de ces morceaux et en effectuant des centaines d'opérations mathématiques qui mélangent, inversent, transposent et traitent les bits dans un désordre méconnaissable. Le mot méconnaissable dans cette description est la clé. L'exigence fondamentale d'une bonne fonction de hachage est qu'il devrait être impossible de prédire l'empreinte d'un fichier sans réellement faire l'effort de calculer cette empreinte, il ne doit y avoir aucun raccourci. Si c'était le cas, vous pourrez peut-être exécuter la fonction de hachage à l'envers et créer un fichier contenant un hachage spécifique, par exemple le hachage d'un autre fichier. En effet, toute la sécurité des fonctions de hachage s'effondre totalement s'il est possible de générer deux fichiers qui ont le même hachage.
La beauté de la fonction de hachage est que même une petite modification de l'entrée produit un changement spectaculaire dans la sortie. Mathématiquement, les fonctions sont conçues pour que chaque bit de la sortie ait 50 % de chances de changer pour chaque bit modifié dans l'entrée.
Regardons un autre hachage MD5, celui-ci d'une représentation légèrement différente de mon nom :
MD5 (Simson L. Garfinkel) = df876e8e6f548d5be698fab7f06dd278
Le simple fait d'ajouter L. produit un hachage complètement différent. Si vous comparez les deux hachages bit à bit, vous constaterez que 63 des 128 positions sont passées de 0 à 1 ou de 1 à 0, et les 65 autres sont restées inchangées.
Malheureusement, toute la théorie des fonctions de hachage cryptographiques pose un énorme problème. L'utilisation de ces fonctions nécessite qu'il n'y ait pas de soi-disant collisions. Que ce soit accidentellement ou volontairement, il ne devrait pas y avoir deux fichiers ayant la même empreinte cryptographique. Et il s'avère que c'est une exigence impossible.
La raison est assez simple. Les empreintes de fichier ont une taille fixe, ce qui signifie qu'il existe un nombre fini d'empreintes possibles. Les fichiers, en revanche, peuvent être de n'importe quelle taille. Ainsi, il y a plus de fichiers possibles que d'empreintes digitales, et il doit donc y avoir au moins une empreinte digitale qui est l'empreinte de plusieurs fichiers. Le terme mathématique pour cela est le principe du pigeonnier. En effet, même si vous vous limitez à des fichiers de seulement neuf caractères, il y a quand même 256 fois plus de fichiers possibles que le nombre d'empreintes possibles.
La raison pour laquelle le principe du pigeonnier ne rend pas les fonctions de hachage complètement inutiles est qu'il existe un nombre incroyable d'empreintes digitales possibles, bien plus, en fait, que le nombre de fichiers sur la planète. (Avec MD5, il y a 2128 empreintes digitales possibles. Maintenant, le nombre total de disques durs d'ordinateurs qui ont jamais été fabriqués n'est que d'environ 229. Si chaque disque dur avait un million de fichiers uniques, une surestimation grossière, il n'y aurait toujours que 249 fichiers individuels. C'est beaucoup , nombre beaucoup, beaucoup plus petit que 2128.)
La controverse SHA-1
À des fins de didacticiel, j'ai utilisé la fonction de hachage MD5. Mais de nos jours, le MD5 est considéré passe au lieu de cela, la majeure partie du monde passe aux gouvernements américains Secure Hash Algorithm, connu sous le nom de SHA-1, une norme adoptée par les National Institutes of Standards and Technology (NIST) au début des années 1990.
Aujourd'hui, SHA-1 est un algorithme largement respecté, mais il a une histoire mouvementée. En 1993, le gouvernement américain tentait d'amener l'industrie à adopter le système de cryptage secret Clipper Chipa conçu par la National Security Agency. Pendant les soi-disant guerres cryptographiques qui ont fait rage autour de Clipper, le NIST a proposé que le gouvernement américain adopte son propre algorithme de hachage sécurisé dans le cadre des normes fédérales de traitement de l'information. Pour des raisons techniques, les fonctions de hachage doivent avoir deux fois plus de bits que les algorithmes de chiffrement avec lesquels elles fonctionnent. Clipper était un algorithme de cryptage de 80 bits, la norme a donc été conçue pour produire une empreinte digitale de 160 bits.
On pourrait penser que le standard gouvernemental, avec son empreinte digitale 160 bits, serait plus sécurisé que le MD5 128 bits. Mais comme Clipper lui-même, SHA a été conçu par la National Security Agency et le NIST et la NSA ont refusé d'expliquer les principes qui ont été utilisés dans sa conception. Certaines personnes se sont demandé si la NSA n'avait pas caché une sorte de porte dérobée à l'intérieur de l'algorithme afin que l'agence puisse générer des collisions à la demande. Une telle porte dérobée pourrait être utilisée, par exemple, pour produire de fausses signatures numériques, ce que la Central Intelligence Agency pourrait trouver utile. Une fausse signature numérique peut être utilisée, par exemple, pour signer une commande électronique donnant à un espion américain l'accès à une base de données dans un pays étranger.
De nombreux cryptographes et autres universitaires ont analysé l'algorithme SHA et n'ont rien trouvé d'anormal. Le 11 mai 1993, le NIST a proclamé SHA comme l'algorithme de hachage sécurisé des nations. Mais l'encre était à peine sèche sur ce décret que le NIST a annoncé qu'il avait fait une erreur. Pour des raisons qui n'auraient pas été révélées à l'époque, le NIST a publié une version modifiée du Secure Hash Algorithm, l'algorithme que nous appelons désormais SHA-1.
Les théoriciens du complot de la communauté de la cryptographie (et ils sont nombreux) se sont bien amusés. Le SHA était-il si puissant que la NSA avait décidé qu'il fallait l'abattre ? Ou la NSA avait-elle peut-être planté une porte dérobée au SHA et quelqu'un du NIST l'avait découvert ? Les deux algorithmes étaient-ils également sécurisés et les cryptographes de la NSA ne faisaient que déranger l'esprit des gens ?
En août 1998, le monde a plus ou moins appris la réponse au mystère SHA contre SHA-1. Florent Chabaud et Antoine Joux, deux cryptographes français, ont proposé une attaque théorique contre la première version de l'attaque SHAan contre laquelle SHA-1 s'est avéré être sécurisé. Presque certainement, les gens de la NSA étaient au courant de cette attaque et ont proposé SHA-1 comme contre-mesure. Ce qui est intéressant ici, c'est que les cryptographes de la NSA n'étaient probablement pas au courant de l'attaque lorsque SHA a été proposé pour la première fois en 1993, ce qui signifie que la meilleure agence cryptographique au monde n'avait que cinq ans d'avance sur les cryptographes du monde universitaire.
Aujourd'hui, les fonctions de hachage sont également couramment utilisées pour générer des nombres aléatoires reproductibles mais imprévisibles, afin de convertir les mots de passe saisis en valeurs pouvant être utilisées comme clés de cryptage. Au lieu de stocker directement les mots de passe, de nombreux systèmes informatiques stockent le hachage d'un mot de passe. Cela empêche quelqu'un qui s'introduit dans un ordinateur d'apprendre le mot de passe de tout le monde.
Les fonctions de hachage ont été proposées comme moyen de lutter contre le spam et comme base des systèmes de paiement numérique. Le mathématicien Peter Wayner a publié un livre intitulé Bases de données translucides Il y a quelques années, il montrait comment les fonctions de hachage pouvaient être utilisées pour stocker des informations dans une base de données d'une manière protégée par l'organisation qui gère la base de données. Un service des admissions d'un collège, par exemple, pourrait stocker les numéros de sécurité sociale des étudiants dans la base de données afin que ces numéros puissent toujours être utilisés comme identifiants sur les candidatures, mais pour que personne au bureau des admissions ne puisse s'asseoir devant un terminal et obtenir une liste des étudiants et leurs nombres. Jusqu'à présent, cependant, aucune de ces approches n'a vraiment décollé.
Dans l'ensemble, les hachages cryptographiques sont l'une des techniques mathématiques les plus intéressantes et les plus utiles que les cryptographes aient imaginées au cours des 20 dernières années et leur trouvaient toujours de nouvelles utilisations.