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

Die 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 Anwendungsfälle.

AEAD hat die folgenden Eigenschaften:

  • Secrecy: Es ist nichts über den Klartext bekannt, außer seiner Länge.
  • Authentizität: Es ist nicht möglich, den verschlüsselten Klartext , der dem Geheimtext zugrunde liegt, unbemerkt zu ändern.
  • Symmetrisch: Die Verschlüsselung des Klartexts und die Entschlüsselung des Geheimtexts erfolgen 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 das vermeiden möchten, verwenden Sie stattdessen deterministisches AEAD.

Verknüpfte Daten

Mit AEAD kann 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 mit 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 Grenzwerte ü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) ist fast so schnell wie AES-GCM. Es hat dieselben Beschränkungen wie AES-GCM für die Anzahl der Nachrichten und die Nachrichtengröße. Wenn diese Grenzwerte überschritten werden, schlägt es jedoch weniger katastrophal fehl: Es wird möglicherweise nur offengelegt, dass zwei Nachrichten gleich sind. Dadurch ist es sicherer als AES-GCM, wird aber in der Praxis weniger häufig verwendet. Wenn Sie es in Java verwenden möchten, müssen Sie Conscrypt installieren.
    • Keine Schlüsselbindung mit 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 mit LGR.

Weitere Informationen zum Wire-Format des AEAD-Geheimtexts

Sicherheitsgarantien

AEAD-Implementierungen bieten:

  • 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 ich möchte Geheimtext an seinen Kontext binden.