RSA-Verschlüsselung Das RSA-Verfahren (1978 von Rivest, Shamir und Adleman) 1. Schlüsselvergabe Beispiel Wähle zwei große Primzahlen p und q p=5 und q = 11 Berechne n = p * q n = 5 * 11 = 55 φ(n) = (p - 1) * (q - 1) φ(n) = 4 * 10 = 40 Bestimme d und e so, dass d*e 1 mod φ(n) 1. Kandidat 1 nicht teilbar 2. Kandidat 41 nicht teilbar 3. Kandidat 81 = 3 * 27 also d = 3 und e = 27 Resultat: p=5, q=11, n=55,d=3 und e=27 Resultat: p=5, q=11, n=55,d=3 und e=27 Öffentlicher Schlüssel: (n,e) öffentlich: n = 55 und e = 27 Geheimer Schlüssel: geheim: d d=3 2. Verschlüsselung: Öffentlicher Schlüssel: (n,e) öffentlich: n = 55 und e = 27 Geheimer Schlüssel: geheim: d zu verschlüsselnde Zahl m berechne m hoch e und bilde den Rest modulo n c d=3 Verschlüsselung von m = 2 227 18 mod 55 me mod n Das heißt 18 wird als Verschlüsselung von 2 versendet. 3. Entschlüsselung: Öffentlicher Schlüssel: (n,e) öffentlich: n = 55 und e = 27 Geheimer Schlüssel: geheim: d Entschlüsselung durch den Empfänger mit Hilfe des geheimen Schlüssels d. Berechne c hoch d und bilde den Rest modulo 55 m‘ d c mod n d=3 Entschlüsselung durch den Empfänger mit Hilfe des geheimen Schlüssels d = 3. Entschlüsselung 183 2 mod 55 Probleme bei den kleinen Zahlen: (n = 55, e = 27 und d = 3) Nur 55 unterschiedliche Chiffrierergebnisse möglich. Verschlüsselung einfach aufzudecken Bei : p = 9091, q = 701, n = 6372791, e = 1111111 und d = 696991 gibt es immerhin 6372791 unterschiedliche Chiffrierergebnisse Übung: Laden Sie RSA_long von moodle und ergänzen Sie 1) das Knacken eines Codes und 2) das Erzeugen eines neuen Codes aus zwei Primzahlen Hinweis: Erstellen Sie folgende Methoden zum Knacken eines Codes 1.1 public static long ermittleP (long n) 1.2 public static long ermittleQ (long n, long p) 1.3 public static long ermittlePhi (long p, long q) 1.4 public static long ermittleD (long phi, long e) Erstellen Sie folgende Methoden zum Erzeugen eines Codes 2.1 public static long ermittleN (long p, long q) 2.2 public static long ermittleD (long phi) 2.3 public static long ermittleE (long phi,long d) Zum Testen von 2) holen Sie Primzahlen bei: http://www-fs.informatik.unituebingen.de/~reinhard/krypto/German/2.3.2.d.html