Qu’est-ce qu’une fonction de hachage (hash function) ?
L’augmentation phénoménale des quantités de données traitées dans les réseaux mondiaux et locaux ne cesse de soulever des questions comme : avec quelle rapidité peut-on accéder à ces grands volumes de données et dans quelle mesure la sécurité de ce transfert de données est-elle garantie ? C’est ici qu’intervient la fonction de hachage, avec d’autres technologies de sécurité. Découvrez ses caractéristiques et son utilité.
Le terme anglais « hash » signifie « hacher ». Dans le cadre de ce processus, les données sont donc « hachées » par la fonction de hachage avant d’être ramenées à une longueur uniforme, quelle que soit la taille de la valeur initiale. Cette fonction est utilisée dans de très nombreux domaines des technologies de l’information tels que :
- La communication chiffrée entre le serveur web et le navigateur ainsi que la génération d’identifiants de session pour les applications web et la mise en cache de données (caching)
- La protection des données sensibles comme les mots de passe, les analyses web, les moyens de paiement
- La signature des messages
- La détection d’ensembles de données similaires ou identiques par les fonctionnalités de recherche
Fonction de hachage : la fonction de hachage convertit des séquences de caractères de différentes longueurs en séquences de même longueur. Par exemple, la fonction de hachage confère à des mots de passe différents une quantité définie de caractères autorisés. Une conversion de la valeur de hachage dans le sens inverse, c’est-à-dire vers la séquence de caractères initiale, est exclue.
Quelles sont les caractéristiques d’une fonction de hachage ?
Des exigences définies sont imposées à une fonction de hachage pour qu’elle présente des caractéristiques données. Ces exigences sont les suivantes :
Sens unique de la fonction de hachage
Une valeur de hachage générée ne doit pas permettre de générer à nouveau le contenu des données initial. Dans l’exemple ci-dessus, il doit donc être impossible de retrouver le mot de passe « susi_562#alone » à partir de la valeur de hachage générée « $P$Hv8rpLanTSYSA/2bP1xN.S6Mdk32.Z3 ».
Absence de collisions
En aucun cas, une valeur de hachage identique ne doit être attribuée à des données initiales différentes. Chaque saisie doit générer une autre valeur de hachage. Lorsque cet objectif est atteint, on parle de fonction de hachage cryptographique. Dans l’exemple ci-dessus, on ne constate aucune valeur de hachage identique et donc aucune collision entre les données générées. D’autres technologies permettent d’éviter les collisions de ce type.
Célérité de la fonction de hachage
Si la conversion des données en valeur de hachage prenait trop de temps, ce processus n’aurait pas d’utilité. La fonction de hachage doit donc travailler avec une extrême rapidité. Dans les bases de données, les valeurs de hachage sont stockées dans ce qu'on appelle des tables de hachage pour garantir un accès rapide.
Quelle est la valeur de hachage générée ?
La valeur de hachage générée à l’aide de la fonction de hachage dispose d’une longueur fixe définie par la technologie de hachage utilisée. La quantité de caractères saisis n’a ici aucune incidence ; le résultat comportera toujours le même nombre de caractères. Les caractères autorisés sont définis dans la fonction de hachage.
La valeur de hachage est donc le résultat calculé avec la fonction de hachage et un algorithme de hachage. On utilise également le terme d’« empreinte numérique » pour désigner la valeur de hachage. L’utilisation de ce terme renvoie au caractère unique de chaque valeur de hachage qui est comparable avec le caractère unique des empreintes de l’être humain. En utilisant les minuscules de « a » à « f » et les chiffres de « 0 » à « 9 » pour une longueur de hachage de 64 caractères, on obtient 1.1579209e+77 possibilités, c’est-à-dire 70, suivi par 24 zéros ! Vous pouvez constater que même les séquences de caractères d’une faible longueur et/ou comportant davantage de caractères utilisables génèrent une empreinte numérique exploitable.
Les valeurs de hachage présentées dans l’exemple plus haut sont générées en toute simplicité avec quelques lignes de code PHP :
<?php
echo hash(‘sha256’, ‘apple’);
?>
donne toujours la valeur de hachage ou l’empreinte numérique « 3a42c503953909637f78dd8c99b3b85ddde362415585afc11901bdefe8349102 ».
Pour le mot « apple », la commande « hash » s’est vu attribuer l’algorithme de chiffrement « sha256 ».
Fonction de hachage et sites internet
Lors d’un transfert de données chiffré en SSL, le certificat de serveur est envoyé au navigateur de l’utilisateur lors de la requête auprès du serveur web. Une clé de session générée avec une fonction de hachage est alors envoyée au serveur sur lequel elle est chiffrée et vérifiée. Lorsque le serveur confirme la clé de session reçue, le trafic de données HTTPS chiffré peut alors commencer. Les paquets de données échangés dans ce cadre sont également chiffrés, ce qui rend pratiquement impossible toute attaque sur le trafic de données.
Les clés de session (ID de Session) sont générées à partir de données variables concernant la visite d’un site internet, telles que l’adresse IP et l’horodatage, et sont transmises avec l’URL. De tels ID de session sont par exemple nécessaires pour identifier formellement l’utilisateur d’un panier. La transmission via une URL (www.domain.tld/index?sid=d4ccaf2627557c756a0762419a4b6695) n’est plus guère utilisée. L’identification dans l’en-tête du site internet via un cookie s’est de plus en plus imposée.
Le stockage temporaire des informations dans des caches est également chiffré à l’aide de valeurs de hachage afin que les utilisateurs non autorisés ne puissent pas déterminer les sites internet visités et les données d’accès de paiement utilisées lors de la consultation du cache.
Lorsque le protocole SFTP est utilisé, la communication entre le serveur FTP et le client se déroule de manière similaire.
- Sécurisez vos transferts de données
- Renforcez la confiance de vos clients
- Améliorez votre positionnement sur Google
Protection des données confidentielles
Les données d’accès pour les comptes web sont des cibles appréciées des cybercriminels. Leur objectif est soit de perturber le fonctionnement d’un site internet afin par exemple de diminuer les revenus issus de la publicité basée sur le trafic ou d’accéder à des informations sur les moyens de paiement enregistrés.
Si on prend pour exemple un site WordPress, on constate qu’un mot de passe est toujours enregistré sous une forme chiffrée. Combinée avec les clés de sécurité générées dans le système, cette méthode offre un haut niveau de sécurité. Ce niveau de sécurité est essentiel, notamment pour se prémunir contre les attaques par force brute. Dans ces attaques, le hacker essaie des combinaisons à l’aide d’une fonction de hachage qu’il a personnellement programmée, jusqu’à ce qu’il trouve un résultat autorisant l’accès. Les mots de passe longs dotés d’un haut niveau de sécurité compliquent ces attaques puisque la puissance de calcul nécessaire du côté du hacker peut augmenter sans commune mesure. Nous ne le dirons jamais assez : évitez les mots de passe simples et conservez vos données d’accès, quelles qu’elles soient, à l’abri des tiers !
Signer des e-mails
Le trafic e-mail passe via des serveurs prévus spécifiquement pour cette forme de transmission de messages. Des clés générées à l’aide d’une fonction de hachage sont également utilisées pour le transfert des données afin de signer les messages numériquement.
Voici comment se déroule l’envoi de messages avec une signature numérique :
- L’expéditeur calcule une valeur de hachage à partir de son message et le chiffre avec sa propre clé (la signature numérique).
- Le message est envoyé au destinataire avec la valeur de hachage chiffrée.
- Le destinataire génère une valeur de hachage à partir du message reçu en utilisant la même fonction de hachage. Par ailleurs, il déchiffre la valeur de hachage reçue avec la clé officielle et compare les deux.
- Si les deux valeurs correspondent, le destinataire peut partir du principe que le message n’a pas été manipulé lors de la transmission.
Veuillez noter qu’une signature numérique ne chiffre pas le message, mais apporte uniquement la preuve de son intégrité. Les contenus confidentiels doivent faire l’objet d’un chiffrement supplémentaire.
Quelle est l’utilité de la fonction de hachage dans les fonctionnalités de recherche ?
Effectuer des recherches dans de grands volumes de données est une tâche qui demande certaines ressources. Imaginez que vous deviez rechercher un terme dans un tableau contenant tous les habitants d’une métropole avec de nombreuses cellules (nom, prénom, numéro de rue, etc.), vous y passeriez un temps monumental et auriez besoin d’une puissance de calcul considérable. Pour simplifier cette recherche, il est possible de calculer pour chaque objet de données une valeur de hachage qui identifiera formellement l’entrée. Pour rechercher dans le tableau, on calcule une nouvelle valeur de hachage à partir du mot-clé et on le compare avec les valeurs de hachage du tableau. Un nombre limité de lettres, de chiffres et de caractères est donc comparé aux lettres, chiffres et caractères du tableau. Cela demande nettement moins de temps que de rechercher tous les prénoms commençant par « Ann » dans toutes les cellules existantes du tableau.
Les fonctions de hachage sont utilisées pour améliorer la sécurité dans la communication électronique. Des normes très élaborées ont aujourd’hui été établies dans ce domaine. Mais les hackers ne sont pas tournés les pouces et on doit aujourd’hui faire face à des technologies d’attaque de plus en plus sophistiquées.