web-dev-qa-db-fra.com

Code de hachage et somme de contrôle - quelle est la différence?

Ma compréhension est qu'un code de hachage et une somme de contrôle sont des choses similaires - une valeur numérique, calculée pour un bloc de données, qui est relativement unique.

c'est-à-dire que la probabilité que deux blocs de données produisent la même valeur de hachage/somme de contrôle numérique est suffisamment faible pour pouvoir être ignorée aux fins de l'application.

Alors, avons-nous deux mots pour la même chose, ou y a-t-il des différences importantes entre les codes de hachage et les sommes de contrôle?

104
Richard Everett

Je dirais qu'un checksum est nécessairement a hashcode . Cependant, tous les codes de hachage ne font pas de bonnes sommes de contrôle.

Une somme de contrôle a un but spécial --- elle vérifie ou vérifie l'intégrité des données (certains peuvent aller au-delà en permettant correction d'erreur ). Les "bonnes" sommes de contrôle sont faciles à calculer et peuvent détecter de nombreux types de corruption de données (par exemple un, deux, trois bits erronés).

Un hashcode décrit simplement un fonction mathématique qui mappe les données à une certaine valeur. Lorsqu'il est utilisé comme moyen d'indexation dans des structures de données (par exemple une table de hachage), une faible probabilité de collision est souhaitable.

64
Zach Scrivena

Il y a un objectif différent derrière chacun d'eux:

  • Code de hachage - conçu pour être aléatoire dans son domaine (pour minimiser les collisions dans les tables de hachage et autres). Les codes de hachage cryptographiques sont également conçus pour être impossibles à inverser par calcul.
  • Somme de contrôle - conçue pour détecter les erreurs les plus courantes dans les données et souvent pour être rapide à calculer (pour une vérification efficace des flux rapides de données).

Dans la pratique, les mêmes fonctions sont souvent bonnes pour les deux objectifs. En particulier, un code de hachage cryptographiquement fort est une bonne somme de contrôle (il est presque impossible qu'une erreur aléatoire brise une fonction de hachage forte), si vous pouvez vous permettre le coût de calcul.

40
Rafał Dowgird

Il y a en effet quelques différences:

  • Les sommes de contrôle doivent simplement être différentes lorsque l'entrée est différente (aussi souvent que possible), mais il est presque aussi important qu'elles soient rapides à calculer.
  • Les codes de hachage (pour une utilisation dans les tables de hachage) ont les mêmes exigences, et en outre, ils doivent être également répartis sur l'espace de code, en particulier pour les entrées similaires.
  • Les hachages cryptographiques ont l'exigence beaucoup plus stricte que, étant donné un hachage, vous ne pouvez pas construire une entrée qui produit ce hachage. Les temps de calcul viennent en deuxième position, et selon l'application, il peut même être souhaitable que le hachage soit très lent à calculer (afin de combattre les attaques par force brute).
21
Michael Borgwardt

Wikipedia le dit bien:

Les fonctions de somme de contrôle sont liées aux fonctions de hachage, aux empreintes digitales, aux fonctions de randomisation et aux fonctions de hachage cryptographiques. Cependant, chacun de ces concepts a des applications différentes et donc des objectifs de conception différents. Les chiffres de contrôle et les bits de parité sont des cas particuliers de sommes de contrôle, appropriés pour de petits blocs de données (tels que les numéros de sécurité sociale, les numéros de compte bancaire, les mots informatiques, les octets simples, etc.). Certains codes de correction d'erreurs sont basés sur des sommes de contrôle spéciales qui non seulement détectent les erreurs courantes mais permettent également de récupérer les données d'origine dans certains cas.

8
Jon Skeet

Les codes de hachage et les sommes de contrôle sont tous deux utilisés pour créer une courte valeur numérique à partir d'un élément de données. La différence est qu'une valeur de somme de contrôle doit changer, même si une petite modification est apportée à l'élément de données. Pour une valeur de hachage, l'exigence est simplement que les éléments de données du monde réel doivent avoir des valeurs de hachage distinctes.

Un exemple clair sont les chaînes. Une somme de contrôle pour une chaîne doit inclure chaque bit et l'ordre est important. Un code de hachage, d'autre part, peut souvent être implémenté comme une somme de contrôle d'un préfixe de longueur limitée. Cela signifierait que "aaaaaaaaaaaba" aurait le même hachage que "aaaaaaaaaaab", mais les algorithmes de hachage peuvent gérer de telles collisions.

8
MSalters

Une somme de contrôle protège contre les changements accidentels.

Un hachage cryptographique protège contre un attaquant très motivé.

Lorsque vous envoyez des bits sur le fil, il peut arriver accidentellement que certains bits soient retournés, supprimés ou insérés. Pour permettre au récepteur de détecter (ou parfois de corriger) des accidents comme celui-ci, l'expéditeur utilise une somme de contrôle.

Mais si vous supposez qu'il y a quelqu'un qui modifie activement et intelligemment le message sur le fil et que vous souhaitez vous protéger contre ce type d'attaquant, utilisez un hachage cryptographique (j'ignore la signature cryptographique du hachage ou l'utilisation d'un canal secondaire ou autre, car la question ne semble pas y échapper).

4
user3464863

Ces jours-ci, ils sont interchangeables, mais dans les jours d'autrefois, une somme de contrôle était une technique très simple où vous ajoutiez toutes les données (généralement en octets) et clouiez un octet à la fin avec cette valeur dans .. alors vous espériez savoir si l'une des données d'origine a été corrompue. Similaire à un bit de contrôle, mais avec des octets.

3
Steven Robbins

La différence entre les fonctions de code de hachage et de somme de contrôle est qu'elles sont conçues à des fins différentes.

  • Une somme de contrôle est utilisée pour découvrir si quelque chose dans l'entrée a changé.

  • Un code de hachage est utilisé pour découvrir si quelque chose dans l'entrée a changé et pour avoir autant de "distance" entre les valeurs de code de hachage individuelles que possible.

    De plus, il pourrait y avoir d'autres exigences pour une fonction de hachage, contrairement à cette règle, comme la possibilité de former des arbres/grappes/seaux de hachage- les valeurs de code au début.

    Et si vous ajoutez une randomisation initiale partagée, vous arrivez au concept de cryptage/échange de clés moderne.


À propos de la probabilité:

Par exemple, supposons que les données d'entrée changent toujours (100% du temps). Et supposons que vous ayez une fonction de hachage/somme de contrôle "parfaite", qui génère une valeur de hachage/somme de contrôle de 1 bit. Par conséquent, vous obtiendrez différentes valeurs de hachage/somme de contrôle, 50% du temps, pour des données d'entrée aléatoires.

  • Si exactement 1 bit dans vos données d'entrée aléatoires a changé, vous pourrez détecter cela 100% du temps, quelle que soit la taille des données d'entrée.

  • Si 2 bits de vos données d'entrée aléatoires ont changé, votre probabilité de détecter "un changement" est divisée par 2, car les deux changements pourraient se neutraliser, et aucune fonction de hachage/somme de contrôle ne détecterait que 2 bits sont réellement différents dans les données d'entrée .

    ...

Cela signifie que si le nombre de bits dans vos données d'entrée est plusieurs fois supérieur au nombre de bits dans votre valeur de hachage/somme de contrôle, votre probabilité d'obtenir réellement différentes valeurs de hachage/somme de contrôle, pour différentes valeurs d'entrée, est réduite et n'est pas une constante.

2
Sascha Wedler

J'ai tendance à utiliser la somme de contrôle Word lorsque je me réfère au code (numérique ou autre) créé pour un fichier ou un élément de données qui peut être utilisé pour vérifier que le fichier ou les données n'ont pas été corrompus. L'utilisation la plus courante que je rencontre est de vérifier que les fichiers envoyés sur le réseau n'ont pas été modifiés (délibérément ou autrement).

1
Ian1971

Bien que le hachage et les sommes de contrôle soient similaires en ce qu'ils créent tous deux une valeur basée sur le contenu d'un fichier, le hachage n'est pas la même chose que la création d'une somme de contrôle. Une somme de contrôle est destinée à vérifier (vérifier) ​​l'intégrité des données et à identifier les erreurs de transmission de données, tandis qu'un hachage est conçu pour créer une empreinte numérique unique des données.

Source: CompTIA ® Security + Guide to Network Security Fundamentals - Fifth Edition - Mark Ciampa -Page 191

1
N Randhawa