Le hachage est un mécanisme de chiffrage essentiel, qui peut prendre n’importe quel document en entrée, et produire en sortie un hash (brouillage indéchiffrable) d’une taille précise. Avec un atout : il est impossible depuis ce hash de remonter à l’original. Mais si tel est le cas, quoi cela peut-il bien servir ?
De tous temps, la préoccupation a existé de pouvoir brouiller des informations, de les rendre secrètes et indéchiffrables. Le hashing (en français « hachage ») été développé à cette fin. Cette méthode de chiffrement est particulière: elle produit un brouillage des des informations précis et ultra complexe.
Ainsi, la phrase : « Je vais au marché », soumise à un hachage selon l’algorithme SHA-256 va produire un « hash » (code ) de 256 bits précis :
C14420DF69534899A564F138FB68E5FEC7C500DE24D0A0F3438F8544A33B1C74
En entrée du hachage, nous pourrons avoir une phrase telle que celle-ci, mais aussi un simple mot comme « CHAT », ou encore un document aussi vaste que l’Encyclopedia Britannica. A l’arrivée, nous aurons toujours un hash de 256 bits, immuable et unique.
Le point particulier, c’est qu’il sera impossible, à partir du hash d’un document de revenir à l’original. En d’autres termes, il ne sera pas envisageable de reconstituer la phrase « Je vais au marché », et encore moins l’Encyclopedia Britannica. Si tel est le cas, quel peut bien être l’intérêt du hachage ?
De l’intérêt du hachage
Le hachage fournit un niveau très élevé de protection de divers systèmes car il empêche un intrus de pirater des données essentielles. Voici quelques cas pratiques dans lesquels son usage est inestimable.
Mots de passe
Lorsque vous vous inscrivez sur un site Web, il vous est demandé de créer un mot de passe. Et bien, ce que le site en question va stocker n’est pas votre mot de passe lui-même mais un hash dudit mot de passe issu d’un algorithme tel que SHA-256 (et habituellement le site va même combiner ce hachage à une chaîne de caractères aléatoires appelée le « sel »). Bref, le site ne stocke pas votre mot de passe mais un hash qui rend impossible de remonter jusqu’à votre mot de passe (sauf si ledit sésame était ultra simple, du genre 123456). Lorsque vous vous connectez plus tard sur le site, le hachage est à nouveau calculé. S’il correspond au hachage stocké sur le site, vous pouvez y entrer.
Ainsi donc, un hacker qui déroberait cette base de données de hash serait dans l’incapacité de reconstituer les mots de passe correspondants !
Intégrité des informations
Assez souvent, vous devez télécharger d’énormes quantités de données. Comment savoir si vous avez bien reçu un duplicata parfait de l’original ? Tout simplement en calculant un hachage de chaque côté. Si les deux codes sont identiques, c’est la preuve que le fichier a été transmis tel quel.
Signature numérique
Dans des applications telles que la cryptomonnaie, le hachage aide à produire, depuis une clé privée secrète qui identifie le propriétaire d’un portefeuille, une clé publique unique qui peut circuler sur le réseau et grâce à laquelle des transactions peuvent être menées.
Indexation et recherche
Le hachage permet le calcul d’un emplacement précis pour le stockage de données. Cet emplacement sera toujours le même et donc, à partir d’une table de hachage, il pourra être repéré instantanément.
Détection de doublons
Étant donné que l’algorithme de hachage produit toujours le même code d’une certaine taille, quelle que la soit la taille du fichier d’origine, la détection de doublons est facilitée.
Caractéristiques des algorithmes de hachage
Les algorithmes de hachage répondent à plusieurs caractéristiques précises :
Un algorithme strict
La suite d’opérations effectuées par l’algorithme est régie par des règles strictes. Celles-ci ne peuvent aucunement être modifiées.
Une valeur et une longueur finale uniques
Quel que soit le nombre de caractères du texte soumis en entrée, les données générées en sortie seront toujours les mêmes et auront une longueur prédéterminée.
Pas de collision possible
Idéalement, un bon algorithme de hachage ne doit pas permettre à deux documents différents de produire le même hash. Si cela se produit, on parle de « collision ».
Illisibilité
Une fois les données converties par l’algorithme de hachage, il est virtuellement impossible de reconstituer les données d’origine.
Quels sont les principaux algorithmes de hachage ?
MD-5
Conçu en 1991 par RSA Data Security, MD-5 a longtemps été mis à contribution pour sécuriser des données car il avait l’avantage d’être extrêmement rapide. Toutefois, la montée en puissance des processeurs a aidé à repérer certaines faiblesses. Dès 2008, des chercheurs ont montré qu’il était possible à partir de cet algorithme, de créer des collisions et donc à partir de là, de fausses certifications SSL. Par ailleurs, étant donné qu’un hachage produit toujours le même résultat exact, des dictionnaires de hash MD-5 sont même apparus. De ce fait, les experts du domaine sont enclins à penser qu’il est préférable de l’abandonner.
SHA
SHA est l’abréviation de secure hash algorithm. Ces algorithmes figurent parmi les plus utilisés de façon courante.
SHA 1 est apparu en 1993. Il produit un hash de 160 bits. Pourtant, à partir de 2005, quelques vulnérabilités ont été découvertes.
SHA-2 est plus résistant et peut produire des codes de différentes tailles précises. Il est largement utilisé par de nombreuses applications sécurisées, et à ce jour, aucune attaque réussie n’a pu être menée à son égard.
SHA-256 produit un code de 256 bits. C’est l’algorithme qui a été adopté dans de nombreuses applications impliquant des blockchains. C’est aussi SHA-256 que l’on trouve à la base de SSL, la norme qui sécurise les accès aux sites Web sécurisés (ceux dont l’adresse commence par https://)
SHA-3 est le petit dernier de la famille. Standardisé en 2015, il offre un niveau de protection supérieur grâce à des mécanismes de brouillage très avancés.
RIPEMD-160
Cet algorithme développé en Belgique vers le milieu des années 90 produit un code de 160 bits, particulièrement efficace face aux attaques. À ce jour, personne ne serait parvenu à le craquer. De ce fait, il est prisé par certaines applications telles que les transactions en Bitcoin.