Eine formale Analyse wurde von Phil Rogaway im Jahr 2011 durchgeführt, aquí . Abschnitt 1.6 enthält eine Zusammenfassung, die ich hier wiedergebe, wobei ich meine eigene Hervorhebung in Fettdruck hinzufüge (wenn Sie ungeduldig sind, empfiehlt er die Verwendung des CTR-Modus, aber ich schlage vor, dass Sie meine Abschnitte über Nachrichtenintegrität und Verschlüsselung weiter unten lesen).
Beachten Sie, dass die meisten von ihnen verlangen, dass der IV zufällig ist, was bedeutet, dass er nicht vorhersehbar ist und daher mit kryptographischer Sicherheit erzeugt werden sollte. Einige verlangen jedoch nur einen "nonce", der diese Eigenschaft nicht erfordert, sondern nur, dass er nicht wiederverwendet wird. Daher sind Entwürfe, die sich auf eine Nonce stützen, weniger fehleranfällig als Entwürfe, die dies nicht tun (und glauben Sie mir, ich habe viele Fälle gesehen, in denen CBC nicht mit einer angemessenen IV-Auswahl implementiert wurde). Sie sehen also, dass ich fett gedruckt habe, wenn Rogaway etwas sagt wie "Vertraulichkeit wird nicht erreicht, wenn die IV eine Nonce ist", dann bedeutet das, dass es kein Problem ist, wenn Sie Ihre IV kryptographisch sicher (unvorhersehbar) wählen. Aber wenn Sie das nicht tun, dann verlieren Sie die guten Sicherheitseigenschaften. Niemals eine Infusion wiederverwenden für jeden dieser Modi.
Außerdem ist es wichtig, den Unterschied zwischen Nachrichtenintegrität und Verschlüsselung zu verstehen. Die Verschlüsselung verbirgt Daten, aber ein Angreifer kann die verschlüsselten Daten verä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 sagen wird: "Aber die geänderten Daten kommen nach der Entschlüsselung als Müll zurück", wird ein guter Sicherheitsingenieur die Wahrscheinlichkeit ermitteln, dass der Müll ein unerwünschtes Verhalten in der Software hervorruft, und dann wird er diese Analyse in einen echten Angriff umsetzen. Ich habe schon viele Fälle gesehen, in denen Verschlüsselung eingesetzt wurde, aber die Integrität der Nachricht wirklich wichtiger war als die Verschlüsselung. Verstehen Sie, was Sie brauchen.
Ich sollte sagen, dass GCM, obwohl es sowohl Verschlüsselung als auch Nachrichtenintegrität bietet, ein sehr anfälliges Design ist: Wenn Sie eine IV wiederverwenden, sind Sie aufgeschmissen - der Angreifer kann Ihren Schlüssel wiederherstellen. Andere Entwürfe sind weniger anfällig, daher habe ich persönlich Angst, GCM zu empfehlen, da ich in der Praxis viele schlechte Verschlüsselungscodes gesehen habe.
Wenn Sie beides brauchen, Nachrichtenintegrität und Verschlüsselung, können Sie zwei Algorithmen kombinieren: normalerweise sehen wir CBC mit HMAC, aber es gibt keinen Grund, sich an CBC zu binden. Wichtig zu wissen ist erst verschlüsseln, dann MAC der verschlüsselten Inhalte und nicht andersherum. Außerdem muss die IV in die MAC-Berechnung einbezogen werden.
Mir sind keine IP-Probleme bekannt.
Und nun zu den guten Sachen von Professor Rogaway:
Blockchiffre-Modi, Verschlüsselung, aber keine Nachrichtenintegrität
EZB : Als Blockchiffrierer verschlüsselt dieser Modus Nachrichten, die ein Vielfaches von n Bits sind, indem jedes n-Bit-Stück einzeln verschlüsselt wird. Die Sicherheitseigenschaften sind schwach Die Methode lässt die Gleichheit der Blöcke sowohl über die Blockpositionen als auch über die Zeit erkennen. Das Verfahren ist von beträchtlichem Wert für das Erbe und als Baustein für andere Verfahren, erreicht aber für sich genommen kein allgemein wünschenswertes Sicherheitsziel und muss mit großer Vorsicht verwendet werden; Die EZB sollte nicht als "Allzweck"-Vertraulichkeitsmodus betrachtet werden. .
CBC : Als IV-basiertes Verschlüsselungsverfahren ist der Modus sicher wie ein probabilistisches Verschlüsselungsverfahren, das unter der Annahme eines zufälligen IV keine Unterscheidbarkeit von Zufallsbits erreicht. Die Vertraulichkeit ist nicht gegeben, wenn der IV lediglich ein Nonce ist. und auch nicht, wenn es sich um eine Nonce handelt, die mit demselben Schlüssel verschlüsselt wurde, der auch im Schema verwendet wird, wie es die Norm fälschlicherweise vorschlägt. Chiffretexte sind in hohem Maße formbar. Keine Sicherheit beim Chiffriertext-Angriff (CCA). Die Vertraulichkeit geht bei vielen Auffüllmethoden verloren, wenn ein Orakel für korrektes Auffüllen vorhanden ist. Die Verschlüsselung ist ineffizient, da sie von Natur aus seriell ist. Die weit verbreiteten Sicherheitseigenschaften des Modus, der nur die Privatsphäre schützt, führen zu häufigem Missbrauch. Kann als Baustein für CBC-MAC-Algorithmen verwendet werden. Ich kann keine wesentlichen Vorteile gegenüber dem CTR-Modus erkennen.
CFB : Als IV-basiertes Verschlüsselungsverfahren ist der Modus sicher wie ein probabilistisches Verschlüsselungsverfahren, das unter der Annahme eines zufälligen IV keine Unterscheidbarkeit von Zufallsbits erreicht. Die Vertraulichkeit ist nicht gegeben, wenn die Infusion vorhersehbar ist. noch durch eine Nonce, die mit demselben Schlüssel verschlüsselt wird, der auch für das Verfahren verwendet wird, wie die Norm fälschlicherweise vorschlägt. Chiffriertexte sind formbar. Keine CCA-Sicherheit. Die Verschlüsselung ist ineffizient, da sie von Natur aus seriell ist. Das Verfahren hängt von einem Parameter s, 1 s n ab, typischerweise s = 1 oder s = 8. Ineffizient, da ein Blockchiffrieraufruf benötigt wird, um nur s Bits zu verarbeiten. Der Modus erreicht eine interessante "Selbstsynchronisierungs"-Eigenschaft; das Einfügen oder Löschen einer beliebigen Anzahl von s-Bit-Zeichen in den Chiffretext unterbricht nur vorübergehend die korrekte Entschlüsselung.
OFB : Als IV-basiertes Verschlüsselungsverfahren ist der Modus sicher wie ein probabilistisches Verschlüsselungsverfahren, das unter der Annahme eines zufälligen IV keine Unterscheidbarkeit von Zufallsbits erreicht. Die Vertraulichkeit wird nicht erreicht, wenn die IV ein Nonce ist, obwohl eine feste Folge von IVs (z.B. ein Zähler) gut funktioniert. Chiffretexte sind in hohem Maße formbar. Keine CCA-Sicherheit. Ver- und Entschlüsselung sind ineffizient, da sie von Natur aus seriell sind. Verschlüsselt nativ Zeichenketten beliebiger Bitlänge (kein Auffüllen erforderlich). Ich kann keine wichtigen Vorteile gegenüber dem CTR-Modus erkennen.
CTR : Als IV-basiertes Verschlüsselungsverfahren erreicht der Modus eine Ununterscheidbarkeit von Zufallsbits unter der Annahme eines Nonce IV. Als sicheres nonce-basiertes Verfahren kann der Modus auch als probabilistisches Verschlüsselungsverfahren mit einer zufälligen IV verwendet werden. Vollständiges Versagen der Privatsphäre, wenn ein Nonce bei der Ver- oder Entschlüsselung wiederverwendet wird. Die Parallelisierbarkeit des Verfahrens macht es oft schneller, in einigen Fällen sogar viel schneller als andere Vertraulichkeitsverfahren. Ein wichtiger Baustein für authentifizierte Verschlüsselungsverfahren. Insgesamt ist dies in der Regel der beste und modernste Weg, um eine Verschlüsselung zu erreichen, die nur der Privatsphäre dient.
XTS : Bei diesem IV-basierten Verschlüsselungsverfahren wird auf jedes n-Bit-Stück eine veränderbare Blockchiffre (sicher wie ein Strong-PRP) angewendet. Bei Nachrichten, deren Länge nicht durch n teilbar ist, werden die letzten beiden Blöcke besonders behandelt. Die einzige zulässige Verwendung dieses Modus ist die Verschlüsselung von Daten auf einem blockstrukturierten Speichergerät. Die geringe Breite des zugrundeliegenden PRP und die schlechte Behandlung von gebrochenen Endblöcken sind problematisch. Effizienter, aber weniger wünschenswert als eine (breite) PRP-sichere Blockchiffre wäre.
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 sicher als VIL-PRFs, einige als FIL-PRFs, und einige haben keine nachweisbare Sicherheit. Einige der Verfahren lassen schädliche Angriffe zu. Einige der Verfahren sind veraltet. Bei den Verfahren, die über eine Schlüsselseparation verfügen, wird diese nur unzureichend berücksichtigt. Es sollte nicht massenhaft angenommen werden, aber eine selektive Auswahl der "besten" Verfahren ist möglich. Es wäre auch in Ordnung, keinen dieser Modi zu übernehmen, sondern CMAC zu bevorzugen. Einige der ISO 9797-1 MACs sind weithin genormt und werden verwendet, insbesondere im Bankwesen. Eine überarbeitete Version der Norm (ISO/IEC FDIS 9797-1:2010) wird demnächst veröffentlicht [93].
CMAC : Ein MAC auf der Grundlage des CBC-MAC, der Modus ist nachweislich sicher (bis zur Geburtstagsgrenze) als (VIL) PRF (vorausgesetzt, die zugrundeliegende Blockchiffre ist eine gute PRP). Im Wesentlichen minimaler Overhead für ein CBCMAC-basiertes Verfahren. Die inhärent serielle Natur stellt in einigen Anwendungsbereichen ein Problem dar, und die Verwendung mit einer 64-Bit-Blockverschlüsselung würde ein gelegentliches Neuschlüsseln erforderlich machen. Sauberer als die ISO 9797-1 Sammlung von MACs.
HMAC : Ein MAC, der auf einer kryptografischen Hash-Funktion und nicht auf einer Blockchiffre basiert (obwohl die meisten kryptografischen Hash-Funktionen selbst auf Blockchiffren basieren). Der Mechanismus verfügt über starke beweisbare Sicherheitsgrenzen, wenn auch nicht unter den bevorzugten Annahmen. Mehrere eng verwandte Varianten in der Literatur erschweren das Verständnis des Bekannten. Es wurden noch keine schädlichen Angriffe vorgeschlagen. Weithin standardisiert und verwendet.
GMAC : Ein nonce-basierter MAC, der ein Spezialfall von GCM ist. Vererbt viele der guten und schlechten Eigenschaften von GCM. Aber die nonce-Anforderung ist für einen MAC unnötig und bringt hier wenig Nutzen. Praktische Angriffe, wenn die Tags auf 64 Bit gekürzt werden und der Umfang der Entschlüsselung nicht überwacht und eingeschränkt wird. Vollständiges Versagen bei der Nonce-Wiederverwendung. Die Verwendung ist ohnehin implizit, wenn GCM angenommen wird. Nicht für eine separate Normung empfohlen.
authentifizierte Verschlüsselung (sowohl Verschlüsselung als auch Nachrichtenintegrität)
CCM : Ein nonce-basiertes AEAD-Verfahren, das die Verschlüsselung im CTR-Modus mit der rohen CBC-MAC. Inhärent seriell, was die Geschwindigkeit in einigen Kontexten einschränkt. Nachweislich sicher, mit guten Grenzen, vorausgesetzt, die zugrunde liegende Blockchiffre ist eine gute PRP. Unkomplizierte Konstruktion, die die Aufgabe nachweislich erfüllt. Einfacher zu implementieren als GCM. Kann als nonce-basierter MAC verwendet werden. Weitgehend standardisiert und verwendet.
GCM : Ein nonce-basiertes AEAD-Verfahren, das die Verschlüsselung im CTR-Modus und eine universelle Hash-Funktion auf GF(2128)-Basis kombiniert. Gute Effizienzmerkmale für einige Implementierungsumgebungen. Gute beweisbar sichere Ergebnisse unter der Annahme minimaler Tag-Trunkierung. Angriffe und schlechte beweisbare Sicherheitsgrenzen bei erheblicher Tag-Trunkierung. Kann als nonce-basierter MAC verwendet werden, der dann GMAC genannt wird. Fragwürdige Entscheidung, andere Nonces als 96-Bits zuzulassen. Es wird empfohlen, Nonces auf 96 Bits und Tags auf mindestens 96 Bits zu beschränken. Weitgehend standardisiert und verwendet.