Message Authentication Code (MAC)

Mit dem MAC-Primit können Sie überprüfen, ob Ihre Daten manipuliert werden. Ein Absender, der einen symmetrischen Schlüssel mit einem Empfänger teilst, kann ein Authentifizierungs-Tag für eine bestimmte Nachricht berechnen. So kann der Empfänger prüfen, ob eine Nachricht vom erwarteten Absender stammt und nicht geändert wurde.

Ein MAC hat die folgenden Attribute:

  • Authentizität: Nur wenn Sie den Schlüssel kennen, können Sie ein überprüfbares MAC-Tag erstellen.
  • Symmetrisch: Für die Berechnung und Überprüfung des Tags ist der gleiche Schlüssel erforderlich.

MAC-Adressen können je nach Algorithmus deterministisch oder randomisiert sein. Tink implementiert derzeit keine nicht deterministischen MAC-Algorithmen. Sie sollten eine MAC-Adresse nur für die Nachrichtenauthentifizierung verwenden und nicht für andere Zwecke wie das Generieren pseudozufälliger Byte (siehe PRF).

Wenn Sie stattdessen eine asymmetrische Primitive benötigen, finden Sie weitere Informationen unter Digitale Signatur.

Schlüsseltyp auswählen

Wir empfehlen die Verwendung von HMAC_SHA256 für die meisten Anwendungsfälle, es gibt jedoch auch andere Möglichkeiten.

Im Allgemeinen gilt Folgendes:

  • HMAC_SHA512 kann je nach Nachrichtengröße und den Besonderheiten der verwendeten Hardware schneller sein.
  • HMAC_SHA512 ist der konservativste Modus, der für eine praktisch unbegrenzte Anzahl von Nachrichten verwendet werden kann.
  • AES256_CMAC ist bei Systemen, die die AES-NI-Hardwarebeschleunigung unterstützen, am schnellsten.

Minimale Sicherheitsgarantien

  • Mindestens eine 80-Bit-Authentifizierungsstärke
  • Schutz vor Existenzfälschungen bei ausgewähltem Klartextangriff
  • Mindestens 128-Bit-Sicherheit vor Angriffen mit Schlüsselwiederherstellungen sowie in Szenarien mit mehreren Nutzern (wenn ein Angreifer nicht einen bestimmten Schlüssel, sondern einen Schlüssel aus einem Satz von bis zu 232 Schlüsseln angreift)

Anwendungsbeispiel

Weitere Informationen finden Sie im Hilfeartikel Ich möchte Daten vor Manipulation schützen.