IT-Security Teil 13: Asymmetrische Verschlüsselung 09.05.17 1
Literatur [13-1] Beutelspacher, A.; Schwenk, J.; Wolfenstetter, K.-D.: Moderne Verfahren der Kryptographie. 4. Auflage, Vieweg 2001 [13-2] Schmeh, Klaus: Kryptografie. dpunkt, 4. Auflage, 2009 [13-3] Schneier, Bruce: Angewandte Kryptographie. Addison-Wesley http://www.schneier.com/ [13-4] Freiermuth, Karin; Hromkovic, Juraj; Keller, Lucia; Steffen, Björn: Einführung in die Kryptologie. Vieweg+Teubner, 2010 [13-5] Buchmann, Johannes: Einführung in die Kryptographie. 5. Auflage, Springer, 2010 [13-6] Burnett, Steve; Paine, Stephen: Kryptographie. RSA Security s Official Guide. RSA Press, mitp, 2001 [13-7] https://de.wikipedia.org/wiki/rsa-kryptosystem [13-8] https://de.wikipedia.org/wiki/ciphertext_indistinguishability [13-9] http://www.matheprisma.uni-wuppertal.de/module/rsa/index.htm [13-10] https://de.wikipedia.org/wiki/eulersche_phi-funktion 2
Literatur [13-11] https://tools.ietf.org/pdf/rfc2631.pdf [13-12] https://tools.ietf.org/pdf/rfc5114.pdf [13-13] http://csrc.nist.gov/publications/nistpubs/800-56a/sp800-56a_revision1_mar08-2007.pdf http://nvlpubs.nist.gov/nistpubs/specialpublications/nist.sp.800-56ar2.pdf 3
Übersicht Ein bisschen Mathematik Diffie-Hellman-Verfahren RSA-Verfahren Chinesischer Restsatz 4
Euler'sche Φ-Funktion a und b sind teilerfremd, wenn sie außer 1 keinen gemeinsamen Teiler haben, d.h. ggt(a,b)=1 Beispiel: 21=3*7 und 40=2*2*2*5 sind teilerfremd. Euler'sche Φ-Funktion Φ(n) ist die Anzahl der positiven ganzen Zahlen, die kleiner als n und zu n teilerfremd sind, also einschließlich 1. Beispiele: Φ(4)= 2, da alle Elemente aus {1,3} teilerfremd zu 4 sind Φ(6)= 2, da alle Elemente aus {1,5} teilerfremd zu 6 sind Φ(7)= 6, da {1,2,3,4,5,6} teilerfremd zu 7 (Primzahl) Für alle Primzahlen p gilt: Φ(p)= p-1 Für alle Primzahlen p und q gilt: Φ(p*q)= Φ(p)*Φ(q) mit ggt(p,q)=1 5
Satz von Euler Wenn zwei positive Ganzzahlen a und m teilerfremd sind, also wenn ggt(a,m)=1, dann gilt: a Φ(m) 1 (mod m), mit a>0 und ggt(a,m)=1 Beispiel: m= 5,Φ(5)= 4 mit a=3 a 4 (mod 5) = 3 4 = 3*3*3*3 81 (mod 5) = 1 6
Kleiner Satz von Fermat noch einmal Ein Spezialfall vom Euler'schen Satz ist der kleine Satz von Fermat: a p-1 1 (mod p), mit a>0 und ggt(a,p)=1 Das bedeutet auch, dass p-1 auf den Exponenten beliebig oft addiert oder subtrahiert werden kann, ohne die Kongruenz zu ändern. Es kann aber auch modulo p-1 auf den Exponenten ohne Auswirkungen auf die Kongruenz angewendet werden (folgt aus der Definition von Modulo): a r a r mod p-1 (mod p), mit a>0 und ggt(a,p)=1 Dieser Satz bzw. die dadurch ausgedrückte Eigenschaft wird in der Kryptographie oft benutzt. 7
Diffie-Hellman-Schlüsselaustausch Entwickelt Witfield Diffie und Martin Hellman 1976: "New Directions in Cryptography" Verfahren zum Schlüsselaustausch Idee der Public-Key-Verfahren, jedoch kein Algorithmus Epoche machende Arbeit Aus: http://de.wikipedia.org/wiki/whitfield_diffie http://de.wikipedia.org/wiki/martin_hellman 8
Bemerkungen In den 90er Jahren gab es Veröffentlichungen von der NSA, dass die Ideen von Diffie-Hellman sowie auch die späteren Public- Key-Verfahren im Rahmen des Echelon-Netzwerkes (NSA, Britische und Australische "Abhör"-Geheimdienste) schon in den 60er Jahren entwickelt und benutzt wurden. Diese Verfahren wurden jedoch geheim gehalten... Clifford Cocks vom GCHQ hat 1973 die Grundlagen dazu entdeckt, was bis 1997 geheim gehalten wurde. Nach: http://www.di-mgt.com.au/rsa_alg.html Siehe auch: http://de.wikipedia.org/wiki/echelon 9
Das Verfahren I Vorbereitung: A und B einigen sich auf eine Primzahl p und eine natürliche Zahl g mit g<p. p und g sind öffentlich. 1) A wählt zufällig x mit x<p 2) A berechnet a g x mod p 3) A schickt a an B (öffentlich) 4) A erhält b von B (öffentlich) 5) A berechnet K 1 b x mod p 1) B wählt zufällig y mit y<p 2) B berechnet b g y mod p 3) B schickt b an A (öffentlich) 4) B erhält a von A (öffentlich) 5) B berechnet K 2 a y mod p K 1 = K 2 (!) 10
Das Verfahren II - Ein Beispiel Vorarbeiten: g=3 und p=7 (1) A wählt zufällig x=2 mit x<7 (2) B wählt zufällig y=5 mit y<7 (3) A berechnet a g x mod 7 -> a 3 2 mod 7 2 mod 7 (4) A schickt a=2 an B (A's öffentlicher Schlüssel) (5) B berechnet b g y mod 7 -> b 3 5 mod 7 5 mod 7 (6) B schickt b=5 an A (B's öffentlicher Schlüssel) (7) A berechnet K 1 b x mod 7 -> K 1 5 2 mod 7 4 mod 7 (8) B berechnet K 2 a y mod 7 -> K 2 2 5 mod 7 4 mod 7 K 1 = K 2 = 4 11
Sicherheit von Diffie-Hellman (DH) Bitlängen für g, x und y sind frei wählbar - je größer, desto besser; es gibt aber bei der Wahl der Werte einschränkende Regeln (siehe später). Vollständiges Durchprobieren ist nicht effektiv, da es schnellere Algorithmen zur Lösung des diskreten Logarithmus gibt: 512 bit sind viel zu klein 1024 bit sind na ja 2048 bit sind in Ordnung Bisher ist kein Verfahren bekannt, das einen 2048 bit-schlüssel innerhalb eines Menschenlebens knacken konnte. DH ist aber für den Man-in-the-Middle-Angriff empfindlich, d.h. es muss eine Authentisierung zusätzlich durchgeführt werden. 12
Einschränkungen bei der Wahl von g I g wird auch Generator genannt. Eine Zahl ist dann ein Generator, wenn ihre Potenzierungen jedes Element der Grundmenge außer der 0 ergeben. Für die Grundmenge G kann daher geschrieben werden: G\{0}= g ={g,g 2,g 3,g 4,...,g n-1 } Eine Gruppe, die ein solches g als Element der Grundmenge enthält, wird zyklische Gruppe genannt. Das g beim Diffie-Hellman-Verfahren sollte ein Generator sein. Warum? Siehe https://de.wikipedia.org/wiki/zyklische_gruppe https://de.wikipedia.org/wiki/erzeugendensystem https://de.wikipedia.org/wiki/primitivwurzel 13
Beispiele für Generatoren g Sequenz der Potenzen bei p= 41 1 1 2 2 4 8 16 32 23 5 10 20 40 39 37 33 25 9 18 36 31 21 1 3 3 9 27 40 38 32 14 1 3 9 27 40 38 32 14 1 4 4 16 23 10 40 37 25 18 31 1 5 5 25 2 10 9 4 20 18 8 40 36 16 39 31 32 37 21 23 33 1 6 6 36 11 25 27 39 29 10 19 32 28 4 24 21 3 18 26 33 34 40 35 5 30 16 14 2 12 31 22 9 13 37 17 20 38 23 15 8 7 1 7 7 8 15 23 38 20 17 37 13 9 22 31 12 2 14 16 30 5 35 40 34 33 26 18 3 21 24 4 28 32 19 10 29 39 27 25 11 36 6 1 40 40 1 In der Tabelle bilden nur die Werte 6 und 7 Generatoren. Eine 1, 4 oder 40 für g zu wählen, ist keine gute Idee. Der Zyklus bei einem Generator endet immer mit einer 1: g p-1 mod p = 1 14
Einschränkungen bei der Wahl von g II Wenn g kein Generatorelement ist, dann kann durch g x bzw. g y nur eine Teilmenge der Grundmenge beim Potenzieren "benutzt" werden, was dem Angreifer sein Werk erleichtert. Extremes Beispiel: g=1, dann berechnen Alice und Bob a=1 und b=1 unabhängig von ihren gewählten x- und y-werten. Das erneute Potenzieren der ausgetauschten Werte führt zu K 1 =K 2 =1 als einzig möglichen Wert. Wie lässt sich prüfen, ob eine Zahl ein Generator ist? Starke Primzahl = Eine Primzahl p ist dann stark, wenn die Zahl q= (p-1)/2 auch eine Primzahl ist. Satz: Für eine starke Primzahl p ist g ein Generator, wenn g 2 mod p<>1 und g q mod p<>1 mit q= (p-1)/2 gelten. Damit kann leicht eine Prüfroutine realisiert werden. 15
Einschränkungen bei der Wahl von g III p=23 q=11 g g 2 mod p<>1 g q mod p<>1 5 True True 7 True True 10 True True 11 True True 14 True True 15 True True 17 True True 19 True True 20 True True 21 True True 22 False True Wenn der Kandidat aus der Menge {2,..,p-2} ausgewählt wird, kann das Prüfen von g 2 mod p<>1 weggelassen werden, da dies nur bei p-1 relevant wird, siehe Beispiel. g=22 ist kein Generator 16
BSI-Empfehlungen - Diffie-Hellman p sollte mindestens 3000 bit lang sein. Die zufälligen Werte x und y sollten mind. 250 bit lang sein. Die Wahl von g sollte immer ein Generator sein bzw. der Zyklus mindestens 2 250 lang sein, d.h. nach 2 250 Potenzierungen wiederholen sich die generierten Elemente. Für die Primzahl p sollte auch gelten, dass die Zahl (p-1)/2 auch eine Primzahl ist, d.h. p sollte eine starke Primzahl sein. 17
RSA-Verfahren Entwickelt 1977 aufgrund der Veröffentlichung von Diffie-Hellman Erfinder: R. Rivest, A. Shamir, L. Adleman (RSA) Verfahren ist im PKCS#1 beschrieben. Siehe: http://de.wikipedia.org/wiki/rsa-kryptosystem Das RSA-Verfahren war bis zum Jahr 2000 patentiert. http://www.ams.org/featurecolumn/images/april2006/internet12.jpg Die drei vor längerer Zeit am MIT Links: Shamir, Mitte: Rivest Rechts: Adleman 18
RSA-Algorithmus I p und q sind ungleiche ungerade positive Primzahlen n= p*q, dieses n wird RSA-Modul genannt e und d werden aus N so gewählt, dass e*d 1 (mod Φ(n)) ist. P aus N ist der Klartext, C aus N ist der Chiffretext: Verschlüsseln (1. Anwendung): C = P e MOD n Entschlüsseln (2. Anwendung): P = C d MOD n Öffentlicher Schlüssel ist K p ={e,n} Geheimer Schlüssel ist K s ={d,n} Schlüsselpaar ist {{e,n},{d,n}} 19
RSA-Algorithmus II - Korrektheit 1) Es wurden d und e gewählt, wobei gilt: d*e 1 (mod Φ(n)) also gilt auch: d*e k*φ(n)+1 und mit P als Plaintext 2) C P e (mod n) // 1. Anwendung mit e 3) P' C d (mod n) // 2. Anwendung mit d 4) P' P e*d (mod n) // C wird ersetzt durch P (Zeile 2) 5) P' P (k*φ(n)+1) (mod n) // wegen Zeile 1) 6) P' P k*φ(n) *P (mod n) // +1 aus dem Index zum Faktor P 7) P' (P Φ(n) ) k *P (mod n) // Produkt der Potenz 8) P' (1) k *P (mod n) // Euler: a Φ(n) 1 (mod n) 9) P' P (mod n) // q.e.d.. da P'=P 20
Bedingungen P darf nicht 0 oder 1 oder n-1 sein. P darf nicht größer als n sein; es sei denn es wird die Randbedingung des Satzes von Euler geprüft: ggt(p,n)=1. Beispiel: Wenn n 8096+2 bit lang ist, können Blöcke von 1 KByte bearbeitet werden. 21
Schlüsselerzeugung (vereinfacht) 1) Wähle zwei zufällige ungleiche Primzahlen p, q 2)Berechne n=p*q und Φ(n)= Φ(p)*Φ(q)= (p-1)*(q-1) 3) Wähle ein e und berechne ggt(e,φ(n)), falls dies ungleich 1 ist, dann wähle ein neues e (oder neues n) 4)Berechne d mit (d*e) mod Φ(n)=1 bzw. d*e 1 (mod Φ(n)) 5) Öffentlicher Schlüssel ist {e,n} 6) Geheimer Schlüssel ist {d,n} e sollte nicht zu klein gewählt werden, üblich ist der Bereich zwischen 2 16 +1= 65537 und 2 1824-1. Die Sicherheit beruht auf der aufwendigen Bestimmung von p und q anhand von n. 22
Schlüsselerzeugung (Algorithmus) I func BigInt generateprime(int keysize>8) { delta:= 2; range:= [2**(keySize/2-delta),2**(keySize/2+delta)]; p:= random(range) with bit0=1 highest2bits=11; while not isprime(p){ p:= p+2; } return p; } isprime(p) testet die übergebene Zahl, ob sie eine Primzahl ist. Falls (vermutlich) ja, dann wird ein True, ansonsten ein False geliefert. random() liefert eine Zufallszahl innerhalb des angegebenen Bereichs. 23
Schlüsselerzeugung (Algorithmus) II func BigInt[] generatekeys(int keysize>8) { success:= false; while not success { p:= generateprime(keysize/2); do { q:= generateprime(keysize/2); } until p<>q; phin:= (p-1)*(q-1); elist:= [2**16+1,realPrime()]; foreach e in elist { if ggt(e,phin)=1 { success:= true; break; } } } } d:= invers(e,phin); return [p,q,n,e,d]; Liste von echten Primzahlen Berechnung des multiplikativen Inversen mit eggt() 24
Bemerkungen I Für die Wahl von p und q gibt es noch weitere einschränkende Bedingungen, siehe: http://nvlpubs.nist.gov/nistpubs/fips/nist.fips.186-4.pdf Anhang B.3.4 Diese Einschränkungen beruhen auf bekannten Algorithmen der Gegenseite und erhöhen für diese Algorithmen den Aufwand. Aber: das verletzt die Gleichverteilung, besser ist wohl die Schlüssellänge zu vergrößern. 25
Bemerkungen II - Optimierungen Optimierung: foreach e in elist { if ggt(e,phin)=1 { success:= true; break; } } foreach e in elist { if ggt(e,p-1)=1 and ggt(e,q-1) { success:= true; break; } } Falls e eine echte Primzahl ist: ggt(e,p-1)>1 --> p-1= k*e --> p-1 MOD e = 0 --> p MOD e = 1 foreach e in elist { if p mod e<>1 and q mod e<>1 { success:= true; break; } } 26
Formate Die Werte-Paare der beiden Schlüssel werden in ein bestimmtes Format gebracht, z.b. nach PKCS#1. Das Format wird in ASN definiert: ftp://ftp.rsasecurity.com/pub/pkcs/pkcs-1/pkcs-1v2-2.asn Siehe dazu: https://en.wikipedia.org/wiki/pkcs_1 Version 2.2 (RFC 8017) https://tools.ietf.org/html/rfc8017 27
Ein Beispiel Wahl: p= 5, q= 17 n= p*q= 85 und e= 3 Φ(n)= Φ(85)= (p-1)*(q-1)= 4*16= 64 d*e 1 mod 64 mit d= 43 da 43*3 1 mod Φ(85) e = 3 und d = 43, d.h. Öffentlicher Schlüssel ist { 3,85} Geheimer Schlüssel ist {43,85} Beispiel Verschlüsselung m= 2 (Nachricht) C m e mod n, also C 2 3 mod 85 C= 8 Entschlüsselung m' C d mod n, also m' 8 43 mod 85 p'= 2 28
Chinesischer Restsatz (CRT) I Bei paarweise teilerfremden Zahlen m 1, m 2.. m n gibt es für folgende Kongruenzen x = a 1 mod m 1 x = a 2 mod m 2... x = a n mod m n genau eine Lösung in {0, 1, 2,..,M-1} mit M= m 1 *m 2 *.. *m n. Der chinesische Restsatz liefert aber kein Verfahren x zu bestimmen. 29
Chinesischer Restsatz (CRT) II - Lösung Lösungsidee: Mit M k = M/m k = m 1 *m 2 *.. m n /m k und IM k = M k -1 (mod m k ) = invers(m k,m k ) x = a 1 mod m 1 x = a 2 mod m 2... x = a n mod m n M= m 1 *m 2 *.. *m n dann IM k *M k = 1 mod m k und x = a 1 *IM 1 *M 1 mod M + a 2 *IM 2 *M 2 mod M + +a n *IM n *M n mod M Die Lösungsidee besteht darin, aus n Gleichungen eine zu machen und dabei auszunutzen, dass bei mod m k alle anderen Summanden 0 sind. Dann erfüllt die letzte Gleichung alle Bedingungen der anderen. 30
Chinesischer Restsatz (CRT) III - Lösung Es gilt für k=1 M 1 = M/m 1 Dann ist M 1 0 mod m 1 M k = 0 mod m k für k=2,3,..,n Das gilt analog für k=2 etc. Es gilt für k=1 IM 1 = M 1-1 = (M/m 1 ) -1 bzgl. m 1 Dann ist IM 1 *M 1 = 1 mod m 1 IM k *M k = 0 mod m k für k=2,3,..,n Das gilt analog für k=2 etc. M k ist Vielfaches von m k x = a 1 mod m 1 x = a 2 mod m 2... x = a n mod m n M= m 1 *m 2 *.. *m n M 1 0 mod m 1 muss gelten, da alle Faktoren paarweise teilerfremd sind. 31
Chinesischer Restsatz (CRT) IV - Begründung x = a 1 *IM 1 *M 1 mod M + a 2 *IM 2 *M 2 mod M + +a n *IM n *M n mod M k=1 1 0 0 k=2 0 1 0 k=n 0 0 1 Warum? Es gilt: a mod b*c mod b = a mod b Wenn in die Kongruenzen eingesetzt wird x = a 1 mod m 1 Mit z=m*(z div m)+ z mod m und m=b*c, z=a a= b*c*(a div b*c)+ a mod b*c a mod b*c= a-b*c*(a div b*c), also (a-b*c*(a div b*c))mod b = a mod b x = a 2 mod m 2... x = a n mod m n M= m 1 *m 2 *.. *m n 32
Chinesischer Restsatz (CRT) V - Begründung Beispiel k=1: Es wird x = a 1 *IM 1 *M 1 mod M + a 2 *IM 2 *M 2 mod M + +a n *IM n *M n mod M in x = a 1 mod m 1 eingesetzt, so a 1 *IM 1 *M 1 mod M = a 1 *IM 1 *M 1 mod M mod m 1 = a 1 *IM 1 *M 1 mod k*m 1 mod m 1 = a 1 *IM 1 *M 1 mod m 1 = a 1 *1 mod m 1 = a 1 mod m 1 a k *IM k *M k mod M = a k *IM k *M k mod M mod m k, für k=2,3,..,n = a k *IM k *M k mod m k = a k *0 mod m k = 0 33
Chinesischer Restsatz (CRT) VI - Beispiel x = 2 mod 3 x = 3 mod 4 x = 2 mod 5 M= 2*3*5 = 60 M 1 = 60/3 = 20 M 2 = 60/4 = 15 M 3 = 60/5 = 12 IM 1 = -13*3+2*20=> 2 IM 2 = -11*4+3*15=> 3 IM 3 = 5*5+-2*12=>-2 Mit dem erweiterten ggt x = a 1 *IM 1 *M 1 mod M + a 2 *IM 2 *M 2 mod M + a 3 *IM 3 *M 3 mod M x = 2*2*20 + 3*3*15 + 2*-2*12* mod 60 x = 80 + 135 48 mod 60 x = 167 mod 60 = 47 34
Was hat das mit dem RSA-Verfahren zu tun? Die Seite, die den geheimen Schlüssel kennt, also d, muss P = C d MOD n berechnen, mit n=p*q. Also: P = C d MOD p*q Oder: x = C d MOD p und x = C d MOD q mit x = MOD p*q Die Idee besteht also darin, den Modulo-Wert zu verkleinern. 35
Garner's Formel I x = a 1 mod p x = a 2 mod q IM 1 = M 1-1 = q -1 bzgl. p IM 2 = M 2-1 = p -1 bzgl. q M= p*q, M 1 = p, M 2 = q x = a 1 *IM 1 *M 1 mod M + a 2 *IM 2 *M 2 mod M x = (a 1 *q -1 *p + a 2 *p -1 *q) mod p*q Bisherige Lösung Mit x 1 = a 1 mod p x 2 = a 2 mod q ip = p -1 mod q h = ip*(x 1 -x 2 ) mod p x = h*q+x 2 x = (ip*(x 1 -x 2 ) mod p)*q+x 2 Garner's Formel mit x 1 >=x 2 36
Garner's Formel II - Motivation x = (((p -1 mod q)*(x 1 -x 2 )) mod p)*q+x 2 x mod q = ((((p -1 mod q)*(x 1 -x 2 )) mod p)*q+x 2 ) mod q = (k*q+x 2 ) mod q = x 2 mod q x = x 2 = a 2 mod q x mod p = ((((p -1 mod q)*(x 1 -x 2 )) mod p)*q+x 2 ) mod p = (((p -1 mod q)*(x 1 -x 2 ))*q+x 2 ) mod p = ((p -1 mod q)*q*(x 1 -x 2 )+x 2 ) mod p = (1*(x 1 -x 2 )+x 2 ) mod p x = x 1 = a 1 mod p Wobei gilt: (a mod p +b ) mod p = (a+b) mod p 37
Potenzieren mit Modulo eines Primzahlenprodukts Es seien beim RSA-Verfahren m= c d mod p*q p eine Primzahl q eine Primzahl (p q, aber size(p) size(q)) n, das RSA-Modul mit n=p*q d eine (geheime) Zahl d p = dmp1= d mod (p-1) Reduktion nach kleinem Satz d. Fermat d q = dmq1= d mod (q-1) Reduktion nach kleinem Satz d. Fermat q -1 = iqmp = q -1 mod p c, m Nachrichten m 1 = c dmp1 mod p m 2 = c dmq1 mod q statt m= (q -1 *(m 1 -m 2 ) mod p)*q+m 2 m= c d mod n und ist 3-4x schneller 38
Bemerkungen Um folgende Optimierungen durchführen zu können: d p = dmp1= d mod (p-1) Reduktion nach kleinem Satz d. Fermat d q = dmq1= d mod (q-1) Reduktion nach kleinem Satz d. Fermat muss ggt(c,p)=1 und ggt(c,q)=1 gelten (Voraussetzungen des kleinen Satz von Fermat) m 1 = c dmp1 mod p = c d mod (p-1) mod p m 2 = c dmq1 mod q = c d mod (q-1) mod q d.h. in c darf p bzw. q nicht als Primfaktor enthalten sein. Wenn aber in c p bzw. q als Primfaktor enthalten ist, ist das Ergebnis immer 0, auch wenn die Potenz falsch reduziert wurde. (Ein Beispiel für fehlerhafte Realisierung, die dann doch richtig wird). 39
Sicherheit von RSA Schlüssellängen Unter 512 bit nicht zu empfehlen 1024 bit nur für Hausgebrauch 2048 bit in Ordnung, besser länger Faktorisierungsattacke 155 bit 1999 576 bit 2003 640 bit 2005 768 bit 2009 Siehe: http://www.emc.com/emc-plus/rsa-labs/historical/the-rsa-challenge-numbers.htm 40
BSI-Empfehlungen - RSA p und q sollten ähnlich groß, aber nicht gleich sein: 0.1< abs(log 2 p-log 2 q) <30 Die Wahrscheinlichkeit, dass p oder q doch keine Primzahlen sind, sollte kleiner als 2-100 sein. Die Schlüssellänge von n sollte mindestens 3000 bit lang sein. Für e darf kein kleiner Wert, wie z.b. 3, benutzt werden; Werte ab 2 16 +1 bis 2 1824 sind in Ordnung. Falls d gewählt wird, so muss die Bitlänge von d größer als ¼ der Bitlänge von n sein. Die Optimierung nach dem Chinesischen Restzahlensatz sollte unterlassen werden, da p und q sicher gespeichert werden müssen. Die Nachricht m muss kleiner als n sein, da ansonsten geprüft werden muss, ob ggt(m,n)=1 ist, mit m als der Nachricht (Bedingung des Satzes von Euler). Das obige Verfahren ist die Lehrbuch-Variante, die nicht so in der Praxis benutzt werden sollte. 41
Weitere asymmetrische Verfahren Digital Signature Algorithm (DSA) Elliptic Curve Cryptography (ECC) Cailey-Purser ElGamal Es gibt ca. 13.000 Variationen bei den Verfahren der Gruppe, die auf den diskreten Logarithmen beruhen. 42
Nach dieser Anstrengung etwas Entspannung... 43