mathpoint.ch | |||||
RSA-Verschlüsselung |
|||||
Links: Eulers digitale Unterschriften, Prof. Dr. Wiland Schmale, Universität Oldenburg, pdf: |
1. Nun werden zwei sehr grosse Primzahlen p und q gewählt (die grösser als 10Blocklänge sein sollten, hier also grösser als 102 . Man bildet das Produkt p⋅ q = m. Nun werden noch ein Exponent e und eine Geheimzahl g gewählt, deren Eigenschaften wir später genauer bestimmen werden. Es gibt nun einen öffentlichen und einen geheimen Schlüssel. Der öffentliche Schlüssel besteht aus dem Zahlenpaar (m, e), das in einem Verzeichnis veröffentlicht allen Interessierten zugänglich ist. An einem einfachen Modellbeispiel mit p = 3 und q = 5 (somit m = 15) illustrieren wir das Vorgehen. Wir rechnen mit Restklassen modulo 15. Das bedeutet: Von jeder Zahl betrachten wir nur den Rest, der bei Division durch 15 bleibt. Beispiel: Jede ganze Zahl z lässt sich auf ihren 15er-Rest reduzieren. Wir rechnen nun mit diesen 15 Restzahlen wie folgt: Wenn beim Addieren, Multiplizieren oder Potenzieren Zahlen grösser als 14 entstehen, reduzieren wir diese auf ihre 15er-Reste und rechnen mit den reduzierten Zahlen weiter. Wir rechnen also lediglich mit den Zahlen 0 bis 14; dies sind die möglichen 15er-Reste. |
Satz: Haben zwei Zahlen denselben 15er-Rest, so ist ihre Differenz durch 15 teilbar: Aus 36 ≡(15) 6 folgt z.B. , dass 15 ein Teiler von 36 - 6 ist. Mit diesen "Restzahlen" kann man rechnen. Beispiele:
Mit unserer sehr kleinen Wahl von p, q und m können wir die Zahlen von 1 bis 14 Erstaunlicherweise sind das wieder alle Zahlen von 1 bis 14, einfach in anderer Reihenfolge. Der Exponent 3 vermag dies zu schaffen. Andere Exponenten schaffen dies nicht, wie man leicht nachprüft. Man probiere z.B. den Exponenten 2, der dies nicht schafft. Fürs Verschlüsseln brauchen wir aber eine Codierung, die zwei verschiedene Zahlen des Klartextes in zwei verschiedene Zahlen des codierten Textes umwandelt und zwar für alle 14 Zahlen des Klartextes. Wie funktioniert nun die Decodierung? Diese funktioniert in unserem Beispiel mit der Geheimzahl g = 3. Potenzieren wir jede Zahl des codierten Textes mit 3, entsteht erstaunlicherweise wieder der ursprüngliche Klartext. Man prüfe dies nach. Verschlüsselt und entschlüsselt wird also durch Potenzieren mit geeigneten Zahlen e und g. Dabei müssen e und g folgende Bedingungen erfüllen:
Man kann zeigen, dass (1) aus (2) folgt. Wenn also Bedingung (2) erfüllt ist, entstehen automatisch wieder die 14 Zahlen in anderer Reihenfolge. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
2. Beim Rechnen mit Restzahlen kann ein Produkt zweier Zahlen, die nicht 0 sind, durchaus 0 ergeben: 3⋅5 ≡(15) 0, 12⋅5 ≡(15) 0.
Die zu 15 teilerfremden Zahlen sind folgende 8 Zahlen: Man stellt folgendes fest (und kann dies leicht einsehen):
|
So sieht die Multiplikationstabelle der Zahlen aus E15 aus. Die Produkte sind stets wieder auf ihren 15er-Rest reduziert.
In jeder Zeile und in jeder Spalte kommt jede der 8 Zahlen genau einmal vor. Das System bildet eine mathematische Gruppe. Mit Hilfe obiger Multiplikationstafel kann man nun ein Phänomen zeigen, das auf Leonhard Euler zurückgeht und Satz von Euler genannt wird. Auf unser Beispiel bezogen heisst dies: Beim Rechnen mit 15er-Resten gilt für jede ganze Zahl z, die teilerfremd zu 15 ist: Satz von Euler: zφ(15) = z8 ≡(15) 1 . Allgemein: zφ(m) ≡(m) 1 für alle ganzen Zahlen z, die teilerfremd zu m sind. Das heisst im Spezialfall unseres Beispiels: Jede ganze Zahl z, die teilerfremd zu 15 ist, ergibt hoch 8 gerechnet den 15er-Rest 1. Es genügt, den Satz für die z ∈ Em zu zeigen. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
3. Beweis des Satzes von Euler Die Beweisidee, die keine Kenntnisse von mathematischen Gruppen voraussetzt, ist entnommen aus dem pdf von Prof. Dr. Wiland Schmale. Wir zeigen den Sachverhalt an einem Beispiel. Der allgemeine Beweis ist dann leicht zu führen. Wir wählen wieder m = 15. Mit z = 2 ∈ E15 illustrieren wir den Vorgang. Feststellung 1: Wenn wir die Folge (1, 2, 4, 7, 8, 11, 13, 14) mit 2 multiplizieren und 15er-Rest-reduzieren, entstehen erneut alle Zahlen nur in anderer Reihenfolge. (Dies gilt auch für jede andere Zahl aus E15.) Die Multiplikationstabelle oben illustriert dies. Nun bilden wir das Produkt P = 1⋅2⋅4⋅7⋅8⋅11⋅13⋅14. |
Wir multiplizieren jeden Faktor mit 2: Somit gilt: 28⋅P ≡(15)P oder 28⋅P - P = P⋅(28 - 1) ≡(15)0, das heisst Die Überlegung lässt sich leicht allgemein führen. Wir finden dann: zφ(m) ≡(m)1 . |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
4. Der Satz von Euler und die RSA-Verschlüsselung Wir haben folgende Bedingungen an die Schlüsselzahlen e und g gefunden, damit Codierung und Decodierung klappen:
Wählen wir e⋅g so, dass e⋅g ≡(8)1, so ist (e⋅g - 1) ein Vielfaches von 8, und folglich gilt für Zahlen z, die teilerfremd zu 15 sind nach dem Satz von Euler Dann ist zeg = z⋅zeg-1 ≡(15) z. Dies ist aber Bedingung (2). Damit funktioniert die Codierung und Decodierung. |
Mit unserer anfänglichen Wahl e = 3 und g = 3 erfüllen wir die Bedingung Allgemeines Vorgehen:
*) Die Zahlen e und g müssen, um diese Bedingung zu erfüllen, teilerfremd zu φ(m) sein. Es gibt somit φ(φ(m)) - 1 Kandidaten dafür. In unserem Beispiel sind das die zu 8 teilerfremden Zahlen ohne die 1, also 3, 5, 7. Die Produkte 3⋅3, 5⋅5 und 7⋅7 erfüllen die Bedingung e⋅g ≡(8)1. Bemerkung: Alle z, die kleiner als p und kleiner als q sind, sind sicher teilerfremd zu m = p⋅q und erfüllen die Voraussetzungen für den Satz von Euler. Wir müssen also p und q recht hoch wählen, respektive den Text in genügend kleine Segmente unterteilen. Je höher p, q sind, desto schwieriger wird es, aus p⋅q = m die Faktoren p und q zu erurieren. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
5. Digitale Unterschrift Bob und Alice möchten verschlüsselte Nachrichten austauschen. Alice hat folgende Schlüssel: Bob hat folgende Schlüssel: Will Bob an Alice eine Nachricht senden, verschlüsselt er sie mit dem öffentlichen Code von Alice, d.h. potenziert mit eAlice modulo mAlice. Nun tritt aber ein Problem auf: Nicht nur Bob, sondern jede andere Person, die den öffentlichen Schlüssel von Alice kennt, könnte ihr eine Nachricht senden und sich für Bob ausgeben. Damit Alice sicher ist, dass die Nachricht wirklich von Bob stammt, muss Bob eine digitale Unterschrift anbringen können, die nur er leisten kann. |
Bob geht dazu so vor: Wir nehmen an, dass der Modul mAlice kleiner sei als der Modul mBob. 1. Bob verschlüsselt die Nachricht, welche seine "Unterschrift" beinhaltet, mit eAlice. 4. Nun kann Alice auf den resultierenden Text ihre Entschlüsselung gAlice anwenden und findet den sinnvollen Unterschrifts-Text von Bob. Der kann nur von ihm stammen, da nur er den Verschlüsselungs-Schritt 2 mit gBob durchführen konnte. Ist mAlice > mBob, so sind die Schritte 1 und 2 und die Schritte 3 und 4 zu tauschen. Über die Möglichkeit von Unterschriftsfälschungen und deren Verhinderung s. hier. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||