Public -Key : Schlüsselaustausch RSA |
![]() |
© Michael Kalinka, 2002 |
Message - Receiver = Publickey - Sender | Message - Sender = Publickey - Receiver | |
wähle 2 Primzahlen p und q | ||
berechne n= p * q (den Modulus) | ||
berechne f(n) = (p-1)*(q-1) | ||
vernichte p und q | ||
wähle e (öffentlicher Exponent), teilerfremd zu f(n) |
Nachricht m liegt in plaintext vor | |
n, e sind öffentliche Werte (public key) | n, e werden gesendet---------> | public key (n, e) wird gespeichert |
berechne d = e-1 mod f(n)1 (private key) | berechne c = me mod n | |
d wird nie veröffentlicht | c ist der chiffretext | |
chiffretext wird empfangen | <----------------c wird gesendet | |
berechne cd = (me)d = me*d = m | ||
m ist die gesendete Nachricht |
Sicherheit : Um einen privaten Schlüssel
aus den öffentlich bekannten Werten
(n,e) zu erhalten, muß f(n) bzw. p
und q nachgebildet werden. Kurz : n muß
in Primzahlen faktorisiert werden.
Deswegen werden beide Primzahlen etwa gleich
groß gewählt (2*512 Bit = 1024
Bit)
Beispiel :
E : Zwei Primzahlen p = 3, q = 5 =>
n = p*q = 3*5 = 15
E : f(n) = (p-1)*(q-1) = 2*4 = 8
E : wähle e teilerfremd zu f(n), e=
11
E : Ermittle den private key d:
d = e-1 mod f(n), dazu :
Berechne Vielfache von f(n), addiere 1 und
teile sie durch e:
1*8+1 = 9 (nicht durch e=11 teilbar)
2*8+1 =17 (nicht durch e=11 teilbar)
3*8+1 =25 (nicht durch e=11 teilbar)
4*8+1 =33 (33 / 11 = 3)
=> d = 3
E : sende public key (n,e)=(15,11) an Sender.
S : Verschlüssele Nachricht m mit c = me mod n ( z.B. m = 3 )
S : sende c = me mod n = 311 mod 15 = 12 an E
E : Entschlüssele c = 12 mit cd mod n = 123 mod 15 = 3 (=m)
Die Technik von RSA basiert auf der Faktorisierung.