RSA-Verschlüsselung Das RSA-Verfahren ist ein asymmetrisches Verschlüsselungsverfahren, das nach seinen Erfindern Ronald Linn Rivest, Adi Shamir und Leonard Adlemann benannt ist. RSA verwendet ein Schlüsselpaar aus einem privaten und einem öffentlichen Schlüssel. Der private Schlüssel besteht aus einem Zahlenpaar (e,n), der öffentliche Schlüssel aus dem Zahlenpaar (d,n), wobei n in beiden Schlüsseln gleich ist. n nennt man das RSA-Modul, e heißt Verschlüsselungsexponent und d ist der Entschlüsselungsexponent. Verfahren zur Erzeugung der beiden Schlüssel: 1. Wähle zwei unterschiedliche Primzahlen p und q. 2. Berechne das RSA-Modul n mit. 3. Zur Erzeugung des Verschlüsselungsexponenten e benötigen wir den Wert ( ) ( ) (m nennt man auch den Wert der Eulerschen -Funktion ( )) ( ) ( ) 4. Wähle nun eine Zahl e mit folgenden Eigenschaften: und e und m sind teilerfremd und e teilerfremd zu 20 Primfaktorzerlegung von, d.h. wähle z.b. öffentlicher Schlüssel (e,n) = (3,33) 5. Bestimme zwei Zahlen g und h so, dass ( ) Hinweis: ( ), da e und m teilerfremd sind! ( ) ( ) ( ), d.h. und 6. Bestimme den Entschlüsselungsexponenten d folgendermaßen: d ist der Divisionsrest bei der Division von g durch m. Sollte g negativ sein, addiere so oft m dazu, bis das Ergebnis positiv ist., d.h. privater Schlüssel (d,n) = (7,33) Verschlüsseln einer Nachricht 1. Wähle das zu verschlüsselnde Wort, wir verwenden der Einfachheit halber nur Großbuchstaben. TEST 2. Wandle die einzelnen Buchstaben in (zweistellige) Zahlen um, indem du die Übersetzungstabelle weiter unten benutzt. T=32, E=15, S=31, T=32 3. Setze die Zahlen der Reihe nach zur Nachricht zusammen. 32153132 4. Schneide die Nachricht in Blöcken beliebiger Länge auseinander, wobei die Zahl in jedem Block nicht größer als das RSA-Modul n sein darf. Hinweis: Wähle möglichst nicht nur Zweier-Blöcke, da sonst die Verschlüsselung durch eine
Häufigkeitsanalyse (siehe Station Caesar knacken ) geknackt werden kann! RSA-Modul n = 33, wir wählen z.b. folgende Blöcke: 3 21 5 31 32 Block 1: 3 Block 2: 21 Block 3: 5 Block 4: 31 Block 5: 32 Hinweis: Die Blockbildung 3 21 53 13 2 wäre nicht möglich, da 53 > n (n = 33) ist. 5. Verwende den öffentlichen Schlüssel (e,n) für jede Zahl folgendermaßen: ( ) e = 3, n = 33 6. Übertrage die verschlüsselte Nachricht in Blöcken 27 21 26 25 32 Hinweis Modulo ist die Division mit Rest. Dabei wird jedoch als Ergebnis nur der Rest betrachtet. 44 modulo 8 = 4, weil 44 : 8 = 5 Rest 4 Entschlüsseln einer Nachricht 1. Empfange die verschlüsselte Nachricht in Blöcken. 27 21 26 25 32 Block 1: 27 Block 2: 21 Block 3: 26 Block 4: 25 Block 5: 32 2. Verwende zur Entschlüsselung den privaten Schlüssel folgendermaßen: ( ) 3. Setze die Blöcke zu einer Zahl zusammen. 32153132 4. Teile die Zahl in Zweier-Blöcke auf und wandle die entschlüsselte Nachricht mit Hilfe der Übersetzungstabelle wieder in Buchstaben um. 32 15 31 32 32 = T, 15 = E, 31 = S, 31 = T TEST
Hilfestellungen Übersetzungstabelle Alphabet Zahl A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 11 12 13 14 15 16 17 18 19 21 22 23 24 25 26 27 28 29 31 32 33 34 35 36 37 38 Liste einiger Primzahlen für und 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41 Faktorisierungen aller möglichen Werte für aus den angegebenen Primzahlen (außer 1, 2) 4 = 2 2 100 = 2 2 5 5 432 = 2 2 2 2 3 3 3 6 = 2 3 108 = 2 2 3 3 3 448 = 2 2 2 2 2 2 7 8 = 2 2 2 112 = 2 2 2 2 7 480 = 2 2 2 2 2 3 5 10 = 2 5 120 = 2 2 2 3 5 484 = 2 2 11 11 12 = 2 2 3 132 = 2 2 3 11 504 = 2 2 2 3 3 7 16 = 2 2 2 2 144 = 2 2 2 2 3 3 540 = 2 2 3 3 3 5 18 = 2 3 3 160 = 2 2 2 2 2 5 576 = 2 2 2 2 2 2 3 3 20 = 2 2 5 168 = 2 2 2 3 7 616 = 2 2 2 7 11 22 = 2 11 180 = 2 2 3 3 5 640 = 2 2 2 2 2 2 2 5 24 = 2 2 2 3 192 = 2 2 2 2 2 2 3 648 = 2 2 2 3 3 3 3 28 = 2 2 7 216 = 2 2 2 3 3 3 660 = 2 2 3 5 11 30 = 2 3 5 220 = 2 2 5 11 720 = 2 2 2 2 3 3 5 32 = 2 2 2 2 2 240 = 2 2 2 2 3 5 784 = 2 2 2 2 7 7 36 = 2 2 3 3 256 = 2 2 2 2 2 2 2 2 792 = 2 2 2 3 3 11 40 = 2 2 2 5 264 = 2 2 2 3 11 840 = 2 2 2 3 5 7 44 = 2 2 11 280 = 2 2 2 5 7 880 = 2 2 2 2 5 11 48 = 2 2 2 2 3 288 = 2 2 2 2 2 3 3 900 = 2 2 3 3 5 5 56 = 2 2 2 7 300 = 2 2 3 5 5 1008 = 2 2 2 2 3 3 7 60 = 2 2 3 5 324 = 2 2 3 3 3 3 1080 = 2 2 2 3 3 3 5 64 = 2 2 2 2 2 2 336 = 2 2 2 2 3 7 1120 = 2 2 2 2 2 5 7 72 = 2 2 2 3 3 352 = 2 2 2 2 2 11 1200 = 2 2 2 2 3 5 5 80 = 2 2 2 2 5 360 = 2 2 2 3 3 5 1296 = 2 2 2 2 3 3 3 3 88 = 2 2 2 11 396 = 2 2 3 3 11 1440 = 2 2 2 2 2 3 3 5 96 = 2 2 2 2 2 3 400 = 2 2 2 2 5 5 1600 = 2 2 2 2 2 2 5 5
Schlüsselverzeichnis Name Öffentlicher Schlüssel (e,n) Max Mustermann (3, 33)
Aufgaben 1. Schlüsselerzeugung Erzeuge dir, wie beschrieben, deinen persönlichen öffentlichen und privaten Schlüssel. 1. p = q = 2. n = p q = = 3. m = (p - 1) (q 1) = = m = 4. e = Notiere deinen öffentlichen Schlüssel unten. 5. g = h = 6. g : m = : = g : m = Rest d = Notiere deinen privaten Schlüssel unten. öffentlicher Schlüssel (e,n) = (, ) privater Schlüssel (d,n) = (, ) Trage den öffentlichen Schlüssel mit deinem Namen in das Schlüsselverzeichnis ein. Damit kann jeder mit deinem öffentlichen Schlüssel eine Nachricht an dich verschlüsseln, die nur du unter Anwendung deines privaten Schlüssels entschlüsseln kannst. Halte deinen privaten Schlüssel geheim!
2. Nachricht verschlüsseln Einigt euch in der Gruppe, wer wem eine Nachricht zuschickt, so dass jeder eine Nachricht erhält. Suche dir aus dem Schlüsselverzeichnis den öffentlichen Schlüssel deines Empfängers und verschlüssle damit eine von dir gewählte kurze Nachricht (max. sechs Buchstaben), wie beschrieben. öffentlicher Schlüssel deines Nachrichtenempfängers (e,n) = (, ) 1. Nachricht: 2. Zahlendarstellung: 3. Zahlendarstellung: 4. Blöcke: 5. Verwende zur Berechnung der Potenzen und der Division mit Rest modulo den Rechner unter: _ 6. Verschlüsselte Nachricht Schreibe diese verschlüsselte Nachricht auf ein Blatt und gib sie dem Empfänger.
3. Nachricht entschlüsseln dein privaten Schlüssel (aus Aufgabe 1) (d,n) = (, ) 1. Nachricht in Blöcken: 2. Verwende zur Berechnung der Potenzen und der Division mit Rest modulo den Rechner unter: 3. Zusammengesetzte Zahl 4. Entschlüsselte Nachricht