Assiste.com
cr 01.04.2012 r+ 22.10.2024 r- 22.10.2024 Pierre Pinard. (Alertes et avis de sécurité au jour le jour)
Sommaire (montrer / masquer) |
---|
Hashcode (Condensat en français) désigne le calcul de l'empreinte du contenu d'un fichier, selon divers algotithmes.
Un « hashcode » est une valeur obtenue par application d'un algorithme de calcul sur le contenu d'un objet (fichier …), sans tenir compte de son enveloppe.
Le moyen le plus simple et rapide d'obtenir un/des hashcode(s) du contenu d'un fichier, selon de nombreux algorithmes, est d'installer HashTab. Une fois installé, un simple clic droit sur un nom de fichier, dans l'explorateur de fichiers de Windows Propriétés, fait apparaître l'onglet Hachages dans lequel HashTab peut calculer les hashcodes, selon vos choix (paramétrables), dans 1 à plusieurs des 30 algorithmes qu'il sait utiliser (Adler32; Blake2sp; Btih; CRC-32; CRC-64; ED2K; Gost; Keccak-224; Keccak-256; Keccak-384; Keccak-512; MD2; MD4; MD5; Ripemd-128; Ripemd-160; Ripemd-256; Ripemd-320; SHA-1; SHA-256; SHA-256 base 64; SHA-384; SHA-512; SHA3-224; SHA3-256; SHA3-384; SHA3-512; TTH; Tiger; Whirlpool).
Explorateur Windows Clic droit sur le fichier dont on veut un condensat Propriétés Onglet Hachage Paramètres Dans la majorité des cas, cochez uniquement MD5, SHA-1, SHA-256.
Un algorithme de hachage est un algorithme qui génère une valeur, appelée hashcode ou condensat, courte, mais normalement unique, représentant la valeur d'origine (un mot de passe, le contenu d'un fichier, une clé de session, etc.). Avec un bon algorithme de hachage, la plus infime modification de la données en entrée entraîne la modification complète de la valeur de hachage résultante. Pour cette raison, les hachages sont utiles dans la détection des modifications apportées à une donnée, notamment un message. En outre, un bon algorithme de hachage rend impossible la construction, par calculs, de deux données distinctes qui donneraient le même hachage. Les algorithmes de hachage par défaut sont MD5, SHA-1 et SHA-256.
Depuis 2004 pour MD5 et 2012 pour SHA-1, ces deux algorithmes commençent à être en retrait (des collisions commencent à pouvoir être calculées à volonté pour MD5, dès 2004). L'usage de SHA-256, résistant aux attaques, s'impose lentement en remplacement des algorithmes faillibles.
Si on applique le même algorithme à une collection de données, des hashcodes différents doivent signifier que les données sont différentes. Par contre, si deux hashcodes sont identiques, il y a un risque (de fort à infime selon l'algorithme), que deux données soient différentes malgré tout.
Les anciens algorithmes comme CRC-16 ou CRC-32, classés par similitudes et facilités avec les algorithmes de hashage, n'en sont pas et servent à générer de simples clés de contrôle très souvent identiques (nommées « collisions ») pour des données différentes. Ils sont utilisés pour déceler une perte/erreur lors du transfert d'une donnée (trasfert de fichiers, etc.). Cette faiblesse de CRC-32 fut d'ailleurs la base du travail du chercheur Guillermito lorsqu'il écrivit son fameux article descendant en flamme l'antivirus sans base de signature Viguard : « Comment baiser Viguard ».
Exemples d'usages :
Envoi d'un fichier dont on veut s'assurer la bonne transmission
Celui qui envoie un fichier calcule le hashcode du fichier et envoie le fichier et son hashcode par un/des moyen(s) quelconque(s).
Celui qui reçoit le fichier recalcule le hashcode du fichier reçu et compare le hashcode reçu avec celui recalculé par lui-même (avec le même algorithme). S'ils sont identiques, le fichier reçu est strictement identique à celui d'origine sinon il faut le renvoyer (ce qui se fait rapidement et automatiquement avec des algorithmes CRC).
Gagner du temps et de la bande passante.
Si un service en ligne vous demande de lui transmettre un fichier ou son hashcode, il est inutile d'occuper la bande passante et de perdre du temps à transmettre le fichier. Le temps de calcul de l'empreinte est négligeable par rapport au temps de transfert de la donnée elle-même, surtout si elle est volumineuse. Typiquement, le service d'analyses multi-antivirus VirusTotal (et tous les services multi-antivirus gratuits en ligne) permet de rechercher une analyse précédente par son hashcode (MD-5, SHA-1 ou SHA-256). Il est probablement inutile d'envoyer le fichier s'il a déjà été uploadé par quelqu'un d'autre : son hashcode suffit à l'identifier. Ce n'est que si le hashcode envoyé est inconnu qu'il faut envoyer le fichier lui-même.
|
La réputation de l'algorithme de calcul d'un hashcode (calcul d'un condensat - fonction de hachage) est de ne jamais produire deux hashcodes identiques si les objets (fichiers) contiennent la moindre différence. La fonction de hachage doit donc produire une clé unique d'identification d'une donnée unique (calcul homogène).
|
Réputation des fonctions de hachage
On voit souvent, en matière de sécurité informatique, principalement avec les services d'analyses antivirus, qu'il ne faut pas/plus identifier le contenu d'un fichier avec certaines fonctions de hachage (hashcodes, condensats, Empreinte cryptographique), dont les fonctions MD5 et SHA-1, car les créations de collisions, les attaques en force brute ou les utilisations de tables Arc-en-ciel permettent de casser l'unicité du condensat ou de remonter à son contenu crypté. Le tableau suivant, établi par les auteurs de Whirlpool (dernière version de ce tableau le 7 novembre 2017), donne l'état de l'art des principales fonctions de hachages et leurs poursuites de résistance ou leurs échecs aux attaques.
Le symbole est utilisé pour désigner une attaque qui a été conduite avec succès pour casser une fonction de hachage (par exemple, en produisant explicitement une collision), ou si la complexité de l'attaque est si faible qu'il ne serait pas difficile de la conduire avec les technologies actuelles.
Le symbole indique une rupture théorique (plus rapide que les attaques par force brute ou les attaques par le paradoxe des anniversaires) ou une indication explicite des auteurs de la fonction qu'il faut l'éviter.
Le symbole signifie que la conception de la fonction ou une version réduite de celle-ci a été analysée par des tiers, repoussant les limites des techniques de cryptanalyse connues sans indiquer de faiblesse dans la conception complète.
Nom | Ref. | Version | Auteur(s) | Taille du bloc | Taille du condensat | Tours | Attaque(s) |
---|---|---|---|---|---|---|---|
AR | 1992 | ISO | ? | ? | ? | ||
Boognish | 1992 | Daemen | 32 | up to 160 | NA | ||
Cellhash | 1991 | Daemen, Govaerts, Vandewalle | 32 | up to 256 | NA | ? | |
FFT-Hash I | 1991 | Schnorr | 128 | 128 | 2 | ||
FFT-Hash II | 1992 | Schnorr | 128 | 128 | 2 | ||
FSB | 2005 | Augot, Finiasz, Sendrier | 336, 680, 1360 | 320, 400, 480 (†) | NA | ? | |
GOST R 34.11-94 | 1990 | Government Committee of Russia for Standards | 256 | 256 | NA | ? | |
HAS-160 | 2005 | Telecommunications Technology Association | 512 | 160 | 4×20 | ? | |
HAVAL | 1994 | Zheng, Pieprzyk, Seberry | 1024 | 128, 160, 192, 224, 256 | 3×32, 4×32, 5×32 | ||
LASH-n | 2006 | Bentahar, Page, Saarinen, Silverman, Smart | 4×n | n | NA | ? | |
MAA (‡) | 1988 | ISO | 32 | 32 | NA | ||
MAELSTROM-0 | 2006 | Gazzoni Filho, Barreto, Rijmen | 1024 | up to 512 | 10 | ? | |
MD2 | 1989 | Rivest | 512 | 128 | 18 | ||
MD4 | 1990 | Rivest | 512 | 128 | 3×16 | ||
1992 | Rivest | 512 | 128 | 4×16 | |||
N-Hash | 1990 | Miyaguchi, Ohta, Iwata | 128 | 128 | ? 8 | ||
PANAMA | 1998 | Daemen, Clapp | 256 | unlimited | NA | ||
Parallel FFT-Hash | 1993 | Schnorr, Vaudenay | 128 | 128 | 5 | ? | |
RADIOGATÚN[w] | 2006 | Bertoni, Daemen, Peeters, van Assche | 3×w | unlimited | NA | ? | |
RIPEMD | 1990 | The RIPE Consortium | 512 | 128 | 4×16 | ||
RIPEMD-128 | 1996 | Dobbertin, Bosselaers, Preneel | 512 | 128 | 4×16 | ? | |
RIPEMD-160 | 1996 | Dobbertin, Bosselaers, Preneel | 512 | 160 | 5×16 | ? | |
SHA-0 | 1991 | NIST/NSA | 512 | 160 | 4×20 | ||
1993 | NIST/NSA | 512 | 160 | 4×20 | |||
SHA-1-IME | 2005 | Jutla, Patthak | 512 | 160 | 80 | ? | |
2004 | NIST/NSA | 512 | 224 | 64 | |||
2000 | NIST/NSA | 512 | 256 | 64 | |||
2000 | NIST/NSA | 1024 | 384 | 80 | |||
2000 | NIST/NSA | 1024 | 512 | 80 | |||
SMASH | 2005 | Knudsen | 256 | 256 | NA | ||
Snefru-n | 1990 | Merkle | 512-n | n | ? 8 | ||
StepRightUp | 1995 | Daemen | 256 | 256 | NA | ||
Subhash | 1992 | Daemen | 32 | up to 256 | NA | ? | |
Tiger | 1996 | Anderson, Biham | 512 | 192 | 3×8 | ||
2000 | Barreto, Rijmen | 512 | 512 | 10 | ? | ||
Name | Ref. | Version | Author(s) | Block Size | Digest Size | Rounds | Attack(s) |
(†) Par sa propre nature, FSB (Fast Syndrome-Based) est moins résistant à la recherche de collision que les attaques par le paradoxe des anniversaires. Pour cette raison, sa taille de résumé (condensat) doit toujours être supérieure à deux fois la sécurité de bit souhaitée.
(‡) MAA est un code d'authentification de message (MAC - Message Authentication Code) plutôt qu'une fonction de hachage. Il a été inclus ici en raison de son importance dans le cadre de la norme ISO 8731-2.
Categorie | Autheur(s) | Ref. |
---|---|---|
Design | Damgård | |
Analyses | Black, Rogaway, Shrimpton | |
Attaques | Hoch, Shamir |
|
Un des usages de la cryptographie permise avec les hashcodes est de partir d'une donnée unique, quelle que soit sa taille, et d'en calculer un hashcode (condensat) tout aussi unique.
Exemples :
Soit la phrase : Papa aime Maman
Son « hashcode », selon l'algorithme MD5, est : 99685cdcbee4ac3fc7934da83b703a10
Si l'on modifie le moindre caractère de la phrase d'origine, on obtiendra un hashcode totalement différent.
Mettons un A majuscule à aime :
Soit la phrase : Papa Aime Maman.
Son « hashcode », selon l'algorithme MD5, devient : eebe99faedaa305eb8c8799b2c7ba97a
Ajoutons un point final à la phrase :
Soit la phrase : Papa aime Maman.
Son « hashcode », selon l'algorithme MD5, devient : da6d8d582d8440619b278dbd324d3596
Un « hashcode » est une valeur calculée par un algorithme de hachage (les plus universellement utilisés sont CRC16, CRC32, NTLM, MD5, SHA-1, SHA-2, SHA-256) appliqué à une donnée (contenu d'un fichier, chaîne de caractères comme un « mot de passe », etc.), uniquement la donnée et toute la donnée. Peu importe le nom du contenant (s'il y en a un - nom du fichier...), ses attributs, ses dates prétendues de création ou de dernière modification, etc. qui sont toutes des données externes à la donnée elle-même (elles forment l'enveloppe dont on ne doit pas tenir compte - on ne tient compte que du contenu).
La réputation de l'algorithme de calcul d'un hashcode est de ne jamais produire deux hashcodes identiques si les objets (fichiers) contiennent la moindre différence. La fonction de hachage doit donc produire une clé unique d'identification d'une donnée unique (c'est le calcul homogène).
|
Exemples d'algorithmes de hachage | |
---|---|
Produit un hashcode (condensat) de 16 bits (4 caractères hexadécimaux) | |
Produit un hashcode (condensat) de 32 bits (8 caractères hexadécimaux) | |
Produit un hashcode (condensat) de 128 bits (32 caractères hexadécimaux) | |
Produit un hashcode (condensat) de 160 bits (40 caractères hexadécimaux) | |
Produit un hashcode (condensat) de 256 bits (64 caractères hexadécimaux) | |
Produit un hashcode (condensat) de 512 bits (128 caractères hexadécimaux) | |
Etc. | ... |
|
Exemples de divers hashcodes d'un même contenu selon divers algorithmes de hachage : | |
---|---|
Contenu | Secret 1 |
Bytes | 53:65:63:72:65:74:20:31 (longueur=8) |
Adler32 | 0d5002b8 |
f12d6570 | |
Haval | 45d48542b5ee305a769ad2a772a2f240 |
MD2 | 4934bfbb60dacd24004f3f9eba0dae5b |
MD4 | 681960160ad1ee6aba6574beae65299e |
3827558347b988089547698445ea8dc4 | |
RipeMD128 | 1e7a09422c54864d1ff83c9d61bcf409 |
RipeMD160 | a4cf327f6bb9ff9903a64fd5e9f409d7f36dd5ef |
7136a0430119d37b00f9723177bc14eb4e5a3a84 | |
SHA-256(SHA-2) | 5a1c45473a963981e0a182815a9431caa6ba32c7c464f9aa8e24e9b9c14f5df7 |
SHA-384(SHA-2) | 70e52c8258950198be14b23167b5ef78ec4f73d46f3e4263c3ef7fae539d9f25413a2804cd08454ed259f79db0b06316 |
SHA-512(SHA-2) | 22ffbc4c4f0c243d8dff78aac024c7699db6dffba5e25032353eceab3237ee7b02c72c24a3ce8928a84f171363065bec3b3031b47c18e16b8fd98f98d6504b66 |
Tiger | 7ef5afbb8327bd37166ab63cb27cd64752284f237d8da6d6 |
baac0f62f8a9fb13a9b6d797380b4a335f915332c791487aa9214c883caf2d1aa9676fc03819500c25eafd0c9aea69b87efe3b5000e26fff4aa7f9ee7484a46b |
|
L'intérêt des « hashcodes » est triple :
Intégrité des données
Il est impossible de modifier la donnée (injection d'une malveillance, tel un virus, modification d'un seul bit ou, tout simplement, nouvelle version de la donnée...) en lui conservant un même « hashcode ». Par exemple : un fichier est proposé en téléchargement et son « hashcode » est affiché sur le site proposant ce fichier (c'est le cas chez Assiste.com). Une fois le fichier réceptionné, vous utilisez HashTab pour recalculer ce « hashcode » avec le même algorithme MD5 ou SHA-1. Si les deux « hashcodes » sont identiques, le fichier réceptionné est strictement le même que celui d'origine. C'est le principe du « Contrôle d'intégrité des données » (qui ne doit pas être confondu avec l'innocuité des données - vous pouvez seulement vous assurer que le téléchargement s'est bien passé, rien d'autre - si le fichier téléchargé est un virus, vous vérifiez ainsi que vous avez reçu un virus en parfait état ! Faites analyser gratuitement et immédiatement le fichier réceptionné par plus de 70 antivirus simultanés, avec le service VirusTotal ou tout autres services multiantivirus gratuits en ligne, avant de l'exécuter (avant de l'ouvrir) !
Calcul à sens unique (théoriquement)
Il n'est, théoriquement, pas possible de faire le calcul inverse : de remonter d'un hashcode à la chaîne de caractères d'origine (il n'est pas possible (théoriquement) de retrouver la chaîne de caractres d'origine à partir de son hashcode). Voir, dans les techniques d'attaques des mots de passe, que ce vœu pieux est battu en brèche.
Unicité du chiffre clé
De purs travaux de laboratoire ont permis la création de « hashcodes » identiques (appelés « collisions ») à partir de données différentes. Ce risque est total avec les algorithmes antédiluviens et abandonnés comme CRC-16 et CRC-32. Ce risque existe avec les algorithmes MD5 depuis 2004 et SHA-1 depuis 2012 avec lesquels il est désormais possible de créer des « collisions ». Pour prendre un peu d'avance sur les futurs développements matériels et logiciels des cybercriminels, on recommande désormais le calcul des hashcodes avec SHA-256.
|
Lorsque vous créez un « mot de passe » pour protéger l'accès à une ressource (votre ordinateur, un fichier, un compte sur un site ou un forum, un panneau de gestion d'un compte en banque d'entreprise ou de particulier, un document secret d'un chercheur, d'un journaliste, d'un avocat..., les correspondances d'un diplomate ou d'un homme politique etc.), le « mot de passe » n'est pas (normalement) stocké en clair. Le « site de confiance » le crypte, sous forme d'un « hashcode », le plus souvent avec l'algorithme MD5 ou SHA-1, et stocke uniquement votre identifiant et le « hashcode », mais ne stocke pas en clair le mot de passe lui-même.
Lorsque vous revenez vous identifier pour utiliser cette ressource protégée, vous saisissez (composez) à nouveau votre identifiant (login) et votre « mot de passe ». Le site refait un calcul de « hashcode » avec le même algorithme.
Le site compare alors le « hashcode » du mot de passe de référence à celui qui vient d'être calculé. Si les deux sont identiques, c'est que les deux « mots de passe » sont identiques. L'autorité vous donne alors accès à la ressource, sinon elle vous en interdit l'accès.
Note 1
D'où l'intérêt des logiciels en « Open Source » où l'on peut voir comment sont traités les données sensibles tandis qu'on ne peut qu'avoir des soupçons de malveillances avec les logiciels « propriétaire » et les sites pour lesquels aucune confiance ne peut être accordée (comme tous les réseaux sociaux, les éditeurs de logiciels proches de leurs gouvernements, les nébuleuses du « Cloud Computing » etc. ...)
Note 2
C'est la raison pour laquelle, lorsque vous perdez votre « mot de passe », il n'est pas possible de le retrouver car, s'il est possible de calculer un MD5 ou un SHA-1 à partir d'un « mot de passe », il n'est théoriquement pas possible de retrouver (recalculer) le « mot de passe » d'origine à partir de son MD5 ou de son SHA-1.
Note 3
Il serait préférable que, lors de la saisie de votre mot de passe, la communication entre votre ordinateur et celui du site distant se fasse dans un protocole de communication sécurisé (HTTPS), sinon une attaque par « sniffer » lira vos mots de passe en clair, avant qu'ils ne soient cryptés. Regardez en bas à droite de votre navigateur si un cadenas fermé apparaît. Mais le protocoleHTTPS ne sera mis en œuvre que par des sites professionnels. Ce ne sera pas le cas des millions de forums, blogs etc. ... sur lesquels il faut également s'identifier (d'où l'intérêt d'utiliser des mots de passe différents).
Note 4
Certains sites Internet usurpent l'apparence de sites ayant pignon sur rue est utilisent des URL trompeuses. Sur de tels sites de « phishing », vers lesquels vous êtes souvent dirigés depuis un e-mail trompeur, vos identifiant et mot de passe sont stockés en clair et exploités immédiatement par des cybercriminels. Et absolument rien ne permet d'être certain de ce que font les très grands sites à la solde des gouvernements, comme Microsoft (Microsoft vous espionne) ou Google (Google vous espionne).
|
Les outils les plus simples de calcul de hashcodes, et de très loin, sont ceux qui s'installent en tant que « propriété » additionnelle d'un fichier dans l'explorateur de fichiers de Windows.
SummerProperties
SummerProperties ajoute un onglet « CheckSums » aux propriétés d'un fichier, dans l'explorateur de fichiers de Windows, et propose 4 algorithmes de hashcodes : CRC-16, CRC-32, MD5 et SHA-1.
SummerProperties est gratuit, mais, bien qu'encore fonctionnels, les algorithmes qu'il propose ne sont plus suffisants :
CRC-16 et CRC-32 n'ont aucun intérêt et ne sont pas de véritables algorithmes de hachage, mais des « Contrôle de Redondance Cyclique ». On peut les oublier.
Des collisions peuvent être forgées à la demande contre les hachages MD5 et SHA-1.
On laisse tomber SummerProperties.
Voir SummerProperties.
HashTab
HashTab ajoute un onglet « Hachages » aux propriétés d'un fichier, dans l'explorateur de fichiers de Windows, et propose 30 algorithmes de hashcodes : (Adler32; Blake2sp; Btih; CRC-32; CRC-64; ED2K; Gost; Keccak-224; Keccak-256; Keccak-384; Keccak-512; MD2; MD4; MD5; Ripemd-128; Ripemd-160; Ripemd-256; Ripemd-320; SHA-1; SHA-256; SHA-256 base 64; SHA-384; SHA-512; SHA3-224; SHA3-256; SHA3-384; SHA3-512; TTH; Tiger; Whirlpool). Ce produit est gratuit.
Voir HashTab.
VT Hash Check (VirusTotal Hash Check)
VT Hash Check ajoute une propriété (sous le nom de Check File Hash) aux fichiers, dans l'explorateur de fichiers de Windows. VT Hash Check calcule un hashcode d'un fichier désigné par l'utilisateur, selon l'algorithme choisi parmi les 3 proposés (MD5, SHA-1, SHA-256 [recommandé]) et soumet instantanément ce hashcode au service multiantivirus gratuit en ligne VirusTotal(70 antivirus simultanés en juillet 2020).
Vous êtes vivement incités à installer VT Hash Check (gratuit; sous Windows).
Hashcode (informatique, cryptographie)
Les encyclopédies |
---|