EN
ctp
cto
ct2
ctts
ct1
jct
scr
ctb
StartseiteMitwirkendeLinks / Bücher
Zurück zum CrypTool-Buch

ECC-Tutorial und ECC-Toolkit

Auf dieser Seite finden Sie zwei eigenständige, ergänzende Ressourcen zur Elliptische-Kurven-Kryptografie (ECC), die Kapitel 8 des CrypTool-Buchs begleiten:

  • ECC-Tutorial — eine interaktive Web-Anwendung mit allen Beispielen des Kapitels als live ausführbare SageMath- und JavaScript-Programme.
  • ECC-Toolkit — eine Sammlung von 17 eigenständigen SageMath-Skripten zum direkten Ausführen im Terminal.

Über das ECC-Tutorial

Das ECC-Tutorial ist eine eigenständige, interaktive Web-Anwendung zur Elliptische-Kurven-Kryptografie (ECC).

Alle 7 Kapitel und 29 Abbildungen decken denselben Themenbereich ab wie Kapitel 8 des CTB — einschließlich der seit der ursprünglichen Fassung von 2011 hinzugekommenen Themen wie Curve25519/Ed25519, Lenstras ECM-Faktorisierung und PQXDH als Beispiel für post-quanten-hybriden Schlüsselaustausch. Der Unterschied liegt weniger im Stoff als in der Form: Statt einzelner, fest vorgerechneter Beispiele in Buchform bietet das Tutorial jedes Thema als vollständig editierbare, live berechnete Abbildung über sieben aufeinander aufbauende Kapitel hinweg — von den Grundlagen bis zu den Protokollen, die ECC nutzen.

Die Berechnung erfolgt entweder durch Ihre eigene lokale SageMath-Installation oder direkt als JavaScript im Browser (ohne Server-Aufruf). Kein Konto, kein Cloud-Dienst, keine SageMath-Ausgabe verlässt Ihren Rechner.

 ECC-Tutorial herunterladen

Installationsanleitung

  1. Entpacken Sie das ZIP-Archiv "ecc-tutorial.zip" in einem beliebigen Verzeichnis.
  2. Öffnen Sie in diesem Verzeichnis ein Terminal (Kommandozeilenfenster).
  3. Starten Sie den Server im Terminal: python3 server.py
  4. Öffnen Sie die angegebene Adresse im Browser: http://localhost:8765/

Siehe die Datei "readme-usage-webapp.txt" im ZIP-Archiv.

Achten Sie darauf, dass auf der Startseite unter "Anleitung und SageMath-Version" bestätigt wird, dass eine lokale SageMath-Installation gefunden werden konnte.

ECC-Tutorial Startseite
ECC-Tutorial Abbildung 3.2

Lesen Sie dann Kapitel 1, oder springen Sie über das Inhaltsverzeichnis (ToC) auf der Startseite irgendwohin. Jede Abbildung hat ihre eigenen Steuerelemente (Sliders, Zahlenfelder, Buttons). Wenn Sie diese ändern, wird das Ergebnis sofort berechnet.

Inhalt des ECC-Tutorials

Das Tutorial umfasst 29 interaktive Abbildungen, nach Kapiteln sortiert: 17 berechnet Ihre lokale SageMath-Installation SageMath, 12 laufen direkt im Browser JavaScript.

Kapitel 1 — Einführung und Überblick

  • 1.1 Der Kapitelaufbau des Dokuments JavaScript

Kapitel 2 — Motivation für den Einsatz elliptischer Kurven in der Kryptografie

  • 2.1 Diffie-Hellman-Schlüsselaustausch (1) JavaScript
  • 2.2 Anzahl möglicher Schlüssel SageMath
  • 2.3 Berechnung von Primitivwurzeln SageMath
  • 2.4 Diffie-Hellman-Schlüsselaustausch (2) SageMath
  • 2.5 Diffie-Hellman-Schlüsselaustausch (3) SageMath
  • 2.6 DLP-Brute-Force-Suche SageMath
  • 2.7 Laufzeitvergleich exponentieller, sub-exponentieller und polynomieller Algorithmen JavaScript

Kapitel 3 — Elliptische Kurven in der Kryptografie

  • 3.1 Elliptische Kurven definiert durch y2=x3+ax+by^2=x^3+ax+b JavaScript
  • 3.2 Elliptische Kurven über den reellen Zahlen SageMath
  • 3.3 Elliptische Kurven über endlichen Körpern SageMath
  • 3.4 Punktaddition JavaScript
  • 3.5 Punktverdopplung JavaScript
  • 3.6 Punkt im Unendlichen JavaScript
  • 3.7 Punktaddition für elliptische Kurven über den rationalen Zahlen SageMath
  • 3.8 Punktaddition für elliptische Kurven über endlichen Körpern SageMath
  • 3.9 Double-and-add-Algorithmus JavaScript
  • 3.10 Vergleich der drei Methoden der Skalarmultiplikation JavaScript
  • 3.11 Lösung des ECDLP: Baby-step giant-step und Pollards Rho SageMath

Kapitel 4 — Kryptografische Protokolle in der ECC

  • 4.1 Elliptic Curve Diffie-Hellman (ECDH) SageMath
  • 4.2 Man-in-the-Middle-Angriff auf unauthentifiziertes ECDH, und authentifiziertes ECDH SageMath
  • 4.3 ECIES: hybride Public-Key-Verschlüsselung SageMath
  • 4.4 ECDSA: Signieren und Verifizieren SageMath
  • 4.5 EdDSA: deterministisches Signieren auf Edwards25519 JavaScript

Kapitel 5 — Erzeugung von Domainparametern für ECC-Systeme

  • 5.1 Standardisierte Kurvenparameter SageMath
  • 5.2 Verdrehte Edwards-Punktaddition (ohne Sonderfälle) JavaScript

Kapitel 6 — Fazit und weiterführende Themen

  • 6.1 Empfohlene Schlüssellängen JavaScript
  • 6.2 Faktorisierung ganzer Zahlen mit elliptischen Kurven (Lenstras ECM) SageMath
  • 6.3 PQXDH: post-quanten-erweiterter Schlüsselaustausch SageMath

Kapitel 7 — Literaturverzeichnis und weitere Software

Keine interaktiven Programme.

Das ECC-Toolkit

Das ECC-Toolkit ist eine eigenständige Sammlung von 17 SageMath-Skripten zu ECC. Jedes Skript ist ein einzelnes, in sich abgeschlossenes Beispiel — feste Beispielwerte, druckbare Textausgabe statt JSON, kein Server, kein Browser. Direkt per sage skriptname.py im Terminal ausführbar oder per load("skriptname.py") in einer interaktiven SageMath-Sitzung, sodass alle berechneten Werte anschließend zum Weiterexperimentieren zur Verfügung stehen. Diese SageMath-Programme sind genau dieselben wie im ECC-Tutorial.

 ECC-Toolkit herunterladen

SageMath-Programme im ECC-Toolkit

17 eigenständige SageMath-Skripte, nach Kapiteln sortiert:

Kapitel 2 — Motivation für den Einsatz elliptischer Kurven in der Kryptografie

  • fig2_2_dh_number_of_keys.py — wie viele verschiedene Schlüssel gi mod pg^i \bmod p es gibt: die Ordnung von g
  • fig2_3_primitive_root.py — eine Primitivwurzel mod p finden
  • fig2_4_dh_random_secrets.py — klassischer DH-Austausch, p/g fest, Geheimnisse zufällig
  • fig2_5_dh_chosen_secrets.py — derselbe Austausch, alle Werte frei gewählt
  • fig2_6_dlp_brute_force.py — das DLP per Brute-Force lösen — und warum das nicht skaliert

Kapitel 3 — Elliptische Kurven in der Kryptografie

  • fig3_2_curve_over_reals.py — Nichtsingularitätsprüfung plus Beispielpunkte, E über R\mathbb{R}
  • fig3_3_curve_over_finite_field.py — alle Punkte von E über Fp\mathbb{F}_p, sowie #E(Fp)\#E(\mathbb{F}_p)
  • fig3_7_point_addition_rationals.py — Punktaddition über Q\mathbb{Q}, vollständige λ/xR/yR-Formeln
  • fig3_8_point_addition_finite_field.py — dieselbe Addition, stattdessen über Fp\mathbb{F}_p
  • fig3_11_solving_ecdlp.py — Baby-step-giant-step und Pollards Rho, gegeneinander geprüft

Kapitel 4 — Kryptografische Protokolle in der ECC

  • fig4_1_ecdh.py — ECDH auf einer echten (Spielzeug- oder 256-Bit-) Zufallskurve
  • fig4_2_mitm_and_authenticated_ecdh.py — MITM-Angriff auf unauthentifiziertes ECDH, dann derselbe Angriff durch ECDSA-authentifizierte Punkte erkannt
  • fig4_3_ecies.py — ECIES-Hybridverschlüsselung: ECDH + KDF + Encrypt-then-MAC
  • fig4_4_ecdsa_and_nonce_reuse.py — ECDSA signieren/verifizieren, dann der Nonce-Reuse-Angriff zur Wiederherstellung des privaten Schlüssels

Kapitel 5 — Erzeugung von Domainparametern für ECC-Systeme

  • fig5_1_standardized_curves.py — Prüfung der echten, veröffentlichten Parameter von P-256, P-384, Curve25519 und secp256k1

Kapitel 6 — Fazit und weiterführende Themen

  • fig6_2_ecm_factorization.py — Lenstras ECM: ganze Zahlen mit elliptischen Kurven faktorisieren
  • fig6_3_pqxdh.py — PQXDH: Signals post-quanten-erweiterter X3DH-Schlüsselaustausch
Anmerkung:

Nicht enthalten im Toolkit sind die 12 JavaScript-Programme des ECC-Tutorials. Diese haben kein SageMath-Gegenstück und laufen im ECC-Tutorial ohne Server-/Sage-Aufruf.