Je crois comprendre 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 numérique / somme de contrôle 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?
language-agnostic
hash
computer-science
checksum
Richard Ev
la source
la source
Réponses:
Je dirais qu'une somme de contrôle est nécessairement un hashcode . Cependant, tous les hashcodes ne font pas de bonnes sommes de contrôle.
Une somme de contrôle a un but particulier - elle vérifie ou vérifie l'intégrité des données (certains peuvent aller au-delà en permettant la correction d'erreurs ). 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 une fonction mathématique qui mappe les données à une certaine valeur. Lorsqu'elle est utilisée comme moyen d'indexation dans des structures de données (par exemple une table de hachage), une faible probabilité de collision est souhaitable.
la source
Il y a un objectif différent derrière chacun d'eux:
En 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 casse une fonction de hachage forte), si vous pouvez vous permettre le coût de calcul.
la source
Il y a en effet quelques différences:
la source
Les codes de hachage et les sommes de contrôle sont tous deux utilisés pour créer une valeur numérique courte à 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 hashcode, d'autre part, peut souvent être implémenté comme somme de contrôle d'un préfixe de longueur limitée. Cela signifierait que "aaaaaaaaaaba" hacherait de la même manière que "aaaaaaaaaaab", mais les algorithmes de hachage peuvent traiter de telles collisions.
la source
Wikipédia le dit bien:
la source
Une somme de contrôle protège contre les modifications accidentelles.
Un hachage cryptographique protège contre un attaquant très motivé.
Lorsque vous envoyez des bits sur le câble, 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 j'utilise un canal secondaire ou autre, car la question ne semble pas y échapper).
la source
Source: CompTIA ® Security + Guide to Network Security Fundamentals - Cinquième édition - Mark Ciampa - Page 191
la source
Ces jours-ci, ils sont interchangeables, mais jadis, une somme de contrôle était une technique très simple où vous ajoutiez toutes les données (généralement en octets) et ajoutiez un octet à la fin avec cette valeur dans .. alors vous espérez savoir si l'une des données d'origine a été corrompue. Similaire à un bit de contrôle, mais avec des octets.
la source
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 savoir si quelque chose dans l'entrée a changé.
Un code de hachage est utilisé pour savoir si quelque chose dans l'entrée a changé et pour avoir autant de "distance" entre les valeurs de code de hachage que possible.
En outre, il peut y avoir d'autres exigences pour une fonction de hachage, en opposition à cette règle, comme la possibilité de former des arbres / clusters / seaux de valeurs de code de hachage tôt.
Et si vous ajoutez une randomisation initiale partagée, vous arrivez au concept de cryptage / échanges de clés modernes.
À 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 les données d'entrée aléatoires.
Si exactement 1 bit dans vos données d'entrée aléatoires a changé, vous serez en mesure de détecter cela 100% du temps, quelle que soit la taille des données d'entrée.
Si 2 bits dans 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 plus grand que le nombre de bits dans votre valeur de hachage / somme de contrôle, votre probabilité d'obtenir en fait différentes valeurs de hachage / somme de contrôle, pour différentes valeurs d'entrée, est réduite et n'est pas un constante .
la source
J'ai tendance à utiliser le mot checksum lorsque je me réfère au code (numérique ou autre) créé pour un fichier ou un élément de données pouvant être utilisé pour vérifier que le fichier ou les données n'ont pas été corrompus. L'usage le plus courant 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 non).
la source
Dans le partage de données de cluster Redis, il utilise a
hash slot
pour décider à quel nœud il va. Prenez par exemple l'opération modulo ci-dessous:Le
6
apparaît deux fois sur des entrées différentes. Le but du hachage est simplement de mapper une valeur d'entrée à une valeur de sortie et l'unicité ne fait pas partie de l'accord. Donc, deux entrées différentes qui produisent la même sortie sont très bien dans le monde des hachages.Une somme de contrôle, en revanche, doit différer la sortie même si un bit de l'entrée change car son but n'est pas de mapper, mais de détecter la corruption des données. Donc, deux entrées différentes qui produisent la même sortie ne sont pas acceptables dans une somme de contrôle.
la source
Une somme de contrôle est simplement un nombre généré à partir du champ de données par oring (par addition logique donc somme). La somme de contrôle a la capacité de détecter une corruption de n'importe quel bit ou nombre de bits dans le champ de données à partir duquel elle est générée, c'est-à-dire qu'elle vérifie les erreurs c'est tout, elle ne peut pas les corriger. Une somme de contrôle est un hachage car la taille de la somme de contrôle est plus petite que les données d'origine. Oui, vous aurez des collisions car la somme de contrôle n'est pas du tout sensible à la position du bit dans le champ de données.
Un contrôle de redondance cyclique (CRC) est quelque chose de très différent, de plus complexe et ne s'appelle PAS une somme de contrôle. C'est l'application d'une série polynomiale qui a la capacité de corriger n'importe quel nombre choisi de bits corrompus individuels dans le champ de données à partir duquel il a été généré. La création d'un CRC aboutit à un nombre plus grand que le champ de données d'origine (contrairement à la somme de contrôle) - d'où le nom incluant le mot «redondance» et le prix que vous payez pour la capacité de correction d'erreur. Un CRC n'est donc PAS un hachage et ne doit pas être confondu ni nommé comme somme de contrôle, car la redondance ajoute nécessairement à la taille des données d'origine.
la source