Nachrichtenauthentifizierungscode - Message authentication code

In der Kryptographie ist ein Message Authentication Code ( MAC ), manchmal auch als Tag bekannt , eine kurze Information, die verwendet wird, um eine Nachricht zu authentifizieren. Mit anderen Worten, um zu bestätigen, dass die Nachricht vom angegebenen Absender stammt (ihre Authentizität) und nicht geändert wurde. Der MAC-Wert schützt die Datenintegrität sowie Authentizität einer Nachricht , indem er Verifizierern (die auch den geheimen Schlüssel besitzen) ermöglicht, Änderungen am Nachrichteninhalt zu erkennen.

Terminologie

Der Begriff Message Integrity Code (MIC) wird häufig für den Begriff MAC ersetzt , insbesondere in der Kommunikation, um ihn von der Verwendung des letzteren als Media Access Control-Adresse ( MAC-Adresse ) zu unterscheiden. Einige Autoren verwenden jedoch MIC, um auf einen Message Digest zu verweisen , der nur darauf abzielt, eine einzelne Nachricht eindeutig, aber undurchsichtig zu identifizieren. RFC 4949 empfiehlt, den Begriff Message Integrity Code (MIC) zu vermeiden und stattdessen Prüfsumme , Fehlererkennungscode , Hash , Keyed Hash , Message Authentication Code oder Protected Checksum zu verwenden .

Definitionen

Informell besteht ein Nachrichtenauthentifizierungscodesystem aus drei Algorithmen:

  • Ein Schlüsselerzeugungsalgorithmus wählt einen Schlüssel aus dem Schlüsselraum gleichmäßig zufällig aus.
  • Ein Signaturalgorithmus gibt effizient ein Tag mit dem Schlüssel und der Nachricht zurück.
  • Ein Verifizierungsalgorithmus verifiziert effizient die Authentizität der Nachricht mit dem Schlüssel und dem Tag. Das heißt, Rückgabe akzeptiert, wenn die Nachricht und das Tag nicht manipuliert oder gefälscht sind, und andernfalls zurückgewiesen zurückgeben .

Ein sicherer Nachrichtenauthentifizierungscode muss Versuchen eines Gegners widerstehen , Tags für beliebige, ausgewählte oder alle Nachrichten zu fälschen , einschließlich unter den Bedingungen einer bekannten oder ausgewählten Nachricht . Es sollte rechnerisch unmöglich sein, ein gültiges Tag der gegebenen Nachricht ohne Kenntnis des Schlüssels zu berechnen, selbst wenn wir im schlimmsten Fall annehmen, dass der Gegner das Tag einer beliebigen Nachricht außer der fraglichen kennt.

Formal ist ein Message Authentication Code ( MAC ) System ein Tripel effizienter Algorithmen ( G , S , V ), die Folgendes erfüllen:

  • G (Schlüsselgenerator) liefert den Schlüssel k am Eingang 1 n , wobei n der Sicherheitsparameter ist.
  • S (signing) gibt ein Tag t auf dem Schlüssel k und dem Eingabestring x aus .
  • V (Verifizieren) von akzeptierten oder abgelehnten Ausgängen auf Eingängen: der Schlüssel k , die Zeichenfolge x und das Tag t .

S und V müssen folgendes erfüllen:

Pr [ kG (1 n ), V ( k , x , S ( k , x ) ) = akzeptiert ] = 1.

Ein MAC ist fälschungssicher, wenn für jeden effizienten Gegner A

Pr [ kG (1 n ), ( x , t ) ← A S ( k , · ) (1 n ), x ∉ Abfrage( A S ( k , · ) , 1 n ), V ( k , x , t ) = akzeptiert ] < negl( n ),

wobei A S ( k , · ) bezeichnet, dass A Zugriff auf das Orakel S ( k , · ) hat und Query( A S ( k , · ) , 1 n ) die Menge der von A gestellten Anfragen an S bezeichnet , die weiß n . Offensichtlich verlangen wir, dass jeder Widersacher die Zeichenfolge x auf S nicht direkt abfragen kann , da sonst ein gültiger Tag von diesem Widersacher leicht erhalten werden kann.

Sicherheit

MAC-Funktionen ähneln kryptografischen Hash-Funktionen , weisen jedoch unterschiedliche Sicherheitsanforderungen auf. Um als sicher zu gelten, muss eine MAC-Funktion existenziellen Fälschungen unter Choled-Message-Angriffen widerstehen . Dies bedeutet, dass selbst wenn ein Angreifer Zugriff auf ein Orakel hat, das den geheimen Schlüssel besitzt und MACs für Nachrichten seiner Wahl generiert, der Angreifer den MAC für andere Nachrichten (die nicht zur Abfrage des Orakels verwendet wurden) nicht erraten kann, ohne unangemessene Mengen zu leisten der Berechnung.

MACs unterscheiden sich von digitalen Signaturen, da MAC-Werte mit demselben geheimen Schlüssel erzeugt und verifiziert werden. Dies impliziert, dass sich Sender und Empfänger einer Nachricht vor Beginn der Kommunikation auf denselben Schlüssel einigen müssen, wie dies bei der symmetrischen Verschlüsselung der Fall ist . Aus dem gleichen Grunde, MACs bieten nicht die Eigenschaft der Nicht-Zurückweisung von Unterschriften angeboten speziell im Fall eines netzwerkweiten gemeinsamen geheimen Schlüssels: jeder Benutzer, der eine MAC überprüfen kann , ist auch in der Lage , MACs für andere Nachrichten zu erzeugen. Im Gegensatz dazu wird eine digitale Signatur unter Verwendung des privaten Schlüssels eines Schlüsselpaars erzeugt, bei der es sich um eine Kryptografie mit öffentlichem Schlüssel handelt. Da dieser private Schlüssel nur seinem Inhaber zugänglich ist, weist eine digitale Signatur nach, dass ein Dokument von keinem anderen als diesem Inhaber signiert wurde. Somit bieten digitale Signaturen eine Unbestreitbarkeit. Die Unbestreitbarkeit kann jedoch durch Systeme bereitgestellt werden, die Schlüsselverwendungsinformationen sicher an den MAC-Schlüssel binden; derselbe Schlüssel ist im Besitz von zwei Personen, aber einer hat eine Kopie des Schlüssels, die für die MAC-Erzeugung verwendet werden kann, während der andere eine Kopie des Schlüssels in einem Hardware-Sicherheitsmodul hat , das nur die MAC-Verifizierung zulässt. Dies wird häufig in der Finanzbranche durchgeführt.

Implementierung

MAC-Algorithmen können aus anderen kryptografischen Primitiven konstruiert werden, wie kryptografischen Hash-Funktionen (wie im Fall von HMAC ) oder aus Blockchiffre- Algorithmen ( OMAC , CCM , GCM und PMAC ). Doch viele der am schnellsten MAC - Algorithmen wie UMAC - VMAC und Poly1305-AES sind elter Basis Universal-Hashing .

Intrinsisch verschlüsselte Hash-Algorithmen wie SipHash sind ebenfalls per Definition MACs; sie können sogar schneller sein als MACs auf Basis von Universal-Hashing.

Außerdem kann der MAC-Algorithmus absichtlich zwei oder mehr kryptographische Primitive kombinieren, um den Schutz auch dann aufrechtzuerhalten, wenn sich später herausstellt, dass einer von ihnen angreifbar ist. Beispielsweise werden bei Transport Layer Security (TLS) die Eingabedaten in Hälften geteilt, die jeweils mit einem anderen Hashing-Primitiven ( SHA-1 und SHA-2 ) verarbeitet und dann zusammen XOR-verknüpft werden, um den MAC auszugeben.

Einmaliger MAC

Universelles Hashing und insbesondere paarweise unabhängige Hashfunktionen stellen einen sicheren Nachrichtenauthentifizierungscode bereit, solange der Schlüssel höchstens einmal verwendet wird. Dies kann als einmaliges Pad für die Authentifizierung angesehen werden.

Die einfachste derartige paarweise unabhängigen Hash - Funktion wird durch den Zufallsschlüssel, definiert Schlüssel = ( a , b ) , und der MAC - Tag für eine Nachricht m wird berechnet als tag = ( am + b ) mod p , wobei p eine Primzahl ist.

Allgemeiner stellen k- unabhängige Hashing- Funktionen einen sicheren Nachrichtenauthentifizierungscode bereit, solange der Schlüssel weniger als k- mal für k- wege unabhängige Hashing-Funktionen verwendet wird.

Nachrichtenauthentifizierungscodes und Datenursprungsauthentifizierung wurden auch im Rahmen der Quantenkryptographie diskutiert. Im Gegensatz zu anderen kryptographischen Aufgaben, wie der Schlüsselverteilung, hat sich für eine recht breite Klasse von Quanten-MACs gezeigt, dass Quantenressourcen keinen Vorteil gegenüber bedingungslos sicheren einmaligen klassischen MACs bieten.

Normen

Es existieren verschiedene Standards, die MAC-Algorithmen definieren. Diese beinhalten:

  • Die FIPS PUB 113 Computer Data Authentication , die 2002 zurückgezogen wurde, definiert einen auf DES basierenden Algorithmus .
  • FIPS PUB 198-1 Der Keyed-Hash Message Authentication Code (HMAC)
  • ISO/IEC 9797-1 Mechanismen mit Blockchiffre
  • ISO /IEC 9797-2 Mechanismen mit einer dedizierten Hash-Funktion
  • ISO /IEC 9797-3 Mechanismen mit universeller Hash-Funktion
  • ISO / IEC 29192-6 Leichte Kryptographie - Nachrichtenauthentifizierungscodes

ISO/IEC 9797-1 und -2 definieren generische Modelle und Algorithmen, die mit jeder Blockchiffre oder Hash-Funktion und einer Vielzahl verschiedener Parameter verwendet werden können. Diese Modelle und Parameter ermöglichen die Definition spezifischerer Algorithmen durch Nominierung der Parameter. Zum Beispiel ist der Algorithmus FIPS PUB 113 funktionell äquivalent zum ISO/IEC 9797-1 MAC-Algorithmus 1 mit Padding-Verfahren 1 und einem Blockchiffrieralgorithmus von DES.

Ein Beispiel für die MAC-Nutzung

MAC.svg

In diesem Beispiel führt der Absender einer Nachricht diese durch einen MAC-Algorithmus, um ein MAC-Daten-Tag zu erzeugen. Die Nachricht und das MAC-Tag werden dann an den Empfänger gesendet. Der Empfänger wiederum führt den Nachrichtenteil der Übertragung durch denselben MAC-Algorithmus unter Verwendung desselben Schlüssels aus, wodurch ein zweites MAC-Daten-Tag erzeugt wird. Der Empfänger vergleicht dann das bei der Übertragung empfangene erste MAC-Tag mit dem zweiten erzeugten MAC-Tag. Sind sie identisch, kann der Empfänger davon ausgehen, dass die Nachricht während der Übertragung nicht verändert oder manipuliert wurde ( Datenintegrität ).

Damit der Empfänger jedoch Replay-Angriffe erkennen kann , muss die Nachricht selbst Daten enthalten, die sicherstellen, dass dieselbe Nachricht nur einmal gesendet werden kann (zB Zeitstempel, Sequenznummer oder Verwendung einer einmaligen MAC). Andernfalls könnte ein Angreifer – ohne den Inhalt überhaupt zu verstehen – diese Nachricht aufzeichnen und zu einem späteren Zeitpunkt wiedergeben, was zum gleichen Ergebnis wie der ursprüngliche Absender führt.

Siehe auch

Anmerkungen

Verweise

  • Goldreich, Oded (2001), Grundlagen der Kryptographie I: Basic Tools , Cambridge: Cambridge University Press, ISBN 978-0-511-54689-1
  • Goldreich, Oded (2004), Grundlagen der Kryptographie II: Basic Applications (1. hrsg.), Cambridge [ua]: Cambridge Univ. Presse, ISBN 978-0-521-83084-3
  • Pass, Rafael, A Course in Cryptography (PDF) , abgerufen am 31. Dezember 2015

Externe Links

  1. ^ 11-12-20C8