Faktorisierungsverfahren

Aufgabenstellung der Zahlentheorie
(Weitergeleitet von Faktorisierungsproblem)

Das Faktorisierungsproblem für ganze Zahlen ist eine Aufgabenstellung aus dem mathematischen Teilgebiet der Zahlentheorie. Dabei soll zu einer zusammengesetzten Zahl ein nichttrivialer Teiler ermittelt werden. Ist beispielsweise die Zahl 91 gegeben, so sucht man eine Zahl wie 7, die 91 teilt. Entsprechende Algorithmen, die dies bewerkstelligen, bezeichnet man als Faktorisierungsverfahren. Durch rekursive Anwendung von Faktorisierungsverfahren in Kombination mit Primzahltests kann die Primfaktorzerlegung einer ganzen Zahl berechnet werden.

Bis heute ist kein Faktorisierungsverfahren bekannt, das nichttriviale Teiler und damit die Primfaktorzerlegung einer Zahl effizient berechnet. Das bedeutet, dass ein enormer Rechenaufwand notwendig ist, um eine Zahl mit mehreren hundert Stellen zu faktorisieren. Diese Schwierigkeit wird in der Kryptografie ausgenutzt. Die Sicherheit von Verschlüsselungsverfahren wie dem RSA-Kryptosystem beruht darauf, dass die Faktorisierung des RSA-Moduls zum Entschlüsseln der Nachrichten schwierig ist; somit würde ein effizientes Faktorisierungsverfahren zum Brechen des RSA-Verfahrens führen. Es ist jedoch denkbar, dass man das RSA-Problem effizienter als das Faktorisierungsproblem lösen kann. Jedoch ist bisher kein solches Verfahren bekannt.

In der theoretischen Informatik werden Probleme in Komplexitätsklassen eingeteilt, die darüber Aufschluss geben, welchen Aufwand die Lösung eines Problems erfordert. Beim Faktorisierungsproblem für ganze Zahlen ist nicht bekannt, welcher Komplexitätsklasse es angehört: Zwar ist bekannt, dass das Problem (in seiner Entscheidungsvariante) in der Klasse NP liegt, aber unbekannt, ob es bereits in polynomieller Zeit lösbar ist. Das heißt, es ist nach aktuellem Wissensstand nicht auszuschließen, dass irgendwann ein Algorithmus entdeckt wird, der ganze Zahlen mit überschaubarem Aufwand faktorisieren kann.

Die besten bekannten Algorithmen sind das 1981 von Carl Pomerance erfundene Quadratische Sieb, das um 1990 von mehreren Mathematikern (u. a. John M. Pollard, Arjen Lenstra, Hendrik Lenstra Jr., Mark S. Manasse, Carl Pomerance) gemeinsam entwickelte Zahlkörpersieb und die Methode der elliptischen Kurven, die 1987 von Hendrik W. Lenstra, Jr. vorgestellt wurde.

Die RSA Factoring Challenge verfolgte bis zu ihrer Aussetzung im Jahre 2007 den aktuellen Forschungsstand auf dem Gebiet der Faktorisierungsverfahren. Daraus ergaben sich Anhaltspunkte für die notwendige Größe der im RSA-Kryptosystem verwandten Semiprimzahlen.

In der Praxis wird man, um eine Zahl zu faktorisieren, wie folgt vorgehen:

  1. Durch Probedivision kleine Faktoren finden/entfernen.
  2. Mit Hilfe eines Primzahltests herausfinden, ob die Zahl eine Primzahl oder eine Primpotenz ist.
  3. Mit der Methode der elliptischen Kurven nach vergleichsweise kleinen Primfaktoren (<1030) suchen.
  4. Mit dem Quadratischen Sieb (für Zahlen mit weniger als 120 Dezimalstellen) oder dem Zahlkörpersieb faktorisieren.

Die ersten beiden Schritte werden dabei gelegentlich vertauscht.

Überblick der Faktorisierungsverfahren

Bearbeiten

Im Folgenden bezeichnet   immer eine zusammengesetzte Zahl, für die ein Teiler ermittelt werden soll.

Probedivision

Bearbeiten

Das einfachste Verfahren zur Ermittlung eines Teilers von   ist die Probedivision. Dabei wird   durch alle Primzahlen beginnend mit der Zwei dividiert, bis sich eine Primzahl als deren Teiler erweist oder bis der Probedivisor größer als   geworden ist. Das Verfahren eignet sich sehr gut zur Bestimmung kleiner Primfaktoren, aber es ist sehr aufwändig, damit eine Zahl mit zwei oder mehr großen Primfaktoren vollständig zu zerlegen.

Berechnung des größten gemeinsamen Teilers

Bearbeiten

Die Probedivision kann durch den Euklidischen Algorithmus oder andere Verfahren zur Bestimmung des größten gemeinsamen Teilers so erweitert werden, dass man alle Primfaktoren von   aus einem bestimmten Intervall findet. Dazu verwendet man das Produkt   aller Primzahlen des Intervalls und berechnet den größten gemeinsamen Teiler der beiden Zahlen   und  . Dieser ist das Produkt von Primfaktoren, die aus dem gewählten Intervall stammen, und man kann aus ihm die einzelnen Primfaktoren zurückgewinnen. Der Vorteil dieses Verfahrens liegt darin, dass man die Probedivision dann nur noch auf den Quotienten   anwenden muss, der viel kleiner als   ist.[1]

Faktorisierungsmethode von Fermat

Bearbeiten

Ein Verfahren, das sich besonders gut eignet, um Teiler in der Nähe von   zu finden, ist die Faktorisierungsmethode von Fermat. Dieser Algorithmus funktioniert nur für ungerade   und nutzt aus, dass sich diese als Differenzen zweier Quadratzahlen darstellen lassen. Er berechnet zuerst die kleinste ganze Zahl  , die größer oder gleich   ist. Anschließend berechnet der Algorithmus die Differenzen  ,  ,   …, bis eine dieser Differenzen eine Quadratzahl ist. Aus dieser werden Teiler von   berechnet.

Weitere Verfahren

Bearbeiten

Shor-Algorithmus

Bearbeiten

Eine besondere Stellung unter den Faktorisierungsverfahren nimmt der Shor-Algorithmus ein. Er kann nicht auf klassischen Rechnern ausgeführt werden, sondern benötigt einen Quantencomputer. Auf diesem kann er jedoch in Polynomialzeit einen Faktor von   berechnen. Allerdings können noch keine Quantencomputer gebaut werden, die über eine für die Faktorisierung großer Zahlen ausreichende Registergröße verfügen. Die Funktion des Shor-Algorithmus beruht darauf, die Ordnung eines Elements der primen Restklassengruppe   mit Hilfe der Quanten-Fouriertransformation zu bestimmen.

Nach Bekanntwerden des Shor-Algorithmus entwickelten Physiker technische Systeme und Versuchsanordnungen, die auf klassischem Weg, ohne Überlagerung von Quantenzuständen, die Faktorisierung natürlicher Zahlen ermöglichen. Dazu gehören z. B. Kernspinresonanz[4], kalte Atome[5], ultrakurze Lichtpulse[6] und Mehrweg-Interferometrie[7][8].

Geschichte

Bearbeiten

Faktorisierungsverfahren der Antike

Bearbeiten

Seit Euklid von Alexandria ca. 300 Jahre vor Christus in seinem Hauptwerk, den Elementen, den Fundamentalsatz der Arithmetik formuliert und bewiesen hatte, war bekannt, dass jede natürliche Zahl eine eindeutige Primfaktorzerlegung besitzt. Mit der Methode der Probedivision, die im Wesentlichen ebenfalls schon Euklid bekannt war, hatte man schon sehr früh ein Verfahren gefunden, diese zu bestimmen; wenngleich es für größere Zahlen ungeeignet ist, da dann zu viel Zeit benötigt wird.

17. bis 19. Jahrhundert

Bearbeiten

Im Jahre 1643 beschrieb Pierre de Fermat in einem Brief (der Adressat ist nicht bekannt, vermutlich Marin Mersenne oder Bernard Frénicle de Bessy) die heutzutage nach ihm benannte Faktorisierungsmethode von Fermat, die darauf basiert, dass man die zu faktorisierende Zahl als Differenz zweier Quadrate darstellt. Diese Methode, die vom Zeitaufwand eher schlechter als die Probedivision ist, bildet die Grundlage für nahezu alle modernen Faktorisierungsverfahren.

20. Jahrhundert, vor der Einführung von Computern

Bearbeiten

1926 veröffentlichte Maurice Kraitchik eine Arbeit, in der er einige Verbesserungen der Faktorisierungsmethode von Fermat vorschlägt. Insbesondere betrachtet er neben der zu faktorisierenden Zahl n auch deren Vielfache, anders ausgedrückt, er sucht eine Kongruenz der Form x2 ≡ y2 (mod n). Um diese zu finden, multipliziert er geeignete Kongruenzen der Form x2y (mod n), die sich leicht und effektiv finden lassen (beschrieben im Artikel Quadratisches Sieb).

Derrick Henry Lehmer und Ralph Ernest Powers schlugen 1931 die sogenannte Kettenbruchmethode vor, um Kongruenzen der Form x2 ≡ y (mod n) zu finden.

20. Jahrhundert, nach Einführung von Computern

Bearbeiten

Mit der Einführung von Computern begann die intensive Erforschung von Faktorisierungsverfahren. Aufbauend auf der Idee von Lehmer und Powers entwickelte John Brillhart in den 1960er Jahren ein auf linearer Algebra über dem endlichen Körper F2 basierendes Verfahren, um aus einer Liste von Kongruenzen der Form x2y (mod n) geeignete auswählen zu können. Zusammen mit Michael Morrison gelang ihm damit im Jahre 1975 die Faktorisierung der für damalige Zeit extrem großen 39-stelligen Fermat-Zahl F7. Insbesondere war es damit zum ersten Mal gelungen, ein Faktorisierungsverfahren mit subexponentieller Laufzeit (der Stellenanzahl) zu finden.

Inspiriert durch das lineare Sieb von Richard Schroeppel konnte Carl Pomerance 1981 eine Beschleunigung des Verfahrens erreichen, indem er ein Siebverfahren an Stelle der bis dato benutzten Probedivision einführte. Da das Siebverfahren sich nicht für die Kettenbruchmethode eignete, ging Pomerance wieder zu dem ursprünglich von Kraitchik vorgeschlagenen Verfahren über. Hierdurch war es möglich geworden, Zahlen mit bis zu 100 Stellen zu faktorisieren; insbesondere gelang es damit 1994, die 129-stellige Zahl RSA-129 zu zerlegen. Dieses als Quadratisches Sieb bezeichnete Verfahren ist heute noch das schnellste bekannte Verfahren zur Faktorisierung von Zahlen mit weniger als 100 Stellen.

In den 1980er Jahren vermutete man, dass Methoden, die auf der Idee von Kraitchik basieren, nicht substanziell schneller als das quadratische Sieb sein können. Diese Vermutung wurde dadurch gestützt, dass es mittlerweile etliche Verfahren mit ähnlichen Laufzeiten gab, und durch ein Ergebnis aus der analytischen Zahlentheorie über glatte Zahlen.

Anfang der 1990er Jahre wurde diese Vermutung durch das Zahlkörpersieb eindrucksvoll widerlegt. Das Zahlkörpersieb wurde 1988 von John Pollard für spezielle Zahlen vorgeschlagen und danach von einer ganzen Reihe von Mathematikern (u. a. John Pollard, Arjen Lenstra, Hendrik Lenstra, Jr., Mark Manasse, Carl Pomerance, Joe Buhler, Len Adlemann) so verändert, dass es für beliebige Zahlen anwendbar wurde. Durch den Übergang zu algebraischen Zahlkörpern war es möglich geworden, die während der Rechnung benutzten Zahlen deutlich kleiner zu halten und damit die erwähnte Beschleunigung zu erreichen. Insbesondere gelang damit 1990 die vollständige Faktorisierung der 155-stelligen Fermat-Zahl F9.

21. Jahrhundert

Bearbeiten

Mit dem Gittersieb (einer von Pollard vorgeschlagenen Variante des Zahlkörpersiebs) und anderen Methoden wurde 2005 die Faktorisierung der bislang größten aus zwei großen Primfaktoren zusammengesetzten Zahl (einer sogenannten Fastprimzahl) ohne spezielle Struktur nach zweijähriger Arbeit auf einem Rechnerpool fertiggestellt. Dabei handelt es sich um die Zahl RSA-200, eine 200-stellige Dezimalzahl, die gemeinsam mit vielen anderen Semiprimzahlen im Rahmen der RSA Factoring Challenge generiert wurde.

Im Jahr 2012 faktorisierte eine Gruppe von 500 Teilnehmern am BOINC-Projekt NFS@Home eine Zahl mit 211 Dezimalziffern und entschlüsselte damit eine Geheimbotschaft, die im Jahr 1997 von Donald Knuth in dem Buch The Art of Computer Programming als seinerzeit unlösbare Aufgabe gestellt wurde. Knuth ersetzte daraufhin das Problem unter Verwendung einer Semiprimzahl mit 318 Dezimalziffern.[9]

Die Liste von Champions im nach Allan Joseph Champneys Cunningham benannten Cunningham-Projekt listet aktuelle Faktorisierungsrekorde für verschiedene Zerlegungsverfahren auf.[10]

Implementierungen

Bearbeiten

Das Programm ARIBAS von Otto Forster implementiert verschiedene der hier besprochenen Verfahren – sei es als Bestandteil der Laufzeitbibliothek oder in Ergänzung zum Buch des Autors über Algorithmische Zahlentheorie.[11]

Literatur

Bearbeiten
Bearbeiten

Einzelnachweise

Bearbeiten
  1. Hans Riesel: Prime Numbers and Computer Methods for Factorization. 2. Auflage. Birkhäuser, Boston 1994, ISBN 0-8176-3743-5
  2. Daniel Shanks: Analysis and Improvement of the Continued Fraction Method of Factorization (Memento vom 1. Dezember 2018 im Internet Archive), (unveröffentlicht, editiert von S. McMath 2004)
    Daniel Shanks: SQUFOF Notes (Memento vom 30. November 2018 im Internet Archive), (unveröffentlicht, editiert von S. McMath 2004)
    Stephen McMath: Daniel Shanks’ Square Forms Factorization (Memento vom 8. Juni 2023 im Internet Archive) (Nov. 2004)
    Stephen S. McMath: Parallel integer factorization using quadratic forms (Mai 2005)
    S. McMath, F. Crabbe, D. Joyner: Continued fractions and parallel SQUFOF (Jan. 2006)
  3. C. P. Schnorr: Factoring integers and computing discrete logarithms via diophantine approximation In: J.-Y. Cai (Hrsg.): Advances in computational complexity theory. AMS 1993, S. 171–182
    H. Ritter, C. Rössner: Factoring via strong lattice reduction algorithm. uni-frankfurt.de (Memento vom 13. Juni 2011 im Internet Archive) (Postscript, Technical Report 1997)
    Antonio Vera: A note on integer factorization using lattices. (PDF, Preprint März 2010; 216 kB)
    C. P. Schnorr: Average Time Fast SVP and CVP Algorithms for Low Density Lattices and the Factorization of Integers. uni-frankfurt.de (Memento vom 1. April 2011 im Internet Archive) (PDF-Datei; 185 kB, Konferenzbeitrag Juni 2010).
  4. L. Vandersypen u. a.: Experimental realization of Shor’s quantum factoring algorithm using nuclear magnetic resonance. (PDF-Datei; 372 kB)
  5. M. Gilowski u. a: Gauss sum factorization with cold atoms. Phys. Rev. Lett. 100 (2008), 030201.
  6. D. Bigourd u. a: Factorization of numbers with the temporal Talbot effect: Optical implementation by a sequence of shaped ultrashort pulses. Phys. Rev. Lett. 100 (2008), 030202.
  7. K. Nitta u. a.: Improvement of a system for prime factorization based on optical interferometer. In: Optical Supercomputing, Lecture Notes Computer Science 5882 (2009), S. 124–129.
  8. V. Tamma u. a.: Factoring numbers with periodic optical interferograms (PDF; 200 kB)
  9. Homepage von Don Knuth – Neuigkeiten. In: stanford.edu. 2012, archiviert vom Original am 22. April 2017; abgerufen am 6. April 2024 (englisch).
  10. List of recent champions for factoring Cunningham numbers. In: purdue.edu. Abgerufen am 6. April 2024 (englisch).
  11. Vgl. insbesondere die Aribas Beispieldatei factor.ari auf der Website des math. Instituts der Ludwig-Maximilians-Universität München