Angriffe gegen SignaturenDSA-Signaturen


RSA-Signaturen

Schlüsselgenerierung   Signatur erstellen   Signatur prüfen   Korrektheit   Beispiel   Übungen  

Die bei dem RSA-System (Ronald Rivest, Adi Shamir, Leonard Adleman) verwendete Transformation zur Verschlüsselung einer Nachricht ist bijektiv und kann deshalb mit nur minimalen Anpassungen für digitale Signaturen verwendet werden: vertauscht man im System die Verwendung von öffentlichem und geheimem Schlüssel, so entspricht dies dem Vorgang des Signierens.

Der Inhaber des geheimen Schlüssels (und nur dieser) kann durch das "Verschlüsseln" einer Nachricht eine Signatur erzeugen, die mittels des öffentlichen Schlüssels, der allgemein verfügbar ist, geprüft werden kann. Diese Signatur ist dabei ebenso lang wie die ursprüngliche Nachricht, welche sich allein aus der Signatur ermitteln lässt. Oft wird dies jedoch nicht benötigt und, um die Signatur zu verkürzen, verwendet man die schon erwähnten Hashverfahren.

Schlüsselgenerierung

Das RSA-System unterscheidet nicht zwischen Schlüsselpaaren für Ver-/Entschlüsselung und denen für Signaturen, sodass man den schon vorgestellten Algorithmus zur Schlüsselgenerierung dafür verwenden kann.

Signatur erstellen

A möchte die Nachricht mit seinem privaten Schlüssel signieren. Er berechnet hierfür

und erhält die Signatur der Nachricht . Dieser Schritt entspricht dem Entschlüsseln im RSA-Kryptosystem. Das Paar stellt nun die signierte Nachricht dar.

Signatur prüfen

Um sicherzustellen, dass eine Nachricht wirklich von A signiert wurde und unverändert ist, überprüft B mit dem öffentlichen Schlüssel von A die Signatur

und vergleicht das Ergebnis mit der empfangenen Nachricht . Sind beide identisch, so wurde die Nachricht, nachdem A sie signiert hat, nicht verändert.

Korrektheit

Die Korrektheit von RSA-Signaturen ergibt sich unmittelbar aus dem Nachweis über die Korrektheit des RSA-Systems zur Verschlüsselung von Nachrichten:

Beispiel

Der erste Schritt zum Signieren der Zeichenkette "RSA ist ein weit verbreitetes Public-Key-Verfahren." ist die Ermittlung des Hashwertes. RSA schreibt hierbei keinen speziellen Algorithmus vor und für dieses Beispiel werden wir der Einfachheit halber die Summe der ASCII-Werte als Hashwert betrachten.

Schlüsselgenerierung.
In der Praxis sollte man mindestens einen 768-Bit Schlüssel, besser jedoch 1024 Bits oder mehr verwenden. Für einen -Bit Schlüssel wählt man die Primzahlen und jeweils Bits lang und zwar so, dass die Differenz nicht zu klein ist (sonst liegen und in der Nähe von und lassen sich ggf. effizient ermitteln). Dieses Beispiel hingegen benutzt sehr viel kleinere Primzahlen und und somit erhalten wir die 25-Bit Zahlen

Nun wählen wir den öffentlichen Exponenten zufällig und teilerfremd zu gemäß der Gleichverteilung, in diesem Fall . Mit dem erweiterten Euklidischen Algorithmus berechnen wir den geheimen Exponenten :

Daraus folgt, dass und somit .

Signatur erstellen.
Die Signatur zu unter Verwendung des privaten Schlüssels ergibt sich als

Signatur prüfen.
Die Korrektheit der Signatur s prüfen wir nun wie folgt:

Das berechnete Ergebnis ist gleich dem Hashwert der empfangenen Nachricht und die Signatur wird somit als gültig erkannt.

Übungen

Aufgabe 1
Alice benutzt eine RSA-Signatur mit öffentlichem Schlüssel , um das Dokument zu signieren und an Bob zu senden. Was ist ihre Signatur und wie verifiziert Bob diese? Ist es sinnvoll, dass Alice ihr Dokument zuerst (mit dem öffentlichen Schlüssel) verschlüsselt und dann das verschlüsselte Dokument signiert und beides (Chiffrat und Signatur) an Bob schickt?

 

Aufgabe 2
Betrachten Sie Signaturen gemäß dem RSA-Verfahren mit öffentlichem Schlüssel .

  1. Ein Angreifer möchte zwei verschiedene Dokumente mit gleicher Unterschrift finden. Ist dieses möglich?
  2. Ein Angreifer kenne nur ein gültiges Dokument/Signatur-Paar . Wieviele neue gültige Dokument/Signatur-Paare kann er damit erzeugen?

 

Aufgabe 3
Bei der Fälschung der digitalen Signatur von Alice nach dem RSA-Schema wählt Oskar , berechnet unter Verwendung des öffentlichen Schlüssels von Alice und sendet das Dokument/Unterschriftpaar an Bob. Ist dieses eine gültige Unterschrift von Alice? Wie sinnvoll ist dieses Vorgehen von Oskar?

Wie kann man diesen Angriff von Oskar vermeiden?