Einführung in die moderne Kryptographie - Exam
Aufgabe 1)
Geschichte der Kryptographie und ihre Entwicklung
Kurze, präzise Übersicht über die geschichtliche Entwicklung der Kryptographie.
- Antike: Einfache Substitutionsmethoden (z.B. Caesar-Verschlüsselung)
- Mittelalter: Vigenère-Verschlüsselung, erste Polyalphabetische Chiffren
- 20. Jahrhundert: Enigma-Maschine, Fortschritte durch Computer
- Moderne: Asymmetrische Verfahren (RSA, ECC), Quantenkryptographie
- Wichtige Konzepte: Symmetrische vs. asymmetrische Kryptographie, öffentliche vs. private Schlüssel
a)
1. Caesar-Verschlüsselung:
Erläutere das Funktionsprinzip der Caesar-Verschlüsselung. Verschlüssele die Nachricht 'KRYPTOGRAPHIE' unter Verwendung eines Verschiebungswerts von 4.
Hinweis: Nutze den vollständigen deutschen Zeichensatz (A-Z, ohne Umlaute).
Lösung:
Geschichte der Kryptographie und ihre Entwicklung
Kurze, präzise Übersicht über die geschichtliche Entwicklung der Kryptographie:
- Antike: Einfache Substitutionsmethoden (z.B. Caesar-Verschlüsselung)
- Mittelalter: Vigenère-Verschlüsselung, erste Polyalphabetische Chiffren
- 20. Jahrhundert: Enigma-Maschine, Fortschritte durch Computer
- Moderne: Asymmetrische Verfahren (RSA, ECC), Quantenkryptographie
- Wichtige Konzepte: Symmetrische vs. asymmetrische Kryptographie, öffentliche vs. private Schlüssel
Subexercise:
1. Caesar-Verschlüsselung:
Erläutere das Funktionsprinzip der Caesar-Verschlüsselung. Verschlüssele die Nachricht 'KRYPTOGRAPHIE' unter Verwendung eines Verschiebungswerts von 4.
Hinweis: Nutze den vollständigen deutschen Zeichensatz (A-Z, ohne Umlaute).
Funktionsprinzip der Caesar-Verschlüsselung:
Die Caesar-Verschlüsselung ist eine einfache Substitutionsmethode, bei der jeder Buchstabe des Klartexts um eine feste Anzahl von Positionen im Alphabet verschoben wird. Zum Beispiel wird bei einer Verschiebung von 4 A zu E, B zu F, und so weiter. Dieses Prinzip kann durch die Formel:
Verschlüsselte Position = (Original Position + Verschiebungswert) % 26
dargestellt werden, wobei der Modulo-Operator sicherstellt, dass die Position innerhalb des 26-Buchstaben-Alphabets bleibt.
Beispiel:
- Klartext: KRYPTOGRAPHIE
- Verschiebung: 4
- Schritte zur Verschlüsselung jedes Buchstabens:
- K -> O
- R -> V
- Y -> C
- P -> T
- T -> X
- O -> S
- G -> K
- R -> V
- A -> E
- P -> T
- H -> L
- I -> M
- E -> I
- Verschlüsselter Text: 'OVCTXSKVETLMI'
b)
2. Vigenère-Verschlüsselung:
Erkläre die Unterschiede zwischen der Caesar-Verschlüsselung und der Vigenère-Verschlüsselung. Verschlüssele den Text 'MODERNEKRYPTO' mit dem Schlüsselwort 'ABCD' unter Anwendung der Vigenère-Methode.
Lösung:
Geschichte der Kryptographie und ihre Entwicklung
Kurze, präzise Übersicht über die geschichtliche Entwicklung der Kryptographie:
- Antike: Einfache Substitutionsmethoden (z.B. Caesar-Verschlüsselung)
- Mittelalter: Vigenère-Verschlüsselung, erste Polyalphabetische Chiffren
- 20. Jahrhundert: Enigma-Maschine, Fortschritte durch Computer
- Moderne: Asymmetrische Verfahren (RSA, ECC), Quantenkryptographie
- Wichtige Konzepte: Symmetrische vs. asymmetrische Kryptographie, öffentliche vs. private Schlüssel
Subexercise:
2. Vigenère-Verschlüsselung:
Erkläre die Unterschiede zwischen der Caesar-Verschlüsselung und der Vigenère-Verschlüsselung. Verschlüssele den Text 'MODERNEKRYPTO' mit dem Schlüsselwort 'ABCD' unter Anwendung der Vigenère-Methode.
Unterschiede zwischen der Caesar-Verschlüsselung und der Vigenère-Verschlüsselung:
- Caesar-Verschlüsselung: Bei der Caesar-Verschlüsselung wird jeder Buchstabe des Klartexts um eine feste Anzahl von Positionen im Alphabet verschoben. Diese Methode ist einfach und leicht zu brechen, da sie nur einen einzigen Schlüssel (den Verschiebungswert) verwendet.
- Vigenère-Verschlüsselung: Bei der Vigenère-Verschlüsselung wird ein Schlüsselwort verwendet, um die Verschiebung der Buchstaben zu steuern. Das Schlüsselwort wird wiederholt über den Klartext gelegt, und jeder Buchstabe wird entsprechend der Position im Schlüsselwort verschoben. Diese Methode ist sicherer als die Caesar-Verschlüsselung, da sie mehrere Schlüssel (die Buchstaben des Schlüsselwortes) verwendet und somit polyalphabetisch ist.
Beispiel Verschlüsselung:
- Klartext: MODERNEKRYPTO
- Schlüsselwort: ABCD (wiederholend)
Schritte zur Verschlüsselung jedes Buchstabens:
- M (12) + A (0) = 12 -> M
- O (14) + B (1) = 15 -> P
- D (3) + C (2) = 5 -> F
- E (4) + D (3) = 7 -> H
- R (17) + A (0) = 17 -> R
- N (13) + B (1) = 14 -> O
- E (4) + C (2) = 6 -> G
- K (10) + D (3) = 13 -> N
- R (17) + A (0) = 17 -> R
- Y (24) + B (1) = 25 -> Z
- P (15) + C (2) = 17 -> R
- T (19) + D (3) = 22 -> W
- O (14) + A (0) = 14 -> O
Der verschlüsselte Text lautet: 'MPFHRONGRZRWO'
c)
3. RSA-Verschlüsselung:
Beschreibe den RSA-Algorithmus und seine Bestandteile. Gegeben sei ein öffentliches Schlüsselpaar \((e, n) = (5, 14)\). Verschlüssele die Nachricht 7 und zeige die Schritte der Berechnung.
Hinweis: Zur Vereinfachung soll \((n = p \cdot q)\) und die genaue Berechnung des geheimen Schlüssels vernachlässigt werden.
Lösung:
Geschichte der Kryptographie und ihre Entwicklung
Kurze, präzise Übersicht über die geschichtliche Entwicklung der Kryptographie:
- Antike: Einfache Substitutionsmethoden (z.B. Caesar-Verschlüsselung)
- Mittelalter: Vigenère-Verschlüsselung, erste Polyalphabetische Chiffren
- 20. Jahrhundert: Enigma-Maschine, Fortschritte durch Computer
- Moderne: Asymmetrische Verfahren (RSA, ECC), Quantenkryptographie
- Wichtige Konzepte: Symmetrische vs. asymmetrische Kryptographie, öffentliche vs. private Schlüssel
Subexercise:
3. RSA-Verschlüsselung:
Beschreibe den RSA-Algorithmus und seine Bestandteile. Gegeben sei ein öffentliches Schlüsselpaar \((e, n) = (5, 14)\). Verschlüssele die Nachricht 7 und zeige die Schritte der Berechnung.
Hinweis: Zur Vereinfachung soll \(n = p \cdot q\) und die genaue Berechnung des geheimen Schlüssels vernachlässigt werden.
Beschreibung des RSA-Algorithmus:
- Der RSA-Algorithmus, benannt nach seinen Erfindern Rivest, Shamir und Adleman, ist ein asymmetrisches Kryptosystem, das zwei Schlüssel verwendet: einen öffentlichen Schlüssel zum Verschlüsseln und einen privaten Schlüssel zum Entschlüsseln.
- Komponenten des RSA-Algorithmus:
- Öffentlicher Schlüssel \((e, n)\): Der öffentliche Schlüssel besteht aus dem Exponenten \(e\) und dem Modulus \(n = p \cdot q\), wobei \(p\) und \(q\) zwei große Primzahlen sind.
- Privater Schlüssel \((d)\): Der private Schlüssel \(d\) wird durch eine spezielle Berechnung unter Verwendung der Primzahlen \(p\) und \(q\) sowie des öffentlichen Exponenten \(e\) bestimmt.
- Schritte der Verschlüsselung: Gegeben den öffentlichen Schlüssel \((e = 5)\) und \((n = 14)\), sowie die Nachricht 7:
- Berechne den verschlüsselten Text \(C\) mit Hilfe der Formel: \(C \equiv M^e \mod n\).
Schritt-für-Schritt-Berechnung:
- Gegebene Nachricht \(M = 7\)
- Öffentlicher Schlüssel: \(e = 5\), \(n = 14\)
- Verschlüsselte Nachricht \(C\):
- Berechne: \((7^5 \mod 14)\)
- \(7^5 = 16807\)
- \(16807 \mod 14 = 16807 - (16807 // 14) \cdot 14\)
- 16807 // 14 = 1200 (Ganzzahldivision)
- 16807 - 1200 \cdot 14 = 16807 - 16800 = 7
- Daher: \(C = 7\)
Die verschlüsselte Nachricht ist: 7
d)
4. Quantenkryptographie:
Gehe auf die Bedeutung der Quantenkryptographie ein und beschreibe ein bekanntes Verfahren, das zur Schlüsselverteilung verwendet wird.
Lösung:
Geschichte der Kryptographie und ihre Entwicklung
Kurze, präzise Übersicht über die geschichtliche Entwicklung der Kryptographie:
- Antike: Einfache Substitutionsmethoden (z.B. Caesar-Verschlüsselung)
- Mittelalter: Vigenère-Verschlüsselung, erste Polyalphabetische Chiffren
- 20. Jahrhundert: Enigma-Maschine, Fortschritte durch Computer
- Moderne: Asymmetrische Verfahren (RSA, ECC), Quantenkryptographie
- Wichtige Konzepte: Symmetrische vs. asymmetrische Kryptographie, öffentliche vs. private Schlüssel
Subexercise:
4. Quantenkryptographie:
Gehe auf die Bedeutung der Quantenkryptographie ein und beschreibe ein bekanntes Verfahren, das zur Schlüsselverteilung verwendet wird.
Bedeutung der Quantenkryptographie:
Die Quantenkryptographie nutzt die Prinzipien der Quantenmechanik, um sichere Kommunikationsmittel zu schaffen. Ein entscheidender Vorteil der Quantenkryptographie ist die Fähigkeit, sichere Schlüsselverteilung zu gewährleisten. Dies basiert auf den Gesetzen der Quantenmechanik, was bedeutet, dass jeglicher Abhörversuch aufgedeckt werden kann. Eines der bekanntesten und meist erforschten Verfahren der Quantenkryptographie ist die Quanten-Schlüsselverteilung (QKD) mit dem BB84-Protokoll.
BB84-Protokoll zur Schlüsselverteilung:
- Das BB84-Protokoll wurde 1984 von Charles Bennett und Gilles Brassard entwickelt und ist das erste und bekannteste QKD-Protokoll.
- Es nutzt die Eigenschaften von Photonen und deren Polarisationszustände, um Informationen zu übertragen.
Schritte im BB84-Protokoll:
- 1. Schlüsselgenerierung: Der Sender (Alice) erstellt einen zufälligen Binärschlüssel.
- 2. Kodierung: Alice kodiert jeden Bit des Schlüssels in die Polarisation eines Photons, wobei sie zwischen vier möglichen Zuständen wählt (horizontal, vertikal, diagonal links, diagonal rechts).
- 3. Übertragung: Alice sendet die kodierten Photonen einzeln an den Empfänger (Bob).
- 4. Messung durch Bob: Bob misst die Polarisation jedes Photons, aber ohne zu wissen, welche Basis Alice verwendet hat, wählt Bob zufällig zwischen den zwei möglichen Basen (rectilinear oder diagonal).
- 5. Austausch der Messbasen: Nachdem alle Photonen gemessen wurden, teilen Alice und Bob ihre verwendeten Basen über einen öffentlichen Kanal mit. Sie verraten jedoch nicht die tatsächlichen gemessenen oder gesendeten Werte.
- 6. Korrelation der Basen: Alice und Bob vergleichen ihre Basen und behalten nur die Bits, bei denen sie die gleiche Basis verwendet haben. Diese Bits bilden den gemeinsamen geheimen Schlüssel.
- 7. Fehlerkorrektur und Privatsphärenverstärkung: Um sicherzustellen, dass der Schlüssel korrekt und sicher ist, verwenden Alice und Bob Fehlerkorrektur- und Privatsphärenverstärkungsprotokolle.
Vorteile der Quantenkryptographie:
- Hohe Sicherheit: Durch die Quantenmechanik können Abhörversuche während der Schlüsselverteilung sofort erkannt werden.
- Zukunftssicher: Die Quantenkryptographie bietet Schutz gegen Quantencomputer-basierte Angriffe, die herkömmliche kryptographische Verfahren bedrohen könnten.
Aufgabe 2)
Gegeben ist das Konzept der semantischen Sicherheit (\textit{semantic security}), welches ein fundamentales Prinzip in der modernen Kryptographie darstellt. Dieses Konzept beschreibt die Eigenschaft eines Verschlüsselungsschemas, dass ein Angreifer, der eine Chiffrat-Zeichenkette abfangen kann, keine signifikante Information über den Klartext erhält. Betrachte ein Verschlüsselungssystem, das in einem Kontext eines Kommunikationsprotokolls genutzt wird, welches vor verschiedenen Arten von Angriffen, wie passivem Abhören (\textit{eavesdropping}) und aktiven Angriffen (z.B. \textit{Man-in-the-Middle}), geschützt sein muss.
a)
Zunächst, beschreibe das Prinzip der semantischen Sicherheit formell. Wie könnte man semantische Sicherheit unter Verwendung des Begriffs der Indistinguishbarkeit (\textit{indistinguishability}) zwischen zwei Chiffraten formal definieren?
Lösung:
Um das Prinzip der semantischen Sicherheit formell zu beschreiben, können wir den Begriff der Indistinguishbarkeit (\textit{indistinguishability}) von Chiffraten verwenden. Semantische Sicherheit bedeutet, dass ein Angreifer, der eine Chiffrat-Zeichenkette abfängt, keine signifikanten Informationen über den ursprünglichen Klartext gewinnen kann.
Definition der semantischen Sicherheit: Ein Verschlüsselungsschema ist semantisch sicher, wenn es für einen Angreifer nicht effizient möglich ist, zu unterscheiden, welcher von zwei möglichen Klartexten zu einem gegebenen Chiffrat gehört.
Formelle Definition: Um dies genauer zu formulieren, betrachten wir die folgenden Definitionen und Schritte:
- Es gibt zwei Algorithmen: einen Verschlüsselungsalgorithmus
E
und einen Dechiffrierungsalgorithmus D>. Der Verschlüsselungsalgorithmus nimmt einen Klartext m
und einen Schlüssel k
an und gibt ein Chiffrat c
zurück: c = E(k, m)
. Der Dechiffrierungsalgorithmus nimmt ein Chiffrat c
und einen Schlüssel k
an und gibt den Klartext m
zurück: m = D(k, c)
.
- Ein Verschlüsselungsschema ist semantisch sicher, wenn für jede effiziente, probabilistische Turingmaschine (Angreifer)
A
, die entsprechend einem bestimmten Verteilungsalgorithmus zwei Klartexte m_0
und m_1
auswählt, es keine signifikante Wahrscheinlichkeit gibt, zwischen den resultierenden Chiffraten c_0 = E(k, m_0)
und c_1 = E(k, m_1)
zu unterscheiden. - Formal bedeutet dies, dass für alle Wahrscheinlichkeitsverteilungen der Klartexte
m_0
und m_1
und für alle probabilistischen polynomialzeitbeschränkten Angreifer A
: \(\big| \text{Pr}[A(E(k, m_0)) = 1] - \text{Pr}[A(E(k, m_1)) = 1] \big| < \text{vernachlässigbare Wahrscheinlichkeit} \).
- Hierbei ist
Pr
die Wahrscheinlichkeitsfunktion und eine vernachlässigbare Wahrscheinlichkeit ist eine Funktion, die schneller gegen null geht als jede inverse polynomiale Funktion.
b)
Nehmen wir an, wir haben ein Verschlüsselungsschema, das semantische Sicherheit bei passiven Angriffen garantiert. Erkläre anhand eines Beispiels, wie ein passiver Angreifer vorgeht und warum semantische Sicherheit in diesem Fall von entscheidender Bedeutung ist.
Lösung:
Ein passiver Angreifer ist jemand, der Informationen während der Übertragung abhört, ohne aktiv in die Kommunikation einzugreifen oder zu verändern. Ein häufiges Beispiel für einen passiven Angriff ist das sogenannte Eavesdropping, bei dem der Angreifer Nachrichten abhört, die zwischen zwei Parteien ausgetauscht werden.
Um die Bedeutung der semantischen Sicherheit bei passiven Angriffen zu verdeutlichen, betrachten wir folgendes Beispiel:
Beispiel:
- Stell Dir vor, Alice möchte eine vertrauliche Nachricht
M
an Bob senden. Sie verwendet ein Verschlüsselungsschema, um die Nachricht in ein Chiffrat C
zu verwandeln, bevor sie die Nachricht über einen unsicheren Kanal sendet. - Ein passiver Angreifer, nennen wir ihn Eve, hört die Kommunikation ab und fängt das Chiffrat
C
ab. - Da Eve nur das Chiffrat
C
hat und nicht den Schlüssel, kann sie ohne semantische Sicherheit möglicherweise nützliche Informationen über den ursprünglichen Klartext M
ableiten. In einem semantisch sicheren Verschlüsselungsschema jedoch sollte Eve keine signifikanten Informationen über M
gewinnen können, selbst wenn sie mehrere Chiffrate abfängt.
Bedeutung der semantischen Sicherheit:
- Schutz vor Informationsleckage: Semantische Sicherheit stellt sicher, dass selbst wenn ein Angreifer mehrere Chiffrate abhört, er keine relevanten Informationen über die Klartexte erhält. Dies ist wichtig, um die Vertraulichkeit der Kommunikation zu gewährleisten.
- Verhinderung von Mustererkennung: Ein Angreifer könnte versuchen, durch Vergleich oder Analyse von Mustern in den Chiffraten Rückschlüsse auf den Klartext zu ziehen. Da semantische Sicherheit die Indistinguishbarkeit der Chiffrate garantiert, ist es für den Angreifer unmöglich, solche Muster zu erkennen.
- Robustheit gegen probabilistische Angriffe: Ein semantisch sicheres Schema macht es für den Angreifer extrem schwierig, durch wahrscheinlichkeitstheoretische Methoden oder statistische Angriffe irgendeinen Vorteil zu erlangen.
Zusammenfassend: Ist semantische Sicherheit entscheidend, um die Vertraulichkeit der übertragenen Nachricht zu schützen und sicherzustellen, dass ein passiver Angreifer keine nützlichen Informationen aus abgehörten Chiffraten gewinnen kann. Ohne diese Sicherheit könnten selbst einfache passiv abgehörte Informationen für bösartige Zwecke genutzt werden.
c)
Diskutiere, warum die semantische Sicherheit allein möglicherweise nicht gegen aktive Angriffe wie \textit{Man-in-the-Middle} ausreicht. Welche zusätzlichen Sicherheitsmaßnahmen könnten notwendig sein, um auch gegen solche Angriffe geschützt zu sein?
Lösung:
Semantische Sicherheit ist ein wichtiger Schutzmechanismus gegen passive Angriffe wie eavesdropping, bei denen ein Angreifer versucht, Informationen zu erhalten, indem er die Kommunikation abhört. Allerdings reicht semantische Sicherheit allein möglicherweise nicht aus, um aktive Angriffe wie Man-in-the-Middle (MITM) zu verhindern. Bei einem MITM-Angriff manipuliert ein Angreifer aktiv die Kommunikation zwischen zwei Parteien.
Warum semantische Sicherheit gegen aktive Angriffe nicht ausreicht:
- Bei einem MITM-Angriff kann der Angreifer nicht nur Nachrichten abfangen, sondern auch ändern oder einfügen, bevor sie den vorgesehenen Empfänger erreichen.
- Ein Angreifer könnte beide Kommunikationsparteien glauben lassen, dass sie direkt miteinander kommunizieren, während in Wahrheit alle Nachrichten durch den Angreifer geleitet und gegebenenfalls manipuliert werden.
- Semantische Sicherheit bietet keinen Schutz gegen solche Manipulationen und Fälschungen, da sie sich nur auf die Verschleierung des Klartextes konzentriert, nicht aber auf die Integrität und Authentizität der Nachrichten.
Zusätzliche Sicherheitsmaßnahmen gegen aktive Angriffe:
- Authentifizierung: Beide Kommunikationsparteien müssen sicherstellen können, dass sie tatsächlich miteinander kommunizieren. Dies kann durch den Einsatz von Mechanismen wie digitalen Signaturen oder zertifikatsbasierter Authentifizierung erreicht werden.
- Digitale Signaturen: Nachrichten können mit einer digitalen Signatur versehen werden, die sicherstellt, dass die Nachricht tatsächlich vom angegebenen Absender stammt und nicht verändert wurde.
- Zertifikatsbasierte Authentifizierung: Mithilfe von Zertifikaten können die Identitäten der Kommunikationspartner überprüft werden, z.B. im SSL/TLS-Protokoll.
- Integrität: Sicherstellen, dass Nachrichten nicht während der Übertragung verändert wurden. Dies kann durch die Verwendung kryptographischer Hash-Funktionen und Message Authentication Codes (MACs) erreicht werden.
- Hash-Funktionen: Erzeugen eine eindeutige Prüfsumme der Nachricht, die im Chiffrat enthalten sein kann, um Änderungen zu erkennen.
- Message Authentication Codes (MACs): Ein MAC wird zusätzlich zur Nachricht gesendet und ermöglicht es dem Empfänger, die Authentizität und Integrität der Nachricht zu überprüfen.
- Vertraulichkeit und Integrität zusammen (GCM-Modus): Moderne Verschlüsselungsverfahren wie der Galois/Counter Mode (GCM) kombinieren Verschlüsselung (Vertraulichkeit) und Authentifizierung (Integrität).
- Schlüsselvereinbarungsprotokolle (Key Exchange): Die Verwendung sicherer Schlüsselvereinbarungsprotokolle wie Diffie-Hellman kann helfen, sicherzustellen, dass Schlüssel direkt zwischen legitimen Parteien ausgetauscht werden, ohne dass ein MITM-Angreifer sie abfangen oder manipulieren kann.
Zusammenfassend: Während semantische Sicherheit ein Muss für den Schutz vor passiven Angriffen darstellt, sind zusätzliche Sicherheitsmaßnahmen wie Authentifizierung, Integritätsschutz und sichere Schlüsselvereinbarungsprotokolle notwendig, um auch gegen aktive Angriffe wie Man-in-the-Middle geschützt zu sein.
d)
Betrachte ein neues kryptographisches Protokoll, bei dem die Sicherheit durch Reduktionsbeweise gezeigt werden soll. Erkläre, was Reduktionsbeweise sind und führe einen hypothetischen Reduktionsbeweis für die semantische Sicherheit dieses Protokolls durch.
Lösung:
Reduktionsbeweise sind eine methodische Vorgehensweise in der Kryptographie, bei der die Sicherheit eines kryptographischen Protokolls durch die Reduktion auf ein anderes bekanntes und als sicher angesehenes Problem bewiesen wird. Das bedeutet, man zeigt, dass ein effizienter Angriff auf das betrachtete Protokoll verwendet werden könnte, um ein schwierigeres Problem zu lösen. Wenn das schwierigere Problem als sicher gilt, folgt daraus, dass auch das betrachtete Protokoll sicher ist.
Grundprinzipien von Reduktionsbeweisen:
- Verifikation: Man zeigt, dass jeder Angriff auf das neue Protokoll verwendet werden könnte, um ein Problem zu lösen, das allgemein als schwierig gilt (z.B. das Faktorisierungsproblem oder das Diskrete-Logarithmus-Problem).
- Widerspruchsbeweis: Wenn wir annehmen, dass ein effizienter Angriff auf das Protokoll existiert, könnten wir diesen verwenden, um das schwerere Problem in polynomialer Zeit zu lösen. Da dies einen Widerspruch zu den Annahmen über die Schwierigkeit des Problems darstellt, muss das Protokoll sicher sein.
Hypothetischer Reduktionsbeweis für die semantische Sicherheit:
Betrachten wir ein hypothetisches kryptographisches Protokoll für die Verschlüsselung, das auf dem Faktorisierungsproblem basiert. Wir wollen zeigen, dass dieses Protokoll semantisch sicher ist, indem wir einen Reduktionsbeweis führen.
Schritt 1: Definition des Problems Wir definieren zuerst das schwierige Problem, auf das wir reduzieren. In diesem Fall ist es das Faktorisierungsproblem:
- Faktorisierungsproblem: Gegeben eine komposite Zahl N, die das Produkt zweier großer Primzahlen ist, soll man N in seine Primfaktoren zerlegen. Dieses Problem gilt als schwer, insbesondere bei großen Zahlen.
Schritt 2: Annahme eines Angreifers Nehmen wir an, es gibt einen effizienten Angreifer A, der das Verschlüsselungsschema unseres Protokolls brechen kann. Das bedeutet, dass A bei Vorlage zweier Klartexte m0 und m1 und eines Chiffrats C unterscheiden kann, welcher Klartext zu C gehört (d.h. A kann entscheiden, ob C die Verschlüsselung von m0 oder m1 ist).
Schritt 3: Aufbau des Reduktionsbeweises Wir bauen eine Turingmaschine T, die das Faktorisierungsproblem löst, indem sie den Angreifer A aufruft.
- T erhält als Eingabe eine komposite Zahl N, die das Produkt zweier unbekannter großer Primzahlen p und q ist.
- T wählt zwei zufällige Klartexte m0 und m1 und verschlüsselt diese unter einem zufälligen Schlüssel k, um das Chiffrat C zu erzeugen.
- T gibt m0, m1 und C an den Angreifer A weiter.
- Falls A richtig erkennt, ob C die Verschlüsselung von m0 oder m1 ist, erzielt T einen Widerspruch zur Annahme, dass das Faktorisierungsproblem schwer ist.
Schritt 4: Schlussfolgerung Wenn A das Protokoll effizient brechen könnte, könnte auch T das Faktorisierungsproblem effizient lösen. Da das Faktorisierungsproblem als schwer gilt, folgt daraus, dass ein effizienter Angreifer A nicht existieren kann. Daher ist das Protokoll semantisch sicher.
Durch diesen Reduktionsbeweis haben wir gezeigt, dass die semantische Sicherheit des Verschlüsselungsschemas auf die Schwierigkeit eines bekannten harten Problems reduziert werden kann.
Aufgabe 3)
Blockchiffren (z.B., DES, AES)Symmetrische Verschlüsselungsverfahren, die Daten in Blöcken fester Länge verschlüsseln.
- DES (Data Encryption Standard): Blockgröße 64 Bit, Schlüsselgröße 56 Bit
- AES (Advanced Encryption Standard): Blockgröße 128 Bit, Schlüsselgrößen: 128, 192 oder 256 Bit
- Arbeitsweise: Klartext wird in Blöcke unterteilt, jeder Block separat verschlüsselt
- Struktur: Häufig Feistelnetzwerke oder Substitutions-Permutations-Netzwerke
- Sicherheit: Abhängig von Schlüsselgröße und Algorithmenkomplexität
- Betriebsmodi: ECB, CBC, CFB, OFB, CTR
a)
Erkläre den Unterschied zwischen einem Feistelnetzwerk und einem Substitutions-Permutations-Netzwerk im Kontext von Blockchiffren. Gib für jede Netzwerktopologie ein Beispiel eines bekannten Blockchiffren-Algorithmus an.
Lösung:
Unterschied zwischen einem Feistelnetzwerk und einem Substitutions-Permutations-Netzwerk im Kontext von Blockchiffren
- Feistelnetzwerk:
- Struktur: Ein Feistelnetzwerk besteht aus mehreren Runden, in denen der Klartextblock in zwei Hälften aufgeteilt und diese Hälften anschließend verarbeitet werden. In jeder Runde wird eine Hälfte des Blocks unter Verwendung einer Rundenfunktion (die vom Schlüssel abhängt) transformiert und mit der anderen Hälfte XOR-verknüpft. Danach werden die Hälften getauscht.
- Eigenschaften: Diese Struktur ermöglicht es, dass die Verschlüsselung und Entschlüsselung im Wesentlichen denselben Algorithmus nutzen, was die Implementierung vereinfacht.
- Beispiel: Der DES-Algorithmus (Data Encryption Standard) ist ein bekanntes Beispiel für eine Blockchiffre, die ein Feistelnetzwerk verwendet. Dabei ist die Blockgröße 64 Bit und die Schlüsselgröße 56 Bit.
- Substitutions-Permutations-Netzwerk (SPN):
- Struktur: Ein SPN besteht aus einer Reihe von Schichten, wobei jeder Schicht entweder eine Substitutions- oder eine Permutationsoperation ausführt. Substitutionsschichten verwenden feste oder schlüsselabhängige S-Boxen, um Teile des Blocks zu ersetzen, während Permutationsschichten die Bits des Blocks neu anordnen.
- Eigenschaften: Substitutions- und Permutationsschichten sorgen für Verwirrung (confusion) und Diffusion (diffusion), die wesentliche Konzepte für die Sicherheit von Chiffren sind. Die klare Trennung der Schichten ermöglicht eine präzise Analyse der Sicherheitseigenschaften der Blockchiffre.
- Beispiel: Der AES-Algorithmus (Advanced Encryption Standard) ist ein prominentes Beispiel für eine Blockchiffre, die ein Substitutions-Permutations-Netzwerk verwendet. AES unterstützt Blockgrößen von 128 Bit und Schlüsselgrößen von 128, 192 oder 256 Bit.
Zusammenfassung:- Feistelnetzwerk: Teile den Block in Hälften, transformiere und xor-eine Hälfte, dann tausche die Hälften.
- Beispiel: DES
- Substitutions-Permutations-Netzwerk: Verwende Substitutionen und Permutationen in separaten Schichten.
- Beispiel: AES
b)
Angenommen, ein Klartext der Länge 256 Bit wird mit einem DES-Algorithmus im ECB-Modus verschlüsselt. Zeige detailliert, wie der Verschlüsselungsprozess in Blöcken abläuft. Gehe dabei auf mögliche Sicherheitsprobleme bei der Verwendung des ECB-Modus ein.
Lösung:
Verschlüsselung eines Klartextes der Länge 256 Bit mit DES im ECB-ModusZur Erinnerung: DES (Data Encryption Standard) verwendet eine Blockgröße von 64 Bit und eine Schlüsselgröße von 56 Bit.Schritt-für-Schritt-Verschlüsselungsprozess:
- 1. Klartext in Blöcke aufteilen: Ein Klartext der Länge 256 Bit wird in vier Blöcke á 64 Bit aufgeteilt.
- Block 1: die ersten 64 Bit
- Block 2: die zweiten 64 Bit
- Block 3: die dritten 64 Bit
- Block 4: die vierten 64 Bit
- 2. Verschlüsselung der einzelnen Blöcke: Jeder der vier 64-Bit-Blöcke wird separat mit dem DES-Algorithmus und demselben Schlüssel verschlüsselt.
- Verschlüsselter Block 1:
DES(Block 1, Schlüssel)
- Verschlüsselter Block 2:
DES(Block 2, Schlüssel)
- Verschlüsselter Block 3:
DES(Block 3, Schlüssel)
- Verschlüsselter Block 4:
DES(Block 4, Schlüssel)
- 3. Zusammenfügen der verschlüsselten Blöcke: Die verschlüsselten 64-Bit-Blöcke werden zu einem 256-Bit-Chiffretext zusammengefügt.
Mögliche Sicherheitsprobleme bei der Verwendung des ECB-Modus:- 1. Eindeutigkeit von Klartextblöcken: Da die Verschlüsselung im ECB-Modus blockweise unabhängig voneinander erfolgt, wird jeder identische Klartextblock zu einem identischen Ciphertextblock verschlüsselt. Dies führt zu Mustern im Chiffretext, die Rückschlüsse auf den Klartext zulassen können.
- 2. Wiederholung im Chiffretext: Wenn sich Teile des Klartextes wiederholen, wiederholen sich auch die entsprechenden Teile im Chiffretext. Diese Wiederholungen könnten von einem Angreifer erkannt und ausgenutzt werden.
- 3. Bekannte Angriffsszenarien: ECB ist besonders anfällig für Blockwiederholungsangriffe. Ein Angreifer kann bekannte Blockmuster im Chiffretext erkennen und Rückschlüsse auf den Klartext ziehen.
Zusammenfassung:Die Verwendung des ECB-Modus für die Verschlüsselung größerer Datenmengen ist unsicher, da sich gleiche Klartextblöcke in gleiche Chiffretextblöcke umwandeln. Dies kann dazu führen, dass Muster im Klartext im Chiffretext sichtbar bleiben, was die Datensicherheit gefährdet. Alternativen wie CBC (Cipher Block Chaining) oder CTR (Counter Mode) bieten eine höhere Sicherheit, da sie die Verschlüsselung jedes Blocks von anderen Faktoren als nur dem Schlüssel und dem Klartextblock abhängig machen.c)
Berechne die Anzahl der möglichen Schlüssel für den AES-Algorithmus bei einer Schlüsselgröße von 256 Bit. Diskutiere die Sicherheitsvorteile einer größeren Schlüsselgröße gegenüber einer kleineren Schlüsselgröße im Kontext der Kryptoanalyse.
Lösung:
Anzahl der möglichen Schlüssel für den AES-Algorithmus bei einer Schlüsselgröße von 256 BitDie Anzahl der möglichen Schlüssel bei einer Schlüsselgröße von 256 Bit berechnet sich, indem man die Anzahl der möglichen Zustände jedes Bits multipliziert. Da jedes Bit zwei Zustände (0 oder 1) haben kann, ergibt sich für 256 Bits die folgende Berechnung:
- Ein Bit hat 2 mögliche Zustände.
- Bei 256 Bits gibt es somit \(2^{256}\) mögliche Schlüssel.
2^{256} = 115,792,089,237,316,195,423,570,985,008,687,907,853,269,984,665,640,564,039,457,584,007,913,129,639,936
Das ist eine unglaublich große Zahl, die in etwa 1,16 x 10^{77} entspricht.
Sicherheitsvorteile einer größeren SchlüsselgrößeEine größere Schlüsselgröße bietet bedeutende Sicherheitsvorteile, insbesondere im Kontext der Kryptoanalyse:
- 1. Erhöhte Resistenz gegenüber Brute-Force-Angriffen:Die exponentiell zunehmende Anzahl der möglichen Schlüssel macht Brute-Force-Angriffe praktisch unmöglich. Bei einer 256-Bit-Schlüsselgröße ist die Anzahl der Kombinationen so hoch, dass selbst die schnellsten Computer Jahrmilliarden benötigen würden, um alle Möglichkeiten zu durchforsten.
- Zum Vergleich: Bei einer 128-Bit-Schlüsselgröße gibt es \(2^{128} \), was in etwa 3,4 x 10^{38} möglichen Schlüsseln entspricht.
- Bei 256 Bit gibt es \(2^{256}\) mögliche Schlüssel, was etwa 1,16 x 10^{77} Schlüssel entspricht.
- 2. Schutz gegen zukünftige technologische Fortschritte:Ein größerer Schlüssel bietet auch Schutz gegen zukünftige technologische Fortschritte, wie Quantencomputer. Selbst wenn diese in der Lage wären, symmetrische Schlüssel effizienter zu brechen, würde eine Schlüsselgröße von 256 Bit nach gegenwärtigen Kenntnissen immer noch einen ausreichenden Schutz bieten.
- 3. Spielraum für Implementierungsfehler:Eine größere Schlüsselgröße bietet mehr Sicherheitspuffer für eventuelle Implementierungsfehler oder Schwächen im Schlüsselgenerierungsprozess. Ein hochwertiges Verschlüsselungssystem erfordert, dass der Schlüssel zufällig und gut verteilt ist. Falls hier Schwächen auftreten, bietet ein größerer Schlüsselraum mehr Sicherheit.
Zusammenfassung:Eine größere Schlüsselgröße, wie sie bei AES-256 verwendet wird, bietet signifikante Sicherheitsvorteile gegenüber kleineren Schlüsselgrößen. Sie erhöht die Widerstandsfähigkeit gegen Brute-Force-Angriffe und künftige technologische Fortschritte wie Quantencomputer. Zudem liefert sie zusätzliche Sicherheitspuffer gegen potenzielle Implementierungsfehler. Die Anzahl der möglichen Schlüssel bei einer 256-Bit-Schlüsselgröße ist so enorm, dass sie praktisch uneinnehmbar ist.
Aufgabe 4)
Der RSA-Algorithmus ist ein asymmetrisches Kryptosystem, das zur sicheren Datenübertragung verwendet wird. Es basiert auf der Konstruktion von zwei Schlüsseln: einem öffentlichen und einem privaten Schlüssel. Die Schlüsselerzeugung erfolgt durch die Wahl von zwei großen Primzahlen p und q, das Berechnen ihres Produkts n und \(\phi(n) = (p-1)(q-1)\). Ein Wert e wird gewählt, sodass 1 < e < \(\phi(n)\) und ggT(e, \phi(n)) = 1. Der Wert d wird so bestimmt, dass ed ≡ 1 (mod \(\phi(n)\)). Verschlüsselung und Entschlüsselung erfolgen mittels der Formeln: \(c = m^e \mod n\) und \(m = c^d \mod n\). Die Sicherheit des RSA-Algorithmus beruht auf dem Faktorisierungsproblem großer Zahlen sowie der Schlüssellänge (typischerweise 2048+ Bit) als Sicherheitsfaktoren. Dennoch existieren Angriffe, wie die Faktorisierung durch Quantencomputer mittels des Shor-Algorithmus.
a)
Gegeben seien die Primzahlen p = 61 und q = 53. Berechne alle nötigen Werte zur Schlüsselerzeugung für das RSA-Kryptosystem und gib sowohl den öffentlichen als auch den privaten Schlüssel an.
Lösung:
RSA-Schlüsselerzeugung
Um die notwendigen Werte zur Schlüsselerzeugung für das RSA-Kryptosystem zu berechnen, müssen wir die folgenden Schritte durchführen:
- Primzahlen wählen: Gegeben sind die Primzahlen: p = 61 q = 53
- Produkt der Primzahlen berechnen: n = p \times q n = 61 \times 53 n = 3233
- Euler'sche Phi-Funktion berechnen: \(\phi(n) = (p-1)(q-1) \) \(\phi(n) = (61-1)(53-1) = 60 \times 52 = 3120 \)
- Wert e wählen: e muss größer als 1 und kleiner als \(\phi(n)\) sein, und ggT(e, \(\phi(n)\)) = 1. Ein gebräuchlicher Wert für e ist 65537, aber wir werden hier e = 17 verwenden, da es den Bedingungen entspricht. e = 17
- Wert d berechnen: d muss so gewählt werden, dass \( ed \equiv 1 \mod \phi(n) \). Wir müssen das multiplikative Inverse von e modulo \(\phi(n)\) bestimmen. Das bedeutet, d muss die Gleichung d \times 17 \equiv 1 \mod \phi(3120) erfüllen. Durch den Erweiterten Euklidischen Algorithmus finden wir d = 2753.
Schlüssel:
- Öffentlicher Schlüssel (e, n): (17, 3233)
- Privater Schlüssel (d, n): (2753, 3233)
Damit haben wir die notwendigen Werte zur Schlüsselerzeugung für das RSA-Kryptosystem berechnet.
b)
Gegeben sei die Nachricht m = 42. Verschlüssele die Nachricht unter Verwendung des öffentlichen Schlüssels, der im ersten Teil berechnet wurde.
Lösung:
RSA-Verschlüsselung einer Nachricht
Um die Nachricht m = 42 zu verschlüsseln, verwenden wir den zuvor berechneten öffentlichen Schlüssel (e, n) = (17, 3233). Die Verschlüsselung erfolgt nach der Formel:
Damit ist die verschlüsselte Nachricht c = 2696.
c)
Entschlüssele die im zweiten Teil erhaltene chiffrierte Nachricht wieder, indem Du den privaten Schlüssel aus der ersten Teilaufgabe verwendest. Zeige alle Zwischenschritte der Berechnungen auf.
Lösung:
RSA-Entschlüsselung einer Nachricht
Um die im zweiten Teil erhaltene chiffrierte Nachricht c = 2696 zu entschlüsseln, verwenden wir den zuvor berechneten privaten Schlüssel (d, n) = (2753, 3233). Die Entschlüsselung erfolgt nach der Formel:
- Formel für die Entschlüsselung:\(m = c^d \mod n\)
- Anwendung der Werte:c = 2696d = 2753n = 3233
Nachfolgend zeigen wir die detaillierte Berechnung:
- Potenzen berechnen: Um \(2696^{2753} \mod 3233\) zu berechnen, verwenden wir die Exponentiation durch Quadrieren und Modulo, auch bekannt als „Square and Multiply“-Algorithmus:
1 -> 2753 in binär: 10101100001 (binär) 2 -> Start mit 1 (wegen Basisfall) 3 -> Gehe von MSB zu LSB (höchstes bis niedrigstes Bit): Ergebnis = 2696 Ergebnis = (Ergebnis^2) % 3233 (- wenn Bit = 1, multipliziere mit der Basis „2696“ und nimm das Modulo) Schritte: Schritt 1: Ergebnis = 2696 Schritt 2: Ergebnis = (2696^2) % 3233 = 13 -> Bit ist 0 Schritt 3: Ergebnis = (13^2) % 3233 = 169 -> Bit ist 1, daher Ergebnis = (169 * 2696) % 3233 = 2032 Schritt 4: Ergebnis = (2032^2) % 3233 = 2704 -> Bit ist 0 Schritt 5: Ergebnis = (2704^2) % 3233 = 3173 -> Bit ist 0 Schritt 6: Ergebnis = (3173^2) % 3233 = 367 -> Bit ist 1, daher Ergebnis = (367 * 2696) % 3233 = 239 Schritt 7: Ergebnis = (239^2) % 3233 = 717 -> Bit ist 0 Schritt 8: Ergebnis = (717^2) % 3233 = 2696 -> Bit ist 1, daher Ergebnis = (2696 * 2696) % 3233 = 13
Nach Durchführung aller Schritte:
Die entschlüsselte Nachricht lautet: m = 42