Eine formelle Analyse wurde 2011 von Phil Rogaway hier durchgeführt . Abschnitt 1.6 enthält eine Zusammenfassung, die ich hier transkribiere, wobei ich meine eigene Betonung in Fettdruck hinzufüge (wenn Sie ungeduldig sind, empfiehlt er die Verwendung des CTR-Modus, aber ich schlage vor, dass Sie meine Absätze über Nachrichtenintegrität im Vergleich zur Verschlüsselung unten lesen).
Beachten Sie, dass für die meisten von diesen die IV zufällig sein muss, was bedeutet, dass sie nicht vorhersehbar ist und daher mit kryptografischer Sicherheit generiert werden sollte. Einige erfordern jedoch nur eine "Nonce", die diese Eigenschaft nicht verlangt, sondern nur erfordert, dass sie nicht wiederverwendet wird. Daher sind Designs, die auf einer Nonce basieren, weniger fehleranfällig als Designs, die dies nicht tun (und glauben Sie mir, ich habe viele Fälle gesehen, in denen CBC nicht mit der richtigen IV-Auswahl implementiert wurde). Sie werden also sehen, dass ich Fettdruck hinzugefügt habe, wenn Rogaway so etwas wie "Vertraulichkeit wird nicht erreicht, wenn die IV eine Nonce ist" sagt. Wenn Sie Ihre IV kryptografisch sicher (unvorhersehbar) auswählen, ist dies kein Problem. Wenn Sie dies nicht tun, verlieren Sie die guten Sicherheitseigenschaften. Verwenden Sie eine IV niemals für einen dieser Modi.
Es ist auch wichtig, den Unterschied zwischen Nachrichtenintegrität und Verschlüsselung zu verstehen. Durch die Verschlüsselung werden Daten ausgeblendet, aber ein Angreifer kann die verschlüsselten Daten möglicherweise ändern, und die Ergebnisse können möglicherweise von Ihrer Software akzeptiert werden, wenn Sie die Nachrichtenintegrität nicht überprüfen. Während der Entwickler sagt "aber die geänderten Daten werden nach der Entschlüsselung als Müll zurückkommen", wird ein guter Sicherheitsingenieur die Wahrscheinlichkeit finden, dass der Müll ein nachteiliges Verhalten in der Software verursacht, und diese Analyse dann in einen echten Angriff verwandeln. Ich habe viele Fälle gesehen, in denen Verschlüsselung verwendet wurde, aber die Nachrichtenintegrität wirklich mehr als die Verschlüsselung benötigt wurde. Verstehe, was du brauchst.
Ich sollte sagen, dass GCM zwar sowohl Verschlüsselung als auch Nachrichtenintegrität aufweist, aber ein sehr fragiles Design ist: Wenn Sie eine IV wiederverwenden, sind Sie fertig - der Angreifer kann Ihren Schlüssel wiederherstellen. Andere Designs sind weniger fragil, daher habe ich persönlich Angst, GCM aufgrund der Menge an schlechtem Verschlüsselungscode zu empfehlen, die ich in der Praxis gesehen habe.
Wenn Sie beides benötigen, Nachrichtenintegrität und Verschlüsselung, können Sie zwei Algorithmen kombinieren: Normalerweise sehen wir CBC mit HMAC, aber keinen Grund, sich an CBC zu binden. Das Wichtigste, was Sie wissen müssen, ist, zuerst den verschlüsselten Inhalt zu verschlüsseln und dann den verschlüsselten Inhalt zu speichern , nicht umgekehrt. Außerdem muss die IV Teil der MAC-Berechnung sein.
IP-Probleme sind mir nicht bekannt.
Nun zu den guten Sachen von Professor Rogaway:
Block-Chiffren-Modi, Verschlüsselung, aber keine Nachrichtenintegrität
EZB : Bei einer Blockverschlüsselung verschlüsselt der Modus Nachrichten, die ein Vielfaches von n Bits sind, indem jedes n-Bit-Stück separat verschlüsselt wird. Die Sicherheitseigenschaften sind schwach , und die Methode leckt die Gleichheit der Blöcke über Blockpositionen und Zeit. Von erheblichem Altwert und von Wert als Baustein für andere Systeme, aber der Modus erreicht selbst kein allgemein wünschenswertes Sicherheitsziel und muss mit erheblicher Vorsicht verwendet werden. Die EZB sollte nicht als "allgemeiner" Vertraulichkeitsmodus angesehen werden .
CBC : Als IV-basiertes Verschlüsselungsschema ist der Modus als probabilistisches Verschlüsselungsschema sicher, wodurch eine Ununterscheidbarkeit von zufälligen Bits unter der Annahme einer zufälligen IV erreicht wird. Vertraulichkeit wird nicht erreicht, wenn die IV lediglich eine Nonce ist oder wenn es sich um eine Nonce handelt, die unter demselben Schlüssel verschlüsselt ist, der vom Schema verwendet wird, wie es der Standard fälschlicherweise vorschlägt. Chiffretexte sind sehr formbar. Keine ausgewählte CCA-Sicherheit (Ciphertext Attack). Die Vertraulichkeit verfällt bei Vorhandensein eines Orakels mit korrekter Polsterung für viele Polsterungsmethoden. Die Verschlüsselung ist ineffizient, da sie von Natur aus seriell ist. Die weit verbreiteten Sicherheitseigenschaften des Modus führen zu häufigem Missbrauch. Kann als Baustein für CBC-MAC-Algorithmen verwendet werden. Ich kann keine wichtigen Vorteile gegenüber dem CTR-Modus feststellen.
CFB : Als IV-basiertes Verschlüsselungsschema ist der Modus als probabilistisches Verschlüsselungsschema sicher, wodurch eine Ununterscheidbarkeit von zufälligen Bits unter der Annahme einer zufälligen IV erreicht wird. Vertraulichkeit wird nicht erreicht, wenn die IV vorhersehbar ist oder wenn sie von einer Nonce erstellt wird, die unter demselben Schlüssel verschlüsselt ist, der vom Schema verwendet wird, wie es der Standard fälschlicherweise vorschlägt. Chiffretexte sind formbar. Keine CCA-Sicherheit. Die Verschlüsselung ist ineffizient, da sie von Natur aus seriell ist. Das Schema hängt von einem Parameter s ab, 1 ≤ s ≤ n, typischerweise s = 1 oder s = 8. Ineffizient, da nur ein Blockverschlüsselungsaufruf erforderlich ist, um nur s Bits zu verarbeiten. Der Modus erreicht eine interessante Eigenschaft der Selbstsynchronisation. Das Einfügen oder Löschen einer beliebigen Anzahl von S-Bit-Zeichen in den Chiffretext stört die korrekte Entschlüsselung nur vorübergehend.
OFB : Als IV-basiertes Verschlüsselungsschema ist der Modus als probabilistisches Verschlüsselungsschema sicher, wodurch eine Ununterscheidbarkeit von zufälligen Bits unter der Annahme einer zufälligen IV erreicht wird. Vertraulichkeit wird nicht erreicht, wenn die IV eine Nonce ist, obwohl eine feste Folge von IVs (z. B. ein Zähler) gut funktioniert. Chiffretexte sind sehr formbar. Keine CCA-Sicherheit. Verschlüsselung und Entschlüsselung sind ineffizient, da sie von Natur aus seriell sind. Verschlüsselt nativ Zeichenfolgen beliebiger Bitlänge (kein Auffüllen erforderlich). Ich kann keine wichtigen Vorteile gegenüber dem CTR-Modus feststellen.
CTR : Bei diesem IV-basierten Verschlüsselungsschema ist der Modus nicht von zufälligen Bits zu unterscheiden, wenn eine Nonce IV angenommen wird. Als sicheres nichtce-basiertes Schema kann der Modus auch als probabilistisches Verschlüsselungsschema mit einer zufälligen IV verwendet werden. Vollständiger Ausfall der Privatsphäre, wenn eine Nonce bei der Ver- oder Entschlüsselung wiederverwendet wird. Die Parallelisierbarkeit des Modus macht ihn in einigen Einstellungen häufig schneller als in anderen Vertraulichkeitsmodi. Ein wichtiger Baustein für authentifizierte Verschlüsselungsschemata. Insgesamt normalerweise der beste und modernste Weg, um eine reine Datenschutzverschlüsselung zu erreichen.
XTS : Als IV-basiertes Verschlüsselungsschema wendet der Modus eine optimierbare Blockverschlüsselung (sicher als starkes PRP) auf jeden n-Bit-Block an. Für Nachrichten mit Längen, die nicht durch n teilbar sind, werden die letzten beiden Blöcke speziell behandelt. Der Modus kann nur zum Verschlüsseln von Daten auf einem blockstrukturierten Speichergerät verwendet werden. Die geringe Breite des zugrunde liegenden PRP und die schlechte Behandlung von fraktionierten Endblöcken sind Probleme. Effizienter, aber weniger wünschenswert als eine (Wide-Block-) PRP-sichere Blockverschlüsselung.
MACs (Nachrichtenintegrität, aber keine Verschlüsselung)
ALG1–6 : Eine Sammlung von MACs, die alle auf dem CBC-MAC basieren. Zu viele Schemata. Einige sind nachweislich als VIL-PRFs sicher, andere als FIL-PRFs, und einige haben keine nachweisbare Sicherheit. Einige der Programme lassen schädliche Angriffe zu. Einige der Modi sind veraltet. Die Schlüsseltrennung wird für die Modi, in denen sie vorhanden ist, nicht ausreichend berücksichtigt. Sollte nicht massenhaft angenommen werden, aber die selektive Auswahl der „besten“ Schemata ist möglich. Es wäre auch in Ordnung, keinen dieser Modi zugunsten von CMAC zu verwenden. Einige der ISO 9797-1-MACs sind weitgehend standardisiert und werden insbesondere im Bankwesen eingesetzt. Eine überarbeitete Version der Norm (ISO / IEC FDIS 9797-1: 2010) wird in Kürze veröffentlicht [93].
CMAC : Ein MAC, der auf dem CBC-MAC basiert. Der Modus ist nachweislich sicher (bis zur Geburtstagsgrenze) als (VIL) PRF (vorausgesetzt, die zugrunde liegende Blockverschlüsselung ist ein guter PRP). Im Wesentlichen minimaler Overhead für ein CBCMAC-basiertes Schema. Inhärent serielle Natur ein Problem in einigen Anwendungsdomänen, und die Verwendung mit einer 64-Bit-Blockverschlüsselung würde gelegentliches erneutes Keying erfordern. Sauberer als die MAC-Sammlung ISO 9797-1.
HMAC : Ein MAC, der eher auf einer kryptografischen Hash-Funktion als auf einer Blockverschlüsselung basiert (obwohl die meisten kryptografischen Hash-Funktionen selbst auf Blockchiffren basieren). Der Mechanismus weist starke nachweisbare Sicherheitsgrenzen auf, wenn auch nicht aufgrund bevorzugter Annahmen. Mehrere eng verwandte Varianten in der Literatur erschweren das Verständnis des Bekannten. Es wurden nie schädliche Angriffe vorgeschlagen. Weitgehend standardisiert und verwendet.
GMAC : Ein nicht auf IC basierender MAC, der ein Sonderfall von GCM ist. Erbt viele der guten und schlechten Eigenschaften von GCM. Für einen MAC ist jedoch keine Nonce-Anforderung erforderlich, und hier bietet er wenig Nutzen. Praktische Angriffe, wenn Tags auf ≤ 64 Bit gekürzt werden und das Ausmaß der Entschlüsselung nicht überwacht und eingeschränkt wird. Vollständiger Fehler bei Nicht-Wiederverwendung. Die Verwendung ist ohnehin implizit, wenn GCM angewendet wird. Nicht für eine separate Standardisierung empfohlen.
authentifizierte Verschlüsselung (sowohl Verschlüsselung als auch Nachrichtenintegrität)
CCM : Ein nichtce-basiertes AEAD-Schema, das die CTR-Modusverschlüsselung und den rohen CBC-MAC kombiniert. Inhärent seriell, Geschwindigkeitsbegrenzung in einigen Kontexten. Voraussichtlich sicher und mit guten Grenzen, vorausgesetzt, die zugrunde liegende Blockverschlüsselung ist ein gutes PRP. Unglaubliche Konstruktion, die nachweislich den Job macht. Einfacher zu implementieren als GCM. Kann als nichtce-basierter MAC verwendet werden. Weitgehend standardisiert und verwendet.
GCM : Ein nichtce-basiertes AEAD-Schema, das CTR-Modus-Verschlüsselung und eine GF (2128) -basierte universelle Hash-Funktion kombiniert. Gute Effizienzmerkmale für einige Implementierungsumgebungen. Gute, nachweislich sichere Ergebnisse bei minimaler Tag-Kürzung. Angriffe und schlechte nachweisbare Sicherheitsgrenzen bei erheblicher Kürzung von Tags. Kann als nichtce-basierter MAC verwendet werden, der dann als GMAC bezeichnet wird. Fragwürdige Wahl, um andere Nonces als 96-Bit zuzulassen. Es wird empfohlen, Nonces auf 96 Bit und Tags auf mindestens 96 Bit zu beschränken. Weitgehend standardisiert und verwendet.