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?
- RSA verschlüsselt selten ganze Nachrichten – es ist zu langsam. Stattdessen verschlüsselt man damit einen AES-Schlüssel und überträgt den.
- Auch fürs digitale Signieren: Mit dem privaten Schlüssel verschlüsseln = signieren, mit dem öffentlichen prüfen.
- 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;