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