Public-Key-Kryptographie und RSA

Dozent:

Prof. Dr. Michael Eichberg

Version:
2024-05-09
Basierend auf:

Cryptography and Network Security - Principles and Practice, 8th Edition, William Stallings

Folien:

https://delors.github.io/sec-public-key-kryptographie/folien.rst.html

https://delors.github.io/sec-public-key-kryptographie/folien.rst.html.pdf

Fehler auf Folien melden:

https://github.com/Delors/delors.github.io/issues

Terminologie bzgl. asymmetrischer Verschlüsselung

Asymmetrische Schlüssel:

Zwei zusammengehörige Schlüssel, ein öffentlicher und ein privater Schlüssel, die zur Durchführung komplementärer Operationen verwendet werden, z. B. Ver- und Entschlüsselung oder Signaturerstellung und Signaturprüfung.

Public-Key-Zertifikat:

Ein digitales Dokument, das mit dem privaten Schlüssel einer Zertifizierungsstelle (eng:Certification Authority) ausgestellt und digital signiert wird und den Namen eines Teilnehmers an einen öffentlichen Schlüssel bindet. Das Zertifikat gibt an, dass der im Zertifikat genannte Teilnehmer die alleinige Kontrolle und den Zugriff auf den entsprechenden privaten Schlüssel hat.

Public-Key (asymmetrischer) kryptografischer Algorithmus:

Ein kryptographischer Algorithmus, der zwei zusammengehörige Schlüssel verwendet, einen öffentlichen und einen privaten Schlüssel. Die beiden Schlüssel haben die Eigenschaft, dass die Ableitung des privaten Schlüssels aus dem öffentlichen Schlüssel rechnerisch nicht machbar ist bzw. sein sollte (vgl. Quantenkryptografie).

Public-Key-Infrastruktur (PKI):

Eine Reihe von Richtlinien, Prozessen, Serverplattformen, Software und Workstations, die für die Verwaltung von Zertifikaten und öffentlich-privaten Schlüsselpaaren verwendet werden, einschließlich der Möglichkeit, Public-Key-Zertifikate auszustellen, zu pflegen und zu widerrufen.

Missverständnisse bei der Verwendung von Public-Key-Kryptosystemen

Prinzipien von Public-Key-Kryptosystemen

KDC = Key Distribution Center

Prinzipien von Public-Key-Kryptosystemen

Whitfield Diffie und Martin Hellman von der Stanford University erzielten 1976 einen Durchbruch, indem sie eine Methode entwickelten, die beide Probleme löste und sich radikal von allen bisherigen Ansätzen der Kryptografie unterschied.

Bestandteile von Public-Key-Kryptosystemen

Klartext (Plaintext):

Die lesbare Nachricht oder Daten, die dem Algorithmus als Eingabe dienen.

Verschlüsselungsalgorithmus:

Führt verschiedene Umwandlungen des Klartextes durch.

Öffentlicher Schlüssel:

Wird für Verschlüsselung oder Entschlüsselung verwendet.

Privater Schlüssel:

Verwendet für Verschlüsselung oder Entschlüsselung.

Chiffretext (Ciphertext):

Die verschlüsselte Nachricht, die als Ausgabe produziert wird.

Entschlüsselungsalgorithmus:

Nimmt den Geheimtext und den passenden Schlüssel entgegen und erzeugt den ursprünglichen Klartext.

Verschlüsselung mit öffentlichem Schlüssel

Verschlüsselung mit öffentlichem Schlüssel

Verschlüsselung mit privatem Schlüssel

Verschlüsselung mit privatem Schlüssel

Konventionelle und Public-Key-Verschlüsselung

Konventionelle Verschlüsselung

Benötigt zur Anwendung:

  1. Es wird derselbe Algorithmus mit demselben Schlüssel für die Ver- und Entschlüsselung verwendet.

  2. Der Sender und der Empfänger müssen den Algorithmus und den Schlüssel kennen bzw. besitzen.

Notwendig für die Sicherheit:

  1. Der Schlüssel muss geheim gehalten werden.

  2. Es muss unmöglich oder zumindest unpraktisch sein, eine Nachricht zu entschlüsseln, wenn der Schlüssel geheim gehalten wird.

  3. Die Kenntnis des Algorithmus und von (ggf. vielen) Geheimtexten ist nicht ausreichend, um den Schlüssel zu ermitteln.

Public-Key Verschlüsselung

Benötigt zur Anwendung:

  1. Zwei Algorithmen: je einer für die Ver-/Entschlüsselung. Weiterhin ein Paar von Schlüsseln; je einer für die Ver-/Entschlüsselung.

  2. Der Absender und der Empfänger müssen jeweils einen der passenden Schlüssel besitzen (nicht den gleichen).

Notwendig für die Sicherheit:

  1. Einer der Schlüssel muss geheim bleiben.

  2. Es muss unmöglich sein, eine Nachricht zu entschlüsseln, wenn ein Schlüssel geheim gehalten wird.

  3. Die Kenntnis des Algorithmus und eines Schlüssels sowie von Geheimtexten ist nicht ausreichend, um den anderen Schlüssel zu ermitteln.

Public-Key-Kryptosystem: Vertraulichkeit

Vertraulichkeit

Public-Key-Kryptosystem: Authentifizierung

Authentifizierung

Public-Key-Kryptosystem: Authentifizierung und Geheimhaltung

Authentifizierung und Geheimhaltung

Anwendungen für Public-Key-Kryptosysteme

Anwendungen für Public-Key-Kryptosysteme

Algorithmus

Ver-/ Entschlüsselung

Digitale Signaturen

Schlüssel-austausch

RSA

Elliptic Curve

Diffie-Hellman

DSS

DSS = Digital Signature Standard, entwickelt von der NSA (National Security Agency)

Anforderungen an Public-Key-Algorithmen

Anforderungen an Public-Key-Algorithmen

Ein Falltürfunktion lässt sich nicht trivial umkehren; bzw. die Umkehrung erfordert spezielle (weitergehende) Informationen.

Public-Key-Kryptoanalyse

Ein Verschlüsselungsverfahren mit öffentlichem Schlüssel ist anfällig für einen Brute-Force-Angriff.

  • Gegenmaßnahme: große Schlüssel verwenden!

  • Die Schlüsselgröße muss klein genug sein, um eine praktische Ver- und Entschlüsselung zu ermöglichen.

  • Vorgeschlagene Schlüsselgrößen führen zu Verschlüsselungs-/Entschlüsselungsgeschwindigkeiten, die für den allgemeinen Gebrauch zu langsam sind.

  • Die Verschlüsselung mit öffentlichen Schlüsseln ist derzeit auf die Schlüsselverwaltung und Signaturanwendungen beschränkt.

Eine andere Form des Angriffs besteht darin, einen Weg zu finden, den privaten Schlüssel anhand des öffentlichen Schlüssels zu berechnen.

Bislang konnte nicht mathematisch bewiesen werden, dass diese Form des Angriffs für einen bestimmten Public-Key-Algorithmus nicht durchführbar ist.

Schließlich gibt es noch einen Angriff mit wahrscheinlicher Nachricht.

Dieser Angriff kann vereitelt werden, indem einige zufällige Bits an einfache Nachrichten angehängt werden.

Bei einem Angriff mit wahrscheinlicher Nachricht, verschlüsselt der Angreifer eine Reihe von Nachrichten (z. B. alle DES Schlüssel mit dem öffentlichen Schlüssel des Adressaten) und analysiert die resultierenden Chiffretexte, um den privaten Schlüssel zu ermitteln.

Rivest-Shamir-Adleman (RSA) Algorithm

RSA Algorithmus

Anforderungen an den RSA Algorithmus

Damit dieser Algorithmus für die Verschlüsselung mit öffentlichen Schlüsseln geeignet ist, müssen die folgenden Anforderungen erfüllt sein:

  1. Es ist möglich, Werte für \(e\), \(d\), \(n\) so zu finden, dass \(M^{ed}\,mod\, n = M\) für alle \(M < n\).

  2. Es ist relativ einfach, \(M^e\;mod\; n\) und \(C^d\, mod\, n\) für alle Werte von \(M < n\) zu berechnen.

  3. Es ist nicht möglich, \(d\) zu bestimmen, wenn \(e\) und \(n\) gegeben sind.

The RSA Algorithm

Schlüsselgenerierung von Alice

Wähle p, q

\(p\) und \(b\) beide prim, \(p \neq q\)

Berechne n

\(n = p \times q\)

Berechne 𝜙(n)

\(\phi(n) = (p - 1)(q - 1)\)

Wähle e

\(GGT(\phi(n),e) = 1; \qquad 1 < e < \phi(n)\)

Berechne d

\(d \equiv e^{-1}\; (mod\; \phi(n)) \Leftrightarrow ed\; mod\; \phi(n)= 1\)

Public-Key

\(PU = \lbrace e,n \rbrace\)

Private-Key

\(PR = \lbrace d,n \rbrace\)

Verschlüsselung von Bob mit Alices öffentlichen Schlüssel

Klartext

\(M<n\)

Chiffretext

\(C=M^e\; mod\; n\)

Entschlüsselung von Alice mit ihrem privaten Schlüssel

Chiffretext

\(C\)

Klartext

\(M = C^d\; mod\; n\)

Beispiel für den RSA-Algorithmus

p und q:

\(p = 11; q = 17; n = 187\)

Klartext:

88

Verschlüsselung:

\(PU =\lbrace e= 7, n= 187 \rbrace\):

\(88^7\;mod\; 187 = 11 = C\)

Entschlüsselung:

\(PR =\lbrace d= 23, n = 187 \rbrace\):

\(11^{23}\; mod\; 187 = 88 = P\)

Potenzierung in der Modularen Arithmetik

Algorithmus zur Berechnung von \(a^b\; mod\; n\)

Quadrieren und Multiplizieren (Square and Multiply)

Die Ganzzahl \(b\) wird als Binärzahl b[k]b[k-1]...b[0] ausgedrückt:

c := 0; f := 1
for i := k downto 0
    do c := 2 * c
       f := (f * f) mod n
    if b[i] = 1
        then c := c + 1
             f := (f * a) mod n
return f

Ergebnis des schnellen modularen Exponierungsalgorithmus für \(a^b\;mod\;n\)

\(a=7; b = 560 = 1000110000_b\), und \(n=561\)

i

9

8

7

6

5

4

3

2

1

0

\(b_i\)

1

0

0

0

1

1

0

0

0

0

c

1

2

4

8

17

35

70

140

280

560

f

7

49

157

526

160

241

298

166

67

1

Effiziente Verschlüsselung mit dem öffentlichen Schlüssel

Effiziente Entschlüsselung mit dem privaten Schlüssel

Schlüsselgenerierung

Vor der Anwendung des Public-Key-Kryptosystems muss jeder Teilnehmer ein Schlüsselpaar erzeugen:

  • Bestimmung der Primzahlen \(p\) und \(q\).

  • Wahl von \(e\) oder \(d\) und Berechnung der anderen.

  • Da der Wert von \(n = pq\) jedem potenziellen Gegner bekannt sein wird, müssen die Primzahlen aus einer ausreichend großen Menge ausgewählt werden.

  • Die Methode, die zum Finden großer Primzahlen verwendet wird, muss einigermaßen effizient sein.

    Es kann z. B. der Miller-Rabin-Algorithmus verwendet werden.

Die Sicherheit von RSA - Fünf mögliche Ansätze für einen Angriff

Faktorisierungsproblem

Es gibt drei Ansätze für einen mathematischen Angriff auf RSA:

  1. Faktorisierung von \(n\) in seine beiden Primfaktoren. Dies ermöglicht die Berechnung von \(\phi(n) = (p - 1) \times (q - 1)\), was wiederum die Bestimmung von \(d = e^{-1} (mod\; ø(n))\) ermöglicht.

  2. Direkte Bestimmung von \(\phi(n)\), ohne vorher \(p\) und \(q\) zu bestimmen. Dies ermöglicht wiederum die Bestimmung von \(d = e^{-1} (mod\; \phi(n))\).

  3. Direkte Bestimmung von \(d\), ohne vorher \(\phi(n)\) zu bestimmen.

Timing-Angriffe

Gegenmaßnahmen gegen Timing-Angriffe

Konstante Potenzierungszeit:

Es gilt sicherzustellen, dass alle Potenzierungen die gleiche Zeit benötigen, bevor ein Ergebnis zurückgegeben wird; dies ist eine einfache Lösung, die jedoch die Leistung beeinträchtigt.

Zufällige Verzögerung:

Eine bessere Leistung könnte erreicht werden, indem man dem Potenzierungsalgorithmus eine zufällige Verzögerung hinzufügt, um den Zeitangriff zu verwirren.

Verschleierung:

Multiplikation des Chiffriertextes mit einer Zufallszahl vor der Potenzierung; dieser Vorgang verhindert, dass der Angreifer erfährt, welche Bits des Chiffriertextes im Computer verarbeitet werden, und verhindert somit die für den Timing-Angriff erforderliche Bit-für-Bit-Analyse.

Fehlerbasierter Angriff

(Fault-based attack)

Gewählter Chiffretext-Angriff

(Chosen Ciphertext Attack (CCA))

Übung

  1. Führen Sie den Square-and-Multiply Algorithmus für \(3^{17}\, mod\, 23\) aus.

    MTAwMDAw:w1RTt/MSn9ybGNo9KaWAmpo7xVhlFF4zFGfSX9bm+i0=:SCWefVcfkhhBJ2Fu:SB87Z+sJF63e5K8wkVGsFBfdxuwXX2HG87zEaggXIOnODVaBRsiy2f57grrImyy4dCGeWrahrjGw8GAV6OxrdM2kJcbr2hDXWoMB7Zifzl104EXLSk3ZOX4eYwCoKxxrkcFW/fiF8bGHdv8cqA4DnMOYAmm53EYipP3MrBmZp0cM6CZ4DcTfYF9sHfCGHQxxHk6TVVrXxVolZWJPvejUQRw+KRHJNxn7k9/aHVvpUicnkcKG30cBcaLDU3jakZ8PwaS0rAdLHUiGeWEeb/ugYZPy4DpqfU8UIpA=
  2. Verschlüsseln Sie eine Nachricht mit RSA.

    D. h., wählen Sie 2 kleine Primzahlen, berechnen Sie dann \(e\), \(d\), \(n\). Verschlüsseln Sie dann die Nachricht (d. h. einen (eher) kleinen Wert) mit dem öffentlichen Schlüssel einer anderen Person und senden Sie der Person die verschlüsselte Nachricht. Die Zielperson soll Ihre Nachricht entschlüsseln. Überprüfen Sie anschließend, ob die Verschlüsselung erfolgreich war.

    MTAwMDAw:RlsQu8MwJzCBx6Ia4V4cuJxmE4NaobZKbuHMuFqUAHk=:ji03zQa65uVuPPj5:G/0YjLYw5b5/UhWGWYWfz3jz954Sftm1E8ffRxT3LueoL/Ybu40grFcw/cyfJFOIsHzhdD7VDK+HqJOYIzprfIAkIqj76A59oLw59vPxVoKhTgdz8wmjDoEGm7SRd8eASXigDQ7y9mbDfurpscq0tosq2r+/rMrCZqwPm84AG9FXOvI5Cq/Wut0dynOVpJmeGXnWWWv6UvlvoyJWA3Sp6VNEV8VMOrYe9WjS1yaWmf1eUEYhyChxPGZ53ZrTLbylP8btWTf0gNQWV+Yf/2NAbzZj/TEJs7v3eamjd4P9Gq7/n9klsPormILI+ITLGK8622b6sn2/xnMUTcxGqWcNJUPgGHK+UQAZ/Xuj1n5SXKem7CGNIvfkSu4gEaGUVkiB/pXLCI75gZBdZ2yuxTBwaBCvMnQSfrT3+P6QQpOiOMfC7+DHY+i2Jcbr0iJ5Qn303NJ8uxxgsCRqAj3ZFUMrHTj0gxLvSSxlcNA4r02SpTN4BZkeKvcEPPd9WFY+Fdd/5zSwRKVupHfim9Wt5zKYsWV+TvJxUctXmnCTSbpjbBqK55nvbRHVg33dpPUr/6DT7t/keYiiTVo8YPtlZVYSqbR+jppBJlTwNZZkwJaU7kSr2igI1f7vjy07fIQ8dln/Q6PdglDVSC413IdeMcuW+aJ9GTWRSAVstLJJyqGuRqL2e6FKZCwAgKSA4iGlEiY5LqNa8rDe/hFUoDbhdETY77mqtvl1rXN4vwiVGYBqt3tnJA5p4djdUCfxDnVe511OJzvXEBpGs2xlWOOkx/IQ0fmfhFFi0VjjhQPD+olgHXIwExfI+C1/90oSCHb82ufezsRAABKUtHNf74F2XdKnc7p5jaktHgAzsWr833J1pUH2YItMEYxRMrvXM3KLi300vS3pO+geHq/I2UzvHuU+nfHWdAkSZgSOH2qjR5MXpsPPSt9hEdlVcFIx1pfZTqljqAhb1nICBNxu3DCTeh3YcjfylnU037MFlCJuzDZbDmpv0XSclwFJ4nxlXhyNNMx1Rx4XOGsmv4oYPvaNjVBYMANEo7tEzwjRjWbcpB5bwrwAq3xatCNQxDqfzmZqh4o0Ut3GoE9BpGQSLG2ZL/oAlb4lp49jr+XwUHBVNy8GzcRo5QhfCSf8C7IYiZZjKzI8sXCClaXC1SsR5wBLCXDDGkWz/jYbZOmLaNRUOCik1KGw8U1rXcYAo1teJ4mbwNF0ADe+91uU7dnLfN05bFFJnnTy68zE5vAduyHfN+Jer5YAQSeFZ9Cbp6WbuxRPnJ85j4KnkEEgGRQ1YckIXjsKVaDxqpdMtwTh4IvYDKV4SS4eonVYY/s+cF+zZja5fbIpWwMka91MrQmq6NrUfjyFCkVGN/mkz9iSvcjNUzdNYtw0CvlnqJSSFEgjZqH1uAT0hzh2Lg92gU6nttlFTpAIrPsU4j2Rg2tsc41Fj/e2k4/a1hjg9hHPtiW2rwwpE0lopeKw6y8PFvKcLqcTtZ7+R3KpOuXSmC2SbZV8/nzSTRKtFoHGasgedAJEy5yWGNDnm0h0SlyJoYouMudU1wSwHXEiYdcBveMKbOOAal5RPYKEXtxbdtvelXSbWA==