Hachage


Le terme hachage ou hashing désigne la transformation d’un ensemble de données de n’importe quel volume en une chaîne de caractères d’une longueur fixe et courte référençant l’ensemble de données de départ. À l’aide d’une fonction de hachage, les éléments individuels d’un ensemble de données se voient d’abord attribuer une clé et ensuite des valeurs de hachage, représentant de façon précise les données initiales. Le bloc de données peut être constitué d’une suite de caractères, de listes, de fichiers ou d’autres contenus : les clés, représentant ici ces données, indiquent la position des éléments dans le bloc de données, et qui, avec ces dernières, seront reliées à des valeurs de hachage.

La fonction de hachage reproduit les éléments du bloc de données via une clé et crée des valeurs de hachage. Les données sont "hachées" en petits morceaux et sont ensuite rangées dans une structure de données. Les valeurs de données permettent de retrouver certains éléments beaucoup plus rapidement dans des banques de données, la recherche se limitant à la structure de données et non pas à l’ensemble du bloc de données. Dans le cas où quelqu’un souhaiterait trouver ou modifier des données individuelles, il suffira de faire une recherche uniquement dans la structure – il n’est pas nécessaire de reconstituer les données réelles.

Informations générales sur le sujet[modifier]

Le hachage est utilisé dans différents domaines pour alléger le travail avec les importantes quantités de données et pour permettre une communication numérique sécurisée. Le hachage est par exemple utilisé :

  • Pour le stockage de grandes quantités de données dans des banques de données,
  • Pour les sommes de contrôle (checksums) pour la vérification de l’intégrité de données.
  • Dans la programmation de référencement dynamique d’instructions de programmes (tableaux associatifs).
  • Dans le chiffrement et déchiffrement, afin d’assurer l’intégrité et l’authenticité de messages, d’émetteurs et de récepteurs.

Les applications des fonctions de hachage et des concepts reliés sont extrêmement diverses. Le principe est cependant presque toujours le même : les données sont transformées, raccourcies et modifiées pour économiser de l’espace de stockage. L’accès aux blocs de données "hachés" est ainsi plus rapide.

Au niveau du chiffrement, les fonctions de hachage ont de plus des caractéristiques spécifiques rendant impossible de reconstituer les données sans clé. L’une de ces caractéristiques est également décrite comme résistante aux collisions : avec une puissance informatique classique, il n’est pas possible de décrypter la fonction de hachage et de reconstituer les blocs de données s’y rapportant sur la base de concordances entre valeurs de hachage et / ou blocs de données.

Fonctionnalité[modifier]

Deux applications importantes sont expliquées pour mieux comprendre le principe du hachage :

Le hachage dans les banques de données[modifier]

Le hachage est utilisé dans les banques de données afin de constituer des structures d’index et de données. Ces structures sont décrites comme des tables de hachage, là où les entrées présentes dans les tables de hachage sont reliées par une fonction à hachage éléments des données. Lorsqu’une entrée est ajoutée à une banque de données, cette dernière se voit attribuer une clé via la fonction de hachage.

La clé donne une indication sur la position au sein de la banque de données et facilite par exemple la recherche d’une entrée. Dans le cas où une entrée devait être supprimée, la fonction de hachage profite de cet avantage pour retrouver l’entrée en question et la supprimer.

Le hachage dans les banques de données n’est cependant qu’une variante pour l’organisation et la gestion de données. Plus il existe de données, plus il sera nécessaire de créer des valeurs de hachage. Et c’est ainsi que la probabilité de collisions augmente. Les banques de données grandissantes ne peuvent être gérées par hachage seulement si les tables de hachage se développent et que chaque entrée reçoive un nouveau hachage. C’est ainsi que le hachage est utilisé dans différentes variantes dans les domaines de l’informatique décisionnelle, du traitement analytique en ligne (OLAP) ainsi que celui de l’entrepôt de données.

Exemple[modifier]

Une base de données clients permet d’enregistrer les clients avec leurs noms, adresses et autres paramètres. La recherche d’un client prendrait beaucoup de temps dans le cas où il serait nécessaire de rechercher dans l’ensemble de la base de données : l’ordinateur serait à la recherche d’une correspondance signe par signe. Pour éviter cela, des blocs de données se forment et ils sont appelés des clés. Ces clés sont reportées en valeurs de hachage via la fonction de hachage. Chaque client peut par exemple être classé de manière alphabétique ou en se basant sur d’autres caractéristiques.

Le classement alphabétique des données est la structure des données ou de l’index, facilitant la recherche d’une entrée. Lors d’une recherche, l’ordinateur saute à un point précis au sein la structure de données car il connait la position de ce point grâce à la valeur de données. Dans le cas où l’information retrouvée correspond avec la saisie de recherche de l’utilisateur, le processus de recherche est terminé. Dans le cas contraire, l’attribution n’est pas assez claire ou aucune entrée n’existe pour cette recherche.

Le hachage pour le chiffrement[modifier]

Le hachage est utilisé dans le chiffrement et le déchiffrement sous forme d’algorithmes. Les documents numériques tout comme les fichiers de différents types de contenus (texte, audio et médias visuels par exemple) peuvent être décrits comme une suite de zéros et de uns.

Dans le cas où un document numérique a besoin d’un hachage, les informaticiens procèdent à diverses opérations afin de transférer la suite de zéros et de uns à une suite beaucoup plus courte de zéros et de uns à la longueur définie. Les informations sont modifiées et comprimées pour que l’on puisse certes les reconstituer, mais pas sans en connaitre la clé. Chaque résultat d’une fonction de hachage doit être référencée sans équivoque à un bloc de données. C’est pourquoi les fonctions de hachage cryptographiques sont idéalement aussi des fonctions unidirectionnelles : le classement est clair et il n’y aucun risque de collision. Si à présent, un message possédant une valeur de hachage claire est envoyé, le récepteur et l’émetteur peuvent vérifier l’intégrité de ce message – le fait qu’il n’ait pas été modifié par un tiers – et le récepteur et l’émetteur peuvent utiliser la signature numérique pour s’assurer que le message arrive bien intact chez le récepteur et qu’il a bien été envoyé par le serveur en question. La fonction de hachage cryptographique possède des caractéristiques spécifiques rendant pratiquement impossible de calculer la clé à partir d’une valeur de hachage, et ainsi l’information initiale. Aucun tiers ne peut également faire irruption dans la communication, ni l’écouter.

Exemple[modifier]

L’algorithme de hachage MD5 (Message-Digest Algorithm 5) est un algorithme de chiffrement et de déchiffrement créant à partir d’une chaine de caractères une valeur de hachage ayant toujours une longueur de 128 bits. Une légère modification d’une chaîne a pour résultat une toute autre valeur de hachage.

  • La chaîne "Thomas Dupont" va être transposé dans la valeur de hachage 6f9ba3588f545844f2eeeaa71d6e5ada
  • "Julie Lambert" aura la valeur de hachage 93638fd8b5127c0ed5ec74549646b209
  • "Super Héros" celle de 98c85f741fc5d7194fd9e0b9add2230
  • "Exemple hasardeux" sera traduit par une valeur de hashing de d4fd38d5ecf1359de8d795bf5c8b16ca

Les algorithmes MD5 ne sont actuellement plus vraiment considérés comme sûrs quand ils ne sont pas affinés par des procédés complémentaires (comme par exemple le « salt » pour l’enregistrement des mots de passe). La sécurité des fonctions de hachage ne dépend pas seulement de savoir si deux chaînes créent le même hash (ou collision), mais également de quels procédés de contrôle d’authenticité et d’intégrité on utilise. C’est la raison pour laquelle on parle à présent plutôt de système de chiffrement que d’algorithmes isolés ou de procédés de hachage.

Signification pour la programmation[modifier]

Le hachage n’est pas seulement utilisé dans différents domaines de la technologie de l’information et de la sécurité. Les algorithmes de hachage existent également dans des versions les plus diverses. C’est notamment le cas dans le chiffrement où les différents procédés et algorithmes de hachage sont utilisés pour améliorer la sécurité. Mais le niveau de sécurité est en principe relatif : les cryptologues travaillent constamment pour augmenter la sécurité des systèmes et les hackers comme les crackers essaient de révéler des failles de sécurité et de démasquer les fonctionnalités des algorithmes. S’il est question d’algorithmes de hachage sécurisés, ce genre de déclarations ne concernent que l’état actuel de la recherche. Le choix des algorithmes dépend également de la puissance informatique des outils utilisés et du temps nécessaire au déchiffrement.

Pour d’autres applications comme les banques de données ou la vérification de données communiquées, il est possible d’utiliser en partie des algorithmes dont la valeur de hachage est nettement plus courte que les procédés de hachage cryptographiques.

Lien web[modifier]