security cryptography ecc rsa encryption web-security

Leitfaden zu elliptischen Kurven und fortgeschrittener asymmetrischer Kryptographie

Ein umfassender Leitfaden zur modernen asymmetrischen Kryptographie: Vergleich von RSA-Varianten (OAEP, PSS) mit elliptischer Kurvenkryptographie (ECDSA, Ed25519), Schlüsselaustausch (X25519) und Schlüsselableitung (HKDF).

2026-04-11

Einführung in die asymmetrische Kryptographie

Die asymmetrische Kryptographie oder Public-Key-Kryptographie ist der Grundstein der modernen digitalen Sicherheit. Im Gegensatz zur symmetrischen Verschlüsselung, bei der ein einziger Schlüssel gemeinsam genutzt wird, verwenden asymmetrische Systeme ein Schlüsselpaar: einen öffentlichen Schlüssel zur Verschlüsselung oder Signaturprüfung und einen privaten Schlüssel zur Entschlüsselung oder Signaturerstellung.

Dieser Leitfaden untersucht die Entwicklung von traditionellem RSA zu moderner elliptischer Kurvenkryptographie (ECC) und deckt Standards wie Ed25519, X25519 sowie fortgeschrittene Verfahren wie RSA-PSS und HKDF ab.


1. RSA-Varianten: OAEP, PSS und PKCS1-v1.5

RSA (Rivest–Shamir–Adleman) ist seit Jahrzehnten der Industriestandard. Die Art und Weise, wie RSA implementiert wird, ist jedoch für die Sicherheit von entscheidender Bedeutung.

RSA-PKCS1-v1.5 (Der Legacy-Standard)

Das älteste Padding-Verfahren. Obwohl es immer noch weit verbreitet ist, ist es anfällig für Padding-Oracle-Angriffe (wie den Bleichenbacher-Angriff). Für neue Anwendungen wird im Allgemeinen davon abgeraten.

RSA-OAEP (Optimal Asymmetric Encryption Padding)

Wird für die Verschlüsselung verwendet. OAEP fügt ein auf einem Feistel-Netzwerk basierendes Padding hinzu, das „Plaintext Awareness“ bietet. Es verhindert, dass ein Angreifer den Geheimtext ändern und Informationen über den Klartext gewinnen kann.

  • Empfehlung: Verwenden Sie RSA-OAEP anstelle von PKCS1-v1.5 zur Verschlüsselung von Daten.

RSA-PSS (Probabilistic Signature Scheme)

Wird für digitale Signaturen verwendet. Im Gegensatz zu älteren Verfahren ist PSS im Random-Oracle-Modell beweisbar sicher. Es fügt dem Signaturprozess Salt hinzu, was ihn probabilistisch statt deterministisch macht.

  • Empfehlung: Moderne Protokolle wie TLS 1.3 erfordern oder bevorzugen RSA-PSS gegenüber älteren PKCS1-v1.5-Signaturen.

2. Deep Dive in die elliptische Kurvenkryptographie (ECC)

ECC bietet das gleiche Sicherheitsniveau wie RSA, jedoch mit viel kleineren Schlüsseln. Beispielsweise entspricht ein 256-Bit-ECC-Schlüssel in etwa einem 3072-Bit-RSA-Schlüssel.

ECDSA (Elliptic Curve Digital Signature Algorithm)

Das Gegenstück zum Digital Signature Algorithm (DSA) auf Basis elliptischer Kurven.

  • ECDSA-P256: Die am weitesten verbreitete NIST-Kurve. Sie wird breit unterstützt, aber es gibt Bedenken hinsichtlich möglicher „Backdoors“ in den NIST-Parametern.
  • ECDSA-P384: Wird für höhere Sicherheitsstufen (Top Secret) verwendet.

EdDSA und Twisted Edwards Curves

Die moderne Kryptographie bewegt sich in Richtung EdDSA (Edwards-curve Digital Signature Algorithm).

  • Ed25519: Basierend auf der Curve25519. Es ist auf hohe Geschwindigkeit und hohe Sicherheit ausgelegt. Es ist deterministisch (kein Zufallszahlengenerator während der Signierung erforderlich), was eine häufige Fehlerquelle bei ECDSA eliminiert.
  • Ed448: Eine „Goldilocks“-Kurve, die eine noch höhere Sicherheit (224-Bit-Sicherheitsniveau) als Ed25519 bietet.

3. Schlüsselaustauschprotokolle

Wie etablieren zwei Parteien ein gemeinsames Geheimnis über einen unsicheren Kanal?

Diffie-Hellman (DH)

Das ursprüngliche Schlüsselaustauschprotokoll. Heute wird es meist durch seine Version auf Basis elliptischer Kurven ersetzt.

ECDH (Elliptic Curve Diffie-Hellman)

  • ECDH-P256 / P384: Verwendung von NIST-Kurven zur Etablierung von Geheimnissen.
  • X25519: Der moderne Goldstandard für den Schlüsselaustausch. Es ist eine ECDH-Funktion unter Verwendung der Curve25519. Es ist schneller, sicherer und einfacher korrekt zu implementieren als NIST-Kurven.
  • X448: Das höher gesicherte Gegenstück zu X25519.

4. Schlüsselableitung: HKDF

Sobald ein gemeinsames Geheimnis etabliert ist (z. B. über X25519), sollte es nicht direkt als Verschlüsselungsschlüssel verwendet werden. Stattdessen verwenden wir eine Schlüsselableitungsfunktion (Key Derivation Function, KDF).

HKDF-SHA256 (HMAC-based Extract-and-Expand KDF)

HKDF folgt einem zweistufigen Prozess:

  1. Extract: Nimmt das „rohe“ gemeinsame Geheimnis und ein optionales Salt, um einen „pseudozufälligen Schlüssel“ (PRK) zu erzeugen.
  2. Expand: Wandelt diesen PRK in mehrere Schlüssel der gewünschten Längen um (z. B. einen AES-Schlüssel und einen IV).

Die Verwendung von HKDF-SHA256 stellt sicher, dass die endgültigen Schlüssel kryptographisch stark und unabhängig sind.


5. Vergleichstabelle

Algorithmus Schlüsselgröße (Sicherheit) Performance Standard Anwendungsfall
RSA 2048 112-Bit Langsam Legacy Kompatibilität
RSA 3072 128-Bit Sehr langsam Stark Legacy/Unternehmen
ECDSA-P256 128-Bit Schnell NIST Allgemein Mobil/Web
Ed25519 128-Bit Sehr schnell Modern Empfohlen für Signaturen
X25519 128-Bit Sehr schnell Modern Empfohlen für Schlüsselaustausch
Ed448 224-Bit Mittel Hochsicher Ultra-sichere Systeme

6. Sicherheitsempfehlungen: Warum Ed25519?

Warum wenden sich Experten von RSA und NIST-Kurven ab und Ed25519 zu?

  1. Resistenz gegen Seitenkanalangriffe: Ed25519-Implementierungen sind oft bauartbedingt in konstanter Zeit (constant-time), was vor Timing-Angriffen schützt.
  2. Kein „Pech“ mit dem Zufall: ECDSA erfordert für jede Signatur eine neue, hochwertige Zufallszahl. Wenn dieser Zufallszahlengenerator (RNG) auch nur geringfügig versagt, kann Ihr privater Schlüssel wiederhergestellt werden. Ed25519 ist deterministisch und vermeidet dies vollständig.
  3. Performance: Ed25519 ist beim Signieren und Verifizieren deutlich schneller, was für Server mit hohem Datenverkehr entscheidend ist.
  4. Kleine Schlüssel: 32-Byte-Schlüssel sind in QR-Codes, Datenbankindizes und Headern viel einfacher zu handhaben als 512-Byte-RSA-Schlüssel.

7. Code-Beispiele

Node.js: Ed25519-Signierung

Verwendung des integrierten crypto-Moduls:

const crypto = require('crypto');

// Ed25519-Schlüsselpaar generieren
const { privateKey, publicKey } = crypto.generateKeyPairSync('ed25519');

const message = Buffer.from('Hallo, Sicherheit!');

// Signieren
const signature = crypto.sign(null, message, privateKey);

// Verifizieren
const isVerified = crypto.verify(null, message, publicKey, signature);
console.log('Signatur verifiziert:', isVerified);

Python: X25519-Schlüsselaustausch

Verwendung der cryptography-Bibliothek:

from cryptography.hazmat.primitives.asymmetric import x25519

# Alices Seite
alice_private = x25519.X25519PrivateKey.generate()
alice_public = alice_private.public_key()

# Bobs Seite
bob_private = x25519.X25519PrivateKey.generate()
bob_public = bob_private.public_key()

# Berechnung des gemeinsamen Geheimnisses
alice_shared = alice_private.exchange(bob_public)
bob_shared = bob_private.exchange(alice_public)

assert alice_shared == bob_shared
print("Gemeinsames Geheimnis etabliert!")

8. FAQ: Häufige Fehler

Q: Kann ich denselben Schlüssel für RSA-OAEP und RSA-PSS verwenden?

A: Technisch möglich, aber dringend davon abgeraten. Die Verwendung desselben Schlüssels für verschiedene Zwecke (Verschlüsselung und Signierung) kann zu protokollübergreifenden Angriffen führen. Verwenden Sie immer separate Schlüssel für separate Rollen.

Q: Ist Ed25519 quantencomputerresistent?

A: Nein. Wie RSA und alle aktuellen ECC-Verfahren ist Ed25519 anfällig für groß angelegte Quantencomputer, die den Shor-Algorithmus verwenden. Für Quantenresistenz sollten Sie sich mit Post-Quanten-Kryptographie (PQC) wie ML-KEM oder ML-DSA befassen.

Q: Warum SHA-256 mit HKDF verwenden?

A: SHA-256 bietet eine hohe Sicherheitsmarge und wird weltweit unterstützt. Während SHA-3 oder BLAKE2 exzellent sind, bleibt SHA-256 der Industriestandard für die HKDF-Implementierung.


Zusammenfassung

Der Übergang von RSA zur elliptischen Kurvenkryptographie stellt einen großen Sprung in Bezug auf Sicherheit und Effizienz dar. Für moderne Anwendungen gilt:

  • Verwenden Sie Ed25519 für digitale Signaturen.
  • Verwenden Sie X25519 für den Schlüsselaustausch.
  • Verwenden Sie HKDF-SHA256 für die Schlüsselableitung.
  • Verwenden Sie RSA-OAEP/PSS nur dann, wenn Abwärtskompatibilität zwingend erforderlich ist.

Durch die Übernahme dieser modernen Standards stellen Sie sicher, dass Ihre Anwendung schnell und sicher ist und den aktuellen kryptographischen Best Practices entspricht.