Samstag, 31. Juli 2010 |
RSA ist ein asymmetrisches Verschlüsselungsverfahren. Es wurde nach den Initialen der Nachnamen seiner Erfinder Ronald L. Rivest, Adi Shamir und Leonard Adleman benannt, die das Verfahren 1978 in "A Method for Obtaining Digital Signatures and Public-Key Cryptosystems" PDF) vorstellten.
Die Sicherheit des RSA-Verfahrens basiert auf der so genannten Faktorisierungsannahme: Es gibt keinen effizienten Algorithmus, um eine gegebene große Zahl in ihre Primfaktoren zu zerlegen. Der RSA-Algorithmus selbst ist sehr einfach.
N E U ! Security
aktuell
Täglich aktuelle Security-Infos!
Der öffentliche Schlüssel (public key) besteht aus c und n, der private Schlüssel (private key) aus d und n. Meist werden auch die Faktoren p und q gespeichert, da sie bei der Entschlüsselung verwendet werden können.
| Es gilt | c * d ≡ 1 mod φ(n), |
| also | 7 * d ≡ 1 mod 20 |
Der öffentliche Schlüssel besteht also aus c=7 und n=33, der geheime Schlüssel aus d=3 und n=33.
Klartexte werden als Zahlen m, 0 ≤ m ≤ n, dargestellt. Zu lange Klartexte müssen ggf. in passende Blöcke aufgespalten werden.
Die Verschlüsselung erfolgt durch modulare Exponentiation mit c,
für den
Klartextblock m also durch die Berechnung von
mod n.
Die Entschlüsselung erfolgt durch modulare Exponentiation mit d,
für den
Geheimtextblock
also durch die Berechnung von
mod n = m.
Verschlüsselt werden soll m=25, der öffentliche Schlüssel ist c=7 und n=33:
Geheimtext =
mod 33 = 6103515625 mod 33 = 31
Entschlüsselt wird mit dem geheimen Schlüssel d=3 und n=33:
Klartext =
mod 33 = 29791 mod 33 = 25
Da diese doch sehr kleinen Zahlen schon zu großen Zwischenergebnissen führen, kann man sich vorstellen, wie groß diese bei den für RSA tatsächlich verwendeten Zahlen mit einer Länge von 1.024 Bit und mehr werden. Doch es gibt eine "Abkürzung":
= ((((x²)²)²)²) * x
mod n = ((((x² mod n)² mod n)² mod n)² mod n) * x mod n
Damit muss in jedem Schritt nur mit Werten gerechnet werden, die kleiner als n sind.
Bei der Kryptanalyse des RSA-Verfahrens gibt es zwei Ansätze:
≡ G mod n.
Die Schwierigkeit liegt darin, Wurzeln modulo n zu
berechnen. Auf die mathematischen Grundlagen soll hier nicht weiter eingegangen werden. Das Problem dabei ist, dass bisher nicht bewiesen wurde, ob die Faktorisierung tatsächlich schwer ist oder nicht. Es spricht vieles dafür, ein endgültiger Beweis steht aber noch aus.
Von den RSA Laboratories wurde die RSA Factoring Challenge gestartet. Dabei sollen vorgegebene Zahlen mit einer Länge zwischen 576 und 2.048 Bits in ihre Primfaktoren zerlegt werden. Erfolgreich faktorisiert wurden bisher die Zahlen bis zu einer Länge von 640 Bit.
Erfolgreicher sind Angriffe auf schwache Schlüssel oder unsichere Implementierungen. Wird RSA z.B. wie oben beschrieben als Konzelationssystem verwendet, kann ein Angreifer ausnutzen, dass RSA ein deterministisches System ist: Gleiche Klartexte ergeben gleiche Geheimtexte. Er kann einen wahrscheinlichen Klartext(block) raten und mit dem öffentlichen Schlüssel verschlüsseln. Stimmt das Ergebnis mit einem belauschten Geheimtext(block) überein, kennt er den dazu gehörenden Klartext(block). Das Hinzufügen von Zufallswerten zum Klartext verhindert derartige Angriffe.
Dan Boneh hat 1999 einen zusammenfassenden Artikel über die Kryptanalyse von RSA veröffentlicht: "Twenty years of attacks on the RSA cryptosystem".
Solange kein effektiver Faktorisierungsalgorithmus bekannt ist, kann RSA mit ausreichend großen Schlüsseln (mindestens 1.024, besser mindestens 2.048 Bit Länge) als sicher betrachtet werden.
In der nächsten Folge geht es um die Anwendung von RSA.
Wenn Sie Fragen oder Themenvorschläge haben, können Sie diese gerne an die angegebene E-Mail-Adresse senden oder im Security-Forum einbringen!
About Security – Übersicht zum aktuellen Thema "Kryptographie – RSA"