Cryptographic Communication Protocols - Exam
Aufgabe 1)
Betrachte eine Kommunikationssituation, in der zwei Parteien, Alice und Bob, sicher Nachrichten austauschen möchten. Alice möchte Bob eine Nachricht senden, die nur Bob lesen kann. Außerdem möchte Alice sicherstellen, dass die erhaltene Nachricht von Bob stammt und auf dem Weg nicht verändert wurde. Verwende die Grundprinzipien der Verschlüsselung und Entschlüsselung samt Integrität und Authentizität in Deiner Antwort.
a)
a) Erkläre, wie Alice und Bob mithilfe eines symmetrischen Verschlüsselungsverfahrens sicher kommunizieren können. Gehe dabei auf die Schlüsselverteilung und die Sicherstellung der Datenintegrität ein.
Lösung:
Um sicherzustellen, dass Alice und Bob sicher kommunizieren können, indem sie ein symmetrisches Verschlüsselungsverfahren verwenden, müssen sie mehrere wichtige Schritte durchführen, darunter die Schlüsselverteilung und die Sicherstellung der Datenintegrität. Hier sind die einzelnen Schritte im Detail:
- Symmetrisches Verschlüsselungsverfahren: In einem symmetrischen Verschlüsselungsverfahren verwenden sowohl Alice als auch Bob denselben geheimen Schlüssel zur Verschlüsselung und Entschlüsselung der Nachrichten. Ein beliebtes symmetrisches Verschlüsselungsverfahren ist AES (Advanced Encryption Standard).
- Schlüsselverteilung: Da beide Parteien denselben Schlüssel benötigen, stellt die sichere Verteilung des Schlüssels eine Herausforderung dar. Es gibt verschiedene Ansätze, um dies zu erreichen:
- Persönliche Übergabe: Alice und Bob treffen sich persönlich und tauschen den Schlüssel sicher aus.
- Verwendung eines sicheren Kommunikationskanals: Falls Alice und Bob bereits über einen sicheren, authentifizierten Kanal kommunizieren können, senden sie den Schlüssel über diesen Kanal.
- Schlüsselverteilungszentralen (KDCs): Eines der am häufigsten verwendeten Modelle dafür ist das **Kerberos**-Protokoll, bei dem ein vertrauenswürdiger Dritter (der Key Distribution Center) den Schlüssel übermittelt.
- Sicherstellung der Datenintegrität: Um sicherzustellen, dass die Nachricht während der Übertragung nicht manipuliert wurde, können Alice und Bob kryptographische Hash-Funktionen verwenden. Hier sind die Schritte:
- Erstellung eines Hash-Werts: Alice erstellt zuerst einen Hash-Wert der Nachricht mithilfe einer sicheren Hash-Funktion wie SHA-256.
- Versand der Nachricht und des Hash-Werts: Alice verschlüsselt die Nachricht zusammen mit dem Hash-Wert mithilfe des geheimen Schlüssels und sendet das verschlüsselte Paket an Bob.
- Überprüfung des Hash-Werts: Nachdem Bob die verschlüsselte Nachricht entschlüsselt hat, berechnet er den Hash-Wert der entschlüsselten Nachricht erneut und vergleicht ihn mit dem beigefügten Hash-Wert. Stimmen die beiden Hash-Werte überein, wurde die Nachricht nicht manipuliert.
- Sicherstellung der Authentizität: Um sicher zu sein, dass die Nachricht wirklich von Bob stammt, können Alice und Bob einen Message Authentication Code (MAC) verwenden.
- Erstellung eines MACs: Alice erstellt einen MAC, indem sie die Nachricht und den geheimen Schlüssel als Eingabe für eine MAC-generierende Funktion (z.B. HMAC-SHA256) verwendet.
- Versand des MACs mit der Nachricht: Alice schickt die Nachricht zusammen mit dem MAC an Bob.
- Verifikation des MACs: Bob berechnet den MAC der empfangenen Nachricht erneut und vergleicht ihn mit dem erhaltenen MAC. Stimmt der Wert überein, kann Bob davon ausgehen, dass die Nachricht authentisch ist und von Alice stammt.
b)
b) Angenommen, Alice und Bob entscheiden sich, stattdessen ein asymmetrisches Verschlüsselungsverfahren zu nutzen. Beschreibe detailliert, wie der Austausch der Nachricht und die Gewährleistung der Authentizität und Integrität erfolgen. Nutze dabei mathematische Notationen und Funktionen, um den Ablauf zu erklären, und gehe auf die Verwendung von öffentlichem und privatem Schlüssel ein.
Lösung:
Wenn Alice und Bob ein asymmetrisches Verschlüsselungsverfahren verwenden, können sie mithilfe öffentlicher und privater Schlüssel ihre Nachrichten sicher austauschen und Authentizität sowie Integrität gewährleisten. Der Prozess umfasst folgende Schritte:
- Grundprinzipien: Asymmetrische Verschlüsselungsverfahren basieren auf einem Schlüsselpaar bestehend aus einem öffentlichen Schlüssel (Public Key) und einem privaten Schlüssel (Private Key). Der öffentliche Schlüssel wird veröffentlicht, der private Schlüssel bleibt geheim.
- Schlüsselaustausch: Alice und Bob teilen gegenseitig ihre öffentlichen Schlüssel mit. Diese können über ein öffentliches Verzeichnis oder einen sicheren Kanal ausgetauscht werden. Die entsprechenden Schlüssel sind: Öffentlicher Schlüssel von Alice: \( \text{Pub}_A \) Öffentlicher Schlüssel von Bob: \( \text{Pub}_B \)
- Nachrichtenaustausch: Alice möchte Bob eine Nachricht \( M \) senden. Der Prozess kann in zwei Hauptteile unterteilt werden: Verschlüsselung und Signatur.
- Verschlüsselung: Alice verschlüsselt die Nachricht \( M \) mit Bobs öffentlichem Schlüssel \( \text{Pub}_B \), sodass nur Bob sie mit seinem privaten Schlüssel \( \text{Priv}_B \) entschlüsseln kann:
C = \text{Encrypt}(\text{Pub}_B, M)
Erstellung der digitalen Signatur: Alice erstellt eine Signatur, um sicherzustellen, dass die Nachricht tatsächlich von ihr stammt und unterwegs nicht verändert wurde. Dazu berechnet sie einen Hash-Wert \( H(M) \) der Nachricht \( M \) und signiert diesen mit ihrem privaten Schlüssel \( \text{Priv}_A \): S = \text{Sign}(\text{Priv}_A, H(M))
Senden der Nachricht: Alice sendet das verschlüsselte Nachrichtenciphertext \( C \) und die Signatur \( S \) an Bob.- Empfang der Nachricht: Bob erhält das verschlüsselte Nachrichtenciphertext \( C \) und die Signatur \( S \).
- Entschlüsselung der Nachricht: Bob entschlüsselt \( C \) mit seinem privaten Schlüssel \( \text{Priv}_B \), um die Nachricht \( M \) zu erhalten:
M = \text{Decrypt}(\text{Priv}_B, C)
Verifikation der Signatur: Um sicherzustellen, dass die Nachricht authentisch ist und nicht verändert wurde, berechnet Bob den Hash-Wert \( H(M) \) der entschlüsselten Nachricht \( M \) und prüft die Signatur \( S \) mit Alices öffentlichem Schlüssel \( \text{Pub}_A \): \text{Verified} = \text{Verify}(\text{Pub}_A, S, H(M))
Wenn die Verifikation erfolgreich ist (\( \text{Verified} = \text{true} \)), bedeutet dies, dass die Nachricht von Alice stammt und während der Übertragung nicht verändert wurde.Zusammenfassend hat dieser Prozess mithilfe asymmetrischer Verschlüsselung und digitaler Signatur sichergestellt, dass:
- Nur Bob die Nachricht lesen kann (Vertraulichkeit).
- Die Nachricht tatsächlich von Alice stammt (Authentizität).
- Die Nachricht auf dem Weg nicht verändert wurde (Integrität).
Aufgabe 2)
Symmetrische Verschlüsselungsverfahren: DES, AESSymmetrische Verschlüsselungsverfahren verwenden denselben Schlüssel für die Ver- und Entschlüsselung.
- DES (Data Encryption Standard): Blockchiffre, 56-Bit-Schlüssel, ersetzt durch AES aufgrund von Sicherheitslücken.
- Triple DES: Erweiterung von DES, dreifache Anwendung von DES zur Erhöhung der Sicherheit.
- AES (Advanced Encryption Standard): Blockchiffre, unterstützt Schlüsselgrößen von 128, 192 und 256 Bit, deutlich sicherer und effizienter als DES.
- AES basiert auf Rijndael-Algorithmus.
- Blockgröße AES: 128 Bit
- Sicherheitsniveau: AES >> DES
- Verwendung: Weit verbreitet in modernen Kommunikationsprotokollen und Sicherheitsanwendungen.
- Mathematische Grundlage: Substitutions-Permutations-Netzwerk
a)
Erläutere die Hauptunterschiede zwischen DES und AES hinsichtlich der Sicherheit und Effizienz. Beziehe dabei folgende Punkte in Deine Antwort ein:
- Schlüssellänge und Blockgröße
- Bekannte Sicherheitslücken
- Mathematische Grundlagen
Lösung:
Die Hauptunterschiede zwischen DES und AES hinsichtlich der Sicherheit und Effizienz lassen sich wie folgt zusammenfassen:
- Schlüssellänge und Blockgröße:• DES: Verwendet eine Schlüssellänge von 56 Bit und eine Blockgröße von 64 Bit.• AES: Unterstützt Schlüssellängen von 128, 192 und 256 Bit und hat eine feste Blockgröße von 128 Bit. Die größere Schlüssellänge bietet eine wesentlich höhere Sicherheit gegen Brute-Force-Angriffe.
- Bekannte Sicherheitslücken:• DES: Hat zahlreiche bekannte Sicherheitslücken, einschließlich Schwächen gegenüber Brute-Force-Angriffen aufgrund der vergleichsweise kurzen Schlüssellänge. Auch trifft man auf verschiedene kryptanalytische Angriffe, wie z.B. die lineare und differentielle Kryptoanalyse.• AES: Gilt als deutlich sicherer und hat keine bekannten praktikablen Angriffe, die es innerhalb einer realistisch umsetzbaren Zeitspanne brechen könnten. AES ist gegen die meisten bekannten Angriffe, einschließlich der linearen und differentiellen Kryptoanalyse, widerstandsfähig.
- Mathematische Grundlagen:• DES: Basierend auf Feistel-Strukturen, die eine wiederholte Anwendung einer einfachen Funktion aufteilen.• AES: Verwendet ein sogenanntes Substitutions-Permutations-Netzwerk, das eine Kombination von Substitutionsboxen (S-Boxen) und Permutation (P-Boxen) verwendet. Dies ermöglicht eine stärkere Verwirrung und Diffusion der Daten, was zur Erhöhung der kryptographischen Sicherheit beiträgt.
Insgesamt bietet AES eine weitaus höhere Sicherheit und Effizienz im Vergleich zu DES, und wird daher bevorzugt in modernen Kommunikationsprotokollen und Sicherheitsanwendungen verwendet.
b)
Die Triple-DES (3DES) Methode wurde entwickelt, um die Sicherheit von DES zu verbessern. Beschreibe, wie Triple-DES funktioniert und erkläre mathematisch, warum diese Methode die Sicherheit im Vergleich zu einfachem DES erhöht. Dabei sollst Du auch die Formel für die Schlüssellänge von Triple-DES angeben.
Lösung:
Die Triple-DES (3DES) Methode wurde entwickelt, um die Sicherheit von DES zu verbessern. Hier ist eine detaillierte Erklärung, wie Triple-DES funktioniert und warum diese Methode die Sicherheit im Vergleich zu einfachem DES erhöht:
- Funktionsweise von Triple-DES:Triple-DES verwendet den DES-Algorithmus dreimal hintereinander mit entweder zwei oder drei verschiedenen Schlüsseln. Der Prozess erfolgt in drei Schritten: • Erster Schritt: Der Datenblock wird mit dem ersten Schlüssel (K1) verschlüsselt: \ E_{K1}(P). • Zweiter Schritt: Das Ergebnis wird mit dem zweiten Schlüssel (K2) entschlüsselt: \ D_{K2}(E_{K1}(P)). • Dritter Schritt: Schließlich wird das Zwischenergebnis mit dem dritten Schlüssel (K3) erneut verschlüsselt: \ E_{K3}(D_{K2}(E_{K1}(P))).Das Verfahren kann formelhaft dargestellt werden als:
C = E_{K3}(D_{K2}(E_{K1}(P))) \ \text{(bei Verwendung von drei verschiedenen Schlüsseln)} oder C = E_{K1}(D_{K2}(E_{K1}(P))) \ \text{(bei Verwendung von zwei Schlüsseln, wobei } K1 = K3)
wobei \( E_{Ki}(*) \) die DES-Verschlüsselung mit dem Schlüssel \( Ki \) und \( D_{Ki}(*) \) die DES-Entschlüsselung mit dem Schlüssel \( Ki \) bezeichnet. \( P \) ist der Klartext und \( C \) der Chiffretext. - Erhöhung der Sicherheit:• Längere effektive Schlüssellänge: Die effektive Schlüssellänge bei Triple-DES beträgt 168 Bit (3 * 56 Bit) bei Verwendung von drei verschiedenen Schlüsseln. Bei Verwendung von zwei Schlüsseln reduziert sich diese auf effektiv 112 Bit. Die Formel für die Schlüssellänge von Triple-DES lautet:
\text{Triple-DES Schlüssellänge} = 3 \times 56 = 168 \text{ Bit}
Bei Verwendung von nur zwei verschiedenen Schlüsseln beträgt die effektive Schlüssellänge 112 Bit: \text{Triple-DES Schlüssellänge mit zwei Schlüsseln} = 2 \times 56 = 112 \text{ Bit}
- Schutz vor bestimmten Angriffen:• Schutz vor Meet-in-the-Middle-Angriff: Der Meet-in-the-Middle-Angriff ist ein Angriff, bei dem ein Angreifer sowohl Verschlüsselungs- als auch Entschlüsselungsoperationen parallel durchführt, um die effektive Sicherheit zu verringern. Bei einfachem DES würde der Angreifer \( 2^{56} \) Versuche benötigen. Triple-DES macht diesen Angriff erheblich schwieriger, da der Angreifer \( 2^{112} \) Versuche benötigen würde, was praktisch nicht durchführbar ist.
Zusammenfassend lässt sich sagen, dass 3DES die Sicherheit im Vergleich zu einfachem DES erheblich verbessert. Dies wird durch die Verwendung eines dreifachen Verschlüsselungsverfahrens und die Einführung einer längeren effektiven Schlüssellänge erreicht, wodurch es gegen viele bekannte Angriffe widerstandsfähiger ist.
Aufgabe 3)
Asymmetrische Verschlüsselungsverfahren: RSA, ECCAsymmetrische Verschlüsselungsverfahren verwenden ein Schlüsselpaar (privater und öffentlicher Schlüssel) für Verschlüsselung und Entschlüsselung.
- RSA: basiert auf der Faktorisierung großer Zahlen. Schlüsselgenerierung beinhaltet Primfaktorzerlegung.
- Öffentlicher Schlüssel: \(e, n\) wobei \(n = pq\).
- Privater Schlüssel: \(d\) wobei \(ed \equiv 1 \pmod{(p-1)(q-1)}\).
- Verschlüsselung: \(c \equiv m^e \pmod{n}\).
- Entschlüsselung: \(m \equiv c^d \pmod{n}\).
- ECC: basiert auf elliptischen Kurven über endlichen Körpern.
- Nutzung einer Punktaddition auf der Kurve zur Schlüsselgenerierung.
- Kleinerer Schlüsselgrößen bieten ähnliche Sicherheit wie größere Schlüssel in nicht-elliptischen Verfahren.
- Öffentlicher Schlüssel: Punkt \text{QA}\ auf der Kurve.
- Privater Schlüssel: Zufällige Ganzzahl \text{dA}\.
- Verschlüsselung/Entschlüsselung erfolgt durch Punktoperationen: \text{QA} = \text{dA} \times \text{G}\ (G: Basispunkt)
b)
Alice möchte Bob die Nachricht \( m = 88 \) senden. Verwenden Sie den in der vorherigen Teilaufgabe berechneten öffentlichen Schlüssel, um die Nachricht zu verschlüsseln. Berechnen Sie das Chiffrat \( c \).
Lösung:
- Schritte zur Verschlüsselung der Nachricht:
- 1. Verwendeter öffentlicher Schlüssel:Aus der vorherigen Aufgabe wissen wir, dass der öffentliche Schlüssel von Alice ist:
- 2. Nachricht m:Die Nachricht, die Alice verschlüsseln möchte, ist \(m = 88\).
- 3. Berechnung des Chiffrats c:Die Verschlüsselung erfolgt nach der Formel:
- \(c \equiv m^e \pmod{n}\)
Setzen wir die Werte ein:- \(c \equiv 88^7 \pmod{187}\)
- 4. Berechnung von 88^7:Zur Vereinfachung und zur Vermeidung großer Zahlen berechnen wir dies Schritt für Schritt unter Anwendung des Modulo-Betrags:
- \(88^2 \equiv 7744 \pmod{187}\)
- \(7744 \mod 187 = 87\)
- \(88^4 \equiv (88^2)^2 \equiv 87^2 \equiv 7569 \pmod{187}\)
- \(7569 \mod 187 = 88\)
- \(88^6 \equiv (88^4) \times (88^2) \equiv 88 \times 87 \equiv 7656 \pmod{187}\)
- \(7656 \mod 187 = 179\)
- \(88^7 \equiv 88^6 \times 88 \equiv 179 \times 88 \equiv 15752 \pmod{187}\)
- \(15752 \mod 187 = 41\)
- Also, das Chiffrat c ist:
- \(c \equiv 88^7 \pmod{187} = 41\)
- Zusammenfassung:Die verschlüsselte Nachricht (Chiffrat) ist:
- \(c = 41\)
c)
Bob erhält das Chiffrat \( c \) und kennt den privaten Schlüssel \( d \). Zeigen Sie den Entschlüsselungsprozess, um die ursprüngliche Nachricht \( m \) wiederherzustellen.
Lösung:
- Schritte zur Entschlüsselung der Nachricht:
- 1. Gegebene Werte:Bob hat das Chiffrat \(c\) und kennt den privaten Schlüssel:
- Chiffrat: \(c = 41\)
- Privater Schlüssel: \(d = 23\)
- Modulus: \(n = 187\)
- 2. Entschlüsselungsformel:Die Entschlüsselung erfolgt nach der Formel:
- \(m \equiv c^d \pmod{n}\)
- 3. Berechnung von \(m\):Wir setzen die gegebenen Werte in die Formel ein:
- \(m \equiv 41^{23} \pmod{187}\)
Um die Berechnung zu vereinfachen, verwenden wir exponentiation by squaring und Moduloreduzierung:- \(41^2 \equiv 1681 \pmod{187} \rightarrow 1681 \mod 187 = 176\)
- \(41^4 \equiv (41^2)^2 \equiv 176^2 \equiv 30976 \pmod{187} \rightarrow 30976 \mod 187 = 154\)
- \(41^8 \equiv (41^4)^2 \equiv 154^2 \equiv 23716 \pmod{187} \rightarrow 23716 \mod 187 = 26\)
- \(41^{16} \equiv (41^8)^2 \equiv 26^2 \equiv 676 \pmod{187} \rightarrow 676 \mod 187 = 115\)
Jetzt nutzen wir die kleineren Potenzen, um 41^23 zu berechnen:- \(41^{23} \equiv 41^{16} \times 41^4 \times 41^2 \times 41 \rightarrow 115 \times 154 \times 176 \times 41 \pmod{187}\)
- Berechne Schritt für Schritt:
- \(115 \times 154 \equiv 17710 \pmod{187} \rightarrow 17710 \mod 187 = 154\)
- \(154 \times 176 \equiv 27056 \pmod{187} \rightarrow 27056 \mod 187 = 26\)
- \(26 \times 41 \equiv 1066 \pmod{187} \rightarrow 1066 \mod 187 = 88\)
- Also ist die entschlüsselte Nachricht:
- Zusammenfassung:Die ursprüngliche Nachricht (m) ist:
d)
Erklären Sie, warum ECC typischerweise kleinere Schlüssellängen als RSA für die gleiche Sicherheit verwendet. Nennen Sie ein konkretes Beispiel mit Schlüsselgrößen für beide Verfahren.
Lösung:
- Warum ECC typischerweise kleinere Schlüssellängen als RSA für die gleiche Sicherheit verwendet:
- 1. Komplexität der zugrunde liegenden mathematischen Probleme:
- RSA: basiert auf der Faktorisierung großer Zahlen. Die Sicherheit hängt von der Schwierigkeit ab, das Produkt zweier großer Primzahlen zu faktorisieren. Trotz erheblicher Fortschritte in der Rechenleistung bleibt die Faktorisierung sehr großer Zahlen herausfordernd, aber dies erfordert recht große Schlüssellängen.
- ECC: basiert auf der Schwierigkeit der Berechnung des diskreten Logarithmus in elliptischen Kurven. Dieses Problem gilt als deutlich schwieriger als die Faktorisierung großer Zahlen und erfordert daher kleinere Schlüssellängen für die gleiche Sicherheit.
- 2. Effizienz:Die Verwendung kleinerer Schlüssel in ECC führt zu effizienteren Berechnungen und reduziert die Anforderungen an Speicher und Bandbreite. Dies macht ECC besonders attraktiv für ressourcenbeschränkte Umgebungen wie Mobilgeräte und IoT-Geräte.
- 3. Konkretes Beispiel:Ein Beispiel für die Unterschiede in den benötigten Schlüssellängen könnten sein:
- Für eine Sicherheit, die etwa dem aktuellen Standard von 128-Bit Sicherheitsniveau entspricht:
- RSA: benötigt typischerweise eine Schlüssellänge von 3072 Bits oder mehr.
- ECC: erreicht das gleiche Sicherheitsniveau bereits mit einer Schlüssellänge von 256 Bits.
- Zusammenfassung:
- ECC verwendet kleinere Schlüssellängen als RSA für die gleiche Sicherheit aufgrund der höheren Komplexität des zugrunde liegenden mathematischen Problems.
- Ein 256-Bit ECC Schlüssel bietet ähnliche Sicherheit wie ein 3072-Bit RSA Schlüssel.
Aufgabe 4)
In einem Netzwerk wird ein neues System zur Authentifizierung von Benutzern durch digitale Zertifikate implementiert. Die Zertifikate, die benutzt werden, entsprechen dem X.509 Standard und werden von einer vertrauenswürdigen Certificate Authority (CA) ausgestellt. Jedes digitale Zertifikat enthält den öffentlichen Schlüssel des Benutzers, den Namen des Besitzers und eine digitale Signatur der CA. Das Vertrauen basiert auf einer Kette von Zertifikaten, beginnend mit einem Root-Zertifikat, über zwischenliegende Zertifikate bis hin zum Benutzers Zertifikat. Erkläre und berechne, wie das System die Authentifizierung realisiert.
a)
(a) Erkläre detailliert den Ablauf der Authentifizierung eines Benutzers mittels eines digitalen Zertifikats. Gehe dabei auf folgende Schritte ein:
- Ausstellung des digitalen Zertifikats durch eine CA
- Übertragung des Zertifikats vom Benutzer zur prüfenden Instanz
- Überprüfung und Validierung des Zertifikats durch die prüfende Instanz
Lösung:
Um die Authentifizierung eines Benutzers mittels eines digitalen Zertifikats zu verstehen, müssen wir den gesamten Prozess im Detail betrachten. Hier sind die wesentlichen Schritte:
(a) Erklärung des Ablaufs der Authentifizierung eines Benutzers mittels eines digitalen Zertifikats:
- Ausstellung des digitalen Zertifikats durch eine CA Der erste Schritt besteht darin, dass der Benutzer ein Schlüsselpaar (privater und öffentlicher Schlüssel) erstellt. Anschließend sendet der Benutzer eine Zertifikatsanforderung, die den öffentlichen Schlüssel und andere Identitätsinformationen enthält, an die Certificate Authority (CA). Die CA überprüft die Identität des Benutzers und erstellt ein digitales Zertifikat, das den öffentlichen Schlüssel des Benutzers, den Namen des Besitzers und die digitale Signatur der CA enthält. Diese digitale Signatur wird unter Verwendung des privaten Schlüssels der CA erstellt und dient dazu, die Echtheit und Integrität des Zertifikats zu gewährleisten.
- Übertragung des Zertifikats vom Benutzer zur prüfenden Instanz Sobald der Benutzer das digitale Zertifikat von der CA erhalten hat, überträgt er es an die Instanz, die seine Identität überprüfen soll (z.B. einen Server, mit dem er sich verbinden möchte). Diese Übertragung erfolgt typischerweise über ein sicheres Kommunikationsprotokoll, wie z.B. TLS (Transport Layer Security).
- Überprüfung und Validierung des Zertifikats durch die prüfende Instanz Die prüfende Instanz führt mehrere Schritte durch, um das Zertifikat zu validieren:
- Zertifikatskette überprüfen: Die prüfende Instanz muss sicherstellen, dass das Zertifikat von einer vertrauenswürdigen CA ausgestellt wurde. Dazu überprüft sie die Zertifikatskette, die beim Root-Zertifikat beginnt und über eventuelle Zwischenzertifikate bis zum Benutzerzertifikat führt.
- Signatur prüfen: Die digitale Signatur der CA auf dem Zertifikat wird mit dem öffentlichen Schlüssel der CA überprüft, um sicherzustellen, dass das Zertifikat nicht verändert wurde.
- Gültigkeit prüfen: Das Zertifikat wird auf seine Gültigkeit überprüft, indem das Gültigkeitsdatum kontrolliert und mögliche Sperrlisten (z.B. Certificate Revocation List, CRL) abgefragt werden.
- Identität verifizieren: Abschließend verifiziert die prüfende Instanz, dass der öffentliche Schlüssel im Zertifikat tatsächlich zum Benutzer gehört, indem sie ggf. eine Herausforderung (Challenge) sendet, die der Benutzer mit seinem privaten Schlüssel signieren muss. Wenn die Antwort korrekt ist, ist die Authentifizierung erfolgreich. Zusammengefasst gewährleistet dieser Prozess, dass die Identität des Benutzers auf sichere und verlässliche Weise überprüft wird.
b)
(b) Angenommen, wir haben ein Root-Zertifikat, zwei Zwischenzertifikate und das Benutzers Zertifikat. Der öffentliche Schlüssel des Benutzers lautet k_B. Die Signaturen der CA sind wie folgt:
- Root-Zertifikat mit Selbstsignatur sign(root, root)
- Zwischenzertifikat 1 signiert durch Root sign(z1, root)
- Zwischenzertifikat 2 signiert durch Zwischenzertifikat 1 sign(z2, z1)
- Benutzers Zertifikat signiert durch Zwischenzertifikat 2 sign(B, z2)
Führe die Berechnung der Validierung des Benutzers Zertifikats durch. Zeige die mathematischen Beziehungen und berechne die Schritte, indem Du die Signaturen und öffentlichen Schlüssel benutzt, um die Gültigkeit der Kette zu überprüfen.
- Gehe auf die Beziehungen und Berechnungen der einzelnen Signaturen ein.
- Erkläre, wie der öffentliche Schlüssel des Benutzers k_B validiert wird.
Lösung:
Um die Authentifizierung des Benutzers mit dem öffentlichen Schlüssel k_B zu validieren, müssen wir die gesamte Zertifikatskette von unten (Benutzers Zertifikat) bis oben (Root-Zertifikat) überprüfen. Hier sind die notwendigen Schritte:
(b) Berechnung der Validierung des Benutzers Zertifikats:
- Root-Zertifikat mit Selbstsignatur: sign(root, root)Das Root-Zertifikat ist selbstsigniert. Dies bedeutet, dass die CA ihren eigenen privaten Schlüssel benutzt hat, um das Zertifikat zu signieren. Da dies das Vertrauensanker ist, wird davon ausgegangen, dass der öffentliche Schlüssel des Root-Zertifikats bekannt und vertrauenswürdig ist.Wir überprüfen: verify(sign(root, root), k_{root}) (Hierbei ist k_{root} der öffentliche Schlüssel des Root-Zertifikats). Dies sollte erfolgreich sein, da es selbstsigniert ist und wir k_{root} kennen und vertrauen.
- Zwischenzertifikat 1 signiert durch Root: sign(z1, root)Nun müssen wir sicherstellen, dass das Zwischenzertifikat 1 durch das Root-Zertifikat validiert wird.Wir überprüfen: verify(sign(z1, root), k_{root}), wobei k_{root} der öffentliche Schlüssel des Root-Zertifikats ist. Dies sollte gültig sein, wenn das Zwischenzertifikat korrekt signiert ist.
- Zwischenzertifikat 2 signiert durch Zwischenzertifikat 1: sign(z2, z1)Danach validieren wir das Zwischenzertifikat 2 mit dem öffentlichen Schlüssel von z1.Wir überprüfen: verify(sign(z2, z1), k_{z1}), wobei k_{z1} der öffentliche Schlüssel von Zwischenzertifikat 1 ist.
- Benutzers Zertifikat signiert durch Zwischenzertifikat 2: sign(B, z2) Schließlich überprüfen wir das Benutzers Zertifikat mit dem öffentlichen Schlüssel von z2.Wir überprüfen: verify(sign(B, z2), k_{z2}), wobei k_{z2} der öffentliche Schlüssel von Zwischenzertifikat 2 ist.
- Verifizierung des öffentlichen Schlüssels des Benutzers k_BWenn alle vorherigen Verifizierungen erfolgreich sind, können wir den öffentlichen Schlüssel des Benutzers k_B als authentifiziert ansehen. Das bedeutet, dass das Zertifikat des Benutzers gültig ist und vertrauenswürdig von der CA signiert wurde.
Zusammengefasst überprüft dieser Prozess die Zertifikatskette von der Wurzel bis zum Endbenutzer, wobei jede Signatur auf ihre Gültigkeit geprüft wird, um die Authentizität und Integrität der Zertifikate zu bestätigen:
- verify(sign(B, z2), k_{z2})
- verify(sign(z2, z1), k_{z1})
- verify(sign(z1, root), k_{root})
- verify(sign(root, root), k_{root})