Zahlentheorie und Kryptographie mit dem Computeralgebrasystem Sage

Ähnliche Dokumente
Elliptische Kurven und ihre Anwendungen in der Kryptographie

Das RSA-Verfahren. Armin Litzel. Proseminar Kryptographische Protokolle SS 2009

11. Das RSA Verfahren und andere Verfahren

Einführung in die Algebra

Der Zwei-Quadrate-Satz von Fermat

RSA Verfahren. Kapitel 7 p. 103

Mathematische Grundlagen der Kryptographie. 1. Ganze Zahlen 2. Kongruenzen und Restklassenringe. Stefan Brandstädter Jennifer Karstens

Lenstras Algorithmus für Faktorisierung

10. Public-Key Kryptographie

Public-Key-Algorithmen WS2015/2016

10. Kryptographie. Was ist Kryptographie?

Kap. 8: Speziell gewählte Kurven

Primzahlen und RSA-Verschlüsselung

Digitale Signaturen. Sven Tabbert

Lösungsvorschlag für die Probeklausuren und Klausuren zu Algebra für Informations- und Kommunikationstechniker bei Prof. Dr.

Computeralgebra in der Lehre am Beispiel Kryptografie

7 Rechnen mit Polynomen

Zusammenfassung der Vorlesung vom

Elliptische Kurven in der Kryptographie

Konzepte von Betriebssystemkomponenten: Schwerpunkt Sicherheit. Asymmetrische Verschlüsselung, Digitale Signatur

Erste Vorlesung Kryptographie

Definition:Eine meromorphe Modulform vom Gewicht k Z ist eine meromorphe. f : H C. (ii) C > 0, so daß f(z) im Bereich Im z > C keine Singularität hat.

Zahlen und das Hüten von Geheimnissen (G. Wiese, 23. April 2009)

Das RSA-Verschlüsselungsverfahren 1 Christian Vollmer

IT-Sicherheitsmanagement. Teil 12: Asymmetrische Verschlüsselung

Zur Sicherheit von RSA

Codierungsverfahren SS Reed-Solomon-Codes zur Mehrblock-Bündelfehler-Korrektur

Diffie-Hellman, ElGamal und DSS. Vortrag von David Gümbel am

GF(2 2 ) Beispiel eines Erweiterungskörpers (1)

1 Mathematische Grundlagen

Grundlagen der höheren Mathematik Einige Hinweise zum Lösen von Gleichungen

Über das Hüten von Geheimnissen

Kryptographische Verfahren auf Basis des Diskreten Logarithmus

Das Mathematik-Abitur im Saarland

Was können Schüler anhand von Primzahltests über Mathematik lernen?

3.1. Die komplexen Zahlen

Fachschaft Mathematik und Informatik (FIM) LA I VORKURS. Herbstsemester gehalten von Harald Baum

Kryptographie mit elliptischen Kurven

Lineare Gleichungssysteme

Kryptographie Reine Mathematik in den Geheimdiensten

Grundbegriffe der Informatik

Zeichen bei Zahlen entschlüsseln

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Mathematik für Informatiker II. Beispiellösungen zur Probeklausur. Aufgabe 1. Aufgabe 2 (5+5 Punkte) Christoph Eisinger Sommersemester 2011

Einfache kryptographische Verfahren

Kryptographie eine erste Ubersicht

IT-Sicherheit: Kryptographie. Asymmetrische Kryptographie

Approximation durch Taylorpolynome

Binärdarstellung von Fliesskommazahlen

Anhand des bereits hergeleiteten Models erstellen wir nun mit der Formel

Modul Diskrete Mathematik WiSe 2011/12

Vermeiden Sie es sich bei einer deutlich erfahreneren Person "dranzuhängen", Sie sind persönlich verantwortlich für Ihren Lernerfolg.

Division Für diesen Abschnitt setzen wir voraus, dass der Koeffizientenring ein Körper ist. Betrachte das Schema

Probabilistische Primzahltests

5. Übung zum G8-Vorkurs Mathematik (WiSe 2011/12)

Zusatztutorium,

Algebra. Patrik Hubschmid. 8. Oktober 2013

Analysis I für Studierende der Ingenieurwissenschaften

DHBW Karlsruhe, Vorlesung Programmieren, Klassen (2)

Aufgaben zur Flächenberechnung mit der Integralrechung

Professionelle Seminare im Bereich MS-Office

Umgekehrte Kurvendiskussion

Grundlagen der Theoretischen Informatik, SoSe 2008

Einführung in die moderne Kryptographie

11. Primfaktorzerlegungen

Die reellen Lösungen der kubischen Gleichung

12 Kryptologie. ... immer wichtiger. Militär (Geheimhaltung) Telebanking, Elektronisches Geld E-Commerce

Kapitel 3: Etwas Informationstheorie

11.3 Komplexe Potenzreihen und weitere komplexe Funktionen

Asymmetrische. Verschlüsselungsverfahren. erarbeitet von: Emilia Winkler Christian-Weise-Gymnasium Zittau

WLAN und VPN im b.i.b. mit Windows (Vista Home Premium SP1) oder Windows 7

RSA-Verschlüsselung. Verfahren zur Erzeugung der beiden Schlüssel:

Algebraische Kurven. Vorlesung 26. Die Schnittmultiplizität

10.6 Authentizität. Geheimhaltung: nur der Empfänger kann die Nachricht lesen

3.3 Eigenwerte und Eigenräume, Diagonalisierung

Informatik Kurs Simulation. Hilfe für den Consideo Modeler

Authentikation und digitale Signatur

8. Quadratische Reste. Reziprozitätsgesetz

Konzepte von Betriebssystem-Komponenten: Schwerpunkt Sicherheit Grundlagen: Asymmetrische Verschlüsslung, Digitale Signatur

Ein polyadisches Zahlensystem mit der Basis B ist ein Zahlensystem, in dem eine Zahl x nach Potenzen von B zerlegt wird.

50. Mathematik-Olympiade 2. Stufe (Regionalrunde) Klasse Lösung 10 Punkte

Objektorientierte Programmierung für Anfänger am Beispiel PHP

1. Man schreibe die folgenden Aussagen jeweils in einen normalen Satz um. Zum Beispiel kann man die Aussage:

6.2 Scan-Konvertierung (Scan Conversion)

Homomorphe Verschlüsselung

9 Schlüsseleinigung, Schlüsselaustausch

Forschen - Schreiben - Lehren

WS 2008/09. Diskrete Strukturen

27. Algorithmus der Woche Public-Key-Kryptographie Verschlüsseln mit öffentlichen Schlüsseln

Das Handbuch zu KNetAttach. Orville Bennett Übersetzung: Thomas Bögel

Umstellung des Schlüsselpaares der Elektronischen Unterschrift von A003 (768 Bit) auf A004 (1024 Bit)

Statistische Untersuchungen zu endlichen Funktionsgraphen

Algorithmische Kryptographie

Mathematischer Vorbereitungskurs für Ökonomen

A1.7: Entropie natürlicher Texte

Kryptologie. Verschlüsselungstechniken von Cäsar bis heute. Arnulf May

DLP. Adolphe Kankeu Tamghe ALZAGK SEMINAR. Bremen, den 18. Januar Fachbereich Mathematik und Informatik 1 / 27

Grammatiken. Einführung

schnell und portofrei erhältlich bei beck-shop.de DIE FACHBUCHHANDLUNG mitp/bhv

2 Die Terminaldienste Prüfungsanforderungen von Microsoft: Lernziele:

Transkript:

Heiko Knospe 1 Zahlentheorie und Kryptographie mit dem Computeralgebrasystem Sage Abstract. Der Beitrag behandelt den Einsatz von Sage (http://sagemath.org) im Rahmen einer Lehrveranstaltung über Kryptographie und einige weiterführende Aspekte. Sage ist ein leistungsfähiges Computeralgebrasystem, das als Open Source Software zur Verfügung steht. Sage eignet sich sehr gut für Berechnungen in endlichen Gruppen, Ringen und Körpern wie sie für kryptographische Anwendungen benötigt werden. Das System lässt sich einfach durch eigene Funktionen und Routinen erweitern, die in Python programmiert werden. Sage unterstützt verschiedene zahlentheoretische Berechnungen über Z und den Restklassenringen Z/nZ und erlaubt so einen schnellen Zugang zu kryptographischen Verfahren wie RSA und Diffie-Hellmann. Der Beitrag enthält hierzu einige Beispiele. Zusätzlich werden auch elliptische Kurven über endlichen Körpern und ihre kryptographischen Anwendungen angesprochen. Schließlich werden auch Berechnungen zur Arithmetik elliptischer Kurven über Zahlkörpern (wie Q) durchgeführt und die Mordell-Weil Gruppe, Modulformen sowie L-Funktionen bestimmt. Einleitung Kryptographische Verfahren zur Verschlüsselung von Texten werden bereits seit der Antike verwendet. Die moderne Kryptographie und die Verwendung mathematischer und informationstheoretischer Methoden geht insbesondere auf Arbeiten von Claude Shannon [1] kurz nach dem zweiten Weltkrieg zurück. Seit den 1970er Jahren werden kryptographische Verfahren entwickelt, die bei richtiger Verwendung auch hohen Sicherheitsansprüchen genügen können. Im Internet-Zeitalter gehört Kryptographie zu den Basistechnologien, die Bestandteil vieler informationstechnischer Systeme, Verfahren und Protokolle sind. Die moderne Kryptographie beschäftigt sich nicht nur mit Verschlüsselung, sondern allgemein mit mathematischen Verfahren zur Erreichung von Sicherheitszielen. Hierzu zählt neben der Vertraulichkeit auch die Integrität und die Verfügbarkeit sowie weitere verwandte Sicherheitsziele. So wird Kryptographie auch zur Authentifikation von Personen oder Systemen eingesetzt und zum Schutz von Daten vor Veränderungen und Manipulationen.

2 Vorlesungen über Kryptographie (die zum Teil auch Kryptologie genannt werden, wenn die Kryptoanalyse einen Schwerpunkt bildet) werden auch in Bachelor- oder Master-Studiengängen der Informatik und der Ingenieurwissenschaften angeboten. Dieser Beitrag behandelt eine Kryptographie- Lehrveranstaltung für Master-Studierende, die seit vielen Jahren an der Fachhochschule Köln stattfindet. Auf diesem Niveau wird ein tieferes Verständnis der mathematischen Methoden und die Fähigkeit zur Auswahl, Bewertung und Implementierung kryptographischer Verfahren angestrebt. Die modernen Verfahren erfordern Kenntnisse der abstrakten Algebra und der Zahlentheorie, die über die üblichen Mathematik-Grundlagen aus einem Bachelor-Studium in Informatik oder einer Ingenieurwissenschaft hinausgehen. Zum Teil kann aber auf Kenntnisse über Gruppen, Körper und Restklassen ganzer Zahlen aufgebaut werden. Zu den Themen gehören z.b. zyklische und endliche abelsche Gruppen, der chinesische Restsatz, das kleine Theorem von Fermat sowie Polynomringe und ihre Restklassenringe. Zusätzlich sind auch Punktegruppen von elliptischen Kurven über endlichen Körpern von Interesse. Dabei ist der Einsatz eines Computeralgebrasystems sinnvoll, das bestimmte Berechnungen durchführt und die Entwicklung eigener Routinen erlaubt. Für praxisnahe Beispiele aus der Kryptographie, die häufig Zahlen mit über 1000 Binärstellen verwenden, ist der Computereinsatz ohnehin erforderlich. Ein gutes Verständnis der algebraischen und zahlentheoretischen Zusammenhänge ist aber trotz der Verwendung eines solchen Systems unbedingt notwendig. Im folgenden Kapitel wird kurz in die Sage Software eingeführt, die in der Lehrveranstaltung und im Praktikum verwendet wurde. Der anschließende Abschnitt enthält einige grundlegende zahlentheoretische und kryptographische Verfahren, die mit Sage realisiert wurden. Dann werden elliptische Kurven und einige weiterführende Themen besprochen. Die Mathematik-Software Sage Sage [2] (auch sagemath genannt) ist eine freie Mathematik-Software (GNU General Public License), die umfangreiche Funktionen aus verschiedenen Bereichen der Mathematik zur Verfügung stellt. Sage enthält andere freie Mathematik-Software wie GAP, Maxima, Singular, PARI, R und besitzt Schnittstellen zu kommerzieller Software wie Mathematica und Maple. Ei-

3 ne besondere Stärke sind die algebraischen, zahlentheoretischen und arithmetischen Funktionen, die Möglichkeit symbolischer Berechnungen und die leicht zugängliche Syntax, die häufig der üblichen mathematischen Schreibweise entspricht. Sage wird nicht nur für Lern- und Unterrichtszwecke, sondern auch für mathematische Forschung verwendet und wird in zahlreichen Veröffentlichungen genannt. Sage enthält einen Webserver und bietet ein Browser-basiertes Notebook. In der Programmiersprache Python können eigene Routinen und Funktionen geschrieben und unmittelbar in ein Notebook integriert werden. Die folgenden Abschnitte enthalten hierzu einige Beispiele. Für den Einsatz in der Kryptographie-Lehrverstaltung wurde Sage auf allen Praktikumsrechnern unter Ubuntu-Linux installiert. Die Studierende können die Software auch problemlos auf eigenen Rechnern installieren (unter Linux und Mac OS); allerdings werden ca. 2 GB Plattenplatz benötigt und eine Windows Version steht nur als VirtualBox Image zur Verfügung. Alternativ kann auch eine Online-Version von Sage verwendet werden (cloud.sagemath.com). Grundlagen der Zahlentheorie und Kryptographie mit Sage Elementare Zahlentheorie Zu den wichtigen Objekten der elementaren Zahlentheorie zählen die Restklassenringe Z/nZ und die Primkörper GF (p). Sage unterstützt alle elementaren Berechnungen einschließlich der Division und der effizienten modularen Exponentiation, z.b.: a =117; b =125; n =131; print mod (a*b,n), mod (a-b,n), mod (1/b,n), power_mod (a,b,n) 84 123 109 112 Eigene Funktionen können in Python geschrieben werden. Zum Beispiel berechnet die folgende Funktion units die Gruppe der multiplikativ invertierteren Restklassen (Einheiten) (Z/nZ) : def units (n): for i in range (1,n): if gcd (i,n )==1: print i,

4 units (120) 1 7 11 13 17 19 23 29 31 37 41 43 47 49 53 59 61 67 71 73 77 79 83 89 91 97 101 103 107 109 113 119 Für kryptographische Verfahren wie Diffie-Hellmann (zur Schlüsselvereinbarung) und ElGamal (z.b. zur Signatur) [3] werden Primzahlen p sowie Elemente g GF (p) großer oder maximaler Ordnung p 1 benötigt (Primitivwurzeln). Primzahlen werden mit is_prime oder is_pseudoprime überprüft (u.a. Miller-Rabin Test). Die multiplikative Ordnung von Elementen berechnet mod(a,n).multiplicative_order(). Primitivwurzeln können auch mit Hilfe der Potenzen g p 1 n für alle Primteiler n von p 1 getestet werden: def computepowers (g,p): for n in (p -1). prime_divisors (): print n,(p -1)//n, power_mod (g,(p -1)//n,p) computepowers ( 3, 7919) 2 3959 1 37 214 4930 107 74 4828 In der Tat ist die Ordnung von 3 in GF (7919) nicht maximal, sondern nur 7918 2 = 3959. RSA Verfahren RSA (Rivest, Shamir, Adleman) gehört zu den wichtigsten Verfahren der Public-Key Kryptographie, das u.a. zur Signatur und zur Verschlüsselung von Sitzungsschlüsseln eingesetzt wird [3]. Die Definition eines RSA Kryptosystems und die Anwendung des Verfahrens kann mit Unterstützung von Sage mit realistischen Parametern erfolgen. Zunächst werden zwei große Primzahlen p und q gewählt. Der RSA Modulus ist n = pq. p= next_prime (ZZ. random_element (2^512)); q= next_prime (ZZ. random_element (2^512)); n=p*q; Die Ordnung der Gruppe (Z/nZ) ist ϕ(n) = (p 1)(q 1). Wir setzen z.b. e = 2 16 + 1 als öffentlichen Exponenten. Die Zulässigkeit wird mit gcd(e,phi) überprüft. Der private Exponent ist d = e 1 mod ϕ(n) und hat in diesem Beispiel über 1000 Binärstellen. phi =(p -1)*(q -1); e =2^16+1; gcd (e,phi ) 1 d= mod (1/e,phi ) Anschließend führen wir eine Verschlüsselung c = m e mod n eines Klartextes m durch und zur Kontrolle die Entschlüsselung m = c d mod n des Chiffretextes c.

5 m =1234567890; c= power_mod (m,e,n); power_mod (c,zz(d),n) 1234567890 Man beachte, dass Sage korrekt zwischen Restklassen und ganzen Zahlen unterscheidet. d ist nach Definition ein Element von Z/ϕ(n)Z und mit ZZ(d) erhält man wieder einen ganzzahligen Repräsentanten. Polynomringe Sage unterstützt Polynomringe und Restklassenringe wie sie u.a. zur Konstruktion der endlichen Körper GF (p n ) benötigt werden. R = PolynomialRing (GF (2), x ) Es ist R = GF (2)[x]. Das Polynom a(x) = x 8 + x 4 + x 3 + x + 1 ist irreduzibel über GF (2): a=r(x ^8+ x ^4+ x ^3+ x +1); a. is_irreducible () True Wir definieren den Restklassenring S = R/(a(x)), der isomorph zum Körper GF (2 8 ) mit 256 Elementen ist: I=a*R; S = R. quotient_ring (I); Sage unterstützt Berechnungen im Körper GF (2 8 ), z.b.: S(x ^2)* S(x ^7);1/ S(x ^2) xbar ^5 + xbar ^4 + xbar ^2 + xbar xbar ^7 + xbar ^6 + xbar ^3 + xbar + 1 xbar ist die Restklasse des Polynoms x modulo dem Hauptideal I = (a(x)). Die multiplikative Invertierung von Elementen in GF (2 8 ) ist ein wichtiger Bestandteil des kryptographischen Standardverfahrens AES. Mit Hilfe einer eigenen Sage Routine können die Studierende alle Inversen ohne großen Aufwand berechnen. V= VectorSpace (GF (2),8); for v in list (V): fx= S(v [0]+ v [1]* x+v [2]* x ^2+ v [3]* x ^3+ v [4]* x^4 +v [5]* x ^5+ v [6]* x ^6+ v [7]* x ^7) if (fx!= 0): print fx, ",inverse =", 1/ fx 1, inverse = 1 xbar, inverse = xbar ^7 + xbar ^3 + xbar ^2 + 1 xbar + 1, inverse = xbar ^7 + xbar ^6 + xbar ^5 + xbar ^4 + xbar ^2 + xbar...

Elliptische Kurven Weierstraß-Gleichung 6 Elliptische Kurven über einem Körper K sind glatte Kurven im zweidimensionalen projektiven Raum P 2 (K), die (für char(k) 2, 3) durch eine Weierstraß-Gleichung mit a, b K definiert werden: y 2 = x 3 + ax + b Die folgende Abbildung 1 zeigt Beispiele der Punktemengen von zwei elliptischen Kurven über R. E= EllipticCurve ([ -1,0]); E. plot ( plot_points =500, thickness =3, xmin =-2, xmax =2) Abbildung 1: Elliptische Kurven y 2 = x 3 x (links) und y 2 = x 3 + 3x + 5 (rechts) über R Elliptische Kurven über einem beliebigen Körper K haben die Eigenschaft, dass ihre Punktemenge E(K) eine abelsche Gruppe bildet. Das neutrale Element ist der Punkt O = [0 : 1 : 0] P 2 (K). Man zeigt, dass eine Geraden durch zwei Punkte P, Q E(K) (bzw. eine Tangente falls P = Q) die Kurve in genau einem dritten Punkt R schneidet (siehe Abbildung 2). Man definiert P Q R = O bzw. P Q = R Kryptographie mit Elliptischen Kurven Seit einiger Zeit gehört die Elliptische-Kurven-Kryptographie zu den Standardverfahren, die z.b. zur Signatur und zur Schlüsselvereinbarung eingesetzt werden. Hierbei ersetzt die Punktegruppe E(K) die multiplikative

7 Abbildung 2: Eine Gerade durch drei Punkte einer elliptischen Kurve. Gruppe K, wobei K = GF (p) oder K = GF (2 n ). Vorteile sind insbesondere deutlich kürzere Schlüssellängen (bei ähnlichen Sicherheitseigenschaften) und bessere Laufzeiten. Man wählt eine Primzahl p, eine elliptische Kurve E über K = GF (p) und einen Punkt G E(GF (p)) der Ordnung q. Diese Parameter sind öffentlich. Statt Primkörpern GF (p) können auch binäre Körper K = GF (2 n ) verwendet werden. Für kryptographische Operationen wie Signatur, Verschlüsselung oder Schlüsselvereinbarung wird ein geheimer Schlüssel a N, a < q gewählt. Der Punkt A = a G E(K) ist wiederum öffentlich und die Sicherheit der Verfahren basiert auf der Komplexität der Berechnung von a wenn G und A bekannt sind (Elliptic Curve Discrete Logarithm Problem). Die Laufzeit der bekannten Algorithmen hängt (nach derzeitigem Wissensstand) exponentiell von der binären Länge von q ab, sofern die verwendeten Parameter (p, E, G und q) bestimmte Eigenschaften haben (Elliptic Curve Domain Parameters) [4]. Sage berechnet und zeichnet die Punkte elliptischer Kurven über endlichen Körpern (siehe Abbildung 3). E= EllipticCurve (GF (19),[3,5]); E. plot ( size =200)

8 Abbildung 3: Punkte der elliptischen Kurve y 2 = x 3 +3x+5 über GF (19). Sage bestimmt auch die Struktur der Punktegruppe und ein erzeugendes Element der Gruppe: E. abelian_group (); E. gens () Additive abelian group isomorphic to Z /26 [(4 : 9 : 1)] Für reale Anwendungen werden Primzahlen zwischen 160 und 512 Bit verwendet und Punktegruppen ähnlicher Ordnung. Sage generiert z.b. eine zufällige Primzahl p und eine Kurve y 2 = x 3 3x + B über GF (p): p= next_prime (ZZ. random_element (2^192)); B=ZZ. random_element (p); E= EllipticCurve (GF(p),[ -3,B]) p;b; 2265897712610312659100696832376027818822537191953033366951 216577165950421424869642433506583908154172264548974186266 Es gilt p 3 mod 4 und B ist kein quadratischer Rest modulo p; legendre_symbol(b,p) liefert 1. Man berechnet die Punktegruppe E(GF (p)), die stets ein Produkt von höchstens zwei zyklischen Gruppen ist: E. abelian_group () Additive abelian group isomorphic to Z /2265897712610312659100696832338914637857316453280548120290

9 Sei N p = #E(GF (p)) die Anzahl der Punkte und a p = p+1 N p die Spur. Nach einem bekannten Theorem von Hasse [5] gilt allgemein die folgende Abschätzung: a p 2 p Dies kann auch in diesem Fall leicht verifiziert werden. Man faktorisiert N p : np=e. cardinality (); factor (np) 2*5*7*13*79*31518955523860240076515465744038317399601007835311561 N p enthält also einen großen Primfaktor q. Wir bestimmen einen Punkt G E(GF (p)) der Ordnung q: q=np /(2*5*7*13*79); G=E. gens ()[0]*( np //q); G; G. order () (1290439346564385736431323600668612882247768444022409601995 : 111763287833943499426597701126660247857206994556030441110 : 1) 31518955523860240076515465744038317399601007835311561 Die Kurve E könnte nun zusammen mit dem Punkt G für kryptographische Zwecke verwendet werden. Allerdings sehen die Anforderungen in [4] vor, dass die Ordnung N p der Punktegruppe eine Primzahl ist. Wir untersuchen dennoch anhand dieses Beispiels einige Sicherheitsanforderungen an elliptische Kurven. G hat Primzahlordnung q mit 175 Binärstellen, so dass Angriffe ausscheiden, die auf einer Zerlegung von G E(GF (p)) in Untergruppen basieren. Die allgemeinen Verfahren zur Berechnung des diskreten Logarithmus wie Babystep-Giantstep oder Pollards-ρ-Methode benötigen dann ungefähr 2 175/2 Operationen und stehen daher ebenfalls nicht zur Verfügung. Man verifiziert außerdem, dass die Spur a p weder 0 noch 1 ist, d.h. die elliptische Kurve E ist weder supersingulär noch anomal. Außerdem gilt N p < p. ap=p+1 - np;ap 37113180965220738672485246662 Weiterhin sollen Angriffe ausgeschlossen werden, die auf der Weil- oder der Tate-Paarung basieren. Hierfür sollte q kein Teiler von p l 1 sein für kleine Werte l N. Der kleinste solche Wert l > 0 ist die multiplikative Ordnung von p modulo q, die in diesem Beispiel ausreichend groß und nahe am maximalen Wert q 1 ist: l= mod (p,q). multiplicative_order (); l;(q -1)/ l 5253159253976706679419244290673052899933501305885260 6 Schließlich gibt es eine Anforderung an die Klassenzahl der Ganzheitsrings des Quotientenkörpers des Endomorphismenrings von E, die hier nicht untersucht wird.

10 Elliptische Kurven über C Die komplexen Punkte E(C) bilden eine Riemannsche Fläche und insbesondere einen Torus. Man zeigt, dass ω = dx y ein holomorphes Differential ist. Für P E(C) hängt das Integral P O ω vom Integrationspfad ab und ist nur wohlbestimmt modulo der Gruppe der Perioden, die durch die Integrale über geschlossene Wege bestimmt werden. Die Perioden bilden ein Gitter Λ C, das von zwei Perioden erzeugt wird. Die Integration über ω liefert dann einen komplex-analytischen Isomorphismus E(C) = C/Λ und die Punkte der elliptischen Kurve entsprechen einer Parallelogrammfläche (siehe Abbildung 4) wobei gegenüberliegende Seiten identifiziert werden [5]. E= EllipticCurve ([3,5]); L=E. period_lattice (); w1,w2=l. basis (); w1,w2 ( 2. 85801308761229, 1. 42900654380614 + 1. 01215590531558* I) Abbildung 4: Periodengitter und fundamentales Parallelogramm der elliptischen Kurve y 2 = x 3 + 3x + 5. Umgekehrt ordnet die Weierstraßsche-p Funktion (z) und ihre Ableitung (z) der Restklasse z mod Λ einen Punkt P = ( (z), (z)) der Kurve zu. (z) und (z) sind Λ-periodisch (elliptische Funktionen), so dass

11 die Abbildung wohldefiniert ist. (z) besitzt in den Gitterpunkten jeweils doppelte Polstellen; der Bildpunkt der Gitterpunkte ist O E(C). Sage liefert die Laurent-Reihe der Weierstraßschen-p Funktion und ihrer Ableitung. E. weierstrass_p (10); E. weierstrass_p (10). derivative () z^-2-3/5* z^2-5/7* z^4 + 3/25* z^6 + 9/77* z^8 + O(z ^10) -2*z^-3-6/5* z - 20/7* z^3 + 18/25* z^5 + 72/77* z^7 + O(z ^9) Elliptische Kurven E über C entsprechen Gittern in C, wobei Multiplikation des Gitters mit einer komplexen Zahl (ungleich 0) eine isomorphe elliptische Kurve ergibt. Es reicht also, normalisierte Gitter Λ τ = {1, τ} zu betrachten und durch Wahl einer positiven Orientierung der Basis kann man annehmen, dass τ in der oberen Halbebene H = {z C : Im(z) > 0} liegt. Die normalisierte Basis kann auch in unserem Beispiel leicht berechnet werden: 1,w2/w1 (1, 0. 500000000000000 + 0. 354146700623117* I) Arithmetik elliptischer Kurven Sei E eine elliptische Kurve über einem Zahlkörper K (eine endliche Körpererweiterung von Q). Die Untersuchung der arithmetischen Eigenschaften von E, z.b. die Struktur der Punktegruppe (Mordell-Weil Gruppe) E(K), ist seit Jahrzehnten Gegenstand mathematischer Forschung. Eines der zentralen Theoreme ist der Satz von Mordell-Weil [5]: E(K) ist eine endlich erzeugte abelsche Gruppe und es gilt: E(K) = Z r Z/m 1 Z Z/m 2 Z wobei r, m 1, m 2 N, r 0, m 1, m 2 1. r ist der Rang der Punktegruppe und die endlichen Gruppen (die trivial sein können) bilden den Torsionsanteil. Es existieren Algorithmen, welche die Mordell-Weil Gruppe in der Regel berechnen [5]. Für die elliptische Kurve y 2 = x 3 + 3x + 5 gilt z.b. E(Q) = Z und der Punkt G = (1, 3) ist ein Erzeuger dieser Gruppe: E. rank (); E. torsion_subgroup (); E. gens () 1 Torsion Subgroup isomorphic to Trivial group [(1 : -3 : 1)] Man erkennt im folgenden Beispiel, dass die Nenner der Koordinaten der Punkte n G für steigendes n größer werden. Aus einem Theorem vom Siegel-Mahler folgt allgemein, dass E nur endlich viele Punkte über K besitzt, deren Nenner nur endlich viele vorab fixierte Primzahlen und ihre Potenzen enthalten [5].

12 G=E. gens ()[0] for n in range (1,15): print n, * G =, n*g 1 * G = (1 : -3 : 1) 2 * G = ( -1 : 1 : 1) 3 * G = (4 : 9 : 1) 4 * G = (11 : -37 : 1) 5 * G = ( -11/25 : - 237/ 125 : 1) 6 * G = ( 1/ 36 : 487/ 216 : 1) 7 * G = ( 1381/ 49 : 51423/ 343 : 1) 8 * G = ( 3371/ 1369 : - 264743/ 50653 : 1) 9 * G = ( - 23396/ 20449 : - 773739/ 2924207 : 1) 10* G = ( 276431/ 156025 : 245565829/ 61629875 : 1) 11* G = ( 14027521/ 177241 : - 52550585313/ 74618461 : 1) 12* G = ( 13242529/ 34152336 : - 497828458511/ 199586251584 : 1) 13* G = ( -1740413279/2466810889:194963605826727/122519096423963:1) 14* G = (100092818639/14396880169:32862533772089699/1727438460837803:1) E(Q) enthält nur neun Punkte mit ganzzahligen Koordinaten: O, ±G, ±2 G, ±3 G, ±4 G. Mit Hilfe der Sage-Funktion E.S_integral_points([p1,p2,..]) können diejenigen Punkte bestimmt werden, die höchstens die angegebenen Primzahlen im Nenner haben. L-Funktionen Zu den interessantesten mathematischen Objekten zählen L-Funktionen, die eine Verbindung zwischen analytischen und arithmetischen Eigenschaften herstellen. Hierzu zählt insbesondere die Riemannsche Zeta-Funktion ζ(s) = (1 p s ) 1 = n s p prim Elliptischen Kurven (über Q) wird in ähnlicher Weise eine L-Funktion L(E, s) zugeordnet: L(E, s) = p good n=1 (1 a p p s + p 1 2s ) 1 (1 a p p s ) 1 = p bad a n n s Falls die Reduktion modulo p eine elliptische Kurve über GF (p) liefert, so nennt man p eine Primzahl guter Reduktion. In diesem Fall ist a p = p+1 N p der oben definierte Spurwert, der sich aus der Abweichung der Punktezahl N p = #E(GF (p)) von p+1 ergibt. Wir betrachten erneut die elliptische Kurve y 2 = x 3 + 3x + 5 und berechnen die Spurwerte a p. Die Primfaktoren des modularen Führers N von E enthalten die Stellen p schlechter Reduktion, in unserem Beispiel sind dies p = 2, 3, 29. Beispielsweise erhalten wir modulo p = 3 die Kurve y 2 = x 3 + 2 = (x + 2) 3, so n=1

13 dass (1, 0) ein singulärer Punkt ist; die Weierstrass-Gleichung liefert also modulo 3 keine elliptische Kurve. for p in primes (1,50): print p,e.an(p),"; ", 2 0 ; 3 0 ; 5-4 ; 7 1 ; 11 3 ; 13 5 ; 17-5 ; 19-6 ; 23-4 ; 29 1 ; 31-6 ; 37-10 ; 41-2 ; 43-2 ; 47-13 ; N=E. conductor (); factor (N) 2^2 * 3^2 * 29 Die Eigenschaften solcher L-Funktionen sind ein Forschungsgegenstand mit einer Anzahl anspruchsvoller Theoreme und Vermutungen. Zu den interessantesten Aspekten gehört die Verbindung von elliptischen Funktionen zu Modulformen [6]. Die Taniyama-Shimura-Weil Vermutung, inzwischen der Modularitätssatz, besagt, dass elliptische Kurven über Q modular sind. Insbesondere stimmen die Koeffizienten a n der L-Funktion L(E, s) mit den Fourier-Koeffizienten einer Modulform f überein, die eine Spitzenform vom Gewicht 2 für die Gruppe Γ 0 (N) ist. Dies bedeutet, dass f eine holomorphe Funktion auf der oberen Halbebene H (und ) ist und folgende Transformationseigenschaft gegenüber Möbiustransformationen hat: ( ) ( ) az + b f = (cz + d) 2 a b f(z) für SL cz + d c d 2 (Z) und c 0 mod N Insbesondere gilt f(z + 1) = f(z) und f besitzt eine Fourier-Entwicklung f = n=1 a nq n in q = e 2πiz. Wir bestimmen die Modulform, die der elliptischen Kurve y 2 = x 3 +3x+5 zugeordnet ist, und ihre Fourier-Reihe: L=E. modular_form (); L. q_expansion (49) q - 4*q^5 + q^7 + 3*q^11 + 5*q^13-5*q^17-6*q^19-4*q ^23+ 11* q ^25+ q ^29-6*q^31-4*q^35-10* q ^37-2*q^41-2*q^43-13* q ^47 + O(q ^49) Die Fourier-Koeffizienten a n stimmen für Primzahlen n = p mit den Spur- Koeffizienten von E überein, z.b. gilt a 19 = 6. Wir wissen in der Tat, dass E über GF (19) genau 19 + 1 ( 6) = 26 Punkte besitzt. Man kann dann zeigen, dass L(E, s) eine holomorphe Fortsetzung auf C besitzt. Von besonderem Interesse ist das Verhalten bei s = 1. Wir bestimmen für unser Beispiel die Taylorreihe in z = s 1: E. lseries (). taylor_series (1,20,5) 0.00000 + 2.1909* z - 2.3231* z^2 + 1.0988* z^3 + 0.58345* z^4 + O(z ^5) L(E, s) besitzt in s = 1 eine einfache Nullstelle. Die Birch und Swinnerton- Dyer Vermutung besagt u.a., dass die Nullstellenordnung gleich dem Rang der Mordell-Weil-Gruppe ist; die Vermutung konnte inzwischen teilweise bewiesen werden (für Rang 1). In unserem Beispiel hat die Punktegruppe der elliptischen Kurve tatsächlich den Rang 1. Man beachte, dass

14 die Definition der L-Funktion L(E, s) nur Eigenschaften von E über den endlichen Körpern GF (p) verwendet; dennoch erhält man auf diese Weise eine Aussage über das Verhalten von E über dem Zahlkörper Q. Zusammenfassung Der Beitrag behandelt den Einsatz des Computeralgebrasystems Sage in einer Lehrveranstaltung über Kryptographie sowie einige weiterführende Aspekte. Die modernen kryptographischen Verfahren verwenden neben Grundlagen der Algebra und Zahlentheorie auch elliptische Kurven. Mit Hilfe von Sage können realistische Beispiele erstellt und bearbeitet werden. Sage unterstützt auch Forschungsgebiete wie die Arithmetik elliptischer Kurven über Zahlkörpern. Literaturverzeichnis [1] Claude E Shannon. Communication theory of secrecy systems. Bell system technical journal, 28(4):656 715, 1949. [2] William Stein, T Abbott, M Abshoff, et al. Sage mathematics software, 2011. [3] Johannes Buchmann. Einführung in die Kryptographie. Springer, 2010. [4] Manfred Lochter and Johannes Merkle. Elliptic curve cryptography (ECC) brainpool standard curves and curve generation. Internet Request for Comment RFC, 5639, 2010. [5] Joseph H Silverman. The arithmetic of elliptic curves. Springer, 2009. [6] Neal Koblitz. Introduction to elliptic curves and modular forms. Springer, 1993. Autor Prof. Dr. Heiko Knospe Fachhochschule Köln Institut für Nachrichtentechnik Betzdorfer Str. 2 D-50679 Köln E-Mail: heiko.knospe@fh-koeln.de