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