it-swarm-eu.dev

Was ist der Unterschied zwischen MAC und Hash?

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

32
user1157

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 ist jedoch nicht möglich, wenn das System erfordert, dass der Hash mit einem geheimen Schlüssel verschlüsselt wird.

7

A kryptografische Hash-Funktion ist eine vollständig öffentliche, deterministische Hash-Funktion, die jeder über beliebige Eingaben berechnen kann. Als Eingabe wird eine Folge von Bits verwendet (jede Folge von Bits; einige Hash-Funktionen sind formal auf Eingaben von beispielsweise weniger als 2 beschränkt64 Bits, auch bekannt als "2 Millionen Terabyte") und gibt Werte auf relativ kleinem Raum aus, 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, der eine Nachricht nd 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 erfolgreich verifiziert wird [~ # ~] k [~ # ~] ohne Wissen [~ # ~] k [~ # ~] genau und in seiner Gesamtheit.

Hash-Funktionen und MAC sind daher unterschiedliche 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 selbst 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 ist sicher ist (Siehe Längenerweiterungsangriff , der diesen Punkt veranschaulicht.).

Bis zu einem gewissen Grad können wir feststellen, dass ein MAC-Algorithmus, der sicher arbeiten kann ohne IV einige Hash-ähnliche Eigenschaften aufweisen muss ( 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.

34
Thomas Pornin

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) mithilfe einer Hash-Funktion als Unterprogramm arbeiten. Sie sind sehr unterschiedliche Tiere.

  • Einige Beispiele für MAC-Algorithmen: CMAC, SHA1-HMAC, MD5-HMAC, UMAC, Poly1305-AES.
  • Einige Beispiele für kryptografische Hash-Funktionen: SHA256, SHA1, MD5.
13
D.W.

Fand dies auf den Punkt Antwort von einem anderen Forum.

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 vom Absender stammt?

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

Schlüssel: Benötigt das Grundelement einen gemeinsamen geheimen Schlüssel oder öffentlich-private Schlüsselpaare? Ich denke, die kurze Antwort lässt sich am besten anhand einer Tabelle erklären:

Cryptographic primitive | Hash |    MAC    | Digital
Security Goal           |      |           | signature
------------------------+------+-----------+-------------
Integrity               |  Yes |    Yes    |   Yes
Authentication          |  No  |    Yes    |   Yes
Non-repudiation         |  No  |    No     |   Yes
------------------------+------+-----------+-------------
Kind of keys            | none | symmetric | asymmetric
                        |      |    keys   |    keys

Bitte denken Sie daran, 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 für weitere Informationen

2
kayle