IT-Security. Teil 13: Asymmetrische Verschlüsselung

Ähnliche Dokumente
Literatur. ISM SS 2017 Teil 8/Asymmetrische Verschlüsselung

IT-Sicherheitsmanagement. Teil 8: Asymmetrische Verschlüsselung

IT-Sicherheitsmanagement. Teil 12: Asymmetrische Verschlüsselung

Literatur. ISM SS 2018 Teil 3/Restklassen

Literatur. ITSec SS 2017 Teil 7/Restklassen

RSA-Verfahren Schnelle Ver- / Entschlüsselung Zusammenhang mit dem Faktorisierungsproblem. RSA-Verfahren. Herwig Stütz

Proseminar Datensicherheit & Versicherungsmathematik RSA-Verfahren

Public Key Kryptographie

6: Public-Key Kryptographie (Grundidee)

Public-Key Kryptographie mit dem RSA Schema. Torsten Büchner

3: Zahlentheorie / Primzahlen

3: Primzahlen. 111 S. Lucks Diskr Strukt. (WS 18/19) 3: Primzahlen

Das RSA-Verfahren. Proseminar Kryptographische Protokolle SS Armin Litzel

Betriebssysteme und Sicherheit

3 Public-Key-Kryptosysteme

VI.4 Elgamal. - vorgestellt 1985 von Taher Elgamal. - nach RSA das wichtigste Public-Key Verfahren

Kryptographie und Komplexität

Public-Key-Verschlüsselung und Diskrete Logarithmen

IT-Sicherheit Kapitel 4 Public Key Algorithmen

Kryptographie - eine mathematische Einführung

Kryptographie und Komplexität

Kryptographische Protokolle

Vorlesung Sicherheit

Asymmetrische Algorithmen

Regine Schreier

Algorithmische Kryptographie

Kryptographie und Komplexität

Kryptographie und Komplexität

Vorlesung Sicherheit

6.2 Asymmetrische Verschlüsselung

ADS: Algorithmen und Datenstrukturen 2

Kryptographie und elliptische Kurven - oder: Wie macht man Mathematikern das Leben schwer?

Algorithmentheorie Randomisierung

Elliptic Curve Cryptography

$Id: ring.tex,v /05/03 15:13:26 hk Exp $

Einführung in die asymmetrische Kryptographie

Mathematische Grundlagen der Kryptografie (1321) SoSe 06

AES und Public-Key-Kryptographie

n ϕ n

Aufgabe der Kryptografie

RSA Verfahren. Kapitel 7 p. 103

Public Key Kryptographie

3.5 Kryptographie - eine Anwendung der Kongruenzrechnung

3. Vortrag: Das RSA-Verschlüsselungsverfahren

4 Der diskrete Logarithmus mit Anwendungen

Kryptographie und Komplexität

Kryptologie. Bernd Borchert. Univ. Tübingen SS Vorlesung. Teil 10. Signaturen, Diffie-Hellman

Algorithmentheorie Randomisierung. Robert Elsässer

IT-Sicherheit: Kryptographie. Asymmetrische Kryptographie

Asymmetrische Kryptographie u

Übungen zur Vorlesung Systemsicherheit

Zahlentheorieseminar: Einführung in die Public-Key-Kryptographie

WS 2013/14. Diskrete Strukturen

Modul Diskrete Mathematik WiSe 2011/12

IT-Security. Teil 15: Zufall

KRYPTOSYSTEME & RSA IM SPEZIELLEN

Zufallsprimzahlen und eine Revolution in der Kryptographie Stefan Edelkamp

RSA Äquivalenz der Parameter

SCHRIFTLICHE ZUSAMMENFASSUNG ZUM VORTRAG DIE GRUNDLAGEN DER RSA-VERSCHLÜSSELUNG VON DANIEL METZSCH

Klausurtermin. Klausur Diskrete Mathematik I Do stündig

Kryptographie mit elliptischen Kurven

Das RSA Kryptosystem

Anwendungen der Linearen Algebra: Kryptologie

Lösungen der Aufgaben

WS 2009/10. Diskrete Strukturen

Public Key Kryptographie mit dem RSA Schema. Karsten Fischer, Sven Kauer

Kryptographische Algorithmen

Datensicherheit durch Kryptographie

Kleiner Fermatscher Satz, Chinesischer Restsatz, Eulersche '-Funktion, RSA

Vorlesung Sicherheit

Kapitel 2. Elementare Zahlentheorie Primfaktorzerlegung

IT-Security. Teil 8b: Rechnen mit beliebiger Genauigkeit Algorithmen

Der kleine Satz von Fermat

Vorlesung 7. Tilman Bauer. 25. September 2007

El. Zahlentheorie I: Der kleine Satz von Fermat

Das RSA-Verfahren. Armin Litzel. Proseminar Kryptographische Protokolle SS 2009

Diskreter Logarithmus und Primkörper

Übung GSS Blatt 6. SVS Sicherheit in Verteilten Systemen

Kryptograhie Wie funktioniert Electronic Banking? Kurt Mehlhorn Adrian Neumann Max-Planck-Institut für Informatik

Trim Size: 176mm x 240mm Lang ftoc.tex V1-5.Juli :54 P.M. Page 9

4 Der diskrete Logarithmus mit Anwendungen

INFORMATIONSSICHERHEIT

4 Kryptologie. Übersicht

Digitale Unterschriften mit ElGamal

Gruppenbasierte Kryptographie. ElGamal Sicherheit. Drei Probleme. ElGamal Verschlüsselung. Benutzt zyklische Gruppen von (fast) Primzahlordnung:

VI. Public-Key Kryptographie

Technikseminar SS2012

Public-Key Verschlüsselung

ggt mit Euklid Satz: Um ggt(k, l) mit dem Euklidischen Algorithmus zu berechnen, braucht man höchstens log Φ k < 3 2 log 2 k rekursive Aufrufe.

Kryptographie Reine Mathematik in den Geheimdiensten

INFORMATIONSSICHERHEIT

Satz von Euler. Satz von Euler. Korollar 1. Korollar 2 Kleiner Fermat. Sei (G, ) eine endl. abelsche Gruppe. Dann gilt a G = 1 für alle a G.

Kapitel 3 Elementare Zahletheorie

Satz von Euler. Satz von Euler. Korollar 1. Korollar 2 Kleiner Fermat. Sei (G, ) eine endl. abelsche Gruppe. Dann gilt a G = 1 für alle a G.

Public Key Kryptographie

Entwicklung der Asymmetrischen Kryptographie und deren Einsatz

Vorkurs für. Studierende in Mathematik und Physik. Einführung in Kryptographie Kurzskript 2015

Vorlesung Datensicherheit. Sommersemester 2010

Transkript:

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