Ein Message Authentication Code oder MAC ist eine Einweg-Hashfunktion, die einen Schlüssel enthält, mit nur diesem man den Hashwert verifizieren kann. Damit kann man Authentizität ohne Geheimhaltung erreichen.
Mit Hilfe von MACs können mehrere Benutzer ihre Dateien authentifizieren und einzelne Benutzer können mit MACs überprüfen, ob ihre Dateien verändert wurden, z. B. von Viren. Im Gegensatz zu Einweg-Hashfunktionen ist der Schlüssel des MACs zur Berechnung des Hashwertes nur dem Benutzer bekannt und der Hashwert kann nicht unbemerkt verändert werden.
Eine einfache Möglichkeit zur Umwandlung einer Einweg-Hashfunktion in einen MAC besteht darin, den Hashwert mit einem symmetrischen Algorithmus zu chiffrieren. Jeder MAC kann in eine Einweg-Hashfunktion umgewandelt werden, indem man den Schlüssel veröffentlicht.
Die einfachste Möglichkeit zur Konstruktion einer schlüsselabhängigen Einweg-Hashfunktion ist die Verschlüsselung einer Nachricht mit einem Blockalgorithmus im CBC- oder CFB-Modus. Der Hashwert ist der letzte verschlüsselte Block, der noch einmal verschlüsselt wird. Bei der Verwendung des Blockalgorithmus DES mit reduzierter Rundenzahl kann es mittels differentieller Kryptanalyse geknackt werden. Ein potentielles Sicherheitsproblem bei dieser Methode besteht darin, daß der Empfänger den Schlüssel kennen muß. Mit diesem Schlüssel kann er Nachrichten mit einem bestimmten vorgegebenen Hashwert generieren, indem er in der umgekehrten Richtung entschlüsselt.
Nicht besonders kompliziert produziert der MAA einen 32 Bit langen Hashwert und wurde vor langer Zeit für Mainframe-Computer mit schneller Multiplikationsanweisung entwickelt.
w
Mi))mod232-1
Mi))mod232-2
Diese Anweisungen werden für jeden Nachrichtenblock
Dieser MAC liefert einen Hashwert mit der doppelten Blocklänge des Blockalgorithmus. Zuerst berechnet man den CBC-MAC der Nachricht, anschließend den CBC-MAC aus den Blöcken in umgekehrter Reihenfolge der Nachricht. Der bidirektionale MAC besteht einfach aus der Konkatenierung dieser beiden Werte. Leider ist diese Konstruktion unsicher.
Dieser MAC wird auch als quadratic congruential manipulation detection code (QCMDC) bezeichnet. Zuerst zerlegt man die Nachricht in Blöcke der Größe m Bit. Dann berechnet man:
Das Zeichen + steht für ganzzahlige Addition.
Jueneman empfiehlt
Von Bart Preneel entwickelt und in das RIPE-Projekt aufgenommen benutzt er DES als Verschlüsselungsfunktion. Es gibt zwei Varianten des Verfahrens: RIPE-MAC1 benutzt einfache DES-Verschlüsselung pro 64 bit langen Nachrichtenblock, RIPE-MAC3 benutzt zwecks höherer Sicherheit Triple-DES. Der Algorithmus besteht aus drei Teilen. Zuerst wird die Nachricht auf ein Vielfaches von 64 bit vergrößert und dann in 64 bit lange Blöcke zerlegt. Eine schlüsselabhängige Kompressionsfunktion hasht diese Blöcke zu einem einzigen Block der Länge 64 bit. Der Vorgang wird von einem geheimen Schlüssel gesteuert. In diesem Schritt wird entweder DES oder Triple-DES verwendet. Die Ausgabe dieser Kompression durchläuft schließlich eine weitere DES-Chiffrierung mit einem Schlüssel, der aus dem zur Kompression benutzten Schlüssel abgeleitet wird.
Ein weiterer MAC, der in das RIPE-Projekt aufgenommen wurde. Der Algorithmus ist sehr interessant, weil er beweisbar sicher ist. Die Wahrscheinlichkeit eines erfolgreichen Angriffs läßt sich quantifizieren. Leider muß jede Nachricht mit einem anderen Schlüssel gehasht werden. Die durch Verändern der Parameter gewählte Sicherheitsstufe beeinflußt die maximale Länge einer Nachricht, die gehasht werden kann. Vergleichbare Einschränkungen gibt es bei keiner anderen vorgestellten Funktionen. Aufgrund dieser Besonderheiten empfiehlt der RIPE-Report, IBC-Hash nur für lange und selten übertragene Nachrichten einzusetzen.