Cryptography and Network Security - Principles and Practice, 8th Edition, William Stallings
Eine Technik zur Verbesserung der Wirkung eines kryptografischen Algorithmus oder zur Anpassung des Algorithmus an ein Anwendungsszenario. Insbesondere in Abhängigkeit von der Länge des Klartexts.
Um eine Blockchiffre in einer Vielzahl von Anwendungen einsetzen zu können, hat das NIST fünf Betriebsmodi definiert.
Die fünf Modi decken eine breite Palette von Verschlüsselungsanwendungen ab, für die eine Blockchiffre verwendet werden kann.
Diese Modi sind für die Verwendung mit jeder symmetrischen Blockchiffre vorgesehen, einschließlich 3DES und AES.
Modus |
Beschreibung |
Typische Anwendung |
---|---|---|
Electronic Codebook (ECB) |
Jeder Block von Klartextbits wird unabhängig voneinander mit demselben Schlüssel verschlüsselt. |
|
Cipher Block Chaining (CBC) |
Die Eingabe für den Verschlüsselungsalgorithmus ist die XOR-Verknüpfung des nächsten Klartextblocks mit dem vorangegangenen Chiffretextblock. |
|
Cipher Feedback (CFB) |
Die Eingabe wird Bit für Bit verarbeitet. Der vorhergehende Chiffretext wird als Eingabe für den Verschlüsselungsalgorithmus verwendet, um eine pseudozufällige Ausgabe zu erzeugen, die mit dem Klartext XOR-verknüpft wird, um die nächste Einheit des Chiffretextes zu erzeugen. |
|
Output Feedback (OFB) |
Ähnlich wie CFB, mit dem Unterschied, dass die Eingabe für den Verschlüsselungsalgorithmus die vorangegangene Verschlüsselungsausgabe ist, und volle Blöcke verwendet werden. |
|
Counter (CTR) |
Jeder Klartextblock wird mit einem verschlüsselten Zähler XOR-verknüpft. Der Zähler wird für jeden nachfolgenden Block erhöht. |
|
ECB-Tux - der Linux-Pinguin verschlüsselt im ECB-Modus:
Kriterien und Eigenschaften für die Bewertung und Konstruktion von Blockchiffre-Betriebsarten, die ECB überlegen sind.
Overhead
Fehlerbehebung
Fehlerfortpflanzung
Streuung
Sicherheit
Bei AES, DES oder jeder anderen Blockchiffre erfolgt die Verschlüsselung immer Block-für-Block mit Blockgrößen von b Bits:
Im Fall von (3)DES: \(b=64\)
Im Fall von AES: \(b=128\)
kann von der Parallelisierung der Hardware profitieren
leicht parallelisierbar in Software
die Verschlüsselung der Zähler
der i-te Block des Klartextes/des Chiffretextes kann im Zufallszugriff verarbeitet werden
genauso sicher wie die anderen Verfahren
es wird nur der Verschlüsselungsalgorithmus benötigt
2010 vom NIST als zusätzlicher Blockchiffre-Betriebsmodus genehmigt.
Modus ist auch ein IEEE-Standard, IEEE Std 1619-2007
Frage
Welche potenziellen Bedrohungen sind relevant?
Die Norm beschreibt eine Verschlüsselungsmethode für Daten, die in sektor-basierten Geräten gespeichert sind, wobei das Bedrohungsmodell einen möglichen Zugriff des Gegners auf die gespeicherten Daten beinhaltet.
Hat breite Unterstützung der Industrie erhalten.
Der XTS-AES-Modus basiert auf dem Konzept einer veränderbaren (tweakable) Blockchiffre.
Um den Chiffriertext zu berechnen, wird benötigt:
Klartext
Symmetrischer Schlüssel
Tweak
Der Tweak muss nicht geheim gehalten werden; der Zweck ist, Variabilität zu bieten.
Ein Tweak ist insbesondere bei der Verschlüsselung von Daten auf Speichergeräten wichtig, da der gleiche Klartext an verschiedenen Stellen in verschiedene Chiffretexte verschlüsselt wird, aber immer in denselben Chiffretext, wenn er wieder an dieselbe Stelle geschrieben wird.
Die Anforderungen an die Verschlüsselung gespeicherter Daten, die auch als data at rest bezeichnet werden, unterscheiden sich von denen für übertragene Daten.
Die IEEE Norm P1619 wurde in Hinblick auf folgende Eigenschaften entwickelt:
Der Chiffretext ist für einen Angreifer frei verfügbar.
Das Datenlayout wird auf dem Speichermedium und beim Transport nicht verändert.
Der Zugriff auf die Daten erfolgt in Blöcken fester Größe und unabhängig voneinander.
Die Verschlüsselung erfolgt in 16-Byte-Blöcken, die unabhängig voneinander sind.
Es werden keine weiteren Metadaten verwendet, außer der Position der Datenblöcke innerhalb des gesamten Datensatzes.
Derselbe Klartext wird an verschiedenen Stellen in verschiedene Chiffretexte verschlüsselt, aber immer in denselben Chiffretext, wenn er wieder an dieselbe Stelle geschrieben wird.
Ein standardkonformes Gerät kann für die Entschlüsselung von Daten konstruiert werden, die von einem anderen standardkonformen Gerät verschlüsselt wurden.
Schlüssel: es gilt: \(Schlüssel = Schlüssel_1\, ||\, Schlüssel_2\)
\(P_j\): Der j-te Block des Klartexts. Alle Blöcke haben eine Länge von 128 bits. Eine (Klartext)dateneinheit – in der Regel ein Festplattensektor – besteht aus einer Folge von Klartextblöcken.
\(C_j\): Der j-te Block des Chiffretextes.
\(j\): Die fortlaufende Nummer des 128-Bit-Blocks innerhalb der Dateneinheit.
\(i\): Der Wert des 128-Bit-Tweaks.
\(\alpha\): Ein primitives Element des \(GF(2^{128})\) welches dem Polynom \(x\) (d. h. 0000...0010) entspricht.
\(\alpha^j\): \(\alpha\) \(j\) mal mit sich selbst multipliziert im Körper \(GF(2^{128})\)
\(\oplus\) Bitwise XOR
\(\otimes\) Modulare Multiplikation mit Binärkoeffizienten modulo \(x^{128}+x^7+x^2+x+1\).
Der Initialisierungsvektor (IV) bei CBC
Warum ist es bei CBC wichtig, den Initialisierungsvektor (IV) zu schützen?
Padding
In welchen Betriebsarten ist eine Auffüllung (Padding) notwendig?
Auswirkungen eines Bitflips
Was geschieht im Falle eines Übertragungsfehlers (einzelner Bitflip im Chiffretext) bei ECB, CBC, CFB, OFB, CTR?
Nonce bei OFB
Warum muss der IV bei OFB eine Nonce sein?
Eine Nonce (Number used ONCE) ist eine Zahl, die nur einmal für die Ausführung des Verschlüsselungsalgorithmus verwendet wird.
ECB?
Sie möchten feststellen, ob ein Programm zur Verschlüsselung von Dateien den ECB-Modus verwendet. Was müssen Sie tun?
XTS-AES
Wie viele Blöcke hat eine Dateneinheiten, wenn ein Festplattensektor 4 KiB groß ist?
Welchen praktischen Vorteil hat es, das der Hash T vor und nach der Verschlüsselung des Klartextes mit dem aktuellen Wert XOR-verknüpft wird?
OFB-Modus
Verwenden Sie den OFB-Modus in Kombination mit einer Caesar-Chiffre, bei der die Blockgröße ein Zeichen sei. Der Schlüssel ist die Anzahl der Zeichen, um die Sie ein Zeichen verschieben wollen - wie zuvor. Der IV ist ein Zeichen. Damit sie ein XOR durchführen können, ordnen wir jedem Zeichen einen Wert zu und erweitern das Alphabet um die Ziffern 1 bis 3, "!", "?" und das "_". Auf diese Weise ist es immer möglich, ein sinnvolles Zeichen auszugeben.
Daraus ergibt sich die folgende Kodierung:
Index |
Zeichen |
Binärdarstellung |
---|---|---|
0 |
A |
00000 |
1 |
B |
00001 |
2 |
C |
00010 |
3 |
D |
00011 |
4 |
E |
00100 |
5 |
F |
00101 |
6 |
G |
00110 |
7 |
H |
00111 |
8 |
I |
01000 |
9 |
J |
01001 |
10 |
K |
01010 |
Index |
Zeichen |
Binärdarstellung |
---|---|---|
11 |
L |
01011 |
12 |
M |
01100 |
13 |
N |
01101 |
14 |
O |
01110 |
15 |
P |
01111 |
16 |
Q |
10000 |
17 |
R |
10001 |
18 |
S |
10010 |
19 |
T |
10011 |
20 |
U |
10100 |
21 |
V |
10101 |
Index |
Zeichen |
Binärdarstellung |
---|---|---|
22 |
W |
10110 |
23 |
X |
10111 |
24 |
Y |
11000 |
25 |
Z |
11001 |
26 |
1 |
11010 |
27 |
2 |
11011 |
28 |
3 |
11100 |
29 |
! |
11101 |
30 |
? |
11110 |
31 |
_ |
11111 |
Verschlüsseln Sie nun einige Nachrichten mit dieser Chiffre. Welchen Effekt hat die Anwendung des OFB-Modus auf die Nachrichten?