Vorlesungsbegleitende Folien zur LV Kryptologie, WS 2009/2010



Ähnliche Dokumente
11. Das RSA Verfahren und andere Verfahren

10. Public-Key Kryptographie

10. Kryptographie. Was ist Kryptographie?

12 Kryptologie. ... immer wichtiger. Militär (Geheimhaltung) Telebanking, Elektronisches Geld E-Commerce

Diffie-Hellman, ElGamal und DSS. Vortrag von David Gümbel am

Primzahlen und RSA-Verschlüsselung

Eine Praxis-orientierte Einführung in die Kryptographie

Digitale Signaturen. Sven Tabbert

Netzsicherheit I, WS 2008/2009 Übung 12. Prof. Dr. Jörg Schwenk

10.6 Authentizität. Geheimhaltung: nur der Empfänger kann die Nachricht lesen

RSA Verfahren. Kapitel 7 p. 103

Authentikation und digitale Signatur

Symmetrische und Asymmetrische Kryptographie. Technik Seminar 2012

Informatik für Ökonomen II HS 09

Stammtisch Zertifikate

Erste Vorlesung Kryptographie

ein paar Literaturangaben zur Kryptologie, WS 2008/2009:

Inhaltsverzeichnis. Wolfgang Ertel. Angewandte Kryptographie. ISBN (Buch): ISBN (E-Book):

IT-Sicherheit Kapitel 3 Public Key Kryptographie

Das RSA-Verschlüsselungsverfahren 1 Christian Vollmer

Kryptographie Reine Mathematik in den Geheimdiensten

Betriebssysteme und Sicherheit Sicherheit. Signaturen, Zertifikate, Sichere

Kryptographie eine erste Ubersicht

Konzepte von Betriebssystemkomponenten: Schwerpunkt Sicherheit. Asymmetrische Verschlüsselung, Digitale Signatur

Kryptographische Verfahren. zur Datenübertragung im Internet. Patrick Schmid, Martin Sommer, Elvis Corbo

IT-Sicherheitsmanagement. Teil 12: Asymmetrische Verschlüsselung

Lenstras Algorithmus für Faktorisierung

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

Programmiertechnik II

Grundlagen der Kryptographie

Bernd Blümel. Verschlüsselung. Prof. Dr. Blümel

Grundfach Informatik in der Sek II

IT-Sicherheit: Kryptographie. Asymmetrische Kryptographie

9 Schlüsseleinigung, Schlüsselaustausch

SSL/TLS Sicherheit Warum es sich lohnt, sich mit Ciphersuites zu beschäftigen

Nachrichten- Verschlüsselung Mit S/MIME

Kryptographische Systeme (M, C, K, e, d) Symmetrische Verfahren (gleicher Schlüssel zum Verschlüsseln und Entschlüsseln):

Sicherheit in Netzwerken. Leonard Claus, WS 2012 / 2013

Algorithmische Kryptographie

Modul Diskrete Mathematik WiSe 2011/12

Digitale Unterschriften Grundlagen der digitalen Unterschriften Hash-Then-Sign Unterschriften Public-Key Infrastrukturen (PKI) Digitale Signaturen

Was bisher geschah Kryptographische Systeme (M, C, K, e, d) Verfahren: symmetrisch klassisch: Verschiebechiffren (Spezialfall Caesar-Code)

Kurze Einführung in kryptographische Grundlagen.

Einfache kryptographische Verfahren

-Verschlüsselung

Verschlüsselung. Chiffrat. Eve

Übungen zu. Grundlagen der Kryptologie SS Hochschule Konstanz. Dr.-Ing. Harald Vater. Giesecke & Devrient GmbH Prinzregentenstraße 159

Kryptographische Anonymisierung bei Verkehrsflussanalysen

Kryptographie oder Verschlüsselungstechniken

Schutz von Informationen bei Übertragung über unsichere Kanäle Beispiele für zu schützende Informationen

1 Kryptosysteme 1 KRYPTOSYSTEME. Definition 1.1 Eine Kryptosystem (P(A), C(B), K, E, D) besteht aus

Asymmetrische. Verschlüsselungsverfahren. erarbeitet von: Emilia Winkler Christian-Weise-Gymnasium Zittau

Zahlen und das Hüten von Geheimnissen (G. Wiese, 23. April 2009)

Linux User Group Tübingen

Allgemeine Erläuterungen zu

Multicast Security Group Key Management Architecture (MSEC GKMArch)

Sicherheit von PDF-Dateien

Kryptographie I Symmetrische Kryptographie

U3L Ffm Verfahren zur Datenverschlüsselung

Digital Rights Management (DRM) Verfahren, die helfen Rechte an virtuellen Waren durchzusetzen. Public-Key-Kryptographie (2 Termine)

Klassische Verschlüsselungsverfahren

Verteilte Systeme Unsicherheit in Verteilten Systemen

Verteilte Systeme. Übung 10. Jens Müller-Iden

IT-Sicherheit Kapitel 11 SSL/TLS

Mail encryption Gateway

Computeralgebra in der Lehre am Beispiel Kryptografie

Verschlüsselung. Kirchstraße 18 Steinfelderstraße Birkweiler Bad Bergzabern Fabian Simon Bfit09

Kryptographie praktisch erlebt

Mathematische Grundlagen der Kryptographie. 1. Ganze Zahlen 2. Kongruenzen und Restklassenringe. Stefan Brandstädter Jennifer Karstens

Exkurs Kryptographie

Anhang I zur Vorlesung Kryptologie: Elementare Zahlentheorie

8: Zufallsorakel. Wir suchen: Einfache mathematische Abstraktion für Hashfunktionen

Kryptographische Algorithmen

Grundbegriffe der Kryptographie II Technisches Seminar SS 2012 Deniz Bilen

Merkblatt: Sichere -Kommunikation zur datenschutz cert GmbH

RSA-Verschlüsselung. Verfahren zur Erzeugung der beiden Schlüssel:

Betriebssysteme und Sicherheit

-Verschlüsselung mit Geschäftspartnern

Datensicherheit durch Kryptographie

Einführung in PGP/GPG Mailverschlüsselung

Kapitel 3: Etwas Informationstheorie

IT-Sicherheitsmanagement Teil 6: Einführung in die Kryptographie

Public-Key-Kryptosystem

OpenPGP Eine Einführung

Konzepte von Betriebssystem-Komponenten: Schwerpunkt Sicherheit Grundlagen: Asymmetrische Verschlüsslung, Digitale Signatur

-Verschlüsselung mit S/MIME

Entwicklung der Asymmetrischen Kryptographie und deren Einsatz

Kryptographie. Nachricht

Wiederholung: Informationssicherheit Ziele

6.2 Perfekte Sicherheit

Web of Trust, PGP, GnuPG

Kryptographie. = verborgen + schreiben

Secure Sockets Layer (SSL) Prof. Dr. P. Trommler

Einführung in die moderne Kryptographie

Anleitung Thunderbird Verschlu sselung

Grundlagen der Verschlüsselung und Authentifizierung (2)

Empfehlungen für den sicheren Einsatz. SSL-verschlüsselter Verbindungen. Dipl.-Inform. Lars Oergel Technische Universität Berlin. 13.

und Digitale Signatur

Einführung in die verschlüsselte Kommunikation

PGP und das Web of Trust

Transkript:

Prof. Dr. Karl Udo Jahn, HTWK Leipzig Vorlesungsbegleitende Folien zur LV Kryptologie, WS 2009/2010 Inhaltsverzeichnis Einleitung mit Beispielen, Literaturempfehlungen 1. Grundbegriffe 1.1 Kryptographie Kryptoanalyse 1.2 Kryptosysteme 1.3 Beispiel (Verschiebechiffre) 1.4 generelle Methoden der Kryptoanalyse 1.5 kryptographische Protokolle 1.6 Angriffe auf kryptographische Protokolle 2. klassische symmetrische Kryptosysteme 2.1 monoalphabetische und polyalphabetische Chiffrierungen 2.1.1 Substitutionschiffren 2.1.2 affine Chiffren (Tauschchiffren) 2.1.3 polyalphabetisches Chiffrieren anhand einer mengenwertigen Abbildung 2.1.4 Vigenére Chiffre Kasiski und Friedman Test, langes Schlüsselwort 2.1.5 Hill Chiffre 2.2 das one time Pad; perfekte Sicherheit 2.2.1 one time pad 2.2.2 perfekte Sicherheit; Entropie 2.3 Block und Stromchiffrierungen 2.3.1 Stromchiffrierung 2.3.2 Erzeugung eines Schlüsselstromes für Stromchiffrierungen 2.3.2.1 lineare Rekursion 2.3.2.2 lineares rückgekoppeltes Schieberegister (LFSR) 2.3.2.3 weitere Anwendungen von LFSR s 2.3.2.4 RSA Generator 2.3.2.5 diskreter Logarithmus Generator 2.3.2.6 RC4 2.3.3 Blockchiffrierungen 2.3.3.1 ECB Modus; Padding 2.3.3.2 CBC Modus; MAC und HMAC; Geburtstagsparadoxon 2.3.3.3 CFB Modus 2.3.3.4 OFB Modus 2.3.3.5 CTR Modus 3. DES, IDEA und AES 3.1 DES 1

3.1.1 Vorgeschichte 3.1.2 Grobstruktur von DES 3.1.3 eine Runde der DES Verschlüsselung; Feistel Chiffre 3.1.4 Wirkungsweise der Funktion f 3.1.5 Berechnung der Rundenschlüssel 3.1.6 Bemerkungen zu DES 3.2 IDEA 3.2.1 Allgemeines 3.2.2 Struktur 3.2.3 Entschlüsselung 3.3 AES 3.3.1 Vorgeschichte 3.3.2 Grobstruktur 3.3.3 Schlüsselexpansion 3.3.4 ByteSub Transformation 3.3.5 ShiftRow Transformation 3.3.6 MixColumn Transformation 3.4 weitere oft verwendete symmetrische kryptographische Algorithmen 4. asymmetrische Kryptosysteme 4.1 Grundlegendes 4.2 der RSA Algorithmus 4.2.1 Schlüsselerzeugung 4.2.2 RSA Kryptosystem 4.2.3 praktischer Einsatz 4.3 Faktorisierung ganzer Zahlen 4.3.1 effiziente Faktorisierung einer Potenz 4.3.2 versuchsweise Division 4.3.3 Pollard s rho Faktorisierungs Algorithmus 4.4 das ElGamal Verfahren 4.4.1 Erzeugung eines primitiven Elementes α Z p 4.4.2 Algorithmus 4.4.3 Bemerkungen 4.4.4 kleines Beispiel 4.5 elliptische Kurven 4.5.1 das elliptische Kurve diskrete Logarithmus Problem (ECDLP) 4.5.2 additive Gruppe der Punkte auf der elliptischen Kurve 4.5.3 ECDLP über F p 4.5.4 das ElGamal Verfahren über elliptischen Kurven 4.6 Diffie Hellman Schlüsselaustausch 4.7 modulare Quadratwurzeln und das Rabin Verfahren 4.7.1 quadratische Reste und modulare Quadratwurzeln 4.7.2 Legendre und Jacobi Symbol 2

4.7.3 Rabin Verfahren für spezielle Primzahlen p, q 4.7.4 Bemerkungen 4.7.5 kleines Beispiel 5. digitale Signaturen 5.1 Grundsätzliches 5.2 Signaturschemata 5.3 Beispiele für Signaturschemata 5.3.1 RSA Signatur Schema 5.3.2 Signatur Schema nach ElGamal 5.3.3 Digital Signature Standard (DSS); Digital Signature Algorithm (DSA) 5.3.4 blinde Signaturen 5.3.5 Beispiel: Signieren elektronischer Rechnungen; Signaturserver 6. kryptographische Hash Funktionen 6.1 Forderungen an kryptographische Hash Funktionen 6.2 Merkle s Methode zur Konstruktion von Hash Funktionen 6.3 RIPEMD 160 7. Schlüsselmanagement in public key und in secret key Systemen 7.1 Schlüsselmanagement durch eine öffentliche Datei 7.2 Zertifizierung der öffentlichen Schlüssel durch eine trusted third party (TTP); Zertifikate, PKI 7.3 Schlüsselmanagement in symmetrischen Verfahren; Kerberos 7.4 shared secret keys 8. Authentifizierung und Identifizierung von Personen 8.1 Paßwortmechanismen 8.2 Fiat Shamir Protokoll 8.2.1 Allgemeines, zero knowledge Verfahren 8.2.2 das Protokoll 8.2.3 Anwendungen 8.2.4 Modifikation 8.2.5 Beispiel 8.3 Authentifizierung nach Schnorr 8.3.1 Aufgaben einer TTP bzw. TA 8.3.2 Authentifizierungsprotokoll 8.3.3 Bemerkungen 8.3.4 Beispiel 8.3.5 Ist die Authentifizierung sicher? (Änderungen und Ergänzungen vorbehalten) 3

Literatur: Beutelspacher, A. : Kryptologie. Vieweg 2005 Beutelspacher, A., Neumann, H. B. und Th. Schwarzpaul : Kryptographie in Theorie und Praxis. Vieweg 2005 Beutelspacher, A., Schwenk, J. und K.-D. Wolfenstetter : Moderne Verfahren der Kryptographie. Vieweg 2006 Buchmann, J. A. : Einführung in die Kryptographie. Springer 2003 Datensicherheit, Grundlagen unter Windows. RRZN, Universität Hannover 2006 Delfs, H. and H. Knebl : Introduction to Cryptography. Springer 2007 Eckert, C. : IT Sicherheit. Oldenbourg Verlag 2008 Ertel, W. : Angewandte Kryptographie. Fachbuchverlag Leipzig 2007 Ferguson, N. and B. Schneier : Practical Cryptography. Wiley 2003 Forster, O. : Algorithmische Zahlentheorie. Vieweg 1996 Hankerson, D., Menezes, A. and S. Vanstone : Guide to Elliptic Curve Cryptography. Springer 2004 Hook, D. : Beginning Cryptography with Java. Wiley 2005 Knudsen, J. : Java Cryptography. 250 pp., OREILLY 1998 Menezes, A. J., van Oorschot, P. C. and S. A. Vanstone : Handbook of applied cryptography. CRC Press 2001 Packschies, L. : Praktische Kryptographie unter Linux. open source Press 2004 Schäfer, G. : Netzsicherheit. Algorithmische Grundlagen und Protokolle. dpunkt-verlag 2003 Schmeh, K. : Kryptografie. Verfahren, Protokolle, Infrastrukturen. dpunkt.verlag 2007 Schneier, B. : Angewandte Kryptographie. Pearson Studium 2006 Schneier, B. : Secrets and Lies. IT-Sicherheit in einer vernetzten Welt. dpunkt-verlag 2004 Schroeder, M. R. : Number Theory in Science and Communication. Springer 2005 Schwenk, J. : Sicherheit und Kryptographie im Internet. Von sicherer e-mail bis zur IP- Verschlüsselung. Vieweg-Verlag 2002 Stinson, D. R. : Cryptography: Theory and Practice. CRC Press 2006 van Tilborg, C. A. : Encyclopedia of Cryptography and Security. Springer 2005 Weiss, J. : Java Cryptography Extensions. Elsevier Inc. 2004 (siehe auch Inhalt des Verzeichnisses N:\Krypto im PC Pool) 4

Zahlentheoretisches Grundwissen zur Kryptologie Teilbarkeit, größter gemeinsamer Teiler, Primzahlen, Kongruenz modulo m 1. Bezeichnungen: N := {0, 1, 2, } Menge der natürlichen Zahlen Z := {, 2, 1, 0, 1, 2, } Menge der ganzen Zahlen 2. a Z heißt ein T eiler von b Z (symbolisch: a b) genau dann, wenn es ein c Z gibt mit a c = b formal: a b : c(c Z a c = b) 3. d N heißt der größte gemeinsame Teiler von a, b Z (d = ggt(a, b) bzw. d = gcd(a, b)) genau dann, wenn gilt: d a d b t(t Z t a t b t d) (bis auf den Fall gcd(0, 0) = 0 kann man äquivalent dazu auch definieren: gcd(a, b) ist die größte positive ganze Zahl, die sowohl a als auch b teilt) es gilt beispielsweise: gcd(a, a) = a, gcd(a, b) = gcd(b, a), gcd(a, b) = gcd(a b, b) gcd(a, b) kann mit Hilfe des Euklidischen Algorithmus berechnet werden. Weiterhin gilt: Ist g = gcd(a, b), so gibt es ganze Zahlen s, t mit g = s a + t b. s und t können mit Hilfe des erweiterten Euklidischen Algorithmus berechnet werden. 4. a, b Z heißen genau dann zueinander teilerfremd bzw. zueinander relativ prim, wenn gcd(a, b) = 1 ist 5. Primzahlbegriff eine Zahl p heißt genau dann eine Primzahl, wenn p N und p 2 ist und wenn p nur 1 und p als Teiler hat Um festzustellen, ob n 2 eine Primzahl ist oder nicht, brauchen nur alle Primzahlen p mit 2 p n daraufhin untersucht zu werden, ob sie Teiler von n sind oder nicht. 5

6. Satz von der eindeutigen Primfaktorzerlegung Jede natürliche Zahl n 2 lässt sich bis auf die Reihenfolge der Faktoren auf genau eine Weise als Produkt von Primzahlpotenzen mit positiven Exponenten notieren: n = p e 1 1 p e 2 2 p e k k wobei p 1, p 2,,p k paarweise verschiedene Primzahlen sind 7. Anzahl der Primzahlen Es gibt unendlich viele Primzahlen. Möge π(x) die Anzahl der Primzahlen, die kleiner oder gleich x sind, bezeichnen. Dann gilt: lim x π(x) x/ln(x) = 1 x 17 π(x) > x ln(x) x > 1 π(x) < 1.25506 x ln(x) Die Chance, dass eine aus dem Intervall [2,n] zufällig ausgewählte natürliche Zahl eine Primzahl ist, beträgt also ca. 1/ ln(n). Beispiele: π(10 1 ) = 4, π(10 2 ) = 25, π(10 3 ) = 168, π(10 6 ) = 78 498, π(10 9 ) = 50 847 534, π(10 12 ) = 37 607 912 018, π(10 15 ) = 29 844 570 422 669, π(10 18 ) = 24 739 954 287 740 860 Anzahl der Primzahlen mit einer Länge bis zu 512 Bit: 10 151 Wenn ein Festplattenlaufwerk mit 1 Gramm Masse eine Kapazität von 1 GByte hätte, so wäre zum Abspeichern aller Primzahlen mit 512 Bit ein Laufwerk nötig, das soviel Masse hätte, dass es zu einem schwarzen Loch kollabieren würde. (B. Schneier) 8. Satz von der Division mit Rest: Zu zwei beliebigen ganzen Zahlen a, b mit b 1 gibt es genau zwei ganze Zahlen q und r, so dass gilt: a = q b + r 0 r < b Bezeichnung für den Fall a 0: r = a mod b, q = a div b bzw. q = a b. (Die Operationen div und mod werden oft folgendermaßen für beliebige ganze Zahlen a, b mit b 0 definiert: ) a div b := a / b sgn(a b) (dabei ist sgn : R { 1, 0, 1} mit sgn(x) := 1 für negative x, sgn(x) := 0 für x = 0, und sgn(x) := 1 für positive x) a mod b := a b (a div b) 6

9. Es sei m N, m 0; zwei natürliche Zahlen r und s heißen genau dann kongruent modulo m (symbolisch: r s mod m), wenn (r mod m) = (s mod m) ist, d.h., wenn r und s bei Division durch m den gleichen Rest haben. Verallgemeinerung auf ganze Zahlen a, b, m: a b mod m : a b ist durch m teilbar Für jedes m Z ist die Kongruenz modulo m eine Äquivalenzrelation in Z. Modulare Arithmetik 1. für jedes n N mit n 1 sei Z n := {0, 1, 2,, n 1} Addition, Subtraktion, Multiplikation in Z n : für beliebige a, b Z n sei a b := (a + b) mod n a b := (a b) mod n a b := (a b) mod n Dann sind (Z n, ) eine kommutative Gruppe und (Z n,, ) ein kommutativer Ring mit Einselement. Genau dann, wenn n eine Primzahl ist, ist (Z n,, ) sogar ein Körper. (Anstelle von, bzw. wird, wenn keine Verwechslungen zu befürchten sind, auch einfach wieder +, - bzw. (oder *) geschrieben.) 2. es sei Z n := {m Z n 1 m gcd(m, n) = 1} Dann ist (Z n, ) eine kommutative Gruppe. Die Anzahl der Elemente von Z n wird mit ϕ(n) (manchmal auch φ(n)) bezeichnet (Eulersche ϕ Funktion). Zu jedem a Z n wird das bzgl. der modularen Multiplikation inverse Element b mit a 1 mod n bezeichnet: b = a 1 mod n. (Es ist also a b 1 mod n). Hinweis: Berechne b = a 1 mod n mit Hilfe des erweiterten Euklidischen Algorithmus. 3. Es sei a, b Z n mit a 1, gcd(a, n) = 1. Dann existiert zu f : Z n Z n mit f(x) := (a x+b) mod n die Umkehrfunktion f 1, und es ist f 1 (x) = (a 1 x a 1 b) mod n. 7

4. Eigenschaften der Eulerschen ϕ Funktion: Falls n eine Primzahl ist, so ist ϕ(n) = n 1. Falls m und n zwei zueinander relativ prime natürliche Zahlen sind, so ist ϕ(m n) = ϕ(n) ϕ(m). Falls n = p e 1 1 p e 2 2 p e k k die Primfaktorzerlegung von n ist, so ist ϕ(n) = n (1 1 p 1 ) (1 1 p 2 ) (1 1 p k ) Für alle nat. Zahlen n 5 ist. 5. es sei n Z, n 2; dann gilt: ϕ(n) > n 6 ln(ln(n)) falls a Z n ist so ist a ϕ(n) 1 mod n (Satz von Euler) (gilt auch für beliebige a N mit a 1 und gcd(a, n) = 1) falls n ein Produkt von paarweise verschiedenen Primzahlen und r s mod ϕ(n) ist, so ist a r a s mod n für alle ganzen Zahlen a 6. speziell gilt für Primzahlen p: falls gcd(a, p) = 1 ist, so ist a p 1 1 mod p (kleiner Satz von Fermat) falls r s mod (p 1) ist, so ist a r a s mod p für alle ganzen Zahlen a; speziell ist a p a mod p stets ist (a + b) p (a p + b p ) mod p Falls also gcd(a, n) = 1 und nicht a n 1 1 mod n ist, so kann n keine Primzahl sein (a ist ein Zeuge (witness) dafür, dass n keine Primzahl ist). 8

7. Rechenregeln für die modulare Arithmetik (a + b) mod n = ((a mod n) + (b mod n)) mod n (a b) mod n = ((a mod n) (b mod n)) mod n (a b) mod n = ((a mod n) (b mod n)) mod n (a (b + c)) mod n = (((a b) mod n) + ((a c) mod n)) mod n Bei einem Modul n der Länge k Bit können also Addition, Subtraktion, Multiplikation und Potenzierung so implementiert werden, dass kein Zwischenergebnis länger als 2k Bit wird: Soll beispielsweise der Wert des Termes (a b+c) mod n bestimmt werden, so kann man ihn folgendermaßen klammern: ((((a mod n) (b mod n)) mod n) + (c mod n)) mod n so dass zunächst jede Konstante modulo n reduziert und unmittelbar nach jeder arithmetischen Operation eine Reduktion modulo n durchgeführt wird. Modulare Potenzierungen werden effizient mit dem Algorithmus squareand-multiply ausgeführt oder es wird der kleine Satz von Fermat benutzt. Der folgende Algorithmus (square and multiply) berechnet effizient x n mod m für ganze Zahlen x 0 und natürliche Zahlen m > 1, n: x, n z:=1, m while n>0 while n ist gerade n := n div 2 x := x * x mod m z n := n 1 z := z * x mod m Die Anzahl der durchzuführenden Multiplikationen ist jeweils nach oben beschränkt durch 2 log 2 (n) + 1. 9

8. lineare Kongruenzen die lineare Kongruenz a x b mod n ist genau dann lösbar, wenn gcd(a, n) b ist; es gibt dann genau gcd(a, n) viele Lösungen in Z n es sei gcd(a, n) b und d := gcd(a, n); dann können alle Lösungen x von a x b mod n mit x Z n auf folgende Weise bestimmt werden: bestimme die eindeutige Lösung x 0 Z n von a d x b d mod nd berechne x 1 := x 0 + 1 n d mod n, x 2 := x 0 + 2 n d mod n,, x d 1 := x 0 + (d 1) n d mod n dann sind x 0, x 1,,x d 1 alle Lösungen von a x b mod n, die in Z n liegen 9. Chinesischer Restsatz (Chinese Remainder Theorem) Es seien m 1,,m r positive natürliche Zahlen, die paarweise relativ prim zueinander sind. Sind dann a 1,,a r beliebige ganze Zahlen, so gibt es modulo m := m 1 m r genau eine natürliche Zahl x (0 x < m), so dass die folgenden Kongruenzen alle erfüllt sind: x a 1 mod m 1,, x a r mod m r Berechnung von x: Sei M i := m/m i für alle i mit 1 i r. Berechne (z. B. mit Hilfe des erweiterten euklidischen Algorithmus) die modularen Inversen y i von M i modulo m i, also y i := Mi 1 mod m i (m i und M i sind für alle i relativ prim zueinander). Dann ist x (a 1 y 1 M 1 + + a r y r M r ) mod m. Ist speziell r = 2 und sind u 1 und u 2 ganze Zahlen mit 1 = u 1 m 1 +u 2 m 2, dann ist x (a 1 u 2 m 2 + a 2 u 1 m 1 ) mod m 10. quadratische Reste, modulare Quadratwurzeln Zur modularen Quadrierung invers ist das Bestimmen der modularen Quadratwurzel. Es sei n N, n > 1. Dann heißt ein a Z n ein quadratischer Rest modulo n, fall es ein b Z n gibt mit b2 a mod n. Weiterhin heißt b dann eine Quadratwurzel von a modulo n. Beispiel: n := 55; dann hat 34 Z n die modularen Quadratwurzeln 12, 23, 32 und 43. Wenn n eine Primzahl ist, so hat a Z n entweder keine oder genau zwei Quadratwurzeln modulo n. Wenn n das Produkt zweier Primzahlen ist, so hat a Z n entweder keine oder genau vier Quadratwurzeln modulo n. Das Berechnen der Quadratwurzeln ist dann genau so schwierig wie das Faktorisieren von n. 10

11. primitives bzw. erzeugendes Element Es sei a Z n, n > 1; a heißt ein primitives bzw. erzeugendes Element der Gruppe (Z n, ) oder einfach von Z n, falls die Potenzen a0 mod n, a 1 mod n,, a ϕ(n) 1 mod n alle Elemente von Z n ergeben. Falls Z n ein primitives Element hat, so ist also (Z n, ) eine zyklische Gruppe. Z n hat genau dann ein primitives Element, wenn n = 2, n = 4, n = p k oder n = 2 p k ist für eine ungerade Primzahl p und k 1. a Z n ist genau dann ein primitives Element, wenn a ϕ(n)/p 1 mod n ist für jeden Primteiler p von ϕ(n). 12. diskrete Logarithmen Zur modularen Potenzierung invers ist die Berechnung des diskreten Logarithmus einer Zahl b zur Basis a, hier nur betrachtet modulo einer Primzahl p: es sei p eine Primzahl, a Z p ein primitives Element und b Z p. Dann heißt die eindeutig bestimmte Zahl x mit 0 x p 2, für die a x b mod p ist, der diskrete Logarithmus von b zur Basis a modulo p. Schreibweise: x = log a b mod p Beispiel: 6 = log 3 15 mod 17; 3 x 7 mod 13 ist nicht (ganzzahlig) lösbar, denn stets ist 3 x {1, 3, 9} mod 13; (es ist 3 kein primitives Element von Z 13). Die Komplexität der Berechnung diskreter Logarithmen modulo p ist im Wesentlichen genauso groß wie die der Faktorisierung einer ganzen Zahl, die etwa genauso lang ist wie p und das Produkt zweier annähernd gleich langer Primzahlen ist. 13. Pseudozufallgeneratoren auf der Basis linearer Kongruenzen Es seien a, b, m natürliche Zahlen mit m > 0. Dann wird durch das Iterationsverfahren x 0 N (x 0 < m als Anfangswert vorgegeben) x i+1 := (a x i + b) mod m (i = 0, 1, 2, ) eine Folge von Zufallszahlen mit einer Periodenlänge von maximal m erzeugt. Es gilt beispielsweise: Falls m eine Zweierpotenz, a 1 mod 4 und gcd(b, m) = 1 ist, so ist die Periodenlänge gleich m (s. dazu z.b. Schroeder, M.R.: Number Theory in Science and Communication. Springer Verlag 2005 bzw. Forster, O.: Algorithmische Zahlentheorie. Vieweg Verlag 1996). 11

14. Konvertierungen natürlicher Zahlen in Byte Strings und umgekehrt In PKCS#1 v.2.1 (Public Key Cryptography Standard version 2.1) werden dazu die beiden Algorithmen I2OSP (Integer to Octet String primitive) sowie OS2IP (Octet String to Integer primitive) vorgeschlagen. I2OSP(x, xlen) mit den Inputs x (nat. Zahl) und xlen (beabsichtigte Länge des resultierenden Byte (Octet )Strings) sowie dem Output X (zugehöriger Byte String der Länge xlen): (a) if x 256 xlen then output integer too large and stop (b) write the integer x in its unique xlen digit representation in base 256: x = x xlen 1 256 xlen 1 + x xlen 2 256 xlen 2 + + x 1 256 + x 0 mit 0 x i < 256 (dabei können einige führende Ziffern Null sein) (c) let the octet X i have the integer value x xlen i for 1 i xlen; output the octet string X := X 1 X xlen Für Zwecke der Konvertierung zu und von natürlichen Zahlen wird das erste Octet als das am meisten signifikante betrachtet. OS2IP(X) mit dem Input X als Byte String und dem Output x als natürliche Zahl: (a) let X 1 X 2 X xlen be the octets of X from first to last, and let x xlen i be the integer value of the octet X i for 1 i xlen (b) let x := x xlen 1 256 xlen 1 + x xlen 2 256 xlen 2 + + x 1 256 + x 0 (c) output x 15. einige physikalische Beispiele großer Zahlen (Schneier, B.: Angewandte Kryptographie. Pearson Studium 2006, S. 21) Alter der Erde: 10 9 (2 30 ) Jahre Anzahl der Atome in der Erde: 10 51 (2 170 ) Anzahl der Atome in der Sonne: 10 57 (2 190 ) Größe des Universums: 10 84 (2 280 ) cm 3 Außer den meisten im Literaturverzeichnis enthaltenen Büchern kann man z.b. auch in einigen im Verzeichnis N:\Krypto enthaltenen Arbeiten Ausführungen zum zahlentheoretischen Grundwissen finden. 12

Tools bzw. Software, die insbesondere in den Übungen verwendet werden: Cryptool siehe www.cryptool.de Aribas siehe www.mathematik.uni-muenchen.de/ forster gpg4win (GnuPG for Windows); siehe www.gpg4win.de JCE Java Cryptography Extension (in jdk1.6.0 <version> enthalten) Bouncy Castle Cryptography Provider ; siehe www.bouncycastle.org (Installationsdateien dazu befinden sich in N:\Krypto im PC Pool.) 13

Public Key Cryptography Standards (PKCS): The Public-Key Cryptography Standards are specifications produced by RSA Laboratories in cooperation with secure systems developers worldwide for the purpose of accelerating the deployment of public-key cryptography. First published in 1991 as a result of meetings with a small group of early adopters of public-key technology, the PKCS documents have become widely referenced and implemented. Contributions from the PKCS series have become part of many formal and de facto standards, including ANSI X9 documents, PKIX, SET, S/MIME, and SSL. Note: PKCS #2 and PKCS #4 have been incorporated into PKCS #1. siehe http://www.rsa.com/rsalabs/ (kopiert am 23. September 2007) PKCS #1: RSA Cryptography Standard Spezifikation zur Implementierung des RSA Algorithmus sowohl zur Datenverschlüsselung als auch zur Erzeugung einer digitalen Signatur; es wird u.a. festgelegt, wie eine Folge von Bytes als natürliche Zahl zu interpretieren ist, wie der Ablauf des Algorithmus inklusive Fehlermeldungen zu sein hat und wie öffentlicher und privater Schlüssel formatiert werden sollen; außerdem enthält die Spezifikation verschiedene OIDs (Object Identifier) (OIDs sind eindeutige Kennungen von Objekten bzw. Verfahren, die in allen Standards einheitlich verwendet werden sollten; manchmal wird auch eine URL anstelle meiner OID verwendet); eine ausführlichere Beschreibung befindet sich z.b. in dem Buch von K. Schmeh PKCS #3: Diffie-Hellman Key Agreement Standard (die ursprünglich vorhanden gewesenen Standards PKCS #2 und #4 sind in PKCS #1 eingeflossen) beschreibt Implementierung der Diffie Hellman Schlüsselvereinbarung, mit deren Hilfe zwei Parteien einen geheimen Schlüssel vereinbaren können, den nur sie kennen; es werden die Datenformate und die Methoden für die Darstellung der Schlüssel beschrieben PKCS #5: Password Based Cryptography Standard (PBE) beschreibt eine Methode zur Generierung eines Schlüssels aus einem Passwort; diese Methode wurde von der IETF übernommen und als RFC2898 veröffentlicht PKCS #6: Extended Certificate Syntax Standard ein Extended Certificate ist ein X.509 digitales Zertifikat, das von einer CA (Certificate Authority) signiert wurde und zusätzliche Informationen wie z.b. eine e mail Adresse enthält; dieser Standard wurde jedoch durch die dritte Version des X.509 Formats (X.509v3) überflüssig 14

PKCS #7: Cryptographic Message Syntax Standard beschreibt Format für verschlüsselte oder signierte Nachrichten; wird auch als Cryptographic Message Syntax (CMS) bezeichnet; z.b. ist das in S/MIME verwendete Format für verschlüsselte und signierte e mails aus PKCS#7 abgeleitet und in RFC3852 festgeschrieben PKCS #8: Private Key Information Syntax Standard beschreibt ein Format für das verschlüsselte Ablegen eines Schlüssels, insbesondere des privaten Schlüssels asymmetrischer Verfahren (kann aber auch für Schlüssel symmetrischer Verfahren verwendet werden); enthält neben dem Schlüssel noch weitere Angaben, z.b. die OID des Algorithmus, für den der Schlüssel verwendet werden kann PKCS #9: Selected Attribute Types beschreibt genauer bestimmte Attibut Typen, die in PKCS #6, PKCS #7 und PKCS #8 verwendet werden PKCS #10: Certification Request Syntax Standard beschreibt Syntax für die Anforderung eines digitalen Zertifikates; die Anforderung wird an eine CA gesendet, die bei Einhaltung des Standards diese Anforderung auch versteht; zusätzlich ist festgelegt, wie eine CA sich zu verhalten hat, damit sie zweifelsfrei die Identität des Zertifikat Anforderers feststellen kann PKCS #11: Cryptographic Token Interface Standard beschreibt ein Programmier Interface mit Namen Cryptoki ( crypto key ) zum Umgang mit kryptographischen Operationen unter Benutzung von Hardware Tokens, Smartcards und USB Smartkeys; beschreibt so auch Smartcard Support für SSL und S/MIME Transaktionen PKCS #12: Personal Information Exchange Syntax Standard legt ein Format fest für das Speichern und Transportieren beispielsweise von privaten Schlüsseln und Zertifikaten PKCS #13: Elliptic Curve Cryptography Standard beschreibt verschiedene Verfahren der elliptische Kurven Kryptografie PKCS #14: Pseudo Random Number Generation Standard beschreibt verschiedene Methoden zur Erzeugung von Pseudozufallszahlen, es hat sich aber noch kein Standard etabliert PKCS #15: Cryptographic Token Information Format Standard beschreibt Standards, mit deren Hilfe es möglich werden soll, dass jedes Token mit jeder Software verwendet werden kann und damit die Tokens austauschbar sind 15

Standardisierungen und Standardisierungsgremien: IEEE (Institute of Electrical and Electronics Engineers) veröffentlicht IEEE Standards, z.b. IEEE P1363 (Public Key Verfahren), IEEE 802.11 (WLAN) und IEEE802.1x (Authentifizierung in Rechnernetzen) http://www.ieee.org NIST (National Institute of Standards and Technology) gehört zum US Handelsministerium; z.b. die Verfahren DES, DSA und die SHA Familie stammen von dort http://www.nist.gov IETF (Internet Engineering Task Force) hat zahlreiche Krypto Standards herausgegeben; jeweils zuständige Arbeitsgruppen entwickeln zunächst Internet Drafts (Standardisierungsvorschläge); diese müssen von der IESG (Internet Engineering Steering Group) befürwortet werden und werden dadurch zu einem RFC (Request for Comment), allerdings zunächst als Proposed Standard; nach Bestehen von Tests wird daraus ein Draft Standard und schließlich ein offizieller Standard; die RFC s werden mit Nummern versehen, z.b. behandeln RFC2246 das TLS Protokoll und RFC1521 die Base64 Codierung http://www.ietf.org http://www.ietf.org/rfc.html ANSI (American National Standards Institute) definiert Standards für verschiedene Bereiche, z.b. ANSI X9.17: ANSI-Standard zum Austausch geheimer Schluessel mit dem DES-Algorithmus http://www.ansi.org BSI (Bundesamt für Sicherheit in der Informationstechnik) evaluiert und legt fest geeignete Sicherheitstechnik zum Einsatz in Bundesbehörden; legt fest, welche Krypto- und Hashverfahren dem deutschen Signaturgesetz gerecht werden und wie die Evaluationsund Zertifizierungsverfahren für SigG-konforme CA s aussehen http://www.bsi.de FIPS (Federal Information Processing Standard) vom NIST herausgegebene Standards, denen die Computersysteme der US-Regierung genügen sollen http://www.itl.nist.gov/fipspubs ISO (International Organization for Standardization) Internationale Organisation, die zahlreiche Netzstandards (ISO-Protokolle) herausgibt http://www.iso.org NSA (National Security Agency) amerikanische Behörde, die sich intensiv mit Kryptologie und der weltweiten Überwachung und nachrichtendienstlichen Gewinnung von Daten beschäftigt; verfügt über extrem leistungsstarke Rechner http://www.nsa.gov PKCS (Public Key Cryptography Standards) von RSA herausgegebene Standards, die beschreiben, wie public key Kryptographie zuverlässig, sicher und kompatibel eingesetzt wird http://www.rsa.com/rsalabs/ Bundesnetzagentur betreibt die Wurzel CA des deutschen Signaturgesetzes http://www.bundesnetzagentur.de 16

ein paar weitere Links (aktuell am 23. September 2009): http://www.cacr.math.uwaterloo.ca/hac/ (Menezes u.a.: Handbook of Applied Cryptography) http://people.csail.mit.edu/rivest/crypto-security.html (Pointer auf andere Web-Seiten zu Kryptography und Security) http://www.ietf.org/html.charters/smime-charter.html (S/MIME mail security) http://www.ietf.org/html.charters/pkix-charter.html (IETF Public-Key Infrastructure X.509) http://www.pki-page.org/ (PKI-Page mit vielen krypt. Links) http://www.openssl.org/ (OpenSSL) http://www.gnupg.org/ (GNU Privacy Guard) http://www.heise.de/security/ (aktuelle Meldungen zu Sicherheitslücken) http://www.bouncycastle.org/ (BouncyCastle JCE-Provider) http://www.rsa.com/ (RSA Homepage) http://primes.utm.edu/ (Primzahlenseiten) http://www.cdc.informatik.tu-darmstadt.de/ti/lidia/welcome.html (C++ Klassen-Bibliothek für Arithmetik beliebiger Genauigkeit) Die beiden letzten Folien, aber mit aktiven Links, befinden sich in der Datei standards links.pdf. 17

Ein kleines vereinfachtes Beispiel für eine verschlüsselte Verbindung (SSL; secure sockets layer): Öffnen von www.sparkasse-leipzig.de mit einem Browser, z.b. Firefox: rechts unten erscheint geschlossenes Schloss, und aus http wird https : die Verbindung zwischen Browser und Sparkasse ist verschlüsselt; Anklicken des Schlosses: genauere Information über verwendete Algorithmen und Zertifikate, als Beispiel wird hier der allgemeine Teil des Zertifikates wiedergegeben: 18

zuerst, nachdem der Browser dem Server der Sparkasse mitgeteilt hat, dass er mit ihm kommunizieren möchte, sendet der Server u.a. seinen öffentlichen RSA Schlüssel, der von VeriSign in einem Zertifikat mit Hilfe des geheimen Schlüssels von VeriSign digital signiert ist, an den Browser zurück; der Browser kennt den zugehörigen öffentlichen Schlüssel von VeriSign und kann damit die Echtheit des Zertifikats überprüfen der Browser erzeugt einen Schlüssel (session key), mit dessen Hilfe die Kommunikation mittels RC4 mit 128 Bit Schlüssellänge verschlüsselt wird; diesen Schlüssel sendet er an den Server der Sparkasse, und zwar RSA verschlüsselt mit dem öffentlichen Schlüssel der Sparkasse; die Sparkasse entschlüsselt den session key mit ihrem geheimen RSA Schlüssel. Öffentlicher Schlüssel der Sparkasse: 19

Überprüfen der Korrektheit des öffentlichen Schlüssels von VeriSign am Beispiel von Firefox: Extras Einstellungen Erweitert Zertifikate anzeigen Zertifizierungsstellen VeriSign Class 3 Public Primary Certificate (Builtin Object Token) Ansicht man erhält den MD5 und SHA1 Fingerabdruck (kryptographischer Hashwert) des Zertifikates von VeriSign (VeriSign hat seinen öffentlichen Schlüssel selbst signiert) und kann sich bei VeriSign erkundigen, ob er korrekt ist 20

man kann also überprüfen, ob man mit der Sparkasse verbunden ist (vorausgesetzt, VeriSign hat keine Fehler gemacht); Wie weiß die Sparkasse, mit wem sie verbunden ist? Entweder man hat sich selbst ein Zertifikat besorgt, das die Sparkasse überprüfen kann, oder man muss sich beispielsweise über ein Passwort und eine PIN authentifizieren Zertifikate Zertifikate sind im Internet das Äquivalent zu amtlichen Dokumenten. Sie enthalten u.a. Angaben zum Aussteller ( ausstellende Behörde ) Angaben zum Inhaber (pers. Daten, e mail Adresse, Internet Adresse, öffentl. Schlüssel) Angaben zur Gültigkeitsdauer Angaben zum verwendeten Hash und Signaturalgorithmus alle diese Daten werden mit einer digitalen Signatur (unter Benutzung des eben erwähnten Signaturalgorithmus ) der ausstellenden Behörde versehen Standard für Zertifikate: ITU Standard X.509 (ISO/IEC 9594-8 von 1997) Versionsnummer (X.509v...) Seriennummer des Zertifikates Signatur und Hashalgorithmus Aussteller Gütigkeitsdauer Inhaber öffentlicher Schlüssel des Inhabers zusätzliche Angaben Signatur des Ausstellers Von besonderer Bedeutung sind die Certificate Revocation Lists (CRL s), das sind Datenbanken, in denen Zertifikate als nicht mehr gültig ausgewiesen werden (weil z.b. der private Schlüssel des Inhabers kompromittiert worden ist), und deren Inhalte sich jeden Moment ändern können. Bevor man ein Zertifikat benutzt, sollte man sich erst vergewissern, dass es noch gültig ist. 21

Spezifikation für OpenPGP (Auszug aus RFC 2440) Auch beispielsweise in PGP kommen auf ähnliche Weise symmetrische und asymmetrische Verschlüsselungsverfahren zur Anwendung. General functions OpenPGP provides data integrity services for messages and data files by using these core technologies: digital signatures encryption compression radix-64 conversion In addition, OpenPGP provides key management and certificate services, but many of these are beyond the scope of this document. Confidentiality via Encryption OpenPGP uses two encryption methods to provide confidentiality: symmetric key encryption and public key encryption. With public key encryption, the object is encrypted using a symmetric encryption algorithm. Each symmetric key is used only once. A new session key is generated as a random number for each message. Since it is used only once, the session key is bound to the message and transmitted with it. To protect the key, it is encrypted with the receiver s public key. The sequence is as follows: The sender creates a message. The sending OpenPGP generates a random number to be used as a session key for this message only. The session key is encrypted using each recipient s public key. These encrypted session keys start the message. The sending OpenPGP encrypts the message using the session key, which forms the remainder of the message. Note that the message is also usually compressed. The receiving OpenPGP decrypts the session key using the recipient s private key. The receiving OpenPGP decrypts the message using the session key. If the message was compressed, it will be decompressed. 22

With symmetric key encryption, an object may be encrypted with a symmetric key derived from a passphrase (or other shared secret), or a two stage mechanism similar to the public key method described above in which a session key is itself encrypted with a symmetric algorithm keyed from a shared secret. Both digital signature and confidentiality services may be applied to the same message. First, a signature is generated for the message and attached to the message. Then, the message plus signature is encrypted using a symmetric session key. Finally, the session key is encrypted using public key encryption and prefixed to the encrypted block. Authentication via Digital signature The digital signature uses a hash code or message digest algorithm, and a public key signature algorithm. The sequence is as follows: The sender creates a message. The sending software generates a hash code of the message. The sending software generates a signature from the hash code using the sender s private key. The binary signature is attached to the message. The receiving software keeps a copy of the message signature. The receiving software generates a new hash code for the received message and verifies it using the message s signature. If the verification is successful, the message is accepted as authentic. Compression OpenPGP implementations MAY compress the message after applying the signature but before encryption. Conversion to Radix 64 OpenPGP s underlying native representation for encrypted messages, signature certificates, and keys is a stream of arbitrary octets. Some systems only permit the use of blocks consisting of seven-bit, printable text. For transporting OpenPGP s native raw binary octets through channels that are not safe to raw binary data, a printable encoding of these binary octets is needed. OpenPGP provides the service of converting the raw 8-bit binary octet stream to a stream of printable ASCII characters, called Radix-64 encoding or ASCII Armor. Implementations SHOULD provide Radix-64 conversions. 23

Note that many applications, particularly messaging applications, will want more advanced features as described in the OpenPGP-MIME document, RFC 2015. An application that implements OpenPGP for messaging SHOULD implement OpenPGP-MIME. Signature-Only Applications OpenPGP is designed for applications that use both encryption and signatures, but there are a number of problems that are solved by a signatureonly implementation. Although this specification requires both encryption and signatures, it is reasonable for there to be subset implementations that are non-comformant only in that they omit encryption. Beispielsweise verwendet PGP 7.03 die folgenden kryptographischen Algorithmen: für die Verschlüsselung des Textes: AES, CAST, IDEA, TripleDES, Twofish zur Signaturerzeugung: RSA, DSS als Hash Funktionen: MD5, SHA 1 (vor der Signierung eines Textes wird ein Hashwert des Textes gebildet, der in Wirklichkeit signiert wird) als (verlustfreie) Kompressionsfunktion: LZS (RFC 2395) (der Text kann vor dem Verschlüsseln komprimiert werden; dann wird anstelle des ursprünglichen Textes der komprimierte Text verschlüsselt) für den Schlüsselaustausch: Diffie Hellman siehe z. B. auch http://www.thunderbird-mail.de/wiki/mailverschlüsselung mit GnuPG / PGP http://www.thunderbird-mail.de/wiki/mailverschlüsselung mit S/MIME 24

Kryptologie Kryptographie Kryptoanalyse Kryptographie Geheimhaltung, Vertraulichkeit (privacy, confidentiality) durch Chiffrieren (Verschlüsseln, encryption), Dechiffrieren (Entschlüsseln, decryption) Authentikation, Authentifizierung, Authentizität (authentication) Teilnehmerauthentikation: Nachweis meiner Identität einem Rechner oder einer Person gegenüber (Zertifikat, PIN, Ausweis, Passwort, Unterschrift, biometrisches Merkmal, spezifisches Wissen, ). Nachrichtenauthentikation: Ursprung einer Nachricht zweifelsfrei belegen (digitale Unterschrift, MAC, ). Nachrichten Integrität (data integrity) Erkennen, ob eine Nachricht unbefugt verändert wurde (Hashwert, kryptographische Prüfsumme, digitaler Zeitstempel, ). Verbindlichkeit (commitment) Der Absender einer Nachricht soll später nicht leugnen können, dass die Nachricht von ihm stammt. Anonymität (anonymity) Sich Hilfe holen oder sich beraten lassen, ohne sich erkennen zu geben. elektronisches Geld (electronic money, electronic cash) Steganographie Verstecken von Informationen in Bildern Copyright digitale Wasserzeichen 25

Kryptoanalyse Versuch, aus der verschlüsselten Nachricht (cipher text) ohne a priori Kenntnis eines Schlüssels (key s) die ursprüngliche Nachricht (message, plain text, Klartext) wiederherzustellen = Angriff, Attacke Wie sicher ist eine Verschlüsselung? Welche Angriffsmöglichkeiten gibt es? Es wird davon ausgegangen, dass das Übermitteln von Nachrichten abgehört werden kann. Es wird weiterhin davon ausgegangen, dass die Verschlüsselungsalgorithmen allgemein bekannt sind, so dass die Sicherheit eines Verfahrens davon abhängt, ob der richtige Schlüssel gefunden werden kann. Nachrichtenübermittlung mit Verschlüsselung: Alice sendet an Bob eine verschlüsselte Nachricht Schlüssel 1 Alice Klartext Verschlüsselung Chiffretext (Geheimtext) man in the middle Mr. X mallory eavesdropper Schlüssel 2 Chiffretext Entschlüsselung Klartext Bob 26

Kryptosystem P: Menge von Klartexten (plain texts, messages) C: Menge von Chiffretexten (cipher texts, Geheimtexte) K 1 : K 2 : Menge von Schlüsseln zum Verschlüsseln von Klartexten Menge von Schlüsseln zum Entschlüsseln von Geheimtexten K: Menge von Paaren (k 1, k 2 ) mit k 1 K 1, k 2 K 2, so dass f(k 1, k 2 ) = true ist für eine boolesche Funktion f (wenn k 1 zum Verschlüsseln benutzt worden ist, so muss k 2 zum Entschlüsseln benutzt werden) E := {E k1 k 1 K 1 }: Familie von Chiffrieralgorithmen D := {D k2 k 2 K 2 }: Familie von Dechiffrieralgorithmen Für jedes m P und jedes Paar (k 1, k 2 ) K muss gelten: D k2 (E k1 (m)) = m 27

symmetrische Kryptosysteme (secret key cryptosystems) k 1 und k 2 sind geheim (und oft gleich) Alice sendet an Bob eine verschlüsselte Nachricht eavesdropper key source k secure channel k encryption E (m) = c k m c unsecure channel decryption D (c) = m k m plaintext m m Alice Bob k: gemeinsamer geheimer Schlüssel (secret key) m: Klartext, Nachricht, message, plaintext c: Geheimtext, Chiffretext, ciphertext (Alice und Bob können denselben Tresor öffnen, der zur Hinterlegung und damit Übermittlung der Nachrichten dient.) 28

asymmetrische Kryptosysteme (public key crypto systems) Alice sendet an Bob eine verschlüsselte Nachricht, wobei zur Verschlüsselung Bob s öffentlicher Schlüssel benutzt wird Mr. X encryption E (m) = c e m e unsicherer Kanal c unsicherer Kanal key source d decryption D (c) = m d m plaintext m m Alice Bob k 1 bzw. hier e: öffentlicher Schlüssel (public key) von Bob k 2 bzw. hier d: nicht öffentlicher Schlüssel (private key) von Bob m: Klartext (plaintext) c: Geheimtext (ciphertext) (Alice wirft eine Nachricht in Bob s Briefkasten, den nur dieser öffnen kann.) 29

asymmetrische Kryptosysteme zur Erzeugung einer digitalen Unterschrift Alice sendet an Bob eine Nachricht, die von ihr digital signiert ist eavesdropper key source e d ds = E (md) d ds md = D e(ds) md md ja md = md1? nein md1 md = h(m) m accept md1 = h(m) m do not accept plaintext m m m Alice Bob k 1 bzw. hier d: private key von Alice k 2 bzw. hier e: public key von Alice m: Klartext (plaintext) h: kryptographische Hash Funktion md: Hashwert (hash value, message digest, finger print) ds: digitale Signatur (digitale Unterschrift, digital signature) (Nur Alice hat den Schlüssel zu einem gläsernen Tresor, in den sie Nachrichten hineinlegen kann.) 30

generelle Attacken Ciphertext Only Attacke: Mr. X kennt ein relativ großes Stück Ciphertext oder mehrere Ciphertexte, die mit demselben Verfahren verschlüsselt wurden. Er versucht, einen oder mehrere Klartexte oder gar den Schlüssel zu bestimmen. Known Plaintext Attacke: Mr. X kennt ein oder mehrere Paare von zusammengehörenden Klar und Geheimtexten. Er versucht, den verwendeten Schlüssel zu berechnen oder einen Algorithmus zu finden, mit dem weitere Chiffretexte, die mit demselben Schlüssel erhalten wurden, entschlüsselt werden können. Chosen Plaintext Attacke: Mr. X kennt wie eben ein oder mehrere Paare von zusammengehörenden Klar und Geheimtexten. Zusätzlich hatte Mr. X die Möglichkeit, ausgewählte Klartexte verschlüsseln zu lassen. Er versucht dann wieder, den verwendeten Schlüssel zu berechnen oder einen Algorithmus zu finden, mit dem weitere Chiffretexte, die mit demselben Schlüssel erhalten wurden, entschlüsselt werden können. Chosen Ciphertext Attacke: Mr. X hat zeitweisen Zugriff zum Dechiffrieralgorithmus, kann sich also für einige Chiffre Texte die zugehörigen Klartexte berechnen. Ziel ist, den Schlüssel zu bestimmen. (Die schwierigste der obigen Attacken ist i. a. aufgrund ihrer schwachen Voraussetzungen die Ciphertext Only Attacke.) 31

kryptographisches Protokoll Ein kryptographisches Protokoll dient wie jedes Protokoll einer bestimmten Aufgabe und besteht aus einer Folge von Aktionen, an denen zwei oder mehr Parteien beteiligt sind. Keine Aktion kann vor Abschluss der vorherigen ausgeführt werden. Weiterhin gilt: 1. Alle, die am Protokoll teilnehmen, müssen das gesamte Protokoll im voraus kennen. 2. Alle Teilnehmer müssen sich an die vereinbarten Regeln halten. 3. Jede Aktion muss eindeutig festgelegt sein. 4. Das Protokoll muss vollständig sein: Jeder denkbaren Situation ist eine bestimmte Aktion zugeordnet. Die Aktionen können z.b. sein: Ver und Entschlüsseln von Nachrichten Senden einer Nachricht an einen Teilnehmer Nachricht mit digitaler Unterschrift versehen Authentifizierung eines Teilnehmers 32

Angriffe auf kryptographische Protokolle Replay Angriffe (replay attacks) Mallory fängt eine chiffrierte Nachricht von Alice an Bob ab und sendet diese weitere Male an Bob. Falls die Nachricht eine Anweisung an Bob enthält (z.b. einen bestimmten Gegenstand zu kaufen), so führt Bob diese Anweisung wiederholt aus. Der Angriff läuft ins Leere, wenn Alice ihre Nachricht vor dem Verschlüsseln mit einem Zeitstempel (time stamp) versehen hat. Spoofing Angriffe Wenn Mallory das Protokoll kennt, mit dessen Hilfe Alice an Bob eine Nachricht sendet, so kann er sich leicht Bob gegenüber als Alice ausgeben: Er braucht nur die entsprechende IP Adresse im Protokoll zu ändern. Durch Maßnahmen zur Authentifizierung wird ein solcher Angriff unmöglich. Man in the middle Angriffe Mallory fängt die Kommunikation zwischen Alice und Bob ab und gibt sich Alice gegenüber als Bob und Bob gegenüber als Alice aus. Vermeidung eines solchen Angriffs z.b. durch Verwendung von PKI (public key infrastructure) und digitalen Zertifikaten sowie anderen Methoden zur Authentifizierung (Name/Passwort, one time Passwörter (RFC 1938), z.b. TAN s (transaction numbers), Frage und Antwort (challenge and response) wie z.b. bei der Authentifizierung eines Handys in Mobilfunknetzen), gegenseitige Authentifizierung und Schlüsselaustausch mit Hilfe einer dritten vertrauenswürdigen Partei (TTP, trusted third party) wie z.b. im Kerberos Protokoll (s.u.) Hijacking Kann als Kombination von Spoofing und Man in the middle Attacken aufgefasst werden: Zusätzlich zum Man in the middle Angriff blockiert Mallory die Kommunikation zwischen Alice und Bob ab einem bestimmten Zeitpunkt und kommuniziert etwa nur noch mit Bob. Denial of Service Angriffe (DoS) Mallory versucht, eine Kommunikation zwischen Alice und Bob zu verhindern, indem er Nachrichten blockiert, Nachrichten fälscht oder abgefangene (und manchmal gefälschte) Nachrichten in großer Anzahl immer wieder an Bob sendet, damit dieser zumindest zeitweise nicht die Nachrichten von Alice lesen kann. 33

Substitutions Chiffre (am Beispiel Z 26 ) P: Menge aller Texte über Z 26 := {0, 1,, 25} C: Menge aller Texte über Z 26 := {0, 1,, 25} K := {(P, P 1 ) P und P 1 sind zueinander inverse Permutationen über Z 26 } E P (x) := P(x) für x Z 26 D P 1(x) := P 1 (x) für x Z 26 Affine Chiffre (Tauschchiffre) (am Beispiel Z 26 ): P: Menge aller Texte über Z 26 := {0, 1,, 25} C: Menge aller Texte über Z 26 := {0, 1,, 25} K 1, K 2 := {(a, b) a, b Z 26 gcd(a, 26) = 1} K := {((a, b), (c, d)) (a, b) K 1 c = a 1 (mod 26) d = a 1 b (mod 26)} E (a,b) (x) := a x + b (mod 26) D (c,d) (y) := c y d (mod 26) mit c = a 1 (mod 26), d = a 1 b (mod 26) 34

Relative Häufigkeiten der Buchstaben in (genügend langen) deutschen bzw. englischen Texten (in Prozent) Buchstabe deutsch englisch Buchstabe deutsch englisch a 6.51 8.2 n 9.78 6.7 b 1.89 1.5 o 2.51 7.5 c 3.06 2.8 p 0.79 1.9 d 5.08 4.3 q 0.02 0.1 e 17.4 12.7 r 7.00 6.0 f 1.66 2.2 s 7.27 6.3 g 3.01 2.0 t 6.15 9.1 h 4.76 6.1 u 4.35 2.8 i 7.55 7.0 v 0.67 1.0 j 0.27 0.2 w 1.89 2.3 k 1.21 0.8 x 0.03 0.1 l 3.44 4.0 y 0.04 2.0 m 2.53 2.4 z 1.13 0.1 Daraus ergeben sich folgende relative Häufigkeiten für Buchstabengruppen in deutschen Texten: Gruppe Anteil in Prozent e, n 27.18 i, s, r, a, t 34.48 d, h, u, l, c, g, m, o, b, w, f, k, z 36.52 p, v, j, y, x, q 1.82 Relative Häufigkeiten von Bigrammen in (genügend langen) deutschen Texten (in Prozent): Buchstabenpaar Häufigkeit Buchstabenpaar Häufigkeit en 3.88 nd 1.99 er 3.75 ei 1.88 ch 2.75 ie 1.79 te 2.26 in 1.67 de 2.00 es 1.52 35

Polyalphabetisches Chiffrieren mit mengenwertigen Abbildungen f am Beispiel der Alphabete Z 26 und {00, 01,, 98, 99} P: Menge aller Texte über Z 26 := {0, 1,, 25} C: Menge aller Texte über {00, 01,, 98, 99} K 1, K 2 := {f f : Z 26 ({00,, 99}) f(α) (α β f(α) f(β) = )} E f (x) := beliebiges Element aus f(x) D f (y) := f 1 (y) (allgemein: ersetze Z 26 durch ein Alphabet A und {00,, 99} durch ein Alphabet B mit card(a) card(b)) Vigenére Chiffre (am Beispiel Z 26 ): m: Schlüsselwortlänge P: Menge aller Texte der Länge m über Z 26 C: Menge aller Texte der Länge m über Z 26 K 1, K 2 := Menge aller Texte der Länge m über Z 26 ; für jedes k 1 K 1, k 1 := (κ 1,,κ m ), sei k 1 = k 2 und E k1 (β 1,,β m ) := (β 1 + κ 1,,β m + κ m ) (mod 26) D k1 (γ 1,,γ m ) := (γ 1 κ 1,,γ m κ m ) (mod 26) 36

Kasiski und Friedman Test Kasiski Test (bestimmt ein Vielfaches der Schlüsselwortlänge): 1. suche im Ciphertext Paare von (möglichst langen) gleichen Zeichenketten und bestimme die jeweiligen Abstände ihrer ersten Zeichen 2. bestimme den größten gemeinsamen Teiler aller dieser Abstände; dieser ist ein Vielfaches der Schlüsselwortlänge, es sei denn, unter den Paaren gleicher Zeichenketten ist ein solches, das zufällig nicht durch Chiffrieren zweier gleicher Klartext Zeichenketten entstanden ist Friedman Test (bestimmt die Größenordnung der Schlüsselwortlänge): 1. Es sei n 1 die Anzahl der a s,, n 26 die Anzahl der z s in einem deutschen Klartext mit n Zeichen. Dann gibt der Friedman sche Koinzidenzindex I mit 26 i=1 I = n i (n i 1) n (n 1) ungefähr die Wahrscheinlichkeit dafür an, dass zwei willkürlich aus dem Text herausgegriffene Buchstaben gleich sind 2. Nach der Tabelle über die relativen Häufigkeiten p 1,,p 26 der Buchstaben in deutschen Texten mit großer Länge n ist 26 i=1 p 2 i = 0.0762 Also mit 7.62 prozentiger Wahrscheinlichkeit sind zwei willkürlich aus dem Text herausgegriffene Buchstaben gleich. 3. Falls in einem Text alle 26 Buchstaben gleichoft vorkommen würden (p i = 1/26 für alle i, 1 i 26), so wäre 26 i=1 (kleiner kann I nicht werden). p 2 i = 26 1 26 2 = 1 26 0.0385 37

4. Annahme: Das Schlüsselwort besteht aus s paarweise verschiedenen Buchstaben. Man denke sich dann den Ciphertext, der aus n Zeichen besteht, fortlaufend in s Spalten geschrieben. Anzahl der Möglichkeiten, ein Paar aus einer Spalte zu wählen: n ( n s 1)/2 = n (n s) 2s Anzahl der Möglichkeiten, ein Paar aus verschiedenen Spalten zu wählen: n (n n s )/2 = n2 (s 1) 2s 5. Also gilt für die erwartete Anzahl A von Paaren gleicher Buchstaben A n (n s) 2s 0.0762 + n2 (s 1) 2s 0.0385 Die Wahrscheinlichkeit dafür, dass ein Paar willkürlich herausgegriffener Buchstaben gleich ist, hat also ungefähr den Wert Daraus ergibt sich für s s A n (n 1)/2 I 0.0377 n (n 1) I 0.0385 n + 0.0762 Bestimmung des Schlüsselwortes: Da die s Spalten jede für sich durch eine Verschiebechiffre erzeugt wurden, reicht es aus, etwa jeweils den Buchstaben zu finden, der durch Chiffrieren von e entstanden ist. 38

Hill Chiffre (am Beispiel Z 26 ) m N, m 1 vorgegeben; P: Menge aller Texte der Länge m über Z 26 C: Menge aller Texte der Länge m über Z 26 K := {(A, A 1 ) A und A 1 sind modulo 26 zueinander inverse E A (x 1, x m ) := A (m, m) Matrizen über Z 26 } x 1. x m D A 1(y 1,,y m ) := A 1 für (x 1,,x m ) (Z 26 ) m y 1. y m für (y 1,,y m ) (Z 26 ) m (falls Klar bzw. Geheimtext länger sind als m, so werden sie in Blöcke der Länge m zerlegt; evtl. Auffüllen (padding) des letzten Blockes) Spezialfall: Falls A (und damit auch A 1 ) eine Permutationsmatrix ist, so spricht man auch von einer Permutationschiffre. 39

One time Pad n 1: Länge des Plaintextes (hier als Bitfolge) P := (Z 2 ) n C := (Z 2 ) n K 1, K 2 := (Z 2 ) n K := {(k, k) k = (κ 1,,κ n ) (Z 2 ) n } E k (x) := (x 1 + κ 1,,x n + κ n ) (mod 2) D k (y) := (y 1 + κ 1,,y n + κ n ) (mod 2) Für jede Verschlüsselung wird ein neuer, zufälliger Schlüssel k generiert und benutzt. Perfekte Sicherheit: Ein Kryptosystem (P, C, K, E, D) heißt perfekt sicher, falls P(x y) = P(x) gilt für alle x P, y C. Also: Jeder abgefangene noch so lange Geheimtext bringt keine neuen Erkenntnisse über den möglichen Klartext. Es gilt für jedes Kryptosystem Γ = (P, C, K, E, D): Es sei card(k) = card(p) = card(c); dann liefert Γ perfekte Sicherheit jeder Schlüssel wird mit der gleichen Wahrscheinlichkeit 1/card(K) benutzt, und für jedes x P und jedes y C gibt es genau ein k K mit E k (x) = y Γ perfekt sicher = jedes x P kann mit geeignetem k K auf jedes y C abgebildet werden Γ perfekt sicher = card(k) card(c) card(p) 40

Entropie als Maß für den Grad der Zufälligkeit Es seien X eine diskrete Zufallsvariable, W(X) die Menge aller ihrer möglichen Werte, und für ein beliebiges ξ W(X) sei P(X = ξ) die Wahrscheinlichkeit dafür, dass X den Wert ξ annimmt (in der Praxis wird P(X = ξ) meist durch die relative Häufigkeit des Wertes ξ ersetzt). Dann ist die Entropie H(X) von X wie folgt definiert: Beispiele: H(X) := ξ W(X) P(X = ξ) log 2 (P(X = ξ)) [Bit] Modelliert X zufällige Würfe einer nicht gezinkten Münze, so ist W(X) = {W appen, Zahl}, jedes der beiden Ereignisse hat die Wahrscheinlichkeit 0.5, und die Entropie von X ist 1 Bit. Modelliert X zufällige Würfe eines nicht gezinkten Würfels, so ist W(X) = {1, 2, 3, 4, 5, 6}, jedes der sechs Ereignisse hat die Wahrscheinlichkeit 1/6, und die Entropie von X ist log 2 (1/6) 2.586 Bit. Modelliert X ein zufälliges Grauwertbild mit 128 128 Pixeln, wobei jedes Pixel völlig unabhänging von den anderen völlig zufällig einen der Werte von 0 bis 255 annehmen kann, so kann X also 256 128 128 paarweise verschiedene Werte, alle mit der Wahrscheinlichkeit 1/256 128 128, annehmen. Die Entropie von X ist damit log 2 (1/256 128 128 ) = log 2 (2 8 128 128 ) = 8*128*128 = 131072 Bit. Modelliert dagegen X die in einem Grauwertbild vorkommenden Grauwerte der einzelnen Pixel, so muss man die relativen Häufigkeiten der vorhandenen Grauwerte bestimmen und dann nach obiger Formel die Entropie berechnen. Sind überhaupt nur die Grauwerte von 0 bis 255 möglich, so kann die Entropie maximal den Wert 8 Bit haben (wenn nämlich alle Grauwerte gleich oft vorkommen). Die Entropie eines Buchstabens in einer völlig zufälligen Zeichenkette, in der überhaupt nur 26 paarweise verschiedene Zeichen vorkommen können, ist log 2 (26) 4.7 Bit. Die Entropie eines beliebigen Zeichens in einem natürlichen deutschen oder englischen Text liegt zwischen 1 Bit und 1.5 Bit (benutze Folie 35). 41