Elementare Zahlentheorie und Kryptographie
Elementare Zahlentheorie und Kryptographie
Elementare Zahlentheorie und Kryptographie
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
Kapitel 3<br />
Das Public-Key-Verfahren<br />
von Rivest, Shamir <strong>und</strong><br />
Adleman<br />
3.1 Der Potenzierungsalgorithmus Square and<br />
Multiply<br />
Bei vielen Berechnungen, die im Zusammenhang mit RSA auftreten, müssen<br />
hohe Potenzen in Z/NZ berechnet werden. Wir stellen einen schnellen Algorithmus<br />
dafür vor.<br />
Sei N ≥ 2 eine (evtl. sehr große) natürliche Zahl. Vorab sei erwähnt, dass man<br />
bei längeren Rechnungen in Z/NZ nach jedem einzelnen Teilschritt modulo N<br />
reduzieren sollte. (Beispiel: Rechne nicht 44 · 123 · 42 = 227304 = 4 mod 5,<br />
sondern 44 · 123 · 42 = 4 · 3 · 2 = 12 · 2 = 2 · 2 = 4 mod 5.)<br />
Sei nun (G, ·) ein abelsches Monoid. Eine Routine zur Berechnung des Produktes<br />
zweier Elemente liege bereits vor. Es ist rechentechnisch ungünstig, zur<br />
Berechnung von x n (x ∈ G, n ∈ N) die Definitionsformel<br />
x n = x · x · · · x<br />
} {{ }<br />
n-mal<br />
heranzuziehen. Dies würde für die Berechnung von x n genau n − 1 Multiplikationen<br />
in Z/NZ erfordern.<br />
Besser ist folgendes Vorgehen. Zuerst berechnet man die 2-adische Entwicklung<br />
des Exponenten n = a 0 + a 1 2 + a 2 2 2 + ·a m 2 m (a i ∈ {0, 1}). Die a i können durch<br />
die Formeln 1 n = a 0 mod 2, a k = n−(a0+···+a k−12 k−1 )<br />
2 k mod 2 rekursiv berechnet<br />
1 Vgl. Übungsblatt 2, Aufg. 3<br />
47