Asymmetrische Verschlüsselung / RSA-Verfahren
Das Prinzip der asymmetrischen Verschlüsselung beruht darauf, dass zwei Kommunikationspartner jeweils ein Schlüsselpaar, bestehend aus einem privaten Schlüssel (dieser wird geheim gehalten) und einem öffentlichem Schlüssel (dieser ist jedem zugänglich), besitzen.
Um es einfacher zu machen, nehmen wir an, dass der öffentliche Schlüssel ein Schloss ist, welches nur von einem Schlüssel, dem privaten Schlüssel, geöffnet werden kann.
Nehmen wir an Person A möchte nun Person B eine Nachricht schicken, die kein anderer lesen soll. Dafür stellt Person B nun Person A einen öffentlichen Schlüssel zur Verfügung, also ein Schloss, welches nur Person B wieder öffnen kann. Person A schreibt nun eine Nachricht und steckt den Brief beispielsweise in eine Kiste und verschließt sie mit dem Schloss von Person B. Nun kann keiner außer Person B diese Kiste öffnen, da nur sie den Schlüssel für die Kiste besitzt und die Nachricht kann sicher gelesen werden.
In der heutigen Praxis sieht das ganze natürlich etwas anders aus. Die RSA-Verschlüsselung ist eine Verschlüsselungsart, die heute sehr häufig genutzt wird. Hierbei wird eine sogenannte Einweg-Funktion verwendet. Diese wird oft mit einer „mathematischen Einbahnstraße“ beschrieben. Dabei ist die Berechnung in die eine Richtung (Verschlüsselung) sehr einfach, doch der Rückweg (Entschlüsselung ohne Schlüssel) ist sehr schwierig. So eine Einweg-Funktion kann man sehr gut mit der Multiplikation von Primzahlen beschreiben.
3259 * 5431 = 17699629
Diese Rechnung war nicht schwer zu lösen. Es wurden zwei beliebige Primzahlen miteinander multipliziert. Dies war der Weg in die einfache Richtung. Würde man diese Rechnung jetzt aber rückwärts lösen wollen, also alle Teiler der Zahl 17.699.629 suchen, würde man schon deutlich länger an dem Problem sitzen. Außerdem gibt es für das Zerlegen einer Zahl in seine Primfaktoren keinen bekannten Algorithmus, oder andere Methoden. Ein Computerprogramm kann aber solche Rechnungen für uns durchführen, doch geht dies nur, wenn die Zahlen nicht zu groß sind. Heutzutage benutzt man mindesten 150-stellige Primzahlen zur Verschlüsselung, wofür ein Computer sehr, sehr viel Zeit benötigt. Falls es einmal schnellere Computer geben sollte, muss man einfach nur die Anzahl der Ziffern der Primzahl erhöhen.
Jetzt stellt sich aber die Frage, wie dadurch denn eine Kommunikation entstehen kann, wenn die Entschlüsselung doch so lange dauert. Die RSA-Verschlüsselung arbeitet mit diesen „Falltürfunktionen“ und ermöglicht es, auch den Rückweg einfach zu berechnen, aber nur für den Kommunikationspartner.
Wie dieses Verfahren funktioniert wird nun mit kleinen Primzahlen und einer sehr kurzen Nachricht, die aus einem Zeichen besteht, erklärt.
Hierfür muss man die Verwendung von Modulo nachvollziehen können. Zur Erinnerung einige Beispiele:
20 ÷ 6 = 3, mit Rest 2, 20 mod 6 = 2
43 ÷ 5 = 8, mit Rest 3, 43 mod 5 = 3
Person B erzeugt zunächst seinen privaten Schlüssel, also den, den nur er kennt:
Dazu wählt er zwei beliebige Primzahlen, z.B. p = 17 und q = 11. Nun muss noch eine Zahl e gewählt werden. Dabei sollte e von ((p - 1) * (q - 1)) teilerfremd sein. Wir wählen wir für e = 7.
Den privaten Schlüssel d berechnet man nun mit folgender Formel:
1 = (e * d) mod ((p - 1) * (q - 1))
Die Werte können nun eingesetzt werden.
1 = (7 * d) mod ((17 - 1) * (11 - 1))
1 = (7 * d) mod 160
Aus der Gleichung ergibt sich für d = 23. Denn (7 * 23) mod 160 = 161 mod 160 = 1
Diese Zahl kennt nur Person B. Jetzt wird der öffentliche Schlüssel erzeugt, der jedem zugänglich ist. Dieser besteht aus zwei Zahlen. Die erste Zahl ist e = 7 vom privaten Schlüssel.
Die Zweite Zahl ergibt sich aus dem Produkt von p und q, also N = 17 * 11 = 187.
Diese Zahlen e und N sind der öffentliche Schlüssel. Person B hat nun alle Vorbereitungen getätigt und kann eine Nachricht von Person A erhalten. Jetzt wird die zu verschlüsselnde Nachricht von Person A in eine Zahl M umgewandelt. Als Beispiel nehmen wir hier den sogenannten Klartext „X“ als Nachricht und wandeln in ihn mit dem ASCII-Code um. Der Buchstabe X hat in diesem Code den Dezimalwert 88. Also ist M = 88.
Person A erzeugt nun aus dem Klartext für M die verschlüsselte Nachricht C. Diese berechnet man mit der Formel:
C = Me mod N
Person A kann alle Werte in die Formel eintragen und es ergibt sich:
C = 887 mod 187 = 11
Mit der verschlüsselten Nachricht C kann man nun, ohne den privaten Schlüssel von Person B nichts mehr anfangen. Denn wollte man den Klartext M ermitteln müsste man die Gleichung umstellen, da man alle Werte außer den für M hat. Und für diese Gleichung
11 = x7 mod 187
gibt es unendlich viele Lösungen.
Person A schickt die verschlüsselte Nachricht C = 11 nun an Person B. Person B kann mit folgender Formel den Klartext M lesen und außer ihm kein anderer.
M = Cd mod N
M = 1123 mod 187
M = 88
Bei diesem Beispiel wurden sehr kleine Zahlen verwendet. In der Realität werden viel größere Zahlen verwendet, um das Verfahren noch sicherer zu machen. Die RSA-Verschlüsselung ist jedoch nicht sehr gut für längere Nachrichten geeignet. Es benötigt sehr viel mehr Zeit als das symmetrische Verschlüsselungsverfahren DES. Bei diesem Verfahren ist jedoch ein großer Nachteil, dass der gemeinsame Schlüssel zwischen den Kommunikationspartnern ausgetauscht werden muss. Und um diese gemeinsamen Schlüssel dem jeweils anderen bekannt zu machen eignet sich das RSA-Verfahren sehr gut, da es kurze Nachrichten, bzw. Schlüssel sehr sicher übertragen kann. Beide Verfahren hängen also miteinander zusammen und erzeugen so eine hohe Effektivität mit niedrigem Risiko.