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

Das AEAD-Primitive (Authenticated Encryption with Associated Data, authentifizierte Verschlüsselung mit verknüpften Daten) ist das am häufigsten verwendete Primitive für die Datenverschlüsselung und eignet sich für die meisten Anwendungsfälle.

AEAD hat die folgenden Eigenschaften:

  • Secrecy: Mit Ausnahme der Länge ist nichts über den Klartext bekannt.
  • Authentizität: Es ist nicht möglich, den verschlüsselten Klartext , der dem Geheimtext zugrunde liegt, unbemerkt zu ändern.
  • Symmetrisch: Der Klartext wird verschlüsselt und der Geheimtext wird mit demselben Schlüssel entschlüsselt.
  • Randomisierung: 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 das vermeiden möchten, verwenden Sie stattdessen deterministisches AEAD.

Verknüpfte Daten

Mit AEAD kann ein Geheimtext mit bestimmten verknüpften Daten verknüpft werden. Angenommen, Sie haben eine Datenbank mit den Feldern user-id und encrypted-medical-history. In diesem Fall kann user-id als verknüpfte Daten verwendet werden, wenn encrypted-medical-history verschlüsselt wird. Dadurch wird verhindert, dass ein Angreifer die Krankengeschichte von einem Nutzer zu einem anderen verschiebt.

Verknüpfte Daten sind optional. Wenn sie angegeben werden, ist die Entschlüsselung nur erfolgreich, wenn dieselben verknüpften Daten an die Aufrufe zum Ver- und Entschlüsseln übergeben werden.

Schlüsseltyp auswählen

Wir empfehlen AES128_GCM für die meisten Anwendungsfälle. Es gibt jedoch verschiedene Schlüsseltypen für unterschiedliche Anforderungen. AES128 bietet 128-Bit-Sicherheit und AES256 bietet 256-Bit-Sicherheit.

Die beiden wichtigsten Sicherheitsbeschränkungen bei der Auswahl eines Modus sind:

  1. Abfragen pro Sekunde (QPS): Wie viele Nachrichten werden mit demselben Schlüssel verschlüsselt?
  2. Nachrichtengröße: Wie groß sind die Nachrichten?

Unterstützte Schlüsseltypen:

  • AES-CTR-HMAC (AES128_CTR_HMAC_SHA256, AES256_CTR_HMAC_SHA256) mit einem 16-Byte-Initialisierungsvektor (IV) ist der konservativste Modus mit guten Grenzen.
    • Schlüsselbindung
  • AES-EAX (AES128_EAX, AES256_EAX) ist etwas weniger konservativ und etwas schneller als AES128_CTR_HMAC_SHA256.
    • Keine Schlüsselbindung für MLGR.
  • AES-GCM (AES128_GCM, AES256_GCM) ist in der Regel der schnellste Modus mit den strengsten Beschränkungen für die Anzahl der Nachrichten (232) und die Nachrichtengröße (~64 GB pro Nachricht). Wenn diese Beschränkungen überschritten werden, schlägt AES-GCM katastrophal fehl, indem Klartext und der Authentifizierungsteil des internen AES-GCM-Schlüssels offengelegt werden.
    • AES-GCM ist weder robust [ABN] noch schlüsselbindend [GLR]. Es ist möglich, einen Geheimtext zu generieren, der mit zwei verschiedenen Schlüsseln entschlüsselt werden kann. Dies kann zu praktischen Angriffen führen [DGRW]. Überprüfen Sie Ihr Bedrohungsmodell sorgfältig, wenn der Schlüssel vom Angreifer ausgewählt wird.
  • AES-GCM-SIV (AES128_GCM_SIV, AES256_GCM_SIV) [RFC8452] ist resistent gegen versehentlichen Nonce-Missbrauch und fast so leistungsstark wie AES-GCM. Die Beschränkungen für die Anzahl der Nachrichten und die Nachrichtengröße für AES-GCM-SIV mit zufälligen IVs sind viel höher als die Beschränkungen von AES-GCM. Wenn diese Beschränkungen überschritten werden, schlägt AES-GCM-SIV weniger katastrophal fehl: Es wird nur offengelegt, dass zwei Nachrichten gleich sind. AES-GCM-SIV ist sicherer, wird aber in der Praxis weniger häufig verwendet.
    • Beschränkungen für zufällige Nonces:
      • 232 Nachrichten, wobei jeder Klartext maximal 8 GiB groß ist
      • 248 Nachrichten, wobei jeder Klartext maximal 32 MiB groß ist
      • 264 Nachrichten, wobei jeder Klartext maximal 128 KiB groß ist
    • Wenn Sie es in Java verwenden möchten, installieren Sie Conscrypt.
    • Keine Schlüsselbindung für ADGKLS.
  • XChaCha20-Poly1305 (XCHACHA20_POLY1305) hat eine viel höhere Beschränkung für die Anzahl der Nachrichten und die Nachrichtengröße als AES-GCM. Wenn es jedoch fehlschlägt (sehr unwahrscheinlich), wird auch Schlüsselmaterial offengelegt. Es ist nicht hardwarebeschleunigt und kann daher langsamer als AES-Modi sein, wenn Hardwarebeschleunigung verfügbar ist.
    • Keine Schlüsselbindung für LGR.

Weitere Informationen zum Wire-Format des AEAD-Geheimtexts

Sicherheitsgarantien

AEAD-Implementierungen bieten Folgendes:

  • CCA2-Sicherheit
  • Mindestens 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 den Geheimtext an seinen Kontext binden.