Frage:
Was ist der Unterschied zwischen MAC und Hash?
user1157
2011-01-25 10:01:02 UTC
view on stackexchange narkive permalink

Was ist der Unterschied zwischen den beiden Algorithmen?
Ein mir bekannter Unterschied ist, dass MAC verschlüsselt ist und Hash nicht.

Die gleiche Frage betrifft auch Stackoverflow: [Was ist der Unterschied zwischen einem Hash und einem MAC (Nachrichtenauthentifizierungscode)?] (Https://stackoverflow.com/questions/2836100/what-is-the-difference-between-a- Hash- und Mac-Nachrichtenauthentifizierungscode)
Vier antworten:
#1
+36
Thomas Pornin
2013-02-09 18:29:26 UTC
view on stackexchange narkive permalink

Eine kryptografische Hash-Funktion ist eine vollständig öffentliche, deterministische Hash-Funktion, die jeder über beliebige Eingaben berechnen kann. Es nimmt als Eingabe eine Folge von Bits (jede Folge von Bits; einige Hash-Funktionen sind formal auf Eingaben von beispielsweise weniger als 2 64 Bit, auch bekannt als "2 Millionen Terabyte", beschränkt) und gibt Werte in aus ein ziemlich kleiner Raum, typischerweise eine Folge von Bits mit einer festen Größe (z. B. immer 160 Bits mit der Standard-Hash-Funktion SHA-1). Gute kryptografische Hash-Funktionen berücksichtigen einige Bedingungen, die informell darauf hinauslaufen, dass sie Eingabedaten so gründlich mischen, dass wir sie später nicht herausfinden können.

Ein Nachrichtenauthentifizierungscode ist ein Algorithmus die eine Nachricht und einen geheimen Schlüssel als Eingabe verwendet und eine Ausgabe mit fester Größe erzeugt, die später überprüft werden kann, um mit der Nachricht übereinzustimmen; Für die Überprüfung ist auch derselbe geheime Schlüssel erforderlich. Im Gegensatz zu Hash-Funktionen, bei denen alles bekannt ist und Angreifer gegen die Mathematik kämpfen, ist MAC in Modellen sinnvoll, in denen es Entitäten gibt, die ein Geheimnis kennen. Was wir von einem guten MAC erwarten, ist Unverfälschbarkeit: Es sollte unmöglich sein, eine Paarnachricht + einen MAC-Wert zu berechnen, der mit einem bestimmten Schlüssel K erfolgreich überprüft wird, ohne K genau und genau zu kennen seine Gesamtheit.

Hash-Funktionen und MAC sind daher unterschiedliche Arten von Algorithmen mit unterschiedlichen Eigenschaften, die in wirklich unterschiedlichen Situationen verwendet werden.

Einige MAC-Algorithmen (aber sicherlich nicht alle) können als "Hash-Funktionen mit einem Schlüssel" betrachtet werden, dies ist jedoch eine restriktive Ansicht. HMAC ist eine bekannte MAC-Konstruktion, die auf intelligente Weise auf einer zugrunde liegenden Hash-Funktion aufbaut. In der Tat unterscheiden sich Sicherheitseigenschaften und Modelle für Hash-Funktionen und MAC hinreichend voneinander, sodass das Zusammenfügen einer Hash-Funktion und eines Schlüssels nicht unbedingt zu einem sicheren MAC führt, selbst wenn die Hash-Funktion sicher ist (siehe) der Längenerweiterungsangriff, der diesen Punkt veranschaulicht).

Bis zu einem gewissen Grad können wir feststellen, dass ein MAC-Algorithmus ohne IV sicher arbeiten kann. a> muss einige Hash-ähnliche Eigenschaften aufweisen (das ist der Grund, warum ich HMAC mag: Ohne IV ist es viel schwieriger, bei der Implementierung einen Fehler zu machen). Der Teufel steckt jedoch im Detail.

Wie Sie bereits erwähnt haben, kann eine Hash-Funktion die Basis für einen MAC bilden. Blockchiffren sind der andere Baustein von MACs und werden als CBC-MAC bezeichnet. Die in diesen Funktionen verwendete Blocker-Verschlüsselung kann zwischen den Implementierungen unterschiedlich sein - DES, AES usw.
#2
+13
D.W.
2011-01-26 12:03:36 UTC
view on stackexchange narkive permalink

Sie sind zwei völlig verschiedene Grundelemente. Ein MAC wird zur Nachrichtenauthentifizierung verwendet und ist ein Grundelement mit symmetrischem Schlüssel. Eine Hash-Funktion kann für viele Zwecke verwendet werden und hat keine spezielle Tasteneingabe. MAC ist eine Abkürzung für "Nachrichtenauthentifizierungscode".

Lassen Sie sich nicht durch die Tatsache verwirren, dass einige MAC-Algorithmen (z. B. SHA1-HMAC) unter Verwendung einer Hash-Funktion als Unterprogramm arbeiten. Sie sind sehr unterschiedliche Bestien.

  • Einige Beispiele für MAC-Algorithmen: CMAC, SHA1-HMAC, MD5-HMAC, UMAC, Poly1305-AES.
  • Einige Beispiele für Kryptografie Hash-Funktionen: SHA256, SHA1, MD5.
HMAC ist einer der Algorithmen, mit denen wir MAC berechnen können.
#3
+7
Aleksandr Reznik
2011-01-25 21:30:52 UTC
view on stackexchange narkive permalink

Um es einfach zu machen: Normalerweise ist ein MAC ein Hash-Wert, der mit einem geheimen Schlüssel verschlüsselt ist. Beispielsweise können Angreifer Nachrichten fälschen und einen neuen Hash berechnen, dies jedoch nicht, wenn das System die Verschlüsselung von Hash erfordert ein geheimer Schlüssel.

Diese Antwort ist nicht korrekt. Dies ist weder eine hilfreiche Methode, um über einen MAC nachzudenken, noch die Funktionsweise eines MAC-Algorithmus.
Hash wird verwendet, um die Nachrichtenintegrität sicherzustellen. MAC wird sowohl für die Integrität als auch für die Authentizität verwendet. Die meisten MAC-Algorithmen - sind eine Kombination von Hash-Funktionen mit einem geheimen Schlüssel, die ich der Einfachheit halber als "Verschlüsselung" des Hash-Werts mit einem keyhttp: // en bezeichne .wikipedia.org / wiki / Datei: MAC.svg
Ich weiß nicht, dass das die beste Sichtweise ist. Ich glaube nicht, dass es einen großen Unterschied zwischen Integrität und Authentizität gibt, wenn es sich um einen aktiven Angreifer handelt, der möglicherweise übertragene Nachrichten ändert. Die Bezeichnung "Verschlüsselung" ist sehr irreführend, und ich empfehle Ihnen dringend, diese Terminologie nicht zu verwenden: Sie entspricht nicht der Art und Weise, wie Kryptographen sprechen, und meiner Erfahrung nach führt sie häufig unerfahrene Zuhörer in die Irre.
MACs werden selten durch Verschlüsselung eines Hashs erstellt. Für viele Arten der Verschlüsselung wäre das sehr schwach. Zum Beispiel würde es mit Stream-Chiffren saugen. Es würde einen 256-Bit-Hash und eine 256-Bit-Blockverschlüsselung erfordern, um so sicher zu sein wie ein normaler 128-Bit-MAC.
@D.W. Können Sie bitte ein Buch mit der richtigen Terminologie und Informationen zur Vermeidung der Situation empfehlen, in der "ein aktiver Angreifer die übertragenen Nachrichten ändern könnte"?
#4
+2
kayle
2016-06-15 16:35:02 UTC
view on stackexchange narkive permalink

Diese Antwort wurde von einem anderen Forum auf den Punkt gebracht.

Diese Arten von kryptografischen Grundelementen können durch die Sicherheitsziele unterschieden werden, die sie erfüllen (im einfachen Protokoll "Anhängen an eine Nachricht"):

Integrität: Kann der Empfänger sicher sein, dass die Nachricht nicht versehentlich geändert wurde?

Authentifizierung: Kann der Empfänger sicher sein, dass Die Nachricht stammt vom Absender?

Nicht-Zurückweisung: Wenn der Empfänger die Nachricht und den Nachweis an einen Dritten weitergibt, kann der Dritte sicher sein, dass die Nachricht von einem Dritten stammt der Absender? (Bitte beachten Sie, dass ich von Nicht-Zurückweisung im kryptografischen Sinne spreche, nicht im rechtlichen Sinne.) Wichtig ist auch diese Frage:

Schlüssel: Benötigt das Primitiv a geteilter geheimer Schlüssel oder öffentlich-private Schlüsselpaare? Ich denke, die kurze Antwort lässt sich am besten mit einer Tabelle erklären:

  Kryptografisches Grundelement | Hash | MAC | DigitalSecurity-Ziel | | | Unterschrift ------------------------ + ------ + ----------- + ----- -------- Integrität | Ja | Ja | JaAuthentifizierung | Nein | Ja | JaNicht-Ablehnung | Nein | Nein | Ja ------------------------ + ------ + ----------- + ----- -------- Art der Schlüssel | Keine | symmetrisch | asymmetrisch | | Schlüssel | Schlüssel  

Bitte beachten Sie, dass eine Authentifizierung ohne Vertrauen in die verwendeten Schlüssel nutzlos ist. Bei digitalen Signaturen muss ein Empfänger sicher sein, dass der Bestätigungsschlüssel tatsächlich dem Absender gehört. Bei MACs muss ein Empfänger sicher sein, dass der gemeinsam genutzte symmetrische Schlüssel nur für den Absender freigegeben wurde.

Klicken Sie hier, um weitere Informationen zu erhalten

Bitte geben Sie einen Link an, woher diese Antwort stammt.
Einige andere Leute haben diese Definitionen jetzt geändert: Eine Hash-Funktion bietet keine Integrität, während Authentifizierung das ist, was wir jetzt Integrität nennen (vgl. Crypto.stanford.edu/~dabo/cryptobook).Diese Änderung ist für das beste imo


Diese Fragen und Antworten wurden automatisch aus der englischen Sprache übersetzt.Der ursprüngliche Inhalt ist auf stackexchange verfügbar. Wir danken ihm für die cc by-sa 2.0-Lizenz, unter der er vertrieben wird.
Loading...