01 / Ausgangspunkt

Rechnen ist leicht.
Zurückrechnen ist die Frage.

Meine Bachelorarbeit verbindet drei Ebenen: die Gruppenstruktur elliptischer Kurven, effiziente Algorithmen für ihre Arithmetik und die Umsetzung in Python. Im Mittelpunkt stehen Montgomery-Kurven und ihre Anwendung beim kryptographischen Schlüsselaustausch.

Auf einer elliptischen Kurve lassen sich Punkte addieren. Wiederholte Addition eines Punkts PP führt zur Skalarmultiplikation:

[k]P=P+⋯+P⏟k Summanden.[k]P=\underbrace{P+\cdots+P}_{k\text{ Summanden}}.

Für große kk berechnet man das mit geeigneten Algorithmen in logarithmisch vielen Gruppenschritten. Kennt man dagegen nur PP und Q=[k]PQ=[k]P, fragt das diskrete Logarithmusproblem nach kk. Bei passend gewählten großen Untergruppen gilt diese Umkehrung als schwierig.

Der Skalar ist dabei nur modulo der Ordnung von PP bestimmt. Die Wahl der Kurve und des Ausgangspunkts ist deshalb ein Teil des Verfahrens.

Die Vorwärtsrichtungk, P → [k]P

Verdoppeln und addieren.

Die UmkehrfrageP, [k]P → k ?

Diskreter Logarithmus.

02 / Geometrie trifft Arithmetik

Eine Kurve muss
keine durchgehende Linie sein.

Über den reellen Zahlen zeigt das Kurvenbild eine kontinuierliche Form. Für die Kryptographie rechnen wir dagegen in einem endlichen Körper. Im Primkörper Fp\mathbb F_p werden alle Ergebnisse modulo pp genommen; Division bedeutet Multiplikation mit einem modularen Inversen.

In der kurzen Weierstraß-Form sieht eine elliptische Kurve in Charakteristik ungleich zwei und drei so aus:

E:y2=x3+ax+b,4a3+27b2≠0.E:\quad y^2=x^3+ax+b,\qquad 4a^3+27b^2\ne0.

Zu den affinen Lösungen kommt der Punkt im Unendlichen O\mathcal O als neutrales Element. Die Sekanten- und Tangentenkonstruktion beschreibt die Addition geometrisch; dieselben algebraischen Formeln funktionieren über endlichen Körpern.

Die folgende Grafik verwendet bereits die Montgomery-Form. Verändere den Körper, den Koeffizienten oder die x-Koordinate und beobachte, welche Punkte die Gleichung erfüllen.

01 / Punkte im endlichen KörperInteraktiv

y² ≡ x³ + 5x² + x (mod 41)

Montgomery-Kurve über dem Körper mit 41 ElementenAlle affinen Lösungen von y² = x³ + 5x² + x modulo 41. Für x = 4 sind die Punkte (4, 5) und (4, 36) markiert.001010202030304040xy(0, 0)(4, 5)(4, 36)(5, 3)(5, 38)(6, 19)(6, 22)(7, 12)(7, 29)(8, 15)(8, 26)(9, 6)(9, 35)(11, 15)(11, 26)(12, 0)(13, 12)(13, 29)(15, 13)(15, 28)(16, 12)(16, 29)(17, 15)(17, 26)(18, 7)(18, 34)(19, 14)(19, 27)(20, 4)(20, 37)(24, 0)(26, 20)(26, 21)(29, 13)(29, 28)(30, 1)(30, 40)(31, 8)(31, 33)(32, 6)(32, 35)(33, 13)(33, 28)(34, 10)(34, 31)(35, 9)(35, 32)(36, 6)(36, 35)(39, 16)(39, 25)

Eine Gleichung. Endlich viele Punkte.

y² ≡ 25 (mod 41)

(4, 5) und (4, 36)

51 affine Punkte + 𝒪 = 52 Kurvenpunkte

Zu x gehören meistens zwei Punkte oder keiner. Bei y = 0 fallen P und −P zusammen.

Die orange Spalte zeigt dieselbe x-Koordinate. Die y-Werte sind additive Gegenspieler modulo p – genau die Information, die bei der x-Koordinaten-Arithmetik entfällt.

Ein Rahmen für die Punktzahl · Hasse

∣#E(Fp)−(p+1)∣≤2p.\left|\#E(\mathbb F_p)-(p+1)\right|\le 2\sqrt p.

Die Anzahl der Kurvenpunkte liegt nahe bei p+1p+1. Diese Abschätzung ersetzt noch keine exakte Bestimmung der Gruppenordnung.

03 / Die zentrale Vereinfachung

Mit einer Koordinate
weiterrechnen.

Die Arbeit betrachtet Montgomery-Kurven der Form

EA:y2=x3+Ax2+x,A2≠4.E_A:\quad y^2=x^3+Ax^2+x,\qquad A^2\ne4.

Wir arbeiten in ungerader Charakteristik. Die Bedingung schließt singuläre Kurven aus. Allgemeiner kann vor y2y^2 noch ein von null verschiedener Faktor stehen; in den Beispielen hier ist er eins.

Für P=(x,y)P=(x,y) ist −P=(x,−y)-P=(x,-y). Die x-Koordinate unterscheidet diese beiden Punkte nicht. Trotzdem lässt sich aus x(P)x(P) die x-Koordinate von [k]P[k]P berechnen. Man rechnet dabei auf dem Quotienten, der PP und −P-P identifiziert – nicht mit einer gewöhnlichen Addition beliebiger x-Werte.

Projektive x-Koordinaten

Statt nach jeder Operation durch eine Zahl zu teilen, speichern wir ein Paar (X:Z)(X:Z) mit x=X/Zx=X/Z. Gemeinsame von null verschiedene Faktoren ändern den Wert nicht. (1:0)(1:0) repräsentiert den Punkt im Unendlichen auf der x-Geraden.

Die Verdopplung lässt sich so ohne Inversion in der Schleife ausdrücken:

X2P=(XP2−ZP2)2,X_{2P}=(X_P^2-Z_P^2)^2,Z2P=4XPZP(XP2+AXPZP+ZP2).Z_{2P}=4X_PZ_P(X_P^2+AX_PZ_P+Z_P^2).
Wie funktioniert die differentielle Addition?

Zusätzlich zu den x-Koordinaten von PP und QQ braucht man die von D=P−QD=P-Q. Für eine Differenz der Ordnung größer als zwei setzen wir

U=(XP−ZP)(XQ+ZQ),V=(XP+ZP)(XQ−ZQ).U=(X_P-Z_P)(X_Q+Z_Q),\quad V=(X_P+Z_P)(X_Q-Z_Q).

Dann gilt in projektiven x-Koordinaten:

XP+Q=ZD(U+V)2,ZP+Q=XD(U−V)2.X_{P+Q}=Z_D(U+V)^2,\qquad Z_{P+Q}=X_D(U-V)^2.

Die bekannte Differenz ist der entscheidende Zusatz. Genau diese Voraussetzung hält die Montgomery-Ladder in jedem Schritt aufrecht.

04 / Ein Bit nach dem anderen

Zwei Register.
Immer einen Punkt auseinander.

Die Binärdarstellung zerlegt den Skalar in Verdopplungs- und Additionsschritte. Das Beispiel aus der Arbeit lautet 25=(11001)225=(11001)_2. Die Ladder hält zwei benachbarte Vielfache:

R0=[m]P,R1=[m+1]P,R1−R0=P.R_0=[m]P,\qquad R_1=[m+1]P,\qquad R_1-R_0=P.

Das nächste Bit bb ersetzt das bisher gelesene Präfix mm durch 2m+b2m+b. Bei null wird R0R_0 verdoppelt; bei eins R1R_1. Das jeweils andere Register erhält die Summe. Deshalb bleibt ihre Differenz bekannt.

02 / Die Montgomery-LadderSchritt für Schritt

Beispiel: y² = x³ + 5x² + x über 𝔽₁₀₁
P = (2, 38), Ordnung 46

11001
R₀1P

x = 2

Differenz
P
R₁2P

x = 43

Das führende Bit ist 1: Start mit R₀ = P und R₁ = 2P.

Die beiden Register stehen für benachbarte Vielfache. Intern werden nur projektive x-Koordinaten (X : Z) gerechnet; die Anzeige normiert sie zum leichteren Nachlesen.

Nach dem letzten Bit steht die x-Koordinate von [k]P[k]P in R0R_0. Der Ablauf braucht pro weiterem Bit eine differentielle Addition und eine Verdopplung. Die projektive Darstellung verschiebt die teure Inversion bis zur abschließenden Umrechnung.

05 / Anwendung

Verschiedene Wege.
Dasselbe Ergebnis.

Alice und Bob vereinbaren öffentlich eine Kurve und einen Punkt PP. Alice wählt einen privaten Skalar aa, Bob einen Skalar bb. Ausgetauscht werden nur die Punkte [a]P[a]P und [b]P[b]P.

Jede Seite multipliziert den empfangenen Punkt mit ihrem eigenen Skalar. Weil die Skalarmultiplikation verträglich mit der Multiplikation ganzer Zahlen ist, erhalten beide

[a]([b]P)=[ab]P=[b]([a]P).[a]([b]P)=[ab]P=[b]([a]P).
03 / Diffie–HellmanBeispiel aus der Arbeit

y² = x³ + 25x + 17 über 𝔽₁₀₁ · P = (1, 12) · ord(P) = 29

Alice

Öffentlicher Punkt aP(89, 98)
aP →← bPÖffentlicher
Austausch

Bob

Öffentlicher Punkt bP(49, 69)
Gleicher Punkt auf beiden Seitena(bP) = b(aP) = (91, 22)
Die kleinen Zahlen machen die Rechnung nachvollziehbar. Sie bieten keine kryptographische Sicherheit. Das Beispiel illustriert die Gruppenrechnung; echte Protokolle ergänzen Authentifizierung und Schlüsselableitung.

Die Ausgangswerte a=9a=9 und b=7b=7 reproduzieren das Beispiel aus Kapitel 4.3 der Bachelorarbeit: Beide Seiten erhalten den Punkt (91,22)(91,22). Er ist das gemeinsame mathematische Ausgangsmaterial. Eine Schlüsselableitung macht daraus einen Schlüssel für weitere kryptographische Verfahren.

Diffie–Hellman allein bestätigt die Identität des Gegenübers nicht. Ein vollständiges Protokoll muss den Austausch zusätzlich authentifizieren.

06 / Das konkrete Kurvenmodell

Curve25519.

Im letzten Teil der Arbeit werden die Ideen auf die von Daniel J. Bernstein vorgeschlagene Curve25519 übertragen. Ihre Gleichung und der zugrunde liegende Primkörper sind:

y2=x3+486662x2+xy^2=x^3+486662x^2+xu¨ber Fp,p=2255−19.\text{über }\mathbb F_p,\qquad p=2^{255}-19.
Montgomery-Koeffizient486662
x-Koordinate des Basispunkts9
Kofaktor der Kurve8

Die besondere Primzahl und die Montgomery-Arithmetik ermöglichen effizientes Rechnen. Für die praktische Einordnung lohnt sich eine klare Unterscheidung:

Curve25519
Die elliptische Kurve mit diesen Parametern.
X25519
Die in RFC 7748 beschriebene Funktion zur x-Koordinaten-Skalarmultiplikation. Sie legt auch die 32-Byte-Kodierung und die Anpassung bestimmter Skalarbits fest.
Ed25519
Ein Signaturverfahren auf dem verwandten Edwards-Kurvenmodell. Es ist weder X25519 noch ECDSA; beschrieben ist es in RFC 8032.

Die Arbeit behandelt außerdem ECDSA. Dabei werden Punktkombinationen mit beliebigen Summanden gebraucht. Die differentielle Addition allein reicht dafür nicht, weil deren Differenz nicht grundsätzlich bekannt ist.

07 / Von der Formel zum Programm

Mathematik in Python
nachvollziehbar machen.

Ein wesentlicher Teil meiner Bachelorarbeit ist die eigene Implementierung: Klassen für Kurven und Punkte, das Additionsgesetz, Skalarmultiplikation sowie die Operationen xAdd und xDbl. Darauf bauen Beispiele für Diffie–Hellman und ECDSA auf. Die ursprünglichen Abbildungen entstanden mit SageMath 9.5.

01

Struktur

Kurve, Punkt und neutrales Element sauber darstellen.

02

Arithmetik

Gruppenoperationen in modularen Rechnungen abbilden.

03

Algorithmus

Die Ladder aus Verdopplung und differentieller Addition zusammensetzen.

04

Anwendung

Das gemeinsame Ergebnis zweier Rechnungen nachvollziehen.

Der wichtigste Gedanke bleibt dabei derselbe: Eine geeignete Darstellung des mathematischen Objekts verändert, wie effizient wir damit rechnen können.