
In der Kryptographie bezeichnet man als Blockchiffre-Betriebsmodus einen Algorithmus, der eine Blockchiffre verwendet, um Informationssicherheit wie Vertraulichkeit oder Authentizität zu gewährleisten . [ 1 ] Eine Blockchiffre allein eignet sich nur für die sichere kryptographische Transformation (Verschlüsselung oder Entschlüsselung) einer Gruppe von Bits fester Länge , dem sogenannten Block . [ 2 ] Ein Betriebsmodus beschreibt, wie die Einzelblock-Operation einer Chiffre wiederholt angewendet wird, um Datenmengen, die größer als ein Block sind, sicher zu transformieren. [ 3 ] [ 4 ] [ 5 ]
Die meisten Modi benötigen für jede Verschlüsselungsoperation eine eindeutige Binärsequenz, oft Initialisierungsvektor (IV) genannt. Der IV darf sich nicht wiederholen und muss in manchen Modi auch zufällig sein. Der Initialisierungsvektor stellt sicher, dass unterschiedliche Chiffretexte entstehen, selbst wenn derselbe Klartext mehrmals unabhängig voneinander mit demselben Schlüssel verschlüsselt wird . [ 6 ] Blockchiffren können mit verschiedenen Blockgrößen arbeiten , die Blockgröße ist jedoch während der Transformation immer fest. Blockchiffren arbeiten mit ganzen Blöcken und erfordern, dass das letzte Datenfragment auf einen vollständigen Block aufgefüllt wird , falls es kleiner als die aktuelle Blockgröße ist. [ 2 ] Es gibt jedoch Modi, die keine Auffüllung benötigen, da sie eine Blockchiffre effektiv als Stromchiffre verwenden .
Historisch gesehen wurden Verschlüsselungsmodi hinsichtlich ihrer Fehlerfortpflanzungseigenschaften unter verschiedenen Szenarien der Datenmodifikation eingehend untersucht. Spätere Entwicklungen betrachteten den Integritätsschutz als ein völlig separates kryptographisches Ziel. Einige moderne Betriebsmodi kombinieren Vertraulichkeit und Authentizität auf effiziente Weise und werden als authentifizierte Verschlüsselungsmodi bezeichnet . [ 7 ]
Geschichte und Standardisierung
Die frühesten Betriebsmodi ECB, CBC, OFB und CFB (siehe unten) stammen aus dem Jahr 1981 und wurden in FIPS 81 , DES Modes of Operation , spezifiziert . Im Jahr 2001 überarbeitete das US-amerikanische National Institute of Standards and Technology (NIST) seine Liste der zugelassenen Betriebsmodi, indem es AES als Blockchiffre aufnahm und den CTR-Modus in SP800-38A , Recommendation for Block Cipher Modes of Operation , hinzufügte . Schließlich ergänzte das NIST im Januar 2010 XTS-AES in SP800-38E , Recommendation for Block Cipher Modes of Operation: The XTS-AES Mode for Confidentiality on Storage Devices . Es existieren weitere Vertraulichkeitsmodi, die nicht vom NIST zugelassen sind. CTS beispielsweise ist ein Ciphertext-Stealing- Modus und in vielen gängigen Kryptografiebibliotheken verfügbar.
Die Blockchiffrierungsmodi ECB, CBC, OFB, CFB, CTR und XTS gewährleisten Vertraulichkeit, schützen jedoch nicht vor versehentlicher Änderung oder böswilliger Manipulation. Solche Änderungen oder Manipulationen lassen sich mit einem separaten Message Authentication Code ( MAC) wie CBC-MAC oder einer digitalen Signatur erkennen . Die kryptografische Gemeinschaft erkannte den Bedarf an dedizierten Integritätsgarantien, woraufhin das NIST mit HMAC, CMAC und GMAC reagierte. HMAC wurde 2002 als FIPS 198 , „Keyed-Hash Message Authentication Code (HMAC)“ , verabschiedet , CMAC folgte 2005 mit SP800-38B , „ Recommendation for Block Cipher Modes of Operation: The CMAC Mode for Authentication“ , und GMAC wurde 2007 mit SP800-38D , „Recommendation for Block Cipher Modes of Operation: Galois/Counter Mode (GCM) and GMAC“ , formalisiert .
Die Kryptografie-Community stellte fest, dass die Kombination von Vertraulichkeits- und Authentizitätsmodus schwierig und fehleranfällig sein kann. Daher wurden Modi entwickelt, die Vertraulichkeit und Datenintegrität in einem einzigen kryptografischen Primitiv (einem Verschlüsselungsalgorithmus) vereinen. Diese kombinierten Modi werden als authentifizierte Verschlüsselung (AE) oder „authenc“ bezeichnet. Beispiele für AE-Modi sind CCM ( SP800-38C ), GCM ( SP800-38D ), CWC , EAX , IAPM und OCB .
Die Betriebsarten werden von einer Reihe national und international anerkannter Normungsorganisationen definiert. Zu den namhaften Normungsorganisationen gehören NIST , ISO (mit ISO/IEC 10116 [ 5 ] ), IEC , IEEE , ANSI und IETF .
Initialisierungsvektor (IV)
Ein Initialisierungsvektor (IV) oder eine Startvariable (SV) [ 5 ] ist ein Bitblock, der in verschiedenen Modi verwendet wird, um die Verschlüsselung zu randomisieren und somit unterschiedliche Chiffretexte zu erzeugen, selbst wenn derselbe Klartext mehrmals mit demselben Schlüssel verschlüsselt wird. [ 8 ]
Ein Initialisierungsvektor (IV) hat andere Sicherheitsanforderungen als ein Schlüssel, daher muss er in der Regel nicht geheim sein. Bei den meisten Blockchiffrierungsmodi ist es wichtig, dass ein Initialisierungsvektor niemals mit demselben Schlüssel wiederverwendet wird, d. h. er muss eine kryptografische Nonce sein . Viele Blockchiffrierungsmodi haben strengere Anforderungen, z. B. muss der IV zufällig oder pseudozufällig sein . Manche Blockchiffren haben spezifische Probleme mit bestimmten Initialisierungsvektoren, z. B. erzeugt ein IV aus lauter Nullen (für manche Schlüssel) keine Verschlüsselung.
Es wird empfohlen, die Anforderungen an den Initialisierungsvektor (IV) für den jeweiligen Blockchiffriermodus in der entsprechenden Spezifikation, beispielsweise SP800-38A , zu überprüfen .
Bei CBC und CFB führt die Wiederverwendung eines Initialisierungsvektors zu Informationsverlusten über den ersten Klartextblock und über ein gemeinsames Präfix beider Nachrichten.
Bei OFB und CTR führt die Wiederverwendung eines Initialisierungsvektors (IV) zur Wiederverwendung des Schlüsselbitstroms, was die Sicherheit beeinträchtigt. [ 9 ] Dies liegt daran, dass in beiden Modi effektiv ein Bitstrom erzeugt wird, der mit dem Klartext per XOR verknüpft wird. Dieser Bitstrom hängt ausschließlich vom Schlüssel und vom IV ab.
Im CBC-Modus muss der Initialisierungsvektor (IV) zum Zeitpunkt der Verschlüsselung unvorhersehbar (zufällig oder pseudozufällig) sein. Insbesondere die (früher) gängige Praxis, den letzten Chiffretextblock einer Nachricht als IV für die nächste Nachricht wiederzuverwenden, ist unsicher (beispielsweise wurde diese Methode von SSL 2.0 verwendet). Kennt ein Angreifer den IV (oder den vorherigen Chiffretextblock), bevor der nächste Klartext angegeben wird, kann er seine Vermutung über den Klartext eines zuvor mit demselben Schlüssel verschlüsselten Blocks überprüfen (dies ist als TLS-CBC-IV-Angriff bekannt). [ 10 ]
Bei einigen Schlüsseln kann ein Initialisierungsvektor, der nur aus Nullen besteht, in bestimmten Blockchiffrierungsmodi (CFB-8, OFB-8) dazu führen, dass der interne Zustand auf Nullen fixiert bleibt. Bei CFB-8 führt ein Initialisierungsvektor, der nur aus Nullen besteht, dazu, dass bei 1/256 der Schlüssel keine Verschlüsselung erzeugt wird; der Klartext wird als Chiffretext zurückgegeben. [ 11 ] Bei OFB-8 führt die Verwendung eines Initialisierungsvektors, der nur aus Nullen besteht, bei 1/256 der Schlüssel zu keiner Verschlüsselung. [ 12 ] Die OFB-8-Verschlüsselung gibt den Klartext für betroffene Schlüssel unverschlüsselt zurück.
Einige Modi (wie AES-SIV und AES-GCM-SIV) sind so konstruiert, dass sie resistenter gegen Nonce-Missbrauch sind, d. h. widerstandsfähiger gegenüber Szenarien, in denen die Zufallsgenerierung fehlerhaft ist oder unter der Kontrolle des Angreifers steht.
- Synthetische Initialisierungsvektoren (SIV) erzeugen einen internen Initialisierungsvektor (IV), indem sie eine Pseudozufallsfunktion (PRF) namens S2V auf die Eingabe (Zusatzdaten und Klartext) anwenden. Dadurch wird verhindert, dass externe Daten den IV direkt beeinflussen. Externe Nonces/IVs können als zusätzliches Datenfeld in S2V eingespeist werden.
- AES-GCM-SIVs synthetisieren einen internen Initialisierungsvektor, indem sie den POLYVAL-Galois-Authentifizierungsmodus auf die Eingabe (zusätzliche Daten und Klartext) anwenden, gefolgt von einer AES-Operation.
Polsterung
Ein Blockchiffre arbeitet mit Einheiten fester Größe (Blockgröße ) , Nachrichten können jedoch unterschiedliche Längen aufweisen. Daher ist es in einigen Modi (insbesondere ECB und CBC ) erforderlich, den letzten Block vor der Verschlüsselung aufzufüllen. Es gibt verschiedene Auffüllverfahren . Das einfachste besteht darin, dem Klartext Nullbytes hinzuzufügen , um seine Länge auf ein Vielfaches der Blockgröße zu bringen. Dabei muss jedoch sichergestellt sein, dass die ursprüngliche Länge des Klartexts wiederhergestellt werden kann. Dies ist beispielsweise trivial, wenn der Klartext eine C - Zeichenkette ist , die außer am Ende keine Nullbytes enthält. Etwas komplexer ist das ursprüngliche DES- Verfahren, bei dem ein einzelnes Einsbit und anschließend so viele Nullbits hinzugefügt werden , bis der Block aufgefüllt ist. Endet die Nachricht an einer Blockgrenze, wird ein vollständiger Auffüllblock hinzugefügt. Am ausgefeiltesten sind CBC-spezifische Verfahren wie das Stehlen von Chiffretext oder die Beendigung von Restblöcken, die keinen zusätzlichen Chiffretext erzeugen, jedoch die Komplexität erhöhen. Schneier und Ferguson schlagen zwei Möglichkeiten vor, die beide einfach sind: Entweder man hängt ein Byte mit dem Wert 128 (hexadezimal 80) an, gefolgt von so vielen Nullbytes, wie nötig sind, um den letzten Block zu füllen, oder man füllt den letzten Block mit n Bytes auf, die alle den Wert n haben .
Die Modi CFB, OFB und CTR benötigen keine besonderen Maßnahmen zur Verarbeitung von Nachrichten, deren Länge kein Vielfaches der Blockgröße ist, da sie durch XOR-Verknüpfung des Klartexts mit der Ausgabe des Blockchiffres funktionieren. Der letzte Teilblock des Klartexts wird mit den ersten Bytes des letzten Schlüsselstromblocks per XOR verknüpft , wodurch ein endgültiger Chiffretextblock entsteht, der die gleiche Größe wie der letzte Teilblock des Klartexts aufweist. Diese Eigenschaft von Stromchiffren macht sie geeignet für Anwendungen, bei denen die verschlüsselten Chiffretextdaten die gleiche Größe wie die ursprünglichen Klartextdaten haben müssen, sowie für Anwendungen, die Daten im Streaming-Format übertragen, wo das Hinzufügen von Füllbytes unpraktisch ist.
Gängige Modi
Authentifizierte Verschlüsselung mit zusätzlichen Daten (AEAD)-Modi
Es wurden verschiedene Betriebsmodi entwickelt, um Geheimhaltung und Authentifizierung in einem einzigen kryptografischen Verfahren zu kombinieren. Beispiele hierfür sind RIV [ 13 ] , McOE [ 14 ] , IACBC [ 15 ] , IAPM [ 15 ] , Ascon , OCB , EAX , CWC , CCM , AES-GCM-SIV und GCM . Authentifizierte Verschlüsselungsmodi werden in Single-Pass- und Double-Pass-Modi unterteilt.
Darüber hinaus ermöglichen einige Modi auch die Authentifizierung unverschlüsselter zugehöriger Daten; diese werden als AEAD- Verfahren (Authenticated Encryption with Associated Data) bezeichnet. Beispielsweise ist der EAX-Modus ein zweistufiges AEAD-Verfahren, während der OCB-Modus ein einstufiges Verfahren ist.
Galois/Zähler (GCM)
Der Galois/Counter-Modus (GCM) kombiniert den bekannten Counter-Modus der Verschlüsselung mit dem neuen Galois-Modus der Authentifizierung. Sein Hauptmerkmal ist die einfache Parallelisierung der Galois-Feldmultiplikation, die für die Authentifizierung verwendet wird. Dadurch wird ein höherer Durchsatz als bei Verschlüsselungsalgorithmen ermöglicht.
GCM ist für Blockchiffren mit einer Blockgröße von 128 Bit definiert. Der Galois Message Authentication Code (GMAC) ist eine Variante von GCM, die ausschließlich der Authentifizierung dient und einen inkrementellen Message Authentication Code erzeugen kann. Sowohl GCM als auch GMAC akzeptieren Initialisierungsvektoren beliebiger Länge. GCM kann die Vorteile der Parallelverarbeitung voll ausschöpfen, und seine Implementierung ermöglicht eine effiziente Nutzung von Befehls- oder Hardware-Pipelines. Der CBC-Betriebsmodus führt zu Pipeline-Verzögerungen , die seine Effizienz und Leistung beeinträchtigen.
Wie bei CTR werden die Blöcke fortlaufend nummeriert. Diese Blocknummer wird dann mit einem Initialisierungsvektor (IV) kombiniert und mit einem Blockchiffre E , üblicherweise AES, verschlüsselt. Das Ergebnis dieser Verschlüsselung wird anschließend mit dem Klartext per XOR verknüpft, um den Chiffretext zu erzeugen. Wie alle Zählermodi handelt es sich im Wesentlichen um eine Stromchiffre. Daher ist es unerlässlich, für jeden zu verschlüsselnden Datenstrom einen anderen IV zu verwenden.
Die Chiffretextblöcke werden als Koeffizienten eines Polynoms betrachtet , das anschließend an einem schlüsselabhängigen Punkt H mithilfe der Arithmetik endlicher Körper ausgewertet wird . Das Ergebnis wird dann verschlüsselt, wodurch ein Authentifizierungs-Tag erzeugt wird , mit dem die Integrität der Daten überprüft werden kann. Der verschlüsselte Text enthält dann den Initialisierungsvektor (IV), den Chiffretext und das Authentifizierungs-Tag.
Zähler mit Cipher Block Chaining Message Authentication Code (CCM)
Der Counter with Cipher Block Chaining Message Authentication Code (Counter with CBC-MAC; CCM) ist ein authentifizierter Verschlüsselungsalgorithmus , der sowohl Authentifizierung als auch Vertraulichkeit gewährleistet. Der CCM-Modus ist nur für Blockchiffren mit einer Blocklänge von 128 Bit definiert. [ 16 ] [ 17 ]
Synthetischer Initialisierungsvektor (SIV)
Der synthetische Initialisierungsvektor (SIV) ist ein gegen Nonce-Missbrauch resistenter Blockchiffriermodus.
SIV synthetisiert einen internen Initialisierungsvektor (IV) mithilfe der Pseudozufallsfunktion S2V. S2V ist ein auf CMAC basierender Hash-Algorithmus mit Schlüssel, und die Eingabe für die Funktion ist:
- Zusätzliche authentifizierte Daten (null, ein oder mehrere AAD-Felder werden unterstützt)
- Klartext
- Authentifizierungsschlüssel (K 1 ).
SIV verschlüsselt den S2V-Ausgang und den Klartext mit AES-CTR, wobei der Verschlüsselungsschlüssel (K 2 ) verwendet wird.
SIV unterstützt externe, nonce-basierte Authentifizierungsverschlüsselung. In diesem Fall wird eines der authentifizierten Datenfelder zu diesem Zweck verwendet. RFC 5297 [ 18 ] legt fest, dass aus Gründen der Interoperabilität das letzte authentifizierte Datenfeld die externe Nonce enthalten soll.
Aufgrund der Verwendung zweier Schlüssel, des Authentifizierungsschlüssels K 1 und des Verschlüsselungsschlüssels K 2 , können die Namensschemata für SIV AEAD-Varianten zu Verwirrung führen; beispielsweise bezieht sich AEAD_AES_SIV_CMAC_256 auf AES-SIV mit zwei AES-128-Schlüsseln und nicht auf AES-256.
AES-GCM-SIV
AES-GCM-SIV ist ein Betriebsmodus des Advanced Encryption Standard, der eine ähnliche Leistung wie der Galois-/Zählermodus bietet und gleichzeitig Missbrauchsresistenz bei der Wiederverwendung einer kryptografischen Nonce gewährleistet. Die Konstruktion ist in RFC 8452 definiert. [ 19 ]
AES-GCM-SIV synthetisiert den internen Initialisierungsvektor (IV). Es berechnet einen Hashwert der zusätzlichen authentifizierten Daten und des Klartexts mithilfe der Galois-Hashfunktion POLYVAL. Dieser Hashwert wird anschließend mit einem AES-Schlüssel verschlüsselt und als Authentifizierungs-Tag sowie als Initialisierungsvektor für den AES-CTR verwendet.
AES-GCM-SIV ist eine Verbesserung gegenüber dem sehr ähnlich benannten Algorithmus GCM-SIV , mit einigen sehr kleinen Änderungen (z. B. wie AES-CTR initialisiert wird), die jedoch praktische Vorteile für die Sicherheit mit sich bringen. „Diese Erweiterung ermöglicht die Verschlüsselung von bis zu 2 <sup>50</sup> Nachrichten mit demselben Schlüssel, verglichen mit der erheblichen Beschränkung von nur 2 <sup>32 </sup> Nachrichten, die mit GCM-SIV erlaubt waren.“ [ 20 ]
Vertraulichkeitsmodi
Es wurden zahlreiche Betriebsmodi definiert. Einige davon werden im Folgenden beschrieben. Zweck der Verschlüsselungsmodi ist es, in verschlüsselten Daten vorhandene Muster zu maskieren, wie in der Beschreibung der Schwäche von ECB veranschaulicht .
Unterschiedliche Verschlüsselungsmodi maskieren Muster, indem sie Ausgaben des Verschlüsselungsblocks oder andere global deterministische Variablen in den nachfolgenden Verschlüsselungsblock kaskadieren. Die Eingaben der aufgeführten Modi sind in der folgenden Tabelle zusammengefasst:
| Modus | Verschlüsselung | Entschlüsselung | Anmerkungen | |
|---|---|---|---|---|
| Elektronisches Codebuch | (EZB) | Keine Infusion erforderlich | ||
| Verkettung von Chiffrenblöcken | (CBC) | C 0 = IV | ||
| Verschlüsselungsrückmeldung | (CFB) | C 0 = IV | ||
| Ausgangsrückmeldung | (OFB) | S 0 = IV | ||
| Schalter | (CTR) | R = IV | ||
Elektronisches Codebuch (EZB)
| EZB | |
|---|---|
| Elektronisches Codebuch | |
| Parallelisierbare Verschlüsselung | Ja |
| Entschlüsselung parallelisierbar | Ja |
| Zufälliger Lesezugriff | Ja |
| Teilweise letzter Block | NEIN |
Der einfachste Verschlüsselungsmodus ist der elektronische Codebuchmodus (ECB-Modus, benannt nach den herkömmlichen physischen Codebüchern [ 21 ] ). Die Nachricht wird in Blöcke unterteilt, und jeder Block wird separat verschlüsselt. ECB wird für kryptografische Protokolle nicht empfohlen: Der Nachteil dieser Methode ist die mangelnde Diffusion , d. h. sie kann Datenmuster nicht verbergen, wenn identische Klartextblöcke in identische Chiffretextblöcke verschlüsselt werden . [ 22 ] [ 23 ] [ 24 ]
Ein eindrucksvolles Beispiel dafür, wie stark ECB Klartextdatenmuster im Chiffretext hinterlassen kann, zeigt sich bei der Verschlüsselung eines Bitmap-Bildes mit großen, einfarbigen Flächen im ECB-Modus. Obwohl die Farbe jedes einzelnen Pixels vermeintlich verschlüsselt wurde, ist das Gesamtbild weiterhin erkennbar, da das Muster gleichfarbiger Pixel aus dem Original auch in der verschlüsselten Version sichtbar bleibt.
Der ECB-Modus kann außerdem Protokolle ohne Integritätsschutz noch anfälliger für Replay-Angriffe machen , da jeder Block auf genau dieselbe Weise entschlüsselt wird.
Cipher Block Chaining (CBC)
| CBC | |
|---|---|
| Verkettung von Chiffrenblöcken | |
| Parallelisierbare Verschlüsselung | NEIN |
| Entschlüsselung parallelisierbar | Ja |
| Zufälliger Lesezugriff | Ja |
| Teilweise letzter Block | NEIN |
Ehrsam, Meyer, Smith und Tuchman entwickelten 1976 das Cipher Block Chaining (CBC)-Verfahren. Im CBC-Verfahren wird jeder Klartextblock vor der Verschlüsselung mit dem vorherigen Chiffretextblock per XOR-Verknüpfung verknüpft. Dadurch hängt jeder Chiffretextblock von allen bis dahin verarbeiteten Klartextblöcken ab. Um jede Nachricht eindeutig zu machen, muss im ersten Block ein Initialisierungsvektor verwendet werden.
Wenn der erste Block den Index 1 hat, lautet die mathematische Formel für die CBC-Verschlüsselung:
Die mathematische Formel für die CBC-Entschlüsselung lautet:
Beispiel
CBC ist die am häufigsten verwendete Betriebsart. Ihre Hauptnachteile sind die sequentielle Verschlüsselung (d. h. sie kann nicht parallelisiert werden) und die Notwendigkeit, die Nachricht auf ein Vielfaches der Chiffrierblockgröße aufzufüllen. Eine Möglichkeit, dieses letzte Problem zu beheben, ist das sogenannte Ciphertext-Stealing. Beachten Sie, dass eine Änderung eines einzelnen Bits im Klartext oder Initialisierungsvektor (IV) alle nachfolgenden Chiffriertextblöcke beeinflusst.
Die Entschlüsselung mit einem falschen Initialisierungsvektor (IV) führt dazu, dass der erste Klartextblock beschädigt wird, die nachfolgenden Blöcke jedoch korrekt sind. Dies liegt daran, dass jeder Block mit dem Chiffretext des vorherigen Blocks und nicht mit dem Klartext per XOR verknüpft wird. Daher muss der vorherige Block nicht entschlüsselt werden, bevor er als IV für die Entschlüsselung des aktuellen Blocks verwendet wird. Dadurch lässt sich ein Klartextblock aus zwei benachbarten Chiffretextblöcken rekonstruieren. Folglich kann die Entschlüsselung parallelisiert werden. Eine Änderung eines einzelnen Bits im Chiffretext führt zur vollständigen Beschädigung des entsprechenden Klartextblocks und zur Invertierung des entsprechenden Bits im folgenden Klartextblock. Die übrigen Blöcke bleiben jedoch intakt. Diese Besonderheit wird bei verschiedenen Padding-Oracle-Angriffen, wie beispielsweise POODLE, ausgenutzt.
Explizite Initialisierungsvektoren nutzen diese Eigenschaft, indem sie dem Klartext einen einzelnen Zufallsblock voranstellen. Die Verschlüsselung erfolgt wie gewohnt, nur dass der Initialisierungsvektor (IV) nicht an die Entschlüsselungsroutine übermittelt werden muss. Unabhängig vom verwendeten IV wird lediglich der Zufallsblock „verändert“. Er kann gefahrlos verworfen werden, und der Rest der Entschlüsselung entspricht dem ursprünglichen Klartext.
Propagating Cipher Block Chaining (PCBC)
| PCBC | |
|---|---|
| Ausbreitung der Chiffrierblockverkettung | |
| Parallelisierbare Verschlüsselung | NEIN |
| Entschlüsselung parallelisierbar | NEIN |
| Zufälliger Lesezugriff | NEIN |
| Teilweise letzter Block | NEIN |
Der propagierende Cipher Block Chaining (PCBC) -Modus [ 25 ] bzw. der Klartext-Cipher-Block Chaining- Modus (PCBC) [ 26 ] wurde entwickelt, um kleine Änderungen im Chiffretext sowohl beim Entschlüsseln als auch beim Verschlüsseln unbegrenzt fortzupflanzen. Im PCBC-Modus wird jeder Klartextblock vor der Verschlüsselung per XOR-Verknüpfung mit dem vorherigen Klartextblock und dem vorherigen Chiffretextblock verknüpft. Wie im CBC-Modus wird im ersten Block ein Initialisierungsvektor (IV) verwendet. Im Gegensatz zu CBC führt die Entschlüsselung von PCBC mit einem falschen IV dazu, dass alle Klartextblöcke beschädigt werden.
Die Verschlüsselungs- und Entschlüsselungsalgorithmen lauten wie folgt:
PCBC wird vor allem in Kerberos v4 und WASTE verwendet , ist ansonsten aber nicht üblich.
Bei einer im PCBC-Modus verschlüsselten Nachricht hat der Austausch zweier benachbarter Chiffretextblöcke keinen Einfluss auf die Entschlüsselung nachfolgender Blöcke. [ 27 ] Aus diesem Grund wird PCBC in Kerberos v5 nicht verwendet.
Cipher Feedback (CFB)
Full-Block CFB
| CFB | |
|---|---|
| Verschlüsselungsrückmeldung | |
| Parallelisierbare Verschlüsselung | NEIN |
| Entschlüsselung parallelisierbar | Ja |
| Zufälliger Lesezugriff | Ja |
| Teilweise letzter Block | Ja |
Der Cipher-Feedback- Modus (CFB) nutzt in seiner einfachsten Form die gesamte Ausgabe des Blockchiffres. In dieser Variante ähnelt er stark dem CBC-Modus und wandelt einen Blockchiffre in einen selbstsynchronisierenden Stromchiffre um . Die CFB-Entschlüsselung ist in dieser Variante nahezu identisch mit der umgekehrten CBC-Verschlüsselung.
CFB-1, CFB-8, CFB-64, CFB-128 usw.
NIST SP800-38A definiert CFB mit einer Bitbreite. [ 28 ] Der CFB-Modus erfordert außerdem einen ganzzahligen Parameter s, wobei 1 ≤ s ≤ b gilt. In der unten stehenden Spezifikation des CFB-Modus besteht jedes Klartextsegment (Pj) und Chiffretextsegment (Cj) aus s Bits. Der Wert von s wird mitunter in den Namen des Modus aufgenommen, z. B. 1-Bit-CFB-Modus, 8-Bit-CFB-Modus, 64-Bit-CFB-Modus oder 128-Bit-CFB-Modus.
Diese Modi kürzen die Ausgabe des zugrunde liegenden Blockchiffres.
CFB-1 gilt als selbstsynchronisierend und robust gegenüber Chiffretextverlusten. „Im 1-Bit-CFB-Modus wird die Synchronisierung automatisch b+1 Positionen nach dem eingefügten oder gelöschten Bit wiederhergestellt. Für andere Werte von s im CFB-Modus sowie für die anderen in dieser Empfehlung beschriebenen Vertraulichkeitsmodi muss die Synchronisierung extern wiederhergestellt werden.“ (NIST SP800-38A). Das heißt, der Verlust eines Bits in einem 128 Bit breiten Blockchiffre wie AES führt dazu, dass 129 Bit ungültig werden, bevor gültige Bits ausgegeben werden.
CFB kann sich in bestimmten, nicht spezifizierten Sonderfällen auch selbst synchronisieren. Beispielsweise führt eine Änderung eines einzelnen Bits in CFB-128 mit einem zugrunde liegenden 128-Bit-Blockchiffre nach zwei Blöcken zur Resynchronisierung. (Allerdings kann CFB-128 usw. Bitverluste nicht fehlerfrei kompensieren; ein einzelner Bitverlust führt dazu, dass der Entschlüsseler die Ausrichtung zum Verschlüsseler verliert.)
CFB im Vergleich zu anderen Betriebsarten
Wie im CBC-Modus wirken sich Änderungen im Klartext unbegrenzt auf den Chiffretext aus, und die Verschlüsselung kann nicht parallelisiert werden. Die Entschlüsselung hingegen kann parallelisiert werden.
CFB, OFB und CTR haben gegenüber dem CBC-Modus zwei Vorteile: Der Blockchiffre wird nur in Verschlüsselungsrichtung verwendet, und die Nachricht muss nicht auf ein Vielfaches der Chiffrierblockgröße aufgefüllt werden (obwohl auch im CBC-Modus Ciphertext Stealing verwendet werden kann, um das Auffüllen überflüssig zu machen).
Ausgangsrückkopplung (OFB)
| OFB | |
|---|---|
| Ausgangsrückmeldung | |
| Parallelisierbare Verschlüsselung | NEIN |
| Entschlüsselung parallelisierbar | NEIN |
| Zufälliger Lesezugriff | NEIN |
| Teilweise letzter Block | Ja |
Der Output-Feedback- Modus (OFB) wandelt eine Blockchiffre in eine synchrone Stromchiffre um . Dabei werden Schlüsselstromblöcke generiert , die anschließend mit den Klartextblöcken per XOR verknüpft werden , um den Chiffretext zu erhalten. Wie bei anderen Stromchiffren führt das Invertieren eines Bits im Chiffretext zu einem invertierten Bit im Klartext an derselben Stelle. Diese Eigenschaft ermöglicht es vielen Fehlerkorrekturcodes, auch dann normal zu funktionieren, wenn sie vor der Verschlüsselung angewendet werden.
Aufgrund der Symmetrie der XOR-Operation sind Verschlüsselung und Entschlüsselung exakt gleich:
Jeder Blockchiffriervorgang mit Ausgangsrückkopplung ist von allen vorherigen abhängig und kann daher nicht parallel ausgeführt werden. Da der Klartext bzw. Chiffretext jedoch nur für die abschließende XOR-Verknüpfung verwendet wird, können die Blockchiffriervorgänge im Voraus durchgeführt werden, sodass der letzte Schritt parallel ausgeführt werden kann, sobald der Klartext bzw. Chiffretext verfügbar ist.
Es ist möglich, einen OFB-Modus-Schlüsselstrom zu erzeugen, indem man den CBC-Modus mit einer konstanten Folge von Nullen als Eingabe verwendet. Dies kann nützlich sein, da es die Nutzung schneller Hardware-Implementierungen des CBC-Modus für die OFB-Modus-Verschlüsselung ermöglicht.
Die Verwendung des OFB-Modus mit einer Teilblockierung als Rückkopplung, ähnlich dem CFB-Modus, reduziert die durchschnittliche Zykluslänge um den Faktor 2<sup> 32</sup> oder mehr. Ein von Davies und Parkin vorgeschlagenes und durch experimentelle Ergebnisse bestätigtes mathematisches Modell zeigte, dass nur mit vollständiger Rückkopplung eine durchschnittliche Zykluslänge nahe dem maximal erreichbaren Wert erzielt werden kann. Aus diesem Grund wurde die Unterstützung für abgeschnittene Rückkopplung aus der OFB-Spezifikation entfernt. [ 29 ]
Zähler (CTR)
| CTR | |
|---|---|
| Schalter | |
| Parallelisierbare Verschlüsselung | Ja |
| Entschlüsselung parallelisierbar | Ja |
| Zufälliger Lesezugriff | Ja |
| Teilweise letzter Block | Ja |
- Hinweis: Der CTR-Modus (CM) wird auch als Integer-Counter-Modus (ICM) und Segmented-Integer-Counter- Modus (SIC) bezeichnet.
Wie OFB wandelt auch der Zählermodus (CTR) eine Blockchiffre in eine Stromchiffre um . Er generiert den nächsten Schlüsselstromblock durch Verschlüsselung aufeinanderfolgender Werte eines „Zählers“. Der Zähler kann jede beliebige Funktion sein, die eine Sequenz erzeugt, die sich garantiert über einen langen Zeitraum nicht wiederholt. Ein Zähler, der um eins inkrementiert, ist jedoch die einfachste und gebräuchlichste Lösung. Die Verwendung einer einfachen deterministischen Eingabefunktion war früher umstritten; Kritiker argumentierten, dass „das bewusste Aussetzen eines Kryptosystems einer bekannten systematischen Eingabe ein unnötiges Risiko darstellt“ [ 30 ] . Heute ist der CTR-Modus jedoch weithin akzeptiert, und etwaige Probleme werden als Schwäche der zugrunde liegenden Blockchiffre betrachtet, die unabhängig von systematischen Verzerrungen in ihrer Eingabe als sicher gelten soll [ 31 ] . Zusammen mit CBC ist der CTR-Modus einer der beiden von Niels Ferguson und Bruce Schneier empfohlenen Blockchiffrierungsmodi [ 32 ] .
Der CTR-Modus wurde 1979 von Whitfield Diffie und Martin Hellman eingeführt. [ 31 ]
Der CTR-Modus weist ähnliche Eigenschaften wie OFB auf, ermöglicht aber zusätzlich den wahlfreien Zugriff während der Entschlüsselung. Der CTR-Modus eignet sich gut für den Betrieb auf Mehrprozessorsystemen, da Blöcke dort parallel verschlüsselt werden können. Außerdem ist er nicht von dem Kurzzyklusproblem betroffen, das bei OFB auftreten kann. [ 33 ]
Sind Initialisierungsvektor (IV) und Nonce zufällig, können sie mit dem Zähler mittels beliebiger invertierbarer Operationen (Verkettung, Addition oder XOR) kombiniert werden, um den eindeutigen Zählerblock für die Verschlüsselung zu erzeugen. Bei einem nicht zufälligen Nonce (z. B. einem Paketzähler) müssen Nonce und Zähler verkettet werden (z. B. durch Speichern des Nonce in den oberen 64 Bit und des Zählers in den unteren 64 Bit eines 128-Bit-Zählerblocks). Die einfache Addition oder XOR-Verknüpfung von Nonce und Zähler zu einem einzigen Wert würde in vielen Fällen die Sicherheit bei einem Angriff mit gewähltem Klartext gefährden , da der Angreifer das gesamte IV-Zähler-Paar manipulieren und eine Kollision verursachen könnte. Sobald ein Angreifer das IV-Zähler-Paar und den Klartext kontrolliert, würde die XOR-Verknüpfung des Chiffretexts mit dem bekannten Klartext einen Wert ergeben, der, kombiniert mit dem Chiffretext des anderen Blocks mit demselben IV-Zähler-Paar, diesen Block entschlüsseln würde. [ 34 ]
Beachten Sie, dass die Nonce in diesem Diagramm dem Initialisierungsvektor (IV) in den anderen Diagrammen entspricht . Sind die Offset-/Positionsinformationen jedoch beschädigt, ist eine teilweise Wiederherstellung dieser Daten aufgrund der Abhängigkeit vom Byte-Offset nicht möglich.
Fehlerfortpflanzung
Die Eigenschaften der „Fehlerfortpflanzung“ beschreiben, wie sich eine Entschlüsselung bei Bitfehlern verhält, d. h. wie sich ein Fehler in einem Bit auf andere entschlüsselte Bits auswirkt.
Bitfehler können absichtlich bei Angriffen oder zufällig aufgrund von Übertragungsfehlern auftreten.
- Zufällige Bitfehler treten unabhängig voneinander an jeder Bitposition mit einer erwarteten Wahrscheinlichkeit von ½ auf.
- Spezifische Bitfehler treten an der/den gleichen Bitposition(en) wie der/die ursprüngliche(n) Bitfehler auf.
- Spezifische Bitfehler in Stromchiffriermodi (OFB, CTR usw.) sind trivial. Sie betreffen nur das jeweils beabsichtigte Bit.
- Spezifische Bitfehler in komplexeren Modi (z. B. CBC): Ein adaptiver Angriff mit gewähltem Chiffretext kann viele verschiedene spezifische Bitfehler intelligent kombinieren, um den Chiffriermodus zu brechen. Bei einem Padding-Oracle-Angriff kann CBC durch Erraten der Verschlüsselungsschlüssel anhand der Fehlerantworten entschlüsselt werden. Die Padding-Oracle-Angriffsvariante „CBC-R“ (CBC Reverse) ermöglicht es dem Angreifer, jede gültige Nachricht zu erstellen.
Bei modernen authentifizierten Verschlüsselungsverfahren (AEAD) oder Protokollen mit in MAC-Then-Encrypt-Reihenfolge verketteten Message Authentication Codes (MACs ) muss jeder Bitfehler die Entschlüsselung vollständig abbrechen und darf keine spezifischen Bitfehler beim Entschlüsseler erzeugen. Das heißt, wenn die Entschlüsselung erfolgreich war, darf kein Bitfehler auftreten. Daher ist die Fehlerfortpflanzung in modernen Verschlüsselungsmodi weniger wichtig als in traditionellen, rein vertraulichen Modi.
| Modus | Auswirkung von Bitfehlern in C i | Auswirkung von Bitfehlern im IV oder Nonce |
|---|---|---|
| EZB | Zufällige Bitfehler in P i | N / A |
| CBC | Zufällige Bitfehler in P i Spezifische Bitfehler in P i+1 | Spezifische Bitfehler in P 1 |
| CFB | Spezifische Bitfehler in P i Zufällige Bitfehler in P i+1 , ..., bis die Synchronisierung wiederhergestellt ist | Zufällige Bitfehler in P 1 , ..., bis die Synchronisierung wiederhergestellt ist |
| OFB | Spezifische Bitfehler in P i | Zufällige Bitfehler in P 1 , P 2 , ..., P n |
| CTR | Spezifische Bitfehler in P i | Zufällige Bitfehler in P i für Bitfehler im Zählerblock T i |
(Quelle: SP800-38A Tabelle D.2: Zusammenfassung der Auswirkungen von Bitfehlern auf die Entschlüsselung)
Man könnte beispielsweise beobachten, dass ein Fehler von einem Block im übertragenen Chiffretext bei der ECB-Verschlüsselung zu einem Fehler von einem Block im rekonstruierten Klartext führt, während bei der CBC-Verschlüsselung ein solcher Fehler zwei Blöcke betrifft. Manche hielten diese Robustheit gegenüber zufälligen Fehlern (z. B. Leitungsrauschen) für wünschenswert, während andere argumentierten, dass die Fehlerkorrektur Angreifern mehr Möglichkeiten zur böswilligen Manipulation einer Nachricht biete.
Wird jedoch ein geeigneter Integritätsschutz verwendet, führt ein solcher Fehler mit hoher Wahrscheinlichkeit zur Ablehnung der gesamten Nachricht. Soll eine Resistenz gegen zufällige Fehler erreicht werden, müssen Fehlerkorrekturcodes vor der Übertragung auf den Chiffretext angewendet werden.
Andere Modi und andere kryptographische Primitive
Es wurden zahlreiche weitere Betriebsarten für Blockchiffren vorgeschlagen. Einige davon sind akzeptiert, vollständig beschrieben (und sogar standardisiert) und werden eingesetzt. Andere gelten als unsicher und sollten niemals verwendet werden. Wieder andere fallen nicht unter die Kategorien Vertraulichkeit, Authentizität oder authentifizierte Verschlüsselung – beispielsweise der Key-Feedback-Modus und das Davies-Meyer- Hashing.
Das NIST führt unter Modes Development eine Liste vorgeschlagener Modi für Blockchiffren . [ 28 ] [ 35 ]
Die Festplattenverschlüsselung verwendet häufig spezielle Modi, die speziell für die jeweilige Anwendung entwickelt wurden. Anpassbare Verschlüsselungsmodi für schmale Blöcke ( LRW , XEX und XTS ) und Verschlüsselungsmodi für breite Blöcke ( CMC und EME ) dienen der sicheren Verschlüsselung von Sektoren einer Festplatte (siehe Theorie der Festplattenverschlüsselung ).
Viele Verschlüsselungsmodi verwenden einen Initialisierungsvektor (IV), der je nach Modus bestimmte Anforderungen erfüllen muss, z. B. dass er nur einmal verwendet werden darf (Nonce) oder vor seiner Veröffentlichung unvorhersehbar sein muss. Die Wiederverwendung eines IV mit demselben Schlüssel im CTR-, GCM- oder OFB-Modus führt dazu, dass derselbe Schlüsselstrom mit zwei oder mehr Klartexten per XOR verknüpft wird – ein klarer Missbrauch des Datenstroms mit einem katastrophalen Sicherheitsverlust. Deterministische, authentifizierte Verschlüsselungsmodi wie der NIST Key Wrap- Algorithmus und der SIV-AEAD-Modus (RFC 5297) benötigen keinen IV als Eingabe und liefern für einen gegebenen Klartext und Schlüssel stets denselben Chiffretext und dasselbe Authentifizierungs-Tag. Andere IV-missbrauchsresistente Modi wie AES-GCM-SIV profitieren von einem IV als Eingabe, beispielsweise hinsichtlich der maximalen Datenmenge, die mit einem Schlüssel sicher verschlüsselt werden kann, ohne dass es bei mehrfacher Verwendung desselben IV zu einem katastrophalen Fehler kommt.
Blockchiffren können auch in anderen kryptografischen Protokollen verwendet werden . Sie kommen im Allgemeinen in Betriebsmodi zum Einsatz, die den hier beschriebenen Blockmodi ähneln. Wie bei allen Protokollen muss auch hier für die kryptografische Sicherheit auf eine korrekte Auslegung dieser Betriebsmodi geachtet werden.
Es gibt verschiedene Verfahren, die einen Blockchiffre verwenden, um eine kryptografische Hashfunktion zu erstellen . Beschreibungen mehrerer solcher Methoden finden Sie unter Einwegkompressionsfunktion .
Kryptografisch sichere Pseudozufallszahlengeneratoren (CSPRNGs) können auch mithilfe von Blockchiffren erstellt werden.
Message Authentication Codes (MACs) werden häufig aus Blockchiffren erstellt. CBC-MAC , OMAC und PMAC sind Beispiele dafür.
Siehe auch
- Festplattenverschlüsselung
- Nachrichtenauthentifizierungscode
- Authentifizierte Verschlüsselung
- Einweg-Kompressionsfunktion
Referenzen
- ^ NIST Computer Security Division (CSD), Security Technology Group (STG) (2013). „Block cipher modes“ . Cryptographic Toolkit . NIST. Archiviert vom Original am 6. November 2012. Abgerufen am 12. April 2013 .
- ^ a b Ferguson, N.; Schneier, B.; Kohno, T. (2010). Cryptography Engineering: Design Principles and Practical Applications . Indianapolis: Wiley Publishing, Inc. S. 63, 64. ISBN 978-0-470-47424-2Die
- ^ NIST Computer Security Division (CSD), Security Technology Group (STG) (2013). „Vorgeschlagene Modi“ . Cryptographic Toolkit . NIST. Archiviert vom Original am 2. April 2013. Abgerufen am 14. April 2013 .
- ^ Alfred J. Menezes; Paul C. van Oorschot; Scott A. Vanstone (1996). Handbook of Applied Cryptography . CRC Press. S. 228–233 . ISBN 0-8493-8523-7Die
- ^ a b c „ISO/IEC 10116:2006 – Informationstechnik – Sicherheitstechniken – Betriebsarten für einen n- Bit-Blockchiffre“ . ISO-Normenkatalog . 2006. Archiviert vom Original am 17.03.2012.
- ^ Conrad, Eric; Misenar, Seth; Feldman, Joshua (01.01.2017), „Kapitel 3 – Bereich 3: Sicherheitsengineering“ , in: Conrad, Eric; Misenar, Seth; Feldman, Joshua (Hrsg.), Eleventh Hour CISSP® (Dritte Auflage) , Syngress, S. 47–93 , doi : 10.1016/b978-0-12-811248-9.00003-6 , ISBN 978-0-12-811248-9abgerufen am 01.11.2020
- ^ NIST Computer Security Division (CSD), Security Technology Group (STG) (2013). „Aktuelle Modi“ . Cryptographic Toolkit . NIST. Archiviert vom Original am 2. April 2013. Abgerufen am 12. April 2013 .
- ^ Bellare, Mihir; Rogaway, Phillip (Mai 2005). "Einführung in die moderne Kryptographie" (PDF) .
- ^ „Stream Cipher Reuse: A Graphic Example“ . Cryptosmith LLC. 31. Mai 2008. Archiviert vom Original am 25. Januar 2015. Abgerufen am 7. Januar 2015 .
- ^ B. Moeller (20. Mai 2004), Sicherheit von CBC-Verschlüsselungssuiten in SSL/TLS: Probleme und Gegenmaßnahmen , archiviert vom Original am 30. Juni 2012
- ^ Tervoort, Tom. „Zerologon: Unauthentifizierte Domänencontroller-Kompromittierung durch Unterwanderung der Netlogon-Kryptographie (CVE-2020-1472)“ . Secura . Abgerufen am 14. Oktober 2020 .
- ^ Blaufish (14. Oktober 2020). „Netlogon CFB8 wird als schädlich angesehen. OFB8 auch . “ GitHub . Abgerufen am 14. Oktober 2020 .
- ^ Abed, Farzaneh; Forler, Christian; List, Eik; Lucks, Stefan; Wenzel, Jakob (2016). „RIV für robuste authentifizierte Verschlüsselung“. In: Thomas Peyrin (Hrsg.). Schnelle Softwareverschlüsselung – 23. Internationale Konferenz (FSE 2016), Bochum, Deutschland, 20.–23. März 2016, Ausgewählte überarbeitete Beiträge . Lecture Notes in Computer Science. Band 9783. Springer. S. 23–42 . doi : 10.1007/978-3-662-52993-5_2 .
- Fleischmann , Ewan; Forler, Christian; Lucks, Stefan (2012). „McOE: Eine Familie nahezu narrensicherer, online-authentifizierter Verschlüsselungsverfahren“ . In: Anne Canteaut (Hrsg.). Fast Software Encryption – 19. Internationaler Workshop, FSE 2012, Washington, DC, USA, 19.–21. März 2012. Ausgewählte überarbeitete Beiträge . Lecture Notes in Computer Science. Band 7549. Springer. S. 196–215 . doi : 10.1007/978-3-642-34047-5_12 .
- ^ a b Jutla, Charanjit S. (Mai 2001). Verschlüsselungsmodi mit nahezu kostenloser Nachrichtenintegrität (PDF) . Eurocrypt 2001. Lecture Notes in Computer Science. Band 2045. Springer. doi : 10.1007/3-540-44987-6_32 .
- ^ Dworkin, Morris (Mai 2004). Empfehlung für Betriebsmodi von Blockchiffren: Der CCM-Modus für Authentifizierung und Vertraulichkeit (PDF) (Technischer Bericht). NIST Special Publications. NIST . doi : 10.6028/NIST.SP.800-38C . 800-38C.
- ^ Whiting, D.; Housley, R.; Ferguson, N. (September 2003). Counter with CBC-MAC (CCM) . IETF . doi : 10.17487/RFC3610 . RFC 3610 .
- ^ Harkins, Dan (Oktober 2008). „Synthetic Initialization Vector (SIV) Authenticated Encryption Using the Advanced Encryption Standard (AES)“ . Abgerufen am 21. Oktober 2020 .
- ^ Gueron, S. (April 2019). AES-GCM-SIV: Nonce Misuse-Resistant Authenticated Encryption . IETF . doi : 10.17487/RFC8452 . RFC 8452. Abgerufen am 14. August 2019 .
- ^ Gueron, Shay; Langley, Adam; Lindell, Yehuda (14. Dez. 2018). „AES-GCM-SIV: Spezifikation und Analyse“ . Cryptology ePrint Archive . Bericht (2017/168) . Abgerufen am 19. Oktober 2020 .
- ^ „Empfehlung für Betriebsmodi von Blockchiffren“ (PDF) . NIST.gov . NIST. S. 9. Archiviert (PDF) vom Original am 29. März 2017. Abgerufen am 1. April 2017 .
- ^ Menezes, Alfred J.; van Oorschot, Paul C.; Vanstone, Scott A. (2018). Handbook of Applied Cryptography . CRC Press. S. 228. ISBN 9780429881329Die
- ^ Dam, Kenneth W.; Lin, Herbert S. (1996). Die Rolle der Kryptographie bei der Sicherung der Informationsgesellschaft . National Academies Press. S. 132. ISBN 9780309054751Die
- ^ Schneier, Bruce (2015). Angewandte Kryptographie: Protokolle, Algorithmen und Quellcode in C. John Wiley & Sons. S. 208. ISBN 9781119096726Die
- ^ „Kryptographie FAQ: Frage 84: Was sind die Zähler- und PCBC-Modi?“ . www.iks-jena.de . Archiviert vom Original am 16. Juli 2012 . Abgerufen am 28. April 2018 .
- ^ Kaufman, C.; Perlman, R.; Speciner, M. (2002). Netzwerksicherheit (2. Aufl.). Upper Saddle River, NJ: Prentice Hall. S. 319. ISBN 0130460192Die
- Kohl , J. (1990). „Die Verwendung von Verschlüsselung in Kerberos zur Netzwerkauthentifizierung“ (PDF) . Konferenzband, Crypto '89 . Berlin: Springer. ISBN 0387973176Archiviert vom Original (PDF) am 12.06.2009.
- ^ a b Dworkin, Morris (2001). „SP 800-38A, Recommendation for Block Cipher Modes of Operation: Methods and Techniques“ (PDF) . csrc.nist.gov . doi : 10.6028/NIST.SP.800-38A . Archiviert (PDF) vom Original am 28. August 2017. Abgerufen am 28. April 2018 .
- ^ Davies, DW; Parkin, GIP (1983). „Die durchschnittliche Zyklusgröße des Schlüsselstroms bei der Output-Feedback-Verschlüsselung“. Advances in Cryptology, Proceedings of CRYPTO 82. New York: Plenum Press. S. 263–282 . ISBN 0306413663Die
- ^ Jueneman, Robert R. (1983). „Analyse bestimmter Aspekte des Output-Feedback-Modus“. Advances in Cryptology, Proceedings of CRYPTO 82. New York: Plenum Press. S. 99–127 . ISBN 0306413663Die
- ^ a b Lipmaa, Helger; Wagner, David; Rogaway, Phillip (2000). „Kommentare an das NIST bezüglich der AES-Betriebsarten: CTR-Modus-Verschlüsselung“ (PDF) . Archiviert (PDF) vom Original am 26.02.2015.
- ^ Ferguson, Niels; Schneier, Bruce; Kohno, Tadayoshi (2010). Cryptography Engineering . S. 71.
- ^ „Grundlegende Blockchiffrierungsmodi“ . www.quadibloc.com . Archiviert vom Original am 24. Oktober 2017. Abgerufen am 28. April 2018 .
- ^ „Kryptographie I“ . Coursera . Archiviert vom Original am 23. März 2018. Abgerufen am 28. April 2018 .
- ^ „Modenentwicklung – Blockchiffrierungstechniken – CSRC“ . Abteilung Computersicherheit, Informationstechnologielabor, Nationales Institut für Standards und Technologie, US-Handelsministerium. 4. Januar 2017. Archiviert vom Original am 4. September 2017. Abgerufen am 28. April 2018 .
