Authentifizierte Verschlüsselung mit zugehörigen Daten (AEAD)

Das AEAD-Primitive (Authenticated Encryption with Associated Data) ist die am häufigsten verwendete Primitive für die Datenverschlüsselung und eignet sich für die meisten Anforderungen.

AEAD hat folgende Eigenschaften:

  • Geheimhaltung: Abgesehen von seiner Länge ist der Klartext nicht bekannt.
  • Authentizität: Der verschlüsselte Klartext, der dem Geheimtext zugrunde liegt, kann nur erkannt werden, wenn er erkannt wird.
  • Symmetrisch: Die Verschlüsselung des Klartexts und die Entschlüsselung des Geheimtexts erfolgt mit demselben Schlüssel.
  • Zufälligkeit: Die Verschlüsselung wird zufällig durchgeführt. Zwei Nachrichten mit demselben Klartext liefern unterschiedliche Geheimtexte. Angreifer können nicht wissen, welcher Geheimtext einem bestimmten Klartext entspricht. Wenn Sie dies vermeiden möchten, verwenden Sie stattdessen deterministische AEAD.

Verknüpfte Daten

AEAD kann verwendet werden, um Geheimtext mit bestimmten verknüpften Daten zu verknüpfen. Angenommen, Sie haben eine Datenbank mit den Feldern user-id und encrypted-medical-history. In diesem Szenario kann user-id beim Verschlüsseln von encrypted-medical-history als verknüpfte Daten verwendet werden. Dies verhindert, dass ein Angreifer die Krankengeschichte von einem Benutzer zum anderen überträgt.

Schlüsseltyp auswählen

Wir empfehlen für die meisten Anwendungsfälle AES128_GCM. Es gibt jedoch verschiedene Schlüsseltypen für unterschiedliche Anforderungen. Für die 256-Bit-Sicherheit sollten Sie unten AES128 durch AES256 ersetzen. Allgemein:

  • AES128_CTR_HMAC_SHA256 mit einem 16-Byte-Initialisierungsvektor (IV) ist der konservativste Modus mit guten Grenzen.
  • AES128_EAX ist etwas weniger konservativ und etwas schneller als AES128_CTR_HMAC_SHA256.
  • AES128_GCM ist in der Regel der schnellste Modus mit den strengsten Beschränkungen für die Anzahl der Nachrichten und die Nachrichtengröße. Wenn diese Limits für Klartext und die zugehörigen Datenlängen (siehe unten) überschritten werden, schlägt AES128_GCM fehl und Schlüsselmaterial wird offengelegt.
  • AES128_GCM_SIV ist fast so schnell wie AES128_GCM, hat sehr gute Grenzen für eine große Anzahl von Nachrichten, ist aber etwas weniger etabliert. Zur Verwendung in Java müssen Sie Conscrypt installieren.
  • Bei XChaCha20Poly1305 sind die Anzahl der Nachrichten und die Größe der Nachrichten viel stärker begrenzt als bei AES128_GCM. Wenn es jedoch fehlschlägt (sehr unwahrscheinlich), wird auch Schlüsselmaterial offengelegt. Es ist nicht hardwarebeschleunigt und kann daher in Situationen, in denen Hardwarebeschleunigung verfügbar ist, langsamer als die AES-Modi sein.

Sicherheitsgarantien

AEAD-Implementierungen bieten folgende Vorteile:

  • CCA2-Sicherheit
  • Mindestens eine 80-Bit-Authentifizierungsstärke.
  • Die Möglichkeit, mindestens 232 Nachrichten mit insgesamt 250 Byte zu verschlüsseln. Kein Angriff mit bis zu 232 ausgewählten Klartexten oder ausgewählten Geheimtexten hat eine Erfolgswahrscheinlichkeit von mehr als 2–32.

Beispielanwendungsfälle

Weitere Informationen finden Sie unter Ich möchte Daten verschlüsseln und Geheimtext an ihren Kontext binden.