Frage

Mein Verständnis ist, dass ein Hash-Code und Prüfsumme sind ähnliche Dinge -. Ein numerischer Wert für einen Datenblock berechnet, dh relativ eindeutige

d. Die Wahrscheinlichkeit, dass zwei Blöcke von Daten, die die gleichen numerischen Hash / Prüfsummenwert was niedrig genug ist, dass es für die Zwecke der Anwendung ignoriert werden kann.

So haben wir zwei Wörter für die gleiche Sache haben, oder gibt es wichtige Unterschiede zwischen Hash-Codes und Prüfsummen?

War es hilfreich?

Lösung

Ich würde sagen, dass ein Prüfsumme ist unbedingt a hashcode . Allerdings sind nicht alle Hashcodes machen gute Prüfsummen.

Eine Prüfsumme ist eine Zweck --- es überprüft oder prüft die Integrität der Daten (zum Teil darüber hinaus = indem Fehlerkorrektur ). „Good“ Prüfsummen sind einfach zu berechnen, und viele Arten von Datenverfälschungen erfassen können (beispielsweise ein, zwei, drei fehlerhafte Bits).

Ein Hash-Code beschreibt einfach ein mathematische Funktion , dass die Karten-Daten auf einem bestimmten Wert. Wenn als ein Mittel zur Indizierung in Datenstrukturen (beispielsweise eine Hash-Tabelle), eine niedrige Kollisionswahrscheinlichkeit, ist wünschenswert.

Andere Tipps

Es gibt einen anderen Zweck hinter jedem von ihnen:

  • Hash-Code - entworfen, um über seine Domain zufällig zu sein (zu minimieren Kollisionen in Hash-Tabellen und so weiter). Cryptographic Hash-Codes werden auch als rechnerisch nicht machbar entworfen zu umkehren.
  • Checksumme -. Entworfen, um die häufigsten Fehler in den Daten zu erkennen und oft schnell zu sein zu berechnen (für eine effektive checksumming schnelle Datenströme)

In der Praxis sind die gleichen Funktionen für beide Zwecke oft gut. Insbesondere wird ein kryptographisch starke Hash-Code ist eine gute Prüfsumme (es ist fast unmöglich, dass ein zufälliger Fehler eine starke Hash-Funktion brechen), wenn Sie die Rechenkosten leisten können.

Es gibt in der Tat einige Unterschiede:

  • Prüfsummen müssen nur anders sein, wenn der Eingang unterschiedlich (so oft wie möglich), aber es ist fast so wichtig, dass sie zu berechnen sind schnell zu.
  • Hash-Codes (für den Einsatz in Hash-Tabellen) haben die gleichen Anforderungen, und zusätzlich sollte sie gleichmäßig über den Coderaum verteilt werden, vor allem für die Eingänge, die ähnlich sind.
  • Cryptographic Hash-Werte haben die viel strengere Anforderung, die einen Hash gegeben, man kann nicht eine Eingabe konstruieren, die diesen Hash erzeugt. Rechenzeiten kommt an zweiter Stelle, und in Abhängigkeit von der applicatin kann es sogar wünschenswert sein, dass der Hash sehr langsam zu sein, berechnen (um Brute-Force-Angriffe zu bekämpfen).

Wikipedia legt es gut:

  

Checksum-Funktionen beziehen sich auf Hash   Funktionen, Fingerabdrücke, Randomisierung   Funktionen und kryptographischer Hash   Funktionen. Doch jede dieser   Konzepte haben verschiedene Anwendungen   und daher unterschiedliche Design-Ziele.   Prüfziffern und Paritätsbits   Spezialfälle von Prüfsummen,   geeignet für kleine Datenblöcke   (Wie Sozialversicherungsnummern, Bank   Kontonummern, Computer Worten,   einzelne Bytes, etc.). Etwas   Fehlerkorrekturcodes basieren auf   spezielle Prüfsummen, die nicht nur erkennen   häufige Fehler, sondern ermöglichen auch die   Originaldaten in zurückgewonnen werden   bestimmte Fälle.

Hashcodes und Prüfsummen werden beide verwendet, um kurzen Zahlenwert aus einem Datenelement zu erstellen. Der Unterschied besteht darin, dass ein Prüfsummenwert ändern sollte, selbst wenn eine kleine Änderung an der Datenposition erfolgt. Für einen Hash-Wert, ist die Forderung, dass nur reale Datenelemente verschiedene Hash-Werte haben.

Ein deutliches Beispiel ist Strings. Eine Prüfsumme für eine Zeichenfolge sollte jeder und jedes Bit und um Angelegenheiten umfassen. Ein Hash-Code auf der anderen Seite kann oft als eine Prüfsumme eines begrenzte Länge Präfix implementiert werden. Das würde bedeuten, dass „aaaaaaaaaaba“ würde das gleiche wie „aaaaaaaaaaab“ Hash, aber Hash-Algorithmen können wth solche Kollisionen umgehen.

In diesen Tagen sie austauschbar sind, aber in alten Zeiten eine Prüfsumme war ein sehr einfaches techique, wo Sie alle Daten auf (in der Regel in Bytes) hinzufügen würde und tack ein Byte am Ende mit diesem Wert in .. dann Sie ‚d hoffentlich wissen, ob eine der ursprünglichen Daten beschädigt worden war. Ähnlich wie bei einem Prüfbit, aber mit Bytes.

Eine Prüfsumme schützt vor versehentlichen Änderungen.

Ein kryptographisches Hash schützt gegen einen sehr motivierten Angreifer.

Wenn Sie Bits auf dem Draht zu senden, kann es versehentlich passieren, dass einige Bits entweder umgedreht werden oder gelöscht oder eingefügt. Um die Empfänger zu ermöglichen zu erkennen (oder manchmal korrigieren) Unfälle wie dieser, der Absender verwendet eine Prüfsumme.

Aber wenn Sie davon ausgehen, es ist jemand aktiv und intelligent die Nachricht auf dem Draht zu modifizieren und Sie wollen gegen diese Art von Angreifer zu schützen, dann einen verschlüsselten Hash verwenden (ich ignorieren verschlüsselt den Hash-Unterzeichnung oder einen sekundären Kanal verwendet oder so, da die Frage scheint nicht zu diesem).

zu entziehen

Der Unterschied zwischen Hash-Code und Prüfsummen-Funktionen, so werden sie für verschiedene Zwecke ausgelegt sind.

  • Eine Prüfsumme verwendet wird um herauszufinden, ob etwas im Eingabe hat sich geändert.

  • Ein Hash-Code wird verwendet, um herauszufinden, ob etwas im Eingabe geändert hat und so viel "Abstand" zwischen den einzelnen Hash-Code-Werte zu haben, wie möglich.

    Auch gibt Macht werden weitere Anforderungen für eine Hash-Funktion, im Gegensatz zu dieser Regel, wie die Fähigkeit, Bäume / Cluster / Eimer Hash-Code-Wertes zu bilden früh.

    Und wenn Sie etwas geteilt anfängliche Randomisierung hinzufügen, Sie das Konzept für die moderne Verschlüsselungs- / Schlüssel-Austausch erhalten.


Über Wahrscheinlichkeit:

Zum Beispiel läßt vermuten, dass die Eingabedaten tatsächlich immer verändert (100% der Zeit). Und können Sie davon ausgehen, haben eine „perfekte“ hash / Prüfsumme Funktion, die eine 1-Bit-Hash / Prüfsummenwert erzeugt. Deshalb werden Sie verschiedene Hash / Prüfsummenwerten, 50% der Zeit, für zufällige Input-Daten.

  • Wenn genau 1 Bit in Ihrem zufälligen Eingangsdatum geändert hat, können Sie erkennen, dass 100% der Zeit, egal wie groß die Eingabedaten.

  • Wenn zwei Bits in Ihrer zufälligen Eingangsdaten geändert haben, Ihre Wahrscheinlichkeit „eine Änderung“ des Erfassens wird durch 2 geteilt, weil beide Änderungen gegenseitig neutralisieren könnten, und keine Hash / Prüfsumme Funktion würde erkennen, dass 2 Bits tatsächlich anders in den Eingangsdaten.

    ...

Das heißt, wenn die Anzahl der Bits in der Eingangsdaten mehrere Male größer als die Anzahl von Bits in der Hash / Prüfsummenwert ist, Ihre Wahrscheinlichkeit tatsächlich verschiedene Hash / Prüfsummenwerten, für verschiedene Eingabewerte bekommen, wird reduziert und ist keine konstante .

Ich neige dazu, das Wort Prüfsumme zu verwenden, wenn auf den Code beziehen (numerisch oder anderweitig) für eine Datei oder einen Teil der Daten erstellt, die verwendet werden kann, prüfen , dass die Datei oder Daten nicht beschädigt . Die häufigste Verwendung stoße ich auf, um zu überprüfen, dass Dateien über das Netzwerk gesendet haben nicht (absichtlich oder nicht) verändert wurden.

  

Obwohl Hashing und Prüfsummen ähnlich sind, dass sie sowohl einen Wert zu schaffen, basierend auf den Inhalt einer Datei, ist Hashing nicht das gleiche wie   Erzeugen einer Prüfsumme. Eine Prüfsumme soll (Scheck) die überprüfen   Integrität der Daten und Datenübertragungsfehler identifizieren, während eine Hash   ausgelegt ist, einen eindeutigen digitalen Fingerabdruck der Daten zu erstellen.

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top