Verschlüsselung nach dem RSA-Verfahren Adi Shamir, Ronald Rivest und Leonard Adleman 1977 (von links nach rechts) StD März, März 2012
Einwegfunktionen Das RSA-Verfahren ist ein rein mathematisches Verfahren und daher nicht so anschaulich darstellbar wie das Vigenère-Verfahren. Der wesentliche Punkt ist die Verwendung von Einwegfunktionen. Darunter sind umkehrbare Funktionen zu verstehen, bei denen die Umkehrfunktion wesentlich schwerer zu berechnen ist, als die Funktion selbst. StD März, März 2012
Vorüberlegungen StD März, März 2012
Einwegfunktionen Das Berechnen einer Potenz ist leichter als die Umkehrung mittels des Logarithmus. Ke = G <=> K = loge G e: Exponent (nicht Eulersche Zahl) K: Kodiertes Zeichen des Klartextes, z.B: 65 für A (ASCII) G: Kodiertes Zeichen des Geheimtextes StD März, März 2012
Einwegfunktionen Ist ein multiplikativ Inverses d des Exponenten e bekannt (d · e = 1), so ist die Berechnung von K aus G dagegen sehr einfach. Gd = (Ke) d = Ke·d = K1 = K Die (schwierige) Berechnung von K aus G mit Hilfe des Logarithmus wurde ersetzt durch die einfachere Potenzierung mit dem (geheimen) Wert d. StD März, März 2012
Einwegfunktionen Das Grundprinzip einer assymetrischen Verschlüsselung ist gefunden: Verschlüsseln durch Potenzieren mit dem öffentlichen Schlüssel e: G = Ke Entschlüsseln durch Potenzieren mit dem geheimen Schlüssel d: Gd = K StD März, März 2012
Einwegfunktionen Wichtig ist dabei natürlich, dass es praktisch unmöglich ist die Umkehrung der Verschlüsselungsfunktion zu berechnen. aus dem öffentlichen Schlüssel auf den geheimen Schlüssel zu schliessen. Bei unserem einfachen Beispiel ist das selbstverständlich noch nicht erfüllt. StD März, März 2012
Verwendung von Divisionsresten Durch die Verwendung von Divisionsresten, sogenannter modulo-Operationen kann das Ziel der praktischen Unumkehrbarkeit erreicht werden. Beispiel: Wähle zwei Zahlen, z.B. 8 und 7. Multipliziere die beiden Zahlen Bilde den Rest bei Division durch 10. (8 * 7 ) mod 10 = 6 Versuche nun aus dem Ergebnis 6 auf die beiden ursprünglichen Zahlen zu schliessen. 6 = (2 * 3 ) mod 10 6 = (4 * 9 ) mod 10 6 = (8 * 7 ) mod 10 6 = (23 * 2 ) mod 10 6 = (11 * 6 ) mod 10 6 = (12 * 113 ) mod 10 ? StD März, März 2012
Kombination Die Kombination der beiden Methoden – Potenzierung und modulo-Operationen – führt zu einem sicheren assymetrischen Verfahren. Klett, Informatik 5: „…Während die Berechnung wkPub mod (p·q), das sogenannte modulare Potenzieren, etwa 1000 Rechenschritte erfordert, sind für die Umkehrfunktion, das sogenannte diskrete Logarithmieren, bis zu 10100 Schritte erforderlich.“ Wie lange dauern wohl 10100 Schritte bei einer Rate von 1 Milliarde oder sogar 1 Billion Operationen pro Sekunde? StD März, März 2012
RSA StD März, März 2012
RSA - 1977 1977 wurde RSA, das erste öffentlich zugängliche asymmetrische Verschlüsselungsverfahren, veröffentlicht. Der Name RSA steht für die Anfangsbuchstaben der Familiennamen der drei Mathematiker am MIT (Massachusetts Institute of Technology), Ronald L. Rivest, Adi Shamir und Leonard Adleman, die RSA entwickelten. Adi Shamir, Ronald Rivest und Leonard Adleman 2003 (von links nach rechts) StD März, März 2012
RSA Erzeugung der Schlüssel StD März, März 2012
Erzeugung von privatem und öffentlichem Schlüssel Der öffentliche Schlüssel ist das Zahlenpaar (e,N), der private Schlüssel das Zahlenpaar (d,N), wobei N bei beiden Schlüsseln gleich ist. N: RSA-Modul, e: Verschlüsselungsexponent d: Entschlüsselungsexponent StD März, März 2012
Erzeugung von privatem und öffentlichem Schlüssel Wähle zufällig und stochastisch unabhängig zwei unterschiedliche Primzahlen p und q. (In der Praxis erzeugt man dazu so lange Zahlen der gewünschten Länge und führt mit diesen anschließend einen Primzahltest durch, bis man zwei Primzahlen gefunden hat.) Beispiel: Zur Demonstration wählen wir die beiden Mersenne-Primzahlen p = 27-1 = 127 und q = 213-1 = 8191 (Diese beiden Primzahlen dienen nur der Demonstration und entsprechen nicht den genannten Bedingungen. Sie sind für praktische Anwendung auch viel zu klein.) StD März, März 2012
Erzeugung von privatem und öffentlichem Schlüssel Berechne den RSA-Modul N = p·q Im Beispiel: N = 127 · 8.191 = 1.040.257 Berechne die Eulersche φ - Funktion von N: φ (N) = ( p – 1 )·( q – 1 ) Im Beispiel: φ (N) = 126 · 8.190 = 1.031.940 StD März, März 2012
Erzeugung von privatem und öffentlichem Schlüssel Wähle eine zu φ (N) teilerfremde Zahl e, für die gilt 1 < e < φ (N). Aus Effizienzgründen wird e klein gewählt, üblich ist e = 216+1. Kleinere Werte von können zu Angriffsmöglichkeiten führen. Im Beispiel: Zur Demonstration wählen wir e = 1.013 Willkürliche Wahl einer Primzahl, daher teilerfremd zu φ (N). StD März, März 2012
Erzeugung von privatem und öffentlichem Schlüssel Berechne den Entschlüsselungsexponenten d als multiplikativ Inverses von e bezüglich des Moduls φ (N). Es soll also gelten: e · d = 1 mod φ (N) Die Berechnung erfolgt mit Hilfe des erweiterten Euklidischen Algorithmus. Im Beispiel: Es muss gelten: e · d + k · φ (N) = 1 = ggT( e, φ (N) ) (wg. Teilerfremdheit) konkret: 1.013 · d + k · 1.031.940 = ggT(1.013, 1.031.940 ) StD März, März 2012
Erzeugung von privatem und öffentlichem Schlüssel Erweiterter Euklidischer Algorithmus: Fortgesetzte Division mit Rest: φ (N) = 1018 * e + 706 e = 1 * 706 + 307 706 = 2 * 307 + 92 307 = 3 * 92 + 31 92 = 2 * 31 + 30 31 = 1 * 30 + 1 30 = 30 * 1 + 0 (ggT = 1 – muss wegen Teilerfremdheit so sein) Berechne den Entschlüsselungsexponenten d als multiplikativ Inverses von e bezüglich des Moduls φ (N). Es soll also gelten: e · d = 1 mod φ (N) Die Berechnung erfolgt mit Hilfe des erweiterten Euklidischen Algorithmus. Im Beispiel: Es muss gelten: e · d + k · φ (N) = 1 = ggT( e, φ (N) ) (wg. Teilerfremdheit) konkret: 1.013 · d + k · 1.031.940 = ggT(1.013, 1.031.940 ) StD März, März 2012
Erzeugung von privatem und öffentlichem Schlüssel Erweiterter Euklidischer Algorithmus: Fortgesetzte Division mit Rest: φ (N) = 1018 * e + 706 e = 1 * 706 + 307 706 = 2 * 307 + 92 307 = 3 * 92 + 31 92 = 2 * 31 + 30 31 = 1 * 30 + 1 30 = 30 * 1 + 0 (ggT = 1 – muss wegen Teilerfremdheit so sein) Berechne den Entschlüsselungsexponenten d als multiplikativ Inverses von e bezüglich des Moduls φ (N). Es soll also gelten: e · d = 1 mod φ (N) Die Berechnung erfolgt mit Hilfe des erweiterten Euklidischen Algorithmus. Erweiterter Euklidischer Algorithmus: Bestimmung der Linearkombination: 1 = 1 * 31 - 1 * 30 Im Beispiel: Es muss gelten: e · d + k · φ (N) = 1 = ggT( e, φ (N) ) (wg. Teilerfremdheit) konkret: 1.013 · d + k · 1.031.940 = ggT(1.013, 1.031.940 ) StD März, März 2012
Erzeugung von privatem und öffentlichem Schlüssel Erweiterter Euklidischer Algorithmus: Fortgesetzte Division mit Rest: φ (N) = 1018 * e + 706 e = 1 * 706 + 307 706 = 2 * 307 + 92 307 = 3 * 92 + 31 92 = 2 * 31 + 30 31 = 1 * 30 + 1 30 = 30 * 1 + 0 (ggT = 1 – muss wegen Teilerfremdheit so sein) Berechne den Entschlüsselungsexponenten d als multiplikativ Inverses von e bezüglich des Moduls φ (N). Es soll also gelten: e · d = 1 mod φ (N) Die Berechnung erfolgt mit Hilfe des erweiterten Euklidischen Algorithmus. Erweiterter Euklidischer Algorithmus: Bestimmung der Linearkombination: 1 = 1 * 31 - 1 * 30 1 = 1 * 31 - 1 * (92 - 2 * 31) Im Beispiel: Es muss gelten: e · d + k · φ (N) = 1 = ggT( e, φ (N) ) (wg. Teilerfremdheit) konkret: 1.013 · d + k · 1.031.940 = ggT(1.013, 1.031.940 ) StD März, März 2012
Erzeugung von privatem und öffentlichem Schlüssel Erweiterter Euklidischer Algorithmus: Fortgesetzte Division mit Rest: φ (N) = 1018 * e + 706 e = 1 * 706 + 307 706 = 2 * 307 + 92 307 = 3 * 92 + 31 92 = 2 * 31 + 30 31 = 1 * 30 + 1 30 = 30 * 1 + 0 (ggT = 1 – muss wegen Teilerfremdheit so sein) Berechne den Entschlüsselungsexponenten d als multiplikativ Inverses von e bezüglich des Moduls φ (N). Es soll also gelten: e · d = 1 mod φ (N) Die Berechnung erfolgt mit Hilfe des erweiterten Euklidischen Algorithmus. Erweiterter Euklidischer Algorithmus: Bestimmung der Linearkombination: 1 = 1 * 31 - 1 * 30 1 = 1 * 31 - 1 * (92 - 2 * 31) 1 = -1 * 92 + 3 * 31 Im Beispiel: Es muss gelten: e · d + k · φ (N) = 1 = ggT( e, φ (N) ) (wg. Teilerfremdheit) konkret: 1.013 · d + k · 1.031.940 = ggT(1.013, 1.031.940 ) StD März, März 2012
Erzeugung von privatem und öffentlichem Schlüssel Erweiterter Euklidischer Algorithmus: Fortgesetzte Division mit Rest: φ (N) = 1018 * e + 706 e = 1 * 706 + 307 706 = 2 * 307 + 92 307 = 3 * 92 + 31 92 = 2 * 31 + 30 31 = 1 * 30 + 1 30 = 30 * 1 + 0 (ggT = 1 – muss wegen Teilerfremdheit so sein) Berechne den Entschlüsselungsexponenten d als multiplikativ Inverses von e bezüglich des Moduls φ (N). Es soll also gelten: e · d = 1 mod φ (N) Die Berechnung erfolgt mit Hilfe des erweiterten Euklidischen Algorithmus. Erweiterter Euklidischer Algorithmus: Bestimmung der Linearkombination: 1 = 1 * 31 - 1 * 30 1 = 1 * 31 - 1 * (92 - 2 * 31) 1 = -1 * 92 + 3 * 31 1 = -1 * 92 + 3 * (307 - 3 * 92 ) Im Beispiel: Es muss gelten: e · d + k · φ (N) = 1 = ggT( e, φ (N) ) (wg. Teilerfremdheit) konkret: 1.013 · d + k · 1.031.940 = ggT(1.013, 1.031.940 ) StD März, März 2012
Erzeugung von privatem und öffentlichem Schlüssel Erweiterter Euklidischer Algorithmus: Fortgesetzte Division mit Rest: φ (N) = 1018 * e + 706 e = 1 * 706 + 307 706 = 2 * 307 + 92 307 = 3 * 92 + 31 92 = 2 * 31 + 30 31 = 1 * 30 + 1 30 = 30 * 1 + 0 (ggT = 1 – muss wegen Teilerfremdheit so sein) Berechne den Entschlüsselungsexponenten d als multiplikativ Inverses von e bezüglich des Moduls φ (N). Es soll also gelten: e · d = 1 mod φ (N) Die Berechnung erfolgt mit Hilfe des erweiterten Euklidischen Algorithmus. Erweiterter Euklidischer Algorithmus: Bestimmung der Linearkombination: 1 = 1 * 31 - 1 * 30 1 = 1 * 31 - 1 * (92 - 2 * 31) 1 = -1 * 92 + 3 * 31 1 = -1 * 92 + 3 * (307 - 3 * 92 ) 1 = 3 * 307 - 10 * 92 Im Beispiel: Es muss gelten: e · d + k · φ (N) = 1 = ggT( e, φ (N) ) (wg. Teilerfremdheit) konkret: 1.013 · d + k · 1.031.940 = ggT(1.013, 1.031.940 ) StD März, März 2012
Erzeugung von privatem und öffentlichem Schlüssel Erweiterter Euklidischer Algorithmus: Fortgesetzte Division mit Rest: φ (N) = 1018 * e + 706 e = 1 * 706 + 307 706 = 2 * 307 + 92 307 = 3 * 92 + 31 92 = 2 * 31 + 30 31 = 1 * 30 + 1 30 = 30 * 1 + 0 (ggT = 1 – muss wegen Teilerfremdheit so sein) Berechne den Entschlüsselungsexponenten d als multiplikativ Inverses von e bezüglich des Moduls φ (N). Es soll also gelten: e · d = 1 mod φ (N) Die Berechnung erfolgt mit Hilfe des erweiterten Euklidischen Algorithmus. Erweiterter Euklidischer Algorithmus: Bestimmung der Linearkombination: 1 = 1 * 31 - 1 * 30 1 = 1 * 31 - 1 * (92 - 2 * 31) 1 = -1 * 92 + 3 * 31 1 = -1 * 92 + 3 * (307 - 3 * 92 ) 1 = 3 * 307 - 10 * 92 1 = 3 * 307 - 10 * (706 - 2 * 307 ) Im Beispiel: Es muss gelten: e · d + k · φ (N) = 1 = ggT( e, φ (N) ) (wg. Teilerfremdheit) konkret: 1.013 · d + k · 1.031.940 = ggT(1.013, 1.031.940 ) StD März, März 2012
Erzeugung von privatem und öffentlichem Schlüssel Erweiterter Euklidischer Algorithmus: Fortgesetzte Division mit Rest: φ (N) = 1018 * e + 706 e = 1 * 706 + 307 706 = 2 * 307 + 92 307 = 3 * 92 + 31 92 = 2 * 31 + 30 31 = 1 * 30 + 1 30 = 30 * 1 + 0 (ggT = 1 – muss wegen Teilerfremdheit so sein) Berechne den Entschlüsselungsexponenten d als multiplikativ Inverses von e bezüglich des Moduls φ (N). Es soll also gelten: e · d = 1 mod φ (N) Die Berechnung erfolgt mit Hilfe des erweiterten Euklidischen Algorithmus. Erweiterter Euklidischer Algorithmus: Bestimmung der Linearkombination: 1 = 1 * 31 - 1 * 30 1 = 1 * 31 - 1 * (92 - 2 * 31) 1 = -1 * 92 + 3 * 31 1 = -1 * 92 + 3 * (307 - 3 * 92 ) 1 = 3 * 307 - 10 * 92 1 = 3 * 307 - 10 * (706 - 2 * 307 ) 1 = -10 * 706 + 23 * 307 Im Beispiel: Es muss gelten: e · d + k · φ (N) = 1 = ggT( e, φ (N) ) (wg. Teilerfremdheit) konkret: 1.013 · d + k · 1.031.940 = ggT(1.013, 1.031.940 ) StD März, März 2012
Erzeugung von privatem und öffentlichem Schlüssel Erweiterter Euklidischer Algorithmus: Fortgesetzte Division mit Rest: φ (N) = 1018 * e + 706 e = 1 * 706 + 307 706 = 2 * 307 + 92 307 = 3 * 92 + 31 92 = 2 * 31 + 30 31 = 1 * 30 + 1 30 = 30 * 1 + 0 (ggT = 1 – muss wegen Teilerfremdheit so sein) Berechne den Entschlüsselungsexponenten d als multiplikativ Inverses von e bezüglich des Moduls φ (N). Es soll also gelten: e · d = 1 mod φ (N) Die Berechnung erfolgt mit Hilfe des erweiterten Euklidischen Algorithmus. Erweiterter Euklidischer Algorithmus: Bestimmung der Linearkombination: 1 = 1 * 31 - 1 * 30 1 = 1 * 31 - 1 * (92 - 2 * 31) 1 = -1 * 92 + 3 * 31 1 = -1 * 92 + 3 * (307 - 3 * 92 ) 1 = 3 * 307 - 10 * 92 1 = 3 * 307 - 10 * (706 - 2 * 307 ) 1 = -10 * 706 + 23 * 307 1 = -10 * 706 + 23 * (e - 1 * 706 ) Im Beispiel: Es muss gelten: e · d + k · φ (N) = 1 = ggT( e, φ (N) ) (wg. Teilerfremdheit) konkret: 1.013 · d + k · 1.031.940 = ggT(1.013, 1.031.940 ) StD März, März 2012
Erzeugung von privatem und öffentlichem Schlüssel Erweiterter Euklidischer Algorithmus: Fortgesetzte Division mit Rest: φ (N) = 1018 * e + 706 e = 1 * 706 + 307 706 = 2 * 307 + 92 307 = 3 * 92 + 31 92 = 2 * 31 + 30 31 = 1 * 30 + 1 30 = 30 * 1 + 0 (ggT = 1 – muss wegen Teilerfremdheit so sein) Berechne den Entschlüsselungsexponenten d als multiplikativ Inverses von e bezüglich des Moduls φ (N). Es soll also gelten: e · d = 1 mod φ (N) Die Berechnung erfolgt mit Hilfe des erweiterten Euklidischen Algorithmus. Erweiterter Euklidischer Algorithmus: Bestimmung der Linearkombination: 1 = 1 * 31 - 1 * 30 1 = 1 * 31 - 1 * (92 - 2 * 31) 1 = -1 * 92 + 3 * 31 1 = -1 * 92 + 3 * (307 - 3 * 92 ) 1 = 3 * 307 - 10 * 92 1 = 3 * 307 - 10 * (706 - 2 * 307 ) 1 = -10 * 706 + 23 * 307 1 = -10 * 706 + 23 * (e - 1 * 706 ) 1 = 23 * e - 33 * 706 Im Beispiel: Es muss gelten: e · d + k · φ (N) = 1 = ggT( e, φ (N) ) (wg. Teilerfremdheit) konkret: 1.013 · d + k · 1.031.940 = ggT(1.013, 1.031.940 ) StD März, März 2012
Erzeugung von privatem und öffentlichem Schlüssel Erweiterter Euklidischer Algorithmus: Fortgesetzte Division mit Rest: φ (N) = 1018 * e + 706 e = 1 * 706 + 307 706 = 2 * 307 + 92 307 = 3 * 92 + 31 92 = 2 * 31 + 30 31 = 1 * 30 + 1 30 = 30 * 1 + 0 (ggT = 1 – muss wegen Teilerfremdheit so sein) Berechne den Entschlüsselungsexponenten d als multiplikativ Inverses von e bezüglich des Moduls φ (N). Es soll also gelten: e · d = 1 mod φ (N) Die Berechnung erfolgt mit Hilfe des erweiterten Euklidischen Algorithmus. Erweiterter Euklidischer Algorithmus: Bestimmung der Linearkombination: 1 = 1 * 31 - 1 * 30 1 = 1 * 31 - 1 * (92 - 2 * 31) 1 = -1 * 92 + 3 * 31 1 = -1 * 92 + 3 * (307 - 3 * 92 ) 1 = 3 * 307 - 10 * 92 1 = 3 * 307 - 10 * (706 - 2 * 307 ) 1 = -10 * 706 + 23 * 307 1 = -10 * 706 + 23 * (e - 1 * 706 ) 1 = 23 * e - 33 * 706 1 = 23 * e - 33 * (φ (N) - 1018 * e ) Im Beispiel: Es muss gelten: e · d + k · φ (N) = 1 = ggT( e, φ (N) ) (wg. Teilerfremdheit) konkret: 1.013 · d + k · 1.031.940 = ggT(1.013, 1.031.940 ) StD März, März 2012
Erzeugung von privatem und öffentlichem Schlüssel Erweiterter Euklidischer Algorithmus: Fortgesetzte Division mit Rest: φ (N) = 1018 * e + 706 e = 1 * 706 + 307 706 = 2 * 307 + 92 307 = 3 * 92 + 31 92 = 2 * 31 + 30 31 = 1 * 30 + 1 30 = 30 * 1 + 0 (ggT = 1 – muss wegen Teilerfremdheit so sein) Berechne den Entschlüsselungsexponenten d als multiplikativ Inverses von e bezüglich des Moduls φ (N). Es soll also gelten: e · d = 1 mod φ (N) Die Berechnung erfolgt mit Hilfe des erweiterten Euklidischen Algorithmus. Erweiterter Euklidischer Algorithmus: Bestimmung der Linearkombination: 1 = 1 * 31 - 1 * 30 1 = 1 * 31 - 1 * (92 - 2 * 31) 1 = -1 * 92 + 3 * 31 1 = -1 * 92 + 3 * (307 - 3 * 92 ) 1 = 3 * 307 - 10 * 92 1 = 3 * 307 - 10 * (706 - 2 * 307 ) 1 = -10 * 706 + 23 * 307 1 = -10 * 706 + 23 * (e - 1 * 706 ) 1 = 23 * e - 33 * 706 1 = 23 * e - 33 * (φ (N) - 1018 * e ) 1 = - 33 * φ (N) + 33617 * e Im Beispiel: Es muss gelten: e · d + k · φ (N) = 1 = ggT( e, φ (N) ) (wg. Teilerfremdheit) konkret: 1.013 · d + k · 1.031.940 = ggT(1.013, 1.031.940 ) StD März, März 2012
Erzeugung von privatem und öffentlichem Schlüssel Erweiterter Euklidischer Algorithmus: Fortgesetzte Division mit Rest: φ (N) = 1018 * e + 706 e = 1 * 706 + 307 706 = 2 * 307 + 92 307 = 3 * 92 + 31 92 = 2 * 31 + 30 31 = 1 * 30 + 1 30 = 30 * 1 + 0 (ggT = 1 – muss wegen Teilerfremdheit so sein) Berechne den Entschlüsselungsexponenten d als multiplikativ Inverses von e bezüglich des Moduls φ (N). Es soll also gelten: e · d = 1 mod φ (N) Die Berechnung erfolgt mit Hilfe des erweiterten Euklidischen Algorithmus. Erweiterter Euklidischer Algorithmus: Bestimmung der Linearkombination: 1 = 1 * 31 - 1 * 30 1 = 1 * 31 - 1 * (92 - 2 * 31) 1 = -1 * 92 + 3 * 31 1 = -1 * 92 + 3 * (307 - 3 * 92 ) 1 = 3 * 307 - 10 * 92 1 = 3 * 307 - 10 * (706 - 2 * 307 ) 1 = -10 * 706 + 23 * 307 1 = -10 * 706 + 23 * (e - 1 * 706 ) 1 = 23 * e - 33 * 706 1 = 23 * e - 33 * (φ (N) - 1018 * e ) 1 = - 33 * φ (N) + 33617 * e d Im Beispiel: Es muss gelten: e · d + k · φ (N) = 1 = ggT( e, φ (N) ) (wg. Teilerfremdheit) konkret: 1.013 · d + k · 1.031.940 = ggT(1.013, 1.031.940 ) StD März, März 2012
Erzeugung von privatem und öffentlichem Schlüssel Durch Kombination der Zahlen e und d mit dem RSA-Modul N können die Schlüssel gebildet werden: Der öffentliche Schlüssel (public key) ist das Zahlenpaar (e,N) Der private Schlüssel (private key) ist das Zahlenpaar (d,N) Im Beispiel: public key: (1.013, 1.040.257) private key: (33617, 1.040.257) StD März, März 2012
Sicherheit Das RSA-Modul N ist als Teil des öffentlichen Schlüssels allgemein bekannt. Wäre es nun leicht möglich, N in seine beiden Primfaktoren zu zerlegen, wäre die Berechnung des geheimen Schlüssels kein Problem. Die Sicherheit des Verfahrens steht und fällt daher mit der Möglichkeit bzw. Unmöglichkeit Primfaktorisierungen effizient zu berechnen. StD März, März 2012
RSA Kodierung StD März, März 2012
Aufbereitung des Klartexts 67: C 68: D 69: E 70: F 71: G 72: H 73: I 74: J 75: K 76: L 77: M 78: N 79: O 80: P 81: Q 82: R 83: S 84: T 85: U 86: V 87: W 88: X 89: Y 90: Z Der Klartext muss in Zahlen umgesetzt werden. Geeignet ist z.B. der ASCII-Code (A:65, B:66,….). Klartext: FKG, WÜRZBURG Aufbereitung: F K G W U E R Z B U R G Umsetzung: 707571878569829066858271 Aufspaltung: 707571 878569 829066 858271 StD März, März 2012
Anwendung des öffentlichen Schlüssels Um eine Nachricht K zu verschlüsseln, verwendet der Absender die Formel (modulare Potenzierung). C = Ke mod N und erhält so aus dem Klartext K den Geheimtext C. K muss dabei kleiner sein als der RSA-Modul N. Im Beispiel: 7075711013 mod 1040257 = 430991 8785691013 mod 1040257 = 272418 8290661013 mod 1040257 = 906704 8582711013 mod 1040257 = 621234 (Die Rechnungen können mit ARIBAS nachvollzogen werden.) StD März, März 2012
Interpretation des Geheimtextes Der Geheimtext stellt keinen Text im eigentlichen Sinne dar. So ist z.B. 09 kein druckbares Zeichen. ASCII-Codes unter 32 stellen Steuerzeichen z.B. für die Ansteuerung eines Druckers dar. 09 entspricht einem Tabulator, ein Drucker wurde also einen Tabulatorsprung machen. Weitere: 10 LineFeed, 13 CarriageReturn etc. Der Geheim"text" ist also lediglich ein Datenstrom, ein Bitmuster. StD März, März 2012
RSA Dekodierung StD März, März 2012
Entschlüsseln mit dem privaten Schlüssel Der Geheimtext C kann durch modulare Potenzierung wieder zum Klartext K entschlüsselt werden. Der Empfänger benutzt die Formel K = Cd mod N mit dem nur ihm bekannten Wert d sowie N. Im Beispiel: 43099133617 mod 1040257 = 707571 27241833617 mod 1040257 = 878569 90670433617 mod 1040257 = 829066 62123433617 mod 1040257 = 858271 (Die Rechnungen können mit ARIBAS nachvollzogen werden.) StD März, März 2012
Rekonstruktion des Klartextes 66: B 67: C 68: D 69: E 70: F 71: G 72: H 73: I 74: J 75: K 76: L 77: M 78: N 79: O 80: P 81: Q 82: R 83: S 84: T 85: U 86: V 87: W 88: X 89: Y 90: Z Das Bitmuster 707571 878569 829066 858271 wird in zweistellige Zahlen aufgeteilt und mittels ASCII-Code wieder als Text geschrieben. Geheimtext: 707571 878569 829066 858271 Aufbereitung: 70 75 71 87 85 69 82 90 66 85 82 71 Umsetzung: F K G W U E R Z B U R G Klartext: FKG, WÜRZBURG StD März, März 2012
RSA Assymetrie StD März, März 2012
„Entschlüsseln“ mit dem öffentlichen Schlüssel Die Anwendung des öffentlichen Schlüssels zu einem Entschlüsselungsversuch, etwa mittels K = Ce mod N führt nicht zum Ziel. Im Beispiel: 4309911013 mod 1.040.257 = 669392 669392 ergäbe B]\ statt FKG ! (Die Rechnung kann mit ARIBAS nachvollzogen werden.) StD März, März 2012
Sicherheit Das dargestellte Verfahren dient zur Demonstration. Es erfüllt bei Weitem nicht die heutigen Ansprüche an sichere Datenübertragung und wird in der Praxis nicht wie oben beschrieben eingesetzt, da es mehrere Schwächen hat. Mögliche Angriffspunkte und Verbesserungen sind im Artikel "RSA-Kryptosystem" der Wikipedia beschrieben. http://de.wikipedia.org/wiki/RSA-Kryptosystem StD März, März 2012