Verschlüsselungsverfahren

Generell unterscheidet man zwischen der symmetrischen und der asymmetrischen Verschlüsselung, welche dann wiederum in Ihre verscheiden Verschlüsselungsmodi oder Algorithmen unterteilt werden.

Symmetrische Verschlüsselung (oder Private Key Verschlüsselung):
Die symmetrische Verschlüsselung ist vom Grundprinzip die einfachste Verschlüsselung, da hier bei der Ver- wie auch der Entschlüsselung der selbe Schlüssel verwendet wird.
Funktionale Korrektheit:
Dec = Verschlüsselung (decryption), Enc = Entschlüsselung (encryption),
M = Nachricht (message) und K = Schlüssel (key)
Dec(Enc(M,K),K) = M

Hierbei gibt es die Möglichkeit der monoalphabetischen Substitution, das heist jedes Einzelzeichen wird auf genau ein Geheimtextzeichen abgebildet.
Dadurch ist ein Angriff durch beispielsweise der Häufigkeitsanalyse ohne Probleme möglich.

Besser dagegen ist die polyalphabetischer Substitution, da hierbei ein Einzelzeichen auf mehrere Geheimtextzeichen abgebildet wird. Ein Gutes Beispiel ist hierbei die ENIGMA, da hier ein Klartextzeichen (auch in Folge) auf verschiedene Verschlüsselungszeichen abgebildet wurde.

Klassische symmetrische Verschlüsselungssysteme:
Skytale (das älteste bekannte Verschlüsselungsverfahren), wurde von den Spartanern ca. 2500 v.Ch. genutzt. Hierbei wurde der Durchmesser eines Holzstabes als Schlüssel benutzt, um diesen ein Lederband gewickelt wurde. Quelle: Wikipedia.
Skytale beruht hier alleine auf dem Traspositionsverfahren, bei dem die Lettern einfach nur verschoben werden.

Cäsar Verschlüsselung basiert auf der monographischen und monoalphabetischen Substitution, das heist einzelne Buchstaben werden durch einen anderen Buchstaben ausgetauscht. Diese Verschlüsselung ist einfacherer und unsicherer als die Verschlüsselung durch Trasposition, da man hier mit der Häufigkeitsanalyse den Text relativ leicht entschlüsseln kann, ohne die Verschlüsselungvorschrift zu kennen. Quelle: Wikipedia.

Vigenère Verschlüsselung ist eine Weiterentwicklung der Cäsar Verschlüsselung, es handelt sich hierbei auch um eine monographische Substitution, jedoch mit polyalphabetischer Ersetzung. Das bedeutet eine Letter wird durch verschiedene Buchstaben ersetzt. Dadurch ist eine Häufigkeitsanalyse nicht mehr ohne weiteres möglich. Zur Ver- wie auch Entschlüsselung wird ein „Vigenère-Quadrats“ benötigt, welches eine quadratische Anordnung von untereinander stehenden verschobenen Alphabeten ist. Dazu wird ein Schlüssel mit der gleichen Länge des zuverschlüsselnden Textes genutzt um den Text zu verschlüsseln. Der Klartext ist dabei die x-Koordinate und der Schlüssel die Y-Koordinate.
Quelle: Wikipedia.

Heute findet man diese Verschlüsselung noch Verwendung in der (Shannons) One-Time-Pad (OTP) Verschlüsselung. Hierbei erfolgt eine Vigenère Verschlüsselung über Bits{0,1} deren Schlüsselbitfolge zufällig und einmalig ist. Die Verschlüsselung erfolgt dabei bitweises durch ein Exklusiv-Oder. Diese Verschlüsselung schützt zwar die Integrität, also der potentielle Angreifer kennt den Inhalt der Nachricht nicht, aber kann diese ohne Probleme verändern, in dem er in der verschlüsselten Nachricht ein oder mehrere Bits verändert.

Blockverschlüsselung :
Bei der Blockverschlüsselung wird die zu verschlüsselnde Nachricht / Datei in Blöcke unterteilt und diese dann mit dem gewünschten Verschlüsselungsverfahren verschlüsselt. Analog funktioniert die Entschlüsselung.

Wichtig hierbei ist, dass das Verschlüsselungsverfahren deterministisch ist, bedeutet, dass die Größe der Klartextblöcke eine feste, gleiche Länge haben und wiederum auf einen Schlüssel fester Länge abgebildet werden.

Beispiele für eine Blockverschlüsselung in der Anwendung:
AES (Advanced Encryption Standard), DES (Data Encryption Standard) und 3DES, Blowfish, RC2, RC5, RC6, usw.

Electronic Code Book (ECB) Verschlüsselung :
ECB ist der einfachste Betriebsmodus der Blockverschlüsselung, hierbei wird der Klartext in eigene Blöcke und dann unabhängig voneinander einzel verschlüsselt. Ein großer Nachteil dieser Verschlüsselung ist, dass gleiche Klartextblöcke durch den immer gleichbleibenden Schlüssel immer den gleichen Geheimtextblock erzeugen und somit eine Struktur in der Verschlüsselung erkennbar ist.

Verschlüsselung:
Klartext: 011001111000101 n= 3
Aufteilung in Blöcke á 3 Bit, A=011 B=001 C=111 D=000 E=101
Schlüssel: 1=2, 2=1 und 3=3

Block A:
1.Bit=0, 2.Bit=1, 3.Bit=1 darauf volg nach Permutationsfunktion:
1.Bit =2.Bit, 2Bit =1.Bit und 3.Bit bleibt 3.Bit = 1.Bit=1, 2.Bit=0, 3.Bit=1
usw.
Dec(011.001.111.000.101,213) = 101.001.111.000.011
Enc(101.001.111.000.011,213) = 011.001.111.000.101

Cipher Block Chaining (CBC) Verschlüsselung :
CBC ist eine Erweiterung der Blockverschlüsselung ECB, so, dass jeder Block mit einem zusätzlichen Eingabefaktor aber dem gleichem Schlüssel verschlüsselt wird.

Quelle: Wikipedia

Der Eingabefaktor kann variable, freigewählt und auch öffentlich bekannt sein. Dadurch werden gleiche Klartextblöcke nicht mehr auf gleiche Schlüsseltextblöcke abgebildet und erschweren somit die Berechnung des Klartextes, bzw. des Schlüssels. Bestenfalls durch einen zufällig gewählten Initalisierungsvektor.

Wichtig bei dieser Verschlüsselung ist, dass die Eingangsblöcke ale die gleiche Größe haben. Sollte der letzte Eingangsblock zu kurz sein, so wird dieser Block mittels Padding aufgefüllt. Fehlt ein Byte, wird einfach ein Byte (0x01) angehängt, fehlen zwei Byte, werden zwei Byte (0x02) angehängt, usw.

Verschlüsselung:
Klartext: 0110, Aufteilung in zwei Blöcke, A = 01 und B = 10.
Schlüssel: 11 und der Initalivektor ist 01.
Verschlüsselung Block A: A (XOR) Initalvektor = 01 (XOR) 01 = 00 = C1′
Enc(C1′, Schlüssel) = C1′ + Schlüssel = 00 + 11 = 11 = C1

Verschlüsselung Block B: B (XOR) C1 = 10 (XOR) 11 = 01 = C2′
Enc(C2′, Schlüssel) = C2′ + Schlüssel = 01 + 11 = 00 = C2

Verschlüsselter Text C = C1C2 = 1100

Entschlüsselung:

Quelle: Wikipedia


Aufteilung wieder in zwei Blöcke C1 = 11 und C2 = 00
Dec(C1) = C1 – Schlüssel = 11 – 11 = 00 = C1′
C1′ (XOR) Initalvektor = 00 (XOR) 01 = 01 = A

Dec(C2) = C2 – Schlüssel = 00 – 11 = 01 = C2′
C2′ (XOR) Initalvektor = 01 (XOR) 01 = 10 = B

Klartext aus Verschlüsselung = AB = 0110

Bekannte Angriff auf bestimmte Anwendung von CBC, jedoch nicht auf CBC selbst sind: BEAST SSL Angriff auf Browser, Lucky13 TLS Angriff auf Browser und POODLE.

One Time Pad (OTP) oder auch Vernam Chiffre :
Ist ein Verschlüsselungsverfahren welches auf dem Einmalschlüssel-Verfahren basiert. OTP ist eine symmetrische Verschlüsselung (also der selbe Schlüssel für die Ver- wie auch Entschlüsselung verwendet wird).
Das Hauptmerkmal bei dieser Verschlüsselung ist, dass die Schlüssellänge mindestens genauso lang ist, wie die zu verschlüsselnde Nachricht selbst.
Dadurch ist OTP informationstheoretisch als sicher einzustufen, da es noch keinen Nachweis gibt, dass dieses Verschlüsselungsverfahren geknackt wurde. Da jede Nachricht einen eigenen Schlüssel der eben so lang wie die Nachricht selbst ist, gilt OTP als die „perfekte“ Verschlüsselung.

Ein Angriff über statistische Auffälligkeiten, wie der Häufigkeitsanalyse ist nicht möglich, wenn der Schlüssel gut gewählt ist.

Mathematische Definiton: Nachricht: m, Schlüssel: k, resultierende Chiffre: c
Verschlüsselt wird: m (xor) k = C
Entschlüsselt wird: c (xor) k = m (xor) k (xor) k = m (xor) k (xor) k = m

Beispiel 1:
Nachricht m = 1111.1010 und der Schlüssel k = 0000.1111
Verschlüsselung:
1111.1010 (xor) 0000.1111 = 1111.0101

Entschlüsselung:
1111.0101 (xor) 0000.1111 = 1111.1010

„Moderne“ symmetrische Verschlüsselungssysteme:
DES wurde in den 1970ern von IBM entwickelt und ist eine Blockverschlüsselung mit fester Ein- und Ausgangslänge. Die (Klartext-) Nachrichtblöche sind genau 64Bit, der Schlüssel genau 56Bit ( zuzüglich 8Kontroll-Bits) und der verschlüsselte Block genau 64Bit lang.
Die verwendete Schlüssellänge ist nach heutigem Stand der Technik (Rechenleistung zum knacken einer Verschlüsselung) viel zu kurz gewählt, denn für eine Schlüssellänge von 56Bits benötigt man 2^56 Operationen für einen Brute-Force Angriff (Knachen durch Ausprobieren). Dennoch findet DES heute in abgewandelter Verseon als 3DES noch Anwendung, hierbei wird DES dreimal in Folge mit zwei verschiedenen Schlüsseln angewandt. Dadurch ist die Schlüssellänge mit 168 Bits dreimal so groß wie bei DES (56 Bits) jedoch bleibt die effektive Schlüssellänge nur bei 112 Bits (zwei mal Schlüssellänge von 56Bits).

AES (Advanced Encryption Standard) gilt seit Oktober 2000 als Nachfolger für DES. AES ist zwar weiterhin wie sein Vorgänger eine symmetrische Verschlüsselung, jedoch mit einer Block- und Schlüssellängen von 128, 160, 192, 224 oder 256 Bit. AES gilt aktuell nochals ungebrochen und wird vom amerikanischen Verteidigungsministerium als AES 192 und AES 256 für die höchste Geheimhaltungsstufe zugelassen. AMD und Intel haben in Ihren Prozessoren sogenannte „Embedded System Security“ Chips verbaut, welche Spezielle auf die Berechnungen der AES Verschlüsselung ausgerichtet sind.

Nachteile der symmetrischen Verschlüsselung:
Duplikation: Speichern mehrere User die selbe Datei auf einem Server ab, so muss der Server entweder sehr viel Rechenleistung haben, um jede Übertragung der Datei erst zu entschlüsseln und dann abzugleichen um wieder mit einem eigenen Schlüssel zu verschlüsseln und abzuspeichern, oder der Server benötigt sehr viel Speicherplatz, da jeder User seine verschlüsselte „Version“ auf dem Server speichert.

Selber Schlüssel: Bei der Kommunikation benötigen Sender und Empfänger den gleichen Schlüssel, hierzu muss zudem auch ein Schlüsselaustausch auf sicherem Weg im Vorfeld stattfinden.

Blocklängen und Schlüssellänge:
DES : 64 Bit Blocklängen und 56 Bit Schlüssellänge,
AES : 128 Blocklängen und 128, 192 oder 256 Bit Schlüssellänge

Asymmetrische Verschlüsselung (oder Public Key Verschlüsselung):
Bei dieser Verschlüsselung haben Sender und Empfänger jeweils einen eigenen geheimen Schlüssel (sk) zum entschlüsseln und einen öffentlichen Schlüssel (pk) zum Verschlüsseln.

Für die Funktionale Korrektheit gilt: Dec(sk,Enc(pk,Nachricht))=Nachricht. Vorteil der Public Key Verschlüsselung ist, dass kein gemeinsamer geheimer Schlüsselaustausch zwischen Sender und Empfänger statt finden muss. D.H. Sender und Empfänger müssen sich niemals treffen um verschlüsselt kommunizieren zu können. Es benötigt also keine Interaktion zwischen Sender und Empfänger.

RSA Verschlüsselung:
Mathematische Formeln:
Verschlüsselung: Enc(pk,m) = Enc((e,N),m) = m^e mod N
Entschlüsselung: Dec(sk, c) = Dec((d,N),c) = c^d mod N

m^e = m wird e mal mit sich selbst multipiziert = m*m*m*…*m
Als Struktur gilt die Rechnung im Restkalssenring Z der natürlichen Zahlen.
Beispiel = 3*6 mod 5 = 18 mod 5 = 3
Als Operator bildet man x auf die kleinste Zahl y zwischen 0 und N-1 ab.
Beispiel: 17 mod 5 = 2
Darauf folg dass 18 mod 5 das gleich wie 3 mod 5 ist.

RSA Schlüssel auf Gültigkeit überprüfen:
Wir haben die Schlüssel pk = (e,N) und sk = (d,N), N = p*q, wobei p und q Primzahlen sind. Zur Überprüfung müssen wir einfach nur (e*d) mod φ(N) berechnen. Wobei φ(N) gleich die Eulerschezahl von N ist. Hierbei muss bei einem gültigen Schlüssel das Ergebnis 1 sein.

Bsp. e = 2, d = 4 und p = 3 und q = 5)
(e*d) mod φ(N) = (e*d) mod φ(p*q) = (e*d) mod ((p-1)(q-1)) = (2*4) mod ((3-1)(5-1)) = 8 mod 8 = 0, also ungültig

Bsp. e = 3, d = 4 und p = 3 und q = 5)
(3*4) mod ((3-1)(5-1)) = 12 mod 8 = 4, also ungültig

Bsp. e = 3, d = 3 und p = 3 und q = 5)
(3*3) mod ((3-1)(5-1)) = 9 mod 8 = 1, also gültig

Beispiel RSA Verschlüsselung:
Der öffentliche Schlüssel lautet pk = (N,e) = (91,3) und die zu verschlüsselnde Nachricht m = 11.
Nach RSA Formel gilt Enc(pk, m) = (m hoch e) mod N, also
Enc((N,e), m) = Enc((91,3),11) = (11 hoch 3) mod 91 = 1.331 mod 91 = 57.
Die verschlüsselte Nachricht lautet also 57

Beispiel RSA Verschlüsselung knacken:
Wir haben die verschlüsselte Nachricht 2 abgefangen.
Hierzu benötigen wir nun den geheimen Schlüssel, d.h. den Exponenten d, welcher das multiplikative Inverse zu e mod der Eulerschen-Funktion von N ist. Um diesen Exponenten zu berechnen nutzt man den Zusammenhang zwischen öffentlichem und geheimen Schlüssel aus: e · d ≡ 1 mod φ(N ).
Wir wissen aus dem Vorherigen Beispiel, dass der öffentliche Schlüssel pk = (N,e) = (91,3). Wir müssen 91 in Primzahlen zerteilen, also fangen wir mal an in dem wir uns (die kleinen) Primzahlen aufschreiben und ausprobieren: 2,3,5,7,11,13,17,19
2*3 = 6 (zu klein), 3*5 = 15 (zu klein), 5*7 = 35 (zu klein), 7*11 = 77 (zu klein), 11*13 = 143 (groß klein). Also wissen wir, dass 13 die größte mögliche Primzahl ist. Versuchen wir es also mal mit 13:
2*13 = 26 (zu klein), 3*13 = 39 (zu klein), 5*13 = 65 (zu klein), 7*13 = 91 Bingo! Also wissen wir nun, dass 7 und 13 unsere beiden gesuchten Primzahlen sind. Berechnen wir nun die Eulersche Funktion φ(N ) zweier Primzahlen (p-1)*(q-1) = (7-1)*(13-1) = 6*12 = 72. Nun nehmen wir die zweite Primzahl aus dem bekannten, öffentlichen Schlüssel und stellen folgende Gleichung auf: 3*d ≡ 1 mod 72. Wir verwenden den erweiterten Euklidischen Algorithmus und suchen den ggT(3,72) um wiederrum die Gleichung: 3 * d + k * 72 = 1 lösen zu können. Da aber 72 ein Vielfaches von 3 ist, müssen wir dieses erst herausziehen, also stellen wir folgende Gleichung auf: 3*((1 * d + k * 24) = 1). Jetzt erhalten wir d = 1 und k = 0.
Wir setzen ein: (1 * 1 + 0 * 24) = 1. Nun können wir die Nachricht 2 entschlüsseln und erhalten m = 2 hoch d mod (N) = 2 hoch 1 mod 91 = 2 mod 91 = 2. Die klartext Nachricht ist 2 entspricht hier zufällig der verschlüsselten Nachricht.

Die Sicherheit von RSA beruht darin, dass das Wurzelziehen über die reelen Zahlen wie auch, auch das Wurzelziehen über die modulare Arithmetik für Primzahlpotenzen in der Regel einfach ist, aber bei RSA verscheidene zufällige Primzahlen verwendet werden.

Nachteile der Publik Key Verschlüsselung ist, dass das Ver- wie auch Entschlüsseln viel komplexer und damit rechenintensiver ist als bei der symmetrischen Verschlüsselung wie z.B. AES. Dadurch ist das Verschlüsseln größerer Blöcke sehr schwierig.

Hybride Verschlüsselung:
Diese Art der Verschlüsselung ist eine Kombination aus der symmetrischen und asymmetrischen Verschlüsselung. Sie kombiniert die besten Eigenschaften beider Verschlüsselungen in eine. Dazu werden die zu verschlüsselnden Blöcke symmetrisch mit einem zufällig gewählten einmal gültigen Schlüssel verschlüsselt. Danach wird dieser Schlüssel mittels Public Key Verfahren an den Empfänger übertragen. Dadurch ist die Ver- und Entschlüsselung linear, das heist weniger rechenintensiv als bei der asymmetrischen Verschlüsselung, die zu verschlüsselnden Blöcke können beliebig groß sein und das Entschlüsseln ist auch wieder symmetrisch, also linear.