RSA (Rivest-Shamir-Adleman) ist ein Algorithmus, der von modernen Computern zur Ver- und Entschlüsselung von Nachrichten verwendet wird. Es ist ein asymmetrischer kryptographischer Algorithmus. Asymmetrisch bedeutet, dass es zwei verschiedene Schlüssel gibt. Dies wird auch als Kryptographie mit öffentlichem Schlüssel bezeichnet, da einer der Schlüssel an jeden weitergegeben werden kann. Der andere Schlüssel muss privat gehalten werden. Der Algorithmus beruht auf der Tatsache, dass es schwierig ist, die Faktoren einer großen zusammengesetzten Zahl zu finden: Wenn die Faktoren Primzahlen sind, nennt man das Problem Primfaktorzerlegung. Es handelt sich auch um einen Schlüsselpaar-Generator (öffentlicher und privater Schlüssel).

Funktionsweise — grober Überblick

RSA beruht auf einfachen mathematischen Operationen mit großen ganzen Zahlen (Multiplikation, Potenzen modulo n) kombiniert mit dem praktischen Schwierigkeitsgrad, aus dem Produkt zweier großer Primzahlen wieder die Primfaktoren zu bestimmen. Die wichtigsten Schritte sind:

  • Erzeugung von zwei großen Zufallsprimzahlen p und q.
  • Berechnung des Moduls n = p · q, das Teil des öffentlichen Schlüssels ist.
  • Bildung eines Exponenten e (öffentlich) und seines modularen Inversen d (privat), so dass e·d ≡ 1 (mod φ(n)), wobei φ(n) = (p−1)(q−1) die Eulersche Phi-Funktion ist.
  • Verschlüsselung eines Klartextes m durch c ≡ me mod n und Entschlüsselung durch m ≡ cd mod n.

Schlüsselgenerierung — detaillierter

  • Wähle zwei unabhängige große Primzahlen p und q (gleich große Bitlänge empfohlen) und berechne n = p·q.
  • Berechne φ(n) = (p − 1)(q − 1).
  • Wähle einen öffentlichen Exponenten e mit 1 < e < φ(n) und gcd(e, φ(n)) = 1. Häufiger Standardwert ist e = 65537 (schnell und sicher in den meisten Fällen).
  • Berechne den privaten Exponenten d als das multiplikative Inverse von e modulo φ(n): d ≡ e−1 (mod φ(n)).
  • Der öffentliche Schlüssel ist (n, e); der private Schlüssel ist (n, d) — in der Praxis werden aber zusätzlich p, q, dp = d mod (p−1), dq = d mod (q−1) und qinv = q−1 mod p gespeichert, um Entschlüsselung mit dem chinesischen Restsatz (CRT) deutlich zu beschleunigen.

Verschlüsselung, Entschlüsselung und Signaturen

  • Verschlüsselung: c = me mod n, wobei m der Klartext (als Zahl) und c der Chiffretext ist. Wichtig: m muss 0 ≤ m < n sein; in der Praxis nutzt man Padding und/oder hybrid Verfahren (siehe unten).
  • Entschlüsselung: m = cd mod n.
  • Digitale Signatur: Signieren geschieht analog zur Entschlüsselung: s = H(m)d mod n (H = Hashfunktion plus Padding). Verifizieren: H(m) ?= se mod n.

Padding und sichere Verwendung

Textbuch-RSA (direkt me mod n) ist unsicher. Deshalb gibt es standardisierte Padding-Schemata:

  • OAEP (Optimal Asymmetric Encryption Padding) für sichere Verschlüsselung — verhindert malleability und chosen-ciphertext-Angriffe.
  • PSS (Probabilistic Signature Scheme) für sichere Signaturen — empfohlen gegenüber einfachen Hash-then-RSA-Methoden.

In der Praxis wird RSA meist nicht zum direkten Verschlüsseln großer Daten benutzt. Stattdessen wird ein symmetrischer Sitzungsschlüssel (z. B. für AES) erzeugt, dieser mit RSA verschlüsselt und die eigentlichen Daten mit dem schnellen symmetrischen Algorithmus verschlüsselt (hybrides Verschlüsselungsverfahren).

Sicherheit — Bedrohungen und Grenzen

  • Grundlage der Sicherheit: Schwierigkeit der Faktorisierung großer Zahlen. Die beste klassische Methode ist der General Number Field Sieve (GNFS) mit subexponentieller Laufzeit; deshalb müssen RSA-Moduli ausreichend groß sein.
  • Empfohlene Schlüsselgrößen (Stand 2020er Jahre und abhängig von gewünschter Lebensdauer): mindestens 2048 Bit; für langfristigen Schutz oft 3072 Bit oder 4096 Bit. 1024 Bit gilt heute als unsicher.
  • Quantencomputer: Mit ausreichend großen, fehlerkorrigierten Quantenrechnern würde Shor’s Algorithmus Faktorisierung in polynomieller Zeit ermöglichen — RSA wäre dann gebrochen. Deshalb arbeitet man an post-quantensicheren Alternativen.
  • Implementationsangriffe: Seitenkanalangriffe (Timing, Power, EM), Padding-Oracle-Angriffe (z. B. Bleichenbacher-Attacke) und fehlerhafte Zufallszahlengeneratoren sind häufigere praktische Schwachstellen als die Mathematik selbst.
  • Sichere Implementierungsempfehlungen: konstante Zeit, Schutz gegen Seitenkanäle, sichere Randomquelle für Primzahlerzeugung, Prüfung auf gleiche p=q, sichere Entsorgung privater Schlüssel.

Praktische Empfehlungen

  • Verwende aktuelle Bibliotheken (OpenSSL, libsodium, BouncyCastle etc.) und vertraue bewährten Implementierungen statt Eigenbau.
  • Nutze standardisierte Padding-Schemata: OAEP für Verschlüsselung und PSS für Signaturen.
  • Verwende RSA hauptsächlich für Schlüsselvereinbarung (hybride Verfahren), nicht für große Datenmengen.
  • Sichere Aufbewahrung des privaten Schlüssels (Hardware-Sicherheitsmodule, TPMs, Smartcards) und Schutz vor Seitenkanalangriffen.
  • Wähle ausreichend große Schlüssel (mind. 2048 Bit) und plane für die Migration zu post-quantensicheren Algorithmen, falls Langzeitsicherheit erforderlich ist.

Häufige Anwendungen

  • SSL/TLS (Aushandlung von Sitzungsschlüsseln), obwohl immer mehr Verbindungen auf elliptische Kurven (ECDHE) oder PQ-Verfahren umsteigen.
  • S/MIME, PGP (E-Mail-Verschlüsselung und Signatur) — oft kombiniert mit Hybridverschlüsselung.
  • Code-Signierung, Authentifizierung und digitale Zertifikate (PKI).

Kurzbeispiel (vereinfachte Darstellung)

  • Angenommen p = 61, q = 53 → n = 3233, φ(n) = 3120. Wähle e = 17 (gcd(17,3120)=1). Dann berechne d = 2753 (17·2753 ≡ 1 mod 3120).
  • Verschlüssele m = 65: c = 6517 mod 3233 = 2790. Entschlüssele: m = 27902753 mod 3233 = 65.

Hinweis: Das obige Beispiel dient nur zur Illustration mit sehr kleinen Zahlen. In der Praxis verwendet man Primzahlen mit Hunderten bis Tausenden Bits Länge.

Fazit

RSA ist ein grundlegender, weit verbreiteter asymmetrischer Algorithmus, dessen Sicherheit auf der Schwierigkeit der Faktorisierung großer Zahlen beruht. Richtig eingesetzt (ausreichende Schlüssellänge, sicheres Padding, bewährte Implementationen und Schutz gegen Seitenkanäle) ist RSA weiterhin sicher für viele Anwendungen. Langfristig werden jedoch post-quantensichere Algorithmen wichtig werden, sobald Quantenhardware praktisch genug ist.