Schritt 1
Den größten gemeinsamen Teiler zweier Zahlen und bestimmt man mit dem euklidischen Algorithmus. Man nennt diesen auch Wechselwegnahme.
Euklidischer Algorithmus
gegeben:
gesucht:
a | = | q0.b + r1 | 0 < r1 < b |
b | = | q1.r1 + r2 | 0 < r2 < r1 |
r1 | = | q2.r2 + r3 | 0 < r3 < r2 |
usw | |||
rn-3 | = | qn-2.rn-2 + rn-1 | 0 < rn-1 < rn-2 |
rn-2 | = | qn-1.rn-1 + rn | 0 < rn < rn-1 |
rn-1 | = | qn.rn |
Der letzte von 0 verschiedene Rest ist der größte gemeinsame Teiler von und :
.
Interessiert dich die Pseudocode-Version?
Oder möchtest du ein Beispiel rechnen?
Schritt 2
Aus den obigen Gleichungen folgt
Schließlich erhält man eine Darstellung der Form . Da , ist damit direkt folgender Satz bewiesen.
Vielfachensumme
Zu zwei Zahlen gibt es immer Zahlen mit der Eigenschaft, dass
Schritt 3
Nun geht der Beweis des Satzes über die modulare Inverse ganz einfach:
Nach Voraussetzung ist und nach dem eben bewiesenen Satz gibt es Zahlen und ,
so dass
Das gilt natürlich auch noch modulo und da , gilt:
Es gibt also tatsächlich eine Zahl , die modulo zu invers ist.
Und sie lässt sich mit dem euklidischen Algorithmus berechnen.
Aber ist diese Zahl auch positiv? -- Nicht unbedingt! Aber wenn
so ist auch für jede natürliche Zahl
private key
Hat man die Vielfachensummendarstellung bestimmt, so ist die kleinste positive Zahl der Form der private key .
Uff! Ganz schön kompliziert!
Wenn es dir genügt, zu wissen, dass man den private key mit dem euklidischen Algorithmus berechnen kann, lies einfach weiter. Ansonsten kannst du
Alles klar?
Zurück zum RSA-Verfahren. Mit Hilfe des euklidischen Algorithmus' kann man also den private key bestimmen.
Kennt man die beiden Primzahlen und , so ist es also einfach, zu berechnen und damit
dann die mit und verschlüsselten Nachrichten zu entschlüsseln. Allerdings ist
es nahezu unmöglich, zu berechnen, ohne und zu kennen.
Aber warum funktioniert das Verfahren denn nun überhaupt? Warum kommt wirklich wieder der Klartext heraus, mit anderen Worten: warum gilt