Nachrichtenauthentifizierungscode
In der Kryptografie ist ein Message Authentication Code oder Message Authentication Code , oft mit seinem Akronym MAC bezeichnet, eine Information, die zur Authentifizierung einer Nachricht verwendet wird.
MAC-Werte werden durch Anwendung einer kryptografischen Hash-Funktion mit einem geheimen Schlüssel K berechnet , der nur dem Absender und dem Empfänger, nicht aber den Angreifern bekannt ist. Es wird gesagt, dass die Hash-Funktion kryptografisch sein muss, weil sie bestimmte Sicherheitseigenschaften erfüllen muss , die sie gegen Angriffe von Angreifern resistent machen. Mathematisch nimmt die kryptografische Hash- Funktion zwei Argumente an: einen Schlüssel K fester Größe und eine Nachricht M beliebiger Länge. Das Ergebnis ist ein MAC-Code fester Länge:
- MAC = C K ( M )
wo:
- M ist eine Nachricht beliebiger Länge
- C K ist die Funktion, die die Nachricht in einen MAC- Wert umwandelt und einen geheimen Schlüssel K als Parameter verwendet
- MAC ist der berechnete MAC-Wert fester Länge
Wenn der gesendete MAC-Wert mit dem Wert übereinstimmt, den der Empfänger berechnet, kann der Empfänger Folgendes garantieren:
- Die Nachricht wurde nicht geändert
- Die Nachricht kommt von dem in der Nachricht angegebenen Absender
- Wenn die Nachricht eine Sequenznummer enthält, folgt die Nachricht der richtigen Sequenz
Sicherheit
Ideale MAC-Funktion
Die ideale MAC-Funktion ist definiert als eine zufällige Abbildung aller möglichen Werte der Eingangsnachricht M auf Ausgänge der Größe n Bits.
Sicherheitseigenschaft
[ 1 ] Damit eine MAC-Funktion verwendet werden kann, muss sieresistent gegen die Berechnung neuer Hash-Werte.
Arten von MAC-Funktionen
Derzeit gibt es 3 große Gruppen von MAC-Funktionen:
- CBC-MAC : Die Idee hinter diesem Algorithmus ist es, einen symmetrischen Verschlüsselungsalgorithmus in eine MAC-Funktion umzuwandeln. Die grundlegende Operation besteht darin, die Nachricht mit einem Algorithmus im CBC-Modus zu verschlüsseln und das gesamte Chiffretext-Ergebnis mit Ausnahme des letzten Blocks zu verwerfen.
- HMAC : Da eine MAC-Funktion eine zufällige Zuordnung ist und sich Hash-Funktionen als solche verhalten, können wir die Idee nutzen, eine Hash-Funktion zu verwenden, um eine MAC-Funktion zu implementieren. Die heute beliebteste Option ist die Verwendung von HMAC-SHA-256.
- UMAC : UMAC-Funktionen basieren auf der Prämisse, dass der Angreifer mit dem System interagieren muss, um zu prüfen, ob das von ihm generierte MAC-Ergebnis gültig ist oder nicht. Das heißt, es gibt keinen umfassenden Offline-Angriff auf MAC-Funktionen. Daher argumentieren sie, dass das Ergebnis auf nur 64 Bit reduziert werden kann. Allerdings gibt es für MAC-Funktionen keinen genau definierten Standard wie für Hash-Funktionen, was aus Implementierungssicht langfristig kontraproduktiv wirkt.
Die Schwäche. Anwendung des Horton-Prinzips [ 2 ] [ 3 ]
Die Verwendung von MAC-Werten zur Authentifizierung bietet eine gewisse Sicherheit, ist aber kein Allheilmittel . Beispielsweise könnte es einen Angriff geben, der darin besteht, die Nachricht und den MAC-Wert abzufangen, damit sie zur Authentifizierung wiederverwendet werden können.
Im Allgemeinen besagt das Horton-Prinzip , dass die Bedeutung der Nachricht authentifiziert werden muss und nicht der Code der Nachricht. Wenn wir das Prinzip auf die Authentifizierung von MAC-Nachrichten anwenden, sollten wir nicht nur den MAC-Wert authentifizieren, sondern auch einige Informationen, die verwendet werden, um einen eindeutigen MAC-Wert zu bilden. Beispielsweise könnte es eine gute Idee sein, bei der Berechnung des MAC-Werts eine Art Zeitstempel einzubeziehen (z. B. durch Verketten mit der Nachricht). Dieser Zeitstempel würde an den Verifizierer gesendet werden. Wenn der Verifizierer einen alten Zeitstempel empfängt, entscheidet er, dass er falsch ist (er abgelaufen ist). Wenn der Gegner beschließt, den Zeitstempel zu aktualisieren, wäre der abgefangene MAC-Wert nicht mehr gültig, um an den Prüfer gesendet zu werden.
Andere Systeme schlagen vor , mit der Nachricht bestimmte Daten zu verketten (um den MAC-Wert zu berechnen), die sich auf den Kontext beziehen, in dem sie sich befinden (Nachrichtennummer, ausgehandelte Feldgrößen, Protokollversionsnummer ... ) . Diese Daten sollten nicht an die Prüfstelle übermittelt werden, da sie bereits im Kontext stehen und bekannt sind.
Anwendungen
MACs werden häufig zur Authentifizierung verwendet (daher ihr Name). Derjenige, der sich authentifizieren möchte, und der Verifizierer teilen sich den Schlüssel der MAC-Funktion und halten ihn geheim. Auf diese Weise kann der Verifizierer, wenn er den MAC-Wert empfängt, verifizieren, ob dieser MAC-Wert demjenigen entspricht, der aus einer gegebenen Nachricht generiert werden muss.
Es gibt zwei Möglichkeiten, wie es funktioniert, je nachdem, wo die Nachricht generiert wird:
- Die Nachricht wird von demjenigen generiert, den Sie authentifizieren möchten, und sendet dann die Nachricht und den zugehörigen MAC-Wert an den Prüfer. Im nächsten Schritt verifiziert der Verifizierer die Gültigkeit des MAC-Wertes und stellt gleichzeitig die Integrität der empfangenen Nachricht sicher.
- Die Nachricht wird vom Verifizierer generiert und an den zu Authentifizierenden gesendet, damit dieser den MAC-Wert generiert und an den Verifizierer sendet. Diese Art von Protokoll würde in die sogenannten Challenge-Response-Protokolle passen.
Siehe auch
- Kryptografische Hash-Funktion
- Data Authentication Code , ein ANSI - MAC-Wert-Berechnungsalgorithmus , der auf der symmetrischen DES - Verschlüsselung basiert
- UMAC
- HMAC
- CMAC
- Poly1305-AES
- Poly1305-AED
- Hashes
Referenzen
- ↑ AJ Menezes et al., „ Handbook of Applied Cryptography “, CRC Press 2011
- ↑ J. Weiss, „Java-Kryptografieerweiterungen: Praktischer Leitfaden für Programmierer“, MORGAN KAUFMANN PUBLISHERS 2004
- ↑ a b J. Li-Chang Lo, „A framework for cryptography algorithms on mobile devices“, University of Pretoria 2007