Zahlentheoretische Algorithmen der KryptografieModulare Exponentiation | |
Die modulare Exponentiation spielt allgemein in der Kryptografie eine große Rolle. Im RSA-Verfahren beispielsweise besteht die Chiffrierung in der Berechnung von me mod n. Hierbei sind m, e und n sehr große Zahlen (typischerweise 512 oder 1024 Bit lang).
Um me mod n zu berechnen, sind zum Glück nicht e Multiplikationen von m mit sich selbst erforderlich. Schon bei einer Länge von e von nur 50 Bit wären dies eine Billiarde Multiplikationen.
Tatsächlich genügen weniger als 2 log(e) Multiplikationen, also weniger als 100 bei einem 50-Bit-Exponenten.
Ausgangspunkt ist die Auswertung der Binärdarstellung des Exponenten nach dem Horner-Schema.
So wird beispielsweise die Binärdarstellung 1101 nach dem Horner-Schema wie folgt ausgewertet:
((((0) · 2 + 1) · 2 + 1) · 2 + 0) · 2 + 1 = 13
Daraus ergibt sich unmittelbar das Verfahren zur Exponentiation, hier also zur Berechnung von m13:
m((((0) · 2 + 1) · 2 + 1) · 2 + 0) · 2 + 1 = m13
Unter Anwendung der Regeln für die Potenzrechnung ergibt sich somit
((((m0)2 · m1)2 · m1)2 · m0)2 · m1 = m13
Zur Auswertung einer k-Bit-Binärzahl sind k Multiplikationen mit 2 und k Additionen erforderlich (bzw. sogar weniger Additionen, wenn die Addition von 0 weggelassen wird). Entsprechend sind für die Exponentiation nach diesem Verfahren bei einem k-Bit-Exponenten k Quadrate und k Multiplikationen erforderlich (bzw. sogar weniger Multiplikationen, wenn die Multiplikation mit m0 = 1 weggelassen wird).
Die folgende Gegenüberstellung zeigt das Programm zur Auswertung einer binär dargestellten Zahl e der Länge k nach dem Horner-Schema sowie das entsprechende Programm zur Exponentiation einer Zahl m mit dem Exponenten e.
|
|
Aus dem zweiten dieser Programme ist das folgende Programm zur modularen Multiplikation beliebig großer Zahlen (Java-Typ java.math.BigInteger) abgeleitet. Nach jeder Multiplikation wird das Zwischenergebnis modulo n reduziert.
| Funktion modexp | ||
| Eingabe: | Zahl m, Exponent e, Modul n | |
| Ausgabe: | me mod n | |
| Methode: |
| |
Die schnelle modulare Multiplikation ist von fundamentaler Bedeutung in der Kryptografie, so etwa für RSA-Verschlüsselung und -Signatur, Diffie-Hellman-Schlüsselvereinbarung, aber auch für den Miller-Rabin-Primzahltest.
Das hier dargestellte Verfahren zur schnellen modularen Exponentiation me mod n erfordert O(log e) Multiplikationen und Reduktionen modulo n, d.h. die Zeitkomplexität verhält sich höchstens linear zur Länge des Exponenten in Bit.
Weiter mit: [Primzahltest] oder ![]() |
|
|
|