Der RSA-Algorithmus (der Name RSA kommt von Ronald Rivest, Adi Shamir und Leonard Adelman, den Entwicklern) basiert auf der Idee der Einwegfunktionen - wo eine Richtung leicht, die andere aber sehr schwierig (= langwierig) zu berechnen ist. Für eine einfache Entschlüsselung erfüllt der RSA zusätzlich auch die Bedingung einer Falltürfunktion - mit einer Zusatzinformation wird auch die Rückberechnung einfach!
Die dafür verwendete Funktion ist die Primfaktorenzerlegung einer langen Zahl. Wir erzeugen aus 2 Primzahlen ein Produkt, aus dem ohne Zusatzkenntnis diese beiden Primfaktoren nur sehr schwer = langwierig! - wieder herauszufiltern sind.
Grundvoraussetzung für die RSA-Verschlüsselung ist die Rechnung mit Restklassen (MODULO-Rechnung). Diese bildet mit einigen Sätzen der Zahlentheorie (Inverse von a modulo m - Lösung über den erweiterten euklidischen Algorithmus, Satz von Fermat-Euler) die Basis für den Algorithmus.
Verschlüsselung:Wir wählen zwei Primzahlen p und q - das CAS unterstützt uns dabei mit dem Befehlen PRIME?(z) und NEXT_PRIME(z) bzw. PREVIOUS_PRIME(z) - der Überprüfung, ob eine Zahl z eine Primzahl ist bzw. der Berechnung der zur eingegebenen natürlichen Zahl z nächstgelegenen Primzahl größer z (NEXT) oder kleiner z (PREVIOUS). Anschließend erzeugen wird die Produkte n = p . q und m = (p - 1) (q - 1) |
|||||||||||||||||||||||||
![]() |
![]() |
||||||||||||||||||||||||
Wir brauchen neben n noch den zweiten Teil des öffentlichen Schlüssels, eine Zahl a, die teilerfremd zu m is. Die Überprüfung geht über die Frage: ist der größte gemeinsame Teiler gleich 1 --> |
|||||||||||||||||||||||||
![]() |
Damit ist mit den beiden Zahlen n und a der öffentliche Schlüssel fertiggestellt. Die Verschlüsselung kann damit über die Formel |
||||||||||||||||||||||||
Wir verschlüsseln den Text "KRYPTOGRAFIE" - dazu wandeln wir die Buchstaben in Zahlen um und verwenden dafür den international üblichen ASCII-Code. Wir fassen jeweils 6 Buchstaben zu einer Gruppe zusammen und erhalten 12-stellige Zahlen.
Wir verwenden den DERIVE-Befehl: POWER_MOD(x,a,n) - Resultat von xa mod n. Entschlüsselung:Zuerst brauchen wir den geheimen Schlüssel - passend zum öffentlichen Schlüssel a, n. Wir wählen den geheimen Schlüssel b so, dass das Produkt a . b kongruent 1 bezüglich des Modulus m ist. Dies ist gleichbedeutend mit b = a-1 mod m. Dafür verwenden wir den Befehl INVERSE_MOD(x,a). |
|||||||||||||||||||||||||
Anschließend kann die Entschlüsselung durchgeführt werden - analog zur Verschlüsselung, aber mit Hilfe des geheimen Schlüssels! |
|||||||||||||||||||||||||
Die Entschlüsselung ergibt wieder die ASCII-Codes der Buchstaben von "KRYPTOGRAFIE" (wie bei der Verschlüsselung in 6-er-Blöcken geordnet). |