Public -Key : Schlüsselaustausch
RSA

RSA
RSA kann Daten verschlüsseln. Jedoch wird nur der symmetrische Sitzungsschlüssel verschlüsselt, da RSA langsamer als symmetrische Verfahren arbeitet.
Nicht die Daten, sondern der Sitzungsschlüssel wird verschlüsselt.
Die mit dem symmetrischen Schlüssel verschlüsselten Daten werden zusammen mit dem durch RSA verschlüsselten symmetrischen Schlüssel übertragen. Der verschlüsselte Schlüssel dient als digitaler Umschlag (digital evelope).
Das Verfahren :
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    
,1d.h. Welche Zahl mit e multipliziert modulo f(n) liefert 1 ? Dazu kann man vielfache von e bilden und mit 1 addieren.
Ist das Ergebnis durch e teilbar, so kann es als private key verwendet werden.=> Empfänger public key = (n,e) , private key = d

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.