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

RSA Verschlüsselung - Korrektheit


Zurück zum Hauptartikel über RSA

Wir behaupten: Der RSA-Algorithmus arbeitet korrekt, d. h.: m' = m. Diese Tatsache können wir auch beweisen. Dazu muss ich Ihnen jedoch kurz den Satz von Euler vorstellen. Dieser ist eine Verallgemeinerung des kleinen Satzes von Fermat, der lautet:

Ist n prim und m kein Vielfaches von n, so gilt:

mn−1 mod n = 1

Bei der Eulerschen Verallgemeinerung dieses Satzes gilt:

mΦ(n) mod n = 1

für die teilerfremden natürlichen Zahlen m und n. Besonders für den RSA-Algorithmus ist der Fall von Bedeutung, in dem n das Produkt der beiden Primzahlen p und q ist:

m(p−1)(q−1) mod pq = 1

Der Beweis von RSA erfolgt in mehreren Schritten. Zunächst machen wir uns klar, dass

c = me mod n
m' = cd mod n = (me)d mod n = med mod n

ist. Die Dechiffrierfunktion von RSA arbeitet genau dann korrekt, wenn

med mod n = m

für alle natürlichen Zahlen m gilt.

1. Schritt. Es gilt:

med mod pm mod p = 0
(medm) mod p = 0

Warum ist das so? Wir erinnern uns, dass e und d so gewählt wurden, dass

ed mod Φ(n) = 1

gilt. Daher gibt es auch eine Zahl k mit

ed = 1 + k · Φ(n)

Zur Erläuterung: Durch eine Modulo-Operation erhält man ja nur den Rest, der bei der Division durch eine Zahl anfällt. In diesem Fall ist der Rest 1; addiert man zu diesem Rest das Produkt der Zahlen k und Φ(n), erhält man das Produkt von e und d. Nun wollen wir den Satz von Euler anwenden; dieser erfordert jedoch, dass m und p teilerfremd sind. Dies ist selbstverständlich nicht immer der Fall. Wenn m und p nicht teilerfremd sind, ist p notwendigerweise eine Teiler von m. Das bedeutet:

m mod p = 0

Wenn p ein Teiler von m ist, ist p auch ein Teiler von med. Also gilt:

(medm) mod p = 0

da p sowohl med als auch m teilt. Wir folgern daraus: Wenn ggT(m, p) ungleich 1 ist, gilt unsere Behauptung in diesem Spezialfall. Wenn m und p teilerfremd sind, besagt der Satz von Euler:

mΦ(p) mod p = 1

Für Φ(p) = p − 1 ergibt sich nun:

med mod p = m1+k·Φ(n)
= m · mk·Φ(n) mod p
= m · mk·(p−1)(q−1) mod p
= m · (mp−1)k·q−1 mod p

Zur Erläuterung: Wir haben also ein bisschen umgestellt, so dass wir nun den Satz von Euler direkt auf mp−1 anwenden können (es ist durchaus erlaubt, innerhalb dieser Klammer eine Modulo-Operation durchzuführen):

= m · (mp−1 mod p)k·q−1 mod p
= m · 1k·(q−1) mod p
= m mod p

Unsere zu Anfang gestellte Behauptung gilt also für alle natürlichen Zahlen m, gleich, ob ggT(m, p) gleich oder ungleich 1 ist.

2. Schritt. Nun erfolgt die Beweisführung für q; da dieser Schritt analog zu Schritt 1 verläuft, sei hier auf eine ausführliche Darstellung verzichtet. Nun fassen wir diese beiden Schritte zusammen.

3. Schritt. Da die beiden Primzahlen p und q die Zahl

z = medm

teilen (was wir in den beiden vorherigen Schritten bewiesen haben), teilt auch ihr Produkt n die Zahl z. Also gilt:

med mod pq = m
med mod n = m

Somit haben wir die Aussage des Satzes bewiesen: Der Dechiffrieralgorithmus arbeitet korrekt.

Die Ausführungen dieses Beweises stammen zum großen Teil aus dem Buch "Kryptologie" von Albrecht Beutelspacher.


Zurück zum Hauptartikel über RSA