Banner der Website mathematik.de. Motiv: Überall ist Mathematik

RSA Verschlüsselung - ggt Berechnung


Zurück zum Hauptartikel über RSA

Der (erweiterte) euklidische Algorithmus

Dieser spezielle Algorithmus dient eigentlich der Berechnung des größten gemeinsamen Teilers (ggT) zweier Zahlen a und b. Mit einem Beispiel möchte ich Ihnen das Verfahren im Folgenden vorstellen:

a = 105, b = 1001
1001 mod 105 = 56 (1001 = 9 · 105 + 56)
105 mod 56 = 49 (105 = 1 · 56 + 49)
56 mod 49 = 7 (56 = 1 · 49 + 7)
49 mod 7 = 0 (49 = 7 · 7)

Der ggT von 105 und 1001 ist demnach 7. Man könnte den Algorithmus auch folgendermaßen beschreiben:

r0 = a
r1 = b
r0 = q1 · r1 + r2
r1 = q2 · r2 + r3
r2 = q3 · r3 + r4
...
rn − 2 = qn − 1 · rn − 1 + rn
rn − 1 = qn · rn

Diese Darstellung entspricht den oben in Klammern durchgeführten Berechnungen. rn ist der größte gemeinsame Teiler.

Auf dem Computer geht's noch einfacher. Hier ein Beispiel in C:

int a, b;
/* Lese zwei Zahlen a und b ein */
while (b != 0)
{
  int r = a % b;
  a = b;
  b = r;
}
/* Gebe a als ggT aus */

Der größte gemeinsame Teiler kann auch als Summe von zwei Produkten dargestellt werden (Vielfachsummendarstellung); dies ist für unsere Zwecke von großer Wichtigkeit:

d = xa + yb

Um x und y zu berechnen, müssen wir die oben aufgeführte euklidische Gleichungskette von unten nach oben durchgehen; dies nennt man auch den erweiterten euklidischen Algorithmus.

Und so sieht das mit unserem Beispiel 105 und 1001 aus:

d = 7 = 56 − 1 · 49
= 56 - 1 · (105 − 1 · 56)
= (−1) · 105 + (1 + 1 · 1) · 56
= 2 · (1001 − 9 · 105) − 1 · 105
= 2 · 1001 − (2 · 9 + 1) · 105
= 2 · 1001 − 19 · 105

Sie sehen also, dass die Gleichungskette soweit umgeformt wurde, bis die Darstellung der Art x · a und y · b, also x · 1001 bzw. y · 105, war. So konnten wir x = 2 und y = −19 berechnen.

Sind a und b zueinander teilerfremd, d. h. ihr größter gemeinsamer Teiler ist 1, dann gibt es eine ganze Zahl c mit der Eigenschaft

b · c mod a = 1

Man sagt in diesem Fall, dass b modulo a invertierbar ist. Warum ist das so? Nun, da a und b teilerfremd ist, gilt

xa + yb = d = 1

Da xa ein Vielfaches von a ist, ist xa modulo a 0 – es lässt sich ohne Rest durch a teilen. c ist also gleich y.

Jetzt wissen wir auch, wie wir mit Hilfe des willkürlich gewählten e und des bekannten Phi(n) die Zahl d berechnen können. Wie wir bereits gesehen haben, soll gelten:

ed mod Phi(n) = 1 oder anders ausgedrückt:
x · Phi(n) + y · e = 1

y (bzw. c) stellt das gesuchte d dar.

Neben dieser Berechnung nach dem euklidischen Algorithmus existiert noch eine weitere Berechnungsart, die auf dem Satz von Euler beruht, allerdings nicht immer funktioniert.


Zurück zum Hauptartikel über RSA