Fonctions de cryptographie Hash

Les fonctions de hachage sont extrêmement utiles et apparaissent dans presque toutes les applications de sécurité de l'information.

Une fonction de hachage est une fonction mathématique qui convertit une valeur d'entrée numérique en une autre valeur numérique compressée. L'entrée de la fonction de hachage est de longueur arbitraire mais la sortie est toujours de longueur fixe.

Les valeurs renvoyées par une fonction de hachage sont appelées message digest ou simplement hash values. L'image suivante illustrée fonction de hachage -

Caractéristiques des fonctions de hachage

Les caractéristiques typiques des fonctions de hachage sont:

  • Fixed Length Output (Hash Value)

    • La fonction de hachage couvre les données de longueur arbitraire sur une longueur fixe. Ce processus est souvent appeléhashing the data.

    • En général, le hachage est beaucoup plus petit que les données d'entrée, c'est pourquoi les fonctions de hachage sont parfois appelées compression functions.

    • Puisqu'un hachage est une représentation plus petite d'une plus grande donnée, il est également appelé digest.

    • La fonction de hachage avec une sortie de n bits est appelée n-bit hash function. Les fonctions de hachage populaires génèrent des valeurs comprises entre 160 et 512 bits.

  • Efficiency of Operation

    • Généralement pour toute fonction de hachage h avec l'entrée x, le calcul de h (x) est une opération rapide.

    • Les fonctions de hachage informatique sont beaucoup plus rapides qu'un chiffrement symétrique.

Propriétés des fonctions de hachage

Afin d'être un outil cryptographique efficace, la fonction de hachage doit posséder les propriétés suivantes -

  • Pre-Image Resistance

    • Cette propriété signifie qu'il devrait être difficile sur le plan informatique d'inverser une fonction de hachage.

    • En d'autres termes, si une fonction de hachage h produit une valeur de hachage z, alors il devrait être difficile de trouver une valeur d'entrée x qui se hache sur z.

    • Cette propriété protège contre un attaquant qui n'a qu'une valeur de hachage et tente de trouver l'entrée.

  • Second Pre-Image Resistance

    • Cette propriété signifie que compte tenu d'une entrée et de son hachage, il devrait être difficile de trouver une entrée différente avec le même hachage.

    • En d'autres termes, si une fonction de hachage h pour une entrée x produit une valeur de hachage h (x), alors il devrait être difficile de trouver une autre valeur d'entrée y telle que h (y) = h (x).

    • Cette propriété de la fonction de hachage protège contre un attaquant qui a une valeur d'entrée et son hachage, et veut substituer une valeur différente comme valeur légitime à la place de la valeur d'entrée d'origine.

  • Collision Resistance

    • Cette propriété signifie qu'il devrait être difficile de trouver deux entrées différentes de n'importe quelle longueur qui aboutissent au même hachage. Cette propriété est également appelée fonction de hachage sans collision.

    • En d'autres termes, pour une fonction de hachage h, il est difficile de trouver deux entrées différentes x et y telles que h (x) = h (y).

    • Étant donné que la fonction de hachage est une fonction de compression avec une longueur de hachage fixe, il est impossible pour une fonction de hachage de ne pas avoir de collisions. Cette propriété de sans collision confirme seulement que ces collisions devraient être difficiles à trouver.

    • Cette propriété rend très difficile pour un attaquant de trouver deux valeurs d'entrée avec le même hachage.

    • De plus, si une fonction de hachage est résistante aux collisions then it is second pre-image resistant.

Conception d'algorithmes de hachage

Au cœur d'un hachage se trouve une fonction mathématique qui opère sur deux blocs de données de taille fixe pour créer un code de hachage. Cette fonction de hachage fait partie de l'algorithme de hachage.

La taille de chaque bloc de données varie en fonction de l'algorithme. En règle générale, les tailles de bloc vont de 128 bits à 512 bits. L'illustration suivante montre la fonction de hachage -

L'algorithme de hachage implique des tours de la fonction de hachage ci-dessus comme un chiffrement par bloc. Chaque tour prend une entrée de taille fixe, généralement une combinaison du bloc de message le plus récent et de la sortie du dernier tour.

Ce processus est répété autant de tours que nécessaire pour hacher le message entier. Le schéma de l'algorithme de hachage est représenté dans l'illustration suivante -

Depuis, la valeur de hachage du premier bloc de message devient une entrée pour la deuxième opération de hachage, dont la sortie modifie le résultat de la troisième opération, et ainsi de suite. Cet effet, connu sous le nom deavalanche effet de hachage.

L'effet d'avalanche se traduit par des valeurs de hachage sensiblement différentes pour deux messages qui diffèrent ne serait-ce que d'un seul bit de données.

Comprenez correctement la différence entre la fonction de hachage et l'algorithme. La fonction de hachage génère un code de hachage en opérant sur deux blocs de données binaires de longueur fixe.

L'algorithme de hachage est un processus d'utilisation de la fonction de hachage, spécifiant comment le message sera décomposé et comment les résultats des blocs de messages précédents sont enchaînés.

Fonctions de hachage populaires

Voyons brièvement quelques fonctions de hachage populaires -

Résumé des messages (MD)

MD5 a été la fonction de hachage la plus populaire et la plus largement utilisée pendant plusieurs années.

  • La famille MD comprend les fonctions de hachage MD2, MD4, MD5 et MD6. Il a été adopté comme norme Internet RFC 1321. Il s'agit d'une fonction de hachage de 128 bits.

  • Les résumés MD5 ont été largement utilisés dans le monde des logiciels pour garantir l'intégrité du fichier transféré. Par exemple, les serveurs de fichiers fournissent souvent une somme de contrôle MD5 pré-calculée pour les fichiers, afin qu'un utilisateur puisse y comparer la somme de contrôle du fichier téléchargé.

  • En 2004, des collisions ont été trouvées dans MD5. Une attaque analytique n'a réussi que dans une heure en utilisant un cluster d'ordinateurs. Cette attaque par collision a abouti à un MD5 compromis et son utilisation n'est donc plus recommandée.

Fonction de hachage sécurisé (SHA)

La famille de SHA comprend quatre algorithmes SHA; SHA-0, SHA-1, SHA-2 et SHA-3. Bien que de la même famille, il existe des structures différentes.

  • La version originale est SHA-0, une fonction de hachage de 160 bits, a été publiée par l'Institut national des normes et de la technologie (NIST) en 1993. Elle avait peu de faiblesses et n'est pas devenue très populaire. Plus tard en 1995, SHA-1 a été conçu pour corriger les faiblesses présumées de SHA-0.

  • SHA-1 est la plus largement utilisée des fonctions de hachage SHA existantes. Il est utilisé dans plusieurs applications et protocoles largement utilisés, notamment la sécurité SSL (Secure Socket Layer).

  • En 2005, une méthode a été trouvée pour découvrir les collisions pour SHA-1 dans un laps de temps pratique rendant l'employabilité à long terme du SHA-1 douteuse.

  • La famille SHA-2 comprend quatre autres variantes SHA, SHA-224, SHA-256, SHA-384 et SHA-512 en fonction du nombre de bits dans leur valeur de hachage. Aucune attaque réussie n'a encore été signalée sur la fonction de hachage SHA-2.

  • Bien que SHA-2 soit une fonction de hachage puissante. Bien que très différent, sa conception de base suit toujours la conception de SHA-1. Par conséquent, le NIST a appelé à de nouvelles conceptions de fonctions de hachage compétitives.

  • En octobre 2012, le NIST a choisi l'algorithme Keccak comme nouveau standard SHA-3. Keccak offre de nombreux avantages, tels que des performances efficaces et une bonne résistance aux attaques.

RIPEMD

Le RIPEMD est un acronyme pour RACE Integrity Primitives Evaluation Message Digest. Cet ensemble de fonctions de hachage a été conçu par une communauté de recherche ouverte et généralement connu comme une famille de fonctions de hachage européennes.

  • L'ensemble comprend RIPEMD, RIPEMD-128 et RIPEMD-160. Il existe également des versions 256 et 320 bits de cet algorithme.

  • Le RIPEMD original (128 bits) est basé sur les principes de conception utilisés dans MD4 et s'est avéré offrir une sécurité douteuse. La version 128 bits de RIPEMD est venue comme un remplacement de correctif rapide pour surmonter les vulnérabilités sur le RIPEMD d'origine.

  • RIPEMD-160 est une version améliorée et la version la plus utilisée de la famille. Les versions 256 et 320 bits réduisent le risque de collision accidentelle, mais n'ont pas de niveaux de sécurité plus élevés que RIPEMD-128 et RIPEMD-160 respectivement.

Tourbillon

Il s'agit d'une fonction de hachage de 512 bits.

  • Il est dérivé de la version modifiée de Advanced Encryption Standard (AES). L'un des concepteurs était Vincent Rijmen, un co-créateur de l'AES.

  • Trois versions de Whirlpool ont été publiées; à savoir WHIRLPOOL-0, WHIRLPOOL-T et WHIRLPOOL.

Applications des fonctions de hachage

Il existe deux applications directes de la fonction de hachage en fonction de ses propriétés cryptographiques.

Stockage des mots de passe

Les fonctions de hachage fournissent une protection au stockage des mots de passe.

  • Au lieu de stocker le mot de passe en clair, la plupart des processus de connexion stockent les valeurs de hachage des mots de passe dans le fichier.

  • Le fichier de mot de passe se compose d'un tableau de paires qui se présentent sous la forme (id utilisateur, h (P)).

  • Le processus de connexion est décrit dans l'illustration suivante -

  • Un intrus ne peut voir que les hachages des mots de passe, même s'il a accédé au mot de passe. Il ne peut ni se connecter en utilisant le hachage ni dériver le mot de passe de la valeur de hachage car la fonction de hachage possède la propriété de résistance de pré-image.

Vérification de l'intégrité des données

La vérification de l'intégrité des données est une application la plus courante des fonctions de hachage. Il est utilisé pour générer les sommes de contrôle sur les fichiers de données. Cette application fournit une assurance à l'utilisateur sur l'exactitude des données.

Le processus est décrit dans l'illustration suivante -

Le contrôle d'intégrité aide l'utilisateur à détecter les modifications apportées au fichier d'origine. Cependant, il ne fournit aucune assurance quant à l'originalité. L'attaquant, au lieu de modifier les données du fichier, peut changer le fichier entier et calculer tous ensemble un nouveau hachage et l'envoyer au récepteur. Cette application de vérification d'intégrité n'est utile que si l'utilisateur est sûr de l'originalité du fichier.