RSA-Verschlüsselung

Werbung
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
Herunterladen