RSA – Asymmetrische Verschlüsselung

Bei symmetrischen Verfahren (Caesar, XOR, AES) brauchen Sender und Empfänger denselben Schlüssel – aber wie sicher austauschen? RSA löst das mit einem Schlüsselpaar: einem öffentlichen zum Verschlüsseln und einem privaten zum Entschlüsseln.

Die Idee: Multiplizieren ist leicht (61 × 53 = 3233), aber eine große Zahl in ihre Primfaktoren zerlegen ist extrem schwer. Darauf baut RSA die ganze Sicherheit auf.

1. Schlüssel erzeugen

n = p · q
3233 (Modulus, öffentlich)
φ(n) = (p−1)(q−1)
3120 (geheim)
🌐 Öffentlicher Schlüssel
n3233
e17
🔒 Privater Schlüssel
n3233
d (= e⁻¹ mod φ(n))2753

2. Verschlüsseln & Entschlüsseln

Chiffre c = mᵉ mod n2557
Wieder m = cᵈ mod n42

Wie wird RSA in der Praxis genutzt?

  1. RSA verschlüsselt selten ganze Nachrichten – es ist zu langsam. Stattdessen verschlüsselt man damit einen AES-Schlüssel und überträgt den.
  2. Auch fürs digitale Signieren: Mit dem privaten Schlüssel verschlüsseln = signieren, mit dem öffentlichen prüfen.
  3. Heute oft ersetzt durch Verfahren auf elliptischen Kurven (ECDSA, Ed25519) – kleinere Schlüssel, gleiche Sicherheit.
Wichtig: Echte RSA-Schlüssel haben heute mindestens 2048 Bit (das obige Beispiel hat 12 Bit!). Außerdem braucht man Padding (OAEP), sonst ist das Verfahren unsicher.
// Stark vereinfacht – echte RSA nutzt Primzahlen mit 1024+ Bit
const p = 61, q = 53;
const n = p * q;                    // 3233
const phi = (p - 1) * (q - 1);      // 3120
const e = 17;                       // öffentlich
const d = modInverse(e, phi);       // privat = 2753

// Öffentlicher Schlüssel: (n, e)
// Privater Schlüssel:     (n, d)

// Verschlüsseln einer Zahl m < n:
const c = (m ** e) % n;
// Entschlüsseln:
const m_back = (c ** d) % n;