Mathematische Grundlagen

Aus RMG-Wiki
Wechseln zu: Navigation, Suche

Aber nun zu den mathematischen Grundlagen, die für RSA relevant sind.

Aufgabe:

Alice möchte Bob die Punktzahl ihrer letzten Matheklausur übersenden. Da sie nun weiß, dass ein Unbekannter ihre Nachrichten liest, versucht sie die Information so zu übersenden, dass Mallory die Punktzahl nicht herausfindet. Weil sie noch kein Verschlüsselungsverfahren einsetzt, versucht sie es wie folgt:
„Meine Punktzahl ist der größte gemeinsame Teiler der Zahlen 90 und 105.“
Und es funktioniert tatsächlich, Mallory, der Mathe immer gehasst hat, erkennt nicht, welche Punktzahl Alice erreicht hat.

Kannst du die Punktzahl von Alice ermitteln?


Den größten gemeinsamen Teiler (ggT) von natürlichen Zahlen hast du bereits in der 5.Klasse berechnet. Dazu hast du, wie in obigem Beispiel, Zahlen in ihre Primfaktoren zerlegt und daraus anschließend den ggT ermittelt. Das es zu jeder natürlichen Zahl n eine eindeutige Primfaktorzerlegung gibt, zeigt folgender Satz:

Satz 1.0 (Fundamentalsatz der elementaren Zahlentheorie oder Satz über die eindeutige Primfaktorzerlegung)
Jede natürliche Zahl n > 1 lässt sich auf eindeutige Weise in ein Produkt von Primfaktoren zerlegen.


Der größte gemeinsame Teiler ist allgemein wie folgt definiert:

Definition 1.1 Es seien a,b \in \Z. Die größte natürliche Zahl, die sowohl a als auch b teilt, heißt größter gemeinsamer Teiler und wird mit ggT(a,b) bezeichnet.

Es gibt eine effizientere Methode, als die Primfaktorzerlegung, um den ggT zweier natürlicher Zahlen zu bestimmen und damit die Punktzahl von Alice zu ermitteln. Diese Methode wird als Euklidischer Algorithmus bezeichnet, weil er ca. 300 v. Chr. von Euklid in seinem Buch „Elemente“ beschrieben wurde. Historiker vermuten jedoch, dass Euklid den Algorithmus nicht selbst entdeckt hat und schätzen die Entstehungszeit auf ca. 500 v. Chr.
Der Algorithmus beruht auf Division mit Rest.

Algorithmus 1.2 (Euklidischer Algorithmus) Es seien a,b \in \N. Man bestimmt q,r \in \N_0, so dass gilt:

a\ =\ b\cdot p + r\ und\ 0\le r < b

Dann gilt ggT(a,b) =ggT(b,r).
Anschließend wendet man das Verfahren auf b und r an. Dies führt man so lange fort, bis man den ggT direkt bestimmen kann.

Für die Zahlen von Alice würde dies bedeuten:
105 = 90\cdot1 + 15
90\ =\ 6\cdot15 +0
\Rightarrow ggT(90,105) = 15

In allgemeiner ausgeschriebener Form lautet der Euklidische Algorithmus:

Algorithmus 1.3 Es seien a,b \in \N, ohne Beschränkung der Allgemeinheit* (oBdA.) sei a\ge b (*da Analoges auch für b\ge a gilt). Dann existieren eindeutig bestimmte Zahlen r_1 > r_2 > r_3 > ... > r_m > r_{m+1} =0\ und q_1,q_2,q_3,...,q_m \in \N_0 mit

a = q_1\cdot b+r_1  \quad\ \quad\ 0 < r_1< b
b = q_2\cdot r_1+ r_2         \quad\ \quad 0 < r_2 < r_1
r_1= q_3\cdot r_2 + r_3        \quad \quad 0 < r_3 < r_2
                                     \quad \cdot
                                     \quad \cdot
                                     \quad \cdot
r_{m-2}= q_{m-1}\cdot r_{m-1} + r_m  \quad  0 < r_m < r_{m-1}
r_{m-1}= q_m\cdot r_m + r_{m+1}     \quad\quad  0 = r_{m+1}

Folglich bricht das Verfahren nach endlich vielen Schritten ab, es gilt ggT(a,b)= r_m. Denn aus der ersten Gleichung folgt ggT(a,b)=ggT(b, r_1), aus der zweiten ggT(b, r_1)=ggT(r_1, r_2), usw. aus der letzten Gleichung folgt ggT(r_{m-1}, r_m ) = ggT (r_m, r_{m+1}) = r_m