Fonctions de hachage cryptographique

Fonctions de hachage cryptographique

La cryptographie moderne offre un large éventail d'outils et de techniques pour protéger les données en transit et au repos. Les fonctions de hachage cryptographique appartiennent au type de protocole cryptographique basé sur des chiffres de bloc. Ils jouent un rôle important dans la sécurisation des systèmes de communication moderne et fonctionnent comme un obstacle aux intrus en assurant l'authenticité des données. Enregistrer et récupérer en toute sécurité les mots de passe et les transactions cryptographiques anonymes sont quelques-unes des nombreuses applications de fonction de hachage.

L'article fournit un large aperçu et une utilisation des fonctions de hachage cryptographique. Nous expliquons les propriétés du hachage, leur utilisation dans divers domaines, les attaques et les faiblesses possibles, et surtout, les moyens de renforcer les hachages et d'améliorer les fonctions de hachage.

Qu'est-ce qu'une fonction de hachage?

Il s'agit d'une fonction à sens unique ou d'un identifiant unique qui, étant donné une entrée de longueur variable, publie un digest de hachage de longueur fixe. Cependant, la longueur de la sortie dépend de l'algorithme de hachage. En général, les algorithmes les plus connus ont une longueur de hachage de 160-512 bits.

Mais pour produire les données sur une longueur fixe, les fonctions de hachage prennent d'abord un bloc prédéfini de données appelées blocs de données. La taille du bloc de données varie d'un algorithme à un autre, mais il est toujours le même pour un algorithme. Par exemple, la fonction de hachage SHA-1 accepte une taille de bloc de 512 bits, et si l'entrée est de la même taille, elle ne fonctionne qu'une seule fois, c'est 80 tours. Si la taille de l'entrée est de 1024, l'algorithme fonctionnera deux fois.

De manière réaliste, la taille de l'entrée est rarement un multiple de 512 bits. Dans de tels cas, nous utilisons une technique connue sous le nom de rembourrage qui divise le message / données en blocs de données de même longueur. De sorte que la fonction est effectuée sur la base d'un nombre total de blocs de données et de traiter chaque bloc de données à la fois. Il prend la sortie du premier bloc comme une entrée avec le deuxième bloc, et ainsi de suite. Par conséquent, le hachage final est la valeur combinée de toutes les valeurs de sortie.

Hachage vs. Chiffrement

Le hachage et le chiffrement sont des processus uniques et séparés avec leur propre ensemble de fonctionnalités, de propriétés et de procédures.

Le cryptage est un processus bidirectionnel / réversible car il intègre l'utilisation d'une clé qui est partagée ou qui sont des clés publiques et privées mathématiquement liées mais non identiques. Contrairement au chiffrement, les hachages sont faciles à calculer et difficiles à inverser le texte en clair d'origine.

Le hachage fournit l'intégrité des données. Le chiffrement, en revanche, rend la confidentialité des données.

Le bien des hachages

Même si le hachage n'est pas un cryptage, c'est une forme de cryptographie qui fournit:

  • mot de passe de protection
  • Intégrité des données / vérification du fichier
  • signatures numériques, et
  • signatures virales.

Mot de passe de protection

Chaque fois qu'un utilisateur entre dans un mot de passe pour l'authentification, le hachage de mot de passe est comparé au fichier contenant des hachages du système dans l'ordinateur. Le système n'autorise l'accès qu'après une authentification réussie. Par exemple, Windows stocke les hachages de mot de passe dans le fichier du gestionnaire de compte de sécurité (SAM), tandis que Linux stocke les hachages de mot de passe dans le fichier / etc / shadow.

Vérification des fichiers

De même, certains sites Web partagent une valeur de hachage pour vérifier l'intégrité du logiciel téléchargé qui garantit qu'il n'est pas corrompu ou que quelqu'un n'a pas falsifié le fichier pendant le téléchargement.

Par exemple, le site Web pour télécharger Linux Mint 20.2 L'image ISO «UMA» -Cinnamon (64 bits) partage son hachage SHA256 dans le SHA256SUM.fichier txt. Pour vérifier l'intégrité de l'image, CD dans le répertoire d'image téléchargé et générer la somme SHA256 comme suit:

ubuntu @ ubuntu: ~ $ sha256sum -b *.ISO

Le sha256sum.SMS Le fichier contient quatre hachages en fonction des différentes versions de bureau. Comparez la valeur de hachage générée avec le hachage d'image ISO de bureau Cinnamon dans le fichier pour vérifier son intégrité s'ils correspondent; Cela signifie que l'image ISO est prête à l'emploi.

Avant SHA256, l'algorithme de hachage MD5 a été utilisé pour vérifier l'intégrité d'un fichier téléchargé, mais il n'est plus un véritable algorithme de hachage cryptographique car il n'est pas résistant aux collisions (plus à ce sujet plus tard).

Signatures numériques

Une signature numérique authentifie l'expéditeur en ajoutant le message d'origine avec le digest de message chiffré. L'expéditeur crypte avec la clé privée pour assurer la non-répudiation tandis que le hachage protège contre la falsification des données et fournit l'intégrité I.e., Signature numérique = clé privée de l'expéditeur (hachage (message)).

Le récepteur décrypte le message du message avec la clé publique de l'expéditeur et prend le hachage du message d'origine à comparer avec le hachage décrypté.

Signatures virales

Les solutions antivirus utilisent diverses approches pour identifier les logiciels malveillants; L'un d'eux est la correspondance de hachage. Ils prennent une partie ou un bloc d'exécutable pour créer un hachage et le comparer aux hachages de logiciels malveillants stockés dans leurs bases de données.

Propriétés des hachages

L'ensemble des propriétés qui font que les fonctions de hachage jouent un rôle essentiel dans la cryptographie par clé publique sont les suivantes:

  • Un bon algorithme de hachage renvoie une valeur de hachage de taille / longueur fixe, quelle que soit la taille de l'entrée.
  • Il offre une résistance pré-image qui signifie qu'il est impossible de récupérer la valeur d'origine en inversant le hachage.
  • Un algorithme de hachage fort assure une résistance aux collisions. C'est-à-dire pas deux entrées différentes ne peuvent avoir une sortie similaire.
  • Un changement mineur dans l'entrée génère des changements importants dans la sortie. Cette propriété de hachages permet d'assurer l'intégrité des fichiers / données.
  • La vitesse de calcul des fonctions de hachage cryptographique est une autre propriété idéale. Cependant, il est subjectif et varie sur la base de l'objectif et du domaine de l'application.

Modes de hachage

Les fonctions de hachage les plus connues sont l'algorithme de message-digeur (MDA), l'algorithme de hachage sécurisé (SHA), NTLM, etc.

  • MD5: MD5 est la cinquième version des algorithmes de message-digeur qui a une longueur de sortie de 128 bits. C'était l'algorithme de hachage le plus connu jusqu'à ce qu'il devienne sujet aux attaques de collision (plus à ce sujet plus tard). Par exemple, avant les algorithmes de hachage sécurisés (SHA), l'algorithme de hachage MD5 était la méthode la plus couramment utilisée pour la vérification de l'intégrité du fichier.
  • Sha: L'algorithme de hachage sécurisé a été introduit par la NSA. Il s'agit d'une suite d'algorithmes contenant quatre variantes de fonctions SHA-224, SHA-256, SHA-384 et SHA-512. Chaque nom variant représente la taille de sa sortie. C'est un algorithme de hachage plus sûr car aucun compromis des algorithmes de hachage n'est jusqu'à présent connu.
  • NTLM: L'algorithme de hachage NT LAN Manager est utilisé pour le hachage des mots de passe. NTLM utilise des vérifications de redondance cyclique et des digestions de messages, mais son seul inconvénient est qu'il est basé sur le chiffre RC4, qui contrairement aux nouveaux protocoles cryptographiques, AES et SHA-256 ont été la cible d'une attaque réussie. NTLMV2 résout ces problèmes en utilisant le système HMAC-MD5 128 bits.

Le mal des hachages

Comme discuté précédemment, les hachages de grande taille de bloc peuvent ralentir les attaquants et la rétro-ingénierie d'un hachage cryptographique pourrait être difficile mais ce n'est pas impossible. Tous les attaquants ont besoin est un moment qu'ils peuvent facilement gérer en utilisant du matériel rapide et en créant des collisions ou des attaques de canaux latéraux. La section traite de certaines des voies de l'exploitation du hachage.

Collision
La collision dans le hachage se produit lorsque deux entrées renvoient la même valeur de sortie. Les fonctions de hachage fiables sont conçues pour fournir une résistance aux collisions. Mais c'est inévitable en raison d'un effet de pigeonhol. Selon l'effet de pigeonhole, il existe un nombre défini de valeurs de sortie par rapport à la saisie de toute taille. Cela signifie, comme il y aura toujours plus d'entrées que de sortie, la collision est un événement inévitable.

Tables arc-en-ciel
Comme mentionné précédemment, les systèmes d'exploitation ne stockent pas de mots de passe en texte en clair. Par conséquent, les tables arc-en-ciel sont des bases de données pré-calculées ou des tables de recherche qui mappent les hachages au mot de passe en texte clair. Le site Web de CrackStation, par exemple, fournit une base de données massive pour la fissuration des hachages aux mots de passe sans salant. Cependant, les tables arc-en-ciel échangent du temps pour casser des hachages avec une grande quantité d'espace de stockage.

L'avantage des tables arc-en-ciel contre le forçage brute est une simple opération de recherche et de comparaison contrairement aux tentatives automatisées d'essais et d'erreurs avec un problème de calcul de hachage. De plus, il ne nécessite pas de correspondance de mot de passe exacte qui signifie que si le hachage correspond à un mot de passe / phrase, le système permet l'authentification.

John l'éventreur
John est un outil puissant et polyvalent qui aide à casser les hachages. Il est similaire à une attaque de dictionnaire automatisé qui utilise une liste de mots ou un dictionnaire pour calculer le hachage et comparer. Par conséquent, il permet une force brute sur un tableau de modes de hachage. Un exemple de la liste de mots est un rockyou.Fichier TXT qui contient des mots de passe à partir d'une brèche sur le rockyou.site Web com. La liste de mots est disponible auprès de GitHub Seclists Under / Mots de passe / Databases divulguées.

Le moyen le plus simple de casser le hachage est d'utiliser le John Commande avec l'option de format pour spécifier le type de hachage, le chemin d'accès à la liste de mots et le fichier avec la valeur de hachage. Dans Kali Linux, le chemin du Rouckyou.Le fichier txt est / usr / share / wordlists.

ubuntu @ ubuntu: ~ $ John - format = --wordlist = / usr / share / wordlists / rockyou.hachage txt.SMS

Passer le hachage
Pass-the-Hash est un vol d'identification qui a le potentiel d'escalade des privilèges horizontaux. Même si l'attaque peut se produire sur les systèmes Linux / Unix, il est plus répandu dans Windows. Windows authentifie un utilisateur légitime en correspondant au hachage du mot de passe entré, qui est statique et qui ne change que lorsque le mot de passe change. En outre, les mots de passe sont disponibles dans divers endroits de Windows, tels que SAM et la mémoire de processus du sous-système de l'autorité de sécurité locale (LSASS), etc.

Par conséquent, les attaquants manipulent le modèle de défi et de réponse du protocole de sécurité NTLM qui leur permet de s'authentifier en tant qu'utilisateurs valides. L'attaquant jette les hachages d'un système cible et utilise l'outil «Pass-the-Hash» pour usurper l'identité d'un utilisateur authentique. Par conséquent, l'attaquant n'a pas besoin d'entrer ou. Trouvez plus de détails sur l'attaque à partir d'ici.

Attaque d'anniversaire
L'attaque appartient à la classe d'attaque par force brute et est basée sur un paradoxe d'anniversaire dans la théorie des probabilités. Il utilise le problème d'anniversaire pour envoyer deux messages différents avec le même protocole de hachage cryptographique pour provoquer une collision. L'attaque vise généralement à manipuler la communication. Plus de détails sur l'attaque d'anniversaire sont disponibles ici.

Alimenter les hachages

Il existe différentes façons de se protéger contre les attaques contre les hachages et de les limiter aux fonctions de hachage cryptographique.

Hachages salés
Le salage est le processus d'ajout de données générées aléatoirement (sel) à l'entrée d'une fonction de hachage. Le processus aide à protéger contre les attaques de table arc-en-ciel. Les utilisateurs peuvent inclure la valeur de sel au début ou à la fin du mot de passe avant de créer un hachage qui génère différentes sorties même si les mots de passe sont similaires. De plus, un utilisateur peut garder le sel public.

Hachages à clé
HMAC est un exemple de hachages à clé qui utilise des clés cryptographiques et des fonctions de hachage pour améliorer les limites de l'algorithme du code d'authentification du message (MAC). Il aide à atteindre la confidentialité et l'intégrité des informations en même temps.

Fonction de hachage adaptative
Les fonctions de hachage adaptatives sont conçues pour réitérer leur fonctionnement intérieur, car son nom suggère que l'utilisateur peut ajuster le nombre d'itérations. L'étincelle des clés est une technique qui prend une clé faible comme entrée, la traite et itère le processus pour produire une puissante clé de grande taille. Le processus peut augmenter la taille clé jusqu'à 128 bits, ce qui est difficile pour l'attaque de force brute. PBKDF2 et BCrypt sont des exemples de fonctions de hachage adaptatives.

Conclusion

L'article donne un aperçu étendu des protocoles de hachage cryptographique. Il montre comment vérifier l'intégrité des fichiers et donne un aperçu de la façon dont il est possible de casser les hachages de mot de passe via l'outil John the Ripper. Nous discutons également d'une gamme d'attaques et de mesures pour générer des hachages non recrackables via le salage, les hachages à clé et les fonctions de hachage adaptatives.