Si vous transférez un fichier d'un ordinateur à un autre, comment vous assurez-vous que le fichier copié est le même que la source ? Une méthode que vous pouvez utiliser est appelée hachage, qui est essentiellement un processus qui traduit les informations sur le fichier en un code. Deux valeurs de hachage (du fichier d'origine et de sa copie) peuvent être comparées pour s'assurer que les fichiers sont égaux.
1. Qu'est-ce que le hachage ?
Le hachage est un algorithme qui transforme une chaîne de caractères en valeur ou en clé de longueur fixe, généralement plus courte, représentant le contenu ou la chaîne d'origine. Un fichier contient essentiellement des blocs de données. Le hachage transforme ces données en une valeur ou une clé de longueur fixe beaucoup plus courte qui représente la chaîne d'origine. La valeur de hachage peut être considérée comme le résumé distillé de tout ce qui se trouve dans ce fichier.
Un bon algorithme de hachage présenterait une propriété appelée effet d'avalanche, où la sortie de hachage résultante changerait de manière significative ou entièrement même lorsqu'un seul bit ou octet de données dans un fichier est modifié. Une fonction de hachage qui ne le fait pas est considérée comme ayant une mauvaise randomisation, ce qui serait facile à casser par des pirates.
Un hachage est généralement une chaîne hexadécimale de plusieurs caractères. Le hachage est également un processus unidirectionnel, vous ne pouvez donc jamais revenir en arrière pour récupérer les données d'origine.
Un bon algorithme de hachage doit être suffisamment complexe pour ne pas produire la même valeur de hachage à partir de deux entrées différentes. Si c'est le cas, cela s'appelle une collision de hachage. Un algorithme de hachage ne peut être considéré comme bon et acceptable que s'il peut offrir un très faible risque de collision.
2. Quels sont les avantages du hachage ?
L'une des principales utilisations du hachage est de comparer deux fichiers pour l'égalité. Sans ouvrir deux fichiers de documents pour les comparer mot à mot, les valeurs de hachage calculées de ces fichiers permettront au propriétaire de savoir immédiatement s'ils sont différents.
Le hachage est également utilisé pour vérifier l'intégrité d'un fichier après son transfert d'un endroit à un autre, généralement dans un programme de sauvegarde de fichiers, plateforme d'hébergement des données... Pour s'assurer que le fichier transféré n'est pas corrompu, un utilisateur peut comparer la valeur de hachage des deux fichiers. S'ils sont identiques, le fichier transféré est une copie identique.
Dans certaines situations, un fichier crypté peut être conçu pour ne jamais modifier la taille du fichier ni la date et l'heure de la dernière modification (par exemple, les fichiers de conteneur de lecteur virtuel). Dans de tels cas, il serait impossible de dire en un coup d'œil si deux fichiers similaires sont différents ou non, mais les valeurs de hachage permettraient facilement de distinguer ces fichiers s'ils sont différents.
3. Types de hachage
Il existe de nombreux types d'algorithmes de hachage tels que RipeMD, Tiger,sha256, xxhash et bien d'autres, mais les types de hachage les plus couramment utilisés pour les contrôles d'intégrité des fichiers sont MD5, SHA-2 et CRC32.
MD5 : Une fonction de hachage MD5 encode une chaîne d'informations et l'encode dans une empreinte digitale de 128 bits. MD5 est souvent utilisé comme somme de contrôle pour vérifier l'intégrité des données. Cependant, en raison de son âge, MD5 est également connu pour souffrir de nombreuses vulnérabilités de collision de hachage, mais il reste l'un des algorithmes les plus utilisés au monde.
SHA-2 – SHA-2 : développé par la National Security Agency (NSA), est une fonction de hachage cryptographique. SHA-2 inclut des modifications importantes par rapport à son prédécesseur, SHA-1. La famille SHA-2 se compose de six fonctions de hachage avec des résumés (valeurs de hachage) de 224, 256, 384 ou 512 bits : SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224, SHA -512/256.
CRC32 : Un contrôle de redondance cyclique (CRC) est un code de détection d'erreur souvent utilisé pour détecter les modifications accidentelles des données. L'encodage de la même chaîne de données à l'aide de CRC32 entraînera toujours la même sortie de hachage, ainsi CRC32 est parfois utilisé comme algorithme de hachage pour les vérifications d'intégrité de fichier. De nos jours, CRC32 est rarement utilisé en dehors des fichiers Zip et des serveurs FTP.
4. Utilisation du hachage dans les logiciels
Dans le domaine des logiciels, les éditeurs donnent toujours le lien de téléchargement officiel avec un hash de vérification afin que l'utilisateur puisse s'assurrer d'une version télécharger depuis une autre plateforme n'est pas falsifiée. Vous pouvez le constater par exemple chez la socié oracle qui donne toujours le kit de développement JDK avec son hash:
D'autres domaines où le hachage est utilisé reprennent dans FTP, la vérification de l'intégrité des données, les scripts et occasionnellement pour l'authentification dans les profils Cloud (les scripts et la sauvegarde cloud sont pris en charge).
5. Comment obtenir le hash d'un fichier
- lancer windows powershell et tapez la commande:
1 |
Get-Filehash -path c:\downloads\something.exe -algorithm hash_type |
( remplacer hash_type par le type du hash qui peut être: sha256, SHA1, SHA384, SHA512, MACTripleDES, MD5 or RIPEMD160...)
6. Pour conclure
Le hachage est un outil utile pour vérifier que les fichiers sont correctement copiés entre deux ressources. Il peut également être utilisé pour vérifier si les fichiers sont identiques sans les ouvrir et les comparer.
Younes Derfoufi
CRMEF OUJDA