OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,

Post on 07-Mar-2021

2 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

Transcript

Vorlesungsmitschrift

OpenSSL ndash Kryptologie in C

Dozent Dr Ernst-Gunter Giessmann

Peter Haider Ulf Hermann Mathias Jeschke Jens Kleine amp Henryk Plotz(haider|uhermann|jeschke|jkleine|ploetz)informatikhu-berlinde

WS 20042005 und SS 20058 Juli 2009 (Revision 193 )

Humboldt-Universitat zu BerlinInstitut fur Informatik

1

Inhaltsverzeichnis

1 Einfuhrung 511 Verschlusselung 612 Beispiel rot13 613 Block-Chiffre 714 Strom-Chiffre 815 Angriffstypen 8

151 Differentielle Kryptoanalysis 916 Base64 10

2 OpenSSL 10

3 Symmetrische Verschlusselungsverfahren 1231 Feistel-Chiffren 1232 DES - Data Encryption Standard 14

321 Schlusselauswahl 15322 Funktionsweise 16323 Schwachstellen und Unsinnigkeiten 17324 spezielle Optionen bei openssl 18325 DESECB - Electronic Code Book 20326 DESCBC - Cipher Block Chaining 21327 DESOFB - Output Feed Back 23328 DESCFB - Cipher Feed Back 24329 CTR Mode CCM 253210 TEA-Algorithmus 263211 DES-X 28

33 IDEA International Data Encryption Algorithm 28331 Schlusselauswahl 29332 Funktionsweise 29333 Pseudocode-multiplikation 30334 Schwachstellen 31

34 Blowfish 31341 Initialisierung 33342 Verschlusselung 34

35 AES Advanced Encryption Standard 35351 Wiederholung-Byteoperation 35352 Uberblick 35353 mathematische Grundlagen 38

36 RC4 Ronrsquos Cipher 4 39361 Geschichte 40362 Beschreibung 41363 Der Pseudo-Zufalls-Algorithmus 41364 Der Schlusselerzeugungs-Algorithmus 42

2

365 Implementation 43366 Sicherheit 43367 Fluhrer Mantin und Shamir Angriff 44

37 RC5 Ronrsquos Cipher 5 44371 Verschlusselung 44372 Schlusselexpansion 45

38 GOST 28147-89 Gosudarstvennyi Standard Soyuza SSR nicht in OpenSSL 4539 FazitWie konnte bei einen Symmetrischen Algorithmus die Sicherheit erhohen 47

4 Asymmetrische Verschlusselungsverfahren 4741 Einfuhrung 47

411 Beispiel 4842 Geschichte 4843 Einige Theoretische Grundlagen 49

431 Kleiner Fermat (oder kleiner Fermatrsquoscher Satz) 49432 Euklidischer Algorithmus 49433 Beispiel 51

44 RSA Rivest Shamir Adleman 54441 Funktionsweise des RSA-Verfahrens 54442 Beweis der Funktionsweise 55

45 Schwachen von RSA 5646 Fuktionen in OpenSSL 56

461 genrsa 56462 rsa 57463 rsautl 58464 PKCS 58465 OAEP - Optimal Asymmetric Encryption Padding 59466 Wie erkennt man an Ciphertexten den Verschlusselungsalgorithmus- DER

ASN1 60467 Umgehen mit den Schlusselkomponenten 61

47 Miller-Rabin Test 6248 Diffie-Hellman-Schlusselaustausch 6449 ElGamal-Cryptosystem 66410 Wiederholung DH 66

4101 Beispiel 67411 was anderes 67412 Elliptische Kurven 67413 Elliptische Kurven Nachtrag 70414 Rucksack-Verschlusseln 71

4141 Beispiel 71415 Merkle Puzzle 71416 Rabin-Verfahren und Wurzelziehen 72

4161 Schlusselgenerierung 724162 Kongruenzbedingung 73

3

4163 Verschlusselung 734164 Entschlusselung 74

417 Angriffe auf asymmetrische Verschlusselungsverfahren 744171 1 Angriff Common modulus attack 754172 2 Angriff kleiner geheimer Exponent d 754173 3 Angriff Faktorisieren 754174 Echt schlechte RSA-Schlussel 754175 Schnelles Faktorisieren bei Fehler im System 764176 Angriff mit gewahltem Chiffretext 76

5 Signaturmechanismen 7751 Integritatsschutz und Hashfunktionen 77

511 Schlussellose Hashfunktion (Prufsummen ohne Schlussel) 80512 Demonstration Falschung 83

52 Unterschied MD5 und SHA 8453 Secure Hash Standard SHA-2 85

531 Problem bei MD5 und SHA-0 86532 MACs (Message Authentication Codes) (Prufsummen mit Schlusseln) 87

54 Whirlpool 8955 Zusammenfassung 8956 Digitale Signaturen 91

561 RSA 92562 Eigenschaften eines asymmetrischen Verschlusselungsverfahren 93563 RSASSA-PSS-Padding 95564 DSA 97565 ECDSA - DSA mit Elliptischen Kurven 99

57 Widerrufen von Zertifikaten 10358 Was es noch so gibt 105

581 blinde Signaturen 105582 anonyme Signaturen 105

6 Zertifikate 105603 X509 107604 Erweiterungen 108605 Erzeugung 111606 Gultigkeit 112

61 Praktische Ausschlachtung von kryptografischen Algorithmen mit SMIME undPKCS7 114

62 PKCS 115621 PKCS7 15 November 93 RFC 3852 115

63 CMS(Cryptographic Message Syntax) 116

7 Wichtige Neuerungen bei den Versionsanderungen 119

4

8 OpenSSL hintergehen 12081 die eine Primzahl ganz klein erzeugen 12082 beide Primzahlen nah beieinander 12083 Vorschrift des BSI 12084 Programmierung Zufallszahlenerzeugung und andere nette features 121

9 Zusammenfassung 121

10 Mathematische Techniken 122101 Multiplikatives Inverses 122

1011 Behauptung 1231012 Beweis 123

102 Kleiner Fermatscher Satz 1231021 Behauptung 1231022 Beweis 1231023 Verallgemeinerung 1241024 Praktische Anwendung auf Primzahlen 125

103 Chinesischer Restklassensatz 1251031 Behauptung 1261032 Beweis 126

104 Square and multiply 127105 Montgomery Reduktion (Moduloberechnung ohne Division) 127106 Nochwas 131

1 Einfuhrung

Literaturempfehlungen

bull Alfred J Menezes Paul C van Oorschot Scott A Vanstone - Handbook of Applied Cryp-tography CRC Press 1996 ISBN 0849385237 httpwwwcacrmathuwaterloocahac

bull John Viega Matt Messier Pravier Chandra - Network Security with OpenSSL OrsquoReilly2002 ISBN 059600270X

bull Michael Welschenbach - Kryptographie in C und C++ Springer 2001 ISBN 3540420614

bull Bruce Schneier - Applied Cryptography Wiley 2nd rev 1996 ISBN 3540420614

Prufung 24 08 2009

In der Vorlesung wird ofters der rsquoMagma Calculatorrsquo verwendet Dabei handelt es sich um dieOnline-Version eines Computer Algebra Systems (httpmagmamathsusydeduaucalc) Imfolgenden werden Berechnungen die mit Magma durchgefuhrt wurden mit rsquoMagmarsquo gekenn-zeichnet

5

Kryptographie ist einer der beiden Bestandteile der Kryptologie der andere ist Kryptoanalyse

Kryptographie Entwurf von Sicherheitsalgorythmen die Daten vor Mitlesen und Verandernschutzen

Kryptoanalyse Aktives Analysieren von kryptographischen Verfahren

11 Verschlusselung

Verschlusselung benotigt Menge von Schlusseln

N - Algorithmus (zB DES) - c

E

6

K

N Menge der NachrichtenK Menge der Schlusselc Verschlusselte Nachricht

foralln isin N k isin K c = E(n k) eindeutig

exist Algorithmus D (decrypt) mit aus c = E(n k) folgt existkprime isin K mit n = D(c kprime)

12 Beispiel rot13

N = Alphabetn isin N

c = n + 13 mod 26Dies ist kein Verschlusselungsalgorithmus da es nur einen Schlussel gibtc = n + k mod 26Dies ist ein Verschlusselungsalgorithmus da es eine Menge von Schlusseln gibt

c = E(n k) = n + kn = D(c k) = c minus kE(n 13) = D(n 13)

6

Variante der Betrachtung kprime = 26 minus k rArr D(c kprime) = E(c kprime)Verschlusseln = Entschlusseln = Vorteil nur ein Algorithmus

Berechnungk rarr kprime (vernunftig im allgemeinen Sinne)E middot D = IdC

D middot E = IdN

Man unterscheidet bei Verschlusselungsverfahren

symmetrisch k hArr kprime kennt man einen Schlussel kennt man beide

asymmetrisch k rArr kprime oder k lArr kprime aus dem einen Schlussel kann man denanderen nicht erfahren

13 Block-Chiffre

Ausdehnung der Verschlusselung von Alphabet auf Zeichenketten mi Die Originalnachrichtwird in Blocke zerlegt die gleich verschlusselt werden Zum Beispiel

m = (m1m2m3 )

k = (k1 k2 k3 )

ci = mi oplus ki

Aus der Wikipedia (unter GNU Free Documentation License)

Symmetrische Verschlusselungsalgorithmen sind oft Blockverschlusselungsalgorithmen (auchBlockchiffre) Bevor sie Daten verschlusseln werden diese zunachst in Blocke unterteilt de-ren Groszlige durch den Algorithmus vorgegeben ist Die Verschlusselungsroutinen setzen jedochganze Blocke voraus somit muss meistens der letzte Block mit Zufallsdaten aufgefullt werden(bei einer Blockgroszlige von 128 Bit werden die verschlusselten Daten somit 0 bis 127 Bit groszligerals der Klartext)Die Blocke werden anschlieszligend nacheinander verschlusselt Dabei ist es durchaus ublich dassdas Ergebnis der Verschlusselung eines Blocks bei der Verschlusselung des nachsten Blocksals Eingangswert mitverwendet wirdWichtige Parameter einer Blockchiffre sind somit die Blocklange (auch Blockgroszlige) und dieSchlussellange

7

14 Strom-Chiffre

Aus der Wikipedia (unter GNU Free Documentation License)

Eine Strom-Chiffre ver- bzw entschlusselt Nachrichten Bit fur Bit bzw Zeichen fur ZeichenDies steht im Gegensatz zu Block-Chiffren wo Nachrichten immer in gleich groszligen Blockenverarbeitet werden

Strom-Chiffren sind symmetrische Verschlusselungsalgorithmen die sehr schnell arbei-ten

Zur Generierung eines Geheimtextes wird zunachst ein Schlusselstrom erzeugt DieserSchlusselstrom ist eine Folge von Zeichen die nur mit Kenntnis des geheimen Schlussels er-zeugt werden kann (in der Regel eine Pseudozufallsfolge) Danach wird jedes Zeichen desSchlusselstroms mit einem Zeichen des Klartextes verknupft Die Verknupfungsoperation istXOR Um Geheimtexte wieder zu entschlusseln wird der Geheimtext mit dem Schlusselstromverknupft

Beispiele fur Strom-Chiffren sind die XOR-Verschlusselung oder die Entwicklung vonRonald L Rivest namens RC4

15 Angriffstypen

m Nachrichtc verschlusselte Nachrichtk Schlussel

Kommunikation zwischen Alice und Bob mit Angreifer Eve Vorraussetzung Eve kennt dasVerfahren

1 Chiffre ist bekannt(ciphertext only Chiffre allein Angriff)m k gesucht

2 (mi ci)-Paare sind bekannt ci = E(kmi)(known plain text bekannter Klartext Angriff)gesucht k und weitere mi

3 wahlbarer Klartext chosen plaintext(zB Eve hat Encoder in die Hande bekommen)

4 wahlbarer Chiffretext chosen ciphertext(zB Eve hat Decoder in die Hande bekommen)

Generelle Schutzmechanismen zum sicherer machen

8

1 Klartextbits breit auf Chiffre verteilen und Schlusselbits uberall einbringen um die Si-cherheit zu erhohen bzw einen anderen Algorithmus verwenden um dies zu erreichen

2 Algorithmus skalieren Lange des Schlussels mehr Runden

3 Schwachen zusatzlichen Schutz bietet doppeltes verschlusseln zum BeispielAlgorithmus hat 64-Bit Sicherheit (Brute Force Angriff Aufwand von 264) doppelt ver-schlusselt hat er 65-Bit Sicherheit wegen

rdquomeet in the middle Angriffldquo Ist known plain text attack m ist der Klartext k der Schlusselfur den ersten Algorithmus n der daraus resultierende ldquoZwischentextrdquo l der Schlussel furden zweiten Algorithmus und c die endgultige verschlusselte Nachricht Der Angreiferinist ein m und das dazu gehorige c bekannt Sie erzeugt sich nun alle Werte die k an-nehmen kann und alle Werte die l annehmen kann und berechnet zu jedem ki sowie zujedem li ein ni als E(kim) bzw D(li c) Damit muss sie 2 lowast 264 Paare von Schlusselnund ldquoZwischentextenrdquo erzeugen und speichern In der Menge der ni gibt es nun (da beideVerschlusselungen eindeutig sind) genau zwei - eines als Entschlusselung von c eines alsVerschlusselung von m - die ubereinstimmen Deren Schlussel sind diejenigen die auchbei der Erzeugung von c verwendet wurden Das Auffinden dieses Paares kann durch ge-schickte Speicherung der ni ki und li zum Beispiel in einer Hashtabelle in logarithmischerZeit bewerkstelligt werdenDaher Sicherheit des Algorithmus ist mindestens so stark wie jeder einzelne Algorithmusaber moglicherweise nicht viel besser

4 Dreifach verschlusseln und Kombination von AlgorithmenDer Meet-in-the-middle attack schlagt hier fehl da der Speicher- und Rechenaufwandnun quadratisch mit dem Werteraum der Schlussel wachst Bei der Verwendung einesschwachen Algorithmus der anderweitig gebrochen werden kann wird die Kombinationjedoch wieder anfallig fur meet-in-the-middle

5 Block-Chiffre + Strom-Chiffre kombinierenStrom-Chiffre sehr langer Schlussel c = p oplus k k zufallig gewahlt (moglichst echter phy-sikalischer Zufall) zwei Folgen CK rarr in Block-Chiffrerarr Blockweise C2 = E(S 1K)C1 = E(S 2C)Eine Strom-Chiffre und zwei Block-Chiffren Brechen dieser Kombination = Aufwandaddiert sich aber doppelte Ausgabelange

151 Differentielle Kryptoanalysis

man wahle Klartexte P1 P2 mit ganz bestimmten Unterschied P1 oplus P2 = D Bei der Ver-schlusselung ergibt sich dann fur die Chiffretexte C1C2 mit bestimmten Dprime = C1 oplus C2 das ineinen bestimmetn Zusammenhang zu D steht

Bleiben die Schlussel immer gleich so kann man sich langsam mit D1 Dn an den Klartextranprobieren ()

9

16 Base64

Aus der Wikipedia (unter GNU Free Documentation License)

Base64 [] beschreibt ein Verfahren zur Kodierung von 8-Bit-Binardaten (z B ausfuhrbareProgramme ZIP-Dateien) in eine Zeichenfolge die nur aus wenigen Codepage-unabhangigenASCII-Zeichen besteht Im Zusammenhang mit OpenPGP wird noch eine Prufsumme (CRC-24) angehangt und es als Radix-64 bezeichnet

Es findet im Internet-Standard MIME (Multipurpose Internet Mail Extensions) Anwen-dung und wird damit hauptsachlich zum Versenden von E-Mail-Anhangen verwendet Notigist dies um den problemlosen Transport von beliebigen Binardaten zu gewahrleisten da SMTPin seiner ursprunglichen Fassung nur fur den Versand von 7-Bit ASCII-Zeichen ausgelegt war

Zur Kodierung werden die Zeichen A-Z a-z 0-9 + und verwendet sowie = am EndeDa diese Zeichen auch in EBCDIC vorkommen (wenn auch an anderen Code-Positionen) istdamit auch ein Datenaustausch zwischen nicht-ASCII-Plattformen moglich

Zur Kodierung werden jeweils drei Byte des Bytestroms (=24 bit) in vier 6-bit-Blockeaufgeteilt Jeder dieser 6-bit-Blocke bildet eine Zahl zwischen 0 und 63 Diese Zahlen werdenan Hand der nachfolgenden Umsetzungstabelle in ldquodruckbare ASCII-Zeichenrdquo umgewandeltund ausgegeben Nach jeweils 76 ausgegebenen Zeichen wird spatestens ein Zeilenumbrucheingefugt welcher jedoch ansonsten fur die Kodierung nicht von Belang ist

Falls die Gesamtanzahl der Eingabebytes nicht durch drei teilbar ist wird der zu kodieren-de Text am Ende mit Fullbytes aufgefullt Um dem Dekodierer mitzuteilen wie viele Fullbytesangefugt wurden werden die 6-Bit-Blocke die vollstandig aus Fullbytes entstanden sind mitrsquo=rsquo kodiert Somit konnen am Ende einer Base64-kodierten Datei 0 1 oder 2 rsquo=rsquo-Zeichenauftreten

Die angesprochene Transitionstabelle ist eine alphabetisch bzw numerisch aufsteigende Anord-nung zuerst der Groszligbuchstaben dann der Kleinbuchstaben schlieszliglich der Ziffern und am Endeder beiden Zeichen rsquo+rsquo und rsquorsquo in dieser Reihenfolge

2 OpenSSL

Optionen fur openssl ciphername oder openssl enc -ciphername

OPTIONS

-in filename

the input filename standard input by default

-out filename

the output filename standard output by default

10

-pass arg

the password source

-salt

use a salt in the key derivation routines

-nosalt

donrsquot use a salt in the key derivation routines

-e

encrypt the input data this is the default

-d

decrypt the input data

-a

base64 process the data This means that if encryption is

taking place the data is base64 encoded after encryption

If decryption is set then the input data is base64 decoded

before being decrypted

-A

if the -a option is set then base64 process the data on

one line

-k password

the password to derive the key from This is for

compatibility with previous versions of OpenSSL Superseded

by the -pass argument

-kfile filename

read the password to derive the key from the first line

of filename This is for compatibility with previous

versions of OpenSSL Superseded by the -pass argument

-S salt

the actual salt to use this must be represented as a

string comprised only of hex digits

-K key

the actual key to use this must be represented as a string

comprised only of hex digits If only the key is specified

the IV must additionally specified using the -iv option

11

When both a key and a password are specified the key given

with the -K option will be used and the IV generated from

the password will be taken It probably does not make much

sense to specify both key and password

-iv IV

the actual IV to use this must be represented as a string

comprised only of hex digits When only the key is specified

using the -K option the IV must explicitly be defined When

a password is being specified using one of the other options

the IV is generated from this password

-p

print out the key and IV used

-P

print out the key and IV used then immediately exit donrsquot

do any encryption or decryption

-bufsize number

set the buffer size for IO

-nopad

disable standard block padding

-debug

3 Symmetrische Verschlusselungsverfahren

31 Feistel-Chiffren

Aus der Wikipedia (unter GNU Free Documentation License)

Feistel-Chiffre (auch als Feistelnetzwerk bezeichnet) ist eine Block-Chiffre Ein Mitarbeitervon IBM Horst Feistel gilt als der Erfinder dieser Chiffre Er arbeitete mit anderen am sogProjekt rdquoLuciferldquo dessen Ziel es war eine effiziente Verschlusselungstechnologie zu entwi-ckeln Die Feistel-Chiffre war spater dann die Grundlage fur den DES-Algorithmus

Viele moderne symmetrische Verschlusselungsalgorithmen basieren auf Feistelnetzwer-ken Dies ruhrt ua auch daher dass die Struktur von sehr vielen Kryptografen analysiert undfur gut befunden wurde

12

Wie es der Name rdquoBlock-Chiffreldquo schon nahe legt wird der Klartext zuerst in einzelneBlocke zerlegt Die Groszlige dieser Blocke kann frei gewahlt werden ublich sind oftmals Vielfa-che von 64 Bit

Jeder dieser Blocke wird danach in zwei gleichgroszlige Halften (L0 und R0) geteilt und inmehreren Runden mit verschiedenen Schlusseln verschlusselt Nach den Runden werden dieHalften wieder zusammen gesetzt

Innerhalb der i-ten Runde (i ist die Nummer der aktuellen Runde und reicht von 1 bis n)wird folgende Formel angewendet

Li = Riminus1

Ri = Liminus1 oplus f (Riminus1Ki)

Dabei bildet f die sog Runden- oder Transformationsfunktion und Ki ist der jeweilige Runden-schlussel Der verschlusselte Text am Ende der Runden ist die Zusammenfuhrung von (LnRn)

Feistelnetzwerke ermoglichen eine Entschlusselung ohne dass die Umkehrfunktion von fbenotigt wird Will man einen Geheimtext dechiffrieren wendet man die obige Formel leichtmodifiziert an

Riminus1 = Li

Liminus1 = Ri oplus f (Riminus1Ki)

13

(Quelle httpenwikipediaorgwikiImageFeistelpng)

32 DES - Data Encryption Standard

DES ist eine 64 Bit Block-Chiffre mit einer festgelegten Schlussellange von 56 Bit Die Funk-tionsweise entspricht einem 16-Runden Feistel-Netzwerk DES ist der erste Verschlusselungs-Algorithmus der weite Verbreitung fand und dessen Spezifikation offentlich zuganglich ist Erwurde in den 70er Jahren entwickelt und ist im amerikanischen Standard FIPS 46-2 beschrieben

14

321 Schlusselauswahl

Zunachst steht nominal ein 64-Bit Schlussel zur Verfugung Von diesem ist jedoch je ein Bit proByte als Paritatsbit deklariert so dass 56 Bit effektives Schlusselmaterial ubrigbleiben Diese 56Bit werden in 2 mal 28 Bit aufgeteilt die in jeder der 16 Runden um 1 oder 2 Bit rotiert werdeninsgesamt um 28 Bit so dass am Ende wieder das Original vorliegt Aus der Konkatenation derbeiden Halften wird in jeder Runde ein 48-Bit Rundenschlussel ausgewahlt

(Quelle httpenwikipediaorgwikiImageDES-key-schedulepng)

15

322 Funktionsweise

Die so gewonnenen Rundenschlussel ki werden fur die Runden der Feistelchiffre genutzt E(k1 k2 k16m) =

cE(k16 k15 k1 c) = mD(k1 k2 k16 c) = E(k16 k15 k1 c) = mJeder 64 Bit Eingabe-Block wird in zwei 32 Bit Blocke (L und R) aufgeteilt und weiterverarbei-tet L und R werden in jeder Runde durch eine festgelegte Permutation E auf 48 Bit ausgedehntanschlieszligend mit dem Rundenschlussel verknupft mittels einer weiteren rundenspezifischenPermutation S wieder auf 32 Bit komprimiert und dann schlieszliglich noch einer weiteren festge-legten Permutation P unterzogenLi = Riminus1Ri = Liminus1 oplus f (Riminus1Ki) wobei f (Riminus1Ki) = P(S (E(Riminus1) oplus Ki))

rechts Feistelstruktur (Quelle httpenwikipediaorgwikiImageDES-main-networkpng)

links F Funktion (Quelle httpenwikipediaorgwikiImageDES-f-functionpng)

16

(Quelle httpdewikipediaorgwikiBildDES_resizepng)

323 Schwachstellen und Unsinnigkeiten

bull Die Anfangliche Permutation der Klartexteingabe sollte Softwareimplementation erschwe-ren Per Hardware ist diese sehr einfach universell verwendbare Rechner hatten in den70er Jahren jedoch noch Probleme mit so etwas

bull Das Paritatsbit ist eine Schwachstelle da es - soweit es gesetzt ist - ein Durchmustern desSpeichers nach dem Schlussel erlaubt Gesucht wird dann nach dem relativ ungewohn-lichen Auftreten von 8 nahe bei einander liegenden Byte bei denen je das letzte Bit dieParitat angibt

17

bull Mit heutigen Rechnern ist es moglich einen 56-Bit Schlussel mittels brute force zu knackenDie Lange des Schlussels ist bei DES aber auf diesen Wert festgelegt

bull Es wird vermutet dass die ldquomagischenrdquo S-Permutationen uber deren Qualitat nichts be-wiesen ist eine Hintertur darstellen da die NSA hierbei ihre Finger im Spiel hatte Eskonnte jedoch nie bewiesen werden

324 spezielle Optionen bei openssl

bull Option -nopad Schaltet Auffullung der letzten Bits zu Block von 64 Bits aus Auch wenndie Nachricht genau in 64 Bit Blocken einteilbar ist wird ein 64 Bit Padding Block an-gehangtDer Block besteht aus x mal der Zahl x So lasst er sich beim Entschlusseln wieder entfer-nen

bull Option -nosalt Schaltet die Voranstellung des salt-Werts ausDer salt-Wert verlangert die Nachricht um insgesamt 16 Bytes Salted__ gefolgt von 8Bytes salt-WertAus Passwort und salt-Wert wird der Key fur die eigentliche Verschlusselung erzeugt Da-mit wird verhindert dass Schlussel wegen Mehrfachverwendung von Passwortern leich-ter zu brechen sind Gleiche Passworter beim Aufruf der Verschlusselung mit OpenSSLfuhren durch den zufalligen salt-Wert zu verschiedenen Keys bei der Verschlusselung

bull Neben des gibt es auch des-ede und des-ede3 Diese bieten einen gewissen Schutzgegen Bruteforce-AngriffeTDES (Triple DES) DES3 DES-EDE (Encrypt Decrypt Encrypt) mit effektiv 168 Bit

E3DES(k1 k2 k3m) = EDES(k3DDES(k2 EDES(k1m)))

In OpenSSL arbeitet des-ede mit zwei Schlusseln

E(K1)D(K2) E(K1)

Um in OpenSSL 3 Schlussel angeben zu konnen muss man des-ede3 verwenden Ver-wendet man bei des-ede zweimal oder bei des-ede3 dreimal den selben Schlusselerhalt man eine einfache DES-Verschlusselung So kann man Abwartskompatibilitat er-reichen

bull In OpenSSL konnen DES Verschlusselungen mit folgenden Befehlen aufgerufen werden

ndash -desndash -des-cbcndash -des-cfbndash -des-ecbndash -des-edendash -des-ede-cbc

18

ndash -des-ede-cfbndash -des-ede-ofbndash -des-ede3ndash -des-ede3-cbcndash -des-ede3-cfbndash -des-ede3-ofbndash -des-ofbndash -des3ndash -desxndash -desx-cbc

OpenSSL des-ecb -salt fur den Schlusseleintrag aus Passphrasepassphrase = 12345prime +prime S alt minusWert rarr K

12345srarr

264 Moglichkeiten

Damit man keine Tabelle generieren kann die aus den schwachen Schlussel besteht denn fur12345 gibt es 264 Moglichkeiten aufgrund des salts

(PC12345)(PC1234)

P- (Klartext) bekanntS- (Saltwert) bekanntC- (Chiffretext) unbekanntwelcher Schlussel wurde verwendet

112123

1234

rarr K

s1 s2 s3c1 c1 c1c12 c12 c12c123 c123 c123c1234 c1234 c1234

Dazu kommt aber spater noch mehr

19

325 DESECB - Electronic Code Book

Die Eingabe wird in Blocke aufgeteilt und jeder Block fur sich verschlusselt Dieses Verfahrenist potentiell unsicher weil in der Abfolge der Blocke eine Struktur enthalten ist die der Algo-rithmus nicht verbirgt Ein Fehler beim Ver- oder Entschlusseln eines Blockes fuhrt allerdingsauch nur zu einem einzigen verlorenen Block

To do Initialisierungsvektor

(Quelle httpenwikipediaorgwikiImageEcb_encryptionpng)

(Quelle httpenwikipediaorgwikiImageEcb_decryptionpng)

BemReicht fur einen Block dann wird auch kein Initialisierungsvektor benotigt

20

Man kann fur den Initialisierungsvektor auch einen vorher vereinbarten Wert (zB Unix Sekun-den) wahlen

Aus der Wikipedia (unter GNU Free Documentation License)

Die 64-bit Klartextblocke werden nacheinander und getrennt voneinander kontextfrei ver-schlusselt Dies ist die einfachste Anwendungsmoglichkeit eines Block-Chiffre

326 DESCBC - Cipher Block Chaining

Aus der Wikipedia (unter GNU Free Documentation License)

Vor der Verschlusselung eines Klartextblockes wird der bereits verschlusselte vorhergehendeBlock hinzuaddiert Auf den ersten Klartextblock der ja keinen Vorganger besitzt wird stattdessen ein Initialisierungsvektor der geheim gehalten werden muss addiert Dadurch entstehteine Verkettung (engl chain) der Blocke Trotz dieser Verkettung ist die CBC-Verschlusselung

rdquoselbstkorrigierendldquo FehlerManipulationen in einem Block wirken sich bei der Entschlusse-lung nur auf den fehlerhaftenmanipulierten und den nachsten Block ausMan kann relativ einfach beliebige Blocke des Geheimtextes einzeln entschlusseln da zusatz-lich zum Schlussel nur der vorhergehende (verschlusselte) Block benotigt wird

Fehler im c breiten sich nicht aus beim Entschlusseln Ein Initialisierungsvektor IV fur erstenBlock wird benotigt

bull Klartext oplus Cipher und dann Encryption

bull Vorteil Muster im Klartext werden zerstort

bull Nachteil Fehler im Ciphertext eines Blocks verandern Bits an genau der Stelle im folgen-den Block (aber nur in diesem spatere Blocke sind nicht betroffen) so kann gezielt eineStelle im Block angegriffen werden (siehe Skizze)

To do Skizze zur Fehlerausbreitung erlautern

21

m1 mlowast2 mlowast3

IV oplus

oplus

oplus

oplus

DES

DES

DES

DES

c1

DDc2

DDc3

DDc4

EE

Vergleich DESECB und DESCBC

Zum Vergleich bietet es sich an ein Bild (Abbildung 1) mit DES im ECB- und im CBC-Moduszu verschlusseln Deutlich zu erkennen ist dass die Struktur im ECB-Modus (Abbildung 2)erhalten bleibt wahrend sie bei CBC (Abbildung 3) vollkommen zerstort wird

Abbildung 1 Bild im Klartext (24 Bit RGB mit 182 times 183 Pixeln)

Abbildung 2 Bild aus Abbildung 1 ECB-verschlusselt

22

Abbildung 3 Bild aus Abbildung 1 CBC-verschlusselt

327 DESOFB - Output Feed Back

Aus der Wikipedia (unter GNU Free Documentation License)

In diesem Modus werden die Klartextblocke nicht direkt mit DES verschlusselt sondern DESerzeugt einen pseudozufalligen Bitstrom der dann ohne Ubertrag (vgl XOR) auf den Klartextaddiert wird Dazu muss DES mit einem kontinuierlichen Eingabestrom gefuttert werden AlsEingabe von DES dient hier ein Schieberegister dass zunachst mit einem Initialisierungsvektorgeladen wird Anschlieszligend wird immer ein Teil der Ausgabe von DES in dieses Registerhineingeschoben und so als Eingabe wiederverwendet (daher output feedback)

bull Output der Encrpytion als Input fur Encryption erzeugt Pseudozufallsstrom oplus Klartext

bull Vorteil Beliebige Blockgroszligen moglich wie Stromchiffre verwendbar

bull Nachteil Durchsatz verringert sich auf neue Blockgroszlige pro erzeugtem Block kann abervorberechnet werden

bull Vorteil Ein Bit Fehler fuhrt zu nur einem invertierten Bit nach der Entschlusselung

bull Nachteil Keine Selbstsynchronisierung moglich wenn Bits komplett verloren gehen

23

(Quelle httpdewikipediaorgwikiBildOfb_encryptionpng)

(Quelle httpdewikipediaorgwikiBildOfb_decryptionpng)

328 DESCFB - Cipher Feed Back

Aus der Wikipedia (unter GNU Free Documentation License)

Identisch mit OFB aber statt die Ausgabe des DES wieder als Eingabe zu verwenden wirdder Kryptotextstrom als Eingabe wiederverwendet

bull Cipher als Input fur Encryption erzeugt Pseudozufallsstrom oplus Klartext

24

bull Vorteil Beliebige Blockgroszligen moglich wie Stromchiffre verwendbar

bull Nachteil Durchsatz verringert sich auf neue Blockgroszlige pro erzeugtem Block

(Quelle httpdewikipediaorgwikiBildCfb_encryptionpng)

(Quelle httpdewikipediaorgwikiBildCfb_decryptionpng)

329 CTR Mode CCM

Dieser Modus spielt fur DES keine Rolle Ist auch nicht in OpenSSL implementiert Aber die-se Betriebsart ist fur 128 Bit Verschlusselungen ist zum Beispiel vom BSI als sicher eingestuftworden rsquoDie Betriebsart der Zukunftrsquo

Wird zum Beispiel fur W-LAN Verschlusselung verwendet

25

Eingabe sind Klartext mit einen Zahler

ctr0 rarr Block rarr oplusT rarr c0ctr1 rarr Block rarr oplusp1 rarr c1ctr2 rarr Block rarr oplusp2 rarr c2ctr3 rarr Block rarr oplusp3 rarr c3

ctrn rarr Block rarr opluspn rarr cn

Standardisiert als rsquoSP 800-38crsquo

(N A P) mit N Zufallswerten A Assoziierte Daten P Klartext produziert Blocke B0 B1 Br

httpcsrcnistgovpublicationsnistpubs800-38CSP800-38C_updated-July20_

2007pdf

To do algorithmus uberarbeiten ubersetzen

1 Apply the formatting function to (N A P) to produce the blocks B0 B1 Br

2 Set Y0 = CIPHK(B0)

3 For i = 1 to r do Yi = CIPHK(Bi oplus Yiminus1)

4 Set T = MS BTlen(Yr)

5 Apply the counter generation function to generate the counter blocks Ctr0Ctr1 Ctrmwhere m = dPlen128e

6 For j = 0 to m do S j = CIPHK(Ctr j)

7 Set S = S 1||S 2|| ||S m

8 Return C =(P oplus MS BPlen(S )

)||(T oplus MS BTlen(S 0)

)

T stellt einen Prufwert dar

3210 TEA-Algorithmus

To do uberarbeiten

26

Nicht in OpenSSL implementiert Universitarer Algorithmus

(Quelle httpdewikipediaorgwikiBildTEA_InfoBox_Diagrampng)

Man sieht die Feistel Idee allerdings die grunen Quadrate sind Additionen modulo 64 Bit

To do erlautern Pfeilspitzen

Es gibt ein Extended TEA struktur recht ahnlich aber beim Algorithmus an der Stelle

Byte 0 28 minus 1 | 28ii

b middot k = (b middot k mod (28 + 1)) mod 28 Es gibt auch eine Inverseb middot K rarr c rarr c middot kprime = b

geht nur bei 22 + 1 24 + 1 28 + 1 216 + 1

27

3211 DES-X

In OpenSSL desx KK1K2

EncK(m oplus K2) oplus K1 = DES minus X(m)

c1 oplus c2 = EncK(m1 oplus K2) oplus EncK(m2 oplus K2)

Ist unsymetrisch Hat sich nicht so ganz durchgesetzt

33 IDEA International Data Encryption Algorithm

IDEA gilt als sehr sicher ist schneller als DES bei Hardwareimplementation tauchte zuerst alsPES auf Unterschied PES und IPES ist die untere XOR-Vertauschung (siehe Wikipedia Skiz-ze) die es im PES nicht gab War nur zur privaten Nutzung frei ansonsten patentiert weshalber nicht so verbreitet war IDEA verschlusselt 64-Bit Eingabe-Blocke in 64-Bit Ausgabe-Blockeund verwendet dabei einen 128-Bit Schlussel Der Algorithmus basiert im wesentlichen auf 8identischen Runden die den Runden einer Feistel-Chiffre ahnlich sind und einer abschlieszligendenTransformation der Ausgabe In jeder Runde werden 6 16-Bit Subschlussel in der Ausgaben-Transformation weitere 4 davon verwendet Samtliche Subschlussel werden aus dem Original-schlussel berechnet Die 64 Bit Eingabe jeder Runde werden dabei als 4 16-Bit-Blocke verar-beitet Der Algorithmus benutzt verschiedene algebraische Operationen

bull Polynomaddition mod 2 XOR (blau-verbraucht wenig Strom)

bull Addition mod 216 ADD (grun-verbraucht wenig Strom etwas Zeit - Uberlauf wirdignoriert)

bull Multiplikation mod 216︸︷︷︸prim

+1 MULT (rot-viel Strom)

Aus der Wikipedia (unter GNU Free Documentation License)

Der IDEA-Algorithmus (International Data Encryption Algorithm) wurde 1990 als ein Ge-meinschaftsprojekt zwischen der ETH Zurich von James L Massey und Xueija Lai und derAscom Systec AG entwickelt IDEA ist ein symmetrischer Algorithmus und gehort zu denBlockchiffren Der Algorithmus benutzt einen 128-Bit langen Schlussel (DES nur 64 Bit da-von sind 8 Bits fur den Paritats-Check vorgesehen so dass die eigentliche Schlussellange nur56 Bits betragt)

Bei der Verschlusselung wird der Klartext in 64 Bit groszlige Blocke unterteilt und derSchlussel in Teilstucke zu je 16 Bit zerlegt Die Verschlusselung geschieht durch Kombina-

28

tion der logischen Operation XOR der Addition modulo 216 und der Multiplikation modulo216+1 Die Kombination dieser drei Operationen aus unterschiedlichen algebraischen Gruppensoll ein hohes Maszlig an Sicherheit gewahrleisten

Das Verfahren ist dazu optimiert Angriffen durch differentielle Kryptoanalyse zu wider-stehen

Es gibt bei IDEA leider eine ganze Reihe von schwachen Schlusseln die sich in zweiKlassen einteilen lassen Die erste Klasse umfasst 232 schwache Schlussel Sie sind insofernschwach als man sie mit gewahltem Klartext nachweisen kann Danach ist ein Brute ForceAngriff selbst fur Privatpersonen mit alteren PCs machbar Die zweite Klasse umfasst sogar265 schwache Schlussel Bei diesen Schlusseln kann man mit nur 20 gewahlten Klartexten72 Bit des Schlussels ermitteln Die restlichen 56 Bit muss man mit Brute Force ermittelnAllerdings liegt die Wahrscheinlichkeit dafur einen schwachen Schlussel zu erwischen bei einszu 263 oder eins zu 9 Trillionen

Weil die Ascom Systec AG an der Entwicklung des Algorithmus beteiligt war halt siedie Patente fur IDEA In Europa verfallt der Patentschutz am 16052011 In den USA wirdder Algorithmus bereits ein Jahr fruher kostenlos nutzbar sein Da das Patent in der Schweizerteilt wurde greift das Patent auch in Deutschland unabhangig davon dass in DeutschlandSoftwarepatente nicht legal sind

Der Algorithmus beruht wesentlich darauf dass 216 + 1 eine Primzahl ist Deshalb lasst sichIDEA nicht auf andere Blocklaengen adaptieren

331 Schlusselauswahl

Aus den 128 Bit des ursprunglichen Schlussels werden in insgesamt 52 16-Bit Teilschlussel er-zeugt Dabei werden aus dem aktuellen Schlusselwert (initial der ursprungliche 128-Bit Schlussel)8 der Teilschlussel durch aufteilen gewonnen Dann wird der aktuelle Schlussel subsequent um25 Bit nach links rotiert und so je ein neuer aktueller Schlussel erzeugt der wieder zu Teil-schlusseln aufgeteilt wird - solange bis alle Teilschlussel belegt sind Es werden 6 middot 16-Bit ineiner Runde verbraucht in 8 Runden also 48 Teilschlussel Hinzu kommen 4 Teilschlussel dienach der letzten Runde fur weitere Operation verwendet werden Insgesamt werden also 52Teilschlussel mit je 16-Bit aus 128-Bit Rohschlussel erzeugt und auch verbraucht rarr 832-BitSchlusselmaterial

332 Funktionsweise

In jeder Runde r finden folgende Transformationen statt

1 X1 = X1 MULT Kr1 X4 = X4 MULT Kr

4 X2 = X2 ADD Kr2 X3 = X3 ADD Kr

3

2 t0 = Kr5 MULT (X1 XOR X3) t1 = Kr

6 MULT (t0 ADD (X2 XOR X4)) t2 = t0 ADD t1

29

3 X1 = X1 XOR t1 X4 = X4 XOR t2 a = X2 XOR t2 X2 = X3 XOR t1 X3 = a

Dabei sind X1 bis Xi die 16-Bit Blocke die aus der 64 Bit Eingabe gewonnen wurden Kri ist der

Teilschlussel mit der Nummer r middot 6 + i Die abschlieszligende Transformation ergibt sich wie folgtY1 = X1 MULT K9

1 Y4 = X4 MULT K94 Y2 = X3 ADD K9

2 Y3 = X2 ADD K93

Dabei sind die Yi 4 16-Bit Worter die die Ausgabe darstellen

(Quelle httpdewikipediaorgwikiBildInternational_Data_Encryption_Algorithm_InfoBox_Diagrampng)

bull In OpenSSL konnen IDEA Verschlusselungen mit folgenden Befehlen aufgerufen wer-den

ndash -ideandash -idea-cbcndash -idea-cfbndash -idea-ecbndash -idea-ofb

333 Pseudocode-multiplikation

To do als Pseudocode machen

30

if(a==0)return ((216 +1)-b) mod 216

if(a==0)return ((216 + 1)-a) mod 216

if(a middot b) mod 216 gt (a middot b) div 216 return (a middot b) mod 216 minus (a middot b) div 216

if(a middot b) mod 216 le (a middot b) div 216 return (216 + 1) + (a middot b) mod 216 minus (a middot b) div 216

wenn a==0 rArr a = 216 equiv minus1 mod 216

334 Schwachstellen

Bei schlechter implementation konnen die XOR-Berechnungen am Stromverbrauch erkanntwerden Es konnen Ruckschlusse auf bestimmte Werte (insbesondere Null) gemacht werdenNach 218 Testrechnungen kann der Klartext bestimmt werdenSolche Angriffe nennt man Seiten Kanal Atacken in diesem Fall ist der Stromverbrauch derSeitenkanal (Zeitverbrauch spielt beim Idea keine Rolle)Bei guter Implementation gilt aber der Algorithmus als sicher

To do Skizze Stromverbrauch

34 Blowfish

Blowfish ist eine sehr schnelle 64-Bit 16-Runden Block-Chiffre die 1993 von Bruce Schneiererfunden wurde Die Lange der Schlussel ist variabel zwischen 32 und 448 Bit Als Teilschlusselwerden aus dem Ausgangsschlussel eine P-Box mit 18 mal 32 Bit und 4 S-Boxen mit 256 mal32 Bit generiert (P1 P18) (S 1 S 4)

Blowfisch Algorithmus von Bruc Schreier ist vollig Patentfrei dies hat sehr zu seiner Verbrei-tung beigetragen

31

F

F

14 weitere Runden

(Quelle httpdewikipediaorgwikiBildBlowfish_structure_(de)svg)

P1 P18 die XOR auf den Klartext kommen

Schlussel-P1 P18 und

-S-Boxen

32

(Quelle httpenwikipediaorgwikiImageBlowfishFFunctionsvg)

S ist 256 32 Bit WerterArr 4 middot 256 middot 32 Werte rArr kann man sich nicht merken also wird P1 P18 S 1 S 4 werdenals Hexadezimalwerte von π gewahlt

(K)n oplus (P1 P18)

Der so initialisierte Algorithmus wird auf den Klartext 0 0︸ ︷︷ ︸64

angewendet Das Ergebnis ersetzt

(P1 P2) Der so initialisierte Algorithmus wird auf den Klartext 0 0︸ ︷︷ ︸

64

angewendet Das Ergebnis

ersetzt (Pi Pi+1) Der so initialisierte Algorithmus wird auf den Klartext 0 0︸ ︷︷ ︸64

angewendet

Das Ergebnis ersetzt (S 1 S 2)

Auf kosten eines sehr aufwendigen Schlusselmanagment wird ein schneller Algorithmus er-reicht Fur Prozessoren mit wenig Speicher unpraktisch

341 Initialisierung

Teilschlusselmanagement Sehr viele Teilschlussel werden aus wenig Schlusselmaterial gene-riert

1 P und S werden mit einer Hexadezimal-Expansion von Pi initialisiert

2 Der Schlussel als Sequenz von 32-Bit-Werten wird mittels XOR auf die P-Box addiertwobei er eventuell ldquowiederholtrdquo wird um die ganze Lange der Box abzudecken P1 oplus K1P2 oplus K2 P18 oplus K18

3 Sowohl die P-Box als auch die S-Boxen werden verschlusselt

33

bull Verschlussle mit Blowfish den Nullstring rarr 64-Bit Ausgabe = 2 32-Bit = neueP1 P2

bull Verschlussle mit Blowfish (Pi Pi+1) die Ausgabe verwende als (Pi+2 Pi+3) Wieder-hole diesen Schritt fur i von 1 bis zum Ende der P-Boxbull Anschlieszligend S 10 S 11 rarr S 12 S 13 Im gleichen Verfahren wie bei der P-Box

werden die S-Boxen verschlusselt

Insgesamt ist so ein langer Vorlauf notig bevor die eigentliche Verschlusselung der Daten be-ginnt

342 Verschlusselung

In jeder Runde r (insgesamt 16 Runden) wird folgendes Verfahren angewendet

1 Der 64-Bit Eingabeblock wird in zwei 32-Bit-Halften L und R zerlegt

2 L = L oplus Pr R = R oplus f (L)f (L) ist dabei folgendermaszligen charakterisiert Zunachst wird das Argument L als Konka-tenation von 4 8-Bit Vektoren a b c und d aufgefasst die als naturliche Zahlen zwischen0 und 255 verwendet werden

f (a b c d) = ((S 1a + S 2b mod 232 oplus S 3c) + S 4d mod 232

3 L und R werden vertauscht konkateniert und als Eingabe fur die nachste Runde verwen-det

Nach der letzten Runde wird noch R = R oplus P17 und L = L oplus P18 durchgefuhrt

Aus der Wikipedia (unter GNU Free Documentation License)

Blowfish ist ein sehr schneller und nicht patentierter Algorithmus der besonders auf 32-Bit-Prozessoren eine exzellente Performance bietet Ein weiterer Vorteil ist seine variableSchlussellange von 32 bis zu 448 Bit Die Blockgroszlige betragt 64 Bit

bull In OpenSSL konnen Blowfish Verschlusselungen mit folgenden Befehlen aufgerufen wer-den

ndash -bfndash -bf-cbcndash -bf-cfbndash -bf-ecbndash -bf-ofbndash -blowfish

34

35 AES Advanced Encryption Standard

351 Wiederholung-Byteoperation

Wir hatten folgende Byteoperationen kennengelernt

bull Multiplikation mod 256 bzw mod 257 ohne 0

bull Addition mod 256

bull XOR-Addition (oplus)

Die Operationen werden in der dementsprechenden Basisdarstellung modulo 256 durchgefuhrt

352 Uberblick

AES wurde im Standard FIPS 197 festgeschrieben

Aus der Wikipedia (unter GNU Free Documentation License)

AES ist eine Block-Chiffre dessen Blocklange und Schlussellange unabhangig voneinanderdie Werte 128 192 oder 256 Bit erhalten kann Jeder Block wird zunachst in eine zweidimen-sionale Tabelle mit vier Zeilen geschrieben dessen Zellen ein Byte groszlig sind Die Anzahl derSpalten variiert somit je nach Blockgroszlige von 4 (128 Bit) bis 8 (256 Bit) Zum Beispiel fur 16Byte werden die Bytes wie folgt eingetragen

1 5 9 132 6 10 143 7 11 154 8 12 16

Jeder Block wird nun nacheinander bestimmten Transformationen unterzogen Aber anstattjeden Block einmal mit dem Schlussel zu verschlusseln wendet AES verschiedene Teile desSchlussels nacheinander auf den Klartext-Block an Die Anzahl dieser Runden (r) variiertund ist von Schlussellange (k) und Blockgroszlige (b) abhangig Je nach Blocklange b undSchlussellange k wird die Anzahl der Runden bestimmt (10 12 oder 14)

r b=128 b=192 b=256k=128 10 12 14k=192 12 12 14k=256 14 14 14

S-BoxenEine Substitutionsbox (S-Box) dient als Basis fur eine monoalphabetische Verschlusselung

35

Sie ist meist als Array implementiert und gibt an welches Byte wie getauscht wird DieS-Box in AES basiert auf einem mathematischen Zusammenhang und ist somit fest imAlgorithmus implementiert Doch dies ist kein Schwachpunkt da die S-Box lediglich zur Ver-mischung der Bytes in Kombination mit weiteren Operationen und dem Schlussel genutzt wird

Ablauf

bull Schlusselexpansion (nach Fips-197 S23 Kapitel 52)

Der Schlussel rsquokeyrsquo wird auf den Anfang des expandierten Schlussels rsquowrsquo ubernommen(i lt Nk) Danach berechnet sich w[i] wie folgt

w[i] =

w[i minus 1] i mod Nk 0S ubWord(RotWord(w[i minus 1])) oplus Rcon i mod Nk = 0S ubWord(w[i minus 1]) Nk gt 6i (mod N)k = 4

(1)

w[i] = w[i] oplus w[i minus Nk] (2)

Der zugehorige Quelltext (Fips-197 entnommen)

KeyExpansion(byte key[4Nk] word w[Nb(Nr+1)] Nk)

begin

word temp

i = 0

while (i lt Nk)

w[i] = word(key[4i] key[4i+1] key[4i+2] key[4i+3])

i = i+1

end while

i = Nk

while (i lt Nb (Nr+1)]

temp = w[i-1]

if (i mod Nk = 0)

temp = SubWord(RotWord(temp)) xor Rcon[iNk]

else if (Nk gt 6 and i mod Nk = 4)

temp = SubWord(temp)

end if

w[i] = w[i-Nk] xor temp

i = i + 1

end while

end

36

Fur Beispiele siehe Fips-197 Appendix A1

bull Vorrunde

ndash KeyAddition (XOR-des Rundenschlussels)

bull Verschlusselungsrunden

ndash Substitution - Jedes Byte b wird ersetzt durch bprime = 1b wie bei Polynommultiplikati-

on Weiter wird jedes Byte als ein 8-dimensionaler Vektor aufgefasst und folgendeOperation angewendet

b1b2

b8

=

1 0 0 0 1 1 1 11 1 0 0 0 1 1 11 1 1 0 0 0 1 11 1 1 1 0 0 0 11 1 1 1 1 0 0 00 1 1 1 1 1 0 00 0 1 1 1 1 0 00 0 0 1 1 1 1 0

middot

b1b2

b8

+

c1c2

c8

ndash ShiftRow - Erste Zeil wird nicht verschoben die zweite Zeil um eins die dritteZeile um zwei die vierte um drei (siehe Wikipedia)

ndash MixColumn - Zu jeder Spalten

b1b2b3b4

des Blocks wird folgende Polynommultiplika-

tion durchgefuhrt

(b1x3 + b2x3 + b3x + b4) middot (03X3 + 04X2 + 01X + 02) mod (X4 + 1)

und die Koeffizienten in gleicher Weise wieder in die jeweilige Spalte eingetragenWobei (X4 + 1) das Inverse (0BX3 + 0DX2 + 09X + DE) hat

ndash KeyAddition

bull Schlussrunde

ndash Substitutionndash ShiftRowndash KeyAddition

Fur die Entschlusselung gehe die oben angegebene Reihenfolge ruckwarts durch Beachtedabei dass ShiftRow und Subst vertauschbar sind Bei ShiftRow wird in umgekehrter Weiseverschoben Ebenso sind KeyAdd und MultColumn vertauschbar wenn der Rundenschlusselmodifiziert wird (B(X) lowast (S (X) oplus K(X)) = S (X) lowast B(X) oplus B(X) lowast K(X) also ist der modifiziertSchlussel B(X) lowast K(X)) Die Entschlusselung entspricht also der Verschlusselung mit modifi-zierten Schlusseln

37

353 mathematische Grundlagen

Speziell der Schritt Mix-Column beinhaltet einige interessante mathematische Uberlegungen Ersoll zu einer moglichst effektiven Vermischung der 32 Bit in jeder Spalte fuhren die die Suchevon dem unverschlusselten Text ahnlichen Mustern im verschlusselten Text erschwert Dabeiwerden arithmetische Operationen aus zwei algebraischen Gruppen angewandt

1 Die Gruppe der Bytes F82 Jedes Byte b7b6b0 wird als ein Polynom b7 middot X7 + b6 middot X6 +

b0 middot X0 angesehen Diese Polynome konnen addiert und multipliziert werden Damitdabei der Werteraum des Byte nicht verlassen wird finden diese Operationen modulom(X) = X8 + X4 + X3 + X +1 statt m ist dabei irreduzibel es gilt also ggT (b(X)m(X)) = 1fur jedes Byte b Somit ist F2[X]m(X) ein Korper und die Multiplikation ist abgeschlos-sen Es gilt fur jedes Paar von Bytes b c eindeutig b middot c = d rarr dc = b Multiplikationenkonnen also eindeutig ruckgangig gemacht werden so dass eine Entschlusselung moglichistBei Zahlen die groszliger als m(X) sind werden also durch die modulo Operation die Koeffi-zienten von x4 x3 x1 x0 verandertBeispiel in Magma

Q = IntegerRing(2)

Pltxgt = PolynomialRing(Q)

f=xˆ7+1

g=xˆ3+xˆ2+x+1

fg

fg mod(xˆ8 +xˆ4+xˆ3+x+1)

IsPrime(xˆ8 +xˆ4+xˆ3+x+1)

Ausgabe

xˆ10 + xˆ9 + xˆ8 + xˆ7 + xˆ3 + xˆ2 + x + 1

xˆ7 + xˆ6 + xˆ3 + xˆ2 + x

true

2 Die Gruppe der Worter F4256 Die 4 Bytes einer Spalte w3w2w1w0 werden wieder als Po-

lynom aufgefasst w3 middot X3 + w2 middot X2 + w1 middot X + w0 Diese konnen wieder multipliziertund addiert werden wobei die arithmetischen Operationen auf den jeweiligen Bytes in F8

2stattfinden Die Operationen in F4

256 werden modulo M(X) = X4 + 1 ausgefuhrt M(X) istzwar nicht irreduzibel aber da der Algorithmus nur eine beschrankte Gruppe von Operan-den verwendet bleiben auch hier alle Operationen invertierbar

Mix-Column multipliziert (in F4256) nun jede Spalte mit c(X) = 3 middot X3 + X2 + X + 2 Die so

beschriebene lineare Funktion erreicht beweisbar eine groszlige Diffusion der Eingabe

38

bull In OpenSSL konnen AES Verschlusselungen mit folgenden Befehlen aufgerufen werden

ndash -aes-128-cbcndash -aes-128-cfbndash -aes-128-ecbndash -aes-128-ofbndash -aes-192-cbcndash -aes-192-cfbndash -aes-192-ecbndash -aes-192-ofbndash -aes-256-cbcndash -aes-256-cfbndash -aes-256-ecbndash -aes-256-ofbndash -aes128ndash -aes192ndash -aes256

36 RC4 Ronrsquos Cipher 4

Geheimes Chiffreverfahren mit Strom-Chiffre von Ron Rivest 1987 Entstehungsjahr 1994 imNetz aufgetaucht 1999 tauchte im Internet ein Draft ARCFOUR (ARC4) auf der die gleichenErgebnisse lieferte

Byte orientiert zwei Bytes m k dann wird berechnetm oplus k = cDer Algorithmus basiert auf S-Boxen (Permutationen)

mdashmdashSkizze Seite 2b ganz oben

PRG (Pseudo Random Generator)mdashmdashweitere Skizze

Initialisierung K = L Bytes als Schlussel s[i] = i (identische Permutation)L = 1255 fur RC4 mit 40-Bit L = 5 mit 64-Bit L = 8 mit 128-Bit L = 16j = 0 fur i = 0255rarr j = ( j + s[i] + K[ j mod L]) mod 256

Problem K-Masterkeyrarr salted key Initialwert (frei bekannt) HashInitial(K) = Kaktuell rarr RC4

39

Anfangsstucke von PRG RC4 sind nicht rdquorichtig zufalligldquo verraten viel uber KaktuellRegel fur RC4 Die ersten 256-Byte wegschmeiszligen

Aus der Wikipedia (unter GNU Free Documentation License)

RC4 (Ronrsquos Cipher 4) ist ein fur Software optimierter Stromchiffrierer welcher zur Ver-schlusselung von Daten eingesetzt wird Er wurde 1987 von Ronald L Rivest fur RSA DataSecurity Inc (heute RSA Security) entwickelt

Der Algorithmus war sieben Jahre lang geheim (ldquosecurity by obscurityrdquo) bis 1994 derQuellcode anonym veroffentlicht wurde

RC4 hat im Gegensatz zu DES eine variable Schlussellange Die Schlussellange kann biszu 2048 Bit betragen RC4 verschlusselt immer ein Byte auf einmal

Er besteht aus einer so genannten S-Box die sich wahrend der Verschlusselung fortlau-fend andert Diese wird durch ein Passwort initialisiert das fur jede Verschlusselung einmaligsein muss Jedes Klartextzeichen wird XOR mit einem bestimmten vom Paszligwort abhangi-gen Zeichen aus der S-BOX verknupft Theoretisch sind somit ca 2 hoch 1700 verschiedeneZustande moglich

Der Algorithmus ist sehr kompakt und funf- bis zehnmal schneller als der weitverbreite-te DES Deshalb findet der RC4 Algorithmus in einigen Echtzeit-Systemen Anwendung wiebeispielsweise Mobilfunk (Cellular Digital Packet Data) SSH (Secure Shell) WLAN (Wire-less LAN) oder den Dateiverschlusselungs-Programmen SecurePC und Cryptext Die Verar-beitungsgeschwindigkeit des DES ist jedoch selbst in kleinsten Mikrokontrollern meist ausrei-chend Der Schlussel beim DES und anderen Blockchiffren wie dem AES (CBC-Mode) kannim Gegensatz zum RC4 auch mehrfach verwendet werden Vergleichbare Stromchiffren wieSEAL sind vergleichbar schnell und gelten als sicher

Aus der Wikipedia (unter GNU Free Documentation License)

ubersetzt aus dem Englischen nach httpenwikipediaorgwikiRC4RC4 (oder ARCFOUR) ist die am weitesten verbreitete Stromchiffre und wird in vielen be-kannten Protokollen beispielsweise SSL oder WEP verwendet Trotzdem entspricht RC4 nichtmehr dem heutigen Sicherheitsstandard und manche Verwendungsweisen von RC4 fuhren zusehr unsicheren Kryptosystemen (zB WEP) Daher wird es nicht fur die Verwendung in neuenSystemen empfohlen Allerdings gibt es auch RC4-basierte Systeme die sicher genug fur denpraktischen Gebrauch sind

361 Geschichte

Aus der Wikipedia (unter GNU Free Documentation License)

ubersetzt aus dem Englischen nach httpenwikipediaorgwikiRC4RC4 wurde 1987 von Ron Rivest von RSA Security erfunden Offiziell bedeutet die Abkurzung

40

ldquoRivest Cipher 4rdquo alternativ wird sie aber als ldquoRonrsquos Coderdquo verstanden (s auch die anderenRC-Algorithmen) Zunachst war RC4 ein Betriebsgeheimnis jedoch wurde im September1994 eine Beschreibung anonym auf der ldquoCypherpunksrdquo Mailingiste gepostet Es wurde baldin die scicrypt newsgroup weitergepostet und von dort auf viele Internet-Seiten verbreitetNachdem der Algorithmus nun bekannt ist ist er kein Betriebsgeheimnis mehr Der NameldquoRC4rdquo unterliegt jedoch weiterhin dem Markenschutz Zur Zeit sieht es so aus als seien ldquoinof-fiziellerdquo Implementationen zwar legal konnen aber nicht den Namen ldquoRC4rdquo verwenden Umdieses Problem zu umgehen wird RC4 oft als ldquoARCFOURrdquo bezeichnet RC4 wird inzwischenin einigen weit verbreiteten Verschlusselungsprotokollen und Standards unter anderem WEPund WPA fur WLAN Karten und SSL verwendet

362 Beschreibung

Aus der Wikipedia (unter GNU Free Documentation License)

ubersetzt aus dem Englischen nach httpenwikipediaorgwikiRC4RC4 generiert einen pseudo-zufalligen Bitstrom (einen ldquoSchlusselstromrdquo) der bei der Ver-schlusselung mit dem Klartext mittels XOR verknupft wird Die Entschlusselung funktioniertgenauso Um den Schlusselstrom zu generieren benutzt die Chiffre einen internen Zustand deraus zwei Teilen besteht

1 eine Permutation aller 256 moglichen Bytes (wird im Folgenden als S bezeichnet)

2 zwei 8-Bit Index-Zeiger (mit i und j bezeichnet)

Die Permutation wird mit einem Schlussel von variabler Lange ublicherweise zwischen 40und 256 Bit initialisiert wobei der Schlusselerzeugungs-Algorithmus verwendet wird An-schlieszligend wird der Bit Strom durch den Pseudo-Zufalls-Algorithmus generiert

363 Der Pseudo-Zufalls-Algorithmus

Aus der Wikipedia (unter GNU Free Documentation License)

ubersetzt aus dem Englischen nach httpenwikipediaorgwikiRC4In jeder Iteration wird der Zustand verandert und ein Byte des Schlusselstroms ausgegebenDabei wird i inkrementiert der Wert von S an der Stelle i auf j addiert S [i] und S [ j] vertauschtund der Wert von S an der Stelle S [i]+S [ j] mod 256 ausgegeben Jeder Wert von S wird dabeimindestens einmal alle 256 Iterationen vertauscht In Pseudocode lasst sich der Algorithmusfolgendermaszligen darstellen

i = 0

j = 0

41

while GeneratingOutput

i = (i + 1) mod 256

j = (j + S[i]) mod 256

swap (S[i] S[j])

output (S[(S[i] + S[j]) mod 256])

(Wobei i offentlich ist und j geheim ist)

i j

0 1 2 S[i]+S[j] i j 253 254 255

S

S[i] S[j]

S[i]+S[j]K

(Quelle httpdewikipediaorgwikiBildRC4svg)

364 Der Schlusselerzeugungs-Algorithmus

Aus der Wikipedia (unter GNU Free Documentation License)

ubersetzt aus dem Englischen nach httpenwikipediaorgwikiRC4Der Schlusselerzeugungs-Algorithmus wird benutzt um die Permutation in S zu initialisierenl wird als die Zahl der Bytes des Schlussels definiert und kann zwischen 1 und 255 liegenublicherweise liegt l zwischen 5 und 32 so dass eine Schlussellange von 40 bis 128 Bit zu-stande kommt Zunachst wird S mit der Identitatspermutation initialisiert Anschlieszligend wirdS in 256 Iterationen mit einem Algorithmus der dem Pseudo-Zufalls-Algorithmus ahnelt aberzusatzlich die Schlusselbits hineinmischt weiterverarbeitet Der folgende Pseudocode drucktdies aus

for i from 0 to 255

S[i] = i

j = 0

for i from 0 to 255

42

j = (j + S[i] + key[i mod l]) mod 256

swap(S[i]S[j])

365 Implementation

Aus der Wikipedia (unter GNU Free Documentation License)

ubersetzt aus dem Englischen nach httpenwikipediaorgwikiRC4Viele Stromchiffren basieren auf ldquolinear feedback shift registersrdquo und sind damit sehr effizientin Hardware aber weniger effizient in Software implementierbar RC4 hat dieses Manko nichtund kommt zudem ausschlieszliglich mit 8-Bit Operationen aus Damit ist RC4 ideal fur Software-Implementationen

366 Sicherheit

Aus der Wikipedia (unter GNU Free Documentation License)

ubersetzt aus dem Englischen nach httpenwikipediaorgwikiRC4RC4 verfehlt die ublichen Standards fur sichere Chiffren an mehreren Stellen und wird somitnicht zur Verwendung in neuen Anwendungen empfohlen Der von RC4 generierte Schlussel-strom tendiert dazu bestimmte Sequenzen von Bytes haufiger zu enthalten als andere undist somit nicht wirklich zufallig Der beste Angriff der auf diesem Sachverhalt beruht wur-de von Fluhrer und McGrew entdeckt und kann aus einem Gigabyte verschlusseltem Textden Schlusselstrom berechnen Zudem verwendet RC4 keine ldquononcerdquo einen fur jeden Klar-text neu generierten Zusatzschlussel Eine solche ldquononcerdquo wird im allgemeinen als zentralesSicherheitskriterium betrachtet da so gewahrleistet ist dass eine zweimal nacheinander ver-schlusselte Nachricht zwei verschiedene verschluesselte Texte erzeugt Naturlich kann einesolche ldquononcerdquo im Nachhinein aufgesetzt werden indem als RC4-Schlussel nicht der eigentli-che Benutzerschlussel sondern beispielsweise ein Hashwert des Schlussels mit einer nonce ver-wendet wird Die einfachere Methode den Schlussel nur mit der nonce zu konkatenieren dievon einigen Anwendungen genutzt wird fuhrt aufgrund des schwachen Schlusselerzeugungs-Algorithmus wieder zu neuen Problemen

To do anmerkungen zu k=1-Angriffsmoglichkeiten

43

367 Fluhrer Mantin und Shamir Angriff

Aus der Wikipedia (unter GNU Free Documentation License)

ubersetzt aus dem Englischen nach httpenwikipediaorgwikiRC42001 wurde eine erstaunliche Entdeckung gemacht Die statistische Verteilung der ersten paarBytes des Schlusselstroms ist uber alle RC4-Schlussel stark nicht-zufallig und enthalt Infor-mationen uber den Schlussel selbst Falls die nonce lediglich mit dem Schlussel konkateniertwurde (oder gar keine nonce verwendet wurde) kann der Schlussel durch die Analyse einergroszligen Zahl verschlusselter Nachrichten herausgefunden werden Mit Hilfe dieses Sachver-haltes und einiger damit zusammenhangender Effekte wurde dann die WEP-Verschlusselung(ldquowireless equivalent privacyrdquo) die in 80211 WLAN-Netzen verwendet wird gebrochen Diesfuhrte zu einer Suche nach einem Ersatz fur WEP und letztlich zu den Bemuhungen um 80211isowie zu WPA

Der geschilderte Angriff kann naturlich umgangen werden wenn die ersten (ca 256) Bytes desSchlusselstroms verworfen werden

bull In OpenSSL konnen RC4 Verschlusselungen mit folgenden Befehlen aufgerufen werden

ndash -rc4ndash -rc4-40

37 RC5 Ronrsquos Cipher 5

Die zentrale Neuerung des RC5-Algorithmus sind datenabhangige Rotationen bei denen einZwischenergebnis um eine Zahl von Bytes rotiert wird die weder fest vorgegeben noch vomSchlussel bestimmt sondern aus einem Teil des Klartextes berechnet ist Diese Operation wirdfolgendermaszligen notiert a ltltlt b bedeutet dass a um b Bits nach links rotiert wird Ein weitererinteressanter Aspekt ist die universelle Parametrisierbarkeit des Algorithmus Sowohl die Langeder Worter w als auch die Zahl der Runden r und die Lange des Schlussels b sind wahlbar sodass der Algorithmus offen ist fur zukunftige Bedurfnisse die weitere Operation + wird nun alsAddition modulo 2w definiert In openssl ist RC5 mit den Parameters w = 32 r = 12 b = 16 im-plementiert Samtliche Algorithmen gehen im folgenden von einer little-endian Byte-Anordnungaus Der Algorithmus besteht aus einem Verschlusselungs- und einem Schlusselexpansions-Teil

371 Verschlusselung

Gegeben ein auf t = 2(r + 1) Worter expandierter Schlussel S und ein aus zwei Wortern A undB bestehender Eingabeblock gibt folgender Pseudocode den Verschlusselungs-Algorithmus an

44

A = A + S[0]

b = B + S[1]

for i = 1 to r do

A = ((A XOR B) ltltlt B) + S[2i]

B = ((B XOR A) ltltlt A) + S[2i + 1]

Die Entschlusselung lauft dementsprechend folgendermaszligen ab

for i = r downto 1 do

B = ((B - S[2i + 1]) gtgtgt A) XOR A

A = ((A - S[2i]) gtgtgt B) XOR B

A = A - S[0]

B = B - S[1]

372 Schlusselexpansion

Zunachst wird S mit einer Kombination aus e und ϕ (dem goldenen Schnitt) initialisiert und derSchlussel in ein Array L kopiert das wortweise indiziert wird Anschlieszligend wird mit folgendemAlgorithmus der Schlussel in S hinein gemischt

i = j = 0

A = B = 0

do 3 max(t 8bw) times

A = S[i] = (S[i] + A + B) ltltlt 3

B = L[j] = (L[j] + A + B) ltltlt (A + B)

i = (i+1) mod t

j = (j+1) mod (8bw)

38 GOST 28147-89 Gosudarstvennyi Standard Soyuza SSR nicht inOpenSSL

GOST ist das russische Normungsinstitut vergleichbar mit DIN oder ANSI

(siehe auch httpenwikipediaorgwikiGOST_(block_cipher))

Gost-Chiffre ist eine relativ simple Feistel-Chiffre auf 64 Bit mit 32 Runden 256 Bit Schlussellangeund 8 S-Boxen von zusammen 512 Bit die - da sie geheim gehalten werden konnen - alsSchlusselerweiterung gelten konnen Die Rundenfunktion besteht aus der Addition eines 32-Bit-Substrings des Schlussels der Anwendung der S-Boxen (parallel da jede S-Box 4 Bit alsEin- und Ausgabe hat) und einer 11-Bit-Rotation Die Sicherheit des Algorithmus beruht auf

45

der Verwendung sehr langer Schlussel geheimer S-Boxen und der gegenuber DES verdoppeltenRundenzahl In jeder einzelnen Runde wird jedoch ein geringerer Durchmischungseffekt erreichtals bei DES-Runden

Geheimer Algorithmus S-Boxen auch geheim

(Quelle httpenwikipediaorgwikiImageGOSTDiagrampng)

46

Feistel Chiffre

Addition Substitution Rotation

Die S-Boxen sind Gruppenschlussel die extra zugewiesen werden16 4 Bit Werte werden Permutiert 32 RundenSchlusselmaterial 32 die 256 Bit werden jeweils in 8 32 Bit Unterschlussel eingeteilt wobei dieSchlussel wie folgt verwendet werden1234567123456712345677654321

(Dann einmal S-Box einmal rotieren und dann Feistelschritt)

Die Sicherheit steckt in den 32 Runden Der Algorithmus wurde bisher nicht geknackt

39 FazitWie konnte bei einen Symmetrischen Algorithmus die Sicherheiterhohen

(Das ware zB fur eine Interessante Frage fur eine Klausur)

bull komplexes Schlusselmanagment

bull viele Runden

bull komplexe vermischung pro Runde (AES)

4 Asymmetrische Verschlusselungsverfahren

41 Einfuhrung

AliceBob Chris Dave Eve

Alice BobkA kA

Enck1(M) = C minusrarr M = Deck2

Verschlusselungsverfahren kA kB EncDecAus kA kann kB nicht bestimmt werden dann kann kA sogar offentlich sein Ziel ist es dass je-

47

der verschlusseln kann aber nur einer kann (in realistischer Zeit) entschlusseln Solche Verfah-ren mit offentlichen Schlussel werden auch asymmetrisch genannt Mit groszligen Aufwand kannnaturlich der Schlussel immer noch bestimmt werden Man wahlt einen Text mprime Verschlusseltihn (Enck(mprime) = cprime) und probiert dann solange alle k durch bis man Deck(cprime) = mprime erhalt

Das kB kann aber immer bestimmt werden

for k_B =00000 to FFFF

M_0 C_0 sind gegeben

Dec_k_B(C_0) = M_0

Wichtig ist nur das dies nicht in rsquovernunftigerrsquo Zeit gemacht werden kann

To do text sortieren

Klartext minusrarr E(K) ChiffretextKlartext D(Kprime)larrminus ChiffretextE(K p) = c und zu jedem KexistKprime mit D(Kprime c) = p und K wird offentlich gemachtDie Berechnung von Kprime aus K ist schwer Bruteforce ist nicht ausgeschlossen die Bestimmungvon K aus Kprime ist leicht

leichtEnckA DeckB (kA kB)minusErzeugung

schweraus kA allein kB erzeugen

411 Beispiel

Bob mochte von Alice verschlusselte Nachrichten lesen Bob uberlegt sich ein asymmetrischesVerfahren wahlt Kprime berechnet K und veroffentlicht KAlice nimmt K berechnet E(K p) = c und sendet c an BobBob berechnet aus c mit Kprime das ursprungliche p

42 Geschichte

Whitfield Diffie New Directions in Cryptographie Idee wurde auch schon mal von Ralf Merkelveroffentlich Britische Geheimdienst hatt vorher die Idee auch schon mal

48

Aus der Wikipedia (unter GNU Free Documentation License)

Asymmetrische Verfahren sind ein relativ neues Gebiet der Kryptografie Eine wichtige Vorar-beit fur die asymmetrischen Verfahren sind die Arbeiten von Whitfield Diffie Martin Hellmanund Ralph Merkle zum geheimen Schlusselaustausch Anfang der 1970er Jahre Im Sommer1975 veroffentlichten Diffie und Hellman eine Idee zur asymmetrischen Verschlusselung oh-ne jedoch ein genaues Verfahren zu kennen

Anfang der 1970er Jahre wurden von Ellis Cocks und Williamson ein dem spateren Ver-fahren von Diffie-Hellman ahnliches asymmetrisches Verfahren entwickelt welches aber inseiner wirtschaftlichen Bedeutung nicht erkannt und aus Geheimhaltungsgrunden nicht (wis-senschaftlich) publiziert und auch nicht zum Patent angemeldet wurde Alle drei waren Mitar-beiter des englischen Government Communications Headquarters

Der Durchbruch gelang Ronald L Rivest Adi Shamir und Leonard M Adleman die 1977das RSA-Verfahren entwickelten Es gilt bis heute als sicheres Verfahren und hat auszligerdem dengroszligen Vorteil in beiden Richtungen eingesetzt werden zu konnen

43 Einige Theoretische Grundlagen

431 Kleiner Fermat (oder kleiner Fermatrsquoscher Satz)

Fur beliebige Primzahlen p gilt

n(pminus1) = 1 mod p fur alle n isin Z

To do Wikipedia verlinken

432 Euklidischer Algorithmus

To do erganzen Erweiterter Euklidischer Algorithmus fehlerhaft

Aus der Wikipedia (unter GNU Free Documentation License)

Beschreibung durch PseudocodeIm Folgenden wird der moderne Euklidische Algorithmus sowohl in einer rekursiven als

auch einer iterativen Variante beschrieben Dabei sind a und b jeweils die beiden Zahlen derengroszligter gemeinsamer Teiler berechnet werden soll

Rekursive Variante

49

EUCLID(ab)

1 wenn b = 0

2 dann return a

3 sonst return EUCLID(b a mod b)

Iterative Variante

EUCLID(ab)

1 solange b = 0

2 r = a mod b

3 a = b

4 b = r

5 return a

FunktionsweiseIn jedem Schritt des Algorithmus wird eine Division mit Rest ausgefuhrt riminus1 = qi+1 middot

ri + ri+1 0 le ri+1 lt ri Die Division mit Rest hat die Eigenschaft dass ggT(riminus1 ri) =

ggT(ri ri+1) giltIm letzten Schritt des Algorithmus rnminus1 = qn+1 middot rn + 0 ist rn+1 = 0 und es gilt deshalb

ggT(rnminus1 rn) = ggT(rn 0) = rn

Da im ersten Schritt riminus1 = a und ri = b war ist ggT(a b) = rn

(Quelle httpdewikipediaorgwikiEuklidischer_Algorithmus)

(Denn es gilt ggT(a b) = ggT(b r))

Aus der Wikipedia (unter GNU Free Documentation License)

Man kann diese Rekursion in folgende Abfolge von Schritten fur den erweiterten euklidi-

schen Algorithmus fassen Erhalte rdquoardquo und rdquobrdquo als EingabeSetze rdquok=0rdquo r0 = a r1 = b s0 = 1 und s1 = 0WiederholeErhohe rdquokrdquo um einsBestimme den ganzzahligen Quotienten qk = rkminus1 div rkSetze rk+1 = rkminus1 minus qk middot rk und sk+1 = skminus1 minus qk middot skbis rk+1 = 0 giltGib den Rest rk = ggT(a b) und die Zahl sk mit ggT(a b) equiv sk middot a (mod b) zuruckJeder Schritt enthalt implizit auch einen Multiplikator tk = (rk minus sk middot a) div b wobei diese

Division keinen Rest lasst Die Folge (tk)k kann auch explizit bestimmt werden es gelten t0 =

0 t1 = 1 und tkminus1 equiv qk middottk+tk+1 Nach dem letzten Schritt ergibt sich nun ggT(a b) = sk middota+tk middotbDer Ubersicht halber werden beim handischen Rechnen auch noch die Hilfsfolgen (ak =

rkminus1)k und (bk = rk)k sowie (uk = skminus1)k sowie (vk = tkminus1)k mitgefuhrt

50

Zur Berechnung des Inversen modulo einer Restklasse benotigt man die tk aber nicht und kannsie ignorieren

Aus der Wikipedia (unter GNU Free Documentation License)

Rekursive VarianteFur den erweiterten euklidischen Algorithmus existiert auch eine rekursive Variante die

durch den folgenden Pseudocode gegeben istab zwei Zahlen fur die der erweiterte euklidische Algorithmus durchgefuhrt wirdrdquoextended euclidrdquo(ab)1 rdquorsquowennrdquorsquo b = 02 rdquorsquodann returnrdquorsquo (a10)3 (drsquosrsquotrsquo)larr rdquoextended euclidrdquo(b a mod b)4 (dst)larr (drsquotrsquosrsquo - floor(ab)trsquo)5 rdquorsquoreturnrdquorsquo (dst)

(Quelle httpdewikipediaorgwikiErweiterter_euklidischer_Algorithmus)

Wenn n mod m teilerfremd sind dann existiert so ein Exponent f so dass

n f equiv 1 mod m

ist

Wenn m = m1 middotm2 ein Produkt von zwei verschiedenen Primzahlen ist dann ist fur alle n die zum teilerfremd sind

n(m1minus1)middot(m2minus1) equiv 1 mod m

Denn es ist nm1minus1 equiv 1 mod m1 und nm2minus1 equiv 1 mod m2 Dann ist n(m1minus1)middot(m2minus1) minus 1 durch m1und m2 teilbar Denn nach dem Chinesischen Restsatz gilt n(m1minus1)middot(m2minus1) equiv 1 mod m1 middot m2 undwenn eine Zahl durch m1 middot m2 teilbar ist so auch durch m1 und m2

433 Beispiel

In Magma

p=17 q=23

m=(p-1)(q-1)

e=19

F=IntegerRing(m)

51

d=(Fe)ˆ(-1)

d=IntegerRing()d

19315 div 16

19315 -374 16

n=pq

K=IntegerRing(n)

N=100

C=(KN)ˆ(e) Verschlusseln

C

Cˆd

10019 equiv 349 mod 349

349352 equiv 100 mod 391

10019middot315 = 100 mod 17

10019middot315 = 100 mod 23

10019middot315 equiv 100374middot16+1 mod 17 equiv 100 middot (10016)374︸ ︷︷ ︸=1

mod 17

To do Analog von Mathias kopieren

To do Wiederholung einsortieren

Wiederholung

Nachricht n

ne equiv c( mod m)

Chiffre c

cd equiv (ne)d = ndmiddote = n1+k(pminus1)(qminus1) = n middot (n(pminus1)(qminus1))k︸ ︷︷ ︸=1

equiv n middot 1k = n mod m

nminusrarr

dm cminusrarr

em n

52

aus (em) kann man (dm) nicht leicht bestimmen weil man die Zerlegung m = p middotq nicht kenntWer p q kennt kann aus den einen den anderen Schlussel berechnen Wer de kennt kann pqbestimmen

Verschlusselung kann jeder ausfuhren offentlicher Schlussel (em) Entschlusselung bleibt demvorbehalten der das geheime d (oder auch pq) kennt

schnelles Potenzieren Ist die Berechung von ne ck ausreichend schnell

m 1000 Bit pq-150 Dezimalstellen

ne hat sehr sehr viele Dezimalstellen

Deshalb berechnet man erst modulo und potenziert dann mit e

(n mod m)e (c mod m)d

Beispiele n19 = n middot n middot middot n︸ ︷︷ ︸19 Multiplika-tionen

oder man rechnet

n n2 n4 n8 n16 4 Quadrierungen

n16 middot n2 middot n = n19

so auch bei n1025 = n n2 n1024 n middot n1024 wo nur 11 Multiplikationen gebraucht werden

Pseudocode nex=1

repeat

if (e = 1 mod 2)x = x middot n(prime mod mprime)

n = n2(prime mod mprime)

e = ediv2

until e==1

k = (nprime)0 middot xprime

x = k = ne

53

44 RSA Rivest Shamir Adleman

Bei dem Versuch die Idee der Asymmetrischen Kryptografie zu wiederlegen wurde RSA entwi-ckelt

RSA beruht auf der Schwierigkeit n = p middotq in seine Primfaktoren zu zerlegen Verschlusseln undEntschlusseln ist Potenzieren modulo n

D E = id

p = (pe)d mod n

p = pemiddotd mod n

e middot d = 1 mod (p minus 1) middot (q minus 1)

E(e n) ist offentlich und D(d n) geheim Die Bestimmung von e d n aus p q ist leicht GenauerDie Bestimmung von e aus (d n) ist leicht die Bestimmung von d aus (e n) ist schwer weilFaktorisierung n = p middotq (vermutlich) schwierig ist ist Bestimmung von d aus (e n) auch schwerWer p und q aus n berechnen kann kann auch d bestimmen (Euklid)

Wer e und d kennt kann p und q bestimmen (dazu waren Erlauterungen in der Vorlesung)

441 Funktionsweise des RSA-Verfahrens

(nach wwwcryptooldedownloadsCrypToolScript 1 3 04 depdf)Man kann die Einzelschritte zur Durchfuhrung des RSA-Verfahren folgendermaszligen beschrei-ben Schritt 1 bis 3 sind die Schlusselerzeugung Schritt 4 ist die Verschlusselung 5 die Ent-schlusselung

1 Wahle zufallig 2 verschiedene Primzahlen p und q und berechne n = p middot q Der Wert nwird als RSA-Modul bezeichnet

2 Wahle zufallig e isin 2 n minus 1 so dass gilt e ist teilerfremd zu J(n) = (p minus 1) middot (q minus 1)Zum Beispiel kann man e so wahlen dass gilt max(p q) lt e lt J(n) minus 1 Danach kannman p und q ldquowegwerfenrdquo

3 Wahle d isin 1 n minus 1 mit e middot d = 1 mod J(n) dh d ist die multiplikative Inverse zu emodulo J(n) Danach kann man J(n) ldquowegwerfenrdquo

bull (n e) ist der offentliche Schlussel Pbull (n d) ist der geheime Schlussel S (es ist nur d geheim zu halten)

4 Verschlusselung des Klartextes (bzw seiner Blocke) M isin 1 n minus 1

C = E((n e) M) = Me mod n

54

5 Entschlusselung des Chiffretextes (bzw seiner Blocke) C isin 1 n minus 1

M = D((n d) C) = Cd mod n

442 Beweis der Funktionsweise

(nach wwwcryptooldedownloadsCrypToolScript 1 3 04 depdf)Fur Schlusselpaare (n e) und (n d) die die in den Schritten 1 bis 3 des RSA-Verfahrens festge-legten Eigenschaften besitzen muss fur alle M lt n gelten M equiv (Me)d mod n wobei (Me)d =

Memiddotd Das heiszligt der oben angegebene Dechiffrieralgorithmus arbeitet korrekt Wir zeigen das in3 Schritten

1 Im ersten Schritt zeigen wir Memiddotd equiv M mod p Dies ergibt sich aus den Voraussetzungenund dem Satz von Fermat Da n = p middot q und J(p middot q) = (p minus 1) middot (q minus 1) und da e undd so gewahlt sind dass e middot d equiv 1 mod J(n) gibt es eine ganze Zahl k so dass gilte middot d = 1 + k middot (p minus 1) middot (q minus 1)

Memiddotd equiv M1+kmiddotJ(n) equiv M middot MkmiddotJ(n) equiv M middot Mkmiddot(pminus1)middot(qminus1) mod p

equiv M middot (Mpminus1)kmiddot(qminus1) mod p

(aufgrund des kleinen Fermat Mpminus1 equiv 1 mod p)

equiv M middot (1)kmiddot(qminus1) mod p

equiv M mod p

Die Voraussetzung fur die Anwendung des kleinen Fermat war dass M und p teilerfremdsind Da das im allgemeinen nicht gilt mussen wir noch betrachten was ist wenn M undp nicht teilerfremd sind da p eine Primzahl ist muss dann notwendigerweise p ein Teilervon M sein Das heiszligt aber

M equiv 0 mod p

Wenn p die Zahl M teilt so teilt p erst recht Memiddotd Also ist auch

Memiddotd equiv 0 mod p

Da p sowohl M als auch Memiddotd teilt teilt es auch ihre Differenz (Memiddotd minus M) equiv 0 mod pUnd damit gilt auch in diesem Spezialfall unsere zu beweisende Behauptung

2 Vollig analog beweist man Memiddotd equiv M mod q

3 Nun fuhren wir die Behauptungen der ersten beiden Schritte zusammen fur n = p middot qum zu zeigen Memiddotd equiv M mod n fur alle M lt n Nach den ersten beiden Schritten gilt(Memiddotd minus M) equiv 0 mod p und (Memiddotd minus M) equiv 0 mod q also teilen p und q jeweils dieselbeZahl z = (Memiddotd minus M) Da p und q verschiedenen Primzahlen sind muss dann auch ihrProdukt diese Zahl z teilen Also gilt

(Memiddotd minus M) equiv 0 mod p middot q

55

oderMemiddotd equiv M mod p middot q

oderMemiddotd equiv M mod n

45 Schwachen von RSA

bull Wenn N Nachrichten aus einer kleinen Menge gewahlt werden ist RSA unsicher

for Nprime do (Nprime)e = C1 if C1 = C then N = Nprime

bull Wenn N und e zu klein sind ist RSA unsicher dass heiszligt wenn Ne als Zahl kleiner als nist so das nich modulo gekurzt wird so kann man einfach eradicc

bull Angriff mit frei gewahlten Chiffretext angenommen man hat Zugriff auf die Verschlusse-lungsmaschine so dass man mit selber vorgebenen Cprime Nprime berechnen kann (Cprime minusrarr Nprime)

Re = S mod n S d = R mod n Cprime = S middotC

(Cprime)d = S d middotCd = R middot N︸︷︷︸Nrsquo

mod n

Nprime middot Rminus1 = N mod n

N1 minusrarr C1

N2 minusrarr C2

rArr N1 middot N2 minusrarr C1 middotC2

bull Jeder Benutzer braucht ein eigenes n dass heiszligt man muss fur jeden Benutzer die entspre-chenden Primzahlen suchen allerdings ist dies aufwendig

bull RSA ist extrem langsam im Vergleich zu symmetrischen Verfahren openssl speed rsabzw speed aes-256

46 Fuktionen in OpenSSL

461 genrsa

genrsa erzeugt Schlusselpaare fur RSASchlussellange num_bits frei wahlbar wobei es einen Bug bei kleinen Werten gibt (weniger als60 Bit) so kurze Schlussel aber auch nicht verwendet werden solltenOptionen

usage genrsa [args] [numbits]

-out file output the key to file

-passout arg output file pass phrase source

56

-f4 use F4 (0x10001) for the E value

-3 use 3 for the E value

-des encrypt the generated key with DES in cbc mode

-des3 encrypt the generated key with DES in ede cbc mode (168 bit key)

-idea encrypt the generated key with IDEA in cbc mode

-aes128 -aes192 -aes256 encrypt PEM output with cbc aes

-engine e use engine e possibly a hardware device

-rand filefile load the file (or the files in the

directory) into the random number generator

462 rsa

rsa gibt den public-key zu gegebenen private-key aus Auszligerdem auch weitere Informationenwie verwendeter Modulus Mit rsa kann auch ein gegebener key neu verschlusselt abgespeichertwerden

rsa [options] ltinfile gtoutfile

where options are

-in arg input file

-out arg output file

-pubin expect a public key in input file

-pubout output a public key

-passin arg input file pass phrase source

-passout arg output file pass phrase source

-text print the key in text

-noout donrsquot print key out

-modulus print the RSA key modulus

-check verify key consistency

-des encrypt PEM output with cbc des

-des3 encrypt PEM output with ede cbc des using 168 bit key

-idea encrypt PEM output with cbc idea

-aes128 -aes192 -aes256 encrypt PEM output with cbc aes

-inform arg input format - one of DER NET PEM

-outform arg output format - one of DER NET PEM

57

-sgckey Use IIS SGC key format

-engine e use engine e possibly a hardware device

463 rsautl

Mit rsautl konnen Dateien ver- oder entschlusselt und signiert oder verifiziert werden

Usage rsautl [options]

where options are

-in file input file

-out file output file

-inkey file input key

-pubin input is an RSA public

-certin input is a certificate carrying an RSA public key

-sign sign with private key

-verify verify with public key

-encrypt encrypt with public key

-decrypt decrypt with private key

-hexdump hex dump output

-pkcs use PKCS1 v15 padding (default)

-oaep use PKCS1 OAEP

-ssl use SSL v2 padding

-raw use no padding

-keyform arg private key format - default PEM

-passin arg pass phrase source

-engine e use engine e possibly a hardware device

464 PKCS

spater noch ausfuhrlicher hier nur kurz die Verwendung bei RSA

Padding beginnt mit 0002 endet mit 00 und dann kommt der Chiffretext

58

465 OAEP - Optimal Asymmetric Encryption Padding

Normalerweise wird mit RSA nur ein Schlussel fur eine symmetrische Verschlusselung ver-schlusselt da RSA verglichen mit symmetrischen Algorithmen sehr langsam ist

Bemerkung Vergleichen mit speed rsa und speed aes (siehe History 21012009)

Ist die so festgelegte Lange des Klartextes erheblich kleiner als die des RSA-Schlussels so ist einAuffullen der restlichen Bits notig Die implizite Methode (beim Betrachten des Klartextes alsZahl) einfach 0en einzusetzen empfiehlt sich nicht da die Zusatzinformation die ein Angreiferso uber den Klartext bekommt das Decodieren des geheimen Schlussels vereinfacht

Beim Padding soll diese Gefahr verringert werden Per default wird bei openssl PKCS benutztAllerdings ist die Verwendung von OAEP besser Beim OAEP ist im Gegensatz zum PKCSdie Lange des Klartextes nicht mehr sichtbar (man kann nur noch dass beginnende 00 Byteerkennen) Choosen Plaintext Attacke ist nicht mehr moglich

Dabei wird essenziell die zu verschlusselnde Nachricht mit einem Hashwert eines Zufalls-Stringsper xor verknupft und so randomisiert Eine Modifikation des benutzten Hashwerts wird dannmit der Nachricht konkateniert und steht beim Entschlusseln wieder zur Verfugung

1 Label hash Label =

2 PS erzeugen (alles Nullen 128-1-h-h-1-mdashmmdash)

3 DB =

4 Seed wahlen Lange h (irgendwas seed = Hash(irgendwas))

5 DBmaske = MGF(seed mdashDBmdash)

6 mDB = DB oplus GBmask

7 seedmaske = MGF(mDB mdashseedmdash)

8 mseed = seed oplus seedmaske

9 EM =

10 RSA-Verschlusselung C equiv EMe mod n

MGF Hash Eingabe x Lange l

tc = Hash(x c)

mdashcmdash = 4 Byte

MGF(x l) = t0 t1 t2 t3 |MGF( l)| = l

59

Ruckgangig

1 Entschlusseln

2 Zerlegen 00 mseed mDB

3 seedmaske = MGF(mDB mdashmseedmdash)

4 seed = mseed oplus seedmaske

5 DBmaske = MGF(seed mdashmDBmdash)

6 DB = mDB oplus DBmaske

7 Padding abtrennen

PKCS1 v15

Die fur den Modul verwendeten Primzahlen mussen die ersten beiden Bits gesetzt haben dasgarantiert nach Multiplikation der Primzahlen dass das Produkt im oberen Byte das obere Bitgesetzt hat und somit die feste voranstehende 0 uberdeckt

466 Wie erkennt man an Ciphertexten den Verschlusselungsalgorithmus- DER ASN1

Standards damit man (zB RSA) verschlusselte Texte erkennt

DER- distingushed Encoding Rules

ASN1- Abstract Syntax Notation

openssl asn1parse -genstr INTEGER4711 -out intasn1 openssl asn1parse -in intasn1 -inform DER

Integer werden in ASN1 als rsquo 02︸︷︷︸Tag

lange Datenrsquo kodiert Integers brauchen 1 Byte mehr rsquoDatenrsquo

damit Das Vorzeichen 00 enthalten ist Integer ist immer mit Vorzeichen

Tag fur andere Typen

Bool 01

Int 02

Octet String 04

Bitstring 03 rsquolangersquo rsquoungenutzte bits am Endersquo rsquoByte des Bitstringrsquo [evt ungenutzte Bits]

Text PRINTABLESTRING

60

utf8 UTF8String

Text mit Zeichen (emailadresse) IA5STRING

DatumZeit UTC

mit Jahrhundert GENTIME

nuscht (der leere Typ) NULL

Mengentypen seq set

Mann kann auch eigene Typen generierend EXPLICITAF oder so

467 Umgehen mit den Schlusselkomponenten

Ein vollstandiger RSA-Schlussel besteht aus einem Modul (modulus) n = p middot q offentlichemExponent e privatem Exponent d Primzahl 1 p Primzahl 2 q (haufig p gt q) Exponent 1 dpExponent 2 dq Koeffizient qi und kann so ausgegeben und gespeichert werden

Bei der Version fur rsquoarmersquo werden nur n offentlicher Exponent e und geheimer Exponent dangegeben

c equiv me mod n (3)

m equiv cd mod n (4)

Vorteil der vollstandigen Version Geschwindigkeitserhohung bei der Entschlusselung in Schritt(4)

dp equiv d mod (p minus 1) d = k middot (p minus 1) + dp

dq equiv d mod (q minus 1)qi middot q equiv 1 mod q

m equiv cd mod (p middot q) berechnenm1 equiv cdp mod p 500 Operationen mit 1

2 langem Modulm2 equiv cdq mod q 500 Operationen mit 1

2 langem ModulInsgesamt 1000 Operationen mit 1

4 der Lange

apminus1 equiv 1 mod p wenn (a p) = 1teilerfremd1

1kleiner Fermatscher Satz

61

m1 equiv cd mod pm2 equiv cd mod q

h equiv (m1minusm2)middotqi mod p (darauf achten dass das minusm2 mod p ausgerechnet wird nicht mod q)

m = m2 + h middot q

1 m lt n2 m equiv cd mod p da m2 + h middot q equiv m2 + (m1 minus m2) middot qi middot q mod p equiv m2 + m1 minus m2 equiv m1 alsoequiv cd mod pm equiv cd mod q da m2 + h middot q equiv m2 mod q also equiv cd mod q

x equiv y mod p und x equiv y mod q dann folgt x equiv y mod p middot qEuklidischer Algorithmus (p q)-teilerfremd dann p middot u + q middot v = 1 Chinesischer Restsatz

47 Miller-Rabin Test

Heute openssl dhparam und was Verbluffendes so dass man es nur mit der Phantasie einesInformatikers oder Mathematikers verstehen kann (Literatur Menezes Oorschot Handbook ofApplied Cryptography)

Primzahlen Feststellen ob eine Zahl eine Primzahl ist durch Testen von Divisionen wird beigroszligen Zahlen sehr lang

p middot q = n ausrechnen geht schnell Umkehrung n =middot ist moglicherweise schwer

Uber 2214+ 1 weiss man dass es keine Primzahl ist2 kennt aber keinen der Faktoren Kriterium

rdquokeine Primzahlldquo lasst sich auf folgende Art manchmal feststellenWenn (a n) = 1 so ist anminus1 equiv 1 mod nFermatTest Wenn fur (a n) = 1 anminus1 1 mod n so kann n keine Primzahl sein

Primzahlen Test

Wenn fur eine Zahl a mit (a n) = 1 der Fermat-Test nicht bestanden wird nennt man a einenZeugen fur Nichtprimalitat

2Vierzehnte Fermatsche Zahl

62

Zeugen gibt es sehr viele nicht realistisch alle zu rdquobefragenldquo Ausserdem gibt es Zahlen diekeine Zeugen haben aber keine Primzahl sind

Aus diophantischen Gleichungen folgt Es gibt ein Polynom mit ganzzahligen Koeffizienten f (n)mit der Eigenschaft Wenn f (n) gt 0hArr n ist PrimzahlAber das Polynom hat 26 Koeffizienten Fur Mathematiker ist das Problem erledigt da das Poly-nom existiert fur Informatiker ist es das nicht wirklich da die Berechnung ubermaszligig komplexist

Die Nicht-Primzahlen ohne Zeugen heissen Carmichael-Zahlen Haben die Eigenschaft forallp(p|nrArrp minus 1|n minus 1)rArr CarmichaelZum Beispiel 561 hat Teiler 3 11 17 Der Test liefert 2|560 10|560 16|560

Erweitern (n Primzahl) Wenn (a n) = 1 und anminus1 equiv 1 mod n und 2|n minus 1 (anminus1 equiv 1 mod na

nminus12 equiv )

Wenn x2 equiv 1 mod n was ist x mod n n|x2 minus 1 = (x minus 1)(x + 1) entweder n|x + 1 odern|x minus 1

FermatTest+ Wenn fur (a n) = 1 anminus1 1 mod n oder falls anminus1 equiv 1 mod n und anminus1

2 +1und a

nminus12 minus1 so kann n keine Primzahl sein

und 4|n minus 1 anminus1

4 anminus1

2 anminus1

1 mod n Diese Folge ist entweder 1 1 1 oder minus1 1 1 oderlowastminus1 1

Wenn (a n) = 1 und 2k|nminus 1 (k maximal) dann ist die Folge anminus12k a

nminus12kminus1 a

nminus12 anminus1 entweder

1 1 oder lowastminus1 1 1 (lowast steht fur beliebige Folge)

Probieren n = 81 n minus 1 = 80 durch 2er-Potenzen teilen kommt irgendwas mit 5 hinten rausAls Zeugen nehmen wir mal 2 Ausrechnen 25 210 220 240 280 und schauen ob diese Folgemodulo 81 einen der beiden Typen hat 32 1 mod 81

FermatTestlowast (= Miller-Rabin-Test) Wenn fur (a n) = 1 2k|n minus 1 teilt und die Folge anminus12k a

nminus12kminus1

anminus1

2 anminus1 modulo n nicht 1 1 und nicht lowastminus1 1 1 dann ist a ein Zeuge fur Nicht-primalitat

Fur Miller-Rabin-Test gibt es keine zeugenlosen zusammengesetzten Zahlen es gibt unter denzu n teilerfremenden Zahlen mindestens 25 Zeugen3 (MenezesOorschot Kapitel 4 Fact 425Fact 448 Tabelle 43)

Die fur Informatiker interessante Frage ist die Frage Wenn man eine Wahrscheinlichkeit kleiner2minus80 fur eine fehlerhaft durch Miller-Rabin nicht erkannte zusammengesetzte Zahl haben will

3Anmerkung spater 34 sind Zeugen 1

4 sind Lugner

63

muss man fur n (512 Bit) 6 Tests machen Je groszliger die Zahlen werden desto weniger Testsmuss man machen Fur 1024 3 Tests fur 2048 2 Tests Vorausgesetzt ist immer noch ein Testauf kleine Faktoren Dabei pruft man ob (n pi) = 1 fur pi lt B wobei pi kleine Primzahlen sindDas B wahlt man so dass dieser Test nicht langer dauert als ein Miller-Rabin-Test

Wie wahlt man Primzahlkandidaten Generiere Zahl mit Zufallszahlengenerator schaue ob diedurch 2 oder so teilbar ist wahle dann die nachste Zahl

openssl dhparam -dsaparams -text -noout 2048 schnellopenssl dhparam -text -noout 2048 langsam

Safe Prime pminus12 hat einen groszligen Primzahlfaktor q dann getestet ob 2(k middot (q + 1)) Primzahl ist

pminus12 ist Primzahl

Wofur braucht man die Primzahlen Naturlich fur RSA und jetzt neu

48 Diffie-Hellman-Schlusselaustausch

Alice und Bob haben gemeinsame offentliche Informationen tauschen offentliche Informationenaus und verfugen danach beide uber einen gemeinsamen privaten Schlussel

g = 2 (offentlich bekannt (Generator)) Primzahl p (offentlich bekannt)

Erganzungen g g2 g3 gpminus1 mod p (g Generator dann alle verschieden)

Bob Alice

Eve

x y

g^y mod p

g^x mod p

64

Bob wahlt zufallig 1 lt x lt pminus 1 und ruft Alice gx mod p zu Alice wahlt zufalig 1 lt y lt pminus 1und ruft gy mod p zu

Bob berechnet (gy)x mod p und Alice berechnet (gx)y mod p Beide erhalten gxmiddoty mod p An-greifer Eve kennt nur gx mod p gy mod p fehlt gxmiddoty mod p

Wenn Eve das diskrete Logarithmusproblem losen konnte also zu gx mod p und g mod pdas x ausrechnen konnte dann ware gxmiddoty mod p leicht zu berechnen Die besten Algorithmenfur das diskrete Logarithmusproblem mod p sind subexponentiell im groszligten Primfaktor vonp minus 1

Falls (p minus 1) viele kleine Primfaktoren pi hat ist das diskrete logarithmus Problem leicht denndann lost man das Problem nicht a mod (pminus1) sonder jeweils a mod pi und setzt0 dass ganzedann mit dem Chinesischen Restsatz zusammen

Sucht p so dass pminus12 auch eine Primzahl ist dazu wird zuerst eine Primzahl pprime gesucht und dann

geguckt ob 2pprime + 1 auch Prim ist

Openssl

Variante DH (DSAparam) (-dsaparam)

p-Primzahl 1536

g-rsquoGeneratorrsquo nicht von (p minus 1) sondern von der Restklasse h

160 Bit g g2 g3 gh alle verschieden mit h=160 Bit

Dann sollen xy so gewahlt werden dass 1 lt x y lt h = 160 Bit

Ein weiteres asymmetrisches Cryptosystem kann man darauf aufbauen Alle kennen g und pjeder generiert sich x (privater Schlussel) und gx mod p wird veroffentlichtAlice will Bob etwas verschlusselt schickenSie generiert ein k berechnet aus k und Bobs veroffentlichtem gx a = (gx)k mod p und ausdem allgemein bekanntem g gk mod pM sei die Nachricht ( mod p) die Alice verschicken will Sie berechnet a middot M mod p undsendet an Bob das Paar (gk mod p a middot M mod p)Bob berechnet (gk)x mod p = a und dividiert amiddotM

a mod p und erhalt somit M

Der Schlussel a darf nicht zweimal verwendet werden

Man nennt (gk a) zeitweiliger bzw ephemeraler Diffie Hellmann Schlussel

Nachteil die Nachrichtenlange wird verdoppelt

65

Das Verfahren ist unsicher wenn Alice die Zahl x schlecht wahlt x = 1 2 1 2 1 2 1 = x1 x2

49 ElGamal-Cryptosystem

(siehe auch TR 3111 vom BSI auf Seite 21)

Auf Diffie-Hellmann aufbauendAlice offentlicher Schlussel ga (p g) privat aBob offentlicher Schlussel gb (p g) privat b

Alice will an Bob schicken

1 Zufallszahl k generieren

2 Berechne mit Bobs Parametern gk mod p

3 Berechne mit Bobs Parametern (gb)k mod p (DH-Schlussel)

4 Berechne m middot (gb)k mod p

5 Sende(gkm middot (gb)k

)mod p

Bob empfangt (x y)

1 Berechne xb mod p (DH-Schlussel)

2 y middot (xb)minus1 mod p = m mod p

Alice baut also einen temporaren DH-Schlusselteil4 zu Bobs Parametern und sendet diesen unddie damit verschlusselte Nachricht m

Nachteil Nachricht wird durch den Ephemeralschlussel doppelt so lang

410 Wiederholung DH

Generator gPrimzahl pga mod p Restklassen mod p = Korper(middot inverses)Dass p Primzahl ist ist eigentlich ZufallErzeugendes Element GOperation auf Elementen +

a middotG = G + G + G + + G a-malEs muss schwer sein aus G und B = a middotG gegeben das a zu bestimmenG muss eine Ordnung n haben n middotG = 0 (Neutrales Element der Operation +)

4Auch Ephemeralschlussel genannt

66

4101 Beispiel

Alice Bob G+ nAlice denkt a denkt a middotGBob denkt b denkt b middotGBeide tauschen a middotG und b middotG aus und berechnen a middot b middotGa middotG ist leicht zu berechnen double and adda = a0 + a1 middot 2 + + ak middot 2k

a middotG = a0 middotG + a1 middot 2 middotG + + ak middot 2k middotG(k minus 1)-mal rdquomiddot2ldquo und (k minus 1)-mal rdquo+ldquo

411 was anderes

Nimmt man nun G groszlige Gruppe mit n Elemente und der Addition +

g-Generator

g 2g 3g nG︸︷︷︸Nullelement

Alice wahlt 1 lt x lt n bestimmt x middot g

Bob wahlt 1 lt y lt n bestimmt y middot g

Dann wieder K = (ab) middot g = K

To do erganzen

Problem des Diskreten Logarithmus in G gegeben ist G g Generator ist 0 c = a middot g in Ggesucht alogGc-diskreter Logarithmus in G

Diese Variante funktioniert also mit allen rsquoKomplizierten Gruppenrsquo das fuhrt zu dem nachstenThema

412 Elliptische Kurven

Wo gibt es so etwas schon Elliptische Kurven Sind nicht weit verbreitet weil sie dem Mana-gement schwer zu erklaren sind

67

Aus der Wikipedia (unter GNU Free Documentation License)

In der Zahlentheorie ist eine elliptische Kurve eine singularitatenfreie algebraische Kurve derOrdnung 3 in der projektiven Ebene

Von besonderem Interesse zB fur die Faktorisierung naturlicher Zahlen sind aufgrundihrer einfachen Struktur elliptische Kurven der Form cy2 = x3 + ax + b mit c 0 und 4a3 +

27b2 0 Einige moderne Verschlusselungsverfahren basieren auf solchen Kurven Der Nameleitet sich historisch davon ab dass diese Kurven durch elliptische Integrale parametrisiertwerden konnen

Elliptische Kurven uber endlichen Korpern werden in der Kryptografie eingesetzt Dazuwird ausgenutzt dass eine Gerade (lineare Funktion) die zwei Schnittpunkte P und Q mit ei-ner Elliptischen Kurve hat diese auch in einem 3 Punkt schneidet Der Punkt der aus demletzteren durch Verkehren des Vorzeichens der Y-Koordinate (wenn die Kurve die oben ange-gebene Form hat) entsteht wird P + Q genannt Man kann zeigen dass diese Punktaddition(P und Q werden addiert das Ergebnis ist der Punkt P + Q) sowohl kommutativ als auch as-soziativ ist Erganzt man die Elliptische Kurve um einen weiteren Punkt 0 (genannt Punkt imUnendlichen) so bildet sie zusammen mit der (etwas erweiterten) Punktaddition eine abelschealgebraische Gruppe

Sei nun P ein Punkt der Elliptischen Kurve Der Punkt P + P wird mit 2P bezeichnetentsprechend definiert man kP = P + + P als k-fache Addition des Punktes P Ist P nichtder 0-Punkt und ist die Ordnung der Elliptischen Kurve prim so kann auf diese Weise jederPunkt der Kurve erreicht werden (dh zu jedem Punkt Q auf der Kurve existiert eine naturlicheZahl k mit Q = kP) Die Aufgabe aus gegebenen Punkten PQ diesen Wert k zu ermittelnwird als Diskretes Logarithmus-Problem der Elliptischen Kurven (kurz ECDLP) bezeichnetEs wird angenommen dass das ECDLP (bei geeigneter Kurvenwahl) schwer ist dh nichteffizient gelost werden kann Damit bieten sich Elliptische Kurven an um auf ihnen asymme-trische Kryptosysteme zu realisieren (etwa einen Diffie-Hellman-Schlusselaustausch oder einElgamal-Kryptosystem)

y2 = x3 + a middot x + b Skizze der Kurven S2Zu S2 Punkte auf der Kurve kann man addieren

Die Rechenregeln gehen auch in einem Korper mod pBeispiel y2 equiv x3 + a middot x + b mod p Skizze S3

Es gibt immer Punkte mit denen man rechnen kann Punkte sind geeignet die Addition funk-tioniert auch und hat die Anzahl N der Punkte einen groszligen Primzahlteiler dann haben wir auchKryptosystem mit G+ n Wenn groszliger Primzahlteiler exisitert1 N hat groszligen Primzahlteiler n2 Wahlen zufallig einen Punkt G als GeneratorDaraus erhalt man DH und El Gamal

Zuerst eingefuhrt durch Victor Miller und Neal Koblitz um 1980 herum Damals war N schwer

68

bestimmbar Inzwischen gibt es bekannte Algorithmen (Schoof-Algorithmus)Diskretes Logarithmusproblem ist fur elliptische Kurven wirklich exponentiell (bis jetzt) EinBit mehr verdoppelt den Rechenaufwand (192-Bit-256 Bit bewegt sich in GroszligenordnungenRSA 2000-4000-Bit)

Erganzung

1Bei der Erforschung von Eliptischen Kurver stellte sich zuerst die Frag wie groszlig ist eigentlichdie Ordnung n der Gruppe Man wusste n sim p und man wusste sogar n minus p + 1 minus

radicp lt n lt

minusp + 1 +radic

p

2 Schnelle Algorithmen zur Berchnung der Ordnung

3 ECDLP ist schwer wenn n einen groszligen Primfaktor hat

To do sortieren

Erganzung

man hat p a bG n h

K = y2 = x3 + ax + b

p ist fur die Punktaddition (Formeln siehe enwikipediaorg wobei λ = (yQ minus yP) middotminus1

(xa minus xp)︸ ︷︷ ︸mit GGT

mod p)

Anmerkung zum Wikipedia Artikel binary Case bedeutet man die Eliptischen Kurven auch inKorper mit 2k betrachten allerdings vieler solcher Falle patentiert

G = Generatorpunkt mit G 2G 3G nG alle verschieden n kleinste Zahl so dass alle ver-schieden

nG = 0

bei der DSA-Parameter Form nimmt man weniger Grsquos

Der nachste Parameter ist der cofactor h welches den Unterschied zwischen n und der Anzahlder Produkte auf der Kurve angibt

Trick beim testen ob alle iG verschieden sind man guckt ob n eine Primzahl ist und ob nG = 0ist wenn ja ist dies das erste mal sonst ware n ja keine Primzahl Also sind alle vorherigen iG

69

verschieden

Kurven finden besser Bestimmung der Punktanzahl ist schwer

Fruher gab es kleine cofactoren h lt 16

openssl ecparama -list_curves sind schon vorher erzeugt kann openssl nicht selber

openssl ecparam -name secp160k1 -text -noout da die Kurve festgelegt ist gibt es nurein object zuruck

openss ecparam -name secp160k1 -text -param_enc explicit -noout

openss ecparam -name secp160k1 -text -param_enc explicit -noout -conv_form compressednichtkomprimiert gibt nur die x-Koordinate aus

Bei der komprimierten Form kann mit der Kurve die andere eindeutig bestimmen (oder so)

Darstellung als komprimierte Punkt ist auch wieder patentiert

413 Elliptische Kurven Nachtrag

GF(p) (Galois-Field) sind Kurven mod p mit p Primzahl erfullen Gleichungen der Form y2 =

x3 + a middot x + b

GF(2k) Korper mit 256 Elementen = 28

In OpenSSL nur elliptische Kurven mod p patentfrei

Kofaktor finden Wir haben Punktgruppe G es gibt einen Generatorpunkt gn middotG = 0 n ist die Ordnung

cofactor︸ ︷︷ ︸klein

lowast order︸︷︷︸primzahl

= Anzahl der Punkte

(cofactor soll klein sein order Primzahl) Anstelle Punkt auf der elliptischen Kurve als (x y) (x ymod p) abzuspeichern TrickWenn es ein Punkt ist gibt es zu x zwei y die quadratische Gleichung y2 = x3 +a middot x+b erfulleny1 =

radicx3 + ax + b mod p

y2 = minusradic

x3 + ax + b mod peine der beiden Zahlen hat als letztes Bit immer 1 die andere eine 0 man nimmt daher nur noch(x LSB(y)) (x und kleinstes Bit von y)

70

414 Rucksack-Verschlusseln

Kryptosystem das sich bei OpenSSL zu recht nicht findet Hat den Anschein als wurde es aufeinem NP-vollstandigen Problem beruhen Problem ist NP-vollstandig weil es ein allgemeinesRucksackproblem istSieht aber nur so aus ist aber nur polynomial weil es ein Transformiertes eines leichten Ruck-sackproblems ist

Gegeben W Fassungsvermogen des Rucksacks w1w2 wk kleine GewichteGesucht W =

sumeiwi mit ei isin 0 1

Rucksack-Verschlusseln von MerkleHellmann Rucksack mit schnell wachsenden Gewichtenist leicht zu berechnendh wi gt

sumjlti e jw j nachstes Gewicht ist immer schwerer

4141 Beispiel

Rucksack W = 51 = 31 + 15 + 3 + 2 wprimei s 2 3 7 15 31Grundidee Aus dem schnellen Rucksack einen langsamen machenM gt

sumwi k mit (M k) = 1 k middot 2 k middot 3 k middot 31 mod M

M = 61 ist Modul k = 17 ist privater Schlussel m = (1 1 0 1 1) ist unverschlusselte Nachricht31 51 58 11 39 ist offentlicher Schlussel 34 + 51 + 11 + 39 = 135 = 13rarr c ist verschlusselteNachrichtEmpfanger rechnet aus dem erhaltenen Gewicht (135) das richtige Gewicht wieder raus 135middotkminus1

mod 61 = 51 und kann das Problem mit den schnellen Gewichten losen

Zum BrechenMan transformiert 34 51 58 11 39 in eine Folge die schnell wachsend ist zB 1 3 5 11 29dh das transformierte System kann auf mehrere Probleme zuruckgefuhrt werden man brauchtnur eine passende Rucktransformation finden Adi Shamir hat dafur einen polynomiellen Algo-rithmus angegeben

415 Merkle Puzzle

Man generiert sich 1000000 Nachrichten rdquoDas ist Nachricht ni fur den Schlussel k jldquo ni zufalli-ge 20-Bit Zahl k j 128-Bit SchlusselVerschlusselungsverfahren DES diese 1000000 werden mit 20-Bit Schlusseln verschlusseltAlice schickt die 1000000 Nachrichten an Bob als offentlichen SchlusselBob will Alice eine Nachricht schicken Er sucht eine der Nachrichten aus dem offentlichen

71

Schlussel aus und macht eine Brute-Force Attacke auf diese Nachricht Er findet ni und kiBob verschlusselt mit dem ki seine Nachricht und sendet ni im Klartext mit

Alice und Bob haben linearen Aufwand Eve quadratischen

Von everything2comAlice and Bob agree on a symmetric algorithmAlice generates a large number (over a million at least) of messages of the form ldquoThis is myindex X and my puzzle is Yrdquo Each of the messages is encrypted with a 20-bit keyAssume there are 220 (about a million) messages it takes 220 operations to get the key and acomputer can perform 220 operations per second Bob takes 1 second to recover the key to amessage Eve takes 12 daysNow make that 230 (about a billion) messages Bob still only takes a second to get the key andit will take Eve 34 years

Public Key Idee hier schon vorhanden

416 Rabin-Verfahren und Wurzelziehen

Aus der Wikipedia (unter GNU Free Documentation License)

Das Rabin-Kryptosystem ist innerhalb der Kryptologie ein asymmetrisches Kryptosystem dasauf einem Faktorisierungsproblem beruht und mit RSA verwandt ist Es lasst sich prinzipiellauch zur Signatur verwenden In der Praxis findet das Verfahren allerdings wegen bestimmterAngriffsmoglichkeiten kaum Anwendung

4161 Schlusselgenerierung

Aus der Wikipedia (unter GNU Free Documentation License)

Seien p und q zwei moglichst groszlige Primzahlen fur die eine bestimmte Kongruenzbedingunggelten muss Der offentliche Schlussel n wird durch Multiplikation der beiden Zahlen erzeugtalso n = p middot q Der geheime Schlussel ist das Paar (p q) Anders ausgedruckt Wer nur n kenntkann ver- aber nicht entschlusseln wer dagegen p und q kennt kann damit auch entschlusselnZum Erzeugen des offentlichen Schlussels mussen die Zahlen p und q bekannt sein Der offent-liche Schlussel lasst sich nur genau aus den beiden Primzahlen erzeugenWaren p und q keine Primzahlen so lieszlige sich das Verfahren ubrigens nicht anwendenSeien beispielhaft p = 7 q = 11 (in der praktischen Anwendung handelt es sich um sehr vielgroszligere Zahlen um die Entschlusselung durch Dritte so schwierig wie moglich zu machen)Daraus ergibt sich der offentliche Schlussel n = p middot q = 77

72

4162 Kongruenzbedingung

Aus der Wikipedia (unter GNU Free Documentation License)

Fur p und q muss die Kongruenzbedingung(

pminus1p

)= (p minus 1) und

( qminus1q

)= (q minus 1)

(wobei fur(

nminus1n

)= (n minus 1)

nminus12 equiv (n minus 1) mod n = (n minus 1) gilt)

oder einfacher ausgedrucktp equiv q equiv 3 mod 4gelten

Allgemein gilt namlich fur die Primzahl r mit r equiv 3 mod 4 und die Zahl a mit a equivb2 mod ra

(r+1)4 equiv

radica mod r

Diese Eigenschaft dient dazu spater die Entschlusselung zu erleichternWegen 7 equiv 11 equiv 3 mod 4 ist die Kongruenzbedingung fur das Beispiel erfullt

n = p middot q Produkt von Primzahlen

m soll verschlusselt werden c equiv m2 mod n (einfach Quadrieren weil Wurzelziehen schwer istwenn der Modul ein Produkt von 2 Primzahlen (p middot q) ist weil wer Wurzel ziehen kann kannauch Faktorisieren (n)

Begrundung Es gibt 2 Losungen c = x2 equiv y2 mod n Wie findet man nun die Faktoren von nn teilt x2 minus y2 = (x minus y)(x + y) und x gt y und (x minus y) lt n und n hat nur 2 Primfaktoren daherx minus y = p und x + y = q Wurzelziehen ist leicht mod p mod q Gesucht Wurzel c mod pxp = c

p+14 mod p und xq = c

q+14 mod q

x2p equiv c

p+12 equiv c

pminus12 middot c mod p

Weil cpminus1 equiv 1 mod p ist (nach kleiner Fermat) die Wurzel daraus cpminus1

2 equiv plusmn1 wegen c equiv m2

mod n gilt (m2)pminus1

2 equiv mpminus1 equiv 1(p) Stuck fehlt Ende des Wurzelziehens

4163 Verschlusselung

Aus der Wikipedia (unter GNU Free Documentation License)

Sei nun P = 0 nminus1 der Klartextraum (er besteht also aus Zahlen) und m isin P der KlartextNun lasst sich der Geheimtext c durch c = m2 mod n bestimmen Dabei ist c der QuadratischeRest von zu der Quadratzahl m2 zum Modulo der Schlussel-Zahl n Im praktischen Einsatzbietet sich die Verwendung von Blockchiffre an

In unserem Beispiel sei P = 0 76 der Klartextraum m = 20 der Klartext Der Ge-heimtext ist hierbei nun c = m2 mod n = 15

73

Dabei muss man beachten dass fur genau vier verschiedene m das c den Wert 15 aufweistnamlich fur m isin 13 20 57 64 Ahnliches gilt fur die meisten c

4164 Entschlusselung

Aus der Wikipedia (unter GNU Free Documentation License)

Seien allgemein c und r bekannt gesucht wird m isin 0 n minus 1 mit m2 equiv c mod r Furzusammengesetzte r (beispielsweise unsere n) existiert kein effizientes Verfahren zur Bestim-mung von m Ansonsten wenn also r isin P (in unserem Fall p und q) dann lasst sich jedoch derchinesische Restsatz ausnutzen

In unserem Fall sind nun die Quadratwurzelnmp =

radicc mod p

undmq =

radicc mod q

gesuchtWegen obiger Kongruenzbedingung gilt

mp = c(p+1)

4 mod pundmq = c

(q+1)4 mod q

In unserem Beispiel ergeben sich mp = 1 und mq = 9Mit dem erweiterten euklidischen Algorithmus werden nun yp und yq mit yp middot p+yq middotq = 1

bestimmt In unserem Beispiel erhalten wir yp = minus3 und yq = 2Nun werden unter Ausnutzung des chinesischen Restsatzes die vier Quadratwurzeln +r

minusr +s und minuss von c + nZ isin ZnZ berechnet (ZnZ steht hierbei wie ublich fur die Menge derRestklassen modulo n die vier Quadratwurzeln liegen in der Menge 0 n minus 1)

r = (yp middot p middot mq + yq middot q middot mp) mod nminusr = n minus rs = (yp middot p middot mq minus yq middot q middot mp) mod nminuss = n minus s

Eine dieser Quadratwurzeln mod n ist wieder der anfangliche Klartext m Im Beispielgilt m isin 64 20 13 57

417 Angriffe auf asymmetrische Verschlusselungsverfahren

Fall RSA

74

4171 1 Angriff Common modulus attack

Idee Gleicher Modul fur verschiedene Leute hatte den Vorteil dass man sich nur die kleinenoffentlichen Exponenten e1 und e2 merken muss nicht mehr die groszligen Module hat aber Nach-teil (e1 e2) = 1 teilerfremd umiddote1+vmiddote2 = 1 (mit erweitertem Euklid) Sendet man eine Nachrichtm an zwei Alices berechnet also c1 = me1 mod n und c2 = me2 mod n dann kann man mitden Chiffren c1 und c2 auch ausrechnen cu

1 middot cv2 = me1u middot me2u = me1u+e2v = m mod n Nachricht

erhalten

4172 2 Angriff kleiner geheimer Exponent d

Wenn |d| lt |m|3 dann ist Faktorisieren moglich Sicherheitsrisiko geheimer Exponent muss im-

mer moglichst groszlig sein aus groszligem offentlichen Exponenten |e| kann man erfahren dass dergeheime Exponent klein ist

4173 3 Angriff Faktorisieren

Wenn p ungefahr so groszlig wie q also p minus q = ∆ klein ist dann ist ( p+q2 + ∆

2 ) (ungefahr Wurzel n+ was kleines = p) middot( p+q

2 minus∆2 ) = p middot q Man weiszlig dass die eine Zahl uber Wurzel n liegt und die

andere Zahl unter Wurzel n (Wurzel n + klein = p Wurzel n - klein = q)

4174 Echt schlechte RSA-Schlussel

n = 3middotq (1024 Bit) und offentlichen Exponenten bei TCTrustCenter abgegeben Damit kann manzeigen dass PGP als Signaturverfahren schlecht ist Schlussel schlecht gewahlt dadurch kannjeder die Kommunikation mitlesen da n sehr leicht zu Faktorisieren die Leute sie konntender Person mit dem schlechten Schlussel vertrauenswurdige Nachrichten schicken und laufenin die Falle dass ihre Nachrichten nun offentlich sind Anderer Fall Bewuszligt solche Schlusselvergeben um Nachrichten in einem kompletten Netzwerk lesen zu konnen

n = Primzahl e middot d equiv 1 mod (n minus 1)

Mit n als Primzahl geht normale Entschlusselung nicht

n p q e dp dq qi dc equiv me mod nm1 equiv cdp mod pm2 equiv cdq mod qdp equiv d mod (p minus 1)

75

dq equiv d mod (q minus 1)

m = m2 + (m1 minus m2) middot qi︸ ︷︷ ︸mod p

middotq

m equiv cd mod q und m equiv cd mod prArr cd

Bundesamt fur Informationssicherheit sagt zur Verwendung von RSA p q mussen unabhangigvoneinander zufallig erzeugt werden und 0 5 lt | log2 p minus log2 q| lt 30

4175 Schnelles Faktorisieren bei Fehler im System

DFA - Differential Fault Attack System das entschlusselt aber sich an einer Stelle verrechnetmprime1 ist Rechenfehler statt wirkliches m bekommt man ein mprime = m2 + (mprime1 minus m2)qi lowast qbildet man nun m minus mprime 0 aber durch q teilbar dh bringt man das System dazu einen Fehlerzu machen und hat man die Originalnachricht GGT (m minus mprime n) = q schon hat man den Mo-dul faktorisiert hat funktioniert viele Chipkarten verrechneten sich unter Streszlig Es reicht dasmprime zu kennen m kann unbekannt bleiben denn man rechnet (mprimee minus c n) = q es reicht eineentschlusselte Nachricht zu haben

Anderer Angriff auf ChipkartenDPA - Differential Power Analysis Stromverlauf ansehen Differenzen bilden und sequentiellanalysieren

Angriff auf El Gamal Systemegeheimer Schlussel a offentlich g p ga Verschlusselte Nachricht zufalliges k (gk mmiddotgak)= c 1Angriff k gleich fur verschiedene Nachrichten oder k1 k2 in Abhangigkeit oder k k+1 k+2 fur verschiedene Nachrichten oder a middot k + b

4176 Angriff mit gewahltem Chiffretext

Normalerweise bei RSA m minusrarr c = me mod n

cprime vorgegeben fuhrt zu Klartext mprime = (cprime)d mod nAnforderung Beliebiger Chiffretext auszliger cprime = c wahlbar zu dem man dann den Klartext erhalt

Problem bei RSA

1 r (zufallig gewahlt)rarr re mod n = s

2 cprime = s middot c mod nVerschlusselungsmaschine liefert dann (cprime)d = sd middot cd = (re)d middot m = r middot m mod n = mprime

76

3 Letzter Schritt m = mprime = rminus1 mod n

Das geht nur theoretisch in der Praxis geht das nicht weil Angreifer kann das r nicht steuernr middot m wird aber von der Verschlusselungsmaschine verworfen weil es bei zufalligem r keinkorrektes Padding hat

Schwache des RSA Multiplikationseigenschaftm1 rarr c1 und m2 rarr c2 (m1 m2 gultige Klartexte)m1 middot m2 rarr c1 middot c2m1 middot m2 nicht als gultiger Klartext zugelassen

5 Signaturmechanismen

Wie erstellt man signierte Daten und versucht ein Aquivalent zu dem zu schaffen was man imtaglichen Leben durch Unterschriften schafftEigenschaften einer Signatur sollen nachgebildet werden Man weiszlig von wem ein Dokumentkommt sie ist an eine Person gebunden und kann von niemanden sonst nachgemacht werden undvom Inhaber nicht abgestritten werden Nachtragliche Anderungen an unterschriebenen Doku-menten sollen nicht mehr moglich sein (gibt es so im echten Leben nicht)

51 Integritatsschutz und Hashfunktionen

To do neu Hashfunktionen Definition einsortieren

Hashfunktion Beliebige Daten werden auf Binarfolgen konstanter Lange abgebildet

Def Eine Hashfunktion H ist eine Abbildung 0 1lowast rarr 0 1k auf Hashwerte der Lange k

SHA-256 (SHA- Secure Hash Algorithmen) - Hashwerte der Lange 256 Bit

1 Es gibt Kollisionen

d1 d2 H(d1) = H(d2)

2k Hashwerte aber potentiell abzahlbar viele Daten

Wunsch

Man soll diese Kollisionen nicht finden konnen und am besten es gibt sie nicht Hashfunktionendienen zum unterscheiden von Daten

77

H(d1) H(d2) dann ist d1 d2

Dementsprechend groszlig muss das k sein so dass genugend viele Werte unterscheiden kann

Anforderungen an Hashfunktionen

Wunsch Kollisionsresitent (schwer Kollisionen zu konstruieren) man kann nicht zwei Doku-mente mit dem gleichen Hashwert konstruieren

Wunsch Zweites Urbild resistent (schwer zweites Urbild zu konstruieren) man kann zu einemDokument nicht ein zweites mit dem gleichen Hashwert bestimmen

Geburtstagsparadoxon Kollisionen entstehen zum Beispiel in Horerkreisen 23 Horer(innen)dann haben mit mehr als 50 Wahrscheinlichkeit zwei am gleichen Tag Geburtstag

H Horer rarr Datum h 7rarr Geburtstag(h)

h1 h2 H(h1) = H(h2)

Bestimme die Wahrscheinlichkeit dass keine zwei am gleichen Tag Geburtstag haben

1 minus g =365middot middot(365minusn+1)

(365n) wobei n die Anzahl der Horer ist (Fur n = 23 ungefahr 50)

radic365 20

g radic

Hashwerte

Bei 2128 Hashwerte muss man mit Kollisionen rechnen ( Bsp 30 bei 19 Personen 19 radic

365)

Merke Das Geburtsatgs Paradox beschert uns Kolisionen bei 2k2 Hashwerten

To do ende Neu

Hashfunktionen Schon bekannt aus dem ersten Semester (Hashtabellen)

Allgemeine Eigenschaften

1 Komprimieren beliebig lange Werte auf n-bit Werte

2 Einfach (und schnell) berechenbar

Werte Fingerabdruck Prufwert Hashwert

78

Kollisionen h(x) (Hashfunktion) mit x1 x2 aber h(x1) = h(x2) x1 und x2 ist KollisionWahrscheinlichkeit fur Kollision fur zufallig gewahlte Werte sollte 1

2n sein (Anforderung anHashfunktion)

Wir verlangen dass die Variabilitat in der Eingabe sich auch in den Prufwerten widerspiegeltsprich Wenn die Eingabewerte gleichverteilt sind sind es auch die Ausgabewerte

To do 20090422

To do einsortieren

Kollisionen rsquovermeidenrsquo durch Groszlige 160 Bit Prufwerte (280 fur Kollision (2100 mdash AES 128 mdashbzw 2112 2128 als Kollisionsschranken)

Zusatzlich Voraussetzungen fur die Pruffunktion

1 Kollisionsresistenz Es muss schwer sein zwei Nachrichten m1m2 zu finden so dassH(m1) = H(m2)

(Es ist schwer Zwillinge zu konstruieren)

2 Zwillingsresistenz Es muss schwer sein (also kryptografisch Aufwendig) zu einer Nach-richt m1 eine Nachricht m2 zu konstruieren so dass H(m1)FH(m2) ist

(Wenn man eine Bruder hat dann ist es schwer eine zwillings Schwester dazu zu konstru-ieren)

(aufwendiger als erstens)

3 Urbildresistenz Es muss schwer sein zu einem beliebigen Prufwert h eine Nachricht zukonstruieren so dass H(m) = h ist

4 Die Prufwerte mussen rsquozufalligrsquo aussehen Die Ausgabe von H genugt Anforderungen aneinen Zufallszahlengenerator (gewisse statistische Unauffalligkeit) also pseudozufallig

Eigentlich musste man noch mehr Fordern namlich dass man keine zwei Nachrichten findet diesehr ahnliche Hashwerte haben und dass man zu einer gegeben Nachricht keine Nachricht miteinem ahnlichen Hashwert findet

Beispiel H gute Pruffunktion

H(m) =

|m| n fix so Hprime(m) = 0||H(m)(H(m) rangehangen)|m| = n so ist Hprime(m) = 1||m( rangehangen)

h ist die Lange der Prufwerte von H

79

Hprime ist kollisionsresistent wenn es H ist aber nicht urbildresistent

To do sortieren

openssl 097d (2004) Prufwertstandardverfahren ist MD5

Hashfunktion enthalt eine rsquoKompressionsfunktionrsquo m1

To do Bild-siehe Blatt - 20090422

K(sm) = sprime

K(sm) = K(sm2)

K(s1m1) = K(s2m2)

s1 und s2 als Ergebnisse einer Prufwertberechnung darstellen

K(s1m11) = s1 K(s01m21) = s2

K(s1m12) = s K(s2m22) = s

der rechte Teil war 2004 schon bekannt es musste nur noch die linke seite gelost werden

511 Schlussellose Hashfunktion (Prufsummen ohne Schlussel)

h x minusrarr h(x)Ausschlieszliglich Prufwert Gute Auswahl garantiert dass man mit h(x) feststellen kann ob xverandert wurde

xprime ist verandertes DokumentDatenBerechnung des Prufwerts liefert h(xprime) = hprime h(x) bei guter Hashfunktion Veranderung kannalso festgestellt werden

80

Zusatzlich verlangte Eigenschaften

1 Kollisionsresistenz Es ist schwer Kollisionen zu erzeugen Dh es ist schwer x1 x2 mith(x1) = h(x2) zu findenHeute ublich n = 80 oder n = 100 280 oder 2100 in sim 280 Schritten Definitiv 256 istnicht schwer 264 ist nicht mehr so schwer

2 Zwillingsresistenz Zweites-Urbild-Resistenz second preimage resistance Es ist schwereinen Zwilling zu erzeugen ist x1 mit h(x1) vorgegeben so ist es schwer einen Zwillingx2 zu erzeugen mit h(x1) = h(x2)(Anmerkung Finger weg von Binarcode fur x1 x2)

3 Einwegeigenschaft Urbild-Resistenz Es ist schwer zu vorgegebenem h(x) ein Urbild xzu berechnen

h1(x) ist eine gute Hashfunktion mit den schicken Eigenschaften 1 2 3 (n + 1 Bitlange)

h2(x) =

1 x wenn x die Lange n hat0 h1(x) sonst

h2(x) ist kollisionsresistent (Zwillingsresistenz) (wenn h1 so ist) h2 ist aber nicht urbild-resistent 1 x hat als Urbild x

2 ist die wichtigere Eigenschaft man kann notfalls noch ohne 1 auskommen Zum Beispielletztes Jahr MD5 - Hashfunktion x1 x2 waren konstruiert h(x1) = h(x2)x1 oplus x2 = 0 010 010 010 01 (1 jeweils im msb) Immer noch ein gewisser Schutz dazum Beispiel keine Kollision auf -Kleinbuchstaben oder 64 moglich

Schlussellose Hashfunktionen sollten alle 3 Eigenschaften haben

Fast-Kollision x1 x2 h(x1) oplus h(x2) hat wenig 1-Bits Manchmal zu vermeiden

partielle Urbilder Gegeben h(x) dann ist es schwer x bis auf wenige Bits zu bestimmen

SHA-1 theoretische Schwelle 280 praktisch 269 (16022005) 263 (19082005)

Geburtstagsparadoxon 23 Personen die Wahrscheinlichkeit dafur dass 2 am gleichen Tagim Jahr Geburtstag haben ist groszliger als 1

2

h(x) =dd-mmMit k Personen x1 xk lassen sich k2 Geburtstagspaare bilden Mit n Tagen h1 hn im Jahrlassen sich n2 Geburtstagspaare bilden davon sind n gute ( (h hprime) mit h = hprime)

81

mit k2 Paaren in n2 Paaren suchen und einen von n treffenHashfunktion hat 160 Bit Ausgabe wir brauchen nach Geburtstagsparadoxon 280 Personen ummit hoher Wahrscheinlichkeit den gleichen Geburtstag h mit 160 Bit zu erhalten

Allgemeines Konstruktionsprinzip x wird auf eine bestimmte Blocklange erweitert (pad-ding)

1 Nullpadding (auffullen mit Nullbits falls erforderlich)

2 1-Nullpadding (eine 1 und dann mit Nullbits bis zur Blocklange)

3 1-Null-Langenpadding (eine 1 und Nullbits (falls erforderlich) und die Lange (msb first64 Bit oder 128 Bit)) Am besten geeignet da bei 1 oder 2 automatisch Kollisionen ent-stehen x (mind 1 bit kurzer als die Blocklange) und x 0

xrarr b1 bk Blocke der Lange 512 Bit

Haufig Verlauf in 3 Phasen in openssl init update final

1 Initialisierung der Hashfunktion Innerer Zustand aus 32-Bit-Wortern H1H2H3H4H5initialisiert (mit Primzahlen π was-auch-immer)

2 Update A BCD E aus H1 H5 Runden mit Transformationen mit Eingabe bi 48|60|120 H1 = H1 oplus A H2 = H2 oplus B

3 Finalisierung Ggbf Padding 1 oder 2 mal das Update

4 Ausgabe H1H2 H5

Einfaches Beispiel

82

So lasst sich aus einem Kryptoalgorithmus ein Hashalgorithmus konstruieren In der Praxis wer-den andere Konstruktionen (Quirlfunktionen) verwendet MD5 SHA-1 SHA-2 (224 256 384512) Whirlpool ISO-

In OpenSSL MD2 MDC2 MD4 MD5 RIPEMD-128 RIPEMD-160 SHA-0 SHA-1 Allegebrochen ausser RIPEMD-160 und SHA-1 (evt MD2) dh es sind m1 und m2 bekannt mitMD5(m1) =MD5(m2) und m1 m2

512 Demonstration Falschung

Ist die Hashfunktion rsquoschwachrsquo kann man Kollisionen sogar konstruieren

Beispiel fur MD5 MD4 ist seit 10 Jahren schwach SHA-1 wird schwach

Zwei Postscript-Dateien mit unterschiedlichem Inhalt aber gleichem MD5-Hash Prinzip Datei1

Header

if x1 == x2 then strangestring = T1 else strangestring = T2 end

Rest

echo strangestring

Quelltext (B)(B)eq︸ ︷︷ ︸Bedingung

[tot] [Def] ifelse

83

Datei 2

Header

if x2 == x2 then strangestring = T1 else strangestring = T2 end

Rest

echo strangestring

(A)(B)eq︸ ︷︷ ︸Bedingung

[Def] [tot]

x1 und x2 unterscheiden sich nur sehr wenig und Header if x1 und

Header if x2 sind je ein Nachrichtenblock mit dem gleichen Hashwert

Sieht aus wie zweites Urbild-Angriff sind aber in der Tat zwei bose Zwillinge

Quelle wwwcitsrubdeMD5Collisions

Fazit Dokumente sind nicht mehr unterscheidbar

Kollision besteht aus zwei Dokumenten d1 d2 mit dem Hashwert

Bei MD5 kann man zwei rsquoDokumentersquo (Prafixe bis AB) konstruieren die den gleichen Has-hwert haben

Man kann aber zu einem Dokument d0 (dem Original) noch nicht ein zweites dprime0 konstruierenso dass d0 dprime0 eine Kollision bilden

Beispiel Ein SSL-Server-Zertifikat war (MD5) ununterscheidbar von einen SSL-ZertifizierungsstellenZertifikat womit man so viele (evt rsquobosersquo) SSL-Server-Zertifikate erstellen wie man wollte

MD5 ist nicht kollisionsresistent

MD5 ist noch 2 Urbild resistent

52 Unterschied MD5 und SHA

MD5 128bit Lange (Kollision 264)

SHA-224 224bit Lange (Kollision 2112)

SHA-256 256bit Lange (Kollision 2128)

84

mehr rotation lokale Unterschiede habe groszligere globale Unterschiede zur Folge bei SHA

53 Secure Hash Standard SHA-2

FIPS 180-2 US-Standard Nachfolger von FIPS 180 SHA-0 und SHA-1 sind die SHA-2-Algorithmen(noch nicht in OpenSSL) SHA-224 SHA-256︸ ︷︷ ︸

32 Bit

SHA-384 SHA-512︸ ︷︷ ︸64 Bit

SHA-224 bzw SHA-384

ist rsquoungefahrlsquo die linke Seite von SHA-256 bzw SHA-512

Basisfunktionench (xampy)|(sim xampz) Auswahlfunktionpar x and y and z Paritatsfunktionmaj (xampy)|(xampz)|(yampz) Mehrheit

Ausserdem Addition modulo Wortlange rot left und shift leftMessage M1M2 MN padding

1 paddinglength auf 5121024 Bit

51232 = 16 = 1024

64

2 Messageblock (16 Stuck) wird erweitertW0W1W2 W15︸ ︷︷ ︸

Messageblock

W79

Wt = rot(Wtminus3) + rot(Wtminus8) + rot(Wtminus14) + rot(Wtminus16) fur t = 16 79rot(x) = rotl7(x) + rotl18(x) + shl3(x)

3 8 temporare Variable a b c d e f g h mit Breite gleich Wortlange (32 oder 64 Bit) be-schreiben einen inneren Zustand der Funktion

SHA-Maschine bekommt initialen Zustand H0 H7 Die ersten 32 Bit der gebrochenenAnteile der Quadratwurzeln der i Primzahl Fur SHA-256 und SHA-512 i = 1 8 furSHA-384 und SHA-224 i = 9 16

85

Am Anfang jeder Runde a = H0 b = H1 c = H2

Jedes Wi erzeugt einen Schritt (kleine Zustandsanderung)

T1 = h + rot(e) + ch(e f g) + Kt + Wt

T2 = rot(a) + maj(a b c)

h = g g = f f = e e = d + T1 d = c c = b b = a a = T1 + T2K0 K80 Schrittkonstanten Bruchteile der dritten Wurzeln der ersten 80 Primzahlen80 Schritte in einer Runde

4 XOR-Operationen H0H1 H7 minusrarr H0 oplus aH1 oplus b H7 oplus hHi beschreiben den inneren Zustand nach Runde Hi am Anfang initialisiert

5 Ausgabe ist H0 H7 am Ende

To do ware auch interessant fur die Prufung

Es wird eine neuer SHA-3 gesucht Voraussetzungen

1 Nachrichtenexpansion muss komplexer werden

2 Nachrichtenblocke mussen positionsabhangig werden (Skein tweakable

3 innerer Zustand muss groszliger werden (2x Hashlange)

531 Problem bei MD5 und SHA-0

Beispiel 1 Innerer Zustand zwischen einzelnen Schritten hat Bits die die folgenden Bitsmehr oder weniger beeinflussen Damit sinkt die Komplexitat beim Brechen Besondere Bitsfuhren zur Reduktion der Anzahl der Gleichungen und erlauben eine schnelle Konstruktion vonspeziellen Zwillingen m1m2 mit MD5(m1) =MD5(m2) m1 oplus m2 = viele Nullen

Parallel hashen rdquoKontostand -20073ldquo und rdquoKontostand +700ldquo Ab -2 bzw +7 entstehen un-terschiedliche innere Zustande Nachkommastellen bei dem zweiten String anpassen um dieUnterschiede auszugleichen

86

Aktuelle Angriffe erzeugen keinen zweiten Zwilling sondern rsquonurrsquo falsche Zwillinge Zu einemguten gibt es keinen schlechten Zwilling

Beispiel 2 Es gibt zwei Zertifikate mit unterschiedlichen Inhalten und gleichem MD5-HashDas sind dann aber 2 schlechte Zertifikate MD5 ist also nicht kollisionsresistent aber momentanzwillingsresistent

SHA-1 hat momentan eine Komplexitat von 263 anstelle von 280 fur Kollisionen

mH(m) (H(m) aus vertrauenswurdiger Quelle) rArr m kann nicht unbemerkt verandert werdenManipulation Detection Codes () Das ist keine Prufung des Ursprungs Um zu prufen ob maus einer bestimmten Quelle stammt benutzt man MACs

532 MACs (Message Authentication Codes) (Prufsummen mit Schlusseln)

Sei k ein geheimer Schlussel den nur Alice und Bob kennen m ist die Nachricht BerechneHk(m) = h keyed Hash Die Hash-Prufwerte sind also Schlusselabhangig

(m h) mit h aus vertrauenswurdiger Quelle

bull Veranderungen sind erkennbar

bull Nur mit Kenntnis von k kann man h berechnen also nur mit dem Schlussel kann man denPrufwert falschen

Empfanger der k kennt kann n auf Integritat prufen Um sich vor Angreifern zu schutzen mussfur eine Prufung der Prufwert geschutzt werden

Hk(mprime) = h

(m1 h1)(m2 h2)

rarr (m h) muss verhindert sein

87

Standardisiertes Verfahren fur Keyed hash auf der Basis von MDCs RFC 2104 in OpenSSL zufinden HMAC)

H(k oplus auszligeres Padding H(k oplus inneres Padding m))︸ ︷︷ ︸512- oder 1024-Bit-Blocke

k linksbundig aufgefullt mit Nullen inneres Padding = 0x36 0x36 auszligeres Padding = 0x5c0x5c Langenpadding am Ende des inneren H

Berechnen Sie mit OpenSSL und dgst -c oder -hex den Hashwert der leeren Datei

henrykgleam henryk $ openssl dgst -c -hex -md5 devnull

MD5(devnull)= d41d8cd98f00b204e9800998ecf8427e

henrykgleam henryk $ openssl dgst -c -hex -sha1 devnull

SHA1(devnull)=

da39a3ee5e6b4b0d3255bfef95601890afd80709

openssl dgst -sha256 -hmac 1234567890 devnull

HMAC-SHA256(devnull)= ba92e0bfa35d8a018831f3675f0b4314c8468d4d96e6981b85ba3390c23308fd

HMAC

To do vervollstandigen

Mac mit Hashfunktion K- Schlussel H-Hashfunktion

H(K oplus oPadH(

0x565656︷ ︸︸ ︷K oplus iPad︸ ︷︷ ︸Bitlange H

n))

K n1 rarr Mac(n1K) = m1

K nprime = n1||langenpadding ||n2

(K nprime) rarr HInitialisiert mit m1(n2) = m2

ISO-10118-32004

88

54 Whirlpool

Basis fur eine Hashfunktion ausgehend von einer einzigen Verschlusselungsfunktion

Aus der Wikipedia (unter GNU Free Documentation License)

WHIRLPOOL ist eine kryptografische Hash-Funktion die von Vincent Rijmen und Paulo SL M Barreto entworfen wurde Sie wurde nach der Whirlpool-Galaxie im Sternbild der Jagd-hunde benannt

Whirlpool funktioniert mit Daten von weniger als 2256 Bit Lange und gibt einen Hash-Wert von 512 Bit aus

Die Autoren haben erklart dass Whirlpool nicht patentiert ist und es nie sein wird Whirl-pool darf kostenlos zu jedem Zweck verwendet werden Die Referenz-Implementation ist ge-meinfrei

The WHIRLPOOL algorithm has undergone two revisions since its original 2000 specifi-cation In the first revision in 2001 the s-box was changed from a randomly generated one withgood cryptographic properties to one which has better cryptographic properties and is easier toimplement in hardware In the second revision (2003) the diffusion matrix was changed

People incorporating WHIRLPOOL will most likely use the most recent revision ofWHIRLPOOL while there are no known security weaknesses in earlier versions of WHIRL-POOL the most recent revision has better hardware implementation efficiency characteristicsand is also likely to be more secure

E

+

H

H

m

AES-Variante

i-1

i-1

i

55 Zusammenfassung

To do oben einsortieren

89

Manipulation Detection Codes MDCsHashfunktionen MD5SHA-1SHA-2Allgemeines Konstruktionsprinzip aus Langenpadding und Iterationen

bull MACsKeyed Hash HMAC mit Hashfunktion aufgebaut aus prefix und suffix

bull CBC-MAC Nachrichtenblocke m0m1 mk

+ +

MACc c c

K

m

m m

0

1

1

2

k

k+1

Risiko Weil keine Langeninformationen dabei sind ist es anfallig gegen Einsetzen undAustauschen Wird gerne Verwendet bei Anwendungen die feste Langen haben zBChipkartenCBC-MAC-verbessert

K

DES

1

K2

K3

larrminus CBC-DES3-MAC

Benutzt zB beim digitalen Tachograph

Es gibt zwei Grundlegende technische Mechanismen Ohne Schlussel und mit Schlussel Nur mitSchlussel lasst sich spater der richtige MAC-Wert ausrechnen und bestimmen dass die Nachrichtnicht verandert wurde und vom richtigen Absender kommt

90

56 Digitale Signaturen

To do einsortieren

Definition

s ist die Signatur zu einer Nachricht n mit einem Signaturverfahren S und einem Verifikations-verfahren V

S N times D︸︷︷︸Signaturschlussel

rarr s

V N times E︸︷︷︸Verifikationsschlussel

timess rarr ja nein

V(n e S (n d)) = 1

V(n e S (nprime d)) = 0 =( n eprime S (n d)) = 0

RSA

S (n d) =

V(n s e) = E(e s)eqH(n)

openssl dgst -sign keyrsa -hex nulltxt

openssl -sign keyrsa -sha256 -out nullsig nulltxt

openssl rsautl -in nullsig -encrypt -inkey keyrsa -raw -hexdump

in Beta openssl sha256 -hex nulltxt

Anstatt der Symmetrischen Verschlusselung wie bei MAC kann man auch asymetrische Verfah-ren verwenden

1 h mit Namen (0D) in ASN1 Struktur 0001 FF FF 00 (ASN1-Struktur)

2 Padding

3 rsquoEntschlusselnrsquo

4 rsquoVerschlusselnrsquo

5 ASN1 Struktur Hash OID Wert rausziehen

91

6 vergleichen 0 1

openssl hatte in den fruheren Versionen einen Fehler in der Signaturprufung

langer RSA Schlussel

exponent e klein (3)

lange Signatur S

S 3 = h

wenn h sehr lang ist konnte man folgendes machen

h= (0001FF00ASN1 rsquomullrsquo)

man konnte den rsquoMullrsquo so verandern das h = s3 (also so lange verander bis h dritte Wurzel vons ist)

Es wurde nicht uberpruft ob am Ende der ASN1-Struktur auch das Ende der Daten ist

siehe Webseite RSA Zertifikate mit Exponenten 3

To do alt

Digitale Signaturen schutzen die Integritat und die Authentizitat Wir betrachten hier welche dieauf asymmetrischen Verfahren basieren Symmetrische gibt es werden aber in der Praxis nichtbenutzt Es gibt 2 Typen

1 RSA

2 DSA

561 RSA

m = p middot q (2048 Bit)Exponent e klein (64 Bit)Exponent d groszlig mit e middot d equiv 1 mod (p minus 1)(q minus 1)

xrarr c = xe mod m (offentlich)cd equiv x mod m (geheim)xed equiv x

92

Man rechnet zuerst xrarr s = xd mod m Das kann nur derjenige der uber den privaten Schlusseld verfugt Aus s rechnet man se mod m = (xd)e mod m equiv xemiddote mod m = x Bei RSA konnenwir die Rolle vom privaten und offentlichen Algorithmus vertauschen so dass folgt Nur wer dkennt kann zu x ein s erstellen so dass se equiv x mod m ist

Anwendung dafur Digitale Signatur Wir haben Nachricht M und erstellen daraus einen PrufwertH(M) mit einer Hashfunktion und rechnen

H(M) = x minusrarr s = xd mod m

Dann ist (M s) das digital signierte Dokument M (und s die Signatur)

To do einsortieren neu

Signatur mit Anhang (with appendix) (m sig)-Signierte Nachricht

Ver(vm sig)

Signatur mit Nachrichtruckgewinnung (with (partial) message recovery) (m1mprime2) = mprime so dassmprime2 ein Teil der Nachricht m = m1||m2 enthalt

Ver(vm1mprime2) (partial recovery)

Ver(vminusmprime) (complete recovery)

In RSA

PKCS1 ver 15 Signatur mit Appendix

PKCS1 ver 21 (noch nicht in OpenSSL)

To do ende einsortieren

Prufung (M s) rarr H(M) = x Ist se mod m = x Nur wer das d hat kann das Paar (M s)

erstellen und ist damit Inhaber des Dokuments

562 Eigenschaften eines asymmetrischen Verschlusselungsverfahren

Alice kennt den offentlichen Schlussel von Bob Bob kennt seinen geheimen Schlussel

93

Alice123 Bob Alice Bob123offB gehB gehA offA

EoffB(m) = c rarr DgehB(c) = m rarr

MS gehA

(m s)

rarr

Voffa(m s) =

0 ungultig1 gultig

Mehrere Alices konnen an Bob schreiben Entschlusselung mit dem geheimen Schlussel vonBob Hier wird eine Nachricht so verschlusselt dass man die Nachricht aus c zuruckgewinnenkann

Alice sendet an alle Bobs Hier wird ein Paar erzeugt dass in einen Verifikationsalgorithmusgestopft werden kann der dann ja oder nein sagt

Es ist Zufall dass man mit RSA sowohl einen Verschlusselungsalgorithmus als auch einenSignaturalgorithmus erstellen kann Mit anderen geht das nicht

Hatte man nicht die Urbildresistenz der Hashfunktion konnte man ein s nehmen und dazu aus-rechnen se mod m = x jetzt konnte man zu dem x ein Urbild M ausrechnen und bekame einPaar (M s) dass gultig signiert ist Dazu kommen in Wahrheit noch Padding und Objekt Identi-fier der angibt womit signiert wurde und Parameter

30 = SEQUENCE06 = OID2B 0E 03 02 1A = SHA12A 86 48 86 F7 0D 01 01 01 = rsaEncryption05 = NULL Bezeichner fur die leere Menge hier bedeutet es keine Parameter04 = OCTET STRING02 = INTEGER03 = BIT STRINGSchema Tag Length Value

Das ganze lasst sich mit openssl asn1parse erfahren (asn1 = Abstract Syntax Notation 1)Schlussel immer SEQUENCE SEQUENCE OBJECT PARAMETER BIT STRING bzw Se-quence aus OID und Bitstring Das erste Byte in einem Bitstring gehort nicht zum Bitstring dazusondern gibt die Nummer der von hinten ungenutzten Bits an

OID-Liste httpwwwalvestrandno

Mhminusrarr

SHA-1

H minusrarr

Padding

00 01 FF FF 00 b c b H c

Identifier Oktetstring

Padding nach PKCS1 v15

ASN1 Objektidentifier fur SHA-1 (131432) wird als 2B 0E 03 02 1A codiert

94

xyabcd (Dot-Notation)darr

bx middot 40 + yc babcdc1 Byte Byte (Oktett)

12840113549127 als Ubungsaufgabe

563 RSASSA-PSS-Padding

SSA Signature Scheme with Appendix

PSS Probabilistic Signature Scheme

RFC 3447 (siehe figure 2)

8 zero salt

h

0000 01 salt

+MGF h

maskiertes seed BC00 1024

Bits

zu 0

setzen

soviele dass die Eingabe

kleiner als der Modul wird

Eingabe fuumlr die Signatur

M l(M) lt= 2^(64)-1 bei SHA-1

20 Byte 20 Byte

To do start einfugen

MGF-Maskengenerierungsfunktion (beruht auf der Hash-funktion)

95

MGF rArr DBmask dann DB oplus DBmaskNullungminusminusminusminusminusminusrarr maskedDB

Nullung-Nullung der oberen Bits so dass maskedDB kleiner als Modul ist

Signieren (EMSA-PSS)+(RSA-Verschlusselung)

Verifikation (RSA Op)

1 RSA-Operation

2 EM

Prufung ob BC am Ende

H abspalten und mit MGF DBmask erzeugen

XOR mit Rest von EM

DBprime = 0000︸︷︷︸Nullungsfehler

0001 Salt

00 Label mhash SaltHashminusminusminusminusrarr Hprime

= H

Jede Eingabe in die RSA-Operation ist pseudo zufallig (Jede Eingabe hat einen neuen Signa-turwert)

Angenommen man wendet die RSA-Operation direkt auf m an

mprime-Signatur mprime = md mod n

m1m2

m1 rarr mprime1 mod n = mprime1

m2 rarr mprime2 mod n = mprime2

Verifikation

(m1m2) mod n rarr (m1 middot m2)d = md1md

2 = mprime1 middot mprime2 mod n

(rsquoMan kann mit zwei Signaturen eine andere erzeugenrsquo)

96

To do ansehen

Unsicher zeitaufwendig kann leicht gebrochen werden

m rarr mprime = md mod n

re = rprime mod n

chosen message m middot rprime rarr (m middot rprime)d mod n = md middot red mod n = mprime middot r mod n

(mprime middot r) middot rminus1 mod m = mprime

(sieht nach Zufallszahlen aus aber die kann man auf eine vorher gewahlte Nachricht zuruck-rechnen)

To do ende einfugen

Nachricht M mit |M| lt 264 minus 1 wird mit Hashfunktion h gehasht Davor kommen 8 Zerobytedanach ein Saltwert (Saltwert wird benotigt fur die Auswertung der Signatur und wird verstecktin der Signatur) Auf das Gesamte wird die Hashfunktion h erneut angewendet

Verstecken des Saltwerts --0000 (rarr eventuell leer) 01 salt-- oplus mit einer Maske gebildetaus dem Hashwert und einer Maskengenerierungsfunktion

An den Anfang der Eingabe fur die RSA-Signatur werden 0-Bits so gesetzt dass die Eingabefur die RSA-Signatur kleiner als der Modul ist Wenn m volle Bytelange hat wird das obersteBit gleich 0 gesetzt (RSA-Signatur ()d mod m mit m = p middot q) An das Ende der Eingabe fur dieRSA-Signatur wird BC angehangt

Durch den Saltwert wird das Ergebnis zufallig und schwer vorhersagbar Wird leider nicht oftverwendet da die Maskengenerierungsfunktion Chipkarten teuer machen wurde

Es existiert eine DIN Variante zum v15 PKCS1 DIN-RN-Padding00 02 Zufallsbytes(ohne 00) 00 Identifikator Oktettstring

564 DSA

Vergleich ElGamal und elliptische Kurven

K-elliptische Kurve y2 = x3 + ax + b mod p

97

p-Primzahl ( 2 3)

Punkte auf der Kurve bilden eine Gruppe E(k)

P + Q = R k middotG isin E(k)

G ein Punkt (Generator) mit groszliger Ordnung n

1 middotG 2G 3G n︸︷︷︸sehr groszlig

middotG = 0

n ist eine Primzahl und G 2G nG = 0 ist die gesamte Gruppe E(k)

Signaturschlussel t-zufallig aus 1 n minus 1 Verifikationsschlussel ist P = t middotG

Standard FIPS 186-3 rarr finde den Fehler

To do ende einfugen

p g Generator gpminus1 equiv 1 mod p gpminus1

x 1 mod p

Geheimer Schlussel xoffentlicher Schlussel y = gx mod pk(gkm middot yk) = c

Parallel bei elliptischen Kurven G geheim x offentlich Y = x middotG

(k middotGm middot k middot Y)

DSA auch bekannt als DSS FIPS-186

Primzahl p (hat zB 1024 Bit im Standard variabel) so gewahlt dass pminus 1 einen Primteiler derLange 160 Bit enthalt q|p minus 1 mit |q| = 160 BitAusserdem Es gibt einen Generator g mit der Eigenschaft gq equiv 1 mod p Das findet man

indem man einen h Generator in mod p auswahlt und g = hpminus1

q hpminus1 equiv 1 mod p ausrechnet

x geheimer Signaturschlussel mit 160 Bit gx mod p ist der offentliche Schlussel

Signaturerstellung Nachricht M Hashwert h(M) = H ausrechnen Generiere Zufallszahl k mit160 Bit (k isin 1 n minus 1) und berechne

To do neu

k middotG = (x y) r = x mod n

98

s = hminus1 middot (h + tr) mod n

(r s) ist die Signatur

To do ende neu

r = (gk mod p) mod q und s = (kminus1(H + x middot r) mod p) mod q r und s sind Exponenten furmod p werden aber nochmal mod q genommen um Platz zu sparen (r s) wird die Signaturwerden (s 0 mod q r 0 mod q)

Signaturverifikation Berechne w = sminus1 mod qu1 = H middot w mod q u1 = H middot w + i middot qu2 = r middot w mod q

Berechne

gu1 middot yu2 equiv gHmiddotsminus1middot gxmiddotrmiddotsminus1

equiv gHmiddotk(H+xmiddotr)minus1middot gxmiddotrk(H+xmiddotr)minus1

equiv gHmiddotkmiddot(H+xmiddotr)minus1+xmiddotrmiddotk(H+xmiddotr)minus1

equiv gkmiddot(H+xmiddotr)middot(H+xmiddotr)minus1

equiv gk mod p

Prufe also ob (gu1 middot yu2 mod p) mod qequiv r

Die Signatur zu M ist (r s) mit r und s haben 160 Bit so dass man 320 Bit Signatur hat (kleinerals die 1024 Bit Signatur von RSA)

Um den geheimen Schlussel zu bestimmen muss man den diskreten Logarithmus mod q be-rechnen und das gilt als schwer

565 ECDSA - DSA mit Elliptischen Kurven

K - elliptische Kurve mit Punkten mod pG - Generatorpunkt G hat Ordnung q [q middotG = 0] q Primzahlx - Restklasse mod q Y = x middotG

r = [(k middot G)1] mod q (rarr 1 Koordinate mod q) s = kminus1(h + x middot r) mod q [u1 middot G + u2 middot Y]1

mod qequiv r

700 Bit fur alle Parameter

99

To do neu

ECDS DSAGenerator

G g gq = 1 mod pdA = [1 q minus 1]

zufalligPA = dA middotG auf E pA = gdA mod p

Signatur k isin [1 q minus 1] r = (gk mod p) mod qr = x mod q

s = kminus1 middot (h + dA middot r) mod q

h ist genauso lang wie q (gleiche Bitlange)

h sind die linken Bits von H(n)

(Bem RSA ist bei Elipt Kurven nicht einsetzbar deshalb ist DSA eine gute alternative)

link draft-lochter-pkx-brainpool-ecc-03 - eine art RFC zu Brainpool

openssl ecparam -name brainpoolP256r1 -param_enc explicit -noout

E =(x y) y2 = x3 + Ax + B mod p

Dann ist G = 04x (in einer Prufung ware interessant zu wissen was das fuhrende Bytebedeutet und welche Varianten es gibt)

openssl ecparam -name brainpoolP256r1 -genkey

-param_enc explicit -noout gt eckey

(pub - offentlicher Punkt)

openssl dgst -sha256 -sign eckey eckey gt ecsig

xxd -p ecsig

openssl asn1parse -i -in ecsig -inform DER

Man erhalt die beiden Integers r und s

(Bem bei Eliptischen Kurven ist die Bitlange kurzer da Algorithmen hohere komplexitat als so

100

haben)

(Hausaufgabe erzeuge zwei Kurven (512Bit - Brainpool bzw 521 NIST) mit anderen Hash-funktionen (mdripemd whirlpool) Signatur (rs) )

(Bem siehe Wikipedia El C DSA r=0 Abfrage weil sonst dA keine Rolle spielt s= 0 Abfrageweil man sonst mit minusz = r middot dA mod q den geheimen dA ausrechnen kann)

[Spickzettel zur HA

h-linke Bits des Hashwertes

n1 = h middot sminus1 mod q

n2 = r middot sminus1 mod q

V = n1 middotG + n2PA = (x y) r = x mod q

v = gn1 middot pn21 mod p r = v mod q

(r rarr 0 1 jeweils)

h middot sminus1 middotG + rsminus1PA = h(k(k + dAr)minus1 middotG + r(k(h + dAr)minus1)dAG = (hk + rkdA)(h + dAr)minus1G = V

= k (h + rdA) middot (h + dAr)minus1︸ ︷︷ ︸=1

G

= k middotG

]

Magma

p=StringToInteger(rsquorsquo16)

a=StringToInteger(rsquorsquo16)

b=StringToInteger(rsquorsquo16)

IntegerRing(p)

E=EllipticCurve([KaKb])

G=E[KStringToInteger(rsquo1Halfte Generatorrsquo16)

101

KStringToInteger(rsquo2Halfte Generatorrsquo16)]

Jetzt kann man rechnen

qG eq E0

true

mdashmdashndash

qG

(010)

mdashmdashmdash

Kq=IntegerRing(q)

dA=1+Random(q-2)

PA=dAG Prufung ob ungleich Null fehlt noch

h=K12121212121212121212121212121

k=1+Random(q-2)+1damit keine Null rauskommt

X=kG

x=X[1]

r=(IntegerRing()x) mod q

s= (Kqk)ˆ(-1) ((Kqh)+ r dA)

rs

Verifikation

u1=h(Kqs)ˆ(-1)

u2=r(Kqs)ˆ(-1)

102

Y=(IntegerRing() u1)G+( IntegerRing() u2) PA

Y

((IntegerRing() Y[1]) mod q) eq r

=rArr siehe Verzeichnis

Prufen ob Openssl gut gerechnet hat

OpenSSL

wie erzeugt man den offentlichen Schlussel openssl ec -in eckey -pubout

openssl ec -in ecpub -pubin -text -noout

-pverify

To do neu-ende

To do neu-20090617

Bem Attributes muss die leere Menge sein und darf nicht weggelassen werden

SHA1 nur noch zur Unterscheidung benutzen

57 Widerrufen von Zertifikaten

siehe rfc5280 S53

Erste Sperrliste

Ist eine Liste in der die Nummern der gesperrten Zertifikate stehen

Beispiel CA erstellen

perl ˜optopenssl-100-beta2appsCApl -newca

103

Zertifikat fur den Nutzer erstellen

perl ˜optopenssl-100-beta2appsCApl -newreq

Signieren

perl ˜optopenssl-100-beta2appsCApl -xsign gt aypem

Man kann noch weitere Zertifikate erstellen allerdings wird dann der pem Key geloscht Mankann dann feststellen dass die Seriennummer nur um eins erhoht wird Man kann auch openssl ca -gencrl -out -cl1pem -crlhours 12benutzen und dabei die Seriennummer selber angeben

openssl crl -text -in crl1pem -noout

Zertifiziert wird nur der Teil zwischen Certificate Rev List bis No Revok Cert Da dieser Teilsehr klein ist ist es recht schwer Kollisionen mit SHA1 dafur zu konstruieren

Dann gibt es noch Informationen wann es die nachsten Updates gibt (Last Update Next Update(optional)) Alte Sperrlisten bleiben aber Gultig die neuen gelten nur zusatzlich

Zertifikat ungultig machen

openssl ca -gencrl -out cr13pem -revoke demoCAcertsF8C85pem -crl_reason keyCompromise -crlhours 12

aktualisieren

openssl ca -gencrl -out cl4pem -crlhours 12

Nun nachsehen mit

openssl crl -text -in crl4pem -noout

To do neu-ende

104

58 Was es noch so gibt

581 blinde Signaturen

Gut fur anonymes digitales Geld Normalfall Bank kriegt digitalen Scheck belastet das Kontound schickt einen von ihr signierten Scheck zuruck Problem Wenn derjenige der den Scheckspater einlosen will zur Bank geht kann diese den Scheck zum Aussteller zuruckverfolgen

Mit anonymen Signaturen Aussteller erzeugt viele (zum Beispiel 1000) unterschiedliche Schecksmit je einer Zufallszahl und dem gleichen Betrag aber ohne Name Kontonummer etc Diese1000 sendet er verschlusselt an die Bank Die Bank sucht sich zufallig (das ist wichtig) 999davon aus und fordert fur diese den Schlussel an Die Bank entschlusselt diese Schecks unduberpruft ob uberall der gleiche Betrag drinsteht Wenn ja dann ist davon auszugehen dass auchder auf den gleichen Betrag lauft Das Konto wird entsprechend belastet und der Scheck wirdblind (also ohne hineinzusehen) signiert und dem Aussteller zuruckgeschickt Der packt denScheck aus (wobei die Signatur gultig bleibt) und hat jetzt einen von der Bank signierten digita-len Geldschein den die Bank nicht mehr zuruckverfolgen kann

582 anonyme Signaturen

Beispiel Elektronische Wahlen wo man nicht mochte dass man weiszlig wer es unterschriebenhat

6 Zertifikate

To do neu-20090520

m rarr Signatur und Verifikation

mprime rarr Signatur und Verifikation

Vertrauen in den offentlichen Schlussel

Schutzen den Schlussel durch Prufwert den Prufwert Schutzen wir durch eine Signatur Vertrau-en eines Schlussel ubertragt sich an einen anderen Das ganze scheint sich im Kreis zu drehen

Aber es handelt sich um einen Graph (Der Graph muss nicht transitiv sein - A vertraut BB vertraut C aber A vertraut nicht unbedingt C) Zb Baum mit Wurzel (PKI) dann gibt es

105

vertrauens-Normen die den Ebenen eines Baumes entsprechen Die andere Variante ist das PGPWeb of Trust bei dem der Baum ungeordneter ist und eine Art Vertrauensbereiche hat

Dass eine Zertifizierungsstruktur funktioniert braucht es klare Regeln fur den Umgang mit Zer-tifikate

Standards

ANSI X509

X500

openssl internet Profil

RFC 5280 (alt 3280 2459)

Definition Zertifikat bindet (durch Signatur) einen offentlichen Schlussel an einen Namen(Subjekt)

(siehe rfc5280 S16 - Certificate= SEQUENCE und TBSCertificate) (in TBSCert er-scheint rsquosignaturersquo recht fruh damit schon mit dem Hash-Algorithmus begonnen werden kannaber warum steht in Certificate dann nochmal signature -Bessere Ordnung)

Zertifikat bei CA-cert runterladen und dann mit openssl ansehen

openssl x509 -in class3crt -text -noout

openssl asn1parse -i -in class3crt

Zur ausgabe des ersten (siehe auch rfc5280)

Version es gibt momentan 3 Versionen

Serial Number ist ein Integer kann so groszlig sein das man nicht mehr in den Hash-Block mehrkommt (bis 20 Byte geht)

Bundesnetzagenturde 15549pdf sagen dass Serien Nummern mindesten 20 Bit Entropie ent-halten sollen damit SHA-1 bis 2010 benutzt werden kann (rsquoQualifizierte Signaturrsquo)

To do siehe 606 Gultigkeit

validity Wird oft als Gultigkeitszeitraum ubersetzt was aber nicht ganz richtig ist da nur ange-geben wird wann das Zertifikat nicht gultig ist Besser ware rsquonicht Gewahrleistungszeitraumrsquo

106

Die validity gibt (nach dem Standard) den Zeitraum an in der die CA gewahrleistet aussagenuber den Zustand des Zertifikats zu geben (Gultig ODER nicht Gultig - deshalb muss das Zer-tifikat also nicht unbedingt gultig sein)

To do neu-ende

To do neu-20090527

Bemerkung In der Objectstxt findet die Object-Identifier die OpenSSL kennt

To do neu-20090527-ende

Signatur Anwendung eines Schlussels Ob der Signaturersteller eine bestimmte Person ist istdamit nicht klar Immer gleichzeitig Authentizitat des Schlussels prufen

Dazu gibt es zwei Moglichkeiten

1 Anarchie = Web of Trust (Beispiel PGP)

2 Vertrauenswurdige dritte Instanz Certification Authority CA bzw ZDA (Zertifizierungs-diensteanbieter) Stellt ein Zertifikat aus das ist ein elektronisches Dokument welcheseine Identitat einem Schlussel zuordnet

Zertifikat (Name Schlussel ) und Signatur

Problem Im Zertifikat steht Name Schlussel usw und daran hangt eine Signatur Gegeben Nut-zer Alice mit Zertifikat daruber gibt es die CA1 die ihre Signatur zertifiziert CA1 hat selber einZertifikat mit einem Namen Schlussel usw und daran hangt wieder eine Signatur Das Problemverschiebt sich immer weiter nach oben Man bekommt eine Zertifikatshierarchie und benotigteinen aufgeblahten Riesenbaum mit einer Weltwurzel Im taglichen Leben haben sich 3-stufigeZertifikatshierarchien bewart Root signiert seine eigene Signatur Vertrauen in Authentizitat derNutzerschlussel ist fur alle Nutzer gleich Es bestimmt sich ausschlieszliglich durch die Authenti-zitat des Schlussels des Root CA Das Vertrauen in die Root CA verteilt sich auf die Nutzer

603 X509

X509 mittlerweile bei ISO RFC 3280 X509 Certificate and Certificate Revocation List (CRL)Profile Abschnitt 4

Version X509v3 Version 1 enhalt keine ErweiterungenSerial Number In der Regel 20 Byte muss immer eindeutig sein

107

Signaturverfahren fur das Zertifikat muss am Anfang (im ersten Block) stehen damit das Has-hen schon begonnen werden kannHerausgeber Name(eindeutig) C=Country O=Organisation CN=Common Name SN=Surname

Validity Gultigkeitszeitraum der Zeitraum indem die CA Gultigkeitsinformationen uber dasZertifikat bereitstellen willwirdmussInhaber Name (eindeutig im Bereich der CA) zur Person also stabile Daten SeriennummerVersicherungsnummer etcSchlusselinformationenErweiterungenDarunter die Signatur

In RFC 3280 steht dass nach dem 31 Dezember 2003 alle Zertifikate UTF-8 kodiert seinmussen

604 Erweiterungen

Man kann bei Erweiterungen festlegen ob diese Critical oder nicht sind Critical ist sowas wieeine Vorschrift nicht Critical ist sowas wie eine Information Kritische Erweiterungen mussenimmer ausgewertet werden wenn ein Programm sie nicht versteht darf es das Zertifikat nichtverarbeiten

To do neu

Per default auf false ist auszligerdem optionales Argument Wenn nicht critical dann ist es nur eineInformation Also critical muss man lesen und verstehen nicht critical sollte man lesen wennman sie versteht sollte man sich daran halten

To do neu ende

Basic Constraints

To do neu

Sagt ob es Zertifizierungsinstanz ist oder eine Endnutzer Instanz ist und in welcher Ebene essich befindet

To do Diagramm basteln

108

Ein interessantes Beispiel (goyacrt) findet man bei der Rechnerbetriebsgruppe

To do neu-ende

CA Siginalisiert ob es ein CA-Zertifikat ist (TRUE) oder nicht (FALSE) Dh ob das Zertifikatberechtigt ist weitere Unterzertifikate auszustellen

To do neu

Per default false es musste also nicht jedesmal CA FALSE angegeben werden

To do neu-ende

PATHLEN Beschrankt die Pfadlange Pathlen=0 heisst dass das Zertifikat zwar Nutzerzertifika-te ausstellen kann aber keine weiteren CA-Zertifikate Ist immer als Critical markiert

Subject Key Identifier und Authority Key Identifier Nicht kritisch Beschreiben die ver-wendeten Schlussel uber Hash-Werte zum Beispiel SHA-1 uber den Schlussel

Key Usage Kritisch (sollte kritisch sein zb bei GOYA nicht) Ist ein Bitstring der die Ver-wendung des Schlussels angibt Fur eine CA also zum Beispiel nur KeyCertSign NonRepu-diation ist eigentlich fur die Dokumentsignatur (content commitment) DigitalSignature ist furAuthentisierung oder allgemeine Signaturmechanismen Die beiden moglichst exklusiv setzen

To do neu

Nicht bei Endnutzerzertifikaten notig

To do siehe rfc5280 - KeyUsage -HA lesen

Merkmale

(0) DigitaleSignatur zur Authentifizierung (hat keine Auswirkungen auf spatere Zeitraume)(werden zu dem aktuellen Zeitpunkt gepruft)

(1) (ab X509v4) Inhaltsbindung[contentCommitment] (zb Nichtabstreitbarkeit ) (jetzt noch[nonRepudiation]) (werden zu dem Zeitpunkt zu dem sie erstellt worden sind gepruft)

(0) und (1) sind Endnutzerinformationen

nur ent-verschlusseln Schlussel zum verschlusseln von Zertifikaten geignet

109

keyCertSign==TRUE - wenn man nur Zertifikate damit signieren mochte (brauch man bei CAZertifikaten eigentlich sollte nur eines der Bits gesetzt sein) ansonsten sollte digitalSignaturegesetzt werden

Key usage zB A0=10100000 (Erste und dritte gesetzt) oder zB 88=10001000 (erstes undfunftes gesetzt)

authority information Nicht kritisch Feld in dem Daten des Herausgebers abgerufen werdenkonnen

Benutzt das OCSP-Online Certificate Status Protocol (gibt eine URI an wo man die Informatio-nen erhalten kann - spater mehr)

X509v3 Certificate Policies ASN1 Strucktur siehe rfc5280 S 33

System von Regeln fur die Ausgabe von Zertifikaten sowie den Betrieb der ZertifizierungstelleNutzer kann sich uber die Hirarchie der CA informieren (wichtig fur den Vertrauensaufbau)

CPS - Certificate Policy Statement und dann zwei moglichkeiten cPSuri (uri wo die Informationzu finden ist) oder userNotice (Freitext)

Bsp httpnasacanasagovnasacphtml dort findet man eine CPS

Wenn der Regelsatz dem CA Zertifikat zugeordnet ist (Bindung zB durch Root) ist es besserals wenn es nur dem EndNutzer Zertifikat zugordnet ist (Bindung nur durch die daruberliegendeCA)

Authority Key Identifier Kurzinformationen mit der man einen Schlussel identifizieren kannFur Endnutzer ist der Authority Key Identifier ein Bezeichner mit dem das zugohrige CA-Zertifikat zu finden ist Kann enthalten

KeyIdentifier - Schlussel ID

GeneralNames - Herausgeber Seriennummer

CertificateSerialNumber

Subject Key Identifier - SKI Schlussel ID hilft bei der Unterscheidung sollte eine moglichsteindeutige Nummer sein da aber nicht genau festgelegt wird ist die SKI nicht fur Uberprufungengeeignet

110

Subject Alternative Name IP Adresse URI Email Adresse (hat das rsquoatrsquo Zeichen welchesin kein Datentyp passt weshalb sie hierher (oder in den Issuer Alt Name) gehort soll alsrfc8224Name gespeichert werden (da dieser nicht groszlig klein sensitiv ist))

To do neu-ende

605 Erzeugung

To do neu

Bei OpenSSL gibt es zwei moglichkeiten mit Perl Script

perl ˜optopensslappsCApl -newca

openssl x509 -text -nout -in cacertpem

openssl req -text -nout -in careqpem

Diese Requests folgen dem Standard PKCS 10 - rfc2986

openssl ans1parse -in careqpem

Attributes [0] - Contextabhangiges Tag (nur an diesem Ort gultig) Codiert als A0 denn Con-textabhangige tags fangen mit 10 an im Gegensatz zu Universaltags die mit 00 anfangen(Beispiel fur Contextabhangige Tags siehe auch bei AuhtorityKeyIdentifier)

Im Request ist Set of Atritbute NICHT optional (aber kann leer sein)

To do neu-ende

Wie kommen wir eigentlich zu Zertifikaten Zertifikate kommen von einer CA also muss manzuerst ein CA-Zertifikat erstellen

Request Ich mochte ein Zertifikat haben PKCS10RFC2986openssl req

openssl req -new -x509 erzeugt gleich ein Zertifikat

openssl req -new -newkey rsa1500 -days 40 -out userreq ein neuer Schlussel undein Request Der Request enthalt die Informationen des Antragsstellers den offentlichen Schlusselein Challenge-Passwort (von der CA festgelegt) und eine Signatur uber diese Daten

111

openssl x509 -req -CA -CAkey -out -days 40

-in userreq -CAcreateserial -out userx509

-extensions usr_cert -extfile opensslcnf wichtig um v3-Zertifikate zu erzeu-gen

606 Gultigkeit

Der rsquoGultigkeitszeitraumlsquo (Validity) im Zertifikat ist der Zeitraum uber den sich die ausstellendeInstanz verpflichtet etwas uber die Gultigkeit des Zertifikats auszusagen

CRL Certificate Revocation List

OCSP Online Certificate Status Protocol

Sperrlistenformat auch in RFC 3280 Abschnitt 5 als X509-Variante festgelegt

OCSP version 1 RFC 2560

To do neu

Man kann dass conf bearbeiten

Ubungsaufgabe ein Zertifikatsrequest mit eigen Daten erstellen und zu zertifizieren

To do einsortieren

Die CA schmeiszligt eventuell Daten des Request raus

To do neu-ende

To do neu-20090624

Sperrlisten Enthalten

Version

Signatur

112

Herausgeber

LastNext Update

Sperrlisten Nummer (sollte monoton wachsen)

Liste der gesperten Zertifikate(jeder Eintrag enthalt ein Integer eine Zeit und evt CRLEntryExtension(CRLReason-Code siehe rfc5280 531))

Bemerkungen

Sperrlisten sind im DER-Format ( openssl -inform DER)

(Erweiterungen enthalten immer OID Octet-String)

Zu CRLEntryExtension CRLReason Code (6) (certificateHold-schwebend gesperrt) und (8)(removeFromCRL-kannwurde wieder entsperrt werden) sind besonders und sind eher nur furAuthosierung sinnvoll

Sperrlisten nehmen in der Praxis erhebliche groszligen ein

CRLEntryExtension wird von der Bundesnetzagentur nicht benutzt

RFC5280 532 sperrdatum (revocation date) darf nicht vor dem Zeitraum der vorherigen CRLliegen sonst ist es in der vorherigen Liste Gultig (ansehen)

Aufbau des Pfad zum Vertrauensanker (RFC 5280 S72) Das beschriebene Prufverfahren istnicht normativ vorgeschrieben es reicht wenn die Funktion gleich ist

httpwwwbundesnetzagenturdemediaarchive1343pps

Kettenmodel benutzt den Erstellungszeitpunkt (nicht Gewahrleistungs-Beginn) (Folie3)

httpwwwbundesnetzagenturdeenid85f55115e236d80fc18329992037142d0FAQ

Antwortss4_wphtml

To do neu-ende

To do 20090701-fehlt

113

61 Praktische Ausschlachtung von kryptografischen Algorithmen mitSMIME und PKCS7

Root-Zertifikat erzeugenopenssl genrsa 1200 gt cakeypem

openssl req -x509 -new -key cakeypem -config opensslcnf gt cacert (selbst-signiertes neues root Zertifikat mit eigenem Config Script)

Root-Zertifikat anschauenopenssl x509 -in cacert -text -noout

Nutzer der eigenen CA erstellenopenssl req -new -config opensslcnf -out usercert Erstellt mehrere Dateienauch privkeypem

Zertifikat erstellenopenssl x509 -req -in userreq -CA cacert -CAkey cakeypem -CAcreateserial

-out usercert -extfile opensslcnf -extensions usr_cert (Zertifikat fur usermit Extenstions Version 3 statt Version 1)

Senden einer signierten Nachricht (Nachricht in Neutxt)openssl smime -sign -signer usercert -in Neutxt -inkey privkeypem

-out neusmime -text

Erzeugt Datei neusmime mit Nachricht und Signature -text erzeugt den Eintrag fur den Con-tent Type vor der Originalnachricht in neusmime

Umwandeln der SMIME Nachricht in PKCS7 Nachrichtopenssl smime -pk7out -in neusmime -out neupk7

Das gesamte (ohne Inhalt der Nachricht eigentlich nur die Signatur) SMIME Dokument wirdin eine PKCS7 Struktur eingebunden

Anschauen mitopenssl asn1parse -i -in neupk7

Zertifikate ausgeben mitopenssl smime pkcs7 -in neupk7 -print_certs -noout

Zertifikate anschauen mitopenssl smime pkcs7 -in neupk7 -print_certs -noout -txt

Verifizierenopenssl smime -verify -in neusmime -CAfile cacert

Verschlusseln

114

openssl smime -encrypt -in Neutxt -out neusmime -text usercer

Nachricht ohne Signatur verschlusselt

Entschlusselnopenssl smime -decrypt -in neusmime -text -recip usercer

-inkey privkeypem

Fur die Einbindung in Browseropenssl pkcs12 -export -name Annie -inkey privkeypem

-in usercert -out userp12

Um auch das CA Zertifikat mit einzubindenopenssl pkcs12 -export -name Annie -inkey privkeypem

-in usercert -out userp12 [-certfile cacert -CAfile cacert -chain]

Private Schlussel auspacken openssl pkcs8

62 PKCS

PKCS Public Key Cryptography Standards

1 RSA3 Diffie-Hellman5 Cryptography mit Passworten6 Zertifikate7 Cryptographic Message Syntax8 private Schlussel9 Attributtypen10 Zertifikatsrequest11 Cryptographic Token12 Personal Information Exchange13 Elliptische Kurven15 Chipkarten Token Formate

621 PKCS7 15 November 93 RFC 3852

To do neu-20090708

CMS

Email (SMIME)

115

XML Signaturen XMLDSIG XMLENC

Dokument rarr signiertes Dokument

openssl genpkey -algorithm rsa -pkeyopt rsa_keygen_bits300mdash openssl -chek -text -noout

zu kleine Werte (iexcl256) fur den Schlussel werden nicht akzeptiert (Wert ist immer noch etwasklein) Aber die Ausgabe ist nicht ganz korrekt

openssl genpkey -algorithm rsa -pkeyopt rsa_keygen_pubexp1

ist leider moglich

63 CMS(Cryptographic Message Syntax)

rfc3852

SignedData

bull Version

bull Hash Algorithmus

bull gekapselter Inhalt

bull Certifikat Liste

bull Widerrufungsliste (Sperrinformationen)

bull

bull Signer Infos (Signaturen davon kann es mehrere geben elektronische Signatur nach demSignaturgesetz Signer Info enthalt selber noch einmal einen Signaturblock - der als Digi-tale Signatur aufgefasst werden kann)

ndash Versionndash Idndash Attributesndash Algondash sig Valuendash

bull Signer Id

bull Signed Attributes (zB Zeit Ort Message Digest) Die Signatur dieses Blockes wird er-stellt indem der Hash Wert (nur des Blockes) signiert wird Wenn es signed Attributesgibt sind also auszligerdem Hash Wert des Dokuments und Inhaltstyp(Contenttype) im Si-gned Attributes enthalten und erst dann wird der Signed Attributes Block signiert Es wirdjeweils er Hash-Algorithmus verwendet der oben genannt wird

116

Auszligerdem Signing Certificate

bull

Frage ist wo wird der Wert Signiert der sagt welcher Hash-Algorithmus verwendet wird Wennnicht konnte man eventuell den Algorithmus austauschen

Man konnte den Hash-Algorithmus als SignedAttribute einfugen

To do neu-ende

CMS (Cryptographic Message Syntax) Beschreibung des Formates mit dem man Krypto-nachrichten erstellen kann

Kryptographische Nachricht Struktur vorne Bezeichner hinten Daten Daten = irgendwasspannend Welche Typen gibt es eigentlich

Signed-data Content-Type Was jetzt kommt sind signierte Daten Liste der unterstuetzen Has-hfunktion dann gekapselter Inhalt dann eine Liste von Zertifikaten (optional) optionalSperrlisten dann Signaturbloecke (SignerInfo)

SignedData = SEQUENCE

Versionsnummer

Liste der unterstutzten Hashfunktionen

Ursprungliche Nachricht selbst

Liste von Zertifikaten Optional

Sperrlisten Optional

Signer Infos

SignedInfo = SEQUENCE

Versionsnummer

Signer Identifier (Wer der Signierer eigentlich gewesen sein soll)

Hashfunktionen die bei der Signatur verwendet wird

Signierte Attribute

Verwendete Signaturalgorithmus

Signaturwert

Unsignierte Attribute

SignerInfo = SEQUENCE

Versionsnummer

Signer Identifier (Wer der Signierer eigentlich gewesen sein soll)

Bezeichner des Hashalgorithmus mit dem die endgultige Signatur erstellt wird

Signierte Attribute Optional

117

Signatur Algorithmus

Signature SignatureValue

Unsigned Attributes Optional

SignerIdentifier = SEQUENCE

issuerAndSerialNumber

subjectKeyIdentifier (Eindeutiger Hinweis wer der Aussteller ist)

SignerInfo Signaturblock der eine Datenstruktur fuer eine Signatur bereitstellt Steht drin Ver-sionsnummer SignerIdentifier verwendeter Hash-Algorithmus dann signierte Attributeverwendeter Signaturalgorithmus Signaturwert unsignierte Attribute

SignerIdentifier Aussteller und Seriennummer oder Schluesselidentifier (subjectKeyIdenti-fier)

Signierte Attribute Sammlung von Attributen die signiert sind Was dabei sein sollte erstesAttribut Content-Type wenn die signierten Daten nicht nur Rohdaten sind sondern gekap-selte Daten eine s bestimmten Typs Ein weiteres nuetzliches Attribut Message-DigestDann Signing-Time

Content-Type Object-Identifier der einen bestimmten Typ impliziert

Message-Digest Hash der aus den Daten ausgerechnet wird Als Octet-String

Signing-Time Zeit von der behauptet wird dass die Signatur zu dieser Zeit geleistet wurde

Signatur Es werden die signierten Attribute signiert dort ist auch der Hash des Dokumentsals messageDigest enthalten Wenn keine signedAttributes existieren wird das Dokumentdirekt gehasht

Weitere sinnvolle signierte Attribute

Commitment-Type Was bedeutet die Signatur zum Beispiel virtuelle Poststelle Eingangs-stempel Auslieferung Einschreiben Urheberschaft gelesen Zeitstempel (spezielleSignatur eines authentischen Zeitservers) ist eine Information dass das Dokument vor-her existiert hat

Signing Certificate Beschreibt mit welchem Schluessel zu welchem Zertifikat ist unterschrie-ben wordenwelches Zertifikat moechte der Signierer zur Ueberpruefung verwendet ha-ben Austausch des Zertifikats fuehrt zu anderer Urheberschaft ist ein realer AngriffVerhindert die Urheberschaft auszutauschen (rfc2634 S 46) Folge mit Zertifikats HashIssuerSerial(Herausgeber und Seriennummer) (leider ist da SHA1 als Algorithmus festge-legt)

in rfc5035

Folge mit Hash-Algorithmus (optional default ist aber SHA256) Zertifikat Hash IssuerSerial (Nun Hash als Octet String)

Da der Wert des Hash Algorithmus optional ist ist diese Variante ruckwartskompatibel

118

Signing Location Ort an dem die Signatur geleistet wurde

Weitere nuetzliche unsignierte Attribute

Zeitstempel ist eine Information wann die Signatur existiert hat Hash uber die Signatur TimeServer davon Signatur

not after Information fur die Signatur

Countersignature Zweite Signatur (Gegenzeichnung) Signaturblock uber eine andere Signa-tur

(Mitsignatur Bestatigung eines signierten Dokuments wichtiges Feld fur Mehrfachsigna-turen)

Hashwert des signature Feldes (3 Hash Wert) nicht alle in einander gekappselt sonderansammlung von Signaturen

Archiv Zeitstempel neuer Hash-Algorithmus signiert Dokument alle Signaturen alle Attri-bute (signiert unsigniert)

Damit kann mann folgendes machen

2001 2009 2010

RS A512 S HA1 S HA256 S HA512

Dok S ignatur t1 t2cc at1TTYY^^bb at2 at3

Fur XML XML-DSIC XML-ENC

7 Wichtige Neuerungen bei den Versionsanderungen

bull Von 098 zu 099 Verbesserungen bei den Extensions von Certificate Revocation Lists

bull Von 097h zu 098 UTF8-Support fur das ca-Kommando

bull SHA1 ist nun default-Hash-Algorithmus statt MD5

bull Patentierte Algorithmen RC5 und MD2 mussen beim Kompilieren extra angegeben wer-den

bull Neue FIPS 180-2 Algorithmen SHA-224-256-384-512 wurden implementiert

119

bull Neuer Parameter -selfsign fur das ca-Kommando

bull IPv6 Support bei den Zertifikatserweiterungen

bull Ausweitung der Eliptischen Kurven Bibliothek

8 OpenSSL hintergehen

81 die eine Primzahl ganz klein erzeugen

bull Offnen einer Datei in genrsa cryptorsarsa_genc

bull Andern den Teil ldquo generate p and q rdquo so daszlig die eine Primzahl 10bit lang ist(bitsp=10 )

bull Wir erzeugen einen neuen rsa key openssl genrsa -out rsaweakpem 2048und erstellen hierdurch eine Primzahl mit 10 bit die andere zufallig (also so in etwa2038bit)

bull Wir schauen uns den key an openssl rsa -in rsaweakpem -text -nooutund sehen die eine Primzahl ist 35879 die andere hat 2046 bit Lange Das kann manlecker faktorisieren

bull Offnen cryptobnbn_primeh die Zahl kommt durch den kleinen Primzahltest durchdieser geht nur bis ca 17000

82 beide Primzahlen nah beieinander

bull Und wieder in rsa_genc (Zeile 136 in der do-while-Schleife hinter degenerate)

bull BN_copy(rsa-gtq rsa-gtp) wir setzen q gleich pBA_add_word(rsa-gtq 20) wir addieren 20 auf q

for(i=1 BN_is_prime_ex(rsa-gtq 5 ctx NULL) i++)

BN_add_word(rsa-gtq 2)

wir erhoehen q bis zur naechsten Primzahl

bull hierdurch erzeugen wir zwei Primzahlen die sich enorm ahnlich sind (wieder mit obigenKommandos) Der Angreifer kennt in diesem Fall den Exponenten damit ist das Verfahrenvollig unsicher

83 Vorschrift des BSI

01 le |log10 p minus log10q| also p gt10radic

2 lowast qDas kann man aber mit q =10

radic2 lowast p im Quellcode umgehen

120

84 Programmierung Zufallszahlenerzeugung und andere nette features

Die ldquocallbackrdquo Funktion gibt den Fortschritt bei Suche nach p und q als Punkt (Fermat Primzah-lentest) und Plus (Miller-Rabin-Test) aus

DatentypStruktur zum Speichern der auftretenden groszligen Zahlen Binarfeld BIGNUMp ist unsigned char

p = BN_bn2hex((RSA )pub_rsa)-gtn) Zum Ausgeben eines BIGNUMs

((pub_rsa)-gtn)d[] einzelne Teile im Datenblock eines BIGNUMs editieren

Zufallszahlen findet man in cryptorandrandh rand_libc randc

Diese beiden Kombinationen vor entsprechenden Programmen i2d oder d2i intern to data datato internpub_rsa = d2i_RSAPublickey(NULL ampstr len) (lange von str) Transfor-miert Binardaten Zeichenkette in interne public Key Datenstruktur mit ASN1

S(buf) gibt Speicherplatz frei uberschreibt ihn vorher noch einmal mit Zufallsbytes

9 Zusammenfassung

bull Symmetrische Verschlusselungsverfahren

ndash DES

64 Bit Blockchiffre

16 Runden Feistelnetzwerk mit 48 Bit Rundenschlusseln

56 Bit Schlussellange plus 8 Paritatsbits

XOR Transformationsfunktion mit S-Boxenndash IDEA

64 Bit Blockchiffre

8 Runden Feistelnetzwerk mit je 6 middot 16 Bit Rundenschlusseln

128 Bit Schlussellange

XOR ADD modulo 216 MULT modulo 216 + 1ndash Blowfish

64 Bit Blockchiffre

16 Runden Feistelnetzwerk

32-448 Bit Schlussellange

XOR Transformationsfunktion mit XOR CONCAT und viel Schlusselmaterialndash AES

121

128 192 256 Bit Blockchiffre

10 12 14 Runden Feistelnetzwerk

128 192 256 Bit Schlussellange

Substitution ShiftRow MixColumn KeyAddition

ndash RC4

Stromchiffre

10 12 14 Runden Feistelnetzwerk

variabele Schlussellange bis 2048 Bit

ndash RC5

wahlbare Blockchiffre (openssl 32 Bit)

wahlbare Runden Feistelnetzwerk (openssl 12)

wahlbare Schlussellange (openssl 128 Bit)

ndash GOST

64 Bit Blockchiffre

32 Runden Feistelnetzwerk

256 Bit Schlussellange

ADD ROT 8 S-Boxen

bull Asymmetrische Verschlusselungsverfahren

ndash RSA (Verschlusseln und Signieren)

ndash Diffie-Hellmann Schlusselaustausch

ndash ElGamal Crypto-System (basierend auf DH)

ndash Rucksackverschlusseln (gebrochen)

ndash Merkle Puzzle (viele Nachrichten)

ndash Rabin Verfahren

Zur Prufung erster Teil mit OpenSSL spielen zweiter Teil Konzepte eine Woche vor derPrufung evt fragen was dran kommen wird Prufungstermine 20072005 oder 04102005oder nach Vereinbarung

10 Mathematische Techniken

101 Multiplikatives Inverses

(nach wwwtzide˜hsLehreU9 mathD1pdf)

122

1011 Behauptung

Seien a b isin Z zwei teilerfremde ganze Zahlen dh ggT (a b) = 1 Dann existiert ein aprime isin Z mitaprime middot a equiv 1 mod b

1012 Beweis

Betrachte die Menge ak mod b|k isin N k ge 1 Da ggT (a b) = 1 gilt folgt dass ggT (ak b) = 1fur alle k isin N mit k ge 1 Denn da a teilerfremd zu b ist so gilt dies auch fur alle Potenzenvon a Daher ist die betrachtete Menge eine Untermenge der endlichen Menge x mod b|x isinZ ggT (x b) = 1 und daher selbst endlich Also kann existiert k1 k2 mit ak1 equiv ak2 mod bNehmen wir an k1 lt k2 und setzen n = k2 minus k1 dann gilt ak1 middot an = ak2 equiv ak1 mod bDaher folgern wir an equiv 1 mod b d h anminus1 middot a equiv 1 mod b Also setzen wir aprime = anminus1 und dieBehauptung ist erfullt

102 Kleiner Fermatscher Satz

1021 Behauptung

Aus der Wikipedia (unter GNU Free Documentation License)

Der kleine fermatsche Satz kurz der kleine Fermat ist ein Lehrsatz in der Zahlentheorie Ermacht eine Aussage uber die Eigenschaften von Primzahlen und wurde aufgestellt im 17 Jahr-hundert von Pierre de Fermat Dieser Satz beschreibt eine allgemein gultige Kongruenz

ap equiv a mod p

wobei a eine ganze Zahl und p eine Primzahl ist (die weitere Symbolik wird im Artikel Kon-gruenz beschrieben) Falls a kein Vielfaches von p ist kann man das Resultat in die haufigbenutzte Form

apminus1 equiv 1 mod p

bringen

1022 Beweis

Der Beweis beruht auf der Tatsache dass wenn zwei Zahlen a und b zueinander inkongruent(modulo einer festen Zahl n) sind auch die beiden Produkte x middot a und x middot b inkongruent modulon sind fur x gt 0 und ggT (x n) = 1

Denn

123

sei a b mod n n eine Primzahl a b naturliche Zahlen Angenommen

a middot x equiv b middot x mod n

fur eine naturliche Zahl x mit ggT (x n) = 1 Dann gibt es eine naturliche Zahl k so dass

a middot x minus b middot x = k middot n

x middot (a minus b) = k middot n

x = n middot (k(a minus b))

Da n eine Primzahl und x eine naturliche Zahl ist ist k(a minus b) entweder eine naturliche Zahlminus1n oder 1n Die letzten beiden Falle widersprechen der Annahme dass a b mod n dererste Fall widerspricht der Annahme dass ggT (x n) = 1 Damit ist die Annahme falsch und esgilt fur x so dass ggT (x n) = 1

a middot x b middot x mod n

Aus der Wikipedia (unter GNU Free Documentation License)

Im folgenden betrachtet man zum einen die Menge A aller Reste mod p - also alle naturlichenZahlen kleiner als p und zum anderen die Menge B die diese Reste multipliziert mit a enthaltZwei beliebige Zahlen aus A sind zueinander inkongruent modulo p Aus dem oberen Satzfolgt dass damit auch zwei beliebige Zahlen aus B zueinander inkongruent sind Dadurchergibt sich dass das Produkt uber alle Zahlen aus A kongruent zum Produkt aller Zahlen aus Bist

1 middot 2 middot 3 middot middot middot middot middot (p minus 1) equiv (1 middot a) middot (2 middot a) middot middot middot middot middot ((p minus 1) middot a) mod p

alsoW equiv W middot apminus1 mod p

wobei W das Produkt 1 middot2 middot3 middot middot(pminus1) ist Da es in Restklassenkorpern stets ein multiplikativesInverses gibt kann man diese W dividieren und man erhalt

apminus1 equiv 1 mod p

1023 Verallgemeinerung

Man kann den kleinen fermatschen Satz zum Satz von Euler verallgemeinern Fur zwei teiler-fremde Zahlen n und a gilt

aϕ(n) equiv 1 mod n

wobei ϕ(n) die Eulersche Phi-Funktion bezeichnet Diese hat als Ergebnis die Anzahl der Zah-len zwischen 1 und nminus1 welche teilerfremd zu n sind Ist n eine Primzahl so ist ϕ(n) = nminus1 sodass man Fermats kleinen Satz als Spezialfall erhalt Mit Hilfe des kleinen fermatschen Satzesentwickelte Fermat den fermatschen Primzahltest

124

1024 Praktische Anwendung auf Primzahlen

(p - a a lt p a 0)Wenn gilt apminus1 1 mod p ist dann kann p keine Primzahl sein (Umkehrung muss nicht

gelten) Wenn man mit a beiweisen kann das p keine Primzahl sein kann dann nennen wir aKanditat (Es gibt aber sogenannte Carmichaelzahlen die kein Kandidat ist)

To do nacharbeiten Carmichaelzahlen

Wenn (p minus 1) gerade ist pminus12 = k eine Ganzzahl

Ist a2k equiv 1 mod p(ak)2 equiv p(ak minus 1)(ak + 1) equiv 0 mod pAlso wenn p eine Primzahl ist dann ist entweder ak equiv 1 mod p oder ak equiv 1 mod pDaraus folgt wenn ak 1 mod p und ak minus1 mod p dann ist p keine PrimzahlSomit gilt auch wenn k gerade ist und a

k2 1 und a

k2 minus1 dann ist p keine Primzahl

Betrachten p minus 1 = 2t middot r (r ungerade) Sei a lt p und p - aIn ar a2r a22middotr a2t middotr = apminus1 (Reste mod p)Wenn die Folge nicht mit 1 endet ist p keine Primzahl Wenn vor der ersten 1 in der Folge

keine 1 steht ist p keine PrimzahlWir nennen a einen Zeugen wenn man mit a beweisen kann das p keine Primzahl istJede Zahl p die keine Primzahl ist hat mindestens 3

4 aller Zahlen a (mit ggT(a p) = 1) alsZeugen (Jeder Kandidat ist ein Zeuge)

Damit ergibt sich der Rabin-Miller-Test Wahle zufallig ein a lt p und teste ob a ein Zeugeist Mit hoher (beliebig genauer) Wahrscheinlichkeit ist p Primzahl

Bei groszligen Zahlen werden die Zeugen mehr

openssl genrsa -out keyrsa 800

Generating RSA private key 800 bit long modulus

+++++++

+++++++

e is 65537 (0x10001)

Generiert den Schlussel und speichert in rsquokeyrsarsquo Punkte Bedeutet keine kleine PrimzahlRabin-Miller Test schlagt fehl Plus ist ein erfolgreicher Rabin Miller Test bei groszligeren Zahlenbrauch man weniger Tests da es mehr Zeugen gibt

[]

103 Chinesischer Restklassensatz

(nach wwwtzide˜hsLehreU9 mathD1pdf)

125

1031 Behauptung

Seien m1m2 mr paarweise teilerfremde ganze Zahlen d h ggT (mim j) = 1 fur alle i j(i j isin 1 2 r) und sei M = m1 middotm2 middotmr Dann existiert fur jede Liste a1 ar mit 0 le ai lt

mi fur 1 le i le r genau ein x isin Z mit 0 le x lt M welches effizient berechnet werden kann undfur das gilt

x equiv a1 mod m1

x equiv a2 mod m2

x equiv ar mod mr

Bemerkung Es ist leicht einzusehen dass jedes xprime isin Z mit xprime = x + k middot M fur ein k isin Z d hxprime equiv x mod M genau dasselbe Gleichungssystem lost wie x Der Beweis wird zeigen dass furein gegebenes x nur xprime von dieser Form dasselbe Gleichungssystem losen konnen

1032 Beweis

Zunachst beweisen wir die Existenz und setzen dazu Mi = Mmi daher gilt ggT (Mimi) = 1Aus diesem Grund existiert auch ein multiplikatives Inverses Ni isin Z mit Mi middot Ni equiv 1 mod mi

(vgl multiplikative Inverse) Zu beachten ist jedoch dass fur alle j isin 1 r mit i j stetsMi middot Ni equiv 0 mod m j gilt Nun definieren wir x via

x equivrsum

i=1

ai middot Mi middot Ni mod M

Fur jedes i existiert ein v isin Z so dass x sich folgendermaszligen darstellen lasst

x = Mi middot Ni middot ai + v middot mi

Dies gilt da jedes M j mit j i mi als Faktor enthalt Offensich erfullt x also die obigen Glei-chungen x ist das einzige mit 0 le x lt M welches fur die gegebene Liste a1 a2 ar alleGleichungen lost denn falls xprime und xprimeprime zwei verschiedene Losungen sind so gilt xprime minus xprimeprime equiv 0mod mi fur alle i isin 1 r d h xprimeminus xprimeprime ist ein Vielfaches aller mi und damit auch von M da nachVoraussetzung ggT (mim j) = 1 fur alle i j isin 1 r mit i j erfullt ist Somit folgt xprime equiv xprimeprime

mod M d h 0 le xprime xprimeprime lt M kann nicht auftreten und der Beweis ist abgeschlossen

126

104 Square and multiply

Der folgende rekursive Algorithmus berechnet xn fur naturliche Zahlen x und n indem sukzes-sive der Exponent reduziert wird

bull Falls n = 1 xn = x

bull Sonst falls n gerade xn = (x2)n2

bull Sonst xn = x middot (x2)(nminus1)2

Damit kann xn in O(ln(n)) Rechenschritten (quadrieren und multiplizieren) berechnet werdenindem in jedem Schritt des Algorithmus der Exponent halbiert wird und hochstens vier Berech-nungen ausgefuhrt werden

105 Montgomery Reduktion (Moduloberechnung ohne Division)

Heute was ganz verrucktes Modulo-Multiplikation ohne Division

Problem bei RSA und anderen Algorithmenm Modul gegeben und g Zahl gegeben und man rechnet aus ga mod mAufwand der Berechnung mit Square and Multiply Groszlige des Exponenten in Bits Multiplika-tionen + gleichviele ModulooperationenBerechnung von x middot y mod m = x middot y minus (x middot y div m) lowast mDivision aufwendig Daher Methode dies ohne Division bzw mit einer schmerzfreien Divisiondurch eine Zweierpotenz zu tun Dafur Kosten von Hin- und RucktransformationenHier Skizze 1xrarr X = x middot r mod myrarr Y = y middot r mod mX lowast Y = X middot Y middot rminus1 = x middot y middot r mod m

Wir berechnen t0 equiv minusmminus1 mod r (Preprocessing)

1 x minusrarr X = x middot r mod m

2 y minusrarr Y = y middot r mod m

3 X lowast Y = X middot Y middot rminus1 mod m= x middot r middot y middot r middot rminus1 = x middot y middot r mod m

Zur Bestimmung von X lowast Y t1 = X middot Y echte Multiplikationt2 = t1 middot t0 mod r Multiplikation untent3 = (t1 + t2 middot m) div r Multiplikation obent3 = X lowast Y oder (t3 minus m) = X lowast Y

127

1 t3 ist durch r teilbar

2 t3 equiv X middot Y middot rminus1 mod m

3 0 le t3 le 2m

Zu 1 t1 + t2 middot mequiv t1 + t1 middot t0 middot m mod requiv t1 + t1 middot m middot (minusm)minus1 mod requiv t1 minus t1 equiv 0 mod r

Zu 2 (t1+t2middotm)r = t3 mod m

(t1 middot t2 middot m) middot rminus1 mod mequiv t1 middot rminus1 + t2 middot rminus1 middot mequiv X middot Y middot rminus1 mod m

Beispiel 5 lowast 3 =

t1 = 15t2 = 15 middot 23 mod r = 45t3 = 15 + 45 middot 13 = 6

Zu 3t1 le (m minus 1)2

t2 middot m lt r middot mt1 + t2 middot m lt 2 middot r middot m

t3 lt 2 middot m

t3 equiv X middot Y middot rminus1 mod mx lowast r2 = X = x middot r mod mX lowast 1 = x mod m

Beispiel m = 13 r = 100 t0 = 23

r mod m r = 9 mod 13r2 = 3 mod 13

Ziel 6 middot 5 mod 13

6 lowast 3 = 25 lowast 3 = 6

128

2 lowast 6 =

t1 =

t2 =

t3 = xx

x lowast 1 =

Wenn eine Division langer als 1 5 Multiplikationen dauert dann lohnt sich das Verfahren DerErfinder heisst ubrigens Peter L Montgomery (Montgomery Reduktion) wwwmiinformatikuni-frankfurtdeteachingws0001krypto algomontgomerypdf

Montgomery-Multiplikation

To do siehe Mathematischer Anhangzusammenfugen

Die Reduktion modulo m erfordert eine Division aber Divisionen sind rsquoteuerrsquo

Dies kann man aber wie folgt vereinfachen

Um die Division zu vermeiden rsquotransformiertrsquo man die Zahlen

Sei gesucht das Produkt x middot y mod m

x minusrarr X y minusrarr Y x middot y minusrarr X lowast Y

R = (zweierPotenz) gt m und die Division durch R muss einfach sein

X = x middot R mod m

X lowast Y = X middot Y middot Rminus1 mod m (wobei die modulo Reduktion nun nicht mehr jedes mal ausgefuhrtwerden muss sonder nur am Anfang und am Ende der rsquoTransformationrsquo)

1 Berechne mprime = minusmminus1 mod R

(minusmR) = 1 rArr XGCD mprime middot m = minus1 mod R

2 t = X middot Y (echte Multiplikation)

3 t1 = t middotmprime mod R (echte Multiplikation und oben abschneiden also eine leichtere moduloReduktion da R eine zweier Potenz ist) (dabei gilt t2 lt m2 + R middot m)

4 t2 = t + t1 middot m (echte Multiplikation und eine Addition) (dabei gilt t3 lt(m+R)middotR

R = 2m)

5 t3 = t2divR (also rsquounten abschneidenrsquo)

6 Wenn t3 gt m dann t3 = t3 minus m

129

Nun ist t3 = X lowast Y Dafur muss t3 lt m sein oder in Schritt 6 t3 lt 2m sein

Wir mussten also prufen

1 t3 lt m

2 Division in 5 rsquogeht aufrsquo

t2 ist durch r teilbar

t2 mod R equiv (t + t1 middot m) equiv t + (t middot mprime) middot m mod R equiv t + t(minus1) mod R equiv 0 mod R

3 t3 = X lowast Y

t3 middot R mod m equiv t2R middot R mod m equiv t2 equiv t + t1 middot m equiv t mod m equiv X middot Y mod m

Wir haben also den folgenden Aufwand

1 rsquoTransformationrsquo

2 rsquoRechnungrsquo

3 Zuruck rsquotransformierenrsquo

x lowast R2 = x middot R2 middot Rminus1 mod m = x middot R = X mod m

X lowast 1 = X middot 1 middot Rminus1 equiv x middot R middot Rminus1 equiv x mod m

Man benotigt also zwei zusatzliche Operationen zur transformation Dafur kommt die Operationrsquorsquo ohne Divisionen aus

Beispiel m = 17

R = 100

7 middot 11 mod 17

x lowast y mod mdarr darr

X Y= =

(x middot R) mod m lowast (y middot R) mod m

m1 = minusmminus1 mod 100

suche also ein m1 mit m1 middot 17 = minus1 mod 100

m1 = 47

130

To do Bsp Magma Quelltext siehe Homepage

Bem dazu Wenn R groszlig genug ist kann man die Subtraktion von m weglassen

Mathematischer Hintergrund (Zm+ middot)simminusrarr (Zm+ lowast) Was ist das Einselement und das

Inverse

106 Nochwas

vielleicht

zur Prufung Zwei Teile (ein theoretischer ein praktischer) Ein openssl-Kommando das in derVL nicht behandelt wurde wird drankommen (zum Beispiel speed ca etc) Theoretischer Teil

1 symmetrische Verfahren (was sind symmetrische Verfahren wodurch charakterisiert)

2 Integritatsschutz (wie kann man Integritatsschutz gewahrleisten)

3 asymmetrische verfahren (siehe 1)

4 Signatur (was sind Signaturen wofur verwendet man sie was ist ˜konzept was ist sicherwas ist unsicher)

5 Vertrauensstruktur (zum Beispiel PGP)

6 Client-Server-Authentisierung (SSL-Protokoll Kerberos)

7 Sicherheitsparameter (wo sind die welchen Einfluszlig auf die Sicherheit haben sie)

8 X509 (elektronische Identitat)

9 RFC-Security (3280 3279 3446 )

Mathematische Verfahren

1 Square and Multiply Double and Add

2 Euklidischer Algorithmus

3 RSA DH

4 DSA

5 AES

6 das eine oder andere symmetrische Verfahren Strom-Blockchiffre

7 Elliptische Kurven eher nicht reicht zu wissen dass man mit Addition in EK das gleicheerreichen kann wie mit Multiplikation im Restklassenkorper

8 kleiner Fermat eher nicht

131

9 Montgomery-Multiplikation vielleicht auch nicht sollte aber bekannt sein

Fur MD5- AES- etc Grundfunktionen reicht evt wissen wo man nachschauen muss

Dann nachweisen dass man mit Openssl spielen kann

1 Verschlusseln mit DES3DESBFAES

2 Prufsummenberechnung

3 Konfigurationsfile

4 RSA-Verschlusselung

5 098 ndash 097 (dynamisch)

6 Zertifikat

7 DSA-Verschlusselung

8 Passworter (passwd) und Salt

9 E-Mail-Nachricht erstellen und sichern (SMIME-Anwendung)

Zum Punkt Ich mochte eine 1 haben was muss ich dafur tun Was haben sie ausserhalb derVorlesung schonmal gelesen Was fehlte ihnen an der Vorlesung was fanden sie doof

132

  • 1 Einfuumlhrung
    • 11 Verschluumlsselung
    • 12 Beispiel rot13
    • 13 Block-Chiffre
    • 14 Strom-Chiffre
    • 15 Angriffstypen
      • 151 Differentielle Kryptoanalysis
        • 16 Base64
          • 2 OpenSSL
          • 3 Symmetrische Verschluumlsselungsverfahren
            • 31 Feistel-Chiffren
            • 32 DES - Data Encryption Standard
              • 321 Schluumlsselauswahl
              • 322 Funktionsweise
              • 323 Schwachstellen und Unsinnigkeiten
              • 324 spezielle Optionen bei openssl
              • 325 DESECB - Electronic Code Book
              • 326 DESCBC - Cipher Block Chaining
              • 327 DESOFB - Output Feed Back
              • 328 DESCFB - Cipher Feed Back
              • 329 CTR Mode CCM
              • 3210 TEA-Algorithmus
              • 3211 DES-X
                • 33 IDEA International Data Encryption Algorithm
                  • 331 Schluumlsselauswahl
                  • 332 Funktionsweise
                  • 333 Pseudocode-multiplikation
                  • 334 Schwachstellen
                    • 34 Blowfish
                      • 341 Initialisierung
                      • 342 Verschluumlsselung
                        • 35 AES Advanced Encryption Standard
                          • 351 Wiederholung-Byteoperation
                          • 352 Uumlberblick
                          • 353 mathematische Grundlagen
                            • 36 RC4 Rons Cipher 4
                              • 361 Geschichte
                              • 362 Beschreibung
                              • 363 Der Pseudo-Zufalls-Algorithmus
                              • 364 Der Schluumlsselerzeugungs-Algorithmus
                              • 365 Implementation
                              • 366 Sicherheit
                              • 367 Fluhrer Mantin und Shamir Angriff
                                • 37 RC5 Rons Cipher 5
                                  • 371 Verschluumlsselung
                                  • 372 Schluumlsselexpansion
                                    • 38 GOST 28147-89 Gosudarstvennyi Standard Soyuza SSR nicht in OpenSSL
                                    • 39 FazitWie koumlnnte bei einen Symmetrischen Algorithmus die Sicherheit erhoumlhen
                                      • 4 Asymmetrische Verschluumlsselungsverfahren
                                        • 41 Einfuumlhrung
                                          • 411 Beispiel
                                            • 42 Geschichte
                                            • 43 Einige Theoretische Grundlagen
                                              • 431 Kleiner Fermat (oder kleiner Fermatscher Satz)
                                              • 432 Euklidischer Algorithmus
                                              • 433 Beispiel
                                                • 44 RSA Rivest Shamir Adleman
                                                  • 441 Funktionsweise des RSA-Verfahrens
                                                  • 442 Beweis der Funktionsweise
                                                    • 45 Schwaumlchen von RSA
                                                    • 46 Fuktionen in OpenSSL
                                                      • 461 genrsa
                                                      • 462 rsa
                                                      • 463 rsautl
                                                      • 464 PKCS
                                                      • 465 OAEP - Optimal Asymmetric Encryption Padding
                                                      • 466 Wie erkennt man an Ciphertexten den Verschluumlsselungsalgorithmus- DER ASN1
                                                      • 467 Umgehen mit den Schluumlsselkomponenten
                                                        • 47 Miller-Rabin Test
                                                        • 48 Diffie-Hellman-Schluumlsselaustausch
                                                        • 49 ElGamal-Cryptosystem
                                                        • 410 Wiederholung DH
                                                          • 4101 Beispiel
                                                            • 411 was anderes
                                                            • 412 Elliptische Kurven
                                                            • 413 Elliptische Kurven Nachtrag
                                                            • 414 Rucksack-Verschluumlsseln
                                                              • 4141 Beispiel
                                                                • 415 Merkle Puzzle
                                                                • 416 Rabin-Verfahren und Wurzelziehen
                                                                  • 4161 Schluumlsselgenerierung
                                                                  • 4162 Kongruenzbedingung
                                                                  • 4163 Verschluumlsselung
                                                                  • 4164 Entschluumlsselung
                                                                    • 417 Angriffe auf asymmetrische Verschluumlsselungsverfahren
                                                                      • 4171 1 Angriff Common modulus attack
                                                                      • 4172 2 Angriff kleiner geheimer Exponent d
                                                                      • 4173 3 Angriff Faktorisieren
                                                                      • 4174 Echt schlechte RSA-Schluumlssel
                                                                      • 4175 Schnelles Faktorisieren bei Fehler im System
                                                                      • 4176 Angriff mit gewaumlhltem Chiffretext
                                                                          • 5 Signaturmechanismen
                                                                            • 51 Integritaumltsschutz und Hashfunktionen
                                                                              • 511 Schluumlssellose Hashfunktion (Pruumlfsummen ohne Schluumlssel)
                                                                              • 512 Demonstration Faumllschung
                                                                                • 52 Unterschied MD5 und SHA
                                                                                • 53 Secure Hash Standard SHA-2
                                                                                  • 531 Problem bei MD5 und SHA-0
                                                                                  • 532 MACs (Message Authentication Codes) (Pruumlfsummen mit Schluumlsseln)
                                                                                    • 54 Whirlpool
                                                                                    • 55 Zusammenfassung
                                                                                    • 56 Digitale Signaturen
                                                                                      • 561 RSA
                                                                                      • 562 Eigenschaften eines asymmetrischen Verschluumlsselungsverfahren
                                                                                      • 563 RSASSA-PSS-Padding
                                                                                      • 564 DSA
                                                                                      • 565 ECDSA - DSA mit Elliptischen Kurven
                                                                                        • 57 Widerrufen von Zertifikaten
                                                                                        • 58 Was es noch so gibt
                                                                                          • 581 blinde Signaturen
                                                                                          • 582 anonyme Signaturen
                                                                                              • 6 Zertifikate
                                                                                                • 603 X509
                                                                                                  • 604 Erweiterungen
                                                                                                  • 605 Erzeugung
                                                                                                  • 606 Guumlltigkeit
                                                                                                    • 61 Praktische Ausschlachtung von kryptografischen Algorithmen mit SMIME und PKCS7
                                                                                                    • 62 PKCS
                                                                                                      • 621 PKCS7 15 November 93 RFC 3852
                                                                                                        • 63 CMS(Cryptographic Message Syntax)
                                                                                                          • 7 Wichtige Neuerungen bei den Versionsaumlnderungen
                                                                                                          • 8 OpenSSL hintergehen
                                                                                                            • 81 die eine Primzahl ganz klein erzeugen
                                                                                                            • 82 beide Primzahlen nah beieinander
                                                                                                            • 83 Vorschrift des BSI
                                                                                                            • 84 Programmierung Zufallszahlenerzeugung und andere nette features
                                                                                                              • 9 Zusammenfassung
                                                                                                              • 10 Mathematische Techniken
                                                                                                                • 101 Multiplikatives Inverses
                                                                                                                  • 1011 Behauptung
                                                                                                                  • 1012 Beweis
                                                                                                                    • 102 Kleiner Fermatscher Satz
                                                                                                                      • 1021 Behauptung
                                                                                                                      • 1022 Beweis
                                                                                                                      • 1023 Verallgemeinerung
                                                                                                                      • 1024 Praktische Anwendung auf Primzahlen
                                                                                                                        • 103 Chinesischer Restklassensatz
                                                                                                                          • 1031 Behauptung
                                                                                                                          • 1032 Beweis
                                                                                                                            • 104 Square and multiply
                                                                                                                            • 105 Montgomery Reduktion (Moduloberechnung ohne Division)
                                                                                                                            • 106 Nochwas

    Inhaltsverzeichnis

    1 Einfuhrung 511 Verschlusselung 612 Beispiel rot13 613 Block-Chiffre 714 Strom-Chiffre 815 Angriffstypen 8

    151 Differentielle Kryptoanalysis 916 Base64 10

    2 OpenSSL 10

    3 Symmetrische Verschlusselungsverfahren 1231 Feistel-Chiffren 1232 DES - Data Encryption Standard 14

    321 Schlusselauswahl 15322 Funktionsweise 16323 Schwachstellen und Unsinnigkeiten 17324 spezielle Optionen bei openssl 18325 DESECB - Electronic Code Book 20326 DESCBC - Cipher Block Chaining 21327 DESOFB - Output Feed Back 23328 DESCFB - Cipher Feed Back 24329 CTR Mode CCM 253210 TEA-Algorithmus 263211 DES-X 28

    33 IDEA International Data Encryption Algorithm 28331 Schlusselauswahl 29332 Funktionsweise 29333 Pseudocode-multiplikation 30334 Schwachstellen 31

    34 Blowfish 31341 Initialisierung 33342 Verschlusselung 34

    35 AES Advanced Encryption Standard 35351 Wiederholung-Byteoperation 35352 Uberblick 35353 mathematische Grundlagen 38

    36 RC4 Ronrsquos Cipher 4 39361 Geschichte 40362 Beschreibung 41363 Der Pseudo-Zufalls-Algorithmus 41364 Der Schlusselerzeugungs-Algorithmus 42

    2

    365 Implementation 43366 Sicherheit 43367 Fluhrer Mantin und Shamir Angriff 44

    37 RC5 Ronrsquos Cipher 5 44371 Verschlusselung 44372 Schlusselexpansion 45

    38 GOST 28147-89 Gosudarstvennyi Standard Soyuza SSR nicht in OpenSSL 4539 FazitWie konnte bei einen Symmetrischen Algorithmus die Sicherheit erhohen 47

    4 Asymmetrische Verschlusselungsverfahren 4741 Einfuhrung 47

    411 Beispiel 4842 Geschichte 4843 Einige Theoretische Grundlagen 49

    431 Kleiner Fermat (oder kleiner Fermatrsquoscher Satz) 49432 Euklidischer Algorithmus 49433 Beispiel 51

    44 RSA Rivest Shamir Adleman 54441 Funktionsweise des RSA-Verfahrens 54442 Beweis der Funktionsweise 55

    45 Schwachen von RSA 5646 Fuktionen in OpenSSL 56

    461 genrsa 56462 rsa 57463 rsautl 58464 PKCS 58465 OAEP - Optimal Asymmetric Encryption Padding 59466 Wie erkennt man an Ciphertexten den Verschlusselungsalgorithmus- DER

    ASN1 60467 Umgehen mit den Schlusselkomponenten 61

    47 Miller-Rabin Test 6248 Diffie-Hellman-Schlusselaustausch 6449 ElGamal-Cryptosystem 66410 Wiederholung DH 66

    4101 Beispiel 67411 was anderes 67412 Elliptische Kurven 67413 Elliptische Kurven Nachtrag 70414 Rucksack-Verschlusseln 71

    4141 Beispiel 71415 Merkle Puzzle 71416 Rabin-Verfahren und Wurzelziehen 72

    4161 Schlusselgenerierung 724162 Kongruenzbedingung 73

    3

    4163 Verschlusselung 734164 Entschlusselung 74

    417 Angriffe auf asymmetrische Verschlusselungsverfahren 744171 1 Angriff Common modulus attack 754172 2 Angriff kleiner geheimer Exponent d 754173 3 Angriff Faktorisieren 754174 Echt schlechte RSA-Schlussel 754175 Schnelles Faktorisieren bei Fehler im System 764176 Angriff mit gewahltem Chiffretext 76

    5 Signaturmechanismen 7751 Integritatsschutz und Hashfunktionen 77

    511 Schlussellose Hashfunktion (Prufsummen ohne Schlussel) 80512 Demonstration Falschung 83

    52 Unterschied MD5 und SHA 8453 Secure Hash Standard SHA-2 85

    531 Problem bei MD5 und SHA-0 86532 MACs (Message Authentication Codes) (Prufsummen mit Schlusseln) 87

    54 Whirlpool 8955 Zusammenfassung 8956 Digitale Signaturen 91

    561 RSA 92562 Eigenschaften eines asymmetrischen Verschlusselungsverfahren 93563 RSASSA-PSS-Padding 95564 DSA 97565 ECDSA - DSA mit Elliptischen Kurven 99

    57 Widerrufen von Zertifikaten 10358 Was es noch so gibt 105

    581 blinde Signaturen 105582 anonyme Signaturen 105

    6 Zertifikate 105603 X509 107604 Erweiterungen 108605 Erzeugung 111606 Gultigkeit 112

    61 Praktische Ausschlachtung von kryptografischen Algorithmen mit SMIME undPKCS7 114

    62 PKCS 115621 PKCS7 15 November 93 RFC 3852 115

    63 CMS(Cryptographic Message Syntax) 116

    7 Wichtige Neuerungen bei den Versionsanderungen 119

    4

    8 OpenSSL hintergehen 12081 die eine Primzahl ganz klein erzeugen 12082 beide Primzahlen nah beieinander 12083 Vorschrift des BSI 12084 Programmierung Zufallszahlenerzeugung und andere nette features 121

    9 Zusammenfassung 121

    10 Mathematische Techniken 122101 Multiplikatives Inverses 122

    1011 Behauptung 1231012 Beweis 123

    102 Kleiner Fermatscher Satz 1231021 Behauptung 1231022 Beweis 1231023 Verallgemeinerung 1241024 Praktische Anwendung auf Primzahlen 125

    103 Chinesischer Restklassensatz 1251031 Behauptung 1261032 Beweis 126

    104 Square and multiply 127105 Montgomery Reduktion (Moduloberechnung ohne Division) 127106 Nochwas 131

    1 Einfuhrung

    Literaturempfehlungen

    bull Alfred J Menezes Paul C van Oorschot Scott A Vanstone - Handbook of Applied Cryp-tography CRC Press 1996 ISBN 0849385237 httpwwwcacrmathuwaterloocahac

    bull John Viega Matt Messier Pravier Chandra - Network Security with OpenSSL OrsquoReilly2002 ISBN 059600270X

    bull Michael Welschenbach - Kryptographie in C und C++ Springer 2001 ISBN 3540420614

    bull Bruce Schneier - Applied Cryptography Wiley 2nd rev 1996 ISBN 3540420614

    Prufung 24 08 2009

    In der Vorlesung wird ofters der rsquoMagma Calculatorrsquo verwendet Dabei handelt es sich um dieOnline-Version eines Computer Algebra Systems (httpmagmamathsusydeduaucalc) Imfolgenden werden Berechnungen die mit Magma durchgefuhrt wurden mit rsquoMagmarsquo gekenn-zeichnet

    5

    Kryptographie ist einer der beiden Bestandteile der Kryptologie der andere ist Kryptoanalyse

    Kryptographie Entwurf von Sicherheitsalgorythmen die Daten vor Mitlesen und Verandernschutzen

    Kryptoanalyse Aktives Analysieren von kryptographischen Verfahren

    11 Verschlusselung

    Verschlusselung benotigt Menge von Schlusseln

    N - Algorithmus (zB DES) - c

    E

    6

    K

    N Menge der NachrichtenK Menge der Schlusselc Verschlusselte Nachricht

    foralln isin N k isin K c = E(n k) eindeutig

    exist Algorithmus D (decrypt) mit aus c = E(n k) folgt existkprime isin K mit n = D(c kprime)

    12 Beispiel rot13

    N = Alphabetn isin N

    c = n + 13 mod 26Dies ist kein Verschlusselungsalgorithmus da es nur einen Schlussel gibtc = n + k mod 26Dies ist ein Verschlusselungsalgorithmus da es eine Menge von Schlusseln gibt

    c = E(n k) = n + kn = D(c k) = c minus kE(n 13) = D(n 13)

    6

    Variante der Betrachtung kprime = 26 minus k rArr D(c kprime) = E(c kprime)Verschlusseln = Entschlusseln = Vorteil nur ein Algorithmus

    Berechnungk rarr kprime (vernunftig im allgemeinen Sinne)E middot D = IdC

    D middot E = IdN

    Man unterscheidet bei Verschlusselungsverfahren

    symmetrisch k hArr kprime kennt man einen Schlussel kennt man beide

    asymmetrisch k rArr kprime oder k lArr kprime aus dem einen Schlussel kann man denanderen nicht erfahren

    13 Block-Chiffre

    Ausdehnung der Verschlusselung von Alphabet auf Zeichenketten mi Die Originalnachrichtwird in Blocke zerlegt die gleich verschlusselt werden Zum Beispiel

    m = (m1m2m3 )

    k = (k1 k2 k3 )

    ci = mi oplus ki

    Aus der Wikipedia (unter GNU Free Documentation License)

    Symmetrische Verschlusselungsalgorithmen sind oft Blockverschlusselungsalgorithmen (auchBlockchiffre) Bevor sie Daten verschlusseln werden diese zunachst in Blocke unterteilt de-ren Groszlige durch den Algorithmus vorgegeben ist Die Verschlusselungsroutinen setzen jedochganze Blocke voraus somit muss meistens der letzte Block mit Zufallsdaten aufgefullt werden(bei einer Blockgroszlige von 128 Bit werden die verschlusselten Daten somit 0 bis 127 Bit groszligerals der Klartext)Die Blocke werden anschlieszligend nacheinander verschlusselt Dabei ist es durchaus ublich dassdas Ergebnis der Verschlusselung eines Blocks bei der Verschlusselung des nachsten Blocksals Eingangswert mitverwendet wirdWichtige Parameter einer Blockchiffre sind somit die Blocklange (auch Blockgroszlige) und dieSchlussellange

    7

    14 Strom-Chiffre

    Aus der Wikipedia (unter GNU Free Documentation License)

    Eine Strom-Chiffre ver- bzw entschlusselt Nachrichten Bit fur Bit bzw Zeichen fur ZeichenDies steht im Gegensatz zu Block-Chiffren wo Nachrichten immer in gleich groszligen Blockenverarbeitet werden

    Strom-Chiffren sind symmetrische Verschlusselungsalgorithmen die sehr schnell arbei-ten

    Zur Generierung eines Geheimtextes wird zunachst ein Schlusselstrom erzeugt DieserSchlusselstrom ist eine Folge von Zeichen die nur mit Kenntnis des geheimen Schlussels er-zeugt werden kann (in der Regel eine Pseudozufallsfolge) Danach wird jedes Zeichen desSchlusselstroms mit einem Zeichen des Klartextes verknupft Die Verknupfungsoperation istXOR Um Geheimtexte wieder zu entschlusseln wird der Geheimtext mit dem Schlusselstromverknupft

    Beispiele fur Strom-Chiffren sind die XOR-Verschlusselung oder die Entwicklung vonRonald L Rivest namens RC4

    15 Angriffstypen

    m Nachrichtc verschlusselte Nachrichtk Schlussel

    Kommunikation zwischen Alice und Bob mit Angreifer Eve Vorraussetzung Eve kennt dasVerfahren

    1 Chiffre ist bekannt(ciphertext only Chiffre allein Angriff)m k gesucht

    2 (mi ci)-Paare sind bekannt ci = E(kmi)(known plain text bekannter Klartext Angriff)gesucht k und weitere mi

    3 wahlbarer Klartext chosen plaintext(zB Eve hat Encoder in die Hande bekommen)

    4 wahlbarer Chiffretext chosen ciphertext(zB Eve hat Decoder in die Hande bekommen)

    Generelle Schutzmechanismen zum sicherer machen

    8

    1 Klartextbits breit auf Chiffre verteilen und Schlusselbits uberall einbringen um die Si-cherheit zu erhohen bzw einen anderen Algorithmus verwenden um dies zu erreichen

    2 Algorithmus skalieren Lange des Schlussels mehr Runden

    3 Schwachen zusatzlichen Schutz bietet doppeltes verschlusseln zum BeispielAlgorithmus hat 64-Bit Sicherheit (Brute Force Angriff Aufwand von 264) doppelt ver-schlusselt hat er 65-Bit Sicherheit wegen

    rdquomeet in the middle Angriffldquo Ist known plain text attack m ist der Klartext k der Schlusselfur den ersten Algorithmus n der daraus resultierende ldquoZwischentextrdquo l der Schlussel furden zweiten Algorithmus und c die endgultige verschlusselte Nachricht Der Angreiferinist ein m und das dazu gehorige c bekannt Sie erzeugt sich nun alle Werte die k an-nehmen kann und alle Werte die l annehmen kann und berechnet zu jedem ki sowie zujedem li ein ni als E(kim) bzw D(li c) Damit muss sie 2 lowast 264 Paare von Schlusselnund ldquoZwischentextenrdquo erzeugen und speichern In der Menge der ni gibt es nun (da beideVerschlusselungen eindeutig sind) genau zwei - eines als Entschlusselung von c eines alsVerschlusselung von m - die ubereinstimmen Deren Schlussel sind diejenigen die auchbei der Erzeugung von c verwendet wurden Das Auffinden dieses Paares kann durch ge-schickte Speicherung der ni ki und li zum Beispiel in einer Hashtabelle in logarithmischerZeit bewerkstelligt werdenDaher Sicherheit des Algorithmus ist mindestens so stark wie jeder einzelne Algorithmusaber moglicherweise nicht viel besser

    4 Dreifach verschlusseln und Kombination von AlgorithmenDer Meet-in-the-middle attack schlagt hier fehl da der Speicher- und Rechenaufwandnun quadratisch mit dem Werteraum der Schlussel wachst Bei der Verwendung einesschwachen Algorithmus der anderweitig gebrochen werden kann wird die Kombinationjedoch wieder anfallig fur meet-in-the-middle

    5 Block-Chiffre + Strom-Chiffre kombinierenStrom-Chiffre sehr langer Schlussel c = p oplus k k zufallig gewahlt (moglichst echter phy-sikalischer Zufall) zwei Folgen CK rarr in Block-Chiffrerarr Blockweise C2 = E(S 1K)C1 = E(S 2C)Eine Strom-Chiffre und zwei Block-Chiffren Brechen dieser Kombination = Aufwandaddiert sich aber doppelte Ausgabelange

    151 Differentielle Kryptoanalysis

    man wahle Klartexte P1 P2 mit ganz bestimmten Unterschied P1 oplus P2 = D Bei der Ver-schlusselung ergibt sich dann fur die Chiffretexte C1C2 mit bestimmten Dprime = C1 oplus C2 das ineinen bestimmetn Zusammenhang zu D steht

    Bleiben die Schlussel immer gleich so kann man sich langsam mit D1 Dn an den Klartextranprobieren ()

    9

    16 Base64

    Aus der Wikipedia (unter GNU Free Documentation License)

    Base64 [] beschreibt ein Verfahren zur Kodierung von 8-Bit-Binardaten (z B ausfuhrbareProgramme ZIP-Dateien) in eine Zeichenfolge die nur aus wenigen Codepage-unabhangigenASCII-Zeichen besteht Im Zusammenhang mit OpenPGP wird noch eine Prufsumme (CRC-24) angehangt und es als Radix-64 bezeichnet

    Es findet im Internet-Standard MIME (Multipurpose Internet Mail Extensions) Anwen-dung und wird damit hauptsachlich zum Versenden von E-Mail-Anhangen verwendet Notigist dies um den problemlosen Transport von beliebigen Binardaten zu gewahrleisten da SMTPin seiner ursprunglichen Fassung nur fur den Versand von 7-Bit ASCII-Zeichen ausgelegt war

    Zur Kodierung werden die Zeichen A-Z a-z 0-9 + und verwendet sowie = am EndeDa diese Zeichen auch in EBCDIC vorkommen (wenn auch an anderen Code-Positionen) istdamit auch ein Datenaustausch zwischen nicht-ASCII-Plattformen moglich

    Zur Kodierung werden jeweils drei Byte des Bytestroms (=24 bit) in vier 6-bit-Blockeaufgeteilt Jeder dieser 6-bit-Blocke bildet eine Zahl zwischen 0 und 63 Diese Zahlen werdenan Hand der nachfolgenden Umsetzungstabelle in ldquodruckbare ASCII-Zeichenrdquo umgewandeltund ausgegeben Nach jeweils 76 ausgegebenen Zeichen wird spatestens ein Zeilenumbrucheingefugt welcher jedoch ansonsten fur die Kodierung nicht von Belang ist

    Falls die Gesamtanzahl der Eingabebytes nicht durch drei teilbar ist wird der zu kodieren-de Text am Ende mit Fullbytes aufgefullt Um dem Dekodierer mitzuteilen wie viele Fullbytesangefugt wurden werden die 6-Bit-Blocke die vollstandig aus Fullbytes entstanden sind mitrsquo=rsquo kodiert Somit konnen am Ende einer Base64-kodierten Datei 0 1 oder 2 rsquo=rsquo-Zeichenauftreten

    Die angesprochene Transitionstabelle ist eine alphabetisch bzw numerisch aufsteigende Anord-nung zuerst der Groszligbuchstaben dann der Kleinbuchstaben schlieszliglich der Ziffern und am Endeder beiden Zeichen rsquo+rsquo und rsquorsquo in dieser Reihenfolge

    2 OpenSSL

    Optionen fur openssl ciphername oder openssl enc -ciphername

    OPTIONS

    -in filename

    the input filename standard input by default

    -out filename

    the output filename standard output by default

    10

    -pass arg

    the password source

    -salt

    use a salt in the key derivation routines

    -nosalt

    donrsquot use a salt in the key derivation routines

    -e

    encrypt the input data this is the default

    -d

    decrypt the input data

    -a

    base64 process the data This means that if encryption is

    taking place the data is base64 encoded after encryption

    If decryption is set then the input data is base64 decoded

    before being decrypted

    -A

    if the -a option is set then base64 process the data on

    one line

    -k password

    the password to derive the key from This is for

    compatibility with previous versions of OpenSSL Superseded

    by the -pass argument

    -kfile filename

    read the password to derive the key from the first line

    of filename This is for compatibility with previous

    versions of OpenSSL Superseded by the -pass argument

    -S salt

    the actual salt to use this must be represented as a

    string comprised only of hex digits

    -K key

    the actual key to use this must be represented as a string

    comprised only of hex digits If only the key is specified

    the IV must additionally specified using the -iv option

    11

    When both a key and a password are specified the key given

    with the -K option will be used and the IV generated from

    the password will be taken It probably does not make much

    sense to specify both key and password

    -iv IV

    the actual IV to use this must be represented as a string

    comprised only of hex digits When only the key is specified

    using the -K option the IV must explicitly be defined When

    a password is being specified using one of the other options

    the IV is generated from this password

    -p

    print out the key and IV used

    -P

    print out the key and IV used then immediately exit donrsquot

    do any encryption or decryption

    -bufsize number

    set the buffer size for IO

    -nopad

    disable standard block padding

    -debug

    3 Symmetrische Verschlusselungsverfahren

    31 Feistel-Chiffren

    Aus der Wikipedia (unter GNU Free Documentation License)

    Feistel-Chiffre (auch als Feistelnetzwerk bezeichnet) ist eine Block-Chiffre Ein Mitarbeitervon IBM Horst Feistel gilt als der Erfinder dieser Chiffre Er arbeitete mit anderen am sogProjekt rdquoLuciferldquo dessen Ziel es war eine effiziente Verschlusselungstechnologie zu entwi-ckeln Die Feistel-Chiffre war spater dann die Grundlage fur den DES-Algorithmus

    Viele moderne symmetrische Verschlusselungsalgorithmen basieren auf Feistelnetzwer-ken Dies ruhrt ua auch daher dass die Struktur von sehr vielen Kryptografen analysiert undfur gut befunden wurde

    12

    Wie es der Name rdquoBlock-Chiffreldquo schon nahe legt wird der Klartext zuerst in einzelneBlocke zerlegt Die Groszlige dieser Blocke kann frei gewahlt werden ublich sind oftmals Vielfa-che von 64 Bit

    Jeder dieser Blocke wird danach in zwei gleichgroszlige Halften (L0 und R0) geteilt und inmehreren Runden mit verschiedenen Schlusseln verschlusselt Nach den Runden werden dieHalften wieder zusammen gesetzt

    Innerhalb der i-ten Runde (i ist die Nummer der aktuellen Runde und reicht von 1 bis n)wird folgende Formel angewendet

    Li = Riminus1

    Ri = Liminus1 oplus f (Riminus1Ki)

    Dabei bildet f die sog Runden- oder Transformationsfunktion und Ki ist der jeweilige Runden-schlussel Der verschlusselte Text am Ende der Runden ist die Zusammenfuhrung von (LnRn)

    Feistelnetzwerke ermoglichen eine Entschlusselung ohne dass die Umkehrfunktion von fbenotigt wird Will man einen Geheimtext dechiffrieren wendet man die obige Formel leichtmodifiziert an

    Riminus1 = Li

    Liminus1 = Ri oplus f (Riminus1Ki)

    13

    (Quelle httpenwikipediaorgwikiImageFeistelpng)

    32 DES - Data Encryption Standard

    DES ist eine 64 Bit Block-Chiffre mit einer festgelegten Schlussellange von 56 Bit Die Funk-tionsweise entspricht einem 16-Runden Feistel-Netzwerk DES ist der erste Verschlusselungs-Algorithmus der weite Verbreitung fand und dessen Spezifikation offentlich zuganglich ist Erwurde in den 70er Jahren entwickelt und ist im amerikanischen Standard FIPS 46-2 beschrieben

    14

    321 Schlusselauswahl

    Zunachst steht nominal ein 64-Bit Schlussel zur Verfugung Von diesem ist jedoch je ein Bit proByte als Paritatsbit deklariert so dass 56 Bit effektives Schlusselmaterial ubrigbleiben Diese 56Bit werden in 2 mal 28 Bit aufgeteilt die in jeder der 16 Runden um 1 oder 2 Bit rotiert werdeninsgesamt um 28 Bit so dass am Ende wieder das Original vorliegt Aus der Konkatenation derbeiden Halften wird in jeder Runde ein 48-Bit Rundenschlussel ausgewahlt

    (Quelle httpenwikipediaorgwikiImageDES-key-schedulepng)

    15

    322 Funktionsweise

    Die so gewonnenen Rundenschlussel ki werden fur die Runden der Feistelchiffre genutzt E(k1 k2 k16m) =

    cE(k16 k15 k1 c) = mD(k1 k2 k16 c) = E(k16 k15 k1 c) = mJeder 64 Bit Eingabe-Block wird in zwei 32 Bit Blocke (L und R) aufgeteilt und weiterverarbei-tet L und R werden in jeder Runde durch eine festgelegte Permutation E auf 48 Bit ausgedehntanschlieszligend mit dem Rundenschlussel verknupft mittels einer weiteren rundenspezifischenPermutation S wieder auf 32 Bit komprimiert und dann schlieszliglich noch einer weiteren festge-legten Permutation P unterzogenLi = Riminus1Ri = Liminus1 oplus f (Riminus1Ki) wobei f (Riminus1Ki) = P(S (E(Riminus1) oplus Ki))

    rechts Feistelstruktur (Quelle httpenwikipediaorgwikiImageDES-main-networkpng)

    links F Funktion (Quelle httpenwikipediaorgwikiImageDES-f-functionpng)

    16

    (Quelle httpdewikipediaorgwikiBildDES_resizepng)

    323 Schwachstellen und Unsinnigkeiten

    bull Die Anfangliche Permutation der Klartexteingabe sollte Softwareimplementation erschwe-ren Per Hardware ist diese sehr einfach universell verwendbare Rechner hatten in den70er Jahren jedoch noch Probleme mit so etwas

    bull Das Paritatsbit ist eine Schwachstelle da es - soweit es gesetzt ist - ein Durchmustern desSpeichers nach dem Schlussel erlaubt Gesucht wird dann nach dem relativ ungewohn-lichen Auftreten von 8 nahe bei einander liegenden Byte bei denen je das letzte Bit dieParitat angibt

    17

    bull Mit heutigen Rechnern ist es moglich einen 56-Bit Schlussel mittels brute force zu knackenDie Lange des Schlussels ist bei DES aber auf diesen Wert festgelegt

    bull Es wird vermutet dass die ldquomagischenrdquo S-Permutationen uber deren Qualitat nichts be-wiesen ist eine Hintertur darstellen da die NSA hierbei ihre Finger im Spiel hatte Eskonnte jedoch nie bewiesen werden

    324 spezielle Optionen bei openssl

    bull Option -nopad Schaltet Auffullung der letzten Bits zu Block von 64 Bits aus Auch wenndie Nachricht genau in 64 Bit Blocken einteilbar ist wird ein 64 Bit Padding Block an-gehangtDer Block besteht aus x mal der Zahl x So lasst er sich beim Entschlusseln wieder entfer-nen

    bull Option -nosalt Schaltet die Voranstellung des salt-Werts ausDer salt-Wert verlangert die Nachricht um insgesamt 16 Bytes Salted__ gefolgt von 8Bytes salt-WertAus Passwort und salt-Wert wird der Key fur die eigentliche Verschlusselung erzeugt Da-mit wird verhindert dass Schlussel wegen Mehrfachverwendung von Passwortern leich-ter zu brechen sind Gleiche Passworter beim Aufruf der Verschlusselung mit OpenSSLfuhren durch den zufalligen salt-Wert zu verschiedenen Keys bei der Verschlusselung

    bull Neben des gibt es auch des-ede und des-ede3 Diese bieten einen gewissen Schutzgegen Bruteforce-AngriffeTDES (Triple DES) DES3 DES-EDE (Encrypt Decrypt Encrypt) mit effektiv 168 Bit

    E3DES(k1 k2 k3m) = EDES(k3DDES(k2 EDES(k1m)))

    In OpenSSL arbeitet des-ede mit zwei Schlusseln

    E(K1)D(K2) E(K1)

    Um in OpenSSL 3 Schlussel angeben zu konnen muss man des-ede3 verwenden Ver-wendet man bei des-ede zweimal oder bei des-ede3 dreimal den selben Schlusselerhalt man eine einfache DES-Verschlusselung So kann man Abwartskompatibilitat er-reichen

    bull In OpenSSL konnen DES Verschlusselungen mit folgenden Befehlen aufgerufen werden

    ndash -desndash -des-cbcndash -des-cfbndash -des-ecbndash -des-edendash -des-ede-cbc

    18

    ndash -des-ede-cfbndash -des-ede-ofbndash -des-ede3ndash -des-ede3-cbcndash -des-ede3-cfbndash -des-ede3-ofbndash -des-ofbndash -des3ndash -desxndash -desx-cbc

    OpenSSL des-ecb -salt fur den Schlusseleintrag aus Passphrasepassphrase = 12345prime +prime S alt minusWert rarr K

    12345srarr

    264 Moglichkeiten

    Damit man keine Tabelle generieren kann die aus den schwachen Schlussel besteht denn fur12345 gibt es 264 Moglichkeiten aufgrund des salts

    (PC12345)(PC1234)

    P- (Klartext) bekanntS- (Saltwert) bekanntC- (Chiffretext) unbekanntwelcher Schlussel wurde verwendet

    112123

    1234

    rarr K

    s1 s2 s3c1 c1 c1c12 c12 c12c123 c123 c123c1234 c1234 c1234

    Dazu kommt aber spater noch mehr

    19

    325 DESECB - Electronic Code Book

    Die Eingabe wird in Blocke aufgeteilt und jeder Block fur sich verschlusselt Dieses Verfahrenist potentiell unsicher weil in der Abfolge der Blocke eine Struktur enthalten ist die der Algo-rithmus nicht verbirgt Ein Fehler beim Ver- oder Entschlusseln eines Blockes fuhrt allerdingsauch nur zu einem einzigen verlorenen Block

    To do Initialisierungsvektor

    (Quelle httpenwikipediaorgwikiImageEcb_encryptionpng)

    (Quelle httpenwikipediaorgwikiImageEcb_decryptionpng)

    BemReicht fur einen Block dann wird auch kein Initialisierungsvektor benotigt

    20

    Man kann fur den Initialisierungsvektor auch einen vorher vereinbarten Wert (zB Unix Sekun-den) wahlen

    Aus der Wikipedia (unter GNU Free Documentation License)

    Die 64-bit Klartextblocke werden nacheinander und getrennt voneinander kontextfrei ver-schlusselt Dies ist die einfachste Anwendungsmoglichkeit eines Block-Chiffre

    326 DESCBC - Cipher Block Chaining

    Aus der Wikipedia (unter GNU Free Documentation License)

    Vor der Verschlusselung eines Klartextblockes wird der bereits verschlusselte vorhergehendeBlock hinzuaddiert Auf den ersten Klartextblock der ja keinen Vorganger besitzt wird stattdessen ein Initialisierungsvektor der geheim gehalten werden muss addiert Dadurch entstehteine Verkettung (engl chain) der Blocke Trotz dieser Verkettung ist die CBC-Verschlusselung

    rdquoselbstkorrigierendldquo FehlerManipulationen in einem Block wirken sich bei der Entschlusse-lung nur auf den fehlerhaftenmanipulierten und den nachsten Block ausMan kann relativ einfach beliebige Blocke des Geheimtextes einzeln entschlusseln da zusatz-lich zum Schlussel nur der vorhergehende (verschlusselte) Block benotigt wird

    Fehler im c breiten sich nicht aus beim Entschlusseln Ein Initialisierungsvektor IV fur erstenBlock wird benotigt

    bull Klartext oplus Cipher und dann Encryption

    bull Vorteil Muster im Klartext werden zerstort

    bull Nachteil Fehler im Ciphertext eines Blocks verandern Bits an genau der Stelle im folgen-den Block (aber nur in diesem spatere Blocke sind nicht betroffen) so kann gezielt eineStelle im Block angegriffen werden (siehe Skizze)

    To do Skizze zur Fehlerausbreitung erlautern

    21

    m1 mlowast2 mlowast3

    IV oplus

    oplus

    oplus

    oplus

    DES

    DES

    DES

    DES

    c1

    DDc2

    DDc3

    DDc4

    EE

    Vergleich DESECB und DESCBC

    Zum Vergleich bietet es sich an ein Bild (Abbildung 1) mit DES im ECB- und im CBC-Moduszu verschlusseln Deutlich zu erkennen ist dass die Struktur im ECB-Modus (Abbildung 2)erhalten bleibt wahrend sie bei CBC (Abbildung 3) vollkommen zerstort wird

    Abbildung 1 Bild im Klartext (24 Bit RGB mit 182 times 183 Pixeln)

    Abbildung 2 Bild aus Abbildung 1 ECB-verschlusselt

    22

    Abbildung 3 Bild aus Abbildung 1 CBC-verschlusselt

    327 DESOFB - Output Feed Back

    Aus der Wikipedia (unter GNU Free Documentation License)

    In diesem Modus werden die Klartextblocke nicht direkt mit DES verschlusselt sondern DESerzeugt einen pseudozufalligen Bitstrom der dann ohne Ubertrag (vgl XOR) auf den Klartextaddiert wird Dazu muss DES mit einem kontinuierlichen Eingabestrom gefuttert werden AlsEingabe von DES dient hier ein Schieberegister dass zunachst mit einem Initialisierungsvektorgeladen wird Anschlieszligend wird immer ein Teil der Ausgabe von DES in dieses Registerhineingeschoben und so als Eingabe wiederverwendet (daher output feedback)

    bull Output der Encrpytion als Input fur Encryption erzeugt Pseudozufallsstrom oplus Klartext

    bull Vorteil Beliebige Blockgroszligen moglich wie Stromchiffre verwendbar

    bull Nachteil Durchsatz verringert sich auf neue Blockgroszlige pro erzeugtem Block kann abervorberechnet werden

    bull Vorteil Ein Bit Fehler fuhrt zu nur einem invertierten Bit nach der Entschlusselung

    bull Nachteil Keine Selbstsynchronisierung moglich wenn Bits komplett verloren gehen

    23

    (Quelle httpdewikipediaorgwikiBildOfb_encryptionpng)

    (Quelle httpdewikipediaorgwikiBildOfb_decryptionpng)

    328 DESCFB - Cipher Feed Back

    Aus der Wikipedia (unter GNU Free Documentation License)

    Identisch mit OFB aber statt die Ausgabe des DES wieder als Eingabe zu verwenden wirdder Kryptotextstrom als Eingabe wiederverwendet

    bull Cipher als Input fur Encryption erzeugt Pseudozufallsstrom oplus Klartext

    24

    bull Vorteil Beliebige Blockgroszligen moglich wie Stromchiffre verwendbar

    bull Nachteil Durchsatz verringert sich auf neue Blockgroszlige pro erzeugtem Block

    (Quelle httpdewikipediaorgwikiBildCfb_encryptionpng)

    (Quelle httpdewikipediaorgwikiBildCfb_decryptionpng)

    329 CTR Mode CCM

    Dieser Modus spielt fur DES keine Rolle Ist auch nicht in OpenSSL implementiert Aber die-se Betriebsart ist fur 128 Bit Verschlusselungen ist zum Beispiel vom BSI als sicher eingestuftworden rsquoDie Betriebsart der Zukunftrsquo

    Wird zum Beispiel fur W-LAN Verschlusselung verwendet

    25

    Eingabe sind Klartext mit einen Zahler

    ctr0 rarr Block rarr oplusT rarr c0ctr1 rarr Block rarr oplusp1 rarr c1ctr2 rarr Block rarr oplusp2 rarr c2ctr3 rarr Block rarr oplusp3 rarr c3

    ctrn rarr Block rarr opluspn rarr cn

    Standardisiert als rsquoSP 800-38crsquo

    (N A P) mit N Zufallswerten A Assoziierte Daten P Klartext produziert Blocke B0 B1 Br

    httpcsrcnistgovpublicationsnistpubs800-38CSP800-38C_updated-July20_

    2007pdf

    To do algorithmus uberarbeiten ubersetzen

    1 Apply the formatting function to (N A P) to produce the blocks B0 B1 Br

    2 Set Y0 = CIPHK(B0)

    3 For i = 1 to r do Yi = CIPHK(Bi oplus Yiminus1)

    4 Set T = MS BTlen(Yr)

    5 Apply the counter generation function to generate the counter blocks Ctr0Ctr1 Ctrmwhere m = dPlen128e

    6 For j = 0 to m do S j = CIPHK(Ctr j)

    7 Set S = S 1||S 2|| ||S m

    8 Return C =(P oplus MS BPlen(S )

    )||(T oplus MS BTlen(S 0)

    )

    T stellt einen Prufwert dar

    3210 TEA-Algorithmus

    To do uberarbeiten

    26

    Nicht in OpenSSL implementiert Universitarer Algorithmus

    (Quelle httpdewikipediaorgwikiBildTEA_InfoBox_Diagrampng)

    Man sieht die Feistel Idee allerdings die grunen Quadrate sind Additionen modulo 64 Bit

    To do erlautern Pfeilspitzen

    Es gibt ein Extended TEA struktur recht ahnlich aber beim Algorithmus an der Stelle

    Byte 0 28 minus 1 | 28ii

    b middot k = (b middot k mod (28 + 1)) mod 28 Es gibt auch eine Inverseb middot K rarr c rarr c middot kprime = b

    geht nur bei 22 + 1 24 + 1 28 + 1 216 + 1

    27

    3211 DES-X

    In OpenSSL desx KK1K2

    EncK(m oplus K2) oplus K1 = DES minus X(m)

    c1 oplus c2 = EncK(m1 oplus K2) oplus EncK(m2 oplus K2)

    Ist unsymetrisch Hat sich nicht so ganz durchgesetzt

    33 IDEA International Data Encryption Algorithm

    IDEA gilt als sehr sicher ist schneller als DES bei Hardwareimplementation tauchte zuerst alsPES auf Unterschied PES und IPES ist die untere XOR-Vertauschung (siehe Wikipedia Skiz-ze) die es im PES nicht gab War nur zur privaten Nutzung frei ansonsten patentiert weshalber nicht so verbreitet war IDEA verschlusselt 64-Bit Eingabe-Blocke in 64-Bit Ausgabe-Blockeund verwendet dabei einen 128-Bit Schlussel Der Algorithmus basiert im wesentlichen auf 8identischen Runden die den Runden einer Feistel-Chiffre ahnlich sind und einer abschlieszligendenTransformation der Ausgabe In jeder Runde werden 6 16-Bit Subschlussel in der Ausgaben-Transformation weitere 4 davon verwendet Samtliche Subschlussel werden aus dem Original-schlussel berechnet Die 64 Bit Eingabe jeder Runde werden dabei als 4 16-Bit-Blocke verar-beitet Der Algorithmus benutzt verschiedene algebraische Operationen

    bull Polynomaddition mod 2 XOR (blau-verbraucht wenig Strom)

    bull Addition mod 216 ADD (grun-verbraucht wenig Strom etwas Zeit - Uberlauf wirdignoriert)

    bull Multiplikation mod 216︸︷︷︸prim

    +1 MULT (rot-viel Strom)

    Aus der Wikipedia (unter GNU Free Documentation License)

    Der IDEA-Algorithmus (International Data Encryption Algorithm) wurde 1990 als ein Ge-meinschaftsprojekt zwischen der ETH Zurich von James L Massey und Xueija Lai und derAscom Systec AG entwickelt IDEA ist ein symmetrischer Algorithmus und gehort zu denBlockchiffren Der Algorithmus benutzt einen 128-Bit langen Schlussel (DES nur 64 Bit da-von sind 8 Bits fur den Paritats-Check vorgesehen so dass die eigentliche Schlussellange nur56 Bits betragt)

    Bei der Verschlusselung wird der Klartext in 64 Bit groszlige Blocke unterteilt und derSchlussel in Teilstucke zu je 16 Bit zerlegt Die Verschlusselung geschieht durch Kombina-

    28

    tion der logischen Operation XOR der Addition modulo 216 und der Multiplikation modulo216+1 Die Kombination dieser drei Operationen aus unterschiedlichen algebraischen Gruppensoll ein hohes Maszlig an Sicherheit gewahrleisten

    Das Verfahren ist dazu optimiert Angriffen durch differentielle Kryptoanalyse zu wider-stehen

    Es gibt bei IDEA leider eine ganze Reihe von schwachen Schlusseln die sich in zweiKlassen einteilen lassen Die erste Klasse umfasst 232 schwache Schlussel Sie sind insofernschwach als man sie mit gewahltem Klartext nachweisen kann Danach ist ein Brute ForceAngriff selbst fur Privatpersonen mit alteren PCs machbar Die zweite Klasse umfasst sogar265 schwache Schlussel Bei diesen Schlusseln kann man mit nur 20 gewahlten Klartexten72 Bit des Schlussels ermitteln Die restlichen 56 Bit muss man mit Brute Force ermittelnAllerdings liegt die Wahrscheinlichkeit dafur einen schwachen Schlussel zu erwischen bei einszu 263 oder eins zu 9 Trillionen

    Weil die Ascom Systec AG an der Entwicklung des Algorithmus beteiligt war halt siedie Patente fur IDEA In Europa verfallt der Patentschutz am 16052011 In den USA wirdder Algorithmus bereits ein Jahr fruher kostenlos nutzbar sein Da das Patent in der Schweizerteilt wurde greift das Patent auch in Deutschland unabhangig davon dass in DeutschlandSoftwarepatente nicht legal sind

    Der Algorithmus beruht wesentlich darauf dass 216 + 1 eine Primzahl ist Deshalb lasst sichIDEA nicht auf andere Blocklaengen adaptieren

    331 Schlusselauswahl

    Aus den 128 Bit des ursprunglichen Schlussels werden in insgesamt 52 16-Bit Teilschlussel er-zeugt Dabei werden aus dem aktuellen Schlusselwert (initial der ursprungliche 128-Bit Schlussel)8 der Teilschlussel durch aufteilen gewonnen Dann wird der aktuelle Schlussel subsequent um25 Bit nach links rotiert und so je ein neuer aktueller Schlussel erzeugt der wieder zu Teil-schlusseln aufgeteilt wird - solange bis alle Teilschlussel belegt sind Es werden 6 middot 16-Bit ineiner Runde verbraucht in 8 Runden also 48 Teilschlussel Hinzu kommen 4 Teilschlussel dienach der letzten Runde fur weitere Operation verwendet werden Insgesamt werden also 52Teilschlussel mit je 16-Bit aus 128-Bit Rohschlussel erzeugt und auch verbraucht rarr 832-BitSchlusselmaterial

    332 Funktionsweise

    In jeder Runde r finden folgende Transformationen statt

    1 X1 = X1 MULT Kr1 X4 = X4 MULT Kr

    4 X2 = X2 ADD Kr2 X3 = X3 ADD Kr

    3

    2 t0 = Kr5 MULT (X1 XOR X3) t1 = Kr

    6 MULT (t0 ADD (X2 XOR X4)) t2 = t0 ADD t1

    29

    3 X1 = X1 XOR t1 X4 = X4 XOR t2 a = X2 XOR t2 X2 = X3 XOR t1 X3 = a

    Dabei sind X1 bis Xi die 16-Bit Blocke die aus der 64 Bit Eingabe gewonnen wurden Kri ist der

    Teilschlussel mit der Nummer r middot 6 + i Die abschlieszligende Transformation ergibt sich wie folgtY1 = X1 MULT K9

    1 Y4 = X4 MULT K94 Y2 = X3 ADD K9

    2 Y3 = X2 ADD K93

    Dabei sind die Yi 4 16-Bit Worter die die Ausgabe darstellen

    (Quelle httpdewikipediaorgwikiBildInternational_Data_Encryption_Algorithm_InfoBox_Diagrampng)

    bull In OpenSSL konnen IDEA Verschlusselungen mit folgenden Befehlen aufgerufen wer-den

    ndash -ideandash -idea-cbcndash -idea-cfbndash -idea-ecbndash -idea-ofb

    333 Pseudocode-multiplikation

    To do als Pseudocode machen

    30

    if(a==0)return ((216 +1)-b) mod 216

    if(a==0)return ((216 + 1)-a) mod 216

    if(a middot b) mod 216 gt (a middot b) div 216 return (a middot b) mod 216 minus (a middot b) div 216

    if(a middot b) mod 216 le (a middot b) div 216 return (216 + 1) + (a middot b) mod 216 minus (a middot b) div 216

    wenn a==0 rArr a = 216 equiv minus1 mod 216

    334 Schwachstellen

    Bei schlechter implementation konnen die XOR-Berechnungen am Stromverbrauch erkanntwerden Es konnen Ruckschlusse auf bestimmte Werte (insbesondere Null) gemacht werdenNach 218 Testrechnungen kann der Klartext bestimmt werdenSolche Angriffe nennt man Seiten Kanal Atacken in diesem Fall ist der Stromverbrauch derSeitenkanal (Zeitverbrauch spielt beim Idea keine Rolle)Bei guter Implementation gilt aber der Algorithmus als sicher

    To do Skizze Stromverbrauch

    34 Blowfish

    Blowfish ist eine sehr schnelle 64-Bit 16-Runden Block-Chiffre die 1993 von Bruce Schneiererfunden wurde Die Lange der Schlussel ist variabel zwischen 32 und 448 Bit Als Teilschlusselwerden aus dem Ausgangsschlussel eine P-Box mit 18 mal 32 Bit und 4 S-Boxen mit 256 mal32 Bit generiert (P1 P18) (S 1 S 4)

    Blowfisch Algorithmus von Bruc Schreier ist vollig Patentfrei dies hat sehr zu seiner Verbrei-tung beigetragen

    31

    F

    F

    14 weitere Runden

    (Quelle httpdewikipediaorgwikiBildBlowfish_structure_(de)svg)

    P1 P18 die XOR auf den Klartext kommen

    Schlussel-P1 P18 und

    -S-Boxen

    32

    (Quelle httpenwikipediaorgwikiImageBlowfishFFunctionsvg)

    S ist 256 32 Bit WerterArr 4 middot 256 middot 32 Werte rArr kann man sich nicht merken also wird P1 P18 S 1 S 4 werdenals Hexadezimalwerte von π gewahlt

    (K)n oplus (P1 P18)

    Der so initialisierte Algorithmus wird auf den Klartext 0 0︸ ︷︷ ︸64

    angewendet Das Ergebnis ersetzt

    (P1 P2) Der so initialisierte Algorithmus wird auf den Klartext 0 0︸ ︷︷ ︸

    64

    angewendet Das Ergebnis

    ersetzt (Pi Pi+1) Der so initialisierte Algorithmus wird auf den Klartext 0 0︸ ︷︷ ︸64

    angewendet

    Das Ergebnis ersetzt (S 1 S 2)

    Auf kosten eines sehr aufwendigen Schlusselmanagment wird ein schneller Algorithmus er-reicht Fur Prozessoren mit wenig Speicher unpraktisch

    341 Initialisierung

    Teilschlusselmanagement Sehr viele Teilschlussel werden aus wenig Schlusselmaterial gene-riert

    1 P und S werden mit einer Hexadezimal-Expansion von Pi initialisiert

    2 Der Schlussel als Sequenz von 32-Bit-Werten wird mittels XOR auf die P-Box addiertwobei er eventuell ldquowiederholtrdquo wird um die ganze Lange der Box abzudecken P1 oplus K1P2 oplus K2 P18 oplus K18

    3 Sowohl die P-Box als auch die S-Boxen werden verschlusselt

    33

    bull Verschlussle mit Blowfish den Nullstring rarr 64-Bit Ausgabe = 2 32-Bit = neueP1 P2

    bull Verschlussle mit Blowfish (Pi Pi+1) die Ausgabe verwende als (Pi+2 Pi+3) Wieder-hole diesen Schritt fur i von 1 bis zum Ende der P-Boxbull Anschlieszligend S 10 S 11 rarr S 12 S 13 Im gleichen Verfahren wie bei der P-Box

    werden die S-Boxen verschlusselt

    Insgesamt ist so ein langer Vorlauf notig bevor die eigentliche Verschlusselung der Daten be-ginnt

    342 Verschlusselung

    In jeder Runde r (insgesamt 16 Runden) wird folgendes Verfahren angewendet

    1 Der 64-Bit Eingabeblock wird in zwei 32-Bit-Halften L und R zerlegt

    2 L = L oplus Pr R = R oplus f (L)f (L) ist dabei folgendermaszligen charakterisiert Zunachst wird das Argument L als Konka-tenation von 4 8-Bit Vektoren a b c und d aufgefasst die als naturliche Zahlen zwischen0 und 255 verwendet werden

    f (a b c d) = ((S 1a + S 2b mod 232 oplus S 3c) + S 4d mod 232

    3 L und R werden vertauscht konkateniert und als Eingabe fur die nachste Runde verwen-det

    Nach der letzten Runde wird noch R = R oplus P17 und L = L oplus P18 durchgefuhrt

    Aus der Wikipedia (unter GNU Free Documentation License)

    Blowfish ist ein sehr schneller und nicht patentierter Algorithmus der besonders auf 32-Bit-Prozessoren eine exzellente Performance bietet Ein weiterer Vorteil ist seine variableSchlussellange von 32 bis zu 448 Bit Die Blockgroszlige betragt 64 Bit

    bull In OpenSSL konnen Blowfish Verschlusselungen mit folgenden Befehlen aufgerufen wer-den

    ndash -bfndash -bf-cbcndash -bf-cfbndash -bf-ecbndash -bf-ofbndash -blowfish

    34

    35 AES Advanced Encryption Standard

    351 Wiederholung-Byteoperation

    Wir hatten folgende Byteoperationen kennengelernt

    bull Multiplikation mod 256 bzw mod 257 ohne 0

    bull Addition mod 256

    bull XOR-Addition (oplus)

    Die Operationen werden in der dementsprechenden Basisdarstellung modulo 256 durchgefuhrt

    352 Uberblick

    AES wurde im Standard FIPS 197 festgeschrieben

    Aus der Wikipedia (unter GNU Free Documentation License)

    AES ist eine Block-Chiffre dessen Blocklange und Schlussellange unabhangig voneinanderdie Werte 128 192 oder 256 Bit erhalten kann Jeder Block wird zunachst in eine zweidimen-sionale Tabelle mit vier Zeilen geschrieben dessen Zellen ein Byte groszlig sind Die Anzahl derSpalten variiert somit je nach Blockgroszlige von 4 (128 Bit) bis 8 (256 Bit) Zum Beispiel fur 16Byte werden die Bytes wie folgt eingetragen

    1 5 9 132 6 10 143 7 11 154 8 12 16

    Jeder Block wird nun nacheinander bestimmten Transformationen unterzogen Aber anstattjeden Block einmal mit dem Schlussel zu verschlusseln wendet AES verschiedene Teile desSchlussels nacheinander auf den Klartext-Block an Die Anzahl dieser Runden (r) variiertund ist von Schlussellange (k) und Blockgroszlige (b) abhangig Je nach Blocklange b undSchlussellange k wird die Anzahl der Runden bestimmt (10 12 oder 14)

    r b=128 b=192 b=256k=128 10 12 14k=192 12 12 14k=256 14 14 14

    S-BoxenEine Substitutionsbox (S-Box) dient als Basis fur eine monoalphabetische Verschlusselung

    35

    Sie ist meist als Array implementiert und gibt an welches Byte wie getauscht wird DieS-Box in AES basiert auf einem mathematischen Zusammenhang und ist somit fest imAlgorithmus implementiert Doch dies ist kein Schwachpunkt da die S-Box lediglich zur Ver-mischung der Bytes in Kombination mit weiteren Operationen und dem Schlussel genutzt wird

    Ablauf

    bull Schlusselexpansion (nach Fips-197 S23 Kapitel 52)

    Der Schlussel rsquokeyrsquo wird auf den Anfang des expandierten Schlussels rsquowrsquo ubernommen(i lt Nk) Danach berechnet sich w[i] wie folgt

    w[i] =

    w[i minus 1] i mod Nk 0S ubWord(RotWord(w[i minus 1])) oplus Rcon i mod Nk = 0S ubWord(w[i minus 1]) Nk gt 6i (mod N)k = 4

    (1)

    w[i] = w[i] oplus w[i minus Nk] (2)

    Der zugehorige Quelltext (Fips-197 entnommen)

    KeyExpansion(byte key[4Nk] word w[Nb(Nr+1)] Nk)

    begin

    word temp

    i = 0

    while (i lt Nk)

    w[i] = word(key[4i] key[4i+1] key[4i+2] key[4i+3])

    i = i+1

    end while

    i = Nk

    while (i lt Nb (Nr+1)]

    temp = w[i-1]

    if (i mod Nk = 0)

    temp = SubWord(RotWord(temp)) xor Rcon[iNk]

    else if (Nk gt 6 and i mod Nk = 4)

    temp = SubWord(temp)

    end if

    w[i] = w[i-Nk] xor temp

    i = i + 1

    end while

    end

    36

    Fur Beispiele siehe Fips-197 Appendix A1

    bull Vorrunde

    ndash KeyAddition (XOR-des Rundenschlussels)

    bull Verschlusselungsrunden

    ndash Substitution - Jedes Byte b wird ersetzt durch bprime = 1b wie bei Polynommultiplikati-

    on Weiter wird jedes Byte als ein 8-dimensionaler Vektor aufgefasst und folgendeOperation angewendet

    b1b2

    b8

    =

    1 0 0 0 1 1 1 11 1 0 0 0 1 1 11 1 1 0 0 0 1 11 1 1 1 0 0 0 11 1 1 1 1 0 0 00 1 1 1 1 1 0 00 0 1 1 1 1 0 00 0 0 1 1 1 1 0

    middot

    b1b2

    b8

    +

    c1c2

    c8

    ndash ShiftRow - Erste Zeil wird nicht verschoben die zweite Zeil um eins die dritteZeile um zwei die vierte um drei (siehe Wikipedia)

    ndash MixColumn - Zu jeder Spalten

    b1b2b3b4

    des Blocks wird folgende Polynommultiplika-

    tion durchgefuhrt

    (b1x3 + b2x3 + b3x + b4) middot (03X3 + 04X2 + 01X + 02) mod (X4 + 1)

    und die Koeffizienten in gleicher Weise wieder in die jeweilige Spalte eingetragenWobei (X4 + 1) das Inverse (0BX3 + 0DX2 + 09X + DE) hat

    ndash KeyAddition

    bull Schlussrunde

    ndash Substitutionndash ShiftRowndash KeyAddition

    Fur die Entschlusselung gehe die oben angegebene Reihenfolge ruckwarts durch Beachtedabei dass ShiftRow und Subst vertauschbar sind Bei ShiftRow wird in umgekehrter Weiseverschoben Ebenso sind KeyAdd und MultColumn vertauschbar wenn der Rundenschlusselmodifiziert wird (B(X) lowast (S (X) oplus K(X)) = S (X) lowast B(X) oplus B(X) lowast K(X) also ist der modifiziertSchlussel B(X) lowast K(X)) Die Entschlusselung entspricht also der Verschlusselung mit modifi-zierten Schlusseln

    37

    353 mathematische Grundlagen

    Speziell der Schritt Mix-Column beinhaltet einige interessante mathematische Uberlegungen Ersoll zu einer moglichst effektiven Vermischung der 32 Bit in jeder Spalte fuhren die die Suchevon dem unverschlusselten Text ahnlichen Mustern im verschlusselten Text erschwert Dabeiwerden arithmetische Operationen aus zwei algebraischen Gruppen angewandt

    1 Die Gruppe der Bytes F82 Jedes Byte b7b6b0 wird als ein Polynom b7 middot X7 + b6 middot X6 +

    b0 middot X0 angesehen Diese Polynome konnen addiert und multipliziert werden Damitdabei der Werteraum des Byte nicht verlassen wird finden diese Operationen modulom(X) = X8 + X4 + X3 + X +1 statt m ist dabei irreduzibel es gilt also ggT (b(X)m(X)) = 1fur jedes Byte b Somit ist F2[X]m(X) ein Korper und die Multiplikation ist abgeschlos-sen Es gilt fur jedes Paar von Bytes b c eindeutig b middot c = d rarr dc = b Multiplikationenkonnen also eindeutig ruckgangig gemacht werden so dass eine Entschlusselung moglichistBei Zahlen die groszliger als m(X) sind werden also durch die modulo Operation die Koeffi-zienten von x4 x3 x1 x0 verandertBeispiel in Magma

    Q = IntegerRing(2)

    Pltxgt = PolynomialRing(Q)

    f=xˆ7+1

    g=xˆ3+xˆ2+x+1

    fg

    fg mod(xˆ8 +xˆ4+xˆ3+x+1)

    IsPrime(xˆ8 +xˆ4+xˆ3+x+1)

    Ausgabe

    xˆ10 + xˆ9 + xˆ8 + xˆ7 + xˆ3 + xˆ2 + x + 1

    xˆ7 + xˆ6 + xˆ3 + xˆ2 + x

    true

    2 Die Gruppe der Worter F4256 Die 4 Bytes einer Spalte w3w2w1w0 werden wieder als Po-

    lynom aufgefasst w3 middot X3 + w2 middot X2 + w1 middot X + w0 Diese konnen wieder multipliziertund addiert werden wobei die arithmetischen Operationen auf den jeweiligen Bytes in F8

    2stattfinden Die Operationen in F4

    256 werden modulo M(X) = X4 + 1 ausgefuhrt M(X) istzwar nicht irreduzibel aber da der Algorithmus nur eine beschrankte Gruppe von Operan-den verwendet bleiben auch hier alle Operationen invertierbar

    Mix-Column multipliziert (in F4256) nun jede Spalte mit c(X) = 3 middot X3 + X2 + X + 2 Die so

    beschriebene lineare Funktion erreicht beweisbar eine groszlige Diffusion der Eingabe

    38

    bull In OpenSSL konnen AES Verschlusselungen mit folgenden Befehlen aufgerufen werden

    ndash -aes-128-cbcndash -aes-128-cfbndash -aes-128-ecbndash -aes-128-ofbndash -aes-192-cbcndash -aes-192-cfbndash -aes-192-ecbndash -aes-192-ofbndash -aes-256-cbcndash -aes-256-cfbndash -aes-256-ecbndash -aes-256-ofbndash -aes128ndash -aes192ndash -aes256

    36 RC4 Ronrsquos Cipher 4

    Geheimes Chiffreverfahren mit Strom-Chiffre von Ron Rivest 1987 Entstehungsjahr 1994 imNetz aufgetaucht 1999 tauchte im Internet ein Draft ARCFOUR (ARC4) auf der die gleichenErgebnisse lieferte

    Byte orientiert zwei Bytes m k dann wird berechnetm oplus k = cDer Algorithmus basiert auf S-Boxen (Permutationen)

    mdashmdashSkizze Seite 2b ganz oben

    PRG (Pseudo Random Generator)mdashmdashweitere Skizze

    Initialisierung K = L Bytes als Schlussel s[i] = i (identische Permutation)L = 1255 fur RC4 mit 40-Bit L = 5 mit 64-Bit L = 8 mit 128-Bit L = 16j = 0 fur i = 0255rarr j = ( j + s[i] + K[ j mod L]) mod 256

    Problem K-Masterkeyrarr salted key Initialwert (frei bekannt) HashInitial(K) = Kaktuell rarr RC4

    39

    Anfangsstucke von PRG RC4 sind nicht rdquorichtig zufalligldquo verraten viel uber KaktuellRegel fur RC4 Die ersten 256-Byte wegschmeiszligen

    Aus der Wikipedia (unter GNU Free Documentation License)

    RC4 (Ronrsquos Cipher 4) ist ein fur Software optimierter Stromchiffrierer welcher zur Ver-schlusselung von Daten eingesetzt wird Er wurde 1987 von Ronald L Rivest fur RSA DataSecurity Inc (heute RSA Security) entwickelt

    Der Algorithmus war sieben Jahre lang geheim (ldquosecurity by obscurityrdquo) bis 1994 derQuellcode anonym veroffentlicht wurde

    RC4 hat im Gegensatz zu DES eine variable Schlussellange Die Schlussellange kann biszu 2048 Bit betragen RC4 verschlusselt immer ein Byte auf einmal

    Er besteht aus einer so genannten S-Box die sich wahrend der Verschlusselung fortlau-fend andert Diese wird durch ein Passwort initialisiert das fur jede Verschlusselung einmaligsein muss Jedes Klartextzeichen wird XOR mit einem bestimmten vom Paszligwort abhangi-gen Zeichen aus der S-BOX verknupft Theoretisch sind somit ca 2 hoch 1700 verschiedeneZustande moglich

    Der Algorithmus ist sehr kompakt und funf- bis zehnmal schneller als der weitverbreite-te DES Deshalb findet der RC4 Algorithmus in einigen Echtzeit-Systemen Anwendung wiebeispielsweise Mobilfunk (Cellular Digital Packet Data) SSH (Secure Shell) WLAN (Wire-less LAN) oder den Dateiverschlusselungs-Programmen SecurePC und Cryptext Die Verar-beitungsgeschwindigkeit des DES ist jedoch selbst in kleinsten Mikrokontrollern meist ausrei-chend Der Schlussel beim DES und anderen Blockchiffren wie dem AES (CBC-Mode) kannim Gegensatz zum RC4 auch mehrfach verwendet werden Vergleichbare Stromchiffren wieSEAL sind vergleichbar schnell und gelten als sicher

    Aus der Wikipedia (unter GNU Free Documentation License)

    ubersetzt aus dem Englischen nach httpenwikipediaorgwikiRC4RC4 (oder ARCFOUR) ist die am weitesten verbreitete Stromchiffre und wird in vielen be-kannten Protokollen beispielsweise SSL oder WEP verwendet Trotzdem entspricht RC4 nichtmehr dem heutigen Sicherheitsstandard und manche Verwendungsweisen von RC4 fuhren zusehr unsicheren Kryptosystemen (zB WEP) Daher wird es nicht fur die Verwendung in neuenSystemen empfohlen Allerdings gibt es auch RC4-basierte Systeme die sicher genug fur denpraktischen Gebrauch sind

    361 Geschichte

    Aus der Wikipedia (unter GNU Free Documentation License)

    ubersetzt aus dem Englischen nach httpenwikipediaorgwikiRC4RC4 wurde 1987 von Ron Rivest von RSA Security erfunden Offiziell bedeutet die Abkurzung

    40

    ldquoRivest Cipher 4rdquo alternativ wird sie aber als ldquoRonrsquos Coderdquo verstanden (s auch die anderenRC-Algorithmen) Zunachst war RC4 ein Betriebsgeheimnis jedoch wurde im September1994 eine Beschreibung anonym auf der ldquoCypherpunksrdquo Mailingiste gepostet Es wurde baldin die scicrypt newsgroup weitergepostet und von dort auf viele Internet-Seiten verbreitetNachdem der Algorithmus nun bekannt ist ist er kein Betriebsgeheimnis mehr Der NameldquoRC4rdquo unterliegt jedoch weiterhin dem Markenschutz Zur Zeit sieht es so aus als seien ldquoinof-fiziellerdquo Implementationen zwar legal konnen aber nicht den Namen ldquoRC4rdquo verwenden Umdieses Problem zu umgehen wird RC4 oft als ldquoARCFOURrdquo bezeichnet RC4 wird inzwischenin einigen weit verbreiteten Verschlusselungsprotokollen und Standards unter anderem WEPund WPA fur WLAN Karten und SSL verwendet

    362 Beschreibung

    Aus der Wikipedia (unter GNU Free Documentation License)

    ubersetzt aus dem Englischen nach httpenwikipediaorgwikiRC4RC4 generiert einen pseudo-zufalligen Bitstrom (einen ldquoSchlusselstromrdquo) der bei der Ver-schlusselung mit dem Klartext mittels XOR verknupft wird Die Entschlusselung funktioniertgenauso Um den Schlusselstrom zu generieren benutzt die Chiffre einen internen Zustand deraus zwei Teilen besteht

    1 eine Permutation aller 256 moglichen Bytes (wird im Folgenden als S bezeichnet)

    2 zwei 8-Bit Index-Zeiger (mit i und j bezeichnet)

    Die Permutation wird mit einem Schlussel von variabler Lange ublicherweise zwischen 40und 256 Bit initialisiert wobei der Schlusselerzeugungs-Algorithmus verwendet wird An-schlieszligend wird der Bit Strom durch den Pseudo-Zufalls-Algorithmus generiert

    363 Der Pseudo-Zufalls-Algorithmus

    Aus der Wikipedia (unter GNU Free Documentation License)

    ubersetzt aus dem Englischen nach httpenwikipediaorgwikiRC4In jeder Iteration wird der Zustand verandert und ein Byte des Schlusselstroms ausgegebenDabei wird i inkrementiert der Wert von S an der Stelle i auf j addiert S [i] und S [ j] vertauschtund der Wert von S an der Stelle S [i]+S [ j] mod 256 ausgegeben Jeder Wert von S wird dabeimindestens einmal alle 256 Iterationen vertauscht In Pseudocode lasst sich der Algorithmusfolgendermaszligen darstellen

    i = 0

    j = 0

    41

    while GeneratingOutput

    i = (i + 1) mod 256

    j = (j + S[i]) mod 256

    swap (S[i] S[j])

    output (S[(S[i] + S[j]) mod 256])

    (Wobei i offentlich ist und j geheim ist)

    i j

    0 1 2 S[i]+S[j] i j 253 254 255

    S

    S[i] S[j]

    S[i]+S[j]K

    (Quelle httpdewikipediaorgwikiBildRC4svg)

    364 Der Schlusselerzeugungs-Algorithmus

    Aus der Wikipedia (unter GNU Free Documentation License)

    ubersetzt aus dem Englischen nach httpenwikipediaorgwikiRC4Der Schlusselerzeugungs-Algorithmus wird benutzt um die Permutation in S zu initialisierenl wird als die Zahl der Bytes des Schlussels definiert und kann zwischen 1 und 255 liegenublicherweise liegt l zwischen 5 und 32 so dass eine Schlussellange von 40 bis 128 Bit zu-stande kommt Zunachst wird S mit der Identitatspermutation initialisiert Anschlieszligend wirdS in 256 Iterationen mit einem Algorithmus der dem Pseudo-Zufalls-Algorithmus ahnelt aberzusatzlich die Schlusselbits hineinmischt weiterverarbeitet Der folgende Pseudocode drucktdies aus

    for i from 0 to 255

    S[i] = i

    j = 0

    for i from 0 to 255

    42

    j = (j + S[i] + key[i mod l]) mod 256

    swap(S[i]S[j])

    365 Implementation

    Aus der Wikipedia (unter GNU Free Documentation License)

    ubersetzt aus dem Englischen nach httpenwikipediaorgwikiRC4Viele Stromchiffren basieren auf ldquolinear feedback shift registersrdquo und sind damit sehr effizientin Hardware aber weniger effizient in Software implementierbar RC4 hat dieses Manko nichtund kommt zudem ausschlieszliglich mit 8-Bit Operationen aus Damit ist RC4 ideal fur Software-Implementationen

    366 Sicherheit

    Aus der Wikipedia (unter GNU Free Documentation License)

    ubersetzt aus dem Englischen nach httpenwikipediaorgwikiRC4RC4 verfehlt die ublichen Standards fur sichere Chiffren an mehreren Stellen und wird somitnicht zur Verwendung in neuen Anwendungen empfohlen Der von RC4 generierte Schlussel-strom tendiert dazu bestimmte Sequenzen von Bytes haufiger zu enthalten als andere undist somit nicht wirklich zufallig Der beste Angriff der auf diesem Sachverhalt beruht wur-de von Fluhrer und McGrew entdeckt und kann aus einem Gigabyte verschlusseltem Textden Schlusselstrom berechnen Zudem verwendet RC4 keine ldquononcerdquo einen fur jeden Klar-text neu generierten Zusatzschlussel Eine solche ldquononcerdquo wird im allgemeinen als zentralesSicherheitskriterium betrachtet da so gewahrleistet ist dass eine zweimal nacheinander ver-schlusselte Nachricht zwei verschiedene verschluesselte Texte erzeugt Naturlich kann einesolche ldquononcerdquo im Nachhinein aufgesetzt werden indem als RC4-Schlussel nicht der eigentli-che Benutzerschlussel sondern beispielsweise ein Hashwert des Schlussels mit einer nonce ver-wendet wird Die einfachere Methode den Schlussel nur mit der nonce zu konkatenieren dievon einigen Anwendungen genutzt wird fuhrt aufgrund des schwachen Schlusselerzeugungs-Algorithmus wieder zu neuen Problemen

    To do anmerkungen zu k=1-Angriffsmoglichkeiten

    43

    367 Fluhrer Mantin und Shamir Angriff

    Aus der Wikipedia (unter GNU Free Documentation License)

    ubersetzt aus dem Englischen nach httpenwikipediaorgwikiRC42001 wurde eine erstaunliche Entdeckung gemacht Die statistische Verteilung der ersten paarBytes des Schlusselstroms ist uber alle RC4-Schlussel stark nicht-zufallig und enthalt Infor-mationen uber den Schlussel selbst Falls die nonce lediglich mit dem Schlussel konkateniertwurde (oder gar keine nonce verwendet wurde) kann der Schlussel durch die Analyse einergroszligen Zahl verschlusselter Nachrichten herausgefunden werden Mit Hilfe dieses Sachver-haltes und einiger damit zusammenhangender Effekte wurde dann die WEP-Verschlusselung(ldquowireless equivalent privacyrdquo) die in 80211 WLAN-Netzen verwendet wird gebrochen Diesfuhrte zu einer Suche nach einem Ersatz fur WEP und letztlich zu den Bemuhungen um 80211isowie zu WPA

    Der geschilderte Angriff kann naturlich umgangen werden wenn die ersten (ca 256) Bytes desSchlusselstroms verworfen werden

    bull In OpenSSL konnen RC4 Verschlusselungen mit folgenden Befehlen aufgerufen werden

    ndash -rc4ndash -rc4-40

    37 RC5 Ronrsquos Cipher 5

    Die zentrale Neuerung des RC5-Algorithmus sind datenabhangige Rotationen bei denen einZwischenergebnis um eine Zahl von Bytes rotiert wird die weder fest vorgegeben noch vomSchlussel bestimmt sondern aus einem Teil des Klartextes berechnet ist Diese Operation wirdfolgendermaszligen notiert a ltltlt b bedeutet dass a um b Bits nach links rotiert wird Ein weitererinteressanter Aspekt ist die universelle Parametrisierbarkeit des Algorithmus Sowohl die Langeder Worter w als auch die Zahl der Runden r und die Lange des Schlussels b sind wahlbar sodass der Algorithmus offen ist fur zukunftige Bedurfnisse die weitere Operation + wird nun alsAddition modulo 2w definiert In openssl ist RC5 mit den Parameters w = 32 r = 12 b = 16 im-plementiert Samtliche Algorithmen gehen im folgenden von einer little-endian Byte-Anordnungaus Der Algorithmus besteht aus einem Verschlusselungs- und einem Schlusselexpansions-Teil

    371 Verschlusselung

    Gegeben ein auf t = 2(r + 1) Worter expandierter Schlussel S und ein aus zwei Wortern A undB bestehender Eingabeblock gibt folgender Pseudocode den Verschlusselungs-Algorithmus an

    44

    A = A + S[0]

    b = B + S[1]

    for i = 1 to r do

    A = ((A XOR B) ltltlt B) + S[2i]

    B = ((B XOR A) ltltlt A) + S[2i + 1]

    Die Entschlusselung lauft dementsprechend folgendermaszligen ab

    for i = r downto 1 do

    B = ((B - S[2i + 1]) gtgtgt A) XOR A

    A = ((A - S[2i]) gtgtgt B) XOR B

    A = A - S[0]

    B = B - S[1]

    372 Schlusselexpansion

    Zunachst wird S mit einer Kombination aus e und ϕ (dem goldenen Schnitt) initialisiert und derSchlussel in ein Array L kopiert das wortweise indiziert wird Anschlieszligend wird mit folgendemAlgorithmus der Schlussel in S hinein gemischt

    i = j = 0

    A = B = 0

    do 3 max(t 8bw) times

    A = S[i] = (S[i] + A + B) ltltlt 3

    B = L[j] = (L[j] + A + B) ltltlt (A + B)

    i = (i+1) mod t

    j = (j+1) mod (8bw)

    38 GOST 28147-89 Gosudarstvennyi Standard Soyuza SSR nicht inOpenSSL

    GOST ist das russische Normungsinstitut vergleichbar mit DIN oder ANSI

    (siehe auch httpenwikipediaorgwikiGOST_(block_cipher))

    Gost-Chiffre ist eine relativ simple Feistel-Chiffre auf 64 Bit mit 32 Runden 256 Bit Schlussellangeund 8 S-Boxen von zusammen 512 Bit die - da sie geheim gehalten werden konnen - alsSchlusselerweiterung gelten konnen Die Rundenfunktion besteht aus der Addition eines 32-Bit-Substrings des Schlussels der Anwendung der S-Boxen (parallel da jede S-Box 4 Bit alsEin- und Ausgabe hat) und einer 11-Bit-Rotation Die Sicherheit des Algorithmus beruht auf

    45

    der Verwendung sehr langer Schlussel geheimer S-Boxen und der gegenuber DES verdoppeltenRundenzahl In jeder einzelnen Runde wird jedoch ein geringerer Durchmischungseffekt erreichtals bei DES-Runden

    Geheimer Algorithmus S-Boxen auch geheim

    (Quelle httpenwikipediaorgwikiImageGOSTDiagrampng)

    46

    Feistel Chiffre

    Addition Substitution Rotation

    Die S-Boxen sind Gruppenschlussel die extra zugewiesen werden16 4 Bit Werte werden Permutiert 32 RundenSchlusselmaterial 32 die 256 Bit werden jeweils in 8 32 Bit Unterschlussel eingeteilt wobei dieSchlussel wie folgt verwendet werden1234567123456712345677654321

    (Dann einmal S-Box einmal rotieren und dann Feistelschritt)

    Die Sicherheit steckt in den 32 Runden Der Algorithmus wurde bisher nicht geknackt

    39 FazitWie konnte bei einen Symmetrischen Algorithmus die Sicherheiterhohen

    (Das ware zB fur eine Interessante Frage fur eine Klausur)

    bull komplexes Schlusselmanagment

    bull viele Runden

    bull komplexe vermischung pro Runde (AES)

    4 Asymmetrische Verschlusselungsverfahren

    41 Einfuhrung

    AliceBob Chris Dave Eve

    Alice BobkA kA

    Enck1(M) = C minusrarr M = Deck2

    Verschlusselungsverfahren kA kB EncDecAus kA kann kB nicht bestimmt werden dann kann kA sogar offentlich sein Ziel ist es dass je-

    47

    der verschlusseln kann aber nur einer kann (in realistischer Zeit) entschlusseln Solche Verfah-ren mit offentlichen Schlussel werden auch asymmetrisch genannt Mit groszligen Aufwand kannnaturlich der Schlussel immer noch bestimmt werden Man wahlt einen Text mprime Verschlusseltihn (Enck(mprime) = cprime) und probiert dann solange alle k durch bis man Deck(cprime) = mprime erhalt

    Das kB kann aber immer bestimmt werden

    for k_B =00000 to FFFF

    M_0 C_0 sind gegeben

    Dec_k_B(C_0) = M_0

    Wichtig ist nur das dies nicht in rsquovernunftigerrsquo Zeit gemacht werden kann

    To do text sortieren

    Klartext minusrarr E(K) ChiffretextKlartext D(Kprime)larrminus ChiffretextE(K p) = c und zu jedem KexistKprime mit D(Kprime c) = p und K wird offentlich gemachtDie Berechnung von Kprime aus K ist schwer Bruteforce ist nicht ausgeschlossen die Bestimmungvon K aus Kprime ist leicht

    leichtEnckA DeckB (kA kB)minusErzeugung

    schweraus kA allein kB erzeugen

    411 Beispiel

    Bob mochte von Alice verschlusselte Nachrichten lesen Bob uberlegt sich ein asymmetrischesVerfahren wahlt Kprime berechnet K und veroffentlicht KAlice nimmt K berechnet E(K p) = c und sendet c an BobBob berechnet aus c mit Kprime das ursprungliche p

    42 Geschichte

    Whitfield Diffie New Directions in Cryptographie Idee wurde auch schon mal von Ralf Merkelveroffentlich Britische Geheimdienst hatt vorher die Idee auch schon mal

    48

    Aus der Wikipedia (unter GNU Free Documentation License)

    Asymmetrische Verfahren sind ein relativ neues Gebiet der Kryptografie Eine wichtige Vorar-beit fur die asymmetrischen Verfahren sind die Arbeiten von Whitfield Diffie Martin Hellmanund Ralph Merkle zum geheimen Schlusselaustausch Anfang der 1970er Jahre Im Sommer1975 veroffentlichten Diffie und Hellman eine Idee zur asymmetrischen Verschlusselung oh-ne jedoch ein genaues Verfahren zu kennen

    Anfang der 1970er Jahre wurden von Ellis Cocks und Williamson ein dem spateren Ver-fahren von Diffie-Hellman ahnliches asymmetrisches Verfahren entwickelt welches aber inseiner wirtschaftlichen Bedeutung nicht erkannt und aus Geheimhaltungsgrunden nicht (wis-senschaftlich) publiziert und auch nicht zum Patent angemeldet wurde Alle drei waren Mitar-beiter des englischen Government Communications Headquarters

    Der Durchbruch gelang Ronald L Rivest Adi Shamir und Leonard M Adleman die 1977das RSA-Verfahren entwickelten Es gilt bis heute als sicheres Verfahren und hat auszligerdem dengroszligen Vorteil in beiden Richtungen eingesetzt werden zu konnen

    43 Einige Theoretische Grundlagen

    431 Kleiner Fermat (oder kleiner Fermatrsquoscher Satz)

    Fur beliebige Primzahlen p gilt

    n(pminus1) = 1 mod p fur alle n isin Z

    To do Wikipedia verlinken

    432 Euklidischer Algorithmus

    To do erganzen Erweiterter Euklidischer Algorithmus fehlerhaft

    Aus der Wikipedia (unter GNU Free Documentation License)

    Beschreibung durch PseudocodeIm Folgenden wird der moderne Euklidische Algorithmus sowohl in einer rekursiven als

    auch einer iterativen Variante beschrieben Dabei sind a und b jeweils die beiden Zahlen derengroszligter gemeinsamer Teiler berechnet werden soll

    Rekursive Variante

    49

    EUCLID(ab)

    1 wenn b = 0

    2 dann return a

    3 sonst return EUCLID(b a mod b)

    Iterative Variante

    EUCLID(ab)

    1 solange b = 0

    2 r = a mod b

    3 a = b

    4 b = r

    5 return a

    FunktionsweiseIn jedem Schritt des Algorithmus wird eine Division mit Rest ausgefuhrt riminus1 = qi+1 middot

    ri + ri+1 0 le ri+1 lt ri Die Division mit Rest hat die Eigenschaft dass ggT(riminus1 ri) =

    ggT(ri ri+1) giltIm letzten Schritt des Algorithmus rnminus1 = qn+1 middot rn + 0 ist rn+1 = 0 und es gilt deshalb

    ggT(rnminus1 rn) = ggT(rn 0) = rn

    Da im ersten Schritt riminus1 = a und ri = b war ist ggT(a b) = rn

    (Quelle httpdewikipediaorgwikiEuklidischer_Algorithmus)

    (Denn es gilt ggT(a b) = ggT(b r))

    Aus der Wikipedia (unter GNU Free Documentation License)

    Man kann diese Rekursion in folgende Abfolge von Schritten fur den erweiterten euklidi-

    schen Algorithmus fassen Erhalte rdquoardquo und rdquobrdquo als EingabeSetze rdquok=0rdquo r0 = a r1 = b s0 = 1 und s1 = 0WiederholeErhohe rdquokrdquo um einsBestimme den ganzzahligen Quotienten qk = rkminus1 div rkSetze rk+1 = rkminus1 minus qk middot rk und sk+1 = skminus1 minus qk middot skbis rk+1 = 0 giltGib den Rest rk = ggT(a b) und die Zahl sk mit ggT(a b) equiv sk middot a (mod b) zuruckJeder Schritt enthalt implizit auch einen Multiplikator tk = (rk minus sk middot a) div b wobei diese

    Division keinen Rest lasst Die Folge (tk)k kann auch explizit bestimmt werden es gelten t0 =

    0 t1 = 1 und tkminus1 equiv qk middottk+tk+1 Nach dem letzten Schritt ergibt sich nun ggT(a b) = sk middota+tk middotbDer Ubersicht halber werden beim handischen Rechnen auch noch die Hilfsfolgen (ak =

    rkminus1)k und (bk = rk)k sowie (uk = skminus1)k sowie (vk = tkminus1)k mitgefuhrt

    50

    Zur Berechnung des Inversen modulo einer Restklasse benotigt man die tk aber nicht und kannsie ignorieren

    Aus der Wikipedia (unter GNU Free Documentation License)

    Rekursive VarianteFur den erweiterten euklidischen Algorithmus existiert auch eine rekursive Variante die

    durch den folgenden Pseudocode gegeben istab zwei Zahlen fur die der erweiterte euklidische Algorithmus durchgefuhrt wirdrdquoextended euclidrdquo(ab)1 rdquorsquowennrdquorsquo b = 02 rdquorsquodann returnrdquorsquo (a10)3 (drsquosrsquotrsquo)larr rdquoextended euclidrdquo(b a mod b)4 (dst)larr (drsquotrsquosrsquo - floor(ab)trsquo)5 rdquorsquoreturnrdquorsquo (dst)

    (Quelle httpdewikipediaorgwikiErweiterter_euklidischer_Algorithmus)

    Wenn n mod m teilerfremd sind dann existiert so ein Exponent f so dass

    n f equiv 1 mod m

    ist

    Wenn m = m1 middotm2 ein Produkt von zwei verschiedenen Primzahlen ist dann ist fur alle n die zum teilerfremd sind

    n(m1minus1)middot(m2minus1) equiv 1 mod m

    Denn es ist nm1minus1 equiv 1 mod m1 und nm2minus1 equiv 1 mod m2 Dann ist n(m1minus1)middot(m2minus1) minus 1 durch m1und m2 teilbar Denn nach dem Chinesischen Restsatz gilt n(m1minus1)middot(m2minus1) equiv 1 mod m1 middot m2 undwenn eine Zahl durch m1 middot m2 teilbar ist so auch durch m1 und m2

    433 Beispiel

    In Magma

    p=17 q=23

    m=(p-1)(q-1)

    e=19

    F=IntegerRing(m)

    51

    d=(Fe)ˆ(-1)

    d=IntegerRing()d

    19315 div 16

    19315 -374 16

    n=pq

    K=IntegerRing(n)

    N=100

    C=(KN)ˆ(e) Verschlusseln

    C

    Cˆd

    10019 equiv 349 mod 349

    349352 equiv 100 mod 391

    10019middot315 = 100 mod 17

    10019middot315 = 100 mod 23

    10019middot315 equiv 100374middot16+1 mod 17 equiv 100 middot (10016)374︸ ︷︷ ︸=1

    mod 17

    To do Analog von Mathias kopieren

    To do Wiederholung einsortieren

    Wiederholung

    Nachricht n

    ne equiv c( mod m)

    Chiffre c

    cd equiv (ne)d = ndmiddote = n1+k(pminus1)(qminus1) = n middot (n(pminus1)(qminus1))k︸ ︷︷ ︸=1

    equiv n middot 1k = n mod m

    nminusrarr

    dm cminusrarr

    em n

    52

    aus (em) kann man (dm) nicht leicht bestimmen weil man die Zerlegung m = p middotq nicht kenntWer p q kennt kann aus den einen den anderen Schlussel berechnen Wer de kennt kann pqbestimmen

    Verschlusselung kann jeder ausfuhren offentlicher Schlussel (em) Entschlusselung bleibt demvorbehalten der das geheime d (oder auch pq) kennt

    schnelles Potenzieren Ist die Berechung von ne ck ausreichend schnell

    m 1000 Bit pq-150 Dezimalstellen

    ne hat sehr sehr viele Dezimalstellen

    Deshalb berechnet man erst modulo und potenziert dann mit e

    (n mod m)e (c mod m)d

    Beispiele n19 = n middot n middot middot n︸ ︷︷ ︸19 Multiplika-tionen

    oder man rechnet

    n n2 n4 n8 n16 4 Quadrierungen

    n16 middot n2 middot n = n19

    so auch bei n1025 = n n2 n1024 n middot n1024 wo nur 11 Multiplikationen gebraucht werden

    Pseudocode nex=1

    repeat

    if (e = 1 mod 2)x = x middot n(prime mod mprime)

    n = n2(prime mod mprime)

    e = ediv2

    until e==1

    k = (nprime)0 middot xprime

    x = k = ne

    53

    44 RSA Rivest Shamir Adleman

    Bei dem Versuch die Idee der Asymmetrischen Kryptografie zu wiederlegen wurde RSA entwi-ckelt

    RSA beruht auf der Schwierigkeit n = p middotq in seine Primfaktoren zu zerlegen Verschlusseln undEntschlusseln ist Potenzieren modulo n

    D E = id

    p = (pe)d mod n

    p = pemiddotd mod n

    e middot d = 1 mod (p minus 1) middot (q minus 1)

    E(e n) ist offentlich und D(d n) geheim Die Bestimmung von e d n aus p q ist leicht GenauerDie Bestimmung von e aus (d n) ist leicht die Bestimmung von d aus (e n) ist schwer weilFaktorisierung n = p middotq (vermutlich) schwierig ist ist Bestimmung von d aus (e n) auch schwerWer p und q aus n berechnen kann kann auch d bestimmen (Euklid)

    Wer e und d kennt kann p und q bestimmen (dazu waren Erlauterungen in der Vorlesung)

    441 Funktionsweise des RSA-Verfahrens

    (nach wwwcryptooldedownloadsCrypToolScript 1 3 04 depdf)Man kann die Einzelschritte zur Durchfuhrung des RSA-Verfahren folgendermaszligen beschrei-ben Schritt 1 bis 3 sind die Schlusselerzeugung Schritt 4 ist die Verschlusselung 5 die Ent-schlusselung

    1 Wahle zufallig 2 verschiedene Primzahlen p und q und berechne n = p middot q Der Wert nwird als RSA-Modul bezeichnet

    2 Wahle zufallig e isin 2 n minus 1 so dass gilt e ist teilerfremd zu J(n) = (p minus 1) middot (q minus 1)Zum Beispiel kann man e so wahlen dass gilt max(p q) lt e lt J(n) minus 1 Danach kannman p und q ldquowegwerfenrdquo

    3 Wahle d isin 1 n minus 1 mit e middot d = 1 mod J(n) dh d ist die multiplikative Inverse zu emodulo J(n) Danach kann man J(n) ldquowegwerfenrdquo

    bull (n e) ist der offentliche Schlussel Pbull (n d) ist der geheime Schlussel S (es ist nur d geheim zu halten)

    4 Verschlusselung des Klartextes (bzw seiner Blocke) M isin 1 n minus 1

    C = E((n e) M) = Me mod n

    54

    5 Entschlusselung des Chiffretextes (bzw seiner Blocke) C isin 1 n minus 1

    M = D((n d) C) = Cd mod n

    442 Beweis der Funktionsweise

    (nach wwwcryptooldedownloadsCrypToolScript 1 3 04 depdf)Fur Schlusselpaare (n e) und (n d) die die in den Schritten 1 bis 3 des RSA-Verfahrens festge-legten Eigenschaften besitzen muss fur alle M lt n gelten M equiv (Me)d mod n wobei (Me)d =

    Memiddotd Das heiszligt der oben angegebene Dechiffrieralgorithmus arbeitet korrekt Wir zeigen das in3 Schritten

    1 Im ersten Schritt zeigen wir Memiddotd equiv M mod p Dies ergibt sich aus den Voraussetzungenund dem Satz von Fermat Da n = p middot q und J(p middot q) = (p minus 1) middot (q minus 1) und da e undd so gewahlt sind dass e middot d equiv 1 mod J(n) gibt es eine ganze Zahl k so dass gilte middot d = 1 + k middot (p minus 1) middot (q minus 1)

    Memiddotd equiv M1+kmiddotJ(n) equiv M middot MkmiddotJ(n) equiv M middot Mkmiddot(pminus1)middot(qminus1) mod p

    equiv M middot (Mpminus1)kmiddot(qminus1) mod p

    (aufgrund des kleinen Fermat Mpminus1 equiv 1 mod p)

    equiv M middot (1)kmiddot(qminus1) mod p

    equiv M mod p

    Die Voraussetzung fur die Anwendung des kleinen Fermat war dass M und p teilerfremdsind Da das im allgemeinen nicht gilt mussen wir noch betrachten was ist wenn M undp nicht teilerfremd sind da p eine Primzahl ist muss dann notwendigerweise p ein Teilervon M sein Das heiszligt aber

    M equiv 0 mod p

    Wenn p die Zahl M teilt so teilt p erst recht Memiddotd Also ist auch

    Memiddotd equiv 0 mod p

    Da p sowohl M als auch Memiddotd teilt teilt es auch ihre Differenz (Memiddotd minus M) equiv 0 mod pUnd damit gilt auch in diesem Spezialfall unsere zu beweisende Behauptung

    2 Vollig analog beweist man Memiddotd equiv M mod q

    3 Nun fuhren wir die Behauptungen der ersten beiden Schritte zusammen fur n = p middot qum zu zeigen Memiddotd equiv M mod n fur alle M lt n Nach den ersten beiden Schritten gilt(Memiddotd minus M) equiv 0 mod p und (Memiddotd minus M) equiv 0 mod q also teilen p und q jeweils dieselbeZahl z = (Memiddotd minus M) Da p und q verschiedenen Primzahlen sind muss dann auch ihrProdukt diese Zahl z teilen Also gilt

    (Memiddotd minus M) equiv 0 mod p middot q

    55

    oderMemiddotd equiv M mod p middot q

    oderMemiddotd equiv M mod n

    45 Schwachen von RSA

    bull Wenn N Nachrichten aus einer kleinen Menge gewahlt werden ist RSA unsicher

    for Nprime do (Nprime)e = C1 if C1 = C then N = Nprime

    bull Wenn N und e zu klein sind ist RSA unsicher dass heiszligt wenn Ne als Zahl kleiner als nist so das nich modulo gekurzt wird so kann man einfach eradicc

    bull Angriff mit frei gewahlten Chiffretext angenommen man hat Zugriff auf die Verschlusse-lungsmaschine so dass man mit selber vorgebenen Cprime Nprime berechnen kann (Cprime minusrarr Nprime)

    Re = S mod n S d = R mod n Cprime = S middotC

    (Cprime)d = S d middotCd = R middot N︸︷︷︸Nrsquo

    mod n

    Nprime middot Rminus1 = N mod n

    N1 minusrarr C1

    N2 minusrarr C2

    rArr N1 middot N2 minusrarr C1 middotC2

    bull Jeder Benutzer braucht ein eigenes n dass heiszligt man muss fur jeden Benutzer die entspre-chenden Primzahlen suchen allerdings ist dies aufwendig

    bull RSA ist extrem langsam im Vergleich zu symmetrischen Verfahren openssl speed rsabzw speed aes-256

    46 Fuktionen in OpenSSL

    461 genrsa

    genrsa erzeugt Schlusselpaare fur RSASchlussellange num_bits frei wahlbar wobei es einen Bug bei kleinen Werten gibt (weniger als60 Bit) so kurze Schlussel aber auch nicht verwendet werden solltenOptionen

    usage genrsa [args] [numbits]

    -out file output the key to file

    -passout arg output file pass phrase source

    56

    -f4 use F4 (0x10001) for the E value

    -3 use 3 for the E value

    -des encrypt the generated key with DES in cbc mode

    -des3 encrypt the generated key with DES in ede cbc mode (168 bit key)

    -idea encrypt the generated key with IDEA in cbc mode

    -aes128 -aes192 -aes256 encrypt PEM output with cbc aes

    -engine e use engine e possibly a hardware device

    -rand filefile load the file (or the files in the

    directory) into the random number generator

    462 rsa

    rsa gibt den public-key zu gegebenen private-key aus Auszligerdem auch weitere Informationenwie verwendeter Modulus Mit rsa kann auch ein gegebener key neu verschlusselt abgespeichertwerden

    rsa [options] ltinfile gtoutfile

    where options are

    -in arg input file

    -out arg output file

    -pubin expect a public key in input file

    -pubout output a public key

    -passin arg input file pass phrase source

    -passout arg output file pass phrase source

    -text print the key in text

    -noout donrsquot print key out

    -modulus print the RSA key modulus

    -check verify key consistency

    -des encrypt PEM output with cbc des

    -des3 encrypt PEM output with ede cbc des using 168 bit key

    -idea encrypt PEM output with cbc idea

    -aes128 -aes192 -aes256 encrypt PEM output with cbc aes

    -inform arg input format - one of DER NET PEM

    -outform arg output format - one of DER NET PEM

    57

    -sgckey Use IIS SGC key format

    -engine e use engine e possibly a hardware device

    463 rsautl

    Mit rsautl konnen Dateien ver- oder entschlusselt und signiert oder verifiziert werden

    Usage rsautl [options]

    where options are

    -in file input file

    -out file output file

    -inkey file input key

    -pubin input is an RSA public

    -certin input is a certificate carrying an RSA public key

    -sign sign with private key

    -verify verify with public key

    -encrypt encrypt with public key

    -decrypt decrypt with private key

    -hexdump hex dump output

    -pkcs use PKCS1 v15 padding (default)

    -oaep use PKCS1 OAEP

    -ssl use SSL v2 padding

    -raw use no padding

    -keyform arg private key format - default PEM

    -passin arg pass phrase source

    -engine e use engine e possibly a hardware device

    464 PKCS

    spater noch ausfuhrlicher hier nur kurz die Verwendung bei RSA

    Padding beginnt mit 0002 endet mit 00 und dann kommt der Chiffretext

    58

    465 OAEP - Optimal Asymmetric Encryption Padding

    Normalerweise wird mit RSA nur ein Schlussel fur eine symmetrische Verschlusselung ver-schlusselt da RSA verglichen mit symmetrischen Algorithmen sehr langsam ist

    Bemerkung Vergleichen mit speed rsa und speed aes (siehe History 21012009)

    Ist die so festgelegte Lange des Klartextes erheblich kleiner als die des RSA-Schlussels so ist einAuffullen der restlichen Bits notig Die implizite Methode (beim Betrachten des Klartextes alsZahl) einfach 0en einzusetzen empfiehlt sich nicht da die Zusatzinformation die ein Angreiferso uber den Klartext bekommt das Decodieren des geheimen Schlussels vereinfacht

    Beim Padding soll diese Gefahr verringert werden Per default wird bei openssl PKCS benutztAllerdings ist die Verwendung von OAEP besser Beim OAEP ist im Gegensatz zum PKCSdie Lange des Klartextes nicht mehr sichtbar (man kann nur noch dass beginnende 00 Byteerkennen) Choosen Plaintext Attacke ist nicht mehr moglich

    Dabei wird essenziell die zu verschlusselnde Nachricht mit einem Hashwert eines Zufalls-Stringsper xor verknupft und so randomisiert Eine Modifikation des benutzten Hashwerts wird dannmit der Nachricht konkateniert und steht beim Entschlusseln wieder zur Verfugung

    1 Label hash Label =

    2 PS erzeugen (alles Nullen 128-1-h-h-1-mdashmmdash)

    3 DB =

    4 Seed wahlen Lange h (irgendwas seed = Hash(irgendwas))

    5 DBmaske = MGF(seed mdashDBmdash)

    6 mDB = DB oplus GBmask

    7 seedmaske = MGF(mDB mdashseedmdash)

    8 mseed = seed oplus seedmaske

    9 EM =

    10 RSA-Verschlusselung C equiv EMe mod n

    MGF Hash Eingabe x Lange l

    tc = Hash(x c)

    mdashcmdash = 4 Byte

    MGF(x l) = t0 t1 t2 t3 |MGF( l)| = l

    59

    Ruckgangig

    1 Entschlusseln

    2 Zerlegen 00 mseed mDB

    3 seedmaske = MGF(mDB mdashmseedmdash)

    4 seed = mseed oplus seedmaske

    5 DBmaske = MGF(seed mdashmDBmdash)

    6 DB = mDB oplus DBmaske

    7 Padding abtrennen

    PKCS1 v15

    Die fur den Modul verwendeten Primzahlen mussen die ersten beiden Bits gesetzt haben dasgarantiert nach Multiplikation der Primzahlen dass das Produkt im oberen Byte das obere Bitgesetzt hat und somit die feste voranstehende 0 uberdeckt

    466 Wie erkennt man an Ciphertexten den Verschlusselungsalgorithmus- DER ASN1

    Standards damit man (zB RSA) verschlusselte Texte erkennt

    DER- distingushed Encoding Rules

    ASN1- Abstract Syntax Notation

    openssl asn1parse -genstr INTEGER4711 -out intasn1 openssl asn1parse -in intasn1 -inform DER

    Integer werden in ASN1 als rsquo 02︸︷︷︸Tag

    lange Datenrsquo kodiert Integers brauchen 1 Byte mehr rsquoDatenrsquo

    damit Das Vorzeichen 00 enthalten ist Integer ist immer mit Vorzeichen

    Tag fur andere Typen

    Bool 01

    Int 02

    Octet String 04

    Bitstring 03 rsquolangersquo rsquoungenutzte bits am Endersquo rsquoByte des Bitstringrsquo [evt ungenutzte Bits]

    Text PRINTABLESTRING

    60

    utf8 UTF8String

    Text mit Zeichen (emailadresse) IA5STRING

    DatumZeit UTC

    mit Jahrhundert GENTIME

    nuscht (der leere Typ) NULL

    Mengentypen seq set

    Mann kann auch eigene Typen generierend EXPLICITAF oder so

    467 Umgehen mit den Schlusselkomponenten

    Ein vollstandiger RSA-Schlussel besteht aus einem Modul (modulus) n = p middot q offentlichemExponent e privatem Exponent d Primzahl 1 p Primzahl 2 q (haufig p gt q) Exponent 1 dpExponent 2 dq Koeffizient qi und kann so ausgegeben und gespeichert werden

    Bei der Version fur rsquoarmersquo werden nur n offentlicher Exponent e und geheimer Exponent dangegeben

    c equiv me mod n (3)

    m equiv cd mod n (4)

    Vorteil der vollstandigen Version Geschwindigkeitserhohung bei der Entschlusselung in Schritt(4)

    dp equiv d mod (p minus 1) d = k middot (p minus 1) + dp

    dq equiv d mod (q minus 1)qi middot q equiv 1 mod q

    m equiv cd mod (p middot q) berechnenm1 equiv cdp mod p 500 Operationen mit 1

    2 langem Modulm2 equiv cdq mod q 500 Operationen mit 1

    2 langem ModulInsgesamt 1000 Operationen mit 1

    4 der Lange

    apminus1 equiv 1 mod p wenn (a p) = 1teilerfremd1

    1kleiner Fermatscher Satz

    61

    m1 equiv cd mod pm2 equiv cd mod q

    h equiv (m1minusm2)middotqi mod p (darauf achten dass das minusm2 mod p ausgerechnet wird nicht mod q)

    m = m2 + h middot q

    1 m lt n2 m equiv cd mod p da m2 + h middot q equiv m2 + (m1 minus m2) middot qi middot q mod p equiv m2 + m1 minus m2 equiv m1 alsoequiv cd mod pm equiv cd mod q da m2 + h middot q equiv m2 mod q also equiv cd mod q

    x equiv y mod p und x equiv y mod q dann folgt x equiv y mod p middot qEuklidischer Algorithmus (p q)-teilerfremd dann p middot u + q middot v = 1 Chinesischer Restsatz

    47 Miller-Rabin Test

    Heute openssl dhparam und was Verbluffendes so dass man es nur mit der Phantasie einesInformatikers oder Mathematikers verstehen kann (Literatur Menezes Oorschot Handbook ofApplied Cryptography)

    Primzahlen Feststellen ob eine Zahl eine Primzahl ist durch Testen von Divisionen wird beigroszligen Zahlen sehr lang

    p middot q = n ausrechnen geht schnell Umkehrung n =middot ist moglicherweise schwer

    Uber 2214+ 1 weiss man dass es keine Primzahl ist2 kennt aber keinen der Faktoren Kriterium

    rdquokeine Primzahlldquo lasst sich auf folgende Art manchmal feststellenWenn (a n) = 1 so ist anminus1 equiv 1 mod nFermatTest Wenn fur (a n) = 1 anminus1 1 mod n so kann n keine Primzahl sein

    Primzahlen Test

    Wenn fur eine Zahl a mit (a n) = 1 der Fermat-Test nicht bestanden wird nennt man a einenZeugen fur Nichtprimalitat

    2Vierzehnte Fermatsche Zahl

    62

    Zeugen gibt es sehr viele nicht realistisch alle zu rdquobefragenldquo Ausserdem gibt es Zahlen diekeine Zeugen haben aber keine Primzahl sind

    Aus diophantischen Gleichungen folgt Es gibt ein Polynom mit ganzzahligen Koeffizienten f (n)mit der Eigenschaft Wenn f (n) gt 0hArr n ist PrimzahlAber das Polynom hat 26 Koeffizienten Fur Mathematiker ist das Problem erledigt da das Poly-nom existiert fur Informatiker ist es das nicht wirklich da die Berechnung ubermaszligig komplexist

    Die Nicht-Primzahlen ohne Zeugen heissen Carmichael-Zahlen Haben die Eigenschaft forallp(p|nrArrp minus 1|n minus 1)rArr CarmichaelZum Beispiel 561 hat Teiler 3 11 17 Der Test liefert 2|560 10|560 16|560

    Erweitern (n Primzahl) Wenn (a n) = 1 und anminus1 equiv 1 mod n und 2|n minus 1 (anminus1 equiv 1 mod na

    nminus12 equiv )

    Wenn x2 equiv 1 mod n was ist x mod n n|x2 minus 1 = (x minus 1)(x + 1) entweder n|x + 1 odern|x minus 1

    FermatTest+ Wenn fur (a n) = 1 anminus1 1 mod n oder falls anminus1 equiv 1 mod n und anminus1

    2 +1und a

    nminus12 minus1 so kann n keine Primzahl sein

    und 4|n minus 1 anminus1

    4 anminus1

    2 anminus1

    1 mod n Diese Folge ist entweder 1 1 1 oder minus1 1 1 oderlowastminus1 1

    Wenn (a n) = 1 und 2k|nminus 1 (k maximal) dann ist die Folge anminus12k a

    nminus12kminus1 a

    nminus12 anminus1 entweder

    1 1 oder lowastminus1 1 1 (lowast steht fur beliebige Folge)

    Probieren n = 81 n minus 1 = 80 durch 2er-Potenzen teilen kommt irgendwas mit 5 hinten rausAls Zeugen nehmen wir mal 2 Ausrechnen 25 210 220 240 280 und schauen ob diese Folgemodulo 81 einen der beiden Typen hat 32 1 mod 81

    FermatTestlowast (= Miller-Rabin-Test) Wenn fur (a n) = 1 2k|n minus 1 teilt und die Folge anminus12k a

    nminus12kminus1

    anminus1

    2 anminus1 modulo n nicht 1 1 und nicht lowastminus1 1 1 dann ist a ein Zeuge fur Nicht-primalitat

    Fur Miller-Rabin-Test gibt es keine zeugenlosen zusammengesetzten Zahlen es gibt unter denzu n teilerfremenden Zahlen mindestens 25 Zeugen3 (MenezesOorschot Kapitel 4 Fact 425Fact 448 Tabelle 43)

    Die fur Informatiker interessante Frage ist die Frage Wenn man eine Wahrscheinlichkeit kleiner2minus80 fur eine fehlerhaft durch Miller-Rabin nicht erkannte zusammengesetzte Zahl haben will

    3Anmerkung spater 34 sind Zeugen 1

    4 sind Lugner

    63

    muss man fur n (512 Bit) 6 Tests machen Je groszliger die Zahlen werden desto weniger Testsmuss man machen Fur 1024 3 Tests fur 2048 2 Tests Vorausgesetzt ist immer noch ein Testauf kleine Faktoren Dabei pruft man ob (n pi) = 1 fur pi lt B wobei pi kleine Primzahlen sindDas B wahlt man so dass dieser Test nicht langer dauert als ein Miller-Rabin-Test

    Wie wahlt man Primzahlkandidaten Generiere Zahl mit Zufallszahlengenerator schaue ob diedurch 2 oder so teilbar ist wahle dann die nachste Zahl

    openssl dhparam -dsaparams -text -noout 2048 schnellopenssl dhparam -text -noout 2048 langsam

    Safe Prime pminus12 hat einen groszligen Primzahlfaktor q dann getestet ob 2(k middot (q + 1)) Primzahl ist

    pminus12 ist Primzahl

    Wofur braucht man die Primzahlen Naturlich fur RSA und jetzt neu

    48 Diffie-Hellman-Schlusselaustausch

    Alice und Bob haben gemeinsame offentliche Informationen tauschen offentliche Informationenaus und verfugen danach beide uber einen gemeinsamen privaten Schlussel

    g = 2 (offentlich bekannt (Generator)) Primzahl p (offentlich bekannt)

    Erganzungen g g2 g3 gpminus1 mod p (g Generator dann alle verschieden)

    Bob Alice

    Eve

    x y

    g^y mod p

    g^x mod p

    64

    Bob wahlt zufallig 1 lt x lt pminus 1 und ruft Alice gx mod p zu Alice wahlt zufalig 1 lt y lt pminus 1und ruft gy mod p zu

    Bob berechnet (gy)x mod p und Alice berechnet (gx)y mod p Beide erhalten gxmiddoty mod p An-greifer Eve kennt nur gx mod p gy mod p fehlt gxmiddoty mod p

    Wenn Eve das diskrete Logarithmusproblem losen konnte also zu gx mod p und g mod pdas x ausrechnen konnte dann ware gxmiddoty mod p leicht zu berechnen Die besten Algorithmenfur das diskrete Logarithmusproblem mod p sind subexponentiell im groszligten Primfaktor vonp minus 1

    Falls (p minus 1) viele kleine Primfaktoren pi hat ist das diskrete logarithmus Problem leicht denndann lost man das Problem nicht a mod (pminus1) sonder jeweils a mod pi und setzt0 dass ganzedann mit dem Chinesischen Restsatz zusammen

    Sucht p so dass pminus12 auch eine Primzahl ist dazu wird zuerst eine Primzahl pprime gesucht und dann

    geguckt ob 2pprime + 1 auch Prim ist

    Openssl

    Variante DH (DSAparam) (-dsaparam)

    p-Primzahl 1536

    g-rsquoGeneratorrsquo nicht von (p minus 1) sondern von der Restklasse h

    160 Bit g g2 g3 gh alle verschieden mit h=160 Bit

    Dann sollen xy so gewahlt werden dass 1 lt x y lt h = 160 Bit

    Ein weiteres asymmetrisches Cryptosystem kann man darauf aufbauen Alle kennen g und pjeder generiert sich x (privater Schlussel) und gx mod p wird veroffentlichtAlice will Bob etwas verschlusselt schickenSie generiert ein k berechnet aus k und Bobs veroffentlichtem gx a = (gx)k mod p und ausdem allgemein bekanntem g gk mod pM sei die Nachricht ( mod p) die Alice verschicken will Sie berechnet a middot M mod p undsendet an Bob das Paar (gk mod p a middot M mod p)Bob berechnet (gk)x mod p = a und dividiert amiddotM

    a mod p und erhalt somit M

    Der Schlussel a darf nicht zweimal verwendet werden

    Man nennt (gk a) zeitweiliger bzw ephemeraler Diffie Hellmann Schlussel

    Nachteil die Nachrichtenlange wird verdoppelt

    65

    Das Verfahren ist unsicher wenn Alice die Zahl x schlecht wahlt x = 1 2 1 2 1 2 1 = x1 x2

    49 ElGamal-Cryptosystem

    (siehe auch TR 3111 vom BSI auf Seite 21)

    Auf Diffie-Hellmann aufbauendAlice offentlicher Schlussel ga (p g) privat aBob offentlicher Schlussel gb (p g) privat b

    Alice will an Bob schicken

    1 Zufallszahl k generieren

    2 Berechne mit Bobs Parametern gk mod p

    3 Berechne mit Bobs Parametern (gb)k mod p (DH-Schlussel)

    4 Berechne m middot (gb)k mod p

    5 Sende(gkm middot (gb)k

    )mod p

    Bob empfangt (x y)

    1 Berechne xb mod p (DH-Schlussel)

    2 y middot (xb)minus1 mod p = m mod p

    Alice baut also einen temporaren DH-Schlusselteil4 zu Bobs Parametern und sendet diesen unddie damit verschlusselte Nachricht m

    Nachteil Nachricht wird durch den Ephemeralschlussel doppelt so lang

    410 Wiederholung DH

    Generator gPrimzahl pga mod p Restklassen mod p = Korper(middot inverses)Dass p Primzahl ist ist eigentlich ZufallErzeugendes Element GOperation auf Elementen +

    a middotG = G + G + G + + G a-malEs muss schwer sein aus G und B = a middotG gegeben das a zu bestimmenG muss eine Ordnung n haben n middotG = 0 (Neutrales Element der Operation +)

    4Auch Ephemeralschlussel genannt

    66

    4101 Beispiel

    Alice Bob G+ nAlice denkt a denkt a middotGBob denkt b denkt b middotGBeide tauschen a middotG und b middotG aus und berechnen a middot b middotGa middotG ist leicht zu berechnen double and adda = a0 + a1 middot 2 + + ak middot 2k

    a middotG = a0 middotG + a1 middot 2 middotG + + ak middot 2k middotG(k minus 1)-mal rdquomiddot2ldquo und (k minus 1)-mal rdquo+ldquo

    411 was anderes

    Nimmt man nun G groszlige Gruppe mit n Elemente und der Addition +

    g-Generator

    g 2g 3g nG︸︷︷︸Nullelement

    Alice wahlt 1 lt x lt n bestimmt x middot g

    Bob wahlt 1 lt y lt n bestimmt y middot g

    Dann wieder K = (ab) middot g = K

    To do erganzen

    Problem des Diskreten Logarithmus in G gegeben ist G g Generator ist 0 c = a middot g in Ggesucht alogGc-diskreter Logarithmus in G

    Diese Variante funktioniert also mit allen rsquoKomplizierten Gruppenrsquo das fuhrt zu dem nachstenThema

    412 Elliptische Kurven

    Wo gibt es so etwas schon Elliptische Kurven Sind nicht weit verbreitet weil sie dem Mana-gement schwer zu erklaren sind

    67

    Aus der Wikipedia (unter GNU Free Documentation License)

    In der Zahlentheorie ist eine elliptische Kurve eine singularitatenfreie algebraische Kurve derOrdnung 3 in der projektiven Ebene

    Von besonderem Interesse zB fur die Faktorisierung naturlicher Zahlen sind aufgrundihrer einfachen Struktur elliptische Kurven der Form cy2 = x3 + ax + b mit c 0 und 4a3 +

    27b2 0 Einige moderne Verschlusselungsverfahren basieren auf solchen Kurven Der Nameleitet sich historisch davon ab dass diese Kurven durch elliptische Integrale parametrisiertwerden konnen

    Elliptische Kurven uber endlichen Korpern werden in der Kryptografie eingesetzt Dazuwird ausgenutzt dass eine Gerade (lineare Funktion) die zwei Schnittpunkte P und Q mit ei-ner Elliptischen Kurve hat diese auch in einem 3 Punkt schneidet Der Punkt der aus demletzteren durch Verkehren des Vorzeichens der Y-Koordinate (wenn die Kurve die oben ange-gebene Form hat) entsteht wird P + Q genannt Man kann zeigen dass diese Punktaddition(P und Q werden addiert das Ergebnis ist der Punkt P + Q) sowohl kommutativ als auch as-soziativ ist Erganzt man die Elliptische Kurve um einen weiteren Punkt 0 (genannt Punkt imUnendlichen) so bildet sie zusammen mit der (etwas erweiterten) Punktaddition eine abelschealgebraische Gruppe

    Sei nun P ein Punkt der Elliptischen Kurve Der Punkt P + P wird mit 2P bezeichnetentsprechend definiert man kP = P + + P als k-fache Addition des Punktes P Ist P nichtder 0-Punkt und ist die Ordnung der Elliptischen Kurve prim so kann auf diese Weise jederPunkt der Kurve erreicht werden (dh zu jedem Punkt Q auf der Kurve existiert eine naturlicheZahl k mit Q = kP) Die Aufgabe aus gegebenen Punkten PQ diesen Wert k zu ermittelnwird als Diskretes Logarithmus-Problem der Elliptischen Kurven (kurz ECDLP) bezeichnetEs wird angenommen dass das ECDLP (bei geeigneter Kurvenwahl) schwer ist dh nichteffizient gelost werden kann Damit bieten sich Elliptische Kurven an um auf ihnen asymme-trische Kryptosysteme zu realisieren (etwa einen Diffie-Hellman-Schlusselaustausch oder einElgamal-Kryptosystem)

    y2 = x3 + a middot x + b Skizze der Kurven S2Zu S2 Punkte auf der Kurve kann man addieren

    Die Rechenregeln gehen auch in einem Korper mod pBeispiel y2 equiv x3 + a middot x + b mod p Skizze S3

    Es gibt immer Punkte mit denen man rechnen kann Punkte sind geeignet die Addition funk-tioniert auch und hat die Anzahl N der Punkte einen groszligen Primzahlteiler dann haben wir auchKryptosystem mit G+ n Wenn groszliger Primzahlteiler exisitert1 N hat groszligen Primzahlteiler n2 Wahlen zufallig einen Punkt G als GeneratorDaraus erhalt man DH und El Gamal

    Zuerst eingefuhrt durch Victor Miller und Neal Koblitz um 1980 herum Damals war N schwer

    68

    bestimmbar Inzwischen gibt es bekannte Algorithmen (Schoof-Algorithmus)Diskretes Logarithmusproblem ist fur elliptische Kurven wirklich exponentiell (bis jetzt) EinBit mehr verdoppelt den Rechenaufwand (192-Bit-256 Bit bewegt sich in GroszligenordnungenRSA 2000-4000-Bit)

    Erganzung

    1Bei der Erforschung von Eliptischen Kurver stellte sich zuerst die Frag wie groszlig ist eigentlichdie Ordnung n der Gruppe Man wusste n sim p und man wusste sogar n minus p + 1 minus

    radicp lt n lt

    minusp + 1 +radic

    p

    2 Schnelle Algorithmen zur Berchnung der Ordnung

    3 ECDLP ist schwer wenn n einen groszligen Primfaktor hat

    To do sortieren

    Erganzung

    man hat p a bG n h

    K = y2 = x3 + ax + b

    p ist fur die Punktaddition (Formeln siehe enwikipediaorg wobei λ = (yQ minus yP) middotminus1

    (xa minus xp)︸ ︷︷ ︸mit GGT

    mod p)

    Anmerkung zum Wikipedia Artikel binary Case bedeutet man die Eliptischen Kurven auch inKorper mit 2k betrachten allerdings vieler solcher Falle patentiert

    G = Generatorpunkt mit G 2G 3G nG alle verschieden n kleinste Zahl so dass alle ver-schieden

    nG = 0

    bei der DSA-Parameter Form nimmt man weniger Grsquos

    Der nachste Parameter ist der cofactor h welches den Unterschied zwischen n und der Anzahlder Produkte auf der Kurve angibt

    Trick beim testen ob alle iG verschieden sind man guckt ob n eine Primzahl ist und ob nG = 0ist wenn ja ist dies das erste mal sonst ware n ja keine Primzahl Also sind alle vorherigen iG

    69

    verschieden

    Kurven finden besser Bestimmung der Punktanzahl ist schwer

    Fruher gab es kleine cofactoren h lt 16

    openssl ecparama -list_curves sind schon vorher erzeugt kann openssl nicht selber

    openssl ecparam -name secp160k1 -text -noout da die Kurve festgelegt ist gibt es nurein object zuruck

    openss ecparam -name secp160k1 -text -param_enc explicit -noout

    openss ecparam -name secp160k1 -text -param_enc explicit -noout -conv_form compressednichtkomprimiert gibt nur die x-Koordinate aus

    Bei der komprimierten Form kann mit der Kurve die andere eindeutig bestimmen (oder so)

    Darstellung als komprimierte Punkt ist auch wieder patentiert

    413 Elliptische Kurven Nachtrag

    GF(p) (Galois-Field) sind Kurven mod p mit p Primzahl erfullen Gleichungen der Form y2 =

    x3 + a middot x + b

    GF(2k) Korper mit 256 Elementen = 28

    In OpenSSL nur elliptische Kurven mod p patentfrei

    Kofaktor finden Wir haben Punktgruppe G es gibt einen Generatorpunkt gn middotG = 0 n ist die Ordnung

    cofactor︸ ︷︷ ︸klein

    lowast order︸︷︷︸primzahl

    = Anzahl der Punkte

    (cofactor soll klein sein order Primzahl) Anstelle Punkt auf der elliptischen Kurve als (x y) (x ymod p) abzuspeichern TrickWenn es ein Punkt ist gibt es zu x zwei y die quadratische Gleichung y2 = x3 +a middot x+b erfulleny1 =

    radicx3 + ax + b mod p

    y2 = minusradic

    x3 + ax + b mod peine der beiden Zahlen hat als letztes Bit immer 1 die andere eine 0 man nimmt daher nur noch(x LSB(y)) (x und kleinstes Bit von y)

    70

    414 Rucksack-Verschlusseln

    Kryptosystem das sich bei OpenSSL zu recht nicht findet Hat den Anschein als wurde es aufeinem NP-vollstandigen Problem beruhen Problem ist NP-vollstandig weil es ein allgemeinesRucksackproblem istSieht aber nur so aus ist aber nur polynomial weil es ein Transformiertes eines leichten Ruck-sackproblems ist

    Gegeben W Fassungsvermogen des Rucksacks w1w2 wk kleine GewichteGesucht W =

    sumeiwi mit ei isin 0 1

    Rucksack-Verschlusseln von MerkleHellmann Rucksack mit schnell wachsenden Gewichtenist leicht zu berechnendh wi gt

    sumjlti e jw j nachstes Gewicht ist immer schwerer

    4141 Beispiel

    Rucksack W = 51 = 31 + 15 + 3 + 2 wprimei s 2 3 7 15 31Grundidee Aus dem schnellen Rucksack einen langsamen machenM gt

    sumwi k mit (M k) = 1 k middot 2 k middot 3 k middot 31 mod M

    M = 61 ist Modul k = 17 ist privater Schlussel m = (1 1 0 1 1) ist unverschlusselte Nachricht31 51 58 11 39 ist offentlicher Schlussel 34 + 51 + 11 + 39 = 135 = 13rarr c ist verschlusselteNachrichtEmpfanger rechnet aus dem erhaltenen Gewicht (135) das richtige Gewicht wieder raus 135middotkminus1

    mod 61 = 51 und kann das Problem mit den schnellen Gewichten losen

    Zum BrechenMan transformiert 34 51 58 11 39 in eine Folge die schnell wachsend ist zB 1 3 5 11 29dh das transformierte System kann auf mehrere Probleme zuruckgefuhrt werden man brauchtnur eine passende Rucktransformation finden Adi Shamir hat dafur einen polynomiellen Algo-rithmus angegeben

    415 Merkle Puzzle

    Man generiert sich 1000000 Nachrichten rdquoDas ist Nachricht ni fur den Schlussel k jldquo ni zufalli-ge 20-Bit Zahl k j 128-Bit SchlusselVerschlusselungsverfahren DES diese 1000000 werden mit 20-Bit Schlusseln verschlusseltAlice schickt die 1000000 Nachrichten an Bob als offentlichen SchlusselBob will Alice eine Nachricht schicken Er sucht eine der Nachrichten aus dem offentlichen

    71

    Schlussel aus und macht eine Brute-Force Attacke auf diese Nachricht Er findet ni und kiBob verschlusselt mit dem ki seine Nachricht und sendet ni im Klartext mit

    Alice und Bob haben linearen Aufwand Eve quadratischen

    Von everything2comAlice and Bob agree on a symmetric algorithmAlice generates a large number (over a million at least) of messages of the form ldquoThis is myindex X and my puzzle is Yrdquo Each of the messages is encrypted with a 20-bit keyAssume there are 220 (about a million) messages it takes 220 operations to get the key and acomputer can perform 220 operations per second Bob takes 1 second to recover the key to amessage Eve takes 12 daysNow make that 230 (about a billion) messages Bob still only takes a second to get the key andit will take Eve 34 years

    Public Key Idee hier schon vorhanden

    416 Rabin-Verfahren und Wurzelziehen

    Aus der Wikipedia (unter GNU Free Documentation License)

    Das Rabin-Kryptosystem ist innerhalb der Kryptologie ein asymmetrisches Kryptosystem dasauf einem Faktorisierungsproblem beruht und mit RSA verwandt ist Es lasst sich prinzipiellauch zur Signatur verwenden In der Praxis findet das Verfahren allerdings wegen bestimmterAngriffsmoglichkeiten kaum Anwendung

    4161 Schlusselgenerierung

    Aus der Wikipedia (unter GNU Free Documentation License)

    Seien p und q zwei moglichst groszlige Primzahlen fur die eine bestimmte Kongruenzbedingunggelten muss Der offentliche Schlussel n wird durch Multiplikation der beiden Zahlen erzeugtalso n = p middot q Der geheime Schlussel ist das Paar (p q) Anders ausgedruckt Wer nur n kenntkann ver- aber nicht entschlusseln wer dagegen p und q kennt kann damit auch entschlusselnZum Erzeugen des offentlichen Schlussels mussen die Zahlen p und q bekannt sein Der offent-liche Schlussel lasst sich nur genau aus den beiden Primzahlen erzeugenWaren p und q keine Primzahlen so lieszlige sich das Verfahren ubrigens nicht anwendenSeien beispielhaft p = 7 q = 11 (in der praktischen Anwendung handelt es sich um sehr vielgroszligere Zahlen um die Entschlusselung durch Dritte so schwierig wie moglich zu machen)Daraus ergibt sich der offentliche Schlussel n = p middot q = 77

    72

    4162 Kongruenzbedingung

    Aus der Wikipedia (unter GNU Free Documentation License)

    Fur p und q muss die Kongruenzbedingung(

    pminus1p

    )= (p minus 1) und

    ( qminus1q

    )= (q minus 1)

    (wobei fur(

    nminus1n

    )= (n minus 1)

    nminus12 equiv (n minus 1) mod n = (n minus 1) gilt)

    oder einfacher ausgedrucktp equiv q equiv 3 mod 4gelten

    Allgemein gilt namlich fur die Primzahl r mit r equiv 3 mod 4 und die Zahl a mit a equivb2 mod ra

    (r+1)4 equiv

    radica mod r

    Diese Eigenschaft dient dazu spater die Entschlusselung zu erleichternWegen 7 equiv 11 equiv 3 mod 4 ist die Kongruenzbedingung fur das Beispiel erfullt

    n = p middot q Produkt von Primzahlen

    m soll verschlusselt werden c equiv m2 mod n (einfach Quadrieren weil Wurzelziehen schwer istwenn der Modul ein Produkt von 2 Primzahlen (p middot q) ist weil wer Wurzel ziehen kann kannauch Faktorisieren (n)

    Begrundung Es gibt 2 Losungen c = x2 equiv y2 mod n Wie findet man nun die Faktoren von nn teilt x2 minus y2 = (x minus y)(x + y) und x gt y und (x minus y) lt n und n hat nur 2 Primfaktoren daherx minus y = p und x + y = q Wurzelziehen ist leicht mod p mod q Gesucht Wurzel c mod pxp = c

    p+14 mod p und xq = c

    q+14 mod q

    x2p equiv c

    p+12 equiv c

    pminus12 middot c mod p

    Weil cpminus1 equiv 1 mod p ist (nach kleiner Fermat) die Wurzel daraus cpminus1

    2 equiv plusmn1 wegen c equiv m2

    mod n gilt (m2)pminus1

    2 equiv mpminus1 equiv 1(p) Stuck fehlt Ende des Wurzelziehens

    4163 Verschlusselung

    Aus der Wikipedia (unter GNU Free Documentation License)

    Sei nun P = 0 nminus1 der Klartextraum (er besteht also aus Zahlen) und m isin P der KlartextNun lasst sich der Geheimtext c durch c = m2 mod n bestimmen Dabei ist c der QuadratischeRest von zu der Quadratzahl m2 zum Modulo der Schlussel-Zahl n Im praktischen Einsatzbietet sich die Verwendung von Blockchiffre an

    In unserem Beispiel sei P = 0 76 der Klartextraum m = 20 der Klartext Der Ge-heimtext ist hierbei nun c = m2 mod n = 15

    73

    Dabei muss man beachten dass fur genau vier verschiedene m das c den Wert 15 aufweistnamlich fur m isin 13 20 57 64 Ahnliches gilt fur die meisten c

    4164 Entschlusselung

    Aus der Wikipedia (unter GNU Free Documentation License)

    Seien allgemein c und r bekannt gesucht wird m isin 0 n minus 1 mit m2 equiv c mod r Furzusammengesetzte r (beispielsweise unsere n) existiert kein effizientes Verfahren zur Bestim-mung von m Ansonsten wenn also r isin P (in unserem Fall p und q) dann lasst sich jedoch derchinesische Restsatz ausnutzen

    In unserem Fall sind nun die Quadratwurzelnmp =

    radicc mod p

    undmq =

    radicc mod q

    gesuchtWegen obiger Kongruenzbedingung gilt

    mp = c(p+1)

    4 mod pundmq = c

    (q+1)4 mod q

    In unserem Beispiel ergeben sich mp = 1 und mq = 9Mit dem erweiterten euklidischen Algorithmus werden nun yp und yq mit yp middot p+yq middotq = 1

    bestimmt In unserem Beispiel erhalten wir yp = minus3 und yq = 2Nun werden unter Ausnutzung des chinesischen Restsatzes die vier Quadratwurzeln +r

    minusr +s und minuss von c + nZ isin ZnZ berechnet (ZnZ steht hierbei wie ublich fur die Menge derRestklassen modulo n die vier Quadratwurzeln liegen in der Menge 0 n minus 1)

    r = (yp middot p middot mq + yq middot q middot mp) mod nminusr = n minus rs = (yp middot p middot mq minus yq middot q middot mp) mod nminuss = n minus s

    Eine dieser Quadratwurzeln mod n ist wieder der anfangliche Klartext m Im Beispielgilt m isin 64 20 13 57

    417 Angriffe auf asymmetrische Verschlusselungsverfahren

    Fall RSA

    74

    4171 1 Angriff Common modulus attack

    Idee Gleicher Modul fur verschiedene Leute hatte den Vorteil dass man sich nur die kleinenoffentlichen Exponenten e1 und e2 merken muss nicht mehr die groszligen Module hat aber Nach-teil (e1 e2) = 1 teilerfremd umiddote1+vmiddote2 = 1 (mit erweitertem Euklid) Sendet man eine Nachrichtm an zwei Alices berechnet also c1 = me1 mod n und c2 = me2 mod n dann kann man mitden Chiffren c1 und c2 auch ausrechnen cu

    1 middot cv2 = me1u middot me2u = me1u+e2v = m mod n Nachricht

    erhalten

    4172 2 Angriff kleiner geheimer Exponent d

    Wenn |d| lt |m|3 dann ist Faktorisieren moglich Sicherheitsrisiko geheimer Exponent muss im-

    mer moglichst groszlig sein aus groszligem offentlichen Exponenten |e| kann man erfahren dass dergeheime Exponent klein ist

    4173 3 Angriff Faktorisieren

    Wenn p ungefahr so groszlig wie q also p minus q = ∆ klein ist dann ist ( p+q2 + ∆

    2 ) (ungefahr Wurzel n+ was kleines = p) middot( p+q

    2 minus∆2 ) = p middot q Man weiszlig dass die eine Zahl uber Wurzel n liegt und die

    andere Zahl unter Wurzel n (Wurzel n + klein = p Wurzel n - klein = q)

    4174 Echt schlechte RSA-Schlussel

    n = 3middotq (1024 Bit) und offentlichen Exponenten bei TCTrustCenter abgegeben Damit kann manzeigen dass PGP als Signaturverfahren schlecht ist Schlussel schlecht gewahlt dadurch kannjeder die Kommunikation mitlesen da n sehr leicht zu Faktorisieren die Leute sie konntender Person mit dem schlechten Schlussel vertrauenswurdige Nachrichten schicken und laufenin die Falle dass ihre Nachrichten nun offentlich sind Anderer Fall Bewuszligt solche Schlusselvergeben um Nachrichten in einem kompletten Netzwerk lesen zu konnen

    n = Primzahl e middot d equiv 1 mod (n minus 1)

    Mit n als Primzahl geht normale Entschlusselung nicht

    n p q e dp dq qi dc equiv me mod nm1 equiv cdp mod pm2 equiv cdq mod qdp equiv d mod (p minus 1)

    75

    dq equiv d mod (q minus 1)

    m = m2 + (m1 minus m2) middot qi︸ ︷︷ ︸mod p

    middotq

    m equiv cd mod q und m equiv cd mod prArr cd

    Bundesamt fur Informationssicherheit sagt zur Verwendung von RSA p q mussen unabhangigvoneinander zufallig erzeugt werden und 0 5 lt | log2 p minus log2 q| lt 30

    4175 Schnelles Faktorisieren bei Fehler im System

    DFA - Differential Fault Attack System das entschlusselt aber sich an einer Stelle verrechnetmprime1 ist Rechenfehler statt wirkliches m bekommt man ein mprime = m2 + (mprime1 minus m2)qi lowast qbildet man nun m minus mprime 0 aber durch q teilbar dh bringt man das System dazu einen Fehlerzu machen und hat man die Originalnachricht GGT (m minus mprime n) = q schon hat man den Mo-dul faktorisiert hat funktioniert viele Chipkarten verrechneten sich unter Streszlig Es reicht dasmprime zu kennen m kann unbekannt bleiben denn man rechnet (mprimee minus c n) = q es reicht eineentschlusselte Nachricht zu haben

    Anderer Angriff auf ChipkartenDPA - Differential Power Analysis Stromverlauf ansehen Differenzen bilden und sequentiellanalysieren

    Angriff auf El Gamal Systemegeheimer Schlussel a offentlich g p ga Verschlusselte Nachricht zufalliges k (gk mmiddotgak)= c 1Angriff k gleich fur verschiedene Nachrichten oder k1 k2 in Abhangigkeit oder k k+1 k+2 fur verschiedene Nachrichten oder a middot k + b

    4176 Angriff mit gewahltem Chiffretext

    Normalerweise bei RSA m minusrarr c = me mod n

    cprime vorgegeben fuhrt zu Klartext mprime = (cprime)d mod nAnforderung Beliebiger Chiffretext auszliger cprime = c wahlbar zu dem man dann den Klartext erhalt

    Problem bei RSA

    1 r (zufallig gewahlt)rarr re mod n = s

    2 cprime = s middot c mod nVerschlusselungsmaschine liefert dann (cprime)d = sd middot cd = (re)d middot m = r middot m mod n = mprime

    76

    3 Letzter Schritt m = mprime = rminus1 mod n

    Das geht nur theoretisch in der Praxis geht das nicht weil Angreifer kann das r nicht steuernr middot m wird aber von der Verschlusselungsmaschine verworfen weil es bei zufalligem r keinkorrektes Padding hat

    Schwache des RSA Multiplikationseigenschaftm1 rarr c1 und m2 rarr c2 (m1 m2 gultige Klartexte)m1 middot m2 rarr c1 middot c2m1 middot m2 nicht als gultiger Klartext zugelassen

    5 Signaturmechanismen

    Wie erstellt man signierte Daten und versucht ein Aquivalent zu dem zu schaffen was man imtaglichen Leben durch Unterschriften schafftEigenschaften einer Signatur sollen nachgebildet werden Man weiszlig von wem ein Dokumentkommt sie ist an eine Person gebunden und kann von niemanden sonst nachgemacht werden undvom Inhaber nicht abgestritten werden Nachtragliche Anderungen an unterschriebenen Doku-menten sollen nicht mehr moglich sein (gibt es so im echten Leben nicht)

    51 Integritatsschutz und Hashfunktionen

    To do neu Hashfunktionen Definition einsortieren

    Hashfunktion Beliebige Daten werden auf Binarfolgen konstanter Lange abgebildet

    Def Eine Hashfunktion H ist eine Abbildung 0 1lowast rarr 0 1k auf Hashwerte der Lange k

    SHA-256 (SHA- Secure Hash Algorithmen) - Hashwerte der Lange 256 Bit

    1 Es gibt Kollisionen

    d1 d2 H(d1) = H(d2)

    2k Hashwerte aber potentiell abzahlbar viele Daten

    Wunsch

    Man soll diese Kollisionen nicht finden konnen und am besten es gibt sie nicht Hashfunktionendienen zum unterscheiden von Daten

    77

    H(d1) H(d2) dann ist d1 d2

    Dementsprechend groszlig muss das k sein so dass genugend viele Werte unterscheiden kann

    Anforderungen an Hashfunktionen

    Wunsch Kollisionsresitent (schwer Kollisionen zu konstruieren) man kann nicht zwei Doku-mente mit dem gleichen Hashwert konstruieren

    Wunsch Zweites Urbild resistent (schwer zweites Urbild zu konstruieren) man kann zu einemDokument nicht ein zweites mit dem gleichen Hashwert bestimmen

    Geburtstagsparadoxon Kollisionen entstehen zum Beispiel in Horerkreisen 23 Horer(innen)dann haben mit mehr als 50 Wahrscheinlichkeit zwei am gleichen Tag Geburtstag

    H Horer rarr Datum h 7rarr Geburtstag(h)

    h1 h2 H(h1) = H(h2)

    Bestimme die Wahrscheinlichkeit dass keine zwei am gleichen Tag Geburtstag haben

    1 minus g =365middot middot(365minusn+1)

    (365n) wobei n die Anzahl der Horer ist (Fur n = 23 ungefahr 50)

    radic365 20

    g radic

    Hashwerte

    Bei 2128 Hashwerte muss man mit Kollisionen rechnen ( Bsp 30 bei 19 Personen 19 radic

    365)

    Merke Das Geburtsatgs Paradox beschert uns Kolisionen bei 2k2 Hashwerten

    To do ende Neu

    Hashfunktionen Schon bekannt aus dem ersten Semester (Hashtabellen)

    Allgemeine Eigenschaften

    1 Komprimieren beliebig lange Werte auf n-bit Werte

    2 Einfach (und schnell) berechenbar

    Werte Fingerabdruck Prufwert Hashwert

    78

    Kollisionen h(x) (Hashfunktion) mit x1 x2 aber h(x1) = h(x2) x1 und x2 ist KollisionWahrscheinlichkeit fur Kollision fur zufallig gewahlte Werte sollte 1

    2n sein (Anforderung anHashfunktion)

    Wir verlangen dass die Variabilitat in der Eingabe sich auch in den Prufwerten widerspiegeltsprich Wenn die Eingabewerte gleichverteilt sind sind es auch die Ausgabewerte

    To do 20090422

    To do einsortieren

    Kollisionen rsquovermeidenrsquo durch Groszlige 160 Bit Prufwerte (280 fur Kollision (2100 mdash AES 128 mdashbzw 2112 2128 als Kollisionsschranken)

    Zusatzlich Voraussetzungen fur die Pruffunktion

    1 Kollisionsresistenz Es muss schwer sein zwei Nachrichten m1m2 zu finden so dassH(m1) = H(m2)

    (Es ist schwer Zwillinge zu konstruieren)

    2 Zwillingsresistenz Es muss schwer sein (also kryptografisch Aufwendig) zu einer Nach-richt m1 eine Nachricht m2 zu konstruieren so dass H(m1)FH(m2) ist

    (Wenn man eine Bruder hat dann ist es schwer eine zwillings Schwester dazu zu konstru-ieren)

    (aufwendiger als erstens)

    3 Urbildresistenz Es muss schwer sein zu einem beliebigen Prufwert h eine Nachricht zukonstruieren so dass H(m) = h ist

    4 Die Prufwerte mussen rsquozufalligrsquo aussehen Die Ausgabe von H genugt Anforderungen aneinen Zufallszahlengenerator (gewisse statistische Unauffalligkeit) also pseudozufallig

    Eigentlich musste man noch mehr Fordern namlich dass man keine zwei Nachrichten findet diesehr ahnliche Hashwerte haben und dass man zu einer gegeben Nachricht keine Nachricht miteinem ahnlichen Hashwert findet

    Beispiel H gute Pruffunktion

    H(m) =

    |m| n fix so Hprime(m) = 0||H(m)(H(m) rangehangen)|m| = n so ist Hprime(m) = 1||m( rangehangen)

    h ist die Lange der Prufwerte von H

    79

    Hprime ist kollisionsresistent wenn es H ist aber nicht urbildresistent

    To do sortieren

    openssl 097d (2004) Prufwertstandardverfahren ist MD5

    Hashfunktion enthalt eine rsquoKompressionsfunktionrsquo m1

    To do Bild-siehe Blatt - 20090422

    K(sm) = sprime

    K(sm) = K(sm2)

    K(s1m1) = K(s2m2)

    s1 und s2 als Ergebnisse einer Prufwertberechnung darstellen

    K(s1m11) = s1 K(s01m21) = s2

    K(s1m12) = s K(s2m22) = s

    der rechte Teil war 2004 schon bekannt es musste nur noch die linke seite gelost werden

    511 Schlussellose Hashfunktion (Prufsummen ohne Schlussel)

    h x minusrarr h(x)Ausschlieszliglich Prufwert Gute Auswahl garantiert dass man mit h(x) feststellen kann ob xverandert wurde

    xprime ist verandertes DokumentDatenBerechnung des Prufwerts liefert h(xprime) = hprime h(x) bei guter Hashfunktion Veranderung kannalso festgestellt werden

    80

    Zusatzlich verlangte Eigenschaften

    1 Kollisionsresistenz Es ist schwer Kollisionen zu erzeugen Dh es ist schwer x1 x2 mith(x1) = h(x2) zu findenHeute ublich n = 80 oder n = 100 280 oder 2100 in sim 280 Schritten Definitiv 256 istnicht schwer 264 ist nicht mehr so schwer

    2 Zwillingsresistenz Zweites-Urbild-Resistenz second preimage resistance Es ist schwereinen Zwilling zu erzeugen ist x1 mit h(x1) vorgegeben so ist es schwer einen Zwillingx2 zu erzeugen mit h(x1) = h(x2)(Anmerkung Finger weg von Binarcode fur x1 x2)

    3 Einwegeigenschaft Urbild-Resistenz Es ist schwer zu vorgegebenem h(x) ein Urbild xzu berechnen

    h1(x) ist eine gute Hashfunktion mit den schicken Eigenschaften 1 2 3 (n + 1 Bitlange)

    h2(x) =

    1 x wenn x die Lange n hat0 h1(x) sonst

    h2(x) ist kollisionsresistent (Zwillingsresistenz) (wenn h1 so ist) h2 ist aber nicht urbild-resistent 1 x hat als Urbild x

    2 ist die wichtigere Eigenschaft man kann notfalls noch ohne 1 auskommen Zum Beispielletztes Jahr MD5 - Hashfunktion x1 x2 waren konstruiert h(x1) = h(x2)x1 oplus x2 = 0 010 010 010 01 (1 jeweils im msb) Immer noch ein gewisser Schutz dazum Beispiel keine Kollision auf -Kleinbuchstaben oder 64 moglich

    Schlussellose Hashfunktionen sollten alle 3 Eigenschaften haben

    Fast-Kollision x1 x2 h(x1) oplus h(x2) hat wenig 1-Bits Manchmal zu vermeiden

    partielle Urbilder Gegeben h(x) dann ist es schwer x bis auf wenige Bits zu bestimmen

    SHA-1 theoretische Schwelle 280 praktisch 269 (16022005) 263 (19082005)

    Geburtstagsparadoxon 23 Personen die Wahrscheinlichkeit dafur dass 2 am gleichen Tagim Jahr Geburtstag haben ist groszliger als 1

    2

    h(x) =dd-mmMit k Personen x1 xk lassen sich k2 Geburtstagspaare bilden Mit n Tagen h1 hn im Jahrlassen sich n2 Geburtstagspaare bilden davon sind n gute ( (h hprime) mit h = hprime)

    81

    mit k2 Paaren in n2 Paaren suchen und einen von n treffenHashfunktion hat 160 Bit Ausgabe wir brauchen nach Geburtstagsparadoxon 280 Personen ummit hoher Wahrscheinlichkeit den gleichen Geburtstag h mit 160 Bit zu erhalten

    Allgemeines Konstruktionsprinzip x wird auf eine bestimmte Blocklange erweitert (pad-ding)

    1 Nullpadding (auffullen mit Nullbits falls erforderlich)

    2 1-Nullpadding (eine 1 und dann mit Nullbits bis zur Blocklange)

    3 1-Null-Langenpadding (eine 1 und Nullbits (falls erforderlich) und die Lange (msb first64 Bit oder 128 Bit)) Am besten geeignet da bei 1 oder 2 automatisch Kollisionen ent-stehen x (mind 1 bit kurzer als die Blocklange) und x 0

    xrarr b1 bk Blocke der Lange 512 Bit

    Haufig Verlauf in 3 Phasen in openssl init update final

    1 Initialisierung der Hashfunktion Innerer Zustand aus 32-Bit-Wortern H1H2H3H4H5initialisiert (mit Primzahlen π was-auch-immer)

    2 Update A BCD E aus H1 H5 Runden mit Transformationen mit Eingabe bi 48|60|120 H1 = H1 oplus A H2 = H2 oplus B

    3 Finalisierung Ggbf Padding 1 oder 2 mal das Update

    4 Ausgabe H1H2 H5

    Einfaches Beispiel

    82

    So lasst sich aus einem Kryptoalgorithmus ein Hashalgorithmus konstruieren In der Praxis wer-den andere Konstruktionen (Quirlfunktionen) verwendet MD5 SHA-1 SHA-2 (224 256 384512) Whirlpool ISO-

    In OpenSSL MD2 MDC2 MD4 MD5 RIPEMD-128 RIPEMD-160 SHA-0 SHA-1 Allegebrochen ausser RIPEMD-160 und SHA-1 (evt MD2) dh es sind m1 und m2 bekannt mitMD5(m1) =MD5(m2) und m1 m2

    512 Demonstration Falschung

    Ist die Hashfunktion rsquoschwachrsquo kann man Kollisionen sogar konstruieren

    Beispiel fur MD5 MD4 ist seit 10 Jahren schwach SHA-1 wird schwach

    Zwei Postscript-Dateien mit unterschiedlichem Inhalt aber gleichem MD5-Hash Prinzip Datei1

    Header

    if x1 == x2 then strangestring = T1 else strangestring = T2 end

    Rest

    echo strangestring

    Quelltext (B)(B)eq︸ ︷︷ ︸Bedingung

    [tot] [Def] ifelse

    83

    Datei 2

    Header

    if x2 == x2 then strangestring = T1 else strangestring = T2 end

    Rest

    echo strangestring

    (A)(B)eq︸ ︷︷ ︸Bedingung

    [Def] [tot]

    x1 und x2 unterscheiden sich nur sehr wenig und Header if x1 und

    Header if x2 sind je ein Nachrichtenblock mit dem gleichen Hashwert

    Sieht aus wie zweites Urbild-Angriff sind aber in der Tat zwei bose Zwillinge

    Quelle wwwcitsrubdeMD5Collisions

    Fazit Dokumente sind nicht mehr unterscheidbar

    Kollision besteht aus zwei Dokumenten d1 d2 mit dem Hashwert

    Bei MD5 kann man zwei rsquoDokumentersquo (Prafixe bis AB) konstruieren die den gleichen Has-hwert haben

    Man kann aber zu einem Dokument d0 (dem Original) noch nicht ein zweites dprime0 konstruierenso dass d0 dprime0 eine Kollision bilden

    Beispiel Ein SSL-Server-Zertifikat war (MD5) ununterscheidbar von einen SSL-ZertifizierungsstellenZertifikat womit man so viele (evt rsquobosersquo) SSL-Server-Zertifikate erstellen wie man wollte

    MD5 ist nicht kollisionsresistent

    MD5 ist noch 2 Urbild resistent

    52 Unterschied MD5 und SHA

    MD5 128bit Lange (Kollision 264)

    SHA-224 224bit Lange (Kollision 2112)

    SHA-256 256bit Lange (Kollision 2128)

    84

    mehr rotation lokale Unterschiede habe groszligere globale Unterschiede zur Folge bei SHA

    53 Secure Hash Standard SHA-2

    FIPS 180-2 US-Standard Nachfolger von FIPS 180 SHA-0 und SHA-1 sind die SHA-2-Algorithmen(noch nicht in OpenSSL) SHA-224 SHA-256︸ ︷︷ ︸

    32 Bit

    SHA-384 SHA-512︸ ︷︷ ︸64 Bit

    SHA-224 bzw SHA-384

    ist rsquoungefahrlsquo die linke Seite von SHA-256 bzw SHA-512

    Basisfunktionench (xampy)|(sim xampz) Auswahlfunktionpar x and y and z Paritatsfunktionmaj (xampy)|(xampz)|(yampz) Mehrheit

    Ausserdem Addition modulo Wortlange rot left und shift leftMessage M1M2 MN padding

    1 paddinglength auf 5121024 Bit

    51232 = 16 = 1024

    64

    2 Messageblock (16 Stuck) wird erweitertW0W1W2 W15︸ ︷︷ ︸

    Messageblock

    W79

    Wt = rot(Wtminus3) + rot(Wtminus8) + rot(Wtminus14) + rot(Wtminus16) fur t = 16 79rot(x) = rotl7(x) + rotl18(x) + shl3(x)

    3 8 temporare Variable a b c d e f g h mit Breite gleich Wortlange (32 oder 64 Bit) be-schreiben einen inneren Zustand der Funktion

    SHA-Maschine bekommt initialen Zustand H0 H7 Die ersten 32 Bit der gebrochenenAnteile der Quadratwurzeln der i Primzahl Fur SHA-256 und SHA-512 i = 1 8 furSHA-384 und SHA-224 i = 9 16

    85

    Am Anfang jeder Runde a = H0 b = H1 c = H2

    Jedes Wi erzeugt einen Schritt (kleine Zustandsanderung)

    T1 = h + rot(e) + ch(e f g) + Kt + Wt

    T2 = rot(a) + maj(a b c)

    h = g g = f f = e e = d + T1 d = c c = b b = a a = T1 + T2K0 K80 Schrittkonstanten Bruchteile der dritten Wurzeln der ersten 80 Primzahlen80 Schritte in einer Runde

    4 XOR-Operationen H0H1 H7 minusrarr H0 oplus aH1 oplus b H7 oplus hHi beschreiben den inneren Zustand nach Runde Hi am Anfang initialisiert

    5 Ausgabe ist H0 H7 am Ende

    To do ware auch interessant fur die Prufung

    Es wird eine neuer SHA-3 gesucht Voraussetzungen

    1 Nachrichtenexpansion muss komplexer werden

    2 Nachrichtenblocke mussen positionsabhangig werden (Skein tweakable

    3 innerer Zustand muss groszliger werden (2x Hashlange)

    531 Problem bei MD5 und SHA-0

    Beispiel 1 Innerer Zustand zwischen einzelnen Schritten hat Bits die die folgenden Bitsmehr oder weniger beeinflussen Damit sinkt die Komplexitat beim Brechen Besondere Bitsfuhren zur Reduktion der Anzahl der Gleichungen und erlauben eine schnelle Konstruktion vonspeziellen Zwillingen m1m2 mit MD5(m1) =MD5(m2) m1 oplus m2 = viele Nullen

    Parallel hashen rdquoKontostand -20073ldquo und rdquoKontostand +700ldquo Ab -2 bzw +7 entstehen un-terschiedliche innere Zustande Nachkommastellen bei dem zweiten String anpassen um dieUnterschiede auszugleichen

    86

    Aktuelle Angriffe erzeugen keinen zweiten Zwilling sondern rsquonurrsquo falsche Zwillinge Zu einemguten gibt es keinen schlechten Zwilling

    Beispiel 2 Es gibt zwei Zertifikate mit unterschiedlichen Inhalten und gleichem MD5-HashDas sind dann aber 2 schlechte Zertifikate MD5 ist also nicht kollisionsresistent aber momentanzwillingsresistent

    SHA-1 hat momentan eine Komplexitat von 263 anstelle von 280 fur Kollisionen

    mH(m) (H(m) aus vertrauenswurdiger Quelle) rArr m kann nicht unbemerkt verandert werdenManipulation Detection Codes () Das ist keine Prufung des Ursprungs Um zu prufen ob maus einer bestimmten Quelle stammt benutzt man MACs

    532 MACs (Message Authentication Codes) (Prufsummen mit Schlusseln)

    Sei k ein geheimer Schlussel den nur Alice und Bob kennen m ist die Nachricht BerechneHk(m) = h keyed Hash Die Hash-Prufwerte sind also Schlusselabhangig

    (m h) mit h aus vertrauenswurdiger Quelle

    bull Veranderungen sind erkennbar

    bull Nur mit Kenntnis von k kann man h berechnen also nur mit dem Schlussel kann man denPrufwert falschen

    Empfanger der k kennt kann n auf Integritat prufen Um sich vor Angreifern zu schutzen mussfur eine Prufung der Prufwert geschutzt werden

    Hk(mprime) = h

    (m1 h1)(m2 h2)

    rarr (m h) muss verhindert sein

    87

    Standardisiertes Verfahren fur Keyed hash auf der Basis von MDCs RFC 2104 in OpenSSL zufinden HMAC)

    H(k oplus auszligeres Padding H(k oplus inneres Padding m))︸ ︷︷ ︸512- oder 1024-Bit-Blocke

    k linksbundig aufgefullt mit Nullen inneres Padding = 0x36 0x36 auszligeres Padding = 0x5c0x5c Langenpadding am Ende des inneren H

    Berechnen Sie mit OpenSSL und dgst -c oder -hex den Hashwert der leeren Datei

    henrykgleam henryk $ openssl dgst -c -hex -md5 devnull

    MD5(devnull)= d41d8cd98f00b204e9800998ecf8427e

    henrykgleam henryk $ openssl dgst -c -hex -sha1 devnull

    SHA1(devnull)=

    da39a3ee5e6b4b0d3255bfef95601890afd80709

    openssl dgst -sha256 -hmac 1234567890 devnull

    HMAC-SHA256(devnull)= ba92e0bfa35d8a018831f3675f0b4314c8468d4d96e6981b85ba3390c23308fd

    HMAC

    To do vervollstandigen

    Mac mit Hashfunktion K- Schlussel H-Hashfunktion

    H(K oplus oPadH(

    0x565656︷ ︸︸ ︷K oplus iPad︸ ︷︷ ︸Bitlange H

    n))

    K n1 rarr Mac(n1K) = m1

    K nprime = n1||langenpadding ||n2

    (K nprime) rarr HInitialisiert mit m1(n2) = m2

    ISO-10118-32004

    88

    54 Whirlpool

    Basis fur eine Hashfunktion ausgehend von einer einzigen Verschlusselungsfunktion

    Aus der Wikipedia (unter GNU Free Documentation License)

    WHIRLPOOL ist eine kryptografische Hash-Funktion die von Vincent Rijmen und Paulo SL M Barreto entworfen wurde Sie wurde nach der Whirlpool-Galaxie im Sternbild der Jagd-hunde benannt

    Whirlpool funktioniert mit Daten von weniger als 2256 Bit Lange und gibt einen Hash-Wert von 512 Bit aus

    Die Autoren haben erklart dass Whirlpool nicht patentiert ist und es nie sein wird Whirl-pool darf kostenlos zu jedem Zweck verwendet werden Die Referenz-Implementation ist ge-meinfrei

    The WHIRLPOOL algorithm has undergone two revisions since its original 2000 specifi-cation In the first revision in 2001 the s-box was changed from a randomly generated one withgood cryptographic properties to one which has better cryptographic properties and is easier toimplement in hardware In the second revision (2003) the diffusion matrix was changed

    People incorporating WHIRLPOOL will most likely use the most recent revision ofWHIRLPOOL while there are no known security weaknesses in earlier versions of WHIRL-POOL the most recent revision has better hardware implementation efficiency characteristicsand is also likely to be more secure

    E

    +

    H

    H

    m

    AES-Variante

    i-1

    i-1

    i

    55 Zusammenfassung

    To do oben einsortieren

    89

    Manipulation Detection Codes MDCsHashfunktionen MD5SHA-1SHA-2Allgemeines Konstruktionsprinzip aus Langenpadding und Iterationen

    bull MACsKeyed Hash HMAC mit Hashfunktion aufgebaut aus prefix und suffix

    bull CBC-MAC Nachrichtenblocke m0m1 mk

    + +

    MACc c c

    K

    m

    m m

    0

    1

    1

    2

    k

    k+1

    Risiko Weil keine Langeninformationen dabei sind ist es anfallig gegen Einsetzen undAustauschen Wird gerne Verwendet bei Anwendungen die feste Langen haben zBChipkartenCBC-MAC-verbessert

    K

    DES

    1

    K2

    K3

    larrminus CBC-DES3-MAC

    Benutzt zB beim digitalen Tachograph

    Es gibt zwei Grundlegende technische Mechanismen Ohne Schlussel und mit Schlussel Nur mitSchlussel lasst sich spater der richtige MAC-Wert ausrechnen und bestimmen dass die Nachrichtnicht verandert wurde und vom richtigen Absender kommt

    90

    56 Digitale Signaturen

    To do einsortieren

    Definition

    s ist die Signatur zu einer Nachricht n mit einem Signaturverfahren S und einem Verifikations-verfahren V

    S N times D︸︷︷︸Signaturschlussel

    rarr s

    V N times E︸︷︷︸Verifikationsschlussel

    timess rarr ja nein

    V(n e S (n d)) = 1

    V(n e S (nprime d)) = 0 =( n eprime S (n d)) = 0

    RSA

    S (n d) =

    V(n s e) = E(e s)eqH(n)

    openssl dgst -sign keyrsa -hex nulltxt

    openssl -sign keyrsa -sha256 -out nullsig nulltxt

    openssl rsautl -in nullsig -encrypt -inkey keyrsa -raw -hexdump

    in Beta openssl sha256 -hex nulltxt

    Anstatt der Symmetrischen Verschlusselung wie bei MAC kann man auch asymetrische Verfah-ren verwenden

    1 h mit Namen (0D) in ASN1 Struktur 0001 FF FF 00 (ASN1-Struktur)

    2 Padding

    3 rsquoEntschlusselnrsquo

    4 rsquoVerschlusselnrsquo

    5 ASN1 Struktur Hash OID Wert rausziehen

    91

    6 vergleichen 0 1

    openssl hatte in den fruheren Versionen einen Fehler in der Signaturprufung

    langer RSA Schlussel

    exponent e klein (3)

    lange Signatur S

    S 3 = h

    wenn h sehr lang ist konnte man folgendes machen

    h= (0001FF00ASN1 rsquomullrsquo)

    man konnte den rsquoMullrsquo so verandern das h = s3 (also so lange verander bis h dritte Wurzel vons ist)

    Es wurde nicht uberpruft ob am Ende der ASN1-Struktur auch das Ende der Daten ist

    siehe Webseite RSA Zertifikate mit Exponenten 3

    To do alt

    Digitale Signaturen schutzen die Integritat und die Authentizitat Wir betrachten hier welche dieauf asymmetrischen Verfahren basieren Symmetrische gibt es werden aber in der Praxis nichtbenutzt Es gibt 2 Typen

    1 RSA

    2 DSA

    561 RSA

    m = p middot q (2048 Bit)Exponent e klein (64 Bit)Exponent d groszlig mit e middot d equiv 1 mod (p minus 1)(q minus 1)

    xrarr c = xe mod m (offentlich)cd equiv x mod m (geheim)xed equiv x

    92

    Man rechnet zuerst xrarr s = xd mod m Das kann nur derjenige der uber den privaten Schlusseld verfugt Aus s rechnet man se mod m = (xd)e mod m equiv xemiddote mod m = x Bei RSA konnenwir die Rolle vom privaten und offentlichen Algorithmus vertauschen so dass folgt Nur wer dkennt kann zu x ein s erstellen so dass se equiv x mod m ist

    Anwendung dafur Digitale Signatur Wir haben Nachricht M und erstellen daraus einen PrufwertH(M) mit einer Hashfunktion und rechnen

    H(M) = x minusrarr s = xd mod m

    Dann ist (M s) das digital signierte Dokument M (und s die Signatur)

    To do einsortieren neu

    Signatur mit Anhang (with appendix) (m sig)-Signierte Nachricht

    Ver(vm sig)

    Signatur mit Nachrichtruckgewinnung (with (partial) message recovery) (m1mprime2) = mprime so dassmprime2 ein Teil der Nachricht m = m1||m2 enthalt

    Ver(vm1mprime2) (partial recovery)

    Ver(vminusmprime) (complete recovery)

    In RSA

    PKCS1 ver 15 Signatur mit Appendix

    PKCS1 ver 21 (noch nicht in OpenSSL)

    To do ende einsortieren

    Prufung (M s) rarr H(M) = x Ist se mod m = x Nur wer das d hat kann das Paar (M s)

    erstellen und ist damit Inhaber des Dokuments

    562 Eigenschaften eines asymmetrischen Verschlusselungsverfahren

    Alice kennt den offentlichen Schlussel von Bob Bob kennt seinen geheimen Schlussel

    93

    Alice123 Bob Alice Bob123offB gehB gehA offA

    EoffB(m) = c rarr DgehB(c) = m rarr

    MS gehA

    (m s)

    rarr

    Voffa(m s) =

    0 ungultig1 gultig

    Mehrere Alices konnen an Bob schreiben Entschlusselung mit dem geheimen Schlussel vonBob Hier wird eine Nachricht so verschlusselt dass man die Nachricht aus c zuruckgewinnenkann

    Alice sendet an alle Bobs Hier wird ein Paar erzeugt dass in einen Verifikationsalgorithmusgestopft werden kann der dann ja oder nein sagt

    Es ist Zufall dass man mit RSA sowohl einen Verschlusselungsalgorithmus als auch einenSignaturalgorithmus erstellen kann Mit anderen geht das nicht

    Hatte man nicht die Urbildresistenz der Hashfunktion konnte man ein s nehmen und dazu aus-rechnen se mod m = x jetzt konnte man zu dem x ein Urbild M ausrechnen und bekame einPaar (M s) dass gultig signiert ist Dazu kommen in Wahrheit noch Padding und Objekt Identi-fier der angibt womit signiert wurde und Parameter

    30 = SEQUENCE06 = OID2B 0E 03 02 1A = SHA12A 86 48 86 F7 0D 01 01 01 = rsaEncryption05 = NULL Bezeichner fur die leere Menge hier bedeutet es keine Parameter04 = OCTET STRING02 = INTEGER03 = BIT STRINGSchema Tag Length Value

    Das ganze lasst sich mit openssl asn1parse erfahren (asn1 = Abstract Syntax Notation 1)Schlussel immer SEQUENCE SEQUENCE OBJECT PARAMETER BIT STRING bzw Se-quence aus OID und Bitstring Das erste Byte in einem Bitstring gehort nicht zum Bitstring dazusondern gibt die Nummer der von hinten ungenutzten Bits an

    OID-Liste httpwwwalvestrandno

    Mhminusrarr

    SHA-1

    H minusrarr

    Padding

    00 01 FF FF 00 b c b H c

    Identifier Oktetstring

    Padding nach PKCS1 v15

    ASN1 Objektidentifier fur SHA-1 (131432) wird als 2B 0E 03 02 1A codiert

    94

    xyabcd (Dot-Notation)darr

    bx middot 40 + yc babcdc1 Byte Byte (Oktett)

    12840113549127 als Ubungsaufgabe

    563 RSASSA-PSS-Padding

    SSA Signature Scheme with Appendix

    PSS Probabilistic Signature Scheme

    RFC 3447 (siehe figure 2)

    8 zero salt

    h

    0000 01 salt

    +MGF h

    maskiertes seed BC00 1024

    Bits

    zu 0

    setzen

    soviele dass die Eingabe

    kleiner als der Modul wird

    Eingabe fuumlr die Signatur

    M l(M) lt= 2^(64)-1 bei SHA-1

    20 Byte 20 Byte

    To do start einfugen

    MGF-Maskengenerierungsfunktion (beruht auf der Hash-funktion)

    95

    MGF rArr DBmask dann DB oplus DBmaskNullungminusminusminusminusminusminusrarr maskedDB

    Nullung-Nullung der oberen Bits so dass maskedDB kleiner als Modul ist

    Signieren (EMSA-PSS)+(RSA-Verschlusselung)

    Verifikation (RSA Op)

    1 RSA-Operation

    2 EM

    Prufung ob BC am Ende

    H abspalten und mit MGF DBmask erzeugen

    XOR mit Rest von EM

    DBprime = 0000︸︷︷︸Nullungsfehler

    0001 Salt

    00 Label mhash SaltHashminusminusminusminusrarr Hprime

    = H

    Jede Eingabe in die RSA-Operation ist pseudo zufallig (Jede Eingabe hat einen neuen Signa-turwert)

    Angenommen man wendet die RSA-Operation direkt auf m an

    mprime-Signatur mprime = md mod n

    m1m2

    m1 rarr mprime1 mod n = mprime1

    m2 rarr mprime2 mod n = mprime2

    Verifikation

    (m1m2) mod n rarr (m1 middot m2)d = md1md

    2 = mprime1 middot mprime2 mod n

    (rsquoMan kann mit zwei Signaturen eine andere erzeugenrsquo)

    96

    To do ansehen

    Unsicher zeitaufwendig kann leicht gebrochen werden

    m rarr mprime = md mod n

    re = rprime mod n

    chosen message m middot rprime rarr (m middot rprime)d mod n = md middot red mod n = mprime middot r mod n

    (mprime middot r) middot rminus1 mod m = mprime

    (sieht nach Zufallszahlen aus aber die kann man auf eine vorher gewahlte Nachricht zuruck-rechnen)

    To do ende einfugen

    Nachricht M mit |M| lt 264 minus 1 wird mit Hashfunktion h gehasht Davor kommen 8 Zerobytedanach ein Saltwert (Saltwert wird benotigt fur die Auswertung der Signatur und wird verstecktin der Signatur) Auf das Gesamte wird die Hashfunktion h erneut angewendet

    Verstecken des Saltwerts --0000 (rarr eventuell leer) 01 salt-- oplus mit einer Maske gebildetaus dem Hashwert und einer Maskengenerierungsfunktion

    An den Anfang der Eingabe fur die RSA-Signatur werden 0-Bits so gesetzt dass die Eingabefur die RSA-Signatur kleiner als der Modul ist Wenn m volle Bytelange hat wird das obersteBit gleich 0 gesetzt (RSA-Signatur ()d mod m mit m = p middot q) An das Ende der Eingabe fur dieRSA-Signatur wird BC angehangt

    Durch den Saltwert wird das Ergebnis zufallig und schwer vorhersagbar Wird leider nicht oftverwendet da die Maskengenerierungsfunktion Chipkarten teuer machen wurde

    Es existiert eine DIN Variante zum v15 PKCS1 DIN-RN-Padding00 02 Zufallsbytes(ohne 00) 00 Identifikator Oktettstring

    564 DSA

    Vergleich ElGamal und elliptische Kurven

    K-elliptische Kurve y2 = x3 + ax + b mod p

    97

    p-Primzahl ( 2 3)

    Punkte auf der Kurve bilden eine Gruppe E(k)

    P + Q = R k middotG isin E(k)

    G ein Punkt (Generator) mit groszliger Ordnung n

    1 middotG 2G 3G n︸︷︷︸sehr groszlig

    middotG = 0

    n ist eine Primzahl und G 2G nG = 0 ist die gesamte Gruppe E(k)

    Signaturschlussel t-zufallig aus 1 n minus 1 Verifikationsschlussel ist P = t middotG

    Standard FIPS 186-3 rarr finde den Fehler

    To do ende einfugen

    p g Generator gpminus1 equiv 1 mod p gpminus1

    x 1 mod p

    Geheimer Schlussel xoffentlicher Schlussel y = gx mod pk(gkm middot yk) = c

    Parallel bei elliptischen Kurven G geheim x offentlich Y = x middotG

    (k middotGm middot k middot Y)

    DSA auch bekannt als DSS FIPS-186

    Primzahl p (hat zB 1024 Bit im Standard variabel) so gewahlt dass pminus 1 einen Primteiler derLange 160 Bit enthalt q|p minus 1 mit |q| = 160 BitAusserdem Es gibt einen Generator g mit der Eigenschaft gq equiv 1 mod p Das findet man

    indem man einen h Generator in mod p auswahlt und g = hpminus1

    q hpminus1 equiv 1 mod p ausrechnet

    x geheimer Signaturschlussel mit 160 Bit gx mod p ist der offentliche Schlussel

    Signaturerstellung Nachricht M Hashwert h(M) = H ausrechnen Generiere Zufallszahl k mit160 Bit (k isin 1 n minus 1) und berechne

    To do neu

    k middotG = (x y) r = x mod n

    98

    s = hminus1 middot (h + tr) mod n

    (r s) ist die Signatur

    To do ende neu

    r = (gk mod p) mod q und s = (kminus1(H + x middot r) mod p) mod q r und s sind Exponenten furmod p werden aber nochmal mod q genommen um Platz zu sparen (r s) wird die Signaturwerden (s 0 mod q r 0 mod q)

    Signaturverifikation Berechne w = sminus1 mod qu1 = H middot w mod q u1 = H middot w + i middot qu2 = r middot w mod q

    Berechne

    gu1 middot yu2 equiv gHmiddotsminus1middot gxmiddotrmiddotsminus1

    equiv gHmiddotk(H+xmiddotr)minus1middot gxmiddotrk(H+xmiddotr)minus1

    equiv gHmiddotkmiddot(H+xmiddotr)minus1+xmiddotrmiddotk(H+xmiddotr)minus1

    equiv gkmiddot(H+xmiddotr)middot(H+xmiddotr)minus1

    equiv gk mod p

    Prufe also ob (gu1 middot yu2 mod p) mod qequiv r

    Die Signatur zu M ist (r s) mit r und s haben 160 Bit so dass man 320 Bit Signatur hat (kleinerals die 1024 Bit Signatur von RSA)

    Um den geheimen Schlussel zu bestimmen muss man den diskreten Logarithmus mod q be-rechnen und das gilt als schwer

    565 ECDSA - DSA mit Elliptischen Kurven

    K - elliptische Kurve mit Punkten mod pG - Generatorpunkt G hat Ordnung q [q middotG = 0] q Primzahlx - Restklasse mod q Y = x middotG

    r = [(k middot G)1] mod q (rarr 1 Koordinate mod q) s = kminus1(h + x middot r) mod q [u1 middot G + u2 middot Y]1

    mod qequiv r

    700 Bit fur alle Parameter

    99

    To do neu

    ECDS DSAGenerator

    G g gq = 1 mod pdA = [1 q minus 1]

    zufalligPA = dA middotG auf E pA = gdA mod p

    Signatur k isin [1 q minus 1] r = (gk mod p) mod qr = x mod q

    s = kminus1 middot (h + dA middot r) mod q

    h ist genauso lang wie q (gleiche Bitlange)

    h sind die linken Bits von H(n)

    (Bem RSA ist bei Elipt Kurven nicht einsetzbar deshalb ist DSA eine gute alternative)

    link draft-lochter-pkx-brainpool-ecc-03 - eine art RFC zu Brainpool

    openssl ecparam -name brainpoolP256r1 -param_enc explicit -noout

    E =(x y) y2 = x3 + Ax + B mod p

    Dann ist G = 04x (in einer Prufung ware interessant zu wissen was das fuhrende Bytebedeutet und welche Varianten es gibt)

    openssl ecparam -name brainpoolP256r1 -genkey

    -param_enc explicit -noout gt eckey

    (pub - offentlicher Punkt)

    openssl dgst -sha256 -sign eckey eckey gt ecsig

    xxd -p ecsig

    openssl asn1parse -i -in ecsig -inform DER

    Man erhalt die beiden Integers r und s

    (Bem bei Eliptischen Kurven ist die Bitlange kurzer da Algorithmen hohere komplexitat als so

    100

    haben)

    (Hausaufgabe erzeuge zwei Kurven (512Bit - Brainpool bzw 521 NIST) mit anderen Hash-funktionen (mdripemd whirlpool) Signatur (rs) )

    (Bem siehe Wikipedia El C DSA r=0 Abfrage weil sonst dA keine Rolle spielt s= 0 Abfrageweil man sonst mit minusz = r middot dA mod q den geheimen dA ausrechnen kann)

    [Spickzettel zur HA

    h-linke Bits des Hashwertes

    n1 = h middot sminus1 mod q

    n2 = r middot sminus1 mod q

    V = n1 middotG + n2PA = (x y) r = x mod q

    v = gn1 middot pn21 mod p r = v mod q

    (r rarr 0 1 jeweils)

    h middot sminus1 middotG + rsminus1PA = h(k(k + dAr)minus1 middotG + r(k(h + dAr)minus1)dAG = (hk + rkdA)(h + dAr)minus1G = V

    = k (h + rdA) middot (h + dAr)minus1︸ ︷︷ ︸=1

    G

    = k middotG

    ]

    Magma

    p=StringToInteger(rsquorsquo16)

    a=StringToInteger(rsquorsquo16)

    b=StringToInteger(rsquorsquo16)

    IntegerRing(p)

    E=EllipticCurve([KaKb])

    G=E[KStringToInteger(rsquo1Halfte Generatorrsquo16)

    101

    KStringToInteger(rsquo2Halfte Generatorrsquo16)]

    Jetzt kann man rechnen

    qG eq E0

    true

    mdashmdashndash

    qG

    (010)

    mdashmdashmdash

    Kq=IntegerRing(q)

    dA=1+Random(q-2)

    PA=dAG Prufung ob ungleich Null fehlt noch

    h=K12121212121212121212121212121

    k=1+Random(q-2)+1damit keine Null rauskommt

    X=kG

    x=X[1]

    r=(IntegerRing()x) mod q

    s= (Kqk)ˆ(-1) ((Kqh)+ r dA)

    rs

    Verifikation

    u1=h(Kqs)ˆ(-1)

    u2=r(Kqs)ˆ(-1)

    102

    Y=(IntegerRing() u1)G+( IntegerRing() u2) PA

    Y

    ((IntegerRing() Y[1]) mod q) eq r

    =rArr siehe Verzeichnis

    Prufen ob Openssl gut gerechnet hat

    OpenSSL

    wie erzeugt man den offentlichen Schlussel openssl ec -in eckey -pubout

    openssl ec -in ecpub -pubin -text -noout

    -pverify

    To do neu-ende

    To do neu-20090617

    Bem Attributes muss die leere Menge sein und darf nicht weggelassen werden

    SHA1 nur noch zur Unterscheidung benutzen

    57 Widerrufen von Zertifikaten

    siehe rfc5280 S53

    Erste Sperrliste

    Ist eine Liste in der die Nummern der gesperrten Zertifikate stehen

    Beispiel CA erstellen

    perl ˜optopenssl-100-beta2appsCApl -newca

    103

    Zertifikat fur den Nutzer erstellen

    perl ˜optopenssl-100-beta2appsCApl -newreq

    Signieren

    perl ˜optopenssl-100-beta2appsCApl -xsign gt aypem

    Man kann noch weitere Zertifikate erstellen allerdings wird dann der pem Key geloscht Mankann dann feststellen dass die Seriennummer nur um eins erhoht wird Man kann auch openssl ca -gencrl -out -cl1pem -crlhours 12benutzen und dabei die Seriennummer selber angeben

    openssl crl -text -in crl1pem -noout

    Zertifiziert wird nur der Teil zwischen Certificate Rev List bis No Revok Cert Da dieser Teilsehr klein ist ist es recht schwer Kollisionen mit SHA1 dafur zu konstruieren

    Dann gibt es noch Informationen wann es die nachsten Updates gibt (Last Update Next Update(optional)) Alte Sperrlisten bleiben aber Gultig die neuen gelten nur zusatzlich

    Zertifikat ungultig machen

    openssl ca -gencrl -out cr13pem -revoke demoCAcertsF8C85pem -crl_reason keyCompromise -crlhours 12

    aktualisieren

    openssl ca -gencrl -out cl4pem -crlhours 12

    Nun nachsehen mit

    openssl crl -text -in crl4pem -noout

    To do neu-ende

    104

    58 Was es noch so gibt

    581 blinde Signaturen

    Gut fur anonymes digitales Geld Normalfall Bank kriegt digitalen Scheck belastet das Kontound schickt einen von ihr signierten Scheck zuruck Problem Wenn derjenige der den Scheckspater einlosen will zur Bank geht kann diese den Scheck zum Aussteller zuruckverfolgen

    Mit anonymen Signaturen Aussteller erzeugt viele (zum Beispiel 1000) unterschiedliche Schecksmit je einer Zufallszahl und dem gleichen Betrag aber ohne Name Kontonummer etc Diese1000 sendet er verschlusselt an die Bank Die Bank sucht sich zufallig (das ist wichtig) 999davon aus und fordert fur diese den Schlussel an Die Bank entschlusselt diese Schecks unduberpruft ob uberall der gleiche Betrag drinsteht Wenn ja dann ist davon auszugehen dass auchder auf den gleichen Betrag lauft Das Konto wird entsprechend belastet und der Scheck wirdblind (also ohne hineinzusehen) signiert und dem Aussteller zuruckgeschickt Der packt denScheck aus (wobei die Signatur gultig bleibt) und hat jetzt einen von der Bank signierten digita-len Geldschein den die Bank nicht mehr zuruckverfolgen kann

    582 anonyme Signaturen

    Beispiel Elektronische Wahlen wo man nicht mochte dass man weiszlig wer es unterschriebenhat

    6 Zertifikate

    To do neu-20090520

    m rarr Signatur und Verifikation

    mprime rarr Signatur und Verifikation

    Vertrauen in den offentlichen Schlussel

    Schutzen den Schlussel durch Prufwert den Prufwert Schutzen wir durch eine Signatur Vertrau-en eines Schlussel ubertragt sich an einen anderen Das ganze scheint sich im Kreis zu drehen

    Aber es handelt sich um einen Graph (Der Graph muss nicht transitiv sein - A vertraut BB vertraut C aber A vertraut nicht unbedingt C) Zb Baum mit Wurzel (PKI) dann gibt es

    105

    vertrauens-Normen die den Ebenen eines Baumes entsprechen Die andere Variante ist das PGPWeb of Trust bei dem der Baum ungeordneter ist und eine Art Vertrauensbereiche hat

    Dass eine Zertifizierungsstruktur funktioniert braucht es klare Regeln fur den Umgang mit Zer-tifikate

    Standards

    ANSI X509

    X500

    openssl internet Profil

    RFC 5280 (alt 3280 2459)

    Definition Zertifikat bindet (durch Signatur) einen offentlichen Schlussel an einen Namen(Subjekt)

    (siehe rfc5280 S16 - Certificate= SEQUENCE und TBSCertificate) (in TBSCert er-scheint rsquosignaturersquo recht fruh damit schon mit dem Hash-Algorithmus begonnen werden kannaber warum steht in Certificate dann nochmal signature -Bessere Ordnung)

    Zertifikat bei CA-cert runterladen und dann mit openssl ansehen

    openssl x509 -in class3crt -text -noout

    openssl asn1parse -i -in class3crt

    Zur ausgabe des ersten (siehe auch rfc5280)

    Version es gibt momentan 3 Versionen

    Serial Number ist ein Integer kann so groszlig sein das man nicht mehr in den Hash-Block mehrkommt (bis 20 Byte geht)

    Bundesnetzagenturde 15549pdf sagen dass Serien Nummern mindesten 20 Bit Entropie ent-halten sollen damit SHA-1 bis 2010 benutzt werden kann (rsquoQualifizierte Signaturrsquo)

    To do siehe 606 Gultigkeit

    validity Wird oft als Gultigkeitszeitraum ubersetzt was aber nicht ganz richtig ist da nur ange-geben wird wann das Zertifikat nicht gultig ist Besser ware rsquonicht Gewahrleistungszeitraumrsquo

    106

    Die validity gibt (nach dem Standard) den Zeitraum an in der die CA gewahrleistet aussagenuber den Zustand des Zertifikats zu geben (Gultig ODER nicht Gultig - deshalb muss das Zer-tifikat also nicht unbedingt gultig sein)

    To do neu-ende

    To do neu-20090527

    Bemerkung In der Objectstxt findet die Object-Identifier die OpenSSL kennt

    To do neu-20090527-ende

    Signatur Anwendung eines Schlussels Ob der Signaturersteller eine bestimmte Person ist istdamit nicht klar Immer gleichzeitig Authentizitat des Schlussels prufen

    Dazu gibt es zwei Moglichkeiten

    1 Anarchie = Web of Trust (Beispiel PGP)

    2 Vertrauenswurdige dritte Instanz Certification Authority CA bzw ZDA (Zertifizierungs-diensteanbieter) Stellt ein Zertifikat aus das ist ein elektronisches Dokument welcheseine Identitat einem Schlussel zuordnet

    Zertifikat (Name Schlussel ) und Signatur

    Problem Im Zertifikat steht Name Schlussel usw und daran hangt eine Signatur Gegeben Nut-zer Alice mit Zertifikat daruber gibt es die CA1 die ihre Signatur zertifiziert CA1 hat selber einZertifikat mit einem Namen Schlussel usw und daran hangt wieder eine Signatur Das Problemverschiebt sich immer weiter nach oben Man bekommt eine Zertifikatshierarchie und benotigteinen aufgeblahten Riesenbaum mit einer Weltwurzel Im taglichen Leben haben sich 3-stufigeZertifikatshierarchien bewart Root signiert seine eigene Signatur Vertrauen in Authentizitat derNutzerschlussel ist fur alle Nutzer gleich Es bestimmt sich ausschlieszliglich durch die Authenti-zitat des Schlussels des Root CA Das Vertrauen in die Root CA verteilt sich auf die Nutzer

    603 X509

    X509 mittlerweile bei ISO RFC 3280 X509 Certificate and Certificate Revocation List (CRL)Profile Abschnitt 4

    Version X509v3 Version 1 enhalt keine ErweiterungenSerial Number In der Regel 20 Byte muss immer eindeutig sein

    107

    Signaturverfahren fur das Zertifikat muss am Anfang (im ersten Block) stehen damit das Has-hen schon begonnen werden kannHerausgeber Name(eindeutig) C=Country O=Organisation CN=Common Name SN=Surname

    Validity Gultigkeitszeitraum der Zeitraum indem die CA Gultigkeitsinformationen uber dasZertifikat bereitstellen willwirdmussInhaber Name (eindeutig im Bereich der CA) zur Person also stabile Daten SeriennummerVersicherungsnummer etcSchlusselinformationenErweiterungenDarunter die Signatur

    In RFC 3280 steht dass nach dem 31 Dezember 2003 alle Zertifikate UTF-8 kodiert seinmussen

    604 Erweiterungen

    Man kann bei Erweiterungen festlegen ob diese Critical oder nicht sind Critical ist sowas wieeine Vorschrift nicht Critical ist sowas wie eine Information Kritische Erweiterungen mussenimmer ausgewertet werden wenn ein Programm sie nicht versteht darf es das Zertifikat nichtverarbeiten

    To do neu

    Per default auf false ist auszligerdem optionales Argument Wenn nicht critical dann ist es nur eineInformation Also critical muss man lesen und verstehen nicht critical sollte man lesen wennman sie versteht sollte man sich daran halten

    To do neu ende

    Basic Constraints

    To do neu

    Sagt ob es Zertifizierungsinstanz ist oder eine Endnutzer Instanz ist und in welcher Ebene essich befindet

    To do Diagramm basteln

    108

    Ein interessantes Beispiel (goyacrt) findet man bei der Rechnerbetriebsgruppe

    To do neu-ende

    CA Siginalisiert ob es ein CA-Zertifikat ist (TRUE) oder nicht (FALSE) Dh ob das Zertifikatberechtigt ist weitere Unterzertifikate auszustellen

    To do neu

    Per default false es musste also nicht jedesmal CA FALSE angegeben werden

    To do neu-ende

    PATHLEN Beschrankt die Pfadlange Pathlen=0 heisst dass das Zertifikat zwar Nutzerzertifika-te ausstellen kann aber keine weiteren CA-Zertifikate Ist immer als Critical markiert

    Subject Key Identifier und Authority Key Identifier Nicht kritisch Beschreiben die ver-wendeten Schlussel uber Hash-Werte zum Beispiel SHA-1 uber den Schlussel

    Key Usage Kritisch (sollte kritisch sein zb bei GOYA nicht) Ist ein Bitstring der die Ver-wendung des Schlussels angibt Fur eine CA also zum Beispiel nur KeyCertSign NonRepu-diation ist eigentlich fur die Dokumentsignatur (content commitment) DigitalSignature ist furAuthentisierung oder allgemeine Signaturmechanismen Die beiden moglichst exklusiv setzen

    To do neu

    Nicht bei Endnutzerzertifikaten notig

    To do siehe rfc5280 - KeyUsage -HA lesen

    Merkmale

    (0) DigitaleSignatur zur Authentifizierung (hat keine Auswirkungen auf spatere Zeitraume)(werden zu dem aktuellen Zeitpunkt gepruft)

    (1) (ab X509v4) Inhaltsbindung[contentCommitment] (zb Nichtabstreitbarkeit ) (jetzt noch[nonRepudiation]) (werden zu dem Zeitpunkt zu dem sie erstellt worden sind gepruft)

    (0) und (1) sind Endnutzerinformationen

    nur ent-verschlusseln Schlussel zum verschlusseln von Zertifikaten geignet

    109

    keyCertSign==TRUE - wenn man nur Zertifikate damit signieren mochte (brauch man bei CAZertifikaten eigentlich sollte nur eines der Bits gesetzt sein) ansonsten sollte digitalSignaturegesetzt werden

    Key usage zB A0=10100000 (Erste und dritte gesetzt) oder zB 88=10001000 (erstes undfunftes gesetzt)

    authority information Nicht kritisch Feld in dem Daten des Herausgebers abgerufen werdenkonnen

    Benutzt das OCSP-Online Certificate Status Protocol (gibt eine URI an wo man die Informatio-nen erhalten kann - spater mehr)

    X509v3 Certificate Policies ASN1 Strucktur siehe rfc5280 S 33

    System von Regeln fur die Ausgabe von Zertifikaten sowie den Betrieb der ZertifizierungstelleNutzer kann sich uber die Hirarchie der CA informieren (wichtig fur den Vertrauensaufbau)

    CPS - Certificate Policy Statement und dann zwei moglichkeiten cPSuri (uri wo die Informationzu finden ist) oder userNotice (Freitext)

    Bsp httpnasacanasagovnasacphtml dort findet man eine CPS

    Wenn der Regelsatz dem CA Zertifikat zugeordnet ist (Bindung zB durch Root) ist es besserals wenn es nur dem EndNutzer Zertifikat zugordnet ist (Bindung nur durch die daruberliegendeCA)

    Authority Key Identifier Kurzinformationen mit der man einen Schlussel identifizieren kannFur Endnutzer ist der Authority Key Identifier ein Bezeichner mit dem das zugohrige CA-Zertifikat zu finden ist Kann enthalten

    KeyIdentifier - Schlussel ID

    GeneralNames - Herausgeber Seriennummer

    CertificateSerialNumber

    Subject Key Identifier - SKI Schlussel ID hilft bei der Unterscheidung sollte eine moglichsteindeutige Nummer sein da aber nicht genau festgelegt wird ist die SKI nicht fur Uberprufungengeeignet

    110

    Subject Alternative Name IP Adresse URI Email Adresse (hat das rsquoatrsquo Zeichen welchesin kein Datentyp passt weshalb sie hierher (oder in den Issuer Alt Name) gehort soll alsrfc8224Name gespeichert werden (da dieser nicht groszlig klein sensitiv ist))

    To do neu-ende

    605 Erzeugung

    To do neu

    Bei OpenSSL gibt es zwei moglichkeiten mit Perl Script

    perl ˜optopensslappsCApl -newca

    openssl x509 -text -nout -in cacertpem

    openssl req -text -nout -in careqpem

    Diese Requests folgen dem Standard PKCS 10 - rfc2986

    openssl ans1parse -in careqpem

    Attributes [0] - Contextabhangiges Tag (nur an diesem Ort gultig) Codiert als A0 denn Con-textabhangige tags fangen mit 10 an im Gegensatz zu Universaltags die mit 00 anfangen(Beispiel fur Contextabhangige Tags siehe auch bei AuhtorityKeyIdentifier)

    Im Request ist Set of Atritbute NICHT optional (aber kann leer sein)

    To do neu-ende

    Wie kommen wir eigentlich zu Zertifikaten Zertifikate kommen von einer CA also muss manzuerst ein CA-Zertifikat erstellen

    Request Ich mochte ein Zertifikat haben PKCS10RFC2986openssl req

    openssl req -new -x509 erzeugt gleich ein Zertifikat

    openssl req -new -newkey rsa1500 -days 40 -out userreq ein neuer Schlussel undein Request Der Request enthalt die Informationen des Antragsstellers den offentlichen Schlusselein Challenge-Passwort (von der CA festgelegt) und eine Signatur uber diese Daten

    111

    openssl x509 -req -CA -CAkey -out -days 40

    -in userreq -CAcreateserial -out userx509

    -extensions usr_cert -extfile opensslcnf wichtig um v3-Zertifikate zu erzeu-gen

    606 Gultigkeit

    Der rsquoGultigkeitszeitraumlsquo (Validity) im Zertifikat ist der Zeitraum uber den sich die ausstellendeInstanz verpflichtet etwas uber die Gultigkeit des Zertifikats auszusagen

    CRL Certificate Revocation List

    OCSP Online Certificate Status Protocol

    Sperrlistenformat auch in RFC 3280 Abschnitt 5 als X509-Variante festgelegt

    OCSP version 1 RFC 2560

    To do neu

    Man kann dass conf bearbeiten

    Ubungsaufgabe ein Zertifikatsrequest mit eigen Daten erstellen und zu zertifizieren

    To do einsortieren

    Die CA schmeiszligt eventuell Daten des Request raus

    To do neu-ende

    To do neu-20090624

    Sperrlisten Enthalten

    Version

    Signatur

    112

    Herausgeber

    LastNext Update

    Sperrlisten Nummer (sollte monoton wachsen)

    Liste der gesperten Zertifikate(jeder Eintrag enthalt ein Integer eine Zeit und evt CRLEntryExtension(CRLReason-Code siehe rfc5280 531))

    Bemerkungen

    Sperrlisten sind im DER-Format ( openssl -inform DER)

    (Erweiterungen enthalten immer OID Octet-String)

    Zu CRLEntryExtension CRLReason Code (6) (certificateHold-schwebend gesperrt) und (8)(removeFromCRL-kannwurde wieder entsperrt werden) sind besonders und sind eher nur furAuthosierung sinnvoll

    Sperrlisten nehmen in der Praxis erhebliche groszligen ein

    CRLEntryExtension wird von der Bundesnetzagentur nicht benutzt

    RFC5280 532 sperrdatum (revocation date) darf nicht vor dem Zeitraum der vorherigen CRLliegen sonst ist es in der vorherigen Liste Gultig (ansehen)

    Aufbau des Pfad zum Vertrauensanker (RFC 5280 S72) Das beschriebene Prufverfahren istnicht normativ vorgeschrieben es reicht wenn die Funktion gleich ist

    httpwwwbundesnetzagenturdemediaarchive1343pps

    Kettenmodel benutzt den Erstellungszeitpunkt (nicht Gewahrleistungs-Beginn) (Folie3)

    httpwwwbundesnetzagenturdeenid85f55115e236d80fc18329992037142d0FAQ

    Antwortss4_wphtml

    To do neu-ende

    To do 20090701-fehlt

    113

    61 Praktische Ausschlachtung von kryptografischen Algorithmen mitSMIME und PKCS7

    Root-Zertifikat erzeugenopenssl genrsa 1200 gt cakeypem

    openssl req -x509 -new -key cakeypem -config opensslcnf gt cacert (selbst-signiertes neues root Zertifikat mit eigenem Config Script)

    Root-Zertifikat anschauenopenssl x509 -in cacert -text -noout

    Nutzer der eigenen CA erstellenopenssl req -new -config opensslcnf -out usercert Erstellt mehrere Dateienauch privkeypem

    Zertifikat erstellenopenssl x509 -req -in userreq -CA cacert -CAkey cakeypem -CAcreateserial

    -out usercert -extfile opensslcnf -extensions usr_cert (Zertifikat fur usermit Extenstions Version 3 statt Version 1)

    Senden einer signierten Nachricht (Nachricht in Neutxt)openssl smime -sign -signer usercert -in Neutxt -inkey privkeypem

    -out neusmime -text

    Erzeugt Datei neusmime mit Nachricht und Signature -text erzeugt den Eintrag fur den Con-tent Type vor der Originalnachricht in neusmime

    Umwandeln der SMIME Nachricht in PKCS7 Nachrichtopenssl smime -pk7out -in neusmime -out neupk7

    Das gesamte (ohne Inhalt der Nachricht eigentlich nur die Signatur) SMIME Dokument wirdin eine PKCS7 Struktur eingebunden

    Anschauen mitopenssl asn1parse -i -in neupk7

    Zertifikate ausgeben mitopenssl smime pkcs7 -in neupk7 -print_certs -noout

    Zertifikate anschauen mitopenssl smime pkcs7 -in neupk7 -print_certs -noout -txt

    Verifizierenopenssl smime -verify -in neusmime -CAfile cacert

    Verschlusseln

    114

    openssl smime -encrypt -in Neutxt -out neusmime -text usercer

    Nachricht ohne Signatur verschlusselt

    Entschlusselnopenssl smime -decrypt -in neusmime -text -recip usercer

    -inkey privkeypem

    Fur die Einbindung in Browseropenssl pkcs12 -export -name Annie -inkey privkeypem

    -in usercert -out userp12

    Um auch das CA Zertifikat mit einzubindenopenssl pkcs12 -export -name Annie -inkey privkeypem

    -in usercert -out userp12 [-certfile cacert -CAfile cacert -chain]

    Private Schlussel auspacken openssl pkcs8

    62 PKCS

    PKCS Public Key Cryptography Standards

    1 RSA3 Diffie-Hellman5 Cryptography mit Passworten6 Zertifikate7 Cryptographic Message Syntax8 private Schlussel9 Attributtypen10 Zertifikatsrequest11 Cryptographic Token12 Personal Information Exchange13 Elliptische Kurven15 Chipkarten Token Formate

    621 PKCS7 15 November 93 RFC 3852

    To do neu-20090708

    CMS

    Email (SMIME)

    115

    XML Signaturen XMLDSIG XMLENC

    Dokument rarr signiertes Dokument

    openssl genpkey -algorithm rsa -pkeyopt rsa_keygen_bits300mdash openssl -chek -text -noout

    zu kleine Werte (iexcl256) fur den Schlussel werden nicht akzeptiert (Wert ist immer noch etwasklein) Aber die Ausgabe ist nicht ganz korrekt

    openssl genpkey -algorithm rsa -pkeyopt rsa_keygen_pubexp1

    ist leider moglich

    63 CMS(Cryptographic Message Syntax)

    rfc3852

    SignedData

    bull Version

    bull Hash Algorithmus

    bull gekapselter Inhalt

    bull Certifikat Liste

    bull Widerrufungsliste (Sperrinformationen)

    bull

    bull Signer Infos (Signaturen davon kann es mehrere geben elektronische Signatur nach demSignaturgesetz Signer Info enthalt selber noch einmal einen Signaturblock - der als Digi-tale Signatur aufgefasst werden kann)

    ndash Versionndash Idndash Attributesndash Algondash sig Valuendash

    bull Signer Id

    bull Signed Attributes (zB Zeit Ort Message Digest) Die Signatur dieses Blockes wird er-stellt indem der Hash Wert (nur des Blockes) signiert wird Wenn es signed Attributesgibt sind also auszligerdem Hash Wert des Dokuments und Inhaltstyp(Contenttype) im Si-gned Attributes enthalten und erst dann wird der Signed Attributes Block signiert Es wirdjeweils er Hash-Algorithmus verwendet der oben genannt wird

    116

    Auszligerdem Signing Certificate

    bull

    Frage ist wo wird der Wert Signiert der sagt welcher Hash-Algorithmus verwendet wird Wennnicht konnte man eventuell den Algorithmus austauschen

    Man konnte den Hash-Algorithmus als SignedAttribute einfugen

    To do neu-ende

    CMS (Cryptographic Message Syntax) Beschreibung des Formates mit dem man Krypto-nachrichten erstellen kann

    Kryptographische Nachricht Struktur vorne Bezeichner hinten Daten Daten = irgendwasspannend Welche Typen gibt es eigentlich

    Signed-data Content-Type Was jetzt kommt sind signierte Daten Liste der unterstuetzen Has-hfunktion dann gekapselter Inhalt dann eine Liste von Zertifikaten (optional) optionalSperrlisten dann Signaturbloecke (SignerInfo)

    SignedData = SEQUENCE

    Versionsnummer

    Liste der unterstutzten Hashfunktionen

    Ursprungliche Nachricht selbst

    Liste von Zertifikaten Optional

    Sperrlisten Optional

    Signer Infos

    SignedInfo = SEQUENCE

    Versionsnummer

    Signer Identifier (Wer der Signierer eigentlich gewesen sein soll)

    Hashfunktionen die bei der Signatur verwendet wird

    Signierte Attribute

    Verwendete Signaturalgorithmus

    Signaturwert

    Unsignierte Attribute

    SignerInfo = SEQUENCE

    Versionsnummer

    Signer Identifier (Wer der Signierer eigentlich gewesen sein soll)

    Bezeichner des Hashalgorithmus mit dem die endgultige Signatur erstellt wird

    Signierte Attribute Optional

    117

    Signatur Algorithmus

    Signature SignatureValue

    Unsigned Attributes Optional

    SignerIdentifier = SEQUENCE

    issuerAndSerialNumber

    subjectKeyIdentifier (Eindeutiger Hinweis wer der Aussteller ist)

    SignerInfo Signaturblock der eine Datenstruktur fuer eine Signatur bereitstellt Steht drin Ver-sionsnummer SignerIdentifier verwendeter Hash-Algorithmus dann signierte Attributeverwendeter Signaturalgorithmus Signaturwert unsignierte Attribute

    SignerIdentifier Aussteller und Seriennummer oder Schluesselidentifier (subjectKeyIdenti-fier)

    Signierte Attribute Sammlung von Attributen die signiert sind Was dabei sein sollte erstesAttribut Content-Type wenn die signierten Daten nicht nur Rohdaten sind sondern gekap-selte Daten eine s bestimmten Typs Ein weiteres nuetzliches Attribut Message-DigestDann Signing-Time

    Content-Type Object-Identifier der einen bestimmten Typ impliziert

    Message-Digest Hash der aus den Daten ausgerechnet wird Als Octet-String

    Signing-Time Zeit von der behauptet wird dass die Signatur zu dieser Zeit geleistet wurde

    Signatur Es werden die signierten Attribute signiert dort ist auch der Hash des Dokumentsals messageDigest enthalten Wenn keine signedAttributes existieren wird das Dokumentdirekt gehasht

    Weitere sinnvolle signierte Attribute

    Commitment-Type Was bedeutet die Signatur zum Beispiel virtuelle Poststelle Eingangs-stempel Auslieferung Einschreiben Urheberschaft gelesen Zeitstempel (spezielleSignatur eines authentischen Zeitservers) ist eine Information dass das Dokument vor-her existiert hat

    Signing Certificate Beschreibt mit welchem Schluessel zu welchem Zertifikat ist unterschrie-ben wordenwelches Zertifikat moechte der Signierer zur Ueberpruefung verwendet ha-ben Austausch des Zertifikats fuehrt zu anderer Urheberschaft ist ein realer AngriffVerhindert die Urheberschaft auszutauschen (rfc2634 S 46) Folge mit Zertifikats HashIssuerSerial(Herausgeber und Seriennummer) (leider ist da SHA1 als Algorithmus festge-legt)

    in rfc5035

    Folge mit Hash-Algorithmus (optional default ist aber SHA256) Zertifikat Hash IssuerSerial (Nun Hash als Octet String)

    Da der Wert des Hash Algorithmus optional ist ist diese Variante ruckwartskompatibel

    118

    Signing Location Ort an dem die Signatur geleistet wurde

    Weitere nuetzliche unsignierte Attribute

    Zeitstempel ist eine Information wann die Signatur existiert hat Hash uber die Signatur TimeServer davon Signatur

    not after Information fur die Signatur

    Countersignature Zweite Signatur (Gegenzeichnung) Signaturblock uber eine andere Signa-tur

    (Mitsignatur Bestatigung eines signierten Dokuments wichtiges Feld fur Mehrfachsigna-turen)

    Hashwert des signature Feldes (3 Hash Wert) nicht alle in einander gekappselt sonderansammlung von Signaturen

    Archiv Zeitstempel neuer Hash-Algorithmus signiert Dokument alle Signaturen alle Attri-bute (signiert unsigniert)

    Damit kann mann folgendes machen

    2001 2009 2010

    RS A512 S HA1 S HA256 S HA512

    Dok S ignatur t1 t2cc at1TTYY^^bb at2 at3

    Fur XML XML-DSIC XML-ENC

    7 Wichtige Neuerungen bei den Versionsanderungen

    bull Von 098 zu 099 Verbesserungen bei den Extensions von Certificate Revocation Lists

    bull Von 097h zu 098 UTF8-Support fur das ca-Kommando

    bull SHA1 ist nun default-Hash-Algorithmus statt MD5

    bull Patentierte Algorithmen RC5 und MD2 mussen beim Kompilieren extra angegeben wer-den

    bull Neue FIPS 180-2 Algorithmen SHA-224-256-384-512 wurden implementiert

    119

    bull Neuer Parameter -selfsign fur das ca-Kommando

    bull IPv6 Support bei den Zertifikatserweiterungen

    bull Ausweitung der Eliptischen Kurven Bibliothek

    8 OpenSSL hintergehen

    81 die eine Primzahl ganz klein erzeugen

    bull Offnen einer Datei in genrsa cryptorsarsa_genc

    bull Andern den Teil ldquo generate p and q rdquo so daszlig die eine Primzahl 10bit lang ist(bitsp=10 )

    bull Wir erzeugen einen neuen rsa key openssl genrsa -out rsaweakpem 2048und erstellen hierdurch eine Primzahl mit 10 bit die andere zufallig (also so in etwa2038bit)

    bull Wir schauen uns den key an openssl rsa -in rsaweakpem -text -nooutund sehen die eine Primzahl ist 35879 die andere hat 2046 bit Lange Das kann manlecker faktorisieren

    bull Offnen cryptobnbn_primeh die Zahl kommt durch den kleinen Primzahltest durchdieser geht nur bis ca 17000

    82 beide Primzahlen nah beieinander

    bull Und wieder in rsa_genc (Zeile 136 in der do-while-Schleife hinter degenerate)

    bull BN_copy(rsa-gtq rsa-gtp) wir setzen q gleich pBA_add_word(rsa-gtq 20) wir addieren 20 auf q

    for(i=1 BN_is_prime_ex(rsa-gtq 5 ctx NULL) i++)

    BN_add_word(rsa-gtq 2)

    wir erhoehen q bis zur naechsten Primzahl

    bull hierdurch erzeugen wir zwei Primzahlen die sich enorm ahnlich sind (wieder mit obigenKommandos) Der Angreifer kennt in diesem Fall den Exponenten damit ist das Verfahrenvollig unsicher

    83 Vorschrift des BSI

    01 le |log10 p minus log10q| also p gt10radic

    2 lowast qDas kann man aber mit q =10

    radic2 lowast p im Quellcode umgehen

    120

    84 Programmierung Zufallszahlenerzeugung und andere nette features

    Die ldquocallbackrdquo Funktion gibt den Fortschritt bei Suche nach p und q als Punkt (Fermat Primzah-lentest) und Plus (Miller-Rabin-Test) aus

    DatentypStruktur zum Speichern der auftretenden groszligen Zahlen Binarfeld BIGNUMp ist unsigned char

    p = BN_bn2hex((RSA )pub_rsa)-gtn) Zum Ausgeben eines BIGNUMs

    ((pub_rsa)-gtn)d[] einzelne Teile im Datenblock eines BIGNUMs editieren

    Zufallszahlen findet man in cryptorandrandh rand_libc randc

    Diese beiden Kombinationen vor entsprechenden Programmen i2d oder d2i intern to data datato internpub_rsa = d2i_RSAPublickey(NULL ampstr len) (lange von str) Transfor-miert Binardaten Zeichenkette in interne public Key Datenstruktur mit ASN1

    S(buf) gibt Speicherplatz frei uberschreibt ihn vorher noch einmal mit Zufallsbytes

    9 Zusammenfassung

    bull Symmetrische Verschlusselungsverfahren

    ndash DES

    64 Bit Blockchiffre

    16 Runden Feistelnetzwerk mit 48 Bit Rundenschlusseln

    56 Bit Schlussellange plus 8 Paritatsbits

    XOR Transformationsfunktion mit S-Boxenndash IDEA

    64 Bit Blockchiffre

    8 Runden Feistelnetzwerk mit je 6 middot 16 Bit Rundenschlusseln

    128 Bit Schlussellange

    XOR ADD modulo 216 MULT modulo 216 + 1ndash Blowfish

    64 Bit Blockchiffre

    16 Runden Feistelnetzwerk

    32-448 Bit Schlussellange

    XOR Transformationsfunktion mit XOR CONCAT und viel Schlusselmaterialndash AES

    121

    128 192 256 Bit Blockchiffre

    10 12 14 Runden Feistelnetzwerk

    128 192 256 Bit Schlussellange

    Substitution ShiftRow MixColumn KeyAddition

    ndash RC4

    Stromchiffre

    10 12 14 Runden Feistelnetzwerk

    variabele Schlussellange bis 2048 Bit

    ndash RC5

    wahlbare Blockchiffre (openssl 32 Bit)

    wahlbare Runden Feistelnetzwerk (openssl 12)

    wahlbare Schlussellange (openssl 128 Bit)

    ndash GOST

    64 Bit Blockchiffre

    32 Runden Feistelnetzwerk

    256 Bit Schlussellange

    ADD ROT 8 S-Boxen

    bull Asymmetrische Verschlusselungsverfahren

    ndash RSA (Verschlusseln und Signieren)

    ndash Diffie-Hellmann Schlusselaustausch

    ndash ElGamal Crypto-System (basierend auf DH)

    ndash Rucksackverschlusseln (gebrochen)

    ndash Merkle Puzzle (viele Nachrichten)

    ndash Rabin Verfahren

    Zur Prufung erster Teil mit OpenSSL spielen zweiter Teil Konzepte eine Woche vor derPrufung evt fragen was dran kommen wird Prufungstermine 20072005 oder 04102005oder nach Vereinbarung

    10 Mathematische Techniken

    101 Multiplikatives Inverses

    (nach wwwtzide˜hsLehreU9 mathD1pdf)

    122

    1011 Behauptung

    Seien a b isin Z zwei teilerfremde ganze Zahlen dh ggT (a b) = 1 Dann existiert ein aprime isin Z mitaprime middot a equiv 1 mod b

    1012 Beweis

    Betrachte die Menge ak mod b|k isin N k ge 1 Da ggT (a b) = 1 gilt folgt dass ggT (ak b) = 1fur alle k isin N mit k ge 1 Denn da a teilerfremd zu b ist so gilt dies auch fur alle Potenzenvon a Daher ist die betrachtete Menge eine Untermenge der endlichen Menge x mod b|x isinZ ggT (x b) = 1 und daher selbst endlich Also kann existiert k1 k2 mit ak1 equiv ak2 mod bNehmen wir an k1 lt k2 und setzen n = k2 minus k1 dann gilt ak1 middot an = ak2 equiv ak1 mod bDaher folgern wir an equiv 1 mod b d h anminus1 middot a equiv 1 mod b Also setzen wir aprime = anminus1 und dieBehauptung ist erfullt

    102 Kleiner Fermatscher Satz

    1021 Behauptung

    Aus der Wikipedia (unter GNU Free Documentation License)

    Der kleine fermatsche Satz kurz der kleine Fermat ist ein Lehrsatz in der Zahlentheorie Ermacht eine Aussage uber die Eigenschaften von Primzahlen und wurde aufgestellt im 17 Jahr-hundert von Pierre de Fermat Dieser Satz beschreibt eine allgemein gultige Kongruenz

    ap equiv a mod p

    wobei a eine ganze Zahl und p eine Primzahl ist (die weitere Symbolik wird im Artikel Kon-gruenz beschrieben) Falls a kein Vielfaches von p ist kann man das Resultat in die haufigbenutzte Form

    apminus1 equiv 1 mod p

    bringen

    1022 Beweis

    Der Beweis beruht auf der Tatsache dass wenn zwei Zahlen a und b zueinander inkongruent(modulo einer festen Zahl n) sind auch die beiden Produkte x middot a und x middot b inkongruent modulon sind fur x gt 0 und ggT (x n) = 1

    Denn

    123

    sei a b mod n n eine Primzahl a b naturliche Zahlen Angenommen

    a middot x equiv b middot x mod n

    fur eine naturliche Zahl x mit ggT (x n) = 1 Dann gibt es eine naturliche Zahl k so dass

    a middot x minus b middot x = k middot n

    x middot (a minus b) = k middot n

    x = n middot (k(a minus b))

    Da n eine Primzahl und x eine naturliche Zahl ist ist k(a minus b) entweder eine naturliche Zahlminus1n oder 1n Die letzten beiden Falle widersprechen der Annahme dass a b mod n dererste Fall widerspricht der Annahme dass ggT (x n) = 1 Damit ist die Annahme falsch und esgilt fur x so dass ggT (x n) = 1

    a middot x b middot x mod n

    Aus der Wikipedia (unter GNU Free Documentation License)

    Im folgenden betrachtet man zum einen die Menge A aller Reste mod p - also alle naturlichenZahlen kleiner als p und zum anderen die Menge B die diese Reste multipliziert mit a enthaltZwei beliebige Zahlen aus A sind zueinander inkongruent modulo p Aus dem oberen Satzfolgt dass damit auch zwei beliebige Zahlen aus B zueinander inkongruent sind Dadurchergibt sich dass das Produkt uber alle Zahlen aus A kongruent zum Produkt aller Zahlen aus Bist

    1 middot 2 middot 3 middot middot middot middot middot (p minus 1) equiv (1 middot a) middot (2 middot a) middot middot middot middot middot ((p minus 1) middot a) mod p

    alsoW equiv W middot apminus1 mod p

    wobei W das Produkt 1 middot2 middot3 middot middot(pminus1) ist Da es in Restklassenkorpern stets ein multiplikativesInverses gibt kann man diese W dividieren und man erhalt

    apminus1 equiv 1 mod p

    1023 Verallgemeinerung

    Man kann den kleinen fermatschen Satz zum Satz von Euler verallgemeinern Fur zwei teiler-fremde Zahlen n und a gilt

    aϕ(n) equiv 1 mod n

    wobei ϕ(n) die Eulersche Phi-Funktion bezeichnet Diese hat als Ergebnis die Anzahl der Zah-len zwischen 1 und nminus1 welche teilerfremd zu n sind Ist n eine Primzahl so ist ϕ(n) = nminus1 sodass man Fermats kleinen Satz als Spezialfall erhalt Mit Hilfe des kleinen fermatschen Satzesentwickelte Fermat den fermatschen Primzahltest

    124

    1024 Praktische Anwendung auf Primzahlen

    (p - a a lt p a 0)Wenn gilt apminus1 1 mod p ist dann kann p keine Primzahl sein (Umkehrung muss nicht

    gelten) Wenn man mit a beiweisen kann das p keine Primzahl sein kann dann nennen wir aKanditat (Es gibt aber sogenannte Carmichaelzahlen die kein Kandidat ist)

    To do nacharbeiten Carmichaelzahlen

    Wenn (p minus 1) gerade ist pminus12 = k eine Ganzzahl

    Ist a2k equiv 1 mod p(ak)2 equiv p(ak minus 1)(ak + 1) equiv 0 mod pAlso wenn p eine Primzahl ist dann ist entweder ak equiv 1 mod p oder ak equiv 1 mod pDaraus folgt wenn ak 1 mod p und ak minus1 mod p dann ist p keine PrimzahlSomit gilt auch wenn k gerade ist und a

    k2 1 und a

    k2 minus1 dann ist p keine Primzahl

    Betrachten p minus 1 = 2t middot r (r ungerade) Sei a lt p und p - aIn ar a2r a22middotr a2t middotr = apminus1 (Reste mod p)Wenn die Folge nicht mit 1 endet ist p keine Primzahl Wenn vor der ersten 1 in der Folge

    keine 1 steht ist p keine PrimzahlWir nennen a einen Zeugen wenn man mit a beweisen kann das p keine Primzahl istJede Zahl p die keine Primzahl ist hat mindestens 3

    4 aller Zahlen a (mit ggT(a p) = 1) alsZeugen (Jeder Kandidat ist ein Zeuge)

    Damit ergibt sich der Rabin-Miller-Test Wahle zufallig ein a lt p und teste ob a ein Zeugeist Mit hoher (beliebig genauer) Wahrscheinlichkeit ist p Primzahl

    Bei groszligen Zahlen werden die Zeugen mehr

    openssl genrsa -out keyrsa 800

    Generating RSA private key 800 bit long modulus

    +++++++

    +++++++

    e is 65537 (0x10001)

    Generiert den Schlussel und speichert in rsquokeyrsarsquo Punkte Bedeutet keine kleine PrimzahlRabin-Miller Test schlagt fehl Plus ist ein erfolgreicher Rabin Miller Test bei groszligeren Zahlenbrauch man weniger Tests da es mehr Zeugen gibt

    []

    103 Chinesischer Restklassensatz

    (nach wwwtzide˜hsLehreU9 mathD1pdf)

    125

    1031 Behauptung

    Seien m1m2 mr paarweise teilerfremde ganze Zahlen d h ggT (mim j) = 1 fur alle i j(i j isin 1 2 r) und sei M = m1 middotm2 middotmr Dann existiert fur jede Liste a1 ar mit 0 le ai lt

    mi fur 1 le i le r genau ein x isin Z mit 0 le x lt M welches effizient berechnet werden kann undfur das gilt

    x equiv a1 mod m1

    x equiv a2 mod m2

    x equiv ar mod mr

    Bemerkung Es ist leicht einzusehen dass jedes xprime isin Z mit xprime = x + k middot M fur ein k isin Z d hxprime equiv x mod M genau dasselbe Gleichungssystem lost wie x Der Beweis wird zeigen dass furein gegebenes x nur xprime von dieser Form dasselbe Gleichungssystem losen konnen

    1032 Beweis

    Zunachst beweisen wir die Existenz und setzen dazu Mi = Mmi daher gilt ggT (Mimi) = 1Aus diesem Grund existiert auch ein multiplikatives Inverses Ni isin Z mit Mi middot Ni equiv 1 mod mi

    (vgl multiplikative Inverse) Zu beachten ist jedoch dass fur alle j isin 1 r mit i j stetsMi middot Ni equiv 0 mod m j gilt Nun definieren wir x via

    x equivrsum

    i=1

    ai middot Mi middot Ni mod M

    Fur jedes i existiert ein v isin Z so dass x sich folgendermaszligen darstellen lasst

    x = Mi middot Ni middot ai + v middot mi

    Dies gilt da jedes M j mit j i mi als Faktor enthalt Offensich erfullt x also die obigen Glei-chungen x ist das einzige mit 0 le x lt M welches fur die gegebene Liste a1 a2 ar alleGleichungen lost denn falls xprime und xprimeprime zwei verschiedene Losungen sind so gilt xprime minus xprimeprime equiv 0mod mi fur alle i isin 1 r d h xprimeminus xprimeprime ist ein Vielfaches aller mi und damit auch von M da nachVoraussetzung ggT (mim j) = 1 fur alle i j isin 1 r mit i j erfullt ist Somit folgt xprime equiv xprimeprime

    mod M d h 0 le xprime xprimeprime lt M kann nicht auftreten und der Beweis ist abgeschlossen

    126

    104 Square and multiply

    Der folgende rekursive Algorithmus berechnet xn fur naturliche Zahlen x und n indem sukzes-sive der Exponent reduziert wird

    bull Falls n = 1 xn = x

    bull Sonst falls n gerade xn = (x2)n2

    bull Sonst xn = x middot (x2)(nminus1)2

    Damit kann xn in O(ln(n)) Rechenschritten (quadrieren und multiplizieren) berechnet werdenindem in jedem Schritt des Algorithmus der Exponent halbiert wird und hochstens vier Berech-nungen ausgefuhrt werden

    105 Montgomery Reduktion (Moduloberechnung ohne Division)

    Heute was ganz verrucktes Modulo-Multiplikation ohne Division

    Problem bei RSA und anderen Algorithmenm Modul gegeben und g Zahl gegeben und man rechnet aus ga mod mAufwand der Berechnung mit Square and Multiply Groszlige des Exponenten in Bits Multiplika-tionen + gleichviele ModulooperationenBerechnung von x middot y mod m = x middot y minus (x middot y div m) lowast mDivision aufwendig Daher Methode dies ohne Division bzw mit einer schmerzfreien Divisiondurch eine Zweierpotenz zu tun Dafur Kosten von Hin- und RucktransformationenHier Skizze 1xrarr X = x middot r mod myrarr Y = y middot r mod mX lowast Y = X middot Y middot rminus1 = x middot y middot r mod m

    Wir berechnen t0 equiv minusmminus1 mod r (Preprocessing)

    1 x minusrarr X = x middot r mod m

    2 y minusrarr Y = y middot r mod m

    3 X lowast Y = X middot Y middot rminus1 mod m= x middot r middot y middot r middot rminus1 = x middot y middot r mod m

    Zur Bestimmung von X lowast Y t1 = X middot Y echte Multiplikationt2 = t1 middot t0 mod r Multiplikation untent3 = (t1 + t2 middot m) div r Multiplikation obent3 = X lowast Y oder (t3 minus m) = X lowast Y

    127

    1 t3 ist durch r teilbar

    2 t3 equiv X middot Y middot rminus1 mod m

    3 0 le t3 le 2m

    Zu 1 t1 + t2 middot mequiv t1 + t1 middot t0 middot m mod requiv t1 + t1 middot m middot (minusm)minus1 mod requiv t1 minus t1 equiv 0 mod r

    Zu 2 (t1+t2middotm)r = t3 mod m

    (t1 middot t2 middot m) middot rminus1 mod mequiv t1 middot rminus1 + t2 middot rminus1 middot mequiv X middot Y middot rminus1 mod m

    Beispiel 5 lowast 3 =

    t1 = 15t2 = 15 middot 23 mod r = 45t3 = 15 + 45 middot 13 = 6

    Zu 3t1 le (m minus 1)2

    t2 middot m lt r middot mt1 + t2 middot m lt 2 middot r middot m

    t3 lt 2 middot m

    t3 equiv X middot Y middot rminus1 mod mx lowast r2 = X = x middot r mod mX lowast 1 = x mod m

    Beispiel m = 13 r = 100 t0 = 23

    r mod m r = 9 mod 13r2 = 3 mod 13

    Ziel 6 middot 5 mod 13

    6 lowast 3 = 25 lowast 3 = 6

    128

    2 lowast 6 =

    t1 =

    t2 =

    t3 = xx

    x lowast 1 =

    Wenn eine Division langer als 1 5 Multiplikationen dauert dann lohnt sich das Verfahren DerErfinder heisst ubrigens Peter L Montgomery (Montgomery Reduktion) wwwmiinformatikuni-frankfurtdeteachingws0001krypto algomontgomerypdf

    Montgomery-Multiplikation

    To do siehe Mathematischer Anhangzusammenfugen

    Die Reduktion modulo m erfordert eine Division aber Divisionen sind rsquoteuerrsquo

    Dies kann man aber wie folgt vereinfachen

    Um die Division zu vermeiden rsquotransformiertrsquo man die Zahlen

    Sei gesucht das Produkt x middot y mod m

    x minusrarr X y minusrarr Y x middot y minusrarr X lowast Y

    R = (zweierPotenz) gt m und die Division durch R muss einfach sein

    X = x middot R mod m

    X lowast Y = X middot Y middot Rminus1 mod m (wobei die modulo Reduktion nun nicht mehr jedes mal ausgefuhrtwerden muss sonder nur am Anfang und am Ende der rsquoTransformationrsquo)

    1 Berechne mprime = minusmminus1 mod R

    (minusmR) = 1 rArr XGCD mprime middot m = minus1 mod R

    2 t = X middot Y (echte Multiplikation)

    3 t1 = t middotmprime mod R (echte Multiplikation und oben abschneiden also eine leichtere moduloReduktion da R eine zweier Potenz ist) (dabei gilt t2 lt m2 + R middot m)

    4 t2 = t + t1 middot m (echte Multiplikation und eine Addition) (dabei gilt t3 lt(m+R)middotR

    R = 2m)

    5 t3 = t2divR (also rsquounten abschneidenrsquo)

    6 Wenn t3 gt m dann t3 = t3 minus m

    129

    Nun ist t3 = X lowast Y Dafur muss t3 lt m sein oder in Schritt 6 t3 lt 2m sein

    Wir mussten also prufen

    1 t3 lt m

    2 Division in 5 rsquogeht aufrsquo

    t2 ist durch r teilbar

    t2 mod R equiv (t + t1 middot m) equiv t + (t middot mprime) middot m mod R equiv t + t(minus1) mod R equiv 0 mod R

    3 t3 = X lowast Y

    t3 middot R mod m equiv t2R middot R mod m equiv t2 equiv t + t1 middot m equiv t mod m equiv X middot Y mod m

    Wir haben also den folgenden Aufwand

    1 rsquoTransformationrsquo

    2 rsquoRechnungrsquo

    3 Zuruck rsquotransformierenrsquo

    x lowast R2 = x middot R2 middot Rminus1 mod m = x middot R = X mod m

    X lowast 1 = X middot 1 middot Rminus1 equiv x middot R middot Rminus1 equiv x mod m

    Man benotigt also zwei zusatzliche Operationen zur transformation Dafur kommt die Operationrsquorsquo ohne Divisionen aus

    Beispiel m = 17

    R = 100

    7 middot 11 mod 17

    x lowast y mod mdarr darr

    X Y= =

    (x middot R) mod m lowast (y middot R) mod m

    m1 = minusmminus1 mod 100

    suche also ein m1 mit m1 middot 17 = minus1 mod 100

    m1 = 47

    130

    To do Bsp Magma Quelltext siehe Homepage

    Bem dazu Wenn R groszlig genug ist kann man die Subtraktion von m weglassen

    Mathematischer Hintergrund (Zm+ middot)simminusrarr (Zm+ lowast) Was ist das Einselement und das

    Inverse

    106 Nochwas

    vielleicht

    zur Prufung Zwei Teile (ein theoretischer ein praktischer) Ein openssl-Kommando das in derVL nicht behandelt wurde wird drankommen (zum Beispiel speed ca etc) Theoretischer Teil

    1 symmetrische Verfahren (was sind symmetrische Verfahren wodurch charakterisiert)

    2 Integritatsschutz (wie kann man Integritatsschutz gewahrleisten)

    3 asymmetrische verfahren (siehe 1)

    4 Signatur (was sind Signaturen wofur verwendet man sie was ist ˜konzept was ist sicherwas ist unsicher)

    5 Vertrauensstruktur (zum Beispiel PGP)

    6 Client-Server-Authentisierung (SSL-Protokoll Kerberos)

    7 Sicherheitsparameter (wo sind die welchen Einfluszlig auf die Sicherheit haben sie)

    8 X509 (elektronische Identitat)

    9 RFC-Security (3280 3279 3446 )

    Mathematische Verfahren

    1 Square and Multiply Double and Add

    2 Euklidischer Algorithmus

    3 RSA DH

    4 DSA

    5 AES

    6 das eine oder andere symmetrische Verfahren Strom-Blockchiffre

    7 Elliptische Kurven eher nicht reicht zu wissen dass man mit Addition in EK das gleicheerreichen kann wie mit Multiplikation im Restklassenkorper

    8 kleiner Fermat eher nicht

    131

    9 Montgomery-Multiplikation vielleicht auch nicht sollte aber bekannt sein

    Fur MD5- AES- etc Grundfunktionen reicht evt wissen wo man nachschauen muss

    Dann nachweisen dass man mit Openssl spielen kann

    1 Verschlusseln mit DES3DESBFAES

    2 Prufsummenberechnung

    3 Konfigurationsfile

    4 RSA-Verschlusselung

    5 098 ndash 097 (dynamisch)

    6 Zertifikat

    7 DSA-Verschlusselung

    8 Passworter (passwd) und Salt

    9 E-Mail-Nachricht erstellen und sichern (SMIME-Anwendung)

    Zum Punkt Ich mochte eine 1 haben was muss ich dafur tun Was haben sie ausserhalb derVorlesung schonmal gelesen Was fehlte ihnen an der Vorlesung was fanden sie doof

    132

    • 1 Einfuumlhrung
      • 11 Verschluumlsselung
      • 12 Beispiel rot13
      • 13 Block-Chiffre
      • 14 Strom-Chiffre
      • 15 Angriffstypen
        • 151 Differentielle Kryptoanalysis
          • 16 Base64
            • 2 OpenSSL
            • 3 Symmetrische Verschluumlsselungsverfahren
              • 31 Feistel-Chiffren
              • 32 DES - Data Encryption Standard
                • 321 Schluumlsselauswahl
                • 322 Funktionsweise
                • 323 Schwachstellen und Unsinnigkeiten
                • 324 spezielle Optionen bei openssl
                • 325 DESECB - Electronic Code Book
                • 326 DESCBC - Cipher Block Chaining
                • 327 DESOFB - Output Feed Back
                • 328 DESCFB - Cipher Feed Back
                • 329 CTR Mode CCM
                • 3210 TEA-Algorithmus
                • 3211 DES-X
                  • 33 IDEA International Data Encryption Algorithm
                    • 331 Schluumlsselauswahl
                    • 332 Funktionsweise
                    • 333 Pseudocode-multiplikation
                    • 334 Schwachstellen
                      • 34 Blowfish
                        • 341 Initialisierung
                        • 342 Verschluumlsselung
                          • 35 AES Advanced Encryption Standard
                            • 351 Wiederholung-Byteoperation
                            • 352 Uumlberblick
                            • 353 mathematische Grundlagen
                              • 36 RC4 Rons Cipher 4
                                • 361 Geschichte
                                • 362 Beschreibung
                                • 363 Der Pseudo-Zufalls-Algorithmus
                                • 364 Der Schluumlsselerzeugungs-Algorithmus
                                • 365 Implementation
                                • 366 Sicherheit
                                • 367 Fluhrer Mantin und Shamir Angriff
                                  • 37 RC5 Rons Cipher 5
                                    • 371 Verschluumlsselung
                                    • 372 Schluumlsselexpansion
                                      • 38 GOST 28147-89 Gosudarstvennyi Standard Soyuza SSR nicht in OpenSSL
                                      • 39 FazitWie koumlnnte bei einen Symmetrischen Algorithmus die Sicherheit erhoumlhen
                                        • 4 Asymmetrische Verschluumlsselungsverfahren
                                          • 41 Einfuumlhrung
                                            • 411 Beispiel
                                              • 42 Geschichte
                                              • 43 Einige Theoretische Grundlagen
                                                • 431 Kleiner Fermat (oder kleiner Fermatscher Satz)
                                                • 432 Euklidischer Algorithmus
                                                • 433 Beispiel
                                                  • 44 RSA Rivest Shamir Adleman
                                                    • 441 Funktionsweise des RSA-Verfahrens
                                                    • 442 Beweis der Funktionsweise
                                                      • 45 Schwaumlchen von RSA
                                                      • 46 Fuktionen in OpenSSL
                                                        • 461 genrsa
                                                        • 462 rsa
                                                        • 463 rsautl
                                                        • 464 PKCS
                                                        • 465 OAEP - Optimal Asymmetric Encryption Padding
                                                        • 466 Wie erkennt man an Ciphertexten den Verschluumlsselungsalgorithmus- DER ASN1
                                                        • 467 Umgehen mit den Schluumlsselkomponenten
                                                          • 47 Miller-Rabin Test
                                                          • 48 Diffie-Hellman-Schluumlsselaustausch
                                                          • 49 ElGamal-Cryptosystem
                                                          • 410 Wiederholung DH
                                                            • 4101 Beispiel
                                                              • 411 was anderes
                                                              • 412 Elliptische Kurven
                                                              • 413 Elliptische Kurven Nachtrag
                                                              • 414 Rucksack-Verschluumlsseln
                                                                • 4141 Beispiel
                                                                  • 415 Merkle Puzzle
                                                                  • 416 Rabin-Verfahren und Wurzelziehen
                                                                    • 4161 Schluumlsselgenerierung
                                                                    • 4162 Kongruenzbedingung
                                                                    • 4163 Verschluumlsselung
                                                                    • 4164 Entschluumlsselung
                                                                      • 417 Angriffe auf asymmetrische Verschluumlsselungsverfahren
                                                                        • 4171 1 Angriff Common modulus attack
                                                                        • 4172 2 Angriff kleiner geheimer Exponent d
                                                                        • 4173 3 Angriff Faktorisieren
                                                                        • 4174 Echt schlechte RSA-Schluumlssel
                                                                        • 4175 Schnelles Faktorisieren bei Fehler im System
                                                                        • 4176 Angriff mit gewaumlhltem Chiffretext
                                                                            • 5 Signaturmechanismen
                                                                              • 51 Integritaumltsschutz und Hashfunktionen
                                                                                • 511 Schluumlssellose Hashfunktion (Pruumlfsummen ohne Schluumlssel)
                                                                                • 512 Demonstration Faumllschung
                                                                                  • 52 Unterschied MD5 und SHA
                                                                                  • 53 Secure Hash Standard SHA-2
                                                                                    • 531 Problem bei MD5 und SHA-0
                                                                                    • 532 MACs (Message Authentication Codes) (Pruumlfsummen mit Schluumlsseln)
                                                                                      • 54 Whirlpool
                                                                                      • 55 Zusammenfassung
                                                                                      • 56 Digitale Signaturen
                                                                                        • 561 RSA
                                                                                        • 562 Eigenschaften eines asymmetrischen Verschluumlsselungsverfahren
                                                                                        • 563 RSASSA-PSS-Padding
                                                                                        • 564 DSA
                                                                                        • 565 ECDSA - DSA mit Elliptischen Kurven
                                                                                          • 57 Widerrufen von Zertifikaten
                                                                                          • 58 Was es noch so gibt
                                                                                            • 581 blinde Signaturen
                                                                                            • 582 anonyme Signaturen
                                                                                                • 6 Zertifikate
                                                                                                  • 603 X509
                                                                                                    • 604 Erweiterungen
                                                                                                    • 605 Erzeugung
                                                                                                    • 606 Guumlltigkeit
                                                                                                      • 61 Praktische Ausschlachtung von kryptografischen Algorithmen mit SMIME und PKCS7
                                                                                                      • 62 PKCS
                                                                                                        • 621 PKCS7 15 November 93 RFC 3852
                                                                                                          • 63 CMS(Cryptographic Message Syntax)
                                                                                                            • 7 Wichtige Neuerungen bei den Versionsaumlnderungen
                                                                                                            • 8 OpenSSL hintergehen
                                                                                                              • 81 die eine Primzahl ganz klein erzeugen
                                                                                                              • 82 beide Primzahlen nah beieinander
                                                                                                              • 83 Vorschrift des BSI
                                                                                                              • 84 Programmierung Zufallszahlenerzeugung und andere nette features
                                                                                                                • 9 Zusammenfassung
                                                                                                                • 10 Mathematische Techniken
                                                                                                                  • 101 Multiplikatives Inverses
                                                                                                                    • 1011 Behauptung
                                                                                                                    • 1012 Beweis
                                                                                                                      • 102 Kleiner Fermatscher Satz
                                                                                                                        • 1021 Behauptung
                                                                                                                        • 1022 Beweis
                                                                                                                        • 1023 Verallgemeinerung
                                                                                                                        • 1024 Praktische Anwendung auf Primzahlen
                                                                                                                          • 103 Chinesischer Restklassensatz
                                                                                                                            • 1031 Behauptung
                                                                                                                            • 1032 Beweis
                                                                                                                              • 104 Square and multiply
                                                                                                                              • 105 Montgomery Reduktion (Moduloberechnung ohne Division)
                                                                                                                              • 106 Nochwas

      365 Implementation 43366 Sicherheit 43367 Fluhrer Mantin und Shamir Angriff 44

      37 RC5 Ronrsquos Cipher 5 44371 Verschlusselung 44372 Schlusselexpansion 45

      38 GOST 28147-89 Gosudarstvennyi Standard Soyuza SSR nicht in OpenSSL 4539 FazitWie konnte bei einen Symmetrischen Algorithmus die Sicherheit erhohen 47

      4 Asymmetrische Verschlusselungsverfahren 4741 Einfuhrung 47

      411 Beispiel 4842 Geschichte 4843 Einige Theoretische Grundlagen 49

      431 Kleiner Fermat (oder kleiner Fermatrsquoscher Satz) 49432 Euklidischer Algorithmus 49433 Beispiel 51

      44 RSA Rivest Shamir Adleman 54441 Funktionsweise des RSA-Verfahrens 54442 Beweis der Funktionsweise 55

      45 Schwachen von RSA 5646 Fuktionen in OpenSSL 56

      461 genrsa 56462 rsa 57463 rsautl 58464 PKCS 58465 OAEP - Optimal Asymmetric Encryption Padding 59466 Wie erkennt man an Ciphertexten den Verschlusselungsalgorithmus- DER

      ASN1 60467 Umgehen mit den Schlusselkomponenten 61

      47 Miller-Rabin Test 6248 Diffie-Hellman-Schlusselaustausch 6449 ElGamal-Cryptosystem 66410 Wiederholung DH 66

      4101 Beispiel 67411 was anderes 67412 Elliptische Kurven 67413 Elliptische Kurven Nachtrag 70414 Rucksack-Verschlusseln 71

      4141 Beispiel 71415 Merkle Puzzle 71416 Rabin-Verfahren und Wurzelziehen 72

      4161 Schlusselgenerierung 724162 Kongruenzbedingung 73

      3

      4163 Verschlusselung 734164 Entschlusselung 74

      417 Angriffe auf asymmetrische Verschlusselungsverfahren 744171 1 Angriff Common modulus attack 754172 2 Angriff kleiner geheimer Exponent d 754173 3 Angriff Faktorisieren 754174 Echt schlechte RSA-Schlussel 754175 Schnelles Faktorisieren bei Fehler im System 764176 Angriff mit gewahltem Chiffretext 76

      5 Signaturmechanismen 7751 Integritatsschutz und Hashfunktionen 77

      511 Schlussellose Hashfunktion (Prufsummen ohne Schlussel) 80512 Demonstration Falschung 83

      52 Unterschied MD5 und SHA 8453 Secure Hash Standard SHA-2 85

      531 Problem bei MD5 und SHA-0 86532 MACs (Message Authentication Codes) (Prufsummen mit Schlusseln) 87

      54 Whirlpool 8955 Zusammenfassung 8956 Digitale Signaturen 91

      561 RSA 92562 Eigenschaften eines asymmetrischen Verschlusselungsverfahren 93563 RSASSA-PSS-Padding 95564 DSA 97565 ECDSA - DSA mit Elliptischen Kurven 99

      57 Widerrufen von Zertifikaten 10358 Was es noch so gibt 105

      581 blinde Signaturen 105582 anonyme Signaturen 105

      6 Zertifikate 105603 X509 107604 Erweiterungen 108605 Erzeugung 111606 Gultigkeit 112

      61 Praktische Ausschlachtung von kryptografischen Algorithmen mit SMIME undPKCS7 114

      62 PKCS 115621 PKCS7 15 November 93 RFC 3852 115

      63 CMS(Cryptographic Message Syntax) 116

      7 Wichtige Neuerungen bei den Versionsanderungen 119

      4

      8 OpenSSL hintergehen 12081 die eine Primzahl ganz klein erzeugen 12082 beide Primzahlen nah beieinander 12083 Vorschrift des BSI 12084 Programmierung Zufallszahlenerzeugung und andere nette features 121

      9 Zusammenfassung 121

      10 Mathematische Techniken 122101 Multiplikatives Inverses 122

      1011 Behauptung 1231012 Beweis 123

      102 Kleiner Fermatscher Satz 1231021 Behauptung 1231022 Beweis 1231023 Verallgemeinerung 1241024 Praktische Anwendung auf Primzahlen 125

      103 Chinesischer Restklassensatz 1251031 Behauptung 1261032 Beweis 126

      104 Square and multiply 127105 Montgomery Reduktion (Moduloberechnung ohne Division) 127106 Nochwas 131

      1 Einfuhrung

      Literaturempfehlungen

      bull Alfred J Menezes Paul C van Oorschot Scott A Vanstone - Handbook of Applied Cryp-tography CRC Press 1996 ISBN 0849385237 httpwwwcacrmathuwaterloocahac

      bull John Viega Matt Messier Pravier Chandra - Network Security with OpenSSL OrsquoReilly2002 ISBN 059600270X

      bull Michael Welschenbach - Kryptographie in C und C++ Springer 2001 ISBN 3540420614

      bull Bruce Schneier - Applied Cryptography Wiley 2nd rev 1996 ISBN 3540420614

      Prufung 24 08 2009

      In der Vorlesung wird ofters der rsquoMagma Calculatorrsquo verwendet Dabei handelt es sich um dieOnline-Version eines Computer Algebra Systems (httpmagmamathsusydeduaucalc) Imfolgenden werden Berechnungen die mit Magma durchgefuhrt wurden mit rsquoMagmarsquo gekenn-zeichnet

      5

      Kryptographie ist einer der beiden Bestandteile der Kryptologie der andere ist Kryptoanalyse

      Kryptographie Entwurf von Sicherheitsalgorythmen die Daten vor Mitlesen und Verandernschutzen

      Kryptoanalyse Aktives Analysieren von kryptographischen Verfahren

      11 Verschlusselung

      Verschlusselung benotigt Menge von Schlusseln

      N - Algorithmus (zB DES) - c

      E

      6

      K

      N Menge der NachrichtenK Menge der Schlusselc Verschlusselte Nachricht

      foralln isin N k isin K c = E(n k) eindeutig

      exist Algorithmus D (decrypt) mit aus c = E(n k) folgt existkprime isin K mit n = D(c kprime)

      12 Beispiel rot13

      N = Alphabetn isin N

      c = n + 13 mod 26Dies ist kein Verschlusselungsalgorithmus da es nur einen Schlussel gibtc = n + k mod 26Dies ist ein Verschlusselungsalgorithmus da es eine Menge von Schlusseln gibt

      c = E(n k) = n + kn = D(c k) = c minus kE(n 13) = D(n 13)

      6

      Variante der Betrachtung kprime = 26 minus k rArr D(c kprime) = E(c kprime)Verschlusseln = Entschlusseln = Vorteil nur ein Algorithmus

      Berechnungk rarr kprime (vernunftig im allgemeinen Sinne)E middot D = IdC

      D middot E = IdN

      Man unterscheidet bei Verschlusselungsverfahren

      symmetrisch k hArr kprime kennt man einen Schlussel kennt man beide

      asymmetrisch k rArr kprime oder k lArr kprime aus dem einen Schlussel kann man denanderen nicht erfahren

      13 Block-Chiffre

      Ausdehnung der Verschlusselung von Alphabet auf Zeichenketten mi Die Originalnachrichtwird in Blocke zerlegt die gleich verschlusselt werden Zum Beispiel

      m = (m1m2m3 )

      k = (k1 k2 k3 )

      ci = mi oplus ki

      Aus der Wikipedia (unter GNU Free Documentation License)

      Symmetrische Verschlusselungsalgorithmen sind oft Blockverschlusselungsalgorithmen (auchBlockchiffre) Bevor sie Daten verschlusseln werden diese zunachst in Blocke unterteilt de-ren Groszlige durch den Algorithmus vorgegeben ist Die Verschlusselungsroutinen setzen jedochganze Blocke voraus somit muss meistens der letzte Block mit Zufallsdaten aufgefullt werden(bei einer Blockgroszlige von 128 Bit werden die verschlusselten Daten somit 0 bis 127 Bit groszligerals der Klartext)Die Blocke werden anschlieszligend nacheinander verschlusselt Dabei ist es durchaus ublich dassdas Ergebnis der Verschlusselung eines Blocks bei der Verschlusselung des nachsten Blocksals Eingangswert mitverwendet wirdWichtige Parameter einer Blockchiffre sind somit die Blocklange (auch Blockgroszlige) und dieSchlussellange

      7

      14 Strom-Chiffre

      Aus der Wikipedia (unter GNU Free Documentation License)

      Eine Strom-Chiffre ver- bzw entschlusselt Nachrichten Bit fur Bit bzw Zeichen fur ZeichenDies steht im Gegensatz zu Block-Chiffren wo Nachrichten immer in gleich groszligen Blockenverarbeitet werden

      Strom-Chiffren sind symmetrische Verschlusselungsalgorithmen die sehr schnell arbei-ten

      Zur Generierung eines Geheimtextes wird zunachst ein Schlusselstrom erzeugt DieserSchlusselstrom ist eine Folge von Zeichen die nur mit Kenntnis des geheimen Schlussels er-zeugt werden kann (in der Regel eine Pseudozufallsfolge) Danach wird jedes Zeichen desSchlusselstroms mit einem Zeichen des Klartextes verknupft Die Verknupfungsoperation istXOR Um Geheimtexte wieder zu entschlusseln wird der Geheimtext mit dem Schlusselstromverknupft

      Beispiele fur Strom-Chiffren sind die XOR-Verschlusselung oder die Entwicklung vonRonald L Rivest namens RC4

      15 Angriffstypen

      m Nachrichtc verschlusselte Nachrichtk Schlussel

      Kommunikation zwischen Alice und Bob mit Angreifer Eve Vorraussetzung Eve kennt dasVerfahren

      1 Chiffre ist bekannt(ciphertext only Chiffre allein Angriff)m k gesucht

      2 (mi ci)-Paare sind bekannt ci = E(kmi)(known plain text bekannter Klartext Angriff)gesucht k und weitere mi

      3 wahlbarer Klartext chosen plaintext(zB Eve hat Encoder in die Hande bekommen)

      4 wahlbarer Chiffretext chosen ciphertext(zB Eve hat Decoder in die Hande bekommen)

      Generelle Schutzmechanismen zum sicherer machen

      8

      1 Klartextbits breit auf Chiffre verteilen und Schlusselbits uberall einbringen um die Si-cherheit zu erhohen bzw einen anderen Algorithmus verwenden um dies zu erreichen

      2 Algorithmus skalieren Lange des Schlussels mehr Runden

      3 Schwachen zusatzlichen Schutz bietet doppeltes verschlusseln zum BeispielAlgorithmus hat 64-Bit Sicherheit (Brute Force Angriff Aufwand von 264) doppelt ver-schlusselt hat er 65-Bit Sicherheit wegen

      rdquomeet in the middle Angriffldquo Ist known plain text attack m ist der Klartext k der Schlusselfur den ersten Algorithmus n der daraus resultierende ldquoZwischentextrdquo l der Schlussel furden zweiten Algorithmus und c die endgultige verschlusselte Nachricht Der Angreiferinist ein m und das dazu gehorige c bekannt Sie erzeugt sich nun alle Werte die k an-nehmen kann und alle Werte die l annehmen kann und berechnet zu jedem ki sowie zujedem li ein ni als E(kim) bzw D(li c) Damit muss sie 2 lowast 264 Paare von Schlusselnund ldquoZwischentextenrdquo erzeugen und speichern In der Menge der ni gibt es nun (da beideVerschlusselungen eindeutig sind) genau zwei - eines als Entschlusselung von c eines alsVerschlusselung von m - die ubereinstimmen Deren Schlussel sind diejenigen die auchbei der Erzeugung von c verwendet wurden Das Auffinden dieses Paares kann durch ge-schickte Speicherung der ni ki und li zum Beispiel in einer Hashtabelle in logarithmischerZeit bewerkstelligt werdenDaher Sicherheit des Algorithmus ist mindestens so stark wie jeder einzelne Algorithmusaber moglicherweise nicht viel besser

      4 Dreifach verschlusseln und Kombination von AlgorithmenDer Meet-in-the-middle attack schlagt hier fehl da der Speicher- und Rechenaufwandnun quadratisch mit dem Werteraum der Schlussel wachst Bei der Verwendung einesschwachen Algorithmus der anderweitig gebrochen werden kann wird die Kombinationjedoch wieder anfallig fur meet-in-the-middle

      5 Block-Chiffre + Strom-Chiffre kombinierenStrom-Chiffre sehr langer Schlussel c = p oplus k k zufallig gewahlt (moglichst echter phy-sikalischer Zufall) zwei Folgen CK rarr in Block-Chiffrerarr Blockweise C2 = E(S 1K)C1 = E(S 2C)Eine Strom-Chiffre und zwei Block-Chiffren Brechen dieser Kombination = Aufwandaddiert sich aber doppelte Ausgabelange

      151 Differentielle Kryptoanalysis

      man wahle Klartexte P1 P2 mit ganz bestimmten Unterschied P1 oplus P2 = D Bei der Ver-schlusselung ergibt sich dann fur die Chiffretexte C1C2 mit bestimmten Dprime = C1 oplus C2 das ineinen bestimmetn Zusammenhang zu D steht

      Bleiben die Schlussel immer gleich so kann man sich langsam mit D1 Dn an den Klartextranprobieren ()

      9

      16 Base64

      Aus der Wikipedia (unter GNU Free Documentation License)

      Base64 [] beschreibt ein Verfahren zur Kodierung von 8-Bit-Binardaten (z B ausfuhrbareProgramme ZIP-Dateien) in eine Zeichenfolge die nur aus wenigen Codepage-unabhangigenASCII-Zeichen besteht Im Zusammenhang mit OpenPGP wird noch eine Prufsumme (CRC-24) angehangt und es als Radix-64 bezeichnet

      Es findet im Internet-Standard MIME (Multipurpose Internet Mail Extensions) Anwen-dung und wird damit hauptsachlich zum Versenden von E-Mail-Anhangen verwendet Notigist dies um den problemlosen Transport von beliebigen Binardaten zu gewahrleisten da SMTPin seiner ursprunglichen Fassung nur fur den Versand von 7-Bit ASCII-Zeichen ausgelegt war

      Zur Kodierung werden die Zeichen A-Z a-z 0-9 + und verwendet sowie = am EndeDa diese Zeichen auch in EBCDIC vorkommen (wenn auch an anderen Code-Positionen) istdamit auch ein Datenaustausch zwischen nicht-ASCII-Plattformen moglich

      Zur Kodierung werden jeweils drei Byte des Bytestroms (=24 bit) in vier 6-bit-Blockeaufgeteilt Jeder dieser 6-bit-Blocke bildet eine Zahl zwischen 0 und 63 Diese Zahlen werdenan Hand der nachfolgenden Umsetzungstabelle in ldquodruckbare ASCII-Zeichenrdquo umgewandeltund ausgegeben Nach jeweils 76 ausgegebenen Zeichen wird spatestens ein Zeilenumbrucheingefugt welcher jedoch ansonsten fur die Kodierung nicht von Belang ist

      Falls die Gesamtanzahl der Eingabebytes nicht durch drei teilbar ist wird der zu kodieren-de Text am Ende mit Fullbytes aufgefullt Um dem Dekodierer mitzuteilen wie viele Fullbytesangefugt wurden werden die 6-Bit-Blocke die vollstandig aus Fullbytes entstanden sind mitrsquo=rsquo kodiert Somit konnen am Ende einer Base64-kodierten Datei 0 1 oder 2 rsquo=rsquo-Zeichenauftreten

      Die angesprochene Transitionstabelle ist eine alphabetisch bzw numerisch aufsteigende Anord-nung zuerst der Groszligbuchstaben dann der Kleinbuchstaben schlieszliglich der Ziffern und am Endeder beiden Zeichen rsquo+rsquo und rsquorsquo in dieser Reihenfolge

      2 OpenSSL

      Optionen fur openssl ciphername oder openssl enc -ciphername

      OPTIONS

      -in filename

      the input filename standard input by default

      -out filename

      the output filename standard output by default

      10

      -pass arg

      the password source

      -salt

      use a salt in the key derivation routines

      -nosalt

      donrsquot use a salt in the key derivation routines

      -e

      encrypt the input data this is the default

      -d

      decrypt the input data

      -a

      base64 process the data This means that if encryption is

      taking place the data is base64 encoded after encryption

      If decryption is set then the input data is base64 decoded

      before being decrypted

      -A

      if the -a option is set then base64 process the data on

      one line

      -k password

      the password to derive the key from This is for

      compatibility with previous versions of OpenSSL Superseded

      by the -pass argument

      -kfile filename

      read the password to derive the key from the first line

      of filename This is for compatibility with previous

      versions of OpenSSL Superseded by the -pass argument

      -S salt

      the actual salt to use this must be represented as a

      string comprised only of hex digits

      -K key

      the actual key to use this must be represented as a string

      comprised only of hex digits If only the key is specified

      the IV must additionally specified using the -iv option

      11

      When both a key and a password are specified the key given

      with the -K option will be used and the IV generated from

      the password will be taken It probably does not make much

      sense to specify both key and password

      -iv IV

      the actual IV to use this must be represented as a string

      comprised only of hex digits When only the key is specified

      using the -K option the IV must explicitly be defined When

      a password is being specified using one of the other options

      the IV is generated from this password

      -p

      print out the key and IV used

      -P

      print out the key and IV used then immediately exit donrsquot

      do any encryption or decryption

      -bufsize number

      set the buffer size for IO

      -nopad

      disable standard block padding

      -debug

      3 Symmetrische Verschlusselungsverfahren

      31 Feistel-Chiffren

      Aus der Wikipedia (unter GNU Free Documentation License)

      Feistel-Chiffre (auch als Feistelnetzwerk bezeichnet) ist eine Block-Chiffre Ein Mitarbeitervon IBM Horst Feistel gilt als der Erfinder dieser Chiffre Er arbeitete mit anderen am sogProjekt rdquoLuciferldquo dessen Ziel es war eine effiziente Verschlusselungstechnologie zu entwi-ckeln Die Feistel-Chiffre war spater dann die Grundlage fur den DES-Algorithmus

      Viele moderne symmetrische Verschlusselungsalgorithmen basieren auf Feistelnetzwer-ken Dies ruhrt ua auch daher dass die Struktur von sehr vielen Kryptografen analysiert undfur gut befunden wurde

      12

      Wie es der Name rdquoBlock-Chiffreldquo schon nahe legt wird der Klartext zuerst in einzelneBlocke zerlegt Die Groszlige dieser Blocke kann frei gewahlt werden ublich sind oftmals Vielfa-che von 64 Bit

      Jeder dieser Blocke wird danach in zwei gleichgroszlige Halften (L0 und R0) geteilt und inmehreren Runden mit verschiedenen Schlusseln verschlusselt Nach den Runden werden dieHalften wieder zusammen gesetzt

      Innerhalb der i-ten Runde (i ist die Nummer der aktuellen Runde und reicht von 1 bis n)wird folgende Formel angewendet

      Li = Riminus1

      Ri = Liminus1 oplus f (Riminus1Ki)

      Dabei bildet f die sog Runden- oder Transformationsfunktion und Ki ist der jeweilige Runden-schlussel Der verschlusselte Text am Ende der Runden ist die Zusammenfuhrung von (LnRn)

      Feistelnetzwerke ermoglichen eine Entschlusselung ohne dass die Umkehrfunktion von fbenotigt wird Will man einen Geheimtext dechiffrieren wendet man die obige Formel leichtmodifiziert an

      Riminus1 = Li

      Liminus1 = Ri oplus f (Riminus1Ki)

      13

      (Quelle httpenwikipediaorgwikiImageFeistelpng)

      32 DES - Data Encryption Standard

      DES ist eine 64 Bit Block-Chiffre mit einer festgelegten Schlussellange von 56 Bit Die Funk-tionsweise entspricht einem 16-Runden Feistel-Netzwerk DES ist der erste Verschlusselungs-Algorithmus der weite Verbreitung fand und dessen Spezifikation offentlich zuganglich ist Erwurde in den 70er Jahren entwickelt und ist im amerikanischen Standard FIPS 46-2 beschrieben

      14

      321 Schlusselauswahl

      Zunachst steht nominal ein 64-Bit Schlussel zur Verfugung Von diesem ist jedoch je ein Bit proByte als Paritatsbit deklariert so dass 56 Bit effektives Schlusselmaterial ubrigbleiben Diese 56Bit werden in 2 mal 28 Bit aufgeteilt die in jeder der 16 Runden um 1 oder 2 Bit rotiert werdeninsgesamt um 28 Bit so dass am Ende wieder das Original vorliegt Aus der Konkatenation derbeiden Halften wird in jeder Runde ein 48-Bit Rundenschlussel ausgewahlt

      (Quelle httpenwikipediaorgwikiImageDES-key-schedulepng)

      15

      322 Funktionsweise

      Die so gewonnenen Rundenschlussel ki werden fur die Runden der Feistelchiffre genutzt E(k1 k2 k16m) =

      cE(k16 k15 k1 c) = mD(k1 k2 k16 c) = E(k16 k15 k1 c) = mJeder 64 Bit Eingabe-Block wird in zwei 32 Bit Blocke (L und R) aufgeteilt und weiterverarbei-tet L und R werden in jeder Runde durch eine festgelegte Permutation E auf 48 Bit ausgedehntanschlieszligend mit dem Rundenschlussel verknupft mittels einer weiteren rundenspezifischenPermutation S wieder auf 32 Bit komprimiert und dann schlieszliglich noch einer weiteren festge-legten Permutation P unterzogenLi = Riminus1Ri = Liminus1 oplus f (Riminus1Ki) wobei f (Riminus1Ki) = P(S (E(Riminus1) oplus Ki))

      rechts Feistelstruktur (Quelle httpenwikipediaorgwikiImageDES-main-networkpng)

      links F Funktion (Quelle httpenwikipediaorgwikiImageDES-f-functionpng)

      16

      (Quelle httpdewikipediaorgwikiBildDES_resizepng)

      323 Schwachstellen und Unsinnigkeiten

      bull Die Anfangliche Permutation der Klartexteingabe sollte Softwareimplementation erschwe-ren Per Hardware ist diese sehr einfach universell verwendbare Rechner hatten in den70er Jahren jedoch noch Probleme mit so etwas

      bull Das Paritatsbit ist eine Schwachstelle da es - soweit es gesetzt ist - ein Durchmustern desSpeichers nach dem Schlussel erlaubt Gesucht wird dann nach dem relativ ungewohn-lichen Auftreten von 8 nahe bei einander liegenden Byte bei denen je das letzte Bit dieParitat angibt

      17

      bull Mit heutigen Rechnern ist es moglich einen 56-Bit Schlussel mittels brute force zu knackenDie Lange des Schlussels ist bei DES aber auf diesen Wert festgelegt

      bull Es wird vermutet dass die ldquomagischenrdquo S-Permutationen uber deren Qualitat nichts be-wiesen ist eine Hintertur darstellen da die NSA hierbei ihre Finger im Spiel hatte Eskonnte jedoch nie bewiesen werden

      324 spezielle Optionen bei openssl

      bull Option -nopad Schaltet Auffullung der letzten Bits zu Block von 64 Bits aus Auch wenndie Nachricht genau in 64 Bit Blocken einteilbar ist wird ein 64 Bit Padding Block an-gehangtDer Block besteht aus x mal der Zahl x So lasst er sich beim Entschlusseln wieder entfer-nen

      bull Option -nosalt Schaltet die Voranstellung des salt-Werts ausDer salt-Wert verlangert die Nachricht um insgesamt 16 Bytes Salted__ gefolgt von 8Bytes salt-WertAus Passwort und salt-Wert wird der Key fur die eigentliche Verschlusselung erzeugt Da-mit wird verhindert dass Schlussel wegen Mehrfachverwendung von Passwortern leich-ter zu brechen sind Gleiche Passworter beim Aufruf der Verschlusselung mit OpenSSLfuhren durch den zufalligen salt-Wert zu verschiedenen Keys bei der Verschlusselung

      bull Neben des gibt es auch des-ede und des-ede3 Diese bieten einen gewissen Schutzgegen Bruteforce-AngriffeTDES (Triple DES) DES3 DES-EDE (Encrypt Decrypt Encrypt) mit effektiv 168 Bit

      E3DES(k1 k2 k3m) = EDES(k3DDES(k2 EDES(k1m)))

      In OpenSSL arbeitet des-ede mit zwei Schlusseln

      E(K1)D(K2) E(K1)

      Um in OpenSSL 3 Schlussel angeben zu konnen muss man des-ede3 verwenden Ver-wendet man bei des-ede zweimal oder bei des-ede3 dreimal den selben Schlusselerhalt man eine einfache DES-Verschlusselung So kann man Abwartskompatibilitat er-reichen

      bull In OpenSSL konnen DES Verschlusselungen mit folgenden Befehlen aufgerufen werden

      ndash -desndash -des-cbcndash -des-cfbndash -des-ecbndash -des-edendash -des-ede-cbc

      18

      ndash -des-ede-cfbndash -des-ede-ofbndash -des-ede3ndash -des-ede3-cbcndash -des-ede3-cfbndash -des-ede3-ofbndash -des-ofbndash -des3ndash -desxndash -desx-cbc

      OpenSSL des-ecb -salt fur den Schlusseleintrag aus Passphrasepassphrase = 12345prime +prime S alt minusWert rarr K

      12345srarr

      264 Moglichkeiten

      Damit man keine Tabelle generieren kann die aus den schwachen Schlussel besteht denn fur12345 gibt es 264 Moglichkeiten aufgrund des salts

      (PC12345)(PC1234)

      P- (Klartext) bekanntS- (Saltwert) bekanntC- (Chiffretext) unbekanntwelcher Schlussel wurde verwendet

      112123

      1234

      rarr K

      s1 s2 s3c1 c1 c1c12 c12 c12c123 c123 c123c1234 c1234 c1234

      Dazu kommt aber spater noch mehr

      19

      325 DESECB - Electronic Code Book

      Die Eingabe wird in Blocke aufgeteilt und jeder Block fur sich verschlusselt Dieses Verfahrenist potentiell unsicher weil in der Abfolge der Blocke eine Struktur enthalten ist die der Algo-rithmus nicht verbirgt Ein Fehler beim Ver- oder Entschlusseln eines Blockes fuhrt allerdingsauch nur zu einem einzigen verlorenen Block

      To do Initialisierungsvektor

      (Quelle httpenwikipediaorgwikiImageEcb_encryptionpng)

      (Quelle httpenwikipediaorgwikiImageEcb_decryptionpng)

      BemReicht fur einen Block dann wird auch kein Initialisierungsvektor benotigt

      20

      Man kann fur den Initialisierungsvektor auch einen vorher vereinbarten Wert (zB Unix Sekun-den) wahlen

      Aus der Wikipedia (unter GNU Free Documentation License)

      Die 64-bit Klartextblocke werden nacheinander und getrennt voneinander kontextfrei ver-schlusselt Dies ist die einfachste Anwendungsmoglichkeit eines Block-Chiffre

      326 DESCBC - Cipher Block Chaining

      Aus der Wikipedia (unter GNU Free Documentation License)

      Vor der Verschlusselung eines Klartextblockes wird der bereits verschlusselte vorhergehendeBlock hinzuaddiert Auf den ersten Klartextblock der ja keinen Vorganger besitzt wird stattdessen ein Initialisierungsvektor der geheim gehalten werden muss addiert Dadurch entstehteine Verkettung (engl chain) der Blocke Trotz dieser Verkettung ist die CBC-Verschlusselung

      rdquoselbstkorrigierendldquo FehlerManipulationen in einem Block wirken sich bei der Entschlusse-lung nur auf den fehlerhaftenmanipulierten und den nachsten Block ausMan kann relativ einfach beliebige Blocke des Geheimtextes einzeln entschlusseln da zusatz-lich zum Schlussel nur der vorhergehende (verschlusselte) Block benotigt wird

      Fehler im c breiten sich nicht aus beim Entschlusseln Ein Initialisierungsvektor IV fur erstenBlock wird benotigt

      bull Klartext oplus Cipher und dann Encryption

      bull Vorteil Muster im Klartext werden zerstort

      bull Nachteil Fehler im Ciphertext eines Blocks verandern Bits an genau der Stelle im folgen-den Block (aber nur in diesem spatere Blocke sind nicht betroffen) so kann gezielt eineStelle im Block angegriffen werden (siehe Skizze)

      To do Skizze zur Fehlerausbreitung erlautern

      21

      m1 mlowast2 mlowast3

      IV oplus

      oplus

      oplus

      oplus

      DES

      DES

      DES

      DES

      c1

      DDc2

      DDc3

      DDc4

      EE

      Vergleich DESECB und DESCBC

      Zum Vergleich bietet es sich an ein Bild (Abbildung 1) mit DES im ECB- und im CBC-Moduszu verschlusseln Deutlich zu erkennen ist dass die Struktur im ECB-Modus (Abbildung 2)erhalten bleibt wahrend sie bei CBC (Abbildung 3) vollkommen zerstort wird

      Abbildung 1 Bild im Klartext (24 Bit RGB mit 182 times 183 Pixeln)

      Abbildung 2 Bild aus Abbildung 1 ECB-verschlusselt

      22

      Abbildung 3 Bild aus Abbildung 1 CBC-verschlusselt

      327 DESOFB - Output Feed Back

      Aus der Wikipedia (unter GNU Free Documentation License)

      In diesem Modus werden die Klartextblocke nicht direkt mit DES verschlusselt sondern DESerzeugt einen pseudozufalligen Bitstrom der dann ohne Ubertrag (vgl XOR) auf den Klartextaddiert wird Dazu muss DES mit einem kontinuierlichen Eingabestrom gefuttert werden AlsEingabe von DES dient hier ein Schieberegister dass zunachst mit einem Initialisierungsvektorgeladen wird Anschlieszligend wird immer ein Teil der Ausgabe von DES in dieses Registerhineingeschoben und so als Eingabe wiederverwendet (daher output feedback)

      bull Output der Encrpytion als Input fur Encryption erzeugt Pseudozufallsstrom oplus Klartext

      bull Vorteil Beliebige Blockgroszligen moglich wie Stromchiffre verwendbar

      bull Nachteil Durchsatz verringert sich auf neue Blockgroszlige pro erzeugtem Block kann abervorberechnet werden

      bull Vorteil Ein Bit Fehler fuhrt zu nur einem invertierten Bit nach der Entschlusselung

      bull Nachteil Keine Selbstsynchronisierung moglich wenn Bits komplett verloren gehen

      23

      (Quelle httpdewikipediaorgwikiBildOfb_encryptionpng)

      (Quelle httpdewikipediaorgwikiBildOfb_decryptionpng)

      328 DESCFB - Cipher Feed Back

      Aus der Wikipedia (unter GNU Free Documentation License)

      Identisch mit OFB aber statt die Ausgabe des DES wieder als Eingabe zu verwenden wirdder Kryptotextstrom als Eingabe wiederverwendet

      bull Cipher als Input fur Encryption erzeugt Pseudozufallsstrom oplus Klartext

      24

      bull Vorteil Beliebige Blockgroszligen moglich wie Stromchiffre verwendbar

      bull Nachteil Durchsatz verringert sich auf neue Blockgroszlige pro erzeugtem Block

      (Quelle httpdewikipediaorgwikiBildCfb_encryptionpng)

      (Quelle httpdewikipediaorgwikiBildCfb_decryptionpng)

      329 CTR Mode CCM

      Dieser Modus spielt fur DES keine Rolle Ist auch nicht in OpenSSL implementiert Aber die-se Betriebsart ist fur 128 Bit Verschlusselungen ist zum Beispiel vom BSI als sicher eingestuftworden rsquoDie Betriebsart der Zukunftrsquo

      Wird zum Beispiel fur W-LAN Verschlusselung verwendet

      25

      Eingabe sind Klartext mit einen Zahler

      ctr0 rarr Block rarr oplusT rarr c0ctr1 rarr Block rarr oplusp1 rarr c1ctr2 rarr Block rarr oplusp2 rarr c2ctr3 rarr Block rarr oplusp3 rarr c3

      ctrn rarr Block rarr opluspn rarr cn

      Standardisiert als rsquoSP 800-38crsquo

      (N A P) mit N Zufallswerten A Assoziierte Daten P Klartext produziert Blocke B0 B1 Br

      httpcsrcnistgovpublicationsnistpubs800-38CSP800-38C_updated-July20_

      2007pdf

      To do algorithmus uberarbeiten ubersetzen

      1 Apply the formatting function to (N A P) to produce the blocks B0 B1 Br

      2 Set Y0 = CIPHK(B0)

      3 For i = 1 to r do Yi = CIPHK(Bi oplus Yiminus1)

      4 Set T = MS BTlen(Yr)

      5 Apply the counter generation function to generate the counter blocks Ctr0Ctr1 Ctrmwhere m = dPlen128e

      6 For j = 0 to m do S j = CIPHK(Ctr j)

      7 Set S = S 1||S 2|| ||S m

      8 Return C =(P oplus MS BPlen(S )

      )||(T oplus MS BTlen(S 0)

      )

      T stellt einen Prufwert dar

      3210 TEA-Algorithmus

      To do uberarbeiten

      26

      Nicht in OpenSSL implementiert Universitarer Algorithmus

      (Quelle httpdewikipediaorgwikiBildTEA_InfoBox_Diagrampng)

      Man sieht die Feistel Idee allerdings die grunen Quadrate sind Additionen modulo 64 Bit

      To do erlautern Pfeilspitzen

      Es gibt ein Extended TEA struktur recht ahnlich aber beim Algorithmus an der Stelle

      Byte 0 28 minus 1 | 28ii

      b middot k = (b middot k mod (28 + 1)) mod 28 Es gibt auch eine Inverseb middot K rarr c rarr c middot kprime = b

      geht nur bei 22 + 1 24 + 1 28 + 1 216 + 1

      27

      3211 DES-X

      In OpenSSL desx KK1K2

      EncK(m oplus K2) oplus K1 = DES minus X(m)

      c1 oplus c2 = EncK(m1 oplus K2) oplus EncK(m2 oplus K2)

      Ist unsymetrisch Hat sich nicht so ganz durchgesetzt

      33 IDEA International Data Encryption Algorithm

      IDEA gilt als sehr sicher ist schneller als DES bei Hardwareimplementation tauchte zuerst alsPES auf Unterschied PES und IPES ist die untere XOR-Vertauschung (siehe Wikipedia Skiz-ze) die es im PES nicht gab War nur zur privaten Nutzung frei ansonsten patentiert weshalber nicht so verbreitet war IDEA verschlusselt 64-Bit Eingabe-Blocke in 64-Bit Ausgabe-Blockeund verwendet dabei einen 128-Bit Schlussel Der Algorithmus basiert im wesentlichen auf 8identischen Runden die den Runden einer Feistel-Chiffre ahnlich sind und einer abschlieszligendenTransformation der Ausgabe In jeder Runde werden 6 16-Bit Subschlussel in der Ausgaben-Transformation weitere 4 davon verwendet Samtliche Subschlussel werden aus dem Original-schlussel berechnet Die 64 Bit Eingabe jeder Runde werden dabei als 4 16-Bit-Blocke verar-beitet Der Algorithmus benutzt verschiedene algebraische Operationen

      bull Polynomaddition mod 2 XOR (blau-verbraucht wenig Strom)

      bull Addition mod 216 ADD (grun-verbraucht wenig Strom etwas Zeit - Uberlauf wirdignoriert)

      bull Multiplikation mod 216︸︷︷︸prim

      +1 MULT (rot-viel Strom)

      Aus der Wikipedia (unter GNU Free Documentation License)

      Der IDEA-Algorithmus (International Data Encryption Algorithm) wurde 1990 als ein Ge-meinschaftsprojekt zwischen der ETH Zurich von James L Massey und Xueija Lai und derAscom Systec AG entwickelt IDEA ist ein symmetrischer Algorithmus und gehort zu denBlockchiffren Der Algorithmus benutzt einen 128-Bit langen Schlussel (DES nur 64 Bit da-von sind 8 Bits fur den Paritats-Check vorgesehen so dass die eigentliche Schlussellange nur56 Bits betragt)

      Bei der Verschlusselung wird der Klartext in 64 Bit groszlige Blocke unterteilt und derSchlussel in Teilstucke zu je 16 Bit zerlegt Die Verschlusselung geschieht durch Kombina-

      28

      tion der logischen Operation XOR der Addition modulo 216 und der Multiplikation modulo216+1 Die Kombination dieser drei Operationen aus unterschiedlichen algebraischen Gruppensoll ein hohes Maszlig an Sicherheit gewahrleisten

      Das Verfahren ist dazu optimiert Angriffen durch differentielle Kryptoanalyse zu wider-stehen

      Es gibt bei IDEA leider eine ganze Reihe von schwachen Schlusseln die sich in zweiKlassen einteilen lassen Die erste Klasse umfasst 232 schwache Schlussel Sie sind insofernschwach als man sie mit gewahltem Klartext nachweisen kann Danach ist ein Brute ForceAngriff selbst fur Privatpersonen mit alteren PCs machbar Die zweite Klasse umfasst sogar265 schwache Schlussel Bei diesen Schlusseln kann man mit nur 20 gewahlten Klartexten72 Bit des Schlussels ermitteln Die restlichen 56 Bit muss man mit Brute Force ermittelnAllerdings liegt die Wahrscheinlichkeit dafur einen schwachen Schlussel zu erwischen bei einszu 263 oder eins zu 9 Trillionen

      Weil die Ascom Systec AG an der Entwicklung des Algorithmus beteiligt war halt siedie Patente fur IDEA In Europa verfallt der Patentschutz am 16052011 In den USA wirdder Algorithmus bereits ein Jahr fruher kostenlos nutzbar sein Da das Patent in der Schweizerteilt wurde greift das Patent auch in Deutschland unabhangig davon dass in DeutschlandSoftwarepatente nicht legal sind

      Der Algorithmus beruht wesentlich darauf dass 216 + 1 eine Primzahl ist Deshalb lasst sichIDEA nicht auf andere Blocklaengen adaptieren

      331 Schlusselauswahl

      Aus den 128 Bit des ursprunglichen Schlussels werden in insgesamt 52 16-Bit Teilschlussel er-zeugt Dabei werden aus dem aktuellen Schlusselwert (initial der ursprungliche 128-Bit Schlussel)8 der Teilschlussel durch aufteilen gewonnen Dann wird der aktuelle Schlussel subsequent um25 Bit nach links rotiert und so je ein neuer aktueller Schlussel erzeugt der wieder zu Teil-schlusseln aufgeteilt wird - solange bis alle Teilschlussel belegt sind Es werden 6 middot 16-Bit ineiner Runde verbraucht in 8 Runden also 48 Teilschlussel Hinzu kommen 4 Teilschlussel dienach der letzten Runde fur weitere Operation verwendet werden Insgesamt werden also 52Teilschlussel mit je 16-Bit aus 128-Bit Rohschlussel erzeugt und auch verbraucht rarr 832-BitSchlusselmaterial

      332 Funktionsweise

      In jeder Runde r finden folgende Transformationen statt

      1 X1 = X1 MULT Kr1 X4 = X4 MULT Kr

      4 X2 = X2 ADD Kr2 X3 = X3 ADD Kr

      3

      2 t0 = Kr5 MULT (X1 XOR X3) t1 = Kr

      6 MULT (t0 ADD (X2 XOR X4)) t2 = t0 ADD t1

      29

      3 X1 = X1 XOR t1 X4 = X4 XOR t2 a = X2 XOR t2 X2 = X3 XOR t1 X3 = a

      Dabei sind X1 bis Xi die 16-Bit Blocke die aus der 64 Bit Eingabe gewonnen wurden Kri ist der

      Teilschlussel mit der Nummer r middot 6 + i Die abschlieszligende Transformation ergibt sich wie folgtY1 = X1 MULT K9

      1 Y4 = X4 MULT K94 Y2 = X3 ADD K9

      2 Y3 = X2 ADD K93

      Dabei sind die Yi 4 16-Bit Worter die die Ausgabe darstellen

      (Quelle httpdewikipediaorgwikiBildInternational_Data_Encryption_Algorithm_InfoBox_Diagrampng)

      bull In OpenSSL konnen IDEA Verschlusselungen mit folgenden Befehlen aufgerufen wer-den

      ndash -ideandash -idea-cbcndash -idea-cfbndash -idea-ecbndash -idea-ofb

      333 Pseudocode-multiplikation

      To do als Pseudocode machen

      30

      if(a==0)return ((216 +1)-b) mod 216

      if(a==0)return ((216 + 1)-a) mod 216

      if(a middot b) mod 216 gt (a middot b) div 216 return (a middot b) mod 216 minus (a middot b) div 216

      if(a middot b) mod 216 le (a middot b) div 216 return (216 + 1) + (a middot b) mod 216 minus (a middot b) div 216

      wenn a==0 rArr a = 216 equiv minus1 mod 216

      334 Schwachstellen

      Bei schlechter implementation konnen die XOR-Berechnungen am Stromverbrauch erkanntwerden Es konnen Ruckschlusse auf bestimmte Werte (insbesondere Null) gemacht werdenNach 218 Testrechnungen kann der Klartext bestimmt werdenSolche Angriffe nennt man Seiten Kanal Atacken in diesem Fall ist der Stromverbrauch derSeitenkanal (Zeitverbrauch spielt beim Idea keine Rolle)Bei guter Implementation gilt aber der Algorithmus als sicher

      To do Skizze Stromverbrauch

      34 Blowfish

      Blowfish ist eine sehr schnelle 64-Bit 16-Runden Block-Chiffre die 1993 von Bruce Schneiererfunden wurde Die Lange der Schlussel ist variabel zwischen 32 und 448 Bit Als Teilschlusselwerden aus dem Ausgangsschlussel eine P-Box mit 18 mal 32 Bit und 4 S-Boxen mit 256 mal32 Bit generiert (P1 P18) (S 1 S 4)

      Blowfisch Algorithmus von Bruc Schreier ist vollig Patentfrei dies hat sehr zu seiner Verbrei-tung beigetragen

      31

      F

      F

      14 weitere Runden

      (Quelle httpdewikipediaorgwikiBildBlowfish_structure_(de)svg)

      P1 P18 die XOR auf den Klartext kommen

      Schlussel-P1 P18 und

      -S-Boxen

      32

      (Quelle httpenwikipediaorgwikiImageBlowfishFFunctionsvg)

      S ist 256 32 Bit WerterArr 4 middot 256 middot 32 Werte rArr kann man sich nicht merken also wird P1 P18 S 1 S 4 werdenals Hexadezimalwerte von π gewahlt

      (K)n oplus (P1 P18)

      Der so initialisierte Algorithmus wird auf den Klartext 0 0︸ ︷︷ ︸64

      angewendet Das Ergebnis ersetzt

      (P1 P2) Der so initialisierte Algorithmus wird auf den Klartext 0 0︸ ︷︷ ︸

      64

      angewendet Das Ergebnis

      ersetzt (Pi Pi+1) Der so initialisierte Algorithmus wird auf den Klartext 0 0︸ ︷︷ ︸64

      angewendet

      Das Ergebnis ersetzt (S 1 S 2)

      Auf kosten eines sehr aufwendigen Schlusselmanagment wird ein schneller Algorithmus er-reicht Fur Prozessoren mit wenig Speicher unpraktisch

      341 Initialisierung

      Teilschlusselmanagement Sehr viele Teilschlussel werden aus wenig Schlusselmaterial gene-riert

      1 P und S werden mit einer Hexadezimal-Expansion von Pi initialisiert

      2 Der Schlussel als Sequenz von 32-Bit-Werten wird mittels XOR auf die P-Box addiertwobei er eventuell ldquowiederholtrdquo wird um die ganze Lange der Box abzudecken P1 oplus K1P2 oplus K2 P18 oplus K18

      3 Sowohl die P-Box als auch die S-Boxen werden verschlusselt

      33

      bull Verschlussle mit Blowfish den Nullstring rarr 64-Bit Ausgabe = 2 32-Bit = neueP1 P2

      bull Verschlussle mit Blowfish (Pi Pi+1) die Ausgabe verwende als (Pi+2 Pi+3) Wieder-hole diesen Schritt fur i von 1 bis zum Ende der P-Boxbull Anschlieszligend S 10 S 11 rarr S 12 S 13 Im gleichen Verfahren wie bei der P-Box

      werden die S-Boxen verschlusselt

      Insgesamt ist so ein langer Vorlauf notig bevor die eigentliche Verschlusselung der Daten be-ginnt

      342 Verschlusselung

      In jeder Runde r (insgesamt 16 Runden) wird folgendes Verfahren angewendet

      1 Der 64-Bit Eingabeblock wird in zwei 32-Bit-Halften L und R zerlegt

      2 L = L oplus Pr R = R oplus f (L)f (L) ist dabei folgendermaszligen charakterisiert Zunachst wird das Argument L als Konka-tenation von 4 8-Bit Vektoren a b c und d aufgefasst die als naturliche Zahlen zwischen0 und 255 verwendet werden

      f (a b c d) = ((S 1a + S 2b mod 232 oplus S 3c) + S 4d mod 232

      3 L und R werden vertauscht konkateniert und als Eingabe fur die nachste Runde verwen-det

      Nach der letzten Runde wird noch R = R oplus P17 und L = L oplus P18 durchgefuhrt

      Aus der Wikipedia (unter GNU Free Documentation License)

      Blowfish ist ein sehr schneller und nicht patentierter Algorithmus der besonders auf 32-Bit-Prozessoren eine exzellente Performance bietet Ein weiterer Vorteil ist seine variableSchlussellange von 32 bis zu 448 Bit Die Blockgroszlige betragt 64 Bit

      bull In OpenSSL konnen Blowfish Verschlusselungen mit folgenden Befehlen aufgerufen wer-den

      ndash -bfndash -bf-cbcndash -bf-cfbndash -bf-ecbndash -bf-ofbndash -blowfish

      34

      35 AES Advanced Encryption Standard

      351 Wiederholung-Byteoperation

      Wir hatten folgende Byteoperationen kennengelernt

      bull Multiplikation mod 256 bzw mod 257 ohne 0

      bull Addition mod 256

      bull XOR-Addition (oplus)

      Die Operationen werden in der dementsprechenden Basisdarstellung modulo 256 durchgefuhrt

      352 Uberblick

      AES wurde im Standard FIPS 197 festgeschrieben

      Aus der Wikipedia (unter GNU Free Documentation License)

      AES ist eine Block-Chiffre dessen Blocklange und Schlussellange unabhangig voneinanderdie Werte 128 192 oder 256 Bit erhalten kann Jeder Block wird zunachst in eine zweidimen-sionale Tabelle mit vier Zeilen geschrieben dessen Zellen ein Byte groszlig sind Die Anzahl derSpalten variiert somit je nach Blockgroszlige von 4 (128 Bit) bis 8 (256 Bit) Zum Beispiel fur 16Byte werden die Bytes wie folgt eingetragen

      1 5 9 132 6 10 143 7 11 154 8 12 16

      Jeder Block wird nun nacheinander bestimmten Transformationen unterzogen Aber anstattjeden Block einmal mit dem Schlussel zu verschlusseln wendet AES verschiedene Teile desSchlussels nacheinander auf den Klartext-Block an Die Anzahl dieser Runden (r) variiertund ist von Schlussellange (k) und Blockgroszlige (b) abhangig Je nach Blocklange b undSchlussellange k wird die Anzahl der Runden bestimmt (10 12 oder 14)

      r b=128 b=192 b=256k=128 10 12 14k=192 12 12 14k=256 14 14 14

      S-BoxenEine Substitutionsbox (S-Box) dient als Basis fur eine monoalphabetische Verschlusselung

      35

      Sie ist meist als Array implementiert und gibt an welches Byte wie getauscht wird DieS-Box in AES basiert auf einem mathematischen Zusammenhang und ist somit fest imAlgorithmus implementiert Doch dies ist kein Schwachpunkt da die S-Box lediglich zur Ver-mischung der Bytes in Kombination mit weiteren Operationen und dem Schlussel genutzt wird

      Ablauf

      bull Schlusselexpansion (nach Fips-197 S23 Kapitel 52)

      Der Schlussel rsquokeyrsquo wird auf den Anfang des expandierten Schlussels rsquowrsquo ubernommen(i lt Nk) Danach berechnet sich w[i] wie folgt

      w[i] =

      w[i minus 1] i mod Nk 0S ubWord(RotWord(w[i minus 1])) oplus Rcon i mod Nk = 0S ubWord(w[i minus 1]) Nk gt 6i (mod N)k = 4

      (1)

      w[i] = w[i] oplus w[i minus Nk] (2)

      Der zugehorige Quelltext (Fips-197 entnommen)

      KeyExpansion(byte key[4Nk] word w[Nb(Nr+1)] Nk)

      begin

      word temp

      i = 0

      while (i lt Nk)

      w[i] = word(key[4i] key[4i+1] key[4i+2] key[4i+3])

      i = i+1

      end while

      i = Nk

      while (i lt Nb (Nr+1)]

      temp = w[i-1]

      if (i mod Nk = 0)

      temp = SubWord(RotWord(temp)) xor Rcon[iNk]

      else if (Nk gt 6 and i mod Nk = 4)

      temp = SubWord(temp)

      end if

      w[i] = w[i-Nk] xor temp

      i = i + 1

      end while

      end

      36

      Fur Beispiele siehe Fips-197 Appendix A1

      bull Vorrunde

      ndash KeyAddition (XOR-des Rundenschlussels)

      bull Verschlusselungsrunden

      ndash Substitution - Jedes Byte b wird ersetzt durch bprime = 1b wie bei Polynommultiplikati-

      on Weiter wird jedes Byte als ein 8-dimensionaler Vektor aufgefasst und folgendeOperation angewendet

      b1b2

      b8

      =

      1 0 0 0 1 1 1 11 1 0 0 0 1 1 11 1 1 0 0 0 1 11 1 1 1 0 0 0 11 1 1 1 1 0 0 00 1 1 1 1 1 0 00 0 1 1 1 1 0 00 0 0 1 1 1 1 0

      middot

      b1b2

      b8

      +

      c1c2

      c8

      ndash ShiftRow - Erste Zeil wird nicht verschoben die zweite Zeil um eins die dritteZeile um zwei die vierte um drei (siehe Wikipedia)

      ndash MixColumn - Zu jeder Spalten

      b1b2b3b4

      des Blocks wird folgende Polynommultiplika-

      tion durchgefuhrt

      (b1x3 + b2x3 + b3x + b4) middot (03X3 + 04X2 + 01X + 02) mod (X4 + 1)

      und die Koeffizienten in gleicher Weise wieder in die jeweilige Spalte eingetragenWobei (X4 + 1) das Inverse (0BX3 + 0DX2 + 09X + DE) hat

      ndash KeyAddition

      bull Schlussrunde

      ndash Substitutionndash ShiftRowndash KeyAddition

      Fur die Entschlusselung gehe die oben angegebene Reihenfolge ruckwarts durch Beachtedabei dass ShiftRow und Subst vertauschbar sind Bei ShiftRow wird in umgekehrter Weiseverschoben Ebenso sind KeyAdd und MultColumn vertauschbar wenn der Rundenschlusselmodifiziert wird (B(X) lowast (S (X) oplus K(X)) = S (X) lowast B(X) oplus B(X) lowast K(X) also ist der modifiziertSchlussel B(X) lowast K(X)) Die Entschlusselung entspricht also der Verschlusselung mit modifi-zierten Schlusseln

      37

      353 mathematische Grundlagen

      Speziell der Schritt Mix-Column beinhaltet einige interessante mathematische Uberlegungen Ersoll zu einer moglichst effektiven Vermischung der 32 Bit in jeder Spalte fuhren die die Suchevon dem unverschlusselten Text ahnlichen Mustern im verschlusselten Text erschwert Dabeiwerden arithmetische Operationen aus zwei algebraischen Gruppen angewandt

      1 Die Gruppe der Bytes F82 Jedes Byte b7b6b0 wird als ein Polynom b7 middot X7 + b6 middot X6 +

      b0 middot X0 angesehen Diese Polynome konnen addiert und multipliziert werden Damitdabei der Werteraum des Byte nicht verlassen wird finden diese Operationen modulom(X) = X8 + X4 + X3 + X +1 statt m ist dabei irreduzibel es gilt also ggT (b(X)m(X)) = 1fur jedes Byte b Somit ist F2[X]m(X) ein Korper und die Multiplikation ist abgeschlos-sen Es gilt fur jedes Paar von Bytes b c eindeutig b middot c = d rarr dc = b Multiplikationenkonnen also eindeutig ruckgangig gemacht werden so dass eine Entschlusselung moglichistBei Zahlen die groszliger als m(X) sind werden also durch die modulo Operation die Koeffi-zienten von x4 x3 x1 x0 verandertBeispiel in Magma

      Q = IntegerRing(2)

      Pltxgt = PolynomialRing(Q)

      f=xˆ7+1

      g=xˆ3+xˆ2+x+1

      fg

      fg mod(xˆ8 +xˆ4+xˆ3+x+1)

      IsPrime(xˆ8 +xˆ4+xˆ3+x+1)

      Ausgabe

      xˆ10 + xˆ9 + xˆ8 + xˆ7 + xˆ3 + xˆ2 + x + 1

      xˆ7 + xˆ6 + xˆ3 + xˆ2 + x

      true

      2 Die Gruppe der Worter F4256 Die 4 Bytes einer Spalte w3w2w1w0 werden wieder als Po-

      lynom aufgefasst w3 middot X3 + w2 middot X2 + w1 middot X + w0 Diese konnen wieder multipliziertund addiert werden wobei die arithmetischen Operationen auf den jeweiligen Bytes in F8

      2stattfinden Die Operationen in F4

      256 werden modulo M(X) = X4 + 1 ausgefuhrt M(X) istzwar nicht irreduzibel aber da der Algorithmus nur eine beschrankte Gruppe von Operan-den verwendet bleiben auch hier alle Operationen invertierbar

      Mix-Column multipliziert (in F4256) nun jede Spalte mit c(X) = 3 middot X3 + X2 + X + 2 Die so

      beschriebene lineare Funktion erreicht beweisbar eine groszlige Diffusion der Eingabe

      38

      bull In OpenSSL konnen AES Verschlusselungen mit folgenden Befehlen aufgerufen werden

      ndash -aes-128-cbcndash -aes-128-cfbndash -aes-128-ecbndash -aes-128-ofbndash -aes-192-cbcndash -aes-192-cfbndash -aes-192-ecbndash -aes-192-ofbndash -aes-256-cbcndash -aes-256-cfbndash -aes-256-ecbndash -aes-256-ofbndash -aes128ndash -aes192ndash -aes256

      36 RC4 Ronrsquos Cipher 4

      Geheimes Chiffreverfahren mit Strom-Chiffre von Ron Rivest 1987 Entstehungsjahr 1994 imNetz aufgetaucht 1999 tauchte im Internet ein Draft ARCFOUR (ARC4) auf der die gleichenErgebnisse lieferte

      Byte orientiert zwei Bytes m k dann wird berechnetm oplus k = cDer Algorithmus basiert auf S-Boxen (Permutationen)

      mdashmdashSkizze Seite 2b ganz oben

      PRG (Pseudo Random Generator)mdashmdashweitere Skizze

      Initialisierung K = L Bytes als Schlussel s[i] = i (identische Permutation)L = 1255 fur RC4 mit 40-Bit L = 5 mit 64-Bit L = 8 mit 128-Bit L = 16j = 0 fur i = 0255rarr j = ( j + s[i] + K[ j mod L]) mod 256

      Problem K-Masterkeyrarr salted key Initialwert (frei bekannt) HashInitial(K) = Kaktuell rarr RC4

      39

      Anfangsstucke von PRG RC4 sind nicht rdquorichtig zufalligldquo verraten viel uber KaktuellRegel fur RC4 Die ersten 256-Byte wegschmeiszligen

      Aus der Wikipedia (unter GNU Free Documentation License)

      RC4 (Ronrsquos Cipher 4) ist ein fur Software optimierter Stromchiffrierer welcher zur Ver-schlusselung von Daten eingesetzt wird Er wurde 1987 von Ronald L Rivest fur RSA DataSecurity Inc (heute RSA Security) entwickelt

      Der Algorithmus war sieben Jahre lang geheim (ldquosecurity by obscurityrdquo) bis 1994 derQuellcode anonym veroffentlicht wurde

      RC4 hat im Gegensatz zu DES eine variable Schlussellange Die Schlussellange kann biszu 2048 Bit betragen RC4 verschlusselt immer ein Byte auf einmal

      Er besteht aus einer so genannten S-Box die sich wahrend der Verschlusselung fortlau-fend andert Diese wird durch ein Passwort initialisiert das fur jede Verschlusselung einmaligsein muss Jedes Klartextzeichen wird XOR mit einem bestimmten vom Paszligwort abhangi-gen Zeichen aus der S-BOX verknupft Theoretisch sind somit ca 2 hoch 1700 verschiedeneZustande moglich

      Der Algorithmus ist sehr kompakt und funf- bis zehnmal schneller als der weitverbreite-te DES Deshalb findet der RC4 Algorithmus in einigen Echtzeit-Systemen Anwendung wiebeispielsweise Mobilfunk (Cellular Digital Packet Data) SSH (Secure Shell) WLAN (Wire-less LAN) oder den Dateiverschlusselungs-Programmen SecurePC und Cryptext Die Verar-beitungsgeschwindigkeit des DES ist jedoch selbst in kleinsten Mikrokontrollern meist ausrei-chend Der Schlussel beim DES und anderen Blockchiffren wie dem AES (CBC-Mode) kannim Gegensatz zum RC4 auch mehrfach verwendet werden Vergleichbare Stromchiffren wieSEAL sind vergleichbar schnell und gelten als sicher

      Aus der Wikipedia (unter GNU Free Documentation License)

      ubersetzt aus dem Englischen nach httpenwikipediaorgwikiRC4RC4 (oder ARCFOUR) ist die am weitesten verbreitete Stromchiffre und wird in vielen be-kannten Protokollen beispielsweise SSL oder WEP verwendet Trotzdem entspricht RC4 nichtmehr dem heutigen Sicherheitsstandard und manche Verwendungsweisen von RC4 fuhren zusehr unsicheren Kryptosystemen (zB WEP) Daher wird es nicht fur die Verwendung in neuenSystemen empfohlen Allerdings gibt es auch RC4-basierte Systeme die sicher genug fur denpraktischen Gebrauch sind

      361 Geschichte

      Aus der Wikipedia (unter GNU Free Documentation License)

      ubersetzt aus dem Englischen nach httpenwikipediaorgwikiRC4RC4 wurde 1987 von Ron Rivest von RSA Security erfunden Offiziell bedeutet die Abkurzung

      40

      ldquoRivest Cipher 4rdquo alternativ wird sie aber als ldquoRonrsquos Coderdquo verstanden (s auch die anderenRC-Algorithmen) Zunachst war RC4 ein Betriebsgeheimnis jedoch wurde im September1994 eine Beschreibung anonym auf der ldquoCypherpunksrdquo Mailingiste gepostet Es wurde baldin die scicrypt newsgroup weitergepostet und von dort auf viele Internet-Seiten verbreitetNachdem der Algorithmus nun bekannt ist ist er kein Betriebsgeheimnis mehr Der NameldquoRC4rdquo unterliegt jedoch weiterhin dem Markenschutz Zur Zeit sieht es so aus als seien ldquoinof-fiziellerdquo Implementationen zwar legal konnen aber nicht den Namen ldquoRC4rdquo verwenden Umdieses Problem zu umgehen wird RC4 oft als ldquoARCFOURrdquo bezeichnet RC4 wird inzwischenin einigen weit verbreiteten Verschlusselungsprotokollen und Standards unter anderem WEPund WPA fur WLAN Karten und SSL verwendet

      362 Beschreibung

      Aus der Wikipedia (unter GNU Free Documentation License)

      ubersetzt aus dem Englischen nach httpenwikipediaorgwikiRC4RC4 generiert einen pseudo-zufalligen Bitstrom (einen ldquoSchlusselstromrdquo) der bei der Ver-schlusselung mit dem Klartext mittels XOR verknupft wird Die Entschlusselung funktioniertgenauso Um den Schlusselstrom zu generieren benutzt die Chiffre einen internen Zustand deraus zwei Teilen besteht

      1 eine Permutation aller 256 moglichen Bytes (wird im Folgenden als S bezeichnet)

      2 zwei 8-Bit Index-Zeiger (mit i und j bezeichnet)

      Die Permutation wird mit einem Schlussel von variabler Lange ublicherweise zwischen 40und 256 Bit initialisiert wobei der Schlusselerzeugungs-Algorithmus verwendet wird An-schlieszligend wird der Bit Strom durch den Pseudo-Zufalls-Algorithmus generiert

      363 Der Pseudo-Zufalls-Algorithmus

      Aus der Wikipedia (unter GNU Free Documentation License)

      ubersetzt aus dem Englischen nach httpenwikipediaorgwikiRC4In jeder Iteration wird der Zustand verandert und ein Byte des Schlusselstroms ausgegebenDabei wird i inkrementiert der Wert von S an der Stelle i auf j addiert S [i] und S [ j] vertauschtund der Wert von S an der Stelle S [i]+S [ j] mod 256 ausgegeben Jeder Wert von S wird dabeimindestens einmal alle 256 Iterationen vertauscht In Pseudocode lasst sich der Algorithmusfolgendermaszligen darstellen

      i = 0

      j = 0

      41

      while GeneratingOutput

      i = (i + 1) mod 256

      j = (j + S[i]) mod 256

      swap (S[i] S[j])

      output (S[(S[i] + S[j]) mod 256])

      (Wobei i offentlich ist und j geheim ist)

      i j

      0 1 2 S[i]+S[j] i j 253 254 255

      S

      S[i] S[j]

      S[i]+S[j]K

      (Quelle httpdewikipediaorgwikiBildRC4svg)

      364 Der Schlusselerzeugungs-Algorithmus

      Aus der Wikipedia (unter GNU Free Documentation License)

      ubersetzt aus dem Englischen nach httpenwikipediaorgwikiRC4Der Schlusselerzeugungs-Algorithmus wird benutzt um die Permutation in S zu initialisierenl wird als die Zahl der Bytes des Schlussels definiert und kann zwischen 1 und 255 liegenublicherweise liegt l zwischen 5 und 32 so dass eine Schlussellange von 40 bis 128 Bit zu-stande kommt Zunachst wird S mit der Identitatspermutation initialisiert Anschlieszligend wirdS in 256 Iterationen mit einem Algorithmus der dem Pseudo-Zufalls-Algorithmus ahnelt aberzusatzlich die Schlusselbits hineinmischt weiterverarbeitet Der folgende Pseudocode drucktdies aus

      for i from 0 to 255

      S[i] = i

      j = 0

      for i from 0 to 255

      42

      j = (j + S[i] + key[i mod l]) mod 256

      swap(S[i]S[j])

      365 Implementation

      Aus der Wikipedia (unter GNU Free Documentation License)

      ubersetzt aus dem Englischen nach httpenwikipediaorgwikiRC4Viele Stromchiffren basieren auf ldquolinear feedback shift registersrdquo und sind damit sehr effizientin Hardware aber weniger effizient in Software implementierbar RC4 hat dieses Manko nichtund kommt zudem ausschlieszliglich mit 8-Bit Operationen aus Damit ist RC4 ideal fur Software-Implementationen

      366 Sicherheit

      Aus der Wikipedia (unter GNU Free Documentation License)

      ubersetzt aus dem Englischen nach httpenwikipediaorgwikiRC4RC4 verfehlt die ublichen Standards fur sichere Chiffren an mehreren Stellen und wird somitnicht zur Verwendung in neuen Anwendungen empfohlen Der von RC4 generierte Schlussel-strom tendiert dazu bestimmte Sequenzen von Bytes haufiger zu enthalten als andere undist somit nicht wirklich zufallig Der beste Angriff der auf diesem Sachverhalt beruht wur-de von Fluhrer und McGrew entdeckt und kann aus einem Gigabyte verschlusseltem Textden Schlusselstrom berechnen Zudem verwendet RC4 keine ldquononcerdquo einen fur jeden Klar-text neu generierten Zusatzschlussel Eine solche ldquononcerdquo wird im allgemeinen als zentralesSicherheitskriterium betrachtet da so gewahrleistet ist dass eine zweimal nacheinander ver-schlusselte Nachricht zwei verschiedene verschluesselte Texte erzeugt Naturlich kann einesolche ldquononcerdquo im Nachhinein aufgesetzt werden indem als RC4-Schlussel nicht der eigentli-che Benutzerschlussel sondern beispielsweise ein Hashwert des Schlussels mit einer nonce ver-wendet wird Die einfachere Methode den Schlussel nur mit der nonce zu konkatenieren dievon einigen Anwendungen genutzt wird fuhrt aufgrund des schwachen Schlusselerzeugungs-Algorithmus wieder zu neuen Problemen

      To do anmerkungen zu k=1-Angriffsmoglichkeiten

      43

      367 Fluhrer Mantin und Shamir Angriff

      Aus der Wikipedia (unter GNU Free Documentation License)

      ubersetzt aus dem Englischen nach httpenwikipediaorgwikiRC42001 wurde eine erstaunliche Entdeckung gemacht Die statistische Verteilung der ersten paarBytes des Schlusselstroms ist uber alle RC4-Schlussel stark nicht-zufallig und enthalt Infor-mationen uber den Schlussel selbst Falls die nonce lediglich mit dem Schlussel konkateniertwurde (oder gar keine nonce verwendet wurde) kann der Schlussel durch die Analyse einergroszligen Zahl verschlusselter Nachrichten herausgefunden werden Mit Hilfe dieses Sachver-haltes und einiger damit zusammenhangender Effekte wurde dann die WEP-Verschlusselung(ldquowireless equivalent privacyrdquo) die in 80211 WLAN-Netzen verwendet wird gebrochen Diesfuhrte zu einer Suche nach einem Ersatz fur WEP und letztlich zu den Bemuhungen um 80211isowie zu WPA

      Der geschilderte Angriff kann naturlich umgangen werden wenn die ersten (ca 256) Bytes desSchlusselstroms verworfen werden

      bull In OpenSSL konnen RC4 Verschlusselungen mit folgenden Befehlen aufgerufen werden

      ndash -rc4ndash -rc4-40

      37 RC5 Ronrsquos Cipher 5

      Die zentrale Neuerung des RC5-Algorithmus sind datenabhangige Rotationen bei denen einZwischenergebnis um eine Zahl von Bytes rotiert wird die weder fest vorgegeben noch vomSchlussel bestimmt sondern aus einem Teil des Klartextes berechnet ist Diese Operation wirdfolgendermaszligen notiert a ltltlt b bedeutet dass a um b Bits nach links rotiert wird Ein weitererinteressanter Aspekt ist die universelle Parametrisierbarkeit des Algorithmus Sowohl die Langeder Worter w als auch die Zahl der Runden r und die Lange des Schlussels b sind wahlbar sodass der Algorithmus offen ist fur zukunftige Bedurfnisse die weitere Operation + wird nun alsAddition modulo 2w definiert In openssl ist RC5 mit den Parameters w = 32 r = 12 b = 16 im-plementiert Samtliche Algorithmen gehen im folgenden von einer little-endian Byte-Anordnungaus Der Algorithmus besteht aus einem Verschlusselungs- und einem Schlusselexpansions-Teil

      371 Verschlusselung

      Gegeben ein auf t = 2(r + 1) Worter expandierter Schlussel S und ein aus zwei Wortern A undB bestehender Eingabeblock gibt folgender Pseudocode den Verschlusselungs-Algorithmus an

      44

      A = A + S[0]

      b = B + S[1]

      for i = 1 to r do

      A = ((A XOR B) ltltlt B) + S[2i]

      B = ((B XOR A) ltltlt A) + S[2i + 1]

      Die Entschlusselung lauft dementsprechend folgendermaszligen ab

      for i = r downto 1 do

      B = ((B - S[2i + 1]) gtgtgt A) XOR A

      A = ((A - S[2i]) gtgtgt B) XOR B

      A = A - S[0]

      B = B - S[1]

      372 Schlusselexpansion

      Zunachst wird S mit einer Kombination aus e und ϕ (dem goldenen Schnitt) initialisiert und derSchlussel in ein Array L kopiert das wortweise indiziert wird Anschlieszligend wird mit folgendemAlgorithmus der Schlussel in S hinein gemischt

      i = j = 0

      A = B = 0

      do 3 max(t 8bw) times

      A = S[i] = (S[i] + A + B) ltltlt 3

      B = L[j] = (L[j] + A + B) ltltlt (A + B)

      i = (i+1) mod t

      j = (j+1) mod (8bw)

      38 GOST 28147-89 Gosudarstvennyi Standard Soyuza SSR nicht inOpenSSL

      GOST ist das russische Normungsinstitut vergleichbar mit DIN oder ANSI

      (siehe auch httpenwikipediaorgwikiGOST_(block_cipher))

      Gost-Chiffre ist eine relativ simple Feistel-Chiffre auf 64 Bit mit 32 Runden 256 Bit Schlussellangeund 8 S-Boxen von zusammen 512 Bit die - da sie geheim gehalten werden konnen - alsSchlusselerweiterung gelten konnen Die Rundenfunktion besteht aus der Addition eines 32-Bit-Substrings des Schlussels der Anwendung der S-Boxen (parallel da jede S-Box 4 Bit alsEin- und Ausgabe hat) und einer 11-Bit-Rotation Die Sicherheit des Algorithmus beruht auf

      45

      der Verwendung sehr langer Schlussel geheimer S-Boxen und der gegenuber DES verdoppeltenRundenzahl In jeder einzelnen Runde wird jedoch ein geringerer Durchmischungseffekt erreichtals bei DES-Runden

      Geheimer Algorithmus S-Boxen auch geheim

      (Quelle httpenwikipediaorgwikiImageGOSTDiagrampng)

      46

      Feistel Chiffre

      Addition Substitution Rotation

      Die S-Boxen sind Gruppenschlussel die extra zugewiesen werden16 4 Bit Werte werden Permutiert 32 RundenSchlusselmaterial 32 die 256 Bit werden jeweils in 8 32 Bit Unterschlussel eingeteilt wobei dieSchlussel wie folgt verwendet werden1234567123456712345677654321

      (Dann einmal S-Box einmal rotieren und dann Feistelschritt)

      Die Sicherheit steckt in den 32 Runden Der Algorithmus wurde bisher nicht geknackt

      39 FazitWie konnte bei einen Symmetrischen Algorithmus die Sicherheiterhohen

      (Das ware zB fur eine Interessante Frage fur eine Klausur)

      bull komplexes Schlusselmanagment

      bull viele Runden

      bull komplexe vermischung pro Runde (AES)

      4 Asymmetrische Verschlusselungsverfahren

      41 Einfuhrung

      AliceBob Chris Dave Eve

      Alice BobkA kA

      Enck1(M) = C minusrarr M = Deck2

      Verschlusselungsverfahren kA kB EncDecAus kA kann kB nicht bestimmt werden dann kann kA sogar offentlich sein Ziel ist es dass je-

      47

      der verschlusseln kann aber nur einer kann (in realistischer Zeit) entschlusseln Solche Verfah-ren mit offentlichen Schlussel werden auch asymmetrisch genannt Mit groszligen Aufwand kannnaturlich der Schlussel immer noch bestimmt werden Man wahlt einen Text mprime Verschlusseltihn (Enck(mprime) = cprime) und probiert dann solange alle k durch bis man Deck(cprime) = mprime erhalt

      Das kB kann aber immer bestimmt werden

      for k_B =00000 to FFFF

      M_0 C_0 sind gegeben

      Dec_k_B(C_0) = M_0

      Wichtig ist nur das dies nicht in rsquovernunftigerrsquo Zeit gemacht werden kann

      To do text sortieren

      Klartext minusrarr E(K) ChiffretextKlartext D(Kprime)larrminus ChiffretextE(K p) = c und zu jedem KexistKprime mit D(Kprime c) = p und K wird offentlich gemachtDie Berechnung von Kprime aus K ist schwer Bruteforce ist nicht ausgeschlossen die Bestimmungvon K aus Kprime ist leicht

      leichtEnckA DeckB (kA kB)minusErzeugung

      schweraus kA allein kB erzeugen

      411 Beispiel

      Bob mochte von Alice verschlusselte Nachrichten lesen Bob uberlegt sich ein asymmetrischesVerfahren wahlt Kprime berechnet K und veroffentlicht KAlice nimmt K berechnet E(K p) = c und sendet c an BobBob berechnet aus c mit Kprime das ursprungliche p

      42 Geschichte

      Whitfield Diffie New Directions in Cryptographie Idee wurde auch schon mal von Ralf Merkelveroffentlich Britische Geheimdienst hatt vorher die Idee auch schon mal

      48

      Aus der Wikipedia (unter GNU Free Documentation License)

      Asymmetrische Verfahren sind ein relativ neues Gebiet der Kryptografie Eine wichtige Vorar-beit fur die asymmetrischen Verfahren sind die Arbeiten von Whitfield Diffie Martin Hellmanund Ralph Merkle zum geheimen Schlusselaustausch Anfang der 1970er Jahre Im Sommer1975 veroffentlichten Diffie und Hellman eine Idee zur asymmetrischen Verschlusselung oh-ne jedoch ein genaues Verfahren zu kennen

      Anfang der 1970er Jahre wurden von Ellis Cocks und Williamson ein dem spateren Ver-fahren von Diffie-Hellman ahnliches asymmetrisches Verfahren entwickelt welches aber inseiner wirtschaftlichen Bedeutung nicht erkannt und aus Geheimhaltungsgrunden nicht (wis-senschaftlich) publiziert und auch nicht zum Patent angemeldet wurde Alle drei waren Mitar-beiter des englischen Government Communications Headquarters

      Der Durchbruch gelang Ronald L Rivest Adi Shamir und Leonard M Adleman die 1977das RSA-Verfahren entwickelten Es gilt bis heute als sicheres Verfahren und hat auszligerdem dengroszligen Vorteil in beiden Richtungen eingesetzt werden zu konnen

      43 Einige Theoretische Grundlagen

      431 Kleiner Fermat (oder kleiner Fermatrsquoscher Satz)

      Fur beliebige Primzahlen p gilt

      n(pminus1) = 1 mod p fur alle n isin Z

      To do Wikipedia verlinken

      432 Euklidischer Algorithmus

      To do erganzen Erweiterter Euklidischer Algorithmus fehlerhaft

      Aus der Wikipedia (unter GNU Free Documentation License)

      Beschreibung durch PseudocodeIm Folgenden wird der moderne Euklidische Algorithmus sowohl in einer rekursiven als

      auch einer iterativen Variante beschrieben Dabei sind a und b jeweils die beiden Zahlen derengroszligter gemeinsamer Teiler berechnet werden soll

      Rekursive Variante

      49

      EUCLID(ab)

      1 wenn b = 0

      2 dann return a

      3 sonst return EUCLID(b a mod b)

      Iterative Variante

      EUCLID(ab)

      1 solange b = 0

      2 r = a mod b

      3 a = b

      4 b = r

      5 return a

      FunktionsweiseIn jedem Schritt des Algorithmus wird eine Division mit Rest ausgefuhrt riminus1 = qi+1 middot

      ri + ri+1 0 le ri+1 lt ri Die Division mit Rest hat die Eigenschaft dass ggT(riminus1 ri) =

      ggT(ri ri+1) giltIm letzten Schritt des Algorithmus rnminus1 = qn+1 middot rn + 0 ist rn+1 = 0 und es gilt deshalb

      ggT(rnminus1 rn) = ggT(rn 0) = rn

      Da im ersten Schritt riminus1 = a und ri = b war ist ggT(a b) = rn

      (Quelle httpdewikipediaorgwikiEuklidischer_Algorithmus)

      (Denn es gilt ggT(a b) = ggT(b r))

      Aus der Wikipedia (unter GNU Free Documentation License)

      Man kann diese Rekursion in folgende Abfolge von Schritten fur den erweiterten euklidi-

      schen Algorithmus fassen Erhalte rdquoardquo und rdquobrdquo als EingabeSetze rdquok=0rdquo r0 = a r1 = b s0 = 1 und s1 = 0WiederholeErhohe rdquokrdquo um einsBestimme den ganzzahligen Quotienten qk = rkminus1 div rkSetze rk+1 = rkminus1 minus qk middot rk und sk+1 = skminus1 minus qk middot skbis rk+1 = 0 giltGib den Rest rk = ggT(a b) und die Zahl sk mit ggT(a b) equiv sk middot a (mod b) zuruckJeder Schritt enthalt implizit auch einen Multiplikator tk = (rk minus sk middot a) div b wobei diese

      Division keinen Rest lasst Die Folge (tk)k kann auch explizit bestimmt werden es gelten t0 =

      0 t1 = 1 und tkminus1 equiv qk middottk+tk+1 Nach dem letzten Schritt ergibt sich nun ggT(a b) = sk middota+tk middotbDer Ubersicht halber werden beim handischen Rechnen auch noch die Hilfsfolgen (ak =

      rkminus1)k und (bk = rk)k sowie (uk = skminus1)k sowie (vk = tkminus1)k mitgefuhrt

      50

      Zur Berechnung des Inversen modulo einer Restklasse benotigt man die tk aber nicht und kannsie ignorieren

      Aus der Wikipedia (unter GNU Free Documentation License)

      Rekursive VarianteFur den erweiterten euklidischen Algorithmus existiert auch eine rekursive Variante die

      durch den folgenden Pseudocode gegeben istab zwei Zahlen fur die der erweiterte euklidische Algorithmus durchgefuhrt wirdrdquoextended euclidrdquo(ab)1 rdquorsquowennrdquorsquo b = 02 rdquorsquodann returnrdquorsquo (a10)3 (drsquosrsquotrsquo)larr rdquoextended euclidrdquo(b a mod b)4 (dst)larr (drsquotrsquosrsquo - floor(ab)trsquo)5 rdquorsquoreturnrdquorsquo (dst)

      (Quelle httpdewikipediaorgwikiErweiterter_euklidischer_Algorithmus)

      Wenn n mod m teilerfremd sind dann existiert so ein Exponent f so dass

      n f equiv 1 mod m

      ist

      Wenn m = m1 middotm2 ein Produkt von zwei verschiedenen Primzahlen ist dann ist fur alle n die zum teilerfremd sind

      n(m1minus1)middot(m2minus1) equiv 1 mod m

      Denn es ist nm1minus1 equiv 1 mod m1 und nm2minus1 equiv 1 mod m2 Dann ist n(m1minus1)middot(m2minus1) minus 1 durch m1und m2 teilbar Denn nach dem Chinesischen Restsatz gilt n(m1minus1)middot(m2minus1) equiv 1 mod m1 middot m2 undwenn eine Zahl durch m1 middot m2 teilbar ist so auch durch m1 und m2

      433 Beispiel

      In Magma

      p=17 q=23

      m=(p-1)(q-1)

      e=19

      F=IntegerRing(m)

      51

      d=(Fe)ˆ(-1)

      d=IntegerRing()d

      19315 div 16

      19315 -374 16

      n=pq

      K=IntegerRing(n)

      N=100

      C=(KN)ˆ(e) Verschlusseln

      C

      Cˆd

      10019 equiv 349 mod 349

      349352 equiv 100 mod 391

      10019middot315 = 100 mod 17

      10019middot315 = 100 mod 23

      10019middot315 equiv 100374middot16+1 mod 17 equiv 100 middot (10016)374︸ ︷︷ ︸=1

      mod 17

      To do Analog von Mathias kopieren

      To do Wiederholung einsortieren

      Wiederholung

      Nachricht n

      ne equiv c( mod m)

      Chiffre c

      cd equiv (ne)d = ndmiddote = n1+k(pminus1)(qminus1) = n middot (n(pminus1)(qminus1))k︸ ︷︷ ︸=1

      equiv n middot 1k = n mod m

      nminusrarr

      dm cminusrarr

      em n

      52

      aus (em) kann man (dm) nicht leicht bestimmen weil man die Zerlegung m = p middotq nicht kenntWer p q kennt kann aus den einen den anderen Schlussel berechnen Wer de kennt kann pqbestimmen

      Verschlusselung kann jeder ausfuhren offentlicher Schlussel (em) Entschlusselung bleibt demvorbehalten der das geheime d (oder auch pq) kennt

      schnelles Potenzieren Ist die Berechung von ne ck ausreichend schnell

      m 1000 Bit pq-150 Dezimalstellen

      ne hat sehr sehr viele Dezimalstellen

      Deshalb berechnet man erst modulo und potenziert dann mit e

      (n mod m)e (c mod m)d

      Beispiele n19 = n middot n middot middot n︸ ︷︷ ︸19 Multiplika-tionen

      oder man rechnet

      n n2 n4 n8 n16 4 Quadrierungen

      n16 middot n2 middot n = n19

      so auch bei n1025 = n n2 n1024 n middot n1024 wo nur 11 Multiplikationen gebraucht werden

      Pseudocode nex=1

      repeat

      if (e = 1 mod 2)x = x middot n(prime mod mprime)

      n = n2(prime mod mprime)

      e = ediv2

      until e==1

      k = (nprime)0 middot xprime

      x = k = ne

      53

      44 RSA Rivest Shamir Adleman

      Bei dem Versuch die Idee der Asymmetrischen Kryptografie zu wiederlegen wurde RSA entwi-ckelt

      RSA beruht auf der Schwierigkeit n = p middotq in seine Primfaktoren zu zerlegen Verschlusseln undEntschlusseln ist Potenzieren modulo n

      D E = id

      p = (pe)d mod n

      p = pemiddotd mod n

      e middot d = 1 mod (p minus 1) middot (q minus 1)

      E(e n) ist offentlich und D(d n) geheim Die Bestimmung von e d n aus p q ist leicht GenauerDie Bestimmung von e aus (d n) ist leicht die Bestimmung von d aus (e n) ist schwer weilFaktorisierung n = p middotq (vermutlich) schwierig ist ist Bestimmung von d aus (e n) auch schwerWer p und q aus n berechnen kann kann auch d bestimmen (Euklid)

      Wer e und d kennt kann p und q bestimmen (dazu waren Erlauterungen in der Vorlesung)

      441 Funktionsweise des RSA-Verfahrens

      (nach wwwcryptooldedownloadsCrypToolScript 1 3 04 depdf)Man kann die Einzelschritte zur Durchfuhrung des RSA-Verfahren folgendermaszligen beschrei-ben Schritt 1 bis 3 sind die Schlusselerzeugung Schritt 4 ist die Verschlusselung 5 die Ent-schlusselung

      1 Wahle zufallig 2 verschiedene Primzahlen p und q und berechne n = p middot q Der Wert nwird als RSA-Modul bezeichnet

      2 Wahle zufallig e isin 2 n minus 1 so dass gilt e ist teilerfremd zu J(n) = (p minus 1) middot (q minus 1)Zum Beispiel kann man e so wahlen dass gilt max(p q) lt e lt J(n) minus 1 Danach kannman p und q ldquowegwerfenrdquo

      3 Wahle d isin 1 n minus 1 mit e middot d = 1 mod J(n) dh d ist die multiplikative Inverse zu emodulo J(n) Danach kann man J(n) ldquowegwerfenrdquo

      bull (n e) ist der offentliche Schlussel Pbull (n d) ist der geheime Schlussel S (es ist nur d geheim zu halten)

      4 Verschlusselung des Klartextes (bzw seiner Blocke) M isin 1 n minus 1

      C = E((n e) M) = Me mod n

      54

      5 Entschlusselung des Chiffretextes (bzw seiner Blocke) C isin 1 n minus 1

      M = D((n d) C) = Cd mod n

      442 Beweis der Funktionsweise

      (nach wwwcryptooldedownloadsCrypToolScript 1 3 04 depdf)Fur Schlusselpaare (n e) und (n d) die die in den Schritten 1 bis 3 des RSA-Verfahrens festge-legten Eigenschaften besitzen muss fur alle M lt n gelten M equiv (Me)d mod n wobei (Me)d =

      Memiddotd Das heiszligt der oben angegebene Dechiffrieralgorithmus arbeitet korrekt Wir zeigen das in3 Schritten

      1 Im ersten Schritt zeigen wir Memiddotd equiv M mod p Dies ergibt sich aus den Voraussetzungenund dem Satz von Fermat Da n = p middot q und J(p middot q) = (p minus 1) middot (q minus 1) und da e undd so gewahlt sind dass e middot d equiv 1 mod J(n) gibt es eine ganze Zahl k so dass gilte middot d = 1 + k middot (p minus 1) middot (q minus 1)

      Memiddotd equiv M1+kmiddotJ(n) equiv M middot MkmiddotJ(n) equiv M middot Mkmiddot(pminus1)middot(qminus1) mod p

      equiv M middot (Mpminus1)kmiddot(qminus1) mod p

      (aufgrund des kleinen Fermat Mpminus1 equiv 1 mod p)

      equiv M middot (1)kmiddot(qminus1) mod p

      equiv M mod p

      Die Voraussetzung fur die Anwendung des kleinen Fermat war dass M und p teilerfremdsind Da das im allgemeinen nicht gilt mussen wir noch betrachten was ist wenn M undp nicht teilerfremd sind da p eine Primzahl ist muss dann notwendigerweise p ein Teilervon M sein Das heiszligt aber

      M equiv 0 mod p

      Wenn p die Zahl M teilt so teilt p erst recht Memiddotd Also ist auch

      Memiddotd equiv 0 mod p

      Da p sowohl M als auch Memiddotd teilt teilt es auch ihre Differenz (Memiddotd minus M) equiv 0 mod pUnd damit gilt auch in diesem Spezialfall unsere zu beweisende Behauptung

      2 Vollig analog beweist man Memiddotd equiv M mod q

      3 Nun fuhren wir die Behauptungen der ersten beiden Schritte zusammen fur n = p middot qum zu zeigen Memiddotd equiv M mod n fur alle M lt n Nach den ersten beiden Schritten gilt(Memiddotd minus M) equiv 0 mod p und (Memiddotd minus M) equiv 0 mod q also teilen p und q jeweils dieselbeZahl z = (Memiddotd minus M) Da p und q verschiedenen Primzahlen sind muss dann auch ihrProdukt diese Zahl z teilen Also gilt

      (Memiddotd minus M) equiv 0 mod p middot q

      55

      oderMemiddotd equiv M mod p middot q

      oderMemiddotd equiv M mod n

      45 Schwachen von RSA

      bull Wenn N Nachrichten aus einer kleinen Menge gewahlt werden ist RSA unsicher

      for Nprime do (Nprime)e = C1 if C1 = C then N = Nprime

      bull Wenn N und e zu klein sind ist RSA unsicher dass heiszligt wenn Ne als Zahl kleiner als nist so das nich modulo gekurzt wird so kann man einfach eradicc

      bull Angriff mit frei gewahlten Chiffretext angenommen man hat Zugriff auf die Verschlusse-lungsmaschine so dass man mit selber vorgebenen Cprime Nprime berechnen kann (Cprime minusrarr Nprime)

      Re = S mod n S d = R mod n Cprime = S middotC

      (Cprime)d = S d middotCd = R middot N︸︷︷︸Nrsquo

      mod n

      Nprime middot Rminus1 = N mod n

      N1 minusrarr C1

      N2 minusrarr C2

      rArr N1 middot N2 minusrarr C1 middotC2

      bull Jeder Benutzer braucht ein eigenes n dass heiszligt man muss fur jeden Benutzer die entspre-chenden Primzahlen suchen allerdings ist dies aufwendig

      bull RSA ist extrem langsam im Vergleich zu symmetrischen Verfahren openssl speed rsabzw speed aes-256

      46 Fuktionen in OpenSSL

      461 genrsa

      genrsa erzeugt Schlusselpaare fur RSASchlussellange num_bits frei wahlbar wobei es einen Bug bei kleinen Werten gibt (weniger als60 Bit) so kurze Schlussel aber auch nicht verwendet werden solltenOptionen

      usage genrsa [args] [numbits]

      -out file output the key to file

      -passout arg output file pass phrase source

      56

      -f4 use F4 (0x10001) for the E value

      -3 use 3 for the E value

      -des encrypt the generated key with DES in cbc mode

      -des3 encrypt the generated key with DES in ede cbc mode (168 bit key)

      -idea encrypt the generated key with IDEA in cbc mode

      -aes128 -aes192 -aes256 encrypt PEM output with cbc aes

      -engine e use engine e possibly a hardware device

      -rand filefile load the file (or the files in the

      directory) into the random number generator

      462 rsa

      rsa gibt den public-key zu gegebenen private-key aus Auszligerdem auch weitere Informationenwie verwendeter Modulus Mit rsa kann auch ein gegebener key neu verschlusselt abgespeichertwerden

      rsa [options] ltinfile gtoutfile

      where options are

      -in arg input file

      -out arg output file

      -pubin expect a public key in input file

      -pubout output a public key

      -passin arg input file pass phrase source

      -passout arg output file pass phrase source

      -text print the key in text

      -noout donrsquot print key out

      -modulus print the RSA key modulus

      -check verify key consistency

      -des encrypt PEM output with cbc des

      -des3 encrypt PEM output with ede cbc des using 168 bit key

      -idea encrypt PEM output with cbc idea

      -aes128 -aes192 -aes256 encrypt PEM output with cbc aes

      -inform arg input format - one of DER NET PEM

      -outform arg output format - one of DER NET PEM

      57

      -sgckey Use IIS SGC key format

      -engine e use engine e possibly a hardware device

      463 rsautl

      Mit rsautl konnen Dateien ver- oder entschlusselt und signiert oder verifiziert werden

      Usage rsautl [options]

      where options are

      -in file input file

      -out file output file

      -inkey file input key

      -pubin input is an RSA public

      -certin input is a certificate carrying an RSA public key

      -sign sign with private key

      -verify verify with public key

      -encrypt encrypt with public key

      -decrypt decrypt with private key

      -hexdump hex dump output

      -pkcs use PKCS1 v15 padding (default)

      -oaep use PKCS1 OAEP

      -ssl use SSL v2 padding

      -raw use no padding

      -keyform arg private key format - default PEM

      -passin arg pass phrase source

      -engine e use engine e possibly a hardware device

      464 PKCS

      spater noch ausfuhrlicher hier nur kurz die Verwendung bei RSA

      Padding beginnt mit 0002 endet mit 00 und dann kommt der Chiffretext

      58

      465 OAEP - Optimal Asymmetric Encryption Padding

      Normalerweise wird mit RSA nur ein Schlussel fur eine symmetrische Verschlusselung ver-schlusselt da RSA verglichen mit symmetrischen Algorithmen sehr langsam ist

      Bemerkung Vergleichen mit speed rsa und speed aes (siehe History 21012009)

      Ist die so festgelegte Lange des Klartextes erheblich kleiner als die des RSA-Schlussels so ist einAuffullen der restlichen Bits notig Die implizite Methode (beim Betrachten des Klartextes alsZahl) einfach 0en einzusetzen empfiehlt sich nicht da die Zusatzinformation die ein Angreiferso uber den Klartext bekommt das Decodieren des geheimen Schlussels vereinfacht

      Beim Padding soll diese Gefahr verringert werden Per default wird bei openssl PKCS benutztAllerdings ist die Verwendung von OAEP besser Beim OAEP ist im Gegensatz zum PKCSdie Lange des Klartextes nicht mehr sichtbar (man kann nur noch dass beginnende 00 Byteerkennen) Choosen Plaintext Attacke ist nicht mehr moglich

      Dabei wird essenziell die zu verschlusselnde Nachricht mit einem Hashwert eines Zufalls-Stringsper xor verknupft und so randomisiert Eine Modifikation des benutzten Hashwerts wird dannmit der Nachricht konkateniert und steht beim Entschlusseln wieder zur Verfugung

      1 Label hash Label =

      2 PS erzeugen (alles Nullen 128-1-h-h-1-mdashmmdash)

      3 DB =

      4 Seed wahlen Lange h (irgendwas seed = Hash(irgendwas))

      5 DBmaske = MGF(seed mdashDBmdash)

      6 mDB = DB oplus GBmask

      7 seedmaske = MGF(mDB mdashseedmdash)

      8 mseed = seed oplus seedmaske

      9 EM =

      10 RSA-Verschlusselung C equiv EMe mod n

      MGF Hash Eingabe x Lange l

      tc = Hash(x c)

      mdashcmdash = 4 Byte

      MGF(x l) = t0 t1 t2 t3 |MGF( l)| = l

      59

      Ruckgangig

      1 Entschlusseln

      2 Zerlegen 00 mseed mDB

      3 seedmaske = MGF(mDB mdashmseedmdash)

      4 seed = mseed oplus seedmaske

      5 DBmaske = MGF(seed mdashmDBmdash)

      6 DB = mDB oplus DBmaske

      7 Padding abtrennen

      PKCS1 v15

      Die fur den Modul verwendeten Primzahlen mussen die ersten beiden Bits gesetzt haben dasgarantiert nach Multiplikation der Primzahlen dass das Produkt im oberen Byte das obere Bitgesetzt hat und somit die feste voranstehende 0 uberdeckt

      466 Wie erkennt man an Ciphertexten den Verschlusselungsalgorithmus- DER ASN1

      Standards damit man (zB RSA) verschlusselte Texte erkennt

      DER- distingushed Encoding Rules

      ASN1- Abstract Syntax Notation

      openssl asn1parse -genstr INTEGER4711 -out intasn1 openssl asn1parse -in intasn1 -inform DER

      Integer werden in ASN1 als rsquo 02︸︷︷︸Tag

      lange Datenrsquo kodiert Integers brauchen 1 Byte mehr rsquoDatenrsquo

      damit Das Vorzeichen 00 enthalten ist Integer ist immer mit Vorzeichen

      Tag fur andere Typen

      Bool 01

      Int 02

      Octet String 04

      Bitstring 03 rsquolangersquo rsquoungenutzte bits am Endersquo rsquoByte des Bitstringrsquo [evt ungenutzte Bits]

      Text PRINTABLESTRING

      60

      utf8 UTF8String

      Text mit Zeichen (emailadresse) IA5STRING

      DatumZeit UTC

      mit Jahrhundert GENTIME

      nuscht (der leere Typ) NULL

      Mengentypen seq set

      Mann kann auch eigene Typen generierend EXPLICITAF oder so

      467 Umgehen mit den Schlusselkomponenten

      Ein vollstandiger RSA-Schlussel besteht aus einem Modul (modulus) n = p middot q offentlichemExponent e privatem Exponent d Primzahl 1 p Primzahl 2 q (haufig p gt q) Exponent 1 dpExponent 2 dq Koeffizient qi und kann so ausgegeben und gespeichert werden

      Bei der Version fur rsquoarmersquo werden nur n offentlicher Exponent e und geheimer Exponent dangegeben

      c equiv me mod n (3)

      m equiv cd mod n (4)

      Vorteil der vollstandigen Version Geschwindigkeitserhohung bei der Entschlusselung in Schritt(4)

      dp equiv d mod (p minus 1) d = k middot (p minus 1) + dp

      dq equiv d mod (q minus 1)qi middot q equiv 1 mod q

      m equiv cd mod (p middot q) berechnenm1 equiv cdp mod p 500 Operationen mit 1

      2 langem Modulm2 equiv cdq mod q 500 Operationen mit 1

      2 langem ModulInsgesamt 1000 Operationen mit 1

      4 der Lange

      apminus1 equiv 1 mod p wenn (a p) = 1teilerfremd1

      1kleiner Fermatscher Satz

      61

      m1 equiv cd mod pm2 equiv cd mod q

      h equiv (m1minusm2)middotqi mod p (darauf achten dass das minusm2 mod p ausgerechnet wird nicht mod q)

      m = m2 + h middot q

      1 m lt n2 m equiv cd mod p da m2 + h middot q equiv m2 + (m1 minus m2) middot qi middot q mod p equiv m2 + m1 minus m2 equiv m1 alsoequiv cd mod pm equiv cd mod q da m2 + h middot q equiv m2 mod q also equiv cd mod q

      x equiv y mod p und x equiv y mod q dann folgt x equiv y mod p middot qEuklidischer Algorithmus (p q)-teilerfremd dann p middot u + q middot v = 1 Chinesischer Restsatz

      47 Miller-Rabin Test

      Heute openssl dhparam und was Verbluffendes so dass man es nur mit der Phantasie einesInformatikers oder Mathematikers verstehen kann (Literatur Menezes Oorschot Handbook ofApplied Cryptography)

      Primzahlen Feststellen ob eine Zahl eine Primzahl ist durch Testen von Divisionen wird beigroszligen Zahlen sehr lang

      p middot q = n ausrechnen geht schnell Umkehrung n =middot ist moglicherweise schwer

      Uber 2214+ 1 weiss man dass es keine Primzahl ist2 kennt aber keinen der Faktoren Kriterium

      rdquokeine Primzahlldquo lasst sich auf folgende Art manchmal feststellenWenn (a n) = 1 so ist anminus1 equiv 1 mod nFermatTest Wenn fur (a n) = 1 anminus1 1 mod n so kann n keine Primzahl sein

      Primzahlen Test

      Wenn fur eine Zahl a mit (a n) = 1 der Fermat-Test nicht bestanden wird nennt man a einenZeugen fur Nichtprimalitat

      2Vierzehnte Fermatsche Zahl

      62

      Zeugen gibt es sehr viele nicht realistisch alle zu rdquobefragenldquo Ausserdem gibt es Zahlen diekeine Zeugen haben aber keine Primzahl sind

      Aus diophantischen Gleichungen folgt Es gibt ein Polynom mit ganzzahligen Koeffizienten f (n)mit der Eigenschaft Wenn f (n) gt 0hArr n ist PrimzahlAber das Polynom hat 26 Koeffizienten Fur Mathematiker ist das Problem erledigt da das Poly-nom existiert fur Informatiker ist es das nicht wirklich da die Berechnung ubermaszligig komplexist

      Die Nicht-Primzahlen ohne Zeugen heissen Carmichael-Zahlen Haben die Eigenschaft forallp(p|nrArrp minus 1|n minus 1)rArr CarmichaelZum Beispiel 561 hat Teiler 3 11 17 Der Test liefert 2|560 10|560 16|560

      Erweitern (n Primzahl) Wenn (a n) = 1 und anminus1 equiv 1 mod n und 2|n minus 1 (anminus1 equiv 1 mod na

      nminus12 equiv )

      Wenn x2 equiv 1 mod n was ist x mod n n|x2 minus 1 = (x minus 1)(x + 1) entweder n|x + 1 odern|x minus 1

      FermatTest+ Wenn fur (a n) = 1 anminus1 1 mod n oder falls anminus1 equiv 1 mod n und anminus1

      2 +1und a

      nminus12 minus1 so kann n keine Primzahl sein

      und 4|n minus 1 anminus1

      4 anminus1

      2 anminus1

      1 mod n Diese Folge ist entweder 1 1 1 oder minus1 1 1 oderlowastminus1 1

      Wenn (a n) = 1 und 2k|nminus 1 (k maximal) dann ist die Folge anminus12k a

      nminus12kminus1 a

      nminus12 anminus1 entweder

      1 1 oder lowastminus1 1 1 (lowast steht fur beliebige Folge)

      Probieren n = 81 n minus 1 = 80 durch 2er-Potenzen teilen kommt irgendwas mit 5 hinten rausAls Zeugen nehmen wir mal 2 Ausrechnen 25 210 220 240 280 und schauen ob diese Folgemodulo 81 einen der beiden Typen hat 32 1 mod 81

      FermatTestlowast (= Miller-Rabin-Test) Wenn fur (a n) = 1 2k|n minus 1 teilt und die Folge anminus12k a

      nminus12kminus1

      anminus1

      2 anminus1 modulo n nicht 1 1 und nicht lowastminus1 1 1 dann ist a ein Zeuge fur Nicht-primalitat

      Fur Miller-Rabin-Test gibt es keine zeugenlosen zusammengesetzten Zahlen es gibt unter denzu n teilerfremenden Zahlen mindestens 25 Zeugen3 (MenezesOorschot Kapitel 4 Fact 425Fact 448 Tabelle 43)

      Die fur Informatiker interessante Frage ist die Frage Wenn man eine Wahrscheinlichkeit kleiner2minus80 fur eine fehlerhaft durch Miller-Rabin nicht erkannte zusammengesetzte Zahl haben will

      3Anmerkung spater 34 sind Zeugen 1

      4 sind Lugner

      63

      muss man fur n (512 Bit) 6 Tests machen Je groszliger die Zahlen werden desto weniger Testsmuss man machen Fur 1024 3 Tests fur 2048 2 Tests Vorausgesetzt ist immer noch ein Testauf kleine Faktoren Dabei pruft man ob (n pi) = 1 fur pi lt B wobei pi kleine Primzahlen sindDas B wahlt man so dass dieser Test nicht langer dauert als ein Miller-Rabin-Test

      Wie wahlt man Primzahlkandidaten Generiere Zahl mit Zufallszahlengenerator schaue ob diedurch 2 oder so teilbar ist wahle dann die nachste Zahl

      openssl dhparam -dsaparams -text -noout 2048 schnellopenssl dhparam -text -noout 2048 langsam

      Safe Prime pminus12 hat einen groszligen Primzahlfaktor q dann getestet ob 2(k middot (q + 1)) Primzahl ist

      pminus12 ist Primzahl

      Wofur braucht man die Primzahlen Naturlich fur RSA und jetzt neu

      48 Diffie-Hellman-Schlusselaustausch

      Alice und Bob haben gemeinsame offentliche Informationen tauschen offentliche Informationenaus und verfugen danach beide uber einen gemeinsamen privaten Schlussel

      g = 2 (offentlich bekannt (Generator)) Primzahl p (offentlich bekannt)

      Erganzungen g g2 g3 gpminus1 mod p (g Generator dann alle verschieden)

      Bob Alice

      Eve

      x y

      g^y mod p

      g^x mod p

      64

      Bob wahlt zufallig 1 lt x lt pminus 1 und ruft Alice gx mod p zu Alice wahlt zufalig 1 lt y lt pminus 1und ruft gy mod p zu

      Bob berechnet (gy)x mod p und Alice berechnet (gx)y mod p Beide erhalten gxmiddoty mod p An-greifer Eve kennt nur gx mod p gy mod p fehlt gxmiddoty mod p

      Wenn Eve das diskrete Logarithmusproblem losen konnte also zu gx mod p und g mod pdas x ausrechnen konnte dann ware gxmiddoty mod p leicht zu berechnen Die besten Algorithmenfur das diskrete Logarithmusproblem mod p sind subexponentiell im groszligten Primfaktor vonp minus 1

      Falls (p minus 1) viele kleine Primfaktoren pi hat ist das diskrete logarithmus Problem leicht denndann lost man das Problem nicht a mod (pminus1) sonder jeweils a mod pi und setzt0 dass ganzedann mit dem Chinesischen Restsatz zusammen

      Sucht p so dass pminus12 auch eine Primzahl ist dazu wird zuerst eine Primzahl pprime gesucht und dann

      geguckt ob 2pprime + 1 auch Prim ist

      Openssl

      Variante DH (DSAparam) (-dsaparam)

      p-Primzahl 1536

      g-rsquoGeneratorrsquo nicht von (p minus 1) sondern von der Restklasse h

      160 Bit g g2 g3 gh alle verschieden mit h=160 Bit

      Dann sollen xy so gewahlt werden dass 1 lt x y lt h = 160 Bit

      Ein weiteres asymmetrisches Cryptosystem kann man darauf aufbauen Alle kennen g und pjeder generiert sich x (privater Schlussel) und gx mod p wird veroffentlichtAlice will Bob etwas verschlusselt schickenSie generiert ein k berechnet aus k und Bobs veroffentlichtem gx a = (gx)k mod p und ausdem allgemein bekanntem g gk mod pM sei die Nachricht ( mod p) die Alice verschicken will Sie berechnet a middot M mod p undsendet an Bob das Paar (gk mod p a middot M mod p)Bob berechnet (gk)x mod p = a und dividiert amiddotM

      a mod p und erhalt somit M

      Der Schlussel a darf nicht zweimal verwendet werden

      Man nennt (gk a) zeitweiliger bzw ephemeraler Diffie Hellmann Schlussel

      Nachteil die Nachrichtenlange wird verdoppelt

      65

      Das Verfahren ist unsicher wenn Alice die Zahl x schlecht wahlt x = 1 2 1 2 1 2 1 = x1 x2

      49 ElGamal-Cryptosystem

      (siehe auch TR 3111 vom BSI auf Seite 21)

      Auf Diffie-Hellmann aufbauendAlice offentlicher Schlussel ga (p g) privat aBob offentlicher Schlussel gb (p g) privat b

      Alice will an Bob schicken

      1 Zufallszahl k generieren

      2 Berechne mit Bobs Parametern gk mod p

      3 Berechne mit Bobs Parametern (gb)k mod p (DH-Schlussel)

      4 Berechne m middot (gb)k mod p

      5 Sende(gkm middot (gb)k

      )mod p

      Bob empfangt (x y)

      1 Berechne xb mod p (DH-Schlussel)

      2 y middot (xb)minus1 mod p = m mod p

      Alice baut also einen temporaren DH-Schlusselteil4 zu Bobs Parametern und sendet diesen unddie damit verschlusselte Nachricht m

      Nachteil Nachricht wird durch den Ephemeralschlussel doppelt so lang

      410 Wiederholung DH

      Generator gPrimzahl pga mod p Restklassen mod p = Korper(middot inverses)Dass p Primzahl ist ist eigentlich ZufallErzeugendes Element GOperation auf Elementen +

      a middotG = G + G + G + + G a-malEs muss schwer sein aus G und B = a middotG gegeben das a zu bestimmenG muss eine Ordnung n haben n middotG = 0 (Neutrales Element der Operation +)

      4Auch Ephemeralschlussel genannt

      66

      4101 Beispiel

      Alice Bob G+ nAlice denkt a denkt a middotGBob denkt b denkt b middotGBeide tauschen a middotG und b middotG aus und berechnen a middot b middotGa middotG ist leicht zu berechnen double and adda = a0 + a1 middot 2 + + ak middot 2k

      a middotG = a0 middotG + a1 middot 2 middotG + + ak middot 2k middotG(k minus 1)-mal rdquomiddot2ldquo und (k minus 1)-mal rdquo+ldquo

      411 was anderes

      Nimmt man nun G groszlige Gruppe mit n Elemente und der Addition +

      g-Generator

      g 2g 3g nG︸︷︷︸Nullelement

      Alice wahlt 1 lt x lt n bestimmt x middot g

      Bob wahlt 1 lt y lt n bestimmt y middot g

      Dann wieder K = (ab) middot g = K

      To do erganzen

      Problem des Diskreten Logarithmus in G gegeben ist G g Generator ist 0 c = a middot g in Ggesucht alogGc-diskreter Logarithmus in G

      Diese Variante funktioniert also mit allen rsquoKomplizierten Gruppenrsquo das fuhrt zu dem nachstenThema

      412 Elliptische Kurven

      Wo gibt es so etwas schon Elliptische Kurven Sind nicht weit verbreitet weil sie dem Mana-gement schwer zu erklaren sind

      67

      Aus der Wikipedia (unter GNU Free Documentation License)

      In der Zahlentheorie ist eine elliptische Kurve eine singularitatenfreie algebraische Kurve derOrdnung 3 in der projektiven Ebene

      Von besonderem Interesse zB fur die Faktorisierung naturlicher Zahlen sind aufgrundihrer einfachen Struktur elliptische Kurven der Form cy2 = x3 + ax + b mit c 0 und 4a3 +

      27b2 0 Einige moderne Verschlusselungsverfahren basieren auf solchen Kurven Der Nameleitet sich historisch davon ab dass diese Kurven durch elliptische Integrale parametrisiertwerden konnen

      Elliptische Kurven uber endlichen Korpern werden in der Kryptografie eingesetzt Dazuwird ausgenutzt dass eine Gerade (lineare Funktion) die zwei Schnittpunkte P und Q mit ei-ner Elliptischen Kurve hat diese auch in einem 3 Punkt schneidet Der Punkt der aus demletzteren durch Verkehren des Vorzeichens der Y-Koordinate (wenn die Kurve die oben ange-gebene Form hat) entsteht wird P + Q genannt Man kann zeigen dass diese Punktaddition(P und Q werden addiert das Ergebnis ist der Punkt P + Q) sowohl kommutativ als auch as-soziativ ist Erganzt man die Elliptische Kurve um einen weiteren Punkt 0 (genannt Punkt imUnendlichen) so bildet sie zusammen mit der (etwas erweiterten) Punktaddition eine abelschealgebraische Gruppe

      Sei nun P ein Punkt der Elliptischen Kurve Der Punkt P + P wird mit 2P bezeichnetentsprechend definiert man kP = P + + P als k-fache Addition des Punktes P Ist P nichtder 0-Punkt und ist die Ordnung der Elliptischen Kurve prim so kann auf diese Weise jederPunkt der Kurve erreicht werden (dh zu jedem Punkt Q auf der Kurve existiert eine naturlicheZahl k mit Q = kP) Die Aufgabe aus gegebenen Punkten PQ diesen Wert k zu ermittelnwird als Diskretes Logarithmus-Problem der Elliptischen Kurven (kurz ECDLP) bezeichnetEs wird angenommen dass das ECDLP (bei geeigneter Kurvenwahl) schwer ist dh nichteffizient gelost werden kann Damit bieten sich Elliptische Kurven an um auf ihnen asymme-trische Kryptosysteme zu realisieren (etwa einen Diffie-Hellman-Schlusselaustausch oder einElgamal-Kryptosystem)

      y2 = x3 + a middot x + b Skizze der Kurven S2Zu S2 Punkte auf der Kurve kann man addieren

      Die Rechenregeln gehen auch in einem Korper mod pBeispiel y2 equiv x3 + a middot x + b mod p Skizze S3

      Es gibt immer Punkte mit denen man rechnen kann Punkte sind geeignet die Addition funk-tioniert auch und hat die Anzahl N der Punkte einen groszligen Primzahlteiler dann haben wir auchKryptosystem mit G+ n Wenn groszliger Primzahlteiler exisitert1 N hat groszligen Primzahlteiler n2 Wahlen zufallig einen Punkt G als GeneratorDaraus erhalt man DH und El Gamal

      Zuerst eingefuhrt durch Victor Miller und Neal Koblitz um 1980 herum Damals war N schwer

      68

      bestimmbar Inzwischen gibt es bekannte Algorithmen (Schoof-Algorithmus)Diskretes Logarithmusproblem ist fur elliptische Kurven wirklich exponentiell (bis jetzt) EinBit mehr verdoppelt den Rechenaufwand (192-Bit-256 Bit bewegt sich in GroszligenordnungenRSA 2000-4000-Bit)

      Erganzung

      1Bei der Erforschung von Eliptischen Kurver stellte sich zuerst die Frag wie groszlig ist eigentlichdie Ordnung n der Gruppe Man wusste n sim p und man wusste sogar n minus p + 1 minus

      radicp lt n lt

      minusp + 1 +radic

      p

      2 Schnelle Algorithmen zur Berchnung der Ordnung

      3 ECDLP ist schwer wenn n einen groszligen Primfaktor hat

      To do sortieren

      Erganzung

      man hat p a bG n h

      K = y2 = x3 + ax + b

      p ist fur die Punktaddition (Formeln siehe enwikipediaorg wobei λ = (yQ minus yP) middotminus1

      (xa minus xp)︸ ︷︷ ︸mit GGT

      mod p)

      Anmerkung zum Wikipedia Artikel binary Case bedeutet man die Eliptischen Kurven auch inKorper mit 2k betrachten allerdings vieler solcher Falle patentiert

      G = Generatorpunkt mit G 2G 3G nG alle verschieden n kleinste Zahl so dass alle ver-schieden

      nG = 0

      bei der DSA-Parameter Form nimmt man weniger Grsquos

      Der nachste Parameter ist der cofactor h welches den Unterschied zwischen n und der Anzahlder Produkte auf der Kurve angibt

      Trick beim testen ob alle iG verschieden sind man guckt ob n eine Primzahl ist und ob nG = 0ist wenn ja ist dies das erste mal sonst ware n ja keine Primzahl Also sind alle vorherigen iG

      69

      verschieden

      Kurven finden besser Bestimmung der Punktanzahl ist schwer

      Fruher gab es kleine cofactoren h lt 16

      openssl ecparama -list_curves sind schon vorher erzeugt kann openssl nicht selber

      openssl ecparam -name secp160k1 -text -noout da die Kurve festgelegt ist gibt es nurein object zuruck

      openss ecparam -name secp160k1 -text -param_enc explicit -noout

      openss ecparam -name secp160k1 -text -param_enc explicit -noout -conv_form compressednichtkomprimiert gibt nur die x-Koordinate aus

      Bei der komprimierten Form kann mit der Kurve die andere eindeutig bestimmen (oder so)

      Darstellung als komprimierte Punkt ist auch wieder patentiert

      413 Elliptische Kurven Nachtrag

      GF(p) (Galois-Field) sind Kurven mod p mit p Primzahl erfullen Gleichungen der Form y2 =

      x3 + a middot x + b

      GF(2k) Korper mit 256 Elementen = 28

      In OpenSSL nur elliptische Kurven mod p patentfrei

      Kofaktor finden Wir haben Punktgruppe G es gibt einen Generatorpunkt gn middotG = 0 n ist die Ordnung

      cofactor︸ ︷︷ ︸klein

      lowast order︸︷︷︸primzahl

      = Anzahl der Punkte

      (cofactor soll klein sein order Primzahl) Anstelle Punkt auf der elliptischen Kurve als (x y) (x ymod p) abzuspeichern TrickWenn es ein Punkt ist gibt es zu x zwei y die quadratische Gleichung y2 = x3 +a middot x+b erfulleny1 =

      radicx3 + ax + b mod p

      y2 = minusradic

      x3 + ax + b mod peine der beiden Zahlen hat als letztes Bit immer 1 die andere eine 0 man nimmt daher nur noch(x LSB(y)) (x und kleinstes Bit von y)

      70

      414 Rucksack-Verschlusseln

      Kryptosystem das sich bei OpenSSL zu recht nicht findet Hat den Anschein als wurde es aufeinem NP-vollstandigen Problem beruhen Problem ist NP-vollstandig weil es ein allgemeinesRucksackproblem istSieht aber nur so aus ist aber nur polynomial weil es ein Transformiertes eines leichten Ruck-sackproblems ist

      Gegeben W Fassungsvermogen des Rucksacks w1w2 wk kleine GewichteGesucht W =

      sumeiwi mit ei isin 0 1

      Rucksack-Verschlusseln von MerkleHellmann Rucksack mit schnell wachsenden Gewichtenist leicht zu berechnendh wi gt

      sumjlti e jw j nachstes Gewicht ist immer schwerer

      4141 Beispiel

      Rucksack W = 51 = 31 + 15 + 3 + 2 wprimei s 2 3 7 15 31Grundidee Aus dem schnellen Rucksack einen langsamen machenM gt

      sumwi k mit (M k) = 1 k middot 2 k middot 3 k middot 31 mod M

      M = 61 ist Modul k = 17 ist privater Schlussel m = (1 1 0 1 1) ist unverschlusselte Nachricht31 51 58 11 39 ist offentlicher Schlussel 34 + 51 + 11 + 39 = 135 = 13rarr c ist verschlusselteNachrichtEmpfanger rechnet aus dem erhaltenen Gewicht (135) das richtige Gewicht wieder raus 135middotkminus1

      mod 61 = 51 und kann das Problem mit den schnellen Gewichten losen

      Zum BrechenMan transformiert 34 51 58 11 39 in eine Folge die schnell wachsend ist zB 1 3 5 11 29dh das transformierte System kann auf mehrere Probleme zuruckgefuhrt werden man brauchtnur eine passende Rucktransformation finden Adi Shamir hat dafur einen polynomiellen Algo-rithmus angegeben

      415 Merkle Puzzle

      Man generiert sich 1000000 Nachrichten rdquoDas ist Nachricht ni fur den Schlussel k jldquo ni zufalli-ge 20-Bit Zahl k j 128-Bit SchlusselVerschlusselungsverfahren DES diese 1000000 werden mit 20-Bit Schlusseln verschlusseltAlice schickt die 1000000 Nachrichten an Bob als offentlichen SchlusselBob will Alice eine Nachricht schicken Er sucht eine der Nachrichten aus dem offentlichen

      71

      Schlussel aus und macht eine Brute-Force Attacke auf diese Nachricht Er findet ni und kiBob verschlusselt mit dem ki seine Nachricht und sendet ni im Klartext mit

      Alice und Bob haben linearen Aufwand Eve quadratischen

      Von everything2comAlice and Bob agree on a symmetric algorithmAlice generates a large number (over a million at least) of messages of the form ldquoThis is myindex X and my puzzle is Yrdquo Each of the messages is encrypted with a 20-bit keyAssume there are 220 (about a million) messages it takes 220 operations to get the key and acomputer can perform 220 operations per second Bob takes 1 second to recover the key to amessage Eve takes 12 daysNow make that 230 (about a billion) messages Bob still only takes a second to get the key andit will take Eve 34 years

      Public Key Idee hier schon vorhanden

      416 Rabin-Verfahren und Wurzelziehen

      Aus der Wikipedia (unter GNU Free Documentation License)

      Das Rabin-Kryptosystem ist innerhalb der Kryptologie ein asymmetrisches Kryptosystem dasauf einem Faktorisierungsproblem beruht und mit RSA verwandt ist Es lasst sich prinzipiellauch zur Signatur verwenden In der Praxis findet das Verfahren allerdings wegen bestimmterAngriffsmoglichkeiten kaum Anwendung

      4161 Schlusselgenerierung

      Aus der Wikipedia (unter GNU Free Documentation License)

      Seien p und q zwei moglichst groszlige Primzahlen fur die eine bestimmte Kongruenzbedingunggelten muss Der offentliche Schlussel n wird durch Multiplikation der beiden Zahlen erzeugtalso n = p middot q Der geheime Schlussel ist das Paar (p q) Anders ausgedruckt Wer nur n kenntkann ver- aber nicht entschlusseln wer dagegen p und q kennt kann damit auch entschlusselnZum Erzeugen des offentlichen Schlussels mussen die Zahlen p und q bekannt sein Der offent-liche Schlussel lasst sich nur genau aus den beiden Primzahlen erzeugenWaren p und q keine Primzahlen so lieszlige sich das Verfahren ubrigens nicht anwendenSeien beispielhaft p = 7 q = 11 (in der praktischen Anwendung handelt es sich um sehr vielgroszligere Zahlen um die Entschlusselung durch Dritte so schwierig wie moglich zu machen)Daraus ergibt sich der offentliche Schlussel n = p middot q = 77

      72

      4162 Kongruenzbedingung

      Aus der Wikipedia (unter GNU Free Documentation License)

      Fur p und q muss die Kongruenzbedingung(

      pminus1p

      )= (p minus 1) und

      ( qminus1q

      )= (q minus 1)

      (wobei fur(

      nminus1n

      )= (n minus 1)

      nminus12 equiv (n minus 1) mod n = (n minus 1) gilt)

      oder einfacher ausgedrucktp equiv q equiv 3 mod 4gelten

      Allgemein gilt namlich fur die Primzahl r mit r equiv 3 mod 4 und die Zahl a mit a equivb2 mod ra

      (r+1)4 equiv

      radica mod r

      Diese Eigenschaft dient dazu spater die Entschlusselung zu erleichternWegen 7 equiv 11 equiv 3 mod 4 ist die Kongruenzbedingung fur das Beispiel erfullt

      n = p middot q Produkt von Primzahlen

      m soll verschlusselt werden c equiv m2 mod n (einfach Quadrieren weil Wurzelziehen schwer istwenn der Modul ein Produkt von 2 Primzahlen (p middot q) ist weil wer Wurzel ziehen kann kannauch Faktorisieren (n)

      Begrundung Es gibt 2 Losungen c = x2 equiv y2 mod n Wie findet man nun die Faktoren von nn teilt x2 minus y2 = (x minus y)(x + y) und x gt y und (x minus y) lt n und n hat nur 2 Primfaktoren daherx minus y = p und x + y = q Wurzelziehen ist leicht mod p mod q Gesucht Wurzel c mod pxp = c

      p+14 mod p und xq = c

      q+14 mod q

      x2p equiv c

      p+12 equiv c

      pminus12 middot c mod p

      Weil cpminus1 equiv 1 mod p ist (nach kleiner Fermat) die Wurzel daraus cpminus1

      2 equiv plusmn1 wegen c equiv m2

      mod n gilt (m2)pminus1

      2 equiv mpminus1 equiv 1(p) Stuck fehlt Ende des Wurzelziehens

      4163 Verschlusselung

      Aus der Wikipedia (unter GNU Free Documentation License)

      Sei nun P = 0 nminus1 der Klartextraum (er besteht also aus Zahlen) und m isin P der KlartextNun lasst sich der Geheimtext c durch c = m2 mod n bestimmen Dabei ist c der QuadratischeRest von zu der Quadratzahl m2 zum Modulo der Schlussel-Zahl n Im praktischen Einsatzbietet sich die Verwendung von Blockchiffre an

      In unserem Beispiel sei P = 0 76 der Klartextraum m = 20 der Klartext Der Ge-heimtext ist hierbei nun c = m2 mod n = 15

      73

      Dabei muss man beachten dass fur genau vier verschiedene m das c den Wert 15 aufweistnamlich fur m isin 13 20 57 64 Ahnliches gilt fur die meisten c

      4164 Entschlusselung

      Aus der Wikipedia (unter GNU Free Documentation License)

      Seien allgemein c und r bekannt gesucht wird m isin 0 n minus 1 mit m2 equiv c mod r Furzusammengesetzte r (beispielsweise unsere n) existiert kein effizientes Verfahren zur Bestim-mung von m Ansonsten wenn also r isin P (in unserem Fall p und q) dann lasst sich jedoch derchinesische Restsatz ausnutzen

      In unserem Fall sind nun die Quadratwurzelnmp =

      radicc mod p

      undmq =

      radicc mod q

      gesuchtWegen obiger Kongruenzbedingung gilt

      mp = c(p+1)

      4 mod pundmq = c

      (q+1)4 mod q

      In unserem Beispiel ergeben sich mp = 1 und mq = 9Mit dem erweiterten euklidischen Algorithmus werden nun yp und yq mit yp middot p+yq middotq = 1

      bestimmt In unserem Beispiel erhalten wir yp = minus3 und yq = 2Nun werden unter Ausnutzung des chinesischen Restsatzes die vier Quadratwurzeln +r

      minusr +s und minuss von c + nZ isin ZnZ berechnet (ZnZ steht hierbei wie ublich fur die Menge derRestklassen modulo n die vier Quadratwurzeln liegen in der Menge 0 n minus 1)

      r = (yp middot p middot mq + yq middot q middot mp) mod nminusr = n minus rs = (yp middot p middot mq minus yq middot q middot mp) mod nminuss = n minus s

      Eine dieser Quadratwurzeln mod n ist wieder der anfangliche Klartext m Im Beispielgilt m isin 64 20 13 57

      417 Angriffe auf asymmetrische Verschlusselungsverfahren

      Fall RSA

      74

      4171 1 Angriff Common modulus attack

      Idee Gleicher Modul fur verschiedene Leute hatte den Vorteil dass man sich nur die kleinenoffentlichen Exponenten e1 und e2 merken muss nicht mehr die groszligen Module hat aber Nach-teil (e1 e2) = 1 teilerfremd umiddote1+vmiddote2 = 1 (mit erweitertem Euklid) Sendet man eine Nachrichtm an zwei Alices berechnet also c1 = me1 mod n und c2 = me2 mod n dann kann man mitden Chiffren c1 und c2 auch ausrechnen cu

      1 middot cv2 = me1u middot me2u = me1u+e2v = m mod n Nachricht

      erhalten

      4172 2 Angriff kleiner geheimer Exponent d

      Wenn |d| lt |m|3 dann ist Faktorisieren moglich Sicherheitsrisiko geheimer Exponent muss im-

      mer moglichst groszlig sein aus groszligem offentlichen Exponenten |e| kann man erfahren dass dergeheime Exponent klein ist

      4173 3 Angriff Faktorisieren

      Wenn p ungefahr so groszlig wie q also p minus q = ∆ klein ist dann ist ( p+q2 + ∆

      2 ) (ungefahr Wurzel n+ was kleines = p) middot( p+q

      2 minus∆2 ) = p middot q Man weiszlig dass die eine Zahl uber Wurzel n liegt und die

      andere Zahl unter Wurzel n (Wurzel n + klein = p Wurzel n - klein = q)

      4174 Echt schlechte RSA-Schlussel

      n = 3middotq (1024 Bit) und offentlichen Exponenten bei TCTrustCenter abgegeben Damit kann manzeigen dass PGP als Signaturverfahren schlecht ist Schlussel schlecht gewahlt dadurch kannjeder die Kommunikation mitlesen da n sehr leicht zu Faktorisieren die Leute sie konntender Person mit dem schlechten Schlussel vertrauenswurdige Nachrichten schicken und laufenin die Falle dass ihre Nachrichten nun offentlich sind Anderer Fall Bewuszligt solche Schlusselvergeben um Nachrichten in einem kompletten Netzwerk lesen zu konnen

      n = Primzahl e middot d equiv 1 mod (n minus 1)

      Mit n als Primzahl geht normale Entschlusselung nicht

      n p q e dp dq qi dc equiv me mod nm1 equiv cdp mod pm2 equiv cdq mod qdp equiv d mod (p minus 1)

      75

      dq equiv d mod (q minus 1)

      m = m2 + (m1 minus m2) middot qi︸ ︷︷ ︸mod p

      middotq

      m equiv cd mod q und m equiv cd mod prArr cd

      Bundesamt fur Informationssicherheit sagt zur Verwendung von RSA p q mussen unabhangigvoneinander zufallig erzeugt werden und 0 5 lt | log2 p minus log2 q| lt 30

      4175 Schnelles Faktorisieren bei Fehler im System

      DFA - Differential Fault Attack System das entschlusselt aber sich an einer Stelle verrechnetmprime1 ist Rechenfehler statt wirkliches m bekommt man ein mprime = m2 + (mprime1 minus m2)qi lowast qbildet man nun m minus mprime 0 aber durch q teilbar dh bringt man das System dazu einen Fehlerzu machen und hat man die Originalnachricht GGT (m minus mprime n) = q schon hat man den Mo-dul faktorisiert hat funktioniert viele Chipkarten verrechneten sich unter Streszlig Es reicht dasmprime zu kennen m kann unbekannt bleiben denn man rechnet (mprimee minus c n) = q es reicht eineentschlusselte Nachricht zu haben

      Anderer Angriff auf ChipkartenDPA - Differential Power Analysis Stromverlauf ansehen Differenzen bilden und sequentiellanalysieren

      Angriff auf El Gamal Systemegeheimer Schlussel a offentlich g p ga Verschlusselte Nachricht zufalliges k (gk mmiddotgak)= c 1Angriff k gleich fur verschiedene Nachrichten oder k1 k2 in Abhangigkeit oder k k+1 k+2 fur verschiedene Nachrichten oder a middot k + b

      4176 Angriff mit gewahltem Chiffretext

      Normalerweise bei RSA m minusrarr c = me mod n

      cprime vorgegeben fuhrt zu Klartext mprime = (cprime)d mod nAnforderung Beliebiger Chiffretext auszliger cprime = c wahlbar zu dem man dann den Klartext erhalt

      Problem bei RSA

      1 r (zufallig gewahlt)rarr re mod n = s

      2 cprime = s middot c mod nVerschlusselungsmaschine liefert dann (cprime)d = sd middot cd = (re)d middot m = r middot m mod n = mprime

      76

      3 Letzter Schritt m = mprime = rminus1 mod n

      Das geht nur theoretisch in der Praxis geht das nicht weil Angreifer kann das r nicht steuernr middot m wird aber von der Verschlusselungsmaschine verworfen weil es bei zufalligem r keinkorrektes Padding hat

      Schwache des RSA Multiplikationseigenschaftm1 rarr c1 und m2 rarr c2 (m1 m2 gultige Klartexte)m1 middot m2 rarr c1 middot c2m1 middot m2 nicht als gultiger Klartext zugelassen

      5 Signaturmechanismen

      Wie erstellt man signierte Daten und versucht ein Aquivalent zu dem zu schaffen was man imtaglichen Leben durch Unterschriften schafftEigenschaften einer Signatur sollen nachgebildet werden Man weiszlig von wem ein Dokumentkommt sie ist an eine Person gebunden und kann von niemanden sonst nachgemacht werden undvom Inhaber nicht abgestritten werden Nachtragliche Anderungen an unterschriebenen Doku-menten sollen nicht mehr moglich sein (gibt es so im echten Leben nicht)

      51 Integritatsschutz und Hashfunktionen

      To do neu Hashfunktionen Definition einsortieren

      Hashfunktion Beliebige Daten werden auf Binarfolgen konstanter Lange abgebildet

      Def Eine Hashfunktion H ist eine Abbildung 0 1lowast rarr 0 1k auf Hashwerte der Lange k

      SHA-256 (SHA- Secure Hash Algorithmen) - Hashwerte der Lange 256 Bit

      1 Es gibt Kollisionen

      d1 d2 H(d1) = H(d2)

      2k Hashwerte aber potentiell abzahlbar viele Daten

      Wunsch

      Man soll diese Kollisionen nicht finden konnen und am besten es gibt sie nicht Hashfunktionendienen zum unterscheiden von Daten

      77

      H(d1) H(d2) dann ist d1 d2

      Dementsprechend groszlig muss das k sein so dass genugend viele Werte unterscheiden kann

      Anforderungen an Hashfunktionen

      Wunsch Kollisionsresitent (schwer Kollisionen zu konstruieren) man kann nicht zwei Doku-mente mit dem gleichen Hashwert konstruieren

      Wunsch Zweites Urbild resistent (schwer zweites Urbild zu konstruieren) man kann zu einemDokument nicht ein zweites mit dem gleichen Hashwert bestimmen

      Geburtstagsparadoxon Kollisionen entstehen zum Beispiel in Horerkreisen 23 Horer(innen)dann haben mit mehr als 50 Wahrscheinlichkeit zwei am gleichen Tag Geburtstag

      H Horer rarr Datum h 7rarr Geburtstag(h)

      h1 h2 H(h1) = H(h2)

      Bestimme die Wahrscheinlichkeit dass keine zwei am gleichen Tag Geburtstag haben

      1 minus g =365middot middot(365minusn+1)

      (365n) wobei n die Anzahl der Horer ist (Fur n = 23 ungefahr 50)

      radic365 20

      g radic

      Hashwerte

      Bei 2128 Hashwerte muss man mit Kollisionen rechnen ( Bsp 30 bei 19 Personen 19 radic

      365)

      Merke Das Geburtsatgs Paradox beschert uns Kolisionen bei 2k2 Hashwerten

      To do ende Neu

      Hashfunktionen Schon bekannt aus dem ersten Semester (Hashtabellen)

      Allgemeine Eigenschaften

      1 Komprimieren beliebig lange Werte auf n-bit Werte

      2 Einfach (und schnell) berechenbar

      Werte Fingerabdruck Prufwert Hashwert

      78

      Kollisionen h(x) (Hashfunktion) mit x1 x2 aber h(x1) = h(x2) x1 und x2 ist KollisionWahrscheinlichkeit fur Kollision fur zufallig gewahlte Werte sollte 1

      2n sein (Anforderung anHashfunktion)

      Wir verlangen dass die Variabilitat in der Eingabe sich auch in den Prufwerten widerspiegeltsprich Wenn die Eingabewerte gleichverteilt sind sind es auch die Ausgabewerte

      To do 20090422

      To do einsortieren

      Kollisionen rsquovermeidenrsquo durch Groszlige 160 Bit Prufwerte (280 fur Kollision (2100 mdash AES 128 mdashbzw 2112 2128 als Kollisionsschranken)

      Zusatzlich Voraussetzungen fur die Pruffunktion

      1 Kollisionsresistenz Es muss schwer sein zwei Nachrichten m1m2 zu finden so dassH(m1) = H(m2)

      (Es ist schwer Zwillinge zu konstruieren)

      2 Zwillingsresistenz Es muss schwer sein (also kryptografisch Aufwendig) zu einer Nach-richt m1 eine Nachricht m2 zu konstruieren so dass H(m1)FH(m2) ist

      (Wenn man eine Bruder hat dann ist es schwer eine zwillings Schwester dazu zu konstru-ieren)

      (aufwendiger als erstens)

      3 Urbildresistenz Es muss schwer sein zu einem beliebigen Prufwert h eine Nachricht zukonstruieren so dass H(m) = h ist

      4 Die Prufwerte mussen rsquozufalligrsquo aussehen Die Ausgabe von H genugt Anforderungen aneinen Zufallszahlengenerator (gewisse statistische Unauffalligkeit) also pseudozufallig

      Eigentlich musste man noch mehr Fordern namlich dass man keine zwei Nachrichten findet diesehr ahnliche Hashwerte haben und dass man zu einer gegeben Nachricht keine Nachricht miteinem ahnlichen Hashwert findet

      Beispiel H gute Pruffunktion

      H(m) =

      |m| n fix so Hprime(m) = 0||H(m)(H(m) rangehangen)|m| = n so ist Hprime(m) = 1||m( rangehangen)

      h ist die Lange der Prufwerte von H

      79

      Hprime ist kollisionsresistent wenn es H ist aber nicht urbildresistent

      To do sortieren

      openssl 097d (2004) Prufwertstandardverfahren ist MD5

      Hashfunktion enthalt eine rsquoKompressionsfunktionrsquo m1

      To do Bild-siehe Blatt - 20090422

      K(sm) = sprime

      K(sm) = K(sm2)

      K(s1m1) = K(s2m2)

      s1 und s2 als Ergebnisse einer Prufwertberechnung darstellen

      K(s1m11) = s1 K(s01m21) = s2

      K(s1m12) = s K(s2m22) = s

      der rechte Teil war 2004 schon bekannt es musste nur noch die linke seite gelost werden

      511 Schlussellose Hashfunktion (Prufsummen ohne Schlussel)

      h x minusrarr h(x)Ausschlieszliglich Prufwert Gute Auswahl garantiert dass man mit h(x) feststellen kann ob xverandert wurde

      xprime ist verandertes DokumentDatenBerechnung des Prufwerts liefert h(xprime) = hprime h(x) bei guter Hashfunktion Veranderung kannalso festgestellt werden

      80

      Zusatzlich verlangte Eigenschaften

      1 Kollisionsresistenz Es ist schwer Kollisionen zu erzeugen Dh es ist schwer x1 x2 mith(x1) = h(x2) zu findenHeute ublich n = 80 oder n = 100 280 oder 2100 in sim 280 Schritten Definitiv 256 istnicht schwer 264 ist nicht mehr so schwer

      2 Zwillingsresistenz Zweites-Urbild-Resistenz second preimage resistance Es ist schwereinen Zwilling zu erzeugen ist x1 mit h(x1) vorgegeben so ist es schwer einen Zwillingx2 zu erzeugen mit h(x1) = h(x2)(Anmerkung Finger weg von Binarcode fur x1 x2)

      3 Einwegeigenschaft Urbild-Resistenz Es ist schwer zu vorgegebenem h(x) ein Urbild xzu berechnen

      h1(x) ist eine gute Hashfunktion mit den schicken Eigenschaften 1 2 3 (n + 1 Bitlange)

      h2(x) =

      1 x wenn x die Lange n hat0 h1(x) sonst

      h2(x) ist kollisionsresistent (Zwillingsresistenz) (wenn h1 so ist) h2 ist aber nicht urbild-resistent 1 x hat als Urbild x

      2 ist die wichtigere Eigenschaft man kann notfalls noch ohne 1 auskommen Zum Beispielletztes Jahr MD5 - Hashfunktion x1 x2 waren konstruiert h(x1) = h(x2)x1 oplus x2 = 0 010 010 010 01 (1 jeweils im msb) Immer noch ein gewisser Schutz dazum Beispiel keine Kollision auf -Kleinbuchstaben oder 64 moglich

      Schlussellose Hashfunktionen sollten alle 3 Eigenschaften haben

      Fast-Kollision x1 x2 h(x1) oplus h(x2) hat wenig 1-Bits Manchmal zu vermeiden

      partielle Urbilder Gegeben h(x) dann ist es schwer x bis auf wenige Bits zu bestimmen

      SHA-1 theoretische Schwelle 280 praktisch 269 (16022005) 263 (19082005)

      Geburtstagsparadoxon 23 Personen die Wahrscheinlichkeit dafur dass 2 am gleichen Tagim Jahr Geburtstag haben ist groszliger als 1

      2

      h(x) =dd-mmMit k Personen x1 xk lassen sich k2 Geburtstagspaare bilden Mit n Tagen h1 hn im Jahrlassen sich n2 Geburtstagspaare bilden davon sind n gute ( (h hprime) mit h = hprime)

      81

      mit k2 Paaren in n2 Paaren suchen und einen von n treffenHashfunktion hat 160 Bit Ausgabe wir brauchen nach Geburtstagsparadoxon 280 Personen ummit hoher Wahrscheinlichkeit den gleichen Geburtstag h mit 160 Bit zu erhalten

      Allgemeines Konstruktionsprinzip x wird auf eine bestimmte Blocklange erweitert (pad-ding)

      1 Nullpadding (auffullen mit Nullbits falls erforderlich)

      2 1-Nullpadding (eine 1 und dann mit Nullbits bis zur Blocklange)

      3 1-Null-Langenpadding (eine 1 und Nullbits (falls erforderlich) und die Lange (msb first64 Bit oder 128 Bit)) Am besten geeignet da bei 1 oder 2 automatisch Kollisionen ent-stehen x (mind 1 bit kurzer als die Blocklange) und x 0

      xrarr b1 bk Blocke der Lange 512 Bit

      Haufig Verlauf in 3 Phasen in openssl init update final

      1 Initialisierung der Hashfunktion Innerer Zustand aus 32-Bit-Wortern H1H2H3H4H5initialisiert (mit Primzahlen π was-auch-immer)

      2 Update A BCD E aus H1 H5 Runden mit Transformationen mit Eingabe bi 48|60|120 H1 = H1 oplus A H2 = H2 oplus B

      3 Finalisierung Ggbf Padding 1 oder 2 mal das Update

      4 Ausgabe H1H2 H5

      Einfaches Beispiel

      82

      So lasst sich aus einem Kryptoalgorithmus ein Hashalgorithmus konstruieren In der Praxis wer-den andere Konstruktionen (Quirlfunktionen) verwendet MD5 SHA-1 SHA-2 (224 256 384512) Whirlpool ISO-

      In OpenSSL MD2 MDC2 MD4 MD5 RIPEMD-128 RIPEMD-160 SHA-0 SHA-1 Allegebrochen ausser RIPEMD-160 und SHA-1 (evt MD2) dh es sind m1 und m2 bekannt mitMD5(m1) =MD5(m2) und m1 m2

      512 Demonstration Falschung

      Ist die Hashfunktion rsquoschwachrsquo kann man Kollisionen sogar konstruieren

      Beispiel fur MD5 MD4 ist seit 10 Jahren schwach SHA-1 wird schwach

      Zwei Postscript-Dateien mit unterschiedlichem Inhalt aber gleichem MD5-Hash Prinzip Datei1

      Header

      if x1 == x2 then strangestring = T1 else strangestring = T2 end

      Rest

      echo strangestring

      Quelltext (B)(B)eq︸ ︷︷ ︸Bedingung

      [tot] [Def] ifelse

      83

      Datei 2

      Header

      if x2 == x2 then strangestring = T1 else strangestring = T2 end

      Rest

      echo strangestring

      (A)(B)eq︸ ︷︷ ︸Bedingung

      [Def] [tot]

      x1 und x2 unterscheiden sich nur sehr wenig und Header if x1 und

      Header if x2 sind je ein Nachrichtenblock mit dem gleichen Hashwert

      Sieht aus wie zweites Urbild-Angriff sind aber in der Tat zwei bose Zwillinge

      Quelle wwwcitsrubdeMD5Collisions

      Fazit Dokumente sind nicht mehr unterscheidbar

      Kollision besteht aus zwei Dokumenten d1 d2 mit dem Hashwert

      Bei MD5 kann man zwei rsquoDokumentersquo (Prafixe bis AB) konstruieren die den gleichen Has-hwert haben

      Man kann aber zu einem Dokument d0 (dem Original) noch nicht ein zweites dprime0 konstruierenso dass d0 dprime0 eine Kollision bilden

      Beispiel Ein SSL-Server-Zertifikat war (MD5) ununterscheidbar von einen SSL-ZertifizierungsstellenZertifikat womit man so viele (evt rsquobosersquo) SSL-Server-Zertifikate erstellen wie man wollte

      MD5 ist nicht kollisionsresistent

      MD5 ist noch 2 Urbild resistent

      52 Unterschied MD5 und SHA

      MD5 128bit Lange (Kollision 264)

      SHA-224 224bit Lange (Kollision 2112)

      SHA-256 256bit Lange (Kollision 2128)

      84

      mehr rotation lokale Unterschiede habe groszligere globale Unterschiede zur Folge bei SHA

      53 Secure Hash Standard SHA-2

      FIPS 180-2 US-Standard Nachfolger von FIPS 180 SHA-0 und SHA-1 sind die SHA-2-Algorithmen(noch nicht in OpenSSL) SHA-224 SHA-256︸ ︷︷ ︸

      32 Bit

      SHA-384 SHA-512︸ ︷︷ ︸64 Bit

      SHA-224 bzw SHA-384

      ist rsquoungefahrlsquo die linke Seite von SHA-256 bzw SHA-512

      Basisfunktionench (xampy)|(sim xampz) Auswahlfunktionpar x and y and z Paritatsfunktionmaj (xampy)|(xampz)|(yampz) Mehrheit

      Ausserdem Addition modulo Wortlange rot left und shift leftMessage M1M2 MN padding

      1 paddinglength auf 5121024 Bit

      51232 = 16 = 1024

      64

      2 Messageblock (16 Stuck) wird erweitertW0W1W2 W15︸ ︷︷ ︸

      Messageblock

      W79

      Wt = rot(Wtminus3) + rot(Wtminus8) + rot(Wtminus14) + rot(Wtminus16) fur t = 16 79rot(x) = rotl7(x) + rotl18(x) + shl3(x)

      3 8 temporare Variable a b c d e f g h mit Breite gleich Wortlange (32 oder 64 Bit) be-schreiben einen inneren Zustand der Funktion

      SHA-Maschine bekommt initialen Zustand H0 H7 Die ersten 32 Bit der gebrochenenAnteile der Quadratwurzeln der i Primzahl Fur SHA-256 und SHA-512 i = 1 8 furSHA-384 und SHA-224 i = 9 16

      85

      Am Anfang jeder Runde a = H0 b = H1 c = H2

      Jedes Wi erzeugt einen Schritt (kleine Zustandsanderung)

      T1 = h + rot(e) + ch(e f g) + Kt + Wt

      T2 = rot(a) + maj(a b c)

      h = g g = f f = e e = d + T1 d = c c = b b = a a = T1 + T2K0 K80 Schrittkonstanten Bruchteile der dritten Wurzeln der ersten 80 Primzahlen80 Schritte in einer Runde

      4 XOR-Operationen H0H1 H7 minusrarr H0 oplus aH1 oplus b H7 oplus hHi beschreiben den inneren Zustand nach Runde Hi am Anfang initialisiert

      5 Ausgabe ist H0 H7 am Ende

      To do ware auch interessant fur die Prufung

      Es wird eine neuer SHA-3 gesucht Voraussetzungen

      1 Nachrichtenexpansion muss komplexer werden

      2 Nachrichtenblocke mussen positionsabhangig werden (Skein tweakable

      3 innerer Zustand muss groszliger werden (2x Hashlange)

      531 Problem bei MD5 und SHA-0

      Beispiel 1 Innerer Zustand zwischen einzelnen Schritten hat Bits die die folgenden Bitsmehr oder weniger beeinflussen Damit sinkt die Komplexitat beim Brechen Besondere Bitsfuhren zur Reduktion der Anzahl der Gleichungen und erlauben eine schnelle Konstruktion vonspeziellen Zwillingen m1m2 mit MD5(m1) =MD5(m2) m1 oplus m2 = viele Nullen

      Parallel hashen rdquoKontostand -20073ldquo und rdquoKontostand +700ldquo Ab -2 bzw +7 entstehen un-terschiedliche innere Zustande Nachkommastellen bei dem zweiten String anpassen um dieUnterschiede auszugleichen

      86

      Aktuelle Angriffe erzeugen keinen zweiten Zwilling sondern rsquonurrsquo falsche Zwillinge Zu einemguten gibt es keinen schlechten Zwilling

      Beispiel 2 Es gibt zwei Zertifikate mit unterschiedlichen Inhalten und gleichem MD5-HashDas sind dann aber 2 schlechte Zertifikate MD5 ist also nicht kollisionsresistent aber momentanzwillingsresistent

      SHA-1 hat momentan eine Komplexitat von 263 anstelle von 280 fur Kollisionen

      mH(m) (H(m) aus vertrauenswurdiger Quelle) rArr m kann nicht unbemerkt verandert werdenManipulation Detection Codes () Das ist keine Prufung des Ursprungs Um zu prufen ob maus einer bestimmten Quelle stammt benutzt man MACs

      532 MACs (Message Authentication Codes) (Prufsummen mit Schlusseln)

      Sei k ein geheimer Schlussel den nur Alice und Bob kennen m ist die Nachricht BerechneHk(m) = h keyed Hash Die Hash-Prufwerte sind also Schlusselabhangig

      (m h) mit h aus vertrauenswurdiger Quelle

      bull Veranderungen sind erkennbar

      bull Nur mit Kenntnis von k kann man h berechnen also nur mit dem Schlussel kann man denPrufwert falschen

      Empfanger der k kennt kann n auf Integritat prufen Um sich vor Angreifern zu schutzen mussfur eine Prufung der Prufwert geschutzt werden

      Hk(mprime) = h

      (m1 h1)(m2 h2)

      rarr (m h) muss verhindert sein

      87

      Standardisiertes Verfahren fur Keyed hash auf der Basis von MDCs RFC 2104 in OpenSSL zufinden HMAC)

      H(k oplus auszligeres Padding H(k oplus inneres Padding m))︸ ︷︷ ︸512- oder 1024-Bit-Blocke

      k linksbundig aufgefullt mit Nullen inneres Padding = 0x36 0x36 auszligeres Padding = 0x5c0x5c Langenpadding am Ende des inneren H

      Berechnen Sie mit OpenSSL und dgst -c oder -hex den Hashwert der leeren Datei

      henrykgleam henryk $ openssl dgst -c -hex -md5 devnull

      MD5(devnull)= d41d8cd98f00b204e9800998ecf8427e

      henrykgleam henryk $ openssl dgst -c -hex -sha1 devnull

      SHA1(devnull)=

      da39a3ee5e6b4b0d3255bfef95601890afd80709

      openssl dgst -sha256 -hmac 1234567890 devnull

      HMAC-SHA256(devnull)= ba92e0bfa35d8a018831f3675f0b4314c8468d4d96e6981b85ba3390c23308fd

      HMAC

      To do vervollstandigen

      Mac mit Hashfunktion K- Schlussel H-Hashfunktion

      H(K oplus oPadH(

      0x565656︷ ︸︸ ︷K oplus iPad︸ ︷︷ ︸Bitlange H

      n))

      K n1 rarr Mac(n1K) = m1

      K nprime = n1||langenpadding ||n2

      (K nprime) rarr HInitialisiert mit m1(n2) = m2

      ISO-10118-32004

      88

      54 Whirlpool

      Basis fur eine Hashfunktion ausgehend von einer einzigen Verschlusselungsfunktion

      Aus der Wikipedia (unter GNU Free Documentation License)

      WHIRLPOOL ist eine kryptografische Hash-Funktion die von Vincent Rijmen und Paulo SL M Barreto entworfen wurde Sie wurde nach der Whirlpool-Galaxie im Sternbild der Jagd-hunde benannt

      Whirlpool funktioniert mit Daten von weniger als 2256 Bit Lange und gibt einen Hash-Wert von 512 Bit aus

      Die Autoren haben erklart dass Whirlpool nicht patentiert ist und es nie sein wird Whirl-pool darf kostenlos zu jedem Zweck verwendet werden Die Referenz-Implementation ist ge-meinfrei

      The WHIRLPOOL algorithm has undergone two revisions since its original 2000 specifi-cation In the first revision in 2001 the s-box was changed from a randomly generated one withgood cryptographic properties to one which has better cryptographic properties and is easier toimplement in hardware In the second revision (2003) the diffusion matrix was changed

      People incorporating WHIRLPOOL will most likely use the most recent revision ofWHIRLPOOL while there are no known security weaknesses in earlier versions of WHIRL-POOL the most recent revision has better hardware implementation efficiency characteristicsand is also likely to be more secure

      E

      +

      H

      H

      m

      AES-Variante

      i-1

      i-1

      i

      55 Zusammenfassung

      To do oben einsortieren

      89

      Manipulation Detection Codes MDCsHashfunktionen MD5SHA-1SHA-2Allgemeines Konstruktionsprinzip aus Langenpadding und Iterationen

      bull MACsKeyed Hash HMAC mit Hashfunktion aufgebaut aus prefix und suffix

      bull CBC-MAC Nachrichtenblocke m0m1 mk

      + +

      MACc c c

      K

      m

      m m

      0

      1

      1

      2

      k

      k+1

      Risiko Weil keine Langeninformationen dabei sind ist es anfallig gegen Einsetzen undAustauschen Wird gerne Verwendet bei Anwendungen die feste Langen haben zBChipkartenCBC-MAC-verbessert

      K

      DES

      1

      K2

      K3

      larrminus CBC-DES3-MAC

      Benutzt zB beim digitalen Tachograph

      Es gibt zwei Grundlegende technische Mechanismen Ohne Schlussel und mit Schlussel Nur mitSchlussel lasst sich spater der richtige MAC-Wert ausrechnen und bestimmen dass die Nachrichtnicht verandert wurde und vom richtigen Absender kommt

      90

      56 Digitale Signaturen

      To do einsortieren

      Definition

      s ist die Signatur zu einer Nachricht n mit einem Signaturverfahren S und einem Verifikations-verfahren V

      S N times D︸︷︷︸Signaturschlussel

      rarr s

      V N times E︸︷︷︸Verifikationsschlussel

      timess rarr ja nein

      V(n e S (n d)) = 1

      V(n e S (nprime d)) = 0 =( n eprime S (n d)) = 0

      RSA

      S (n d) =

      V(n s e) = E(e s)eqH(n)

      openssl dgst -sign keyrsa -hex nulltxt

      openssl -sign keyrsa -sha256 -out nullsig nulltxt

      openssl rsautl -in nullsig -encrypt -inkey keyrsa -raw -hexdump

      in Beta openssl sha256 -hex nulltxt

      Anstatt der Symmetrischen Verschlusselung wie bei MAC kann man auch asymetrische Verfah-ren verwenden

      1 h mit Namen (0D) in ASN1 Struktur 0001 FF FF 00 (ASN1-Struktur)

      2 Padding

      3 rsquoEntschlusselnrsquo

      4 rsquoVerschlusselnrsquo

      5 ASN1 Struktur Hash OID Wert rausziehen

      91

      6 vergleichen 0 1

      openssl hatte in den fruheren Versionen einen Fehler in der Signaturprufung

      langer RSA Schlussel

      exponent e klein (3)

      lange Signatur S

      S 3 = h

      wenn h sehr lang ist konnte man folgendes machen

      h= (0001FF00ASN1 rsquomullrsquo)

      man konnte den rsquoMullrsquo so verandern das h = s3 (also so lange verander bis h dritte Wurzel vons ist)

      Es wurde nicht uberpruft ob am Ende der ASN1-Struktur auch das Ende der Daten ist

      siehe Webseite RSA Zertifikate mit Exponenten 3

      To do alt

      Digitale Signaturen schutzen die Integritat und die Authentizitat Wir betrachten hier welche dieauf asymmetrischen Verfahren basieren Symmetrische gibt es werden aber in der Praxis nichtbenutzt Es gibt 2 Typen

      1 RSA

      2 DSA

      561 RSA

      m = p middot q (2048 Bit)Exponent e klein (64 Bit)Exponent d groszlig mit e middot d equiv 1 mod (p minus 1)(q minus 1)

      xrarr c = xe mod m (offentlich)cd equiv x mod m (geheim)xed equiv x

      92

      Man rechnet zuerst xrarr s = xd mod m Das kann nur derjenige der uber den privaten Schlusseld verfugt Aus s rechnet man se mod m = (xd)e mod m equiv xemiddote mod m = x Bei RSA konnenwir die Rolle vom privaten und offentlichen Algorithmus vertauschen so dass folgt Nur wer dkennt kann zu x ein s erstellen so dass se equiv x mod m ist

      Anwendung dafur Digitale Signatur Wir haben Nachricht M und erstellen daraus einen PrufwertH(M) mit einer Hashfunktion und rechnen

      H(M) = x minusrarr s = xd mod m

      Dann ist (M s) das digital signierte Dokument M (und s die Signatur)

      To do einsortieren neu

      Signatur mit Anhang (with appendix) (m sig)-Signierte Nachricht

      Ver(vm sig)

      Signatur mit Nachrichtruckgewinnung (with (partial) message recovery) (m1mprime2) = mprime so dassmprime2 ein Teil der Nachricht m = m1||m2 enthalt

      Ver(vm1mprime2) (partial recovery)

      Ver(vminusmprime) (complete recovery)

      In RSA

      PKCS1 ver 15 Signatur mit Appendix

      PKCS1 ver 21 (noch nicht in OpenSSL)

      To do ende einsortieren

      Prufung (M s) rarr H(M) = x Ist se mod m = x Nur wer das d hat kann das Paar (M s)

      erstellen und ist damit Inhaber des Dokuments

      562 Eigenschaften eines asymmetrischen Verschlusselungsverfahren

      Alice kennt den offentlichen Schlussel von Bob Bob kennt seinen geheimen Schlussel

      93

      Alice123 Bob Alice Bob123offB gehB gehA offA

      EoffB(m) = c rarr DgehB(c) = m rarr

      MS gehA

      (m s)

      rarr

      Voffa(m s) =

      0 ungultig1 gultig

      Mehrere Alices konnen an Bob schreiben Entschlusselung mit dem geheimen Schlussel vonBob Hier wird eine Nachricht so verschlusselt dass man die Nachricht aus c zuruckgewinnenkann

      Alice sendet an alle Bobs Hier wird ein Paar erzeugt dass in einen Verifikationsalgorithmusgestopft werden kann der dann ja oder nein sagt

      Es ist Zufall dass man mit RSA sowohl einen Verschlusselungsalgorithmus als auch einenSignaturalgorithmus erstellen kann Mit anderen geht das nicht

      Hatte man nicht die Urbildresistenz der Hashfunktion konnte man ein s nehmen und dazu aus-rechnen se mod m = x jetzt konnte man zu dem x ein Urbild M ausrechnen und bekame einPaar (M s) dass gultig signiert ist Dazu kommen in Wahrheit noch Padding und Objekt Identi-fier der angibt womit signiert wurde und Parameter

      30 = SEQUENCE06 = OID2B 0E 03 02 1A = SHA12A 86 48 86 F7 0D 01 01 01 = rsaEncryption05 = NULL Bezeichner fur die leere Menge hier bedeutet es keine Parameter04 = OCTET STRING02 = INTEGER03 = BIT STRINGSchema Tag Length Value

      Das ganze lasst sich mit openssl asn1parse erfahren (asn1 = Abstract Syntax Notation 1)Schlussel immer SEQUENCE SEQUENCE OBJECT PARAMETER BIT STRING bzw Se-quence aus OID und Bitstring Das erste Byte in einem Bitstring gehort nicht zum Bitstring dazusondern gibt die Nummer der von hinten ungenutzten Bits an

      OID-Liste httpwwwalvestrandno

      Mhminusrarr

      SHA-1

      H minusrarr

      Padding

      00 01 FF FF 00 b c b H c

      Identifier Oktetstring

      Padding nach PKCS1 v15

      ASN1 Objektidentifier fur SHA-1 (131432) wird als 2B 0E 03 02 1A codiert

      94

      xyabcd (Dot-Notation)darr

      bx middot 40 + yc babcdc1 Byte Byte (Oktett)

      12840113549127 als Ubungsaufgabe

      563 RSASSA-PSS-Padding

      SSA Signature Scheme with Appendix

      PSS Probabilistic Signature Scheme

      RFC 3447 (siehe figure 2)

      8 zero salt

      h

      0000 01 salt

      +MGF h

      maskiertes seed BC00 1024

      Bits

      zu 0

      setzen

      soviele dass die Eingabe

      kleiner als der Modul wird

      Eingabe fuumlr die Signatur

      M l(M) lt= 2^(64)-1 bei SHA-1

      20 Byte 20 Byte

      To do start einfugen

      MGF-Maskengenerierungsfunktion (beruht auf der Hash-funktion)

      95

      MGF rArr DBmask dann DB oplus DBmaskNullungminusminusminusminusminusminusrarr maskedDB

      Nullung-Nullung der oberen Bits so dass maskedDB kleiner als Modul ist

      Signieren (EMSA-PSS)+(RSA-Verschlusselung)

      Verifikation (RSA Op)

      1 RSA-Operation

      2 EM

      Prufung ob BC am Ende

      H abspalten und mit MGF DBmask erzeugen

      XOR mit Rest von EM

      DBprime = 0000︸︷︷︸Nullungsfehler

      0001 Salt

      00 Label mhash SaltHashminusminusminusminusrarr Hprime

      = H

      Jede Eingabe in die RSA-Operation ist pseudo zufallig (Jede Eingabe hat einen neuen Signa-turwert)

      Angenommen man wendet die RSA-Operation direkt auf m an

      mprime-Signatur mprime = md mod n

      m1m2

      m1 rarr mprime1 mod n = mprime1

      m2 rarr mprime2 mod n = mprime2

      Verifikation

      (m1m2) mod n rarr (m1 middot m2)d = md1md

      2 = mprime1 middot mprime2 mod n

      (rsquoMan kann mit zwei Signaturen eine andere erzeugenrsquo)

      96

      To do ansehen

      Unsicher zeitaufwendig kann leicht gebrochen werden

      m rarr mprime = md mod n

      re = rprime mod n

      chosen message m middot rprime rarr (m middot rprime)d mod n = md middot red mod n = mprime middot r mod n

      (mprime middot r) middot rminus1 mod m = mprime

      (sieht nach Zufallszahlen aus aber die kann man auf eine vorher gewahlte Nachricht zuruck-rechnen)

      To do ende einfugen

      Nachricht M mit |M| lt 264 minus 1 wird mit Hashfunktion h gehasht Davor kommen 8 Zerobytedanach ein Saltwert (Saltwert wird benotigt fur die Auswertung der Signatur und wird verstecktin der Signatur) Auf das Gesamte wird die Hashfunktion h erneut angewendet

      Verstecken des Saltwerts --0000 (rarr eventuell leer) 01 salt-- oplus mit einer Maske gebildetaus dem Hashwert und einer Maskengenerierungsfunktion

      An den Anfang der Eingabe fur die RSA-Signatur werden 0-Bits so gesetzt dass die Eingabefur die RSA-Signatur kleiner als der Modul ist Wenn m volle Bytelange hat wird das obersteBit gleich 0 gesetzt (RSA-Signatur ()d mod m mit m = p middot q) An das Ende der Eingabe fur dieRSA-Signatur wird BC angehangt

      Durch den Saltwert wird das Ergebnis zufallig und schwer vorhersagbar Wird leider nicht oftverwendet da die Maskengenerierungsfunktion Chipkarten teuer machen wurde

      Es existiert eine DIN Variante zum v15 PKCS1 DIN-RN-Padding00 02 Zufallsbytes(ohne 00) 00 Identifikator Oktettstring

      564 DSA

      Vergleich ElGamal und elliptische Kurven

      K-elliptische Kurve y2 = x3 + ax + b mod p

      97

      p-Primzahl ( 2 3)

      Punkte auf der Kurve bilden eine Gruppe E(k)

      P + Q = R k middotG isin E(k)

      G ein Punkt (Generator) mit groszliger Ordnung n

      1 middotG 2G 3G n︸︷︷︸sehr groszlig

      middotG = 0

      n ist eine Primzahl und G 2G nG = 0 ist die gesamte Gruppe E(k)

      Signaturschlussel t-zufallig aus 1 n minus 1 Verifikationsschlussel ist P = t middotG

      Standard FIPS 186-3 rarr finde den Fehler

      To do ende einfugen

      p g Generator gpminus1 equiv 1 mod p gpminus1

      x 1 mod p

      Geheimer Schlussel xoffentlicher Schlussel y = gx mod pk(gkm middot yk) = c

      Parallel bei elliptischen Kurven G geheim x offentlich Y = x middotG

      (k middotGm middot k middot Y)

      DSA auch bekannt als DSS FIPS-186

      Primzahl p (hat zB 1024 Bit im Standard variabel) so gewahlt dass pminus 1 einen Primteiler derLange 160 Bit enthalt q|p minus 1 mit |q| = 160 BitAusserdem Es gibt einen Generator g mit der Eigenschaft gq equiv 1 mod p Das findet man

      indem man einen h Generator in mod p auswahlt und g = hpminus1

      q hpminus1 equiv 1 mod p ausrechnet

      x geheimer Signaturschlussel mit 160 Bit gx mod p ist der offentliche Schlussel

      Signaturerstellung Nachricht M Hashwert h(M) = H ausrechnen Generiere Zufallszahl k mit160 Bit (k isin 1 n minus 1) und berechne

      To do neu

      k middotG = (x y) r = x mod n

      98

      s = hminus1 middot (h + tr) mod n

      (r s) ist die Signatur

      To do ende neu

      r = (gk mod p) mod q und s = (kminus1(H + x middot r) mod p) mod q r und s sind Exponenten furmod p werden aber nochmal mod q genommen um Platz zu sparen (r s) wird die Signaturwerden (s 0 mod q r 0 mod q)

      Signaturverifikation Berechne w = sminus1 mod qu1 = H middot w mod q u1 = H middot w + i middot qu2 = r middot w mod q

      Berechne

      gu1 middot yu2 equiv gHmiddotsminus1middot gxmiddotrmiddotsminus1

      equiv gHmiddotk(H+xmiddotr)minus1middot gxmiddotrk(H+xmiddotr)minus1

      equiv gHmiddotkmiddot(H+xmiddotr)minus1+xmiddotrmiddotk(H+xmiddotr)minus1

      equiv gkmiddot(H+xmiddotr)middot(H+xmiddotr)minus1

      equiv gk mod p

      Prufe also ob (gu1 middot yu2 mod p) mod qequiv r

      Die Signatur zu M ist (r s) mit r und s haben 160 Bit so dass man 320 Bit Signatur hat (kleinerals die 1024 Bit Signatur von RSA)

      Um den geheimen Schlussel zu bestimmen muss man den diskreten Logarithmus mod q be-rechnen und das gilt als schwer

      565 ECDSA - DSA mit Elliptischen Kurven

      K - elliptische Kurve mit Punkten mod pG - Generatorpunkt G hat Ordnung q [q middotG = 0] q Primzahlx - Restklasse mod q Y = x middotG

      r = [(k middot G)1] mod q (rarr 1 Koordinate mod q) s = kminus1(h + x middot r) mod q [u1 middot G + u2 middot Y]1

      mod qequiv r

      700 Bit fur alle Parameter

      99

      To do neu

      ECDS DSAGenerator

      G g gq = 1 mod pdA = [1 q minus 1]

      zufalligPA = dA middotG auf E pA = gdA mod p

      Signatur k isin [1 q minus 1] r = (gk mod p) mod qr = x mod q

      s = kminus1 middot (h + dA middot r) mod q

      h ist genauso lang wie q (gleiche Bitlange)

      h sind die linken Bits von H(n)

      (Bem RSA ist bei Elipt Kurven nicht einsetzbar deshalb ist DSA eine gute alternative)

      link draft-lochter-pkx-brainpool-ecc-03 - eine art RFC zu Brainpool

      openssl ecparam -name brainpoolP256r1 -param_enc explicit -noout

      E =(x y) y2 = x3 + Ax + B mod p

      Dann ist G = 04x (in einer Prufung ware interessant zu wissen was das fuhrende Bytebedeutet und welche Varianten es gibt)

      openssl ecparam -name brainpoolP256r1 -genkey

      -param_enc explicit -noout gt eckey

      (pub - offentlicher Punkt)

      openssl dgst -sha256 -sign eckey eckey gt ecsig

      xxd -p ecsig

      openssl asn1parse -i -in ecsig -inform DER

      Man erhalt die beiden Integers r und s

      (Bem bei Eliptischen Kurven ist die Bitlange kurzer da Algorithmen hohere komplexitat als so

      100

      haben)

      (Hausaufgabe erzeuge zwei Kurven (512Bit - Brainpool bzw 521 NIST) mit anderen Hash-funktionen (mdripemd whirlpool) Signatur (rs) )

      (Bem siehe Wikipedia El C DSA r=0 Abfrage weil sonst dA keine Rolle spielt s= 0 Abfrageweil man sonst mit minusz = r middot dA mod q den geheimen dA ausrechnen kann)

      [Spickzettel zur HA

      h-linke Bits des Hashwertes

      n1 = h middot sminus1 mod q

      n2 = r middot sminus1 mod q

      V = n1 middotG + n2PA = (x y) r = x mod q

      v = gn1 middot pn21 mod p r = v mod q

      (r rarr 0 1 jeweils)

      h middot sminus1 middotG + rsminus1PA = h(k(k + dAr)minus1 middotG + r(k(h + dAr)minus1)dAG = (hk + rkdA)(h + dAr)minus1G = V

      = k (h + rdA) middot (h + dAr)minus1︸ ︷︷ ︸=1

      G

      = k middotG

      ]

      Magma

      p=StringToInteger(rsquorsquo16)

      a=StringToInteger(rsquorsquo16)

      b=StringToInteger(rsquorsquo16)

      IntegerRing(p)

      E=EllipticCurve([KaKb])

      G=E[KStringToInteger(rsquo1Halfte Generatorrsquo16)

      101

      KStringToInteger(rsquo2Halfte Generatorrsquo16)]

      Jetzt kann man rechnen

      qG eq E0

      true

      mdashmdashndash

      qG

      (010)

      mdashmdashmdash

      Kq=IntegerRing(q)

      dA=1+Random(q-2)

      PA=dAG Prufung ob ungleich Null fehlt noch

      h=K12121212121212121212121212121

      k=1+Random(q-2)+1damit keine Null rauskommt

      X=kG

      x=X[1]

      r=(IntegerRing()x) mod q

      s= (Kqk)ˆ(-1) ((Kqh)+ r dA)

      rs

      Verifikation

      u1=h(Kqs)ˆ(-1)

      u2=r(Kqs)ˆ(-1)

      102

      Y=(IntegerRing() u1)G+( IntegerRing() u2) PA

      Y

      ((IntegerRing() Y[1]) mod q) eq r

      =rArr siehe Verzeichnis

      Prufen ob Openssl gut gerechnet hat

      OpenSSL

      wie erzeugt man den offentlichen Schlussel openssl ec -in eckey -pubout

      openssl ec -in ecpub -pubin -text -noout

      -pverify

      To do neu-ende

      To do neu-20090617

      Bem Attributes muss die leere Menge sein und darf nicht weggelassen werden

      SHA1 nur noch zur Unterscheidung benutzen

      57 Widerrufen von Zertifikaten

      siehe rfc5280 S53

      Erste Sperrliste

      Ist eine Liste in der die Nummern der gesperrten Zertifikate stehen

      Beispiel CA erstellen

      perl ˜optopenssl-100-beta2appsCApl -newca

      103

      Zertifikat fur den Nutzer erstellen

      perl ˜optopenssl-100-beta2appsCApl -newreq

      Signieren

      perl ˜optopenssl-100-beta2appsCApl -xsign gt aypem

      Man kann noch weitere Zertifikate erstellen allerdings wird dann der pem Key geloscht Mankann dann feststellen dass die Seriennummer nur um eins erhoht wird Man kann auch openssl ca -gencrl -out -cl1pem -crlhours 12benutzen und dabei die Seriennummer selber angeben

      openssl crl -text -in crl1pem -noout

      Zertifiziert wird nur der Teil zwischen Certificate Rev List bis No Revok Cert Da dieser Teilsehr klein ist ist es recht schwer Kollisionen mit SHA1 dafur zu konstruieren

      Dann gibt es noch Informationen wann es die nachsten Updates gibt (Last Update Next Update(optional)) Alte Sperrlisten bleiben aber Gultig die neuen gelten nur zusatzlich

      Zertifikat ungultig machen

      openssl ca -gencrl -out cr13pem -revoke demoCAcertsF8C85pem -crl_reason keyCompromise -crlhours 12

      aktualisieren

      openssl ca -gencrl -out cl4pem -crlhours 12

      Nun nachsehen mit

      openssl crl -text -in crl4pem -noout

      To do neu-ende

      104

      58 Was es noch so gibt

      581 blinde Signaturen

      Gut fur anonymes digitales Geld Normalfall Bank kriegt digitalen Scheck belastet das Kontound schickt einen von ihr signierten Scheck zuruck Problem Wenn derjenige der den Scheckspater einlosen will zur Bank geht kann diese den Scheck zum Aussteller zuruckverfolgen

      Mit anonymen Signaturen Aussteller erzeugt viele (zum Beispiel 1000) unterschiedliche Schecksmit je einer Zufallszahl und dem gleichen Betrag aber ohne Name Kontonummer etc Diese1000 sendet er verschlusselt an die Bank Die Bank sucht sich zufallig (das ist wichtig) 999davon aus und fordert fur diese den Schlussel an Die Bank entschlusselt diese Schecks unduberpruft ob uberall der gleiche Betrag drinsteht Wenn ja dann ist davon auszugehen dass auchder auf den gleichen Betrag lauft Das Konto wird entsprechend belastet und der Scheck wirdblind (also ohne hineinzusehen) signiert und dem Aussteller zuruckgeschickt Der packt denScheck aus (wobei die Signatur gultig bleibt) und hat jetzt einen von der Bank signierten digita-len Geldschein den die Bank nicht mehr zuruckverfolgen kann

      582 anonyme Signaturen

      Beispiel Elektronische Wahlen wo man nicht mochte dass man weiszlig wer es unterschriebenhat

      6 Zertifikate

      To do neu-20090520

      m rarr Signatur und Verifikation

      mprime rarr Signatur und Verifikation

      Vertrauen in den offentlichen Schlussel

      Schutzen den Schlussel durch Prufwert den Prufwert Schutzen wir durch eine Signatur Vertrau-en eines Schlussel ubertragt sich an einen anderen Das ganze scheint sich im Kreis zu drehen

      Aber es handelt sich um einen Graph (Der Graph muss nicht transitiv sein - A vertraut BB vertraut C aber A vertraut nicht unbedingt C) Zb Baum mit Wurzel (PKI) dann gibt es

      105

      vertrauens-Normen die den Ebenen eines Baumes entsprechen Die andere Variante ist das PGPWeb of Trust bei dem der Baum ungeordneter ist und eine Art Vertrauensbereiche hat

      Dass eine Zertifizierungsstruktur funktioniert braucht es klare Regeln fur den Umgang mit Zer-tifikate

      Standards

      ANSI X509

      X500

      openssl internet Profil

      RFC 5280 (alt 3280 2459)

      Definition Zertifikat bindet (durch Signatur) einen offentlichen Schlussel an einen Namen(Subjekt)

      (siehe rfc5280 S16 - Certificate= SEQUENCE und TBSCertificate) (in TBSCert er-scheint rsquosignaturersquo recht fruh damit schon mit dem Hash-Algorithmus begonnen werden kannaber warum steht in Certificate dann nochmal signature -Bessere Ordnung)

      Zertifikat bei CA-cert runterladen und dann mit openssl ansehen

      openssl x509 -in class3crt -text -noout

      openssl asn1parse -i -in class3crt

      Zur ausgabe des ersten (siehe auch rfc5280)

      Version es gibt momentan 3 Versionen

      Serial Number ist ein Integer kann so groszlig sein das man nicht mehr in den Hash-Block mehrkommt (bis 20 Byte geht)

      Bundesnetzagenturde 15549pdf sagen dass Serien Nummern mindesten 20 Bit Entropie ent-halten sollen damit SHA-1 bis 2010 benutzt werden kann (rsquoQualifizierte Signaturrsquo)

      To do siehe 606 Gultigkeit

      validity Wird oft als Gultigkeitszeitraum ubersetzt was aber nicht ganz richtig ist da nur ange-geben wird wann das Zertifikat nicht gultig ist Besser ware rsquonicht Gewahrleistungszeitraumrsquo

      106

      Die validity gibt (nach dem Standard) den Zeitraum an in der die CA gewahrleistet aussagenuber den Zustand des Zertifikats zu geben (Gultig ODER nicht Gultig - deshalb muss das Zer-tifikat also nicht unbedingt gultig sein)

      To do neu-ende

      To do neu-20090527

      Bemerkung In der Objectstxt findet die Object-Identifier die OpenSSL kennt

      To do neu-20090527-ende

      Signatur Anwendung eines Schlussels Ob der Signaturersteller eine bestimmte Person ist istdamit nicht klar Immer gleichzeitig Authentizitat des Schlussels prufen

      Dazu gibt es zwei Moglichkeiten

      1 Anarchie = Web of Trust (Beispiel PGP)

      2 Vertrauenswurdige dritte Instanz Certification Authority CA bzw ZDA (Zertifizierungs-diensteanbieter) Stellt ein Zertifikat aus das ist ein elektronisches Dokument welcheseine Identitat einem Schlussel zuordnet

      Zertifikat (Name Schlussel ) und Signatur

      Problem Im Zertifikat steht Name Schlussel usw und daran hangt eine Signatur Gegeben Nut-zer Alice mit Zertifikat daruber gibt es die CA1 die ihre Signatur zertifiziert CA1 hat selber einZertifikat mit einem Namen Schlussel usw und daran hangt wieder eine Signatur Das Problemverschiebt sich immer weiter nach oben Man bekommt eine Zertifikatshierarchie und benotigteinen aufgeblahten Riesenbaum mit einer Weltwurzel Im taglichen Leben haben sich 3-stufigeZertifikatshierarchien bewart Root signiert seine eigene Signatur Vertrauen in Authentizitat derNutzerschlussel ist fur alle Nutzer gleich Es bestimmt sich ausschlieszliglich durch die Authenti-zitat des Schlussels des Root CA Das Vertrauen in die Root CA verteilt sich auf die Nutzer

      603 X509

      X509 mittlerweile bei ISO RFC 3280 X509 Certificate and Certificate Revocation List (CRL)Profile Abschnitt 4

      Version X509v3 Version 1 enhalt keine ErweiterungenSerial Number In der Regel 20 Byte muss immer eindeutig sein

      107

      Signaturverfahren fur das Zertifikat muss am Anfang (im ersten Block) stehen damit das Has-hen schon begonnen werden kannHerausgeber Name(eindeutig) C=Country O=Organisation CN=Common Name SN=Surname

      Validity Gultigkeitszeitraum der Zeitraum indem die CA Gultigkeitsinformationen uber dasZertifikat bereitstellen willwirdmussInhaber Name (eindeutig im Bereich der CA) zur Person also stabile Daten SeriennummerVersicherungsnummer etcSchlusselinformationenErweiterungenDarunter die Signatur

      In RFC 3280 steht dass nach dem 31 Dezember 2003 alle Zertifikate UTF-8 kodiert seinmussen

      604 Erweiterungen

      Man kann bei Erweiterungen festlegen ob diese Critical oder nicht sind Critical ist sowas wieeine Vorschrift nicht Critical ist sowas wie eine Information Kritische Erweiterungen mussenimmer ausgewertet werden wenn ein Programm sie nicht versteht darf es das Zertifikat nichtverarbeiten

      To do neu

      Per default auf false ist auszligerdem optionales Argument Wenn nicht critical dann ist es nur eineInformation Also critical muss man lesen und verstehen nicht critical sollte man lesen wennman sie versteht sollte man sich daran halten

      To do neu ende

      Basic Constraints

      To do neu

      Sagt ob es Zertifizierungsinstanz ist oder eine Endnutzer Instanz ist und in welcher Ebene essich befindet

      To do Diagramm basteln

      108

      Ein interessantes Beispiel (goyacrt) findet man bei der Rechnerbetriebsgruppe

      To do neu-ende

      CA Siginalisiert ob es ein CA-Zertifikat ist (TRUE) oder nicht (FALSE) Dh ob das Zertifikatberechtigt ist weitere Unterzertifikate auszustellen

      To do neu

      Per default false es musste also nicht jedesmal CA FALSE angegeben werden

      To do neu-ende

      PATHLEN Beschrankt die Pfadlange Pathlen=0 heisst dass das Zertifikat zwar Nutzerzertifika-te ausstellen kann aber keine weiteren CA-Zertifikate Ist immer als Critical markiert

      Subject Key Identifier und Authority Key Identifier Nicht kritisch Beschreiben die ver-wendeten Schlussel uber Hash-Werte zum Beispiel SHA-1 uber den Schlussel

      Key Usage Kritisch (sollte kritisch sein zb bei GOYA nicht) Ist ein Bitstring der die Ver-wendung des Schlussels angibt Fur eine CA also zum Beispiel nur KeyCertSign NonRepu-diation ist eigentlich fur die Dokumentsignatur (content commitment) DigitalSignature ist furAuthentisierung oder allgemeine Signaturmechanismen Die beiden moglichst exklusiv setzen

      To do neu

      Nicht bei Endnutzerzertifikaten notig

      To do siehe rfc5280 - KeyUsage -HA lesen

      Merkmale

      (0) DigitaleSignatur zur Authentifizierung (hat keine Auswirkungen auf spatere Zeitraume)(werden zu dem aktuellen Zeitpunkt gepruft)

      (1) (ab X509v4) Inhaltsbindung[contentCommitment] (zb Nichtabstreitbarkeit ) (jetzt noch[nonRepudiation]) (werden zu dem Zeitpunkt zu dem sie erstellt worden sind gepruft)

      (0) und (1) sind Endnutzerinformationen

      nur ent-verschlusseln Schlussel zum verschlusseln von Zertifikaten geignet

      109

      keyCertSign==TRUE - wenn man nur Zertifikate damit signieren mochte (brauch man bei CAZertifikaten eigentlich sollte nur eines der Bits gesetzt sein) ansonsten sollte digitalSignaturegesetzt werden

      Key usage zB A0=10100000 (Erste und dritte gesetzt) oder zB 88=10001000 (erstes undfunftes gesetzt)

      authority information Nicht kritisch Feld in dem Daten des Herausgebers abgerufen werdenkonnen

      Benutzt das OCSP-Online Certificate Status Protocol (gibt eine URI an wo man die Informatio-nen erhalten kann - spater mehr)

      X509v3 Certificate Policies ASN1 Strucktur siehe rfc5280 S 33

      System von Regeln fur die Ausgabe von Zertifikaten sowie den Betrieb der ZertifizierungstelleNutzer kann sich uber die Hirarchie der CA informieren (wichtig fur den Vertrauensaufbau)

      CPS - Certificate Policy Statement und dann zwei moglichkeiten cPSuri (uri wo die Informationzu finden ist) oder userNotice (Freitext)

      Bsp httpnasacanasagovnasacphtml dort findet man eine CPS

      Wenn der Regelsatz dem CA Zertifikat zugeordnet ist (Bindung zB durch Root) ist es besserals wenn es nur dem EndNutzer Zertifikat zugordnet ist (Bindung nur durch die daruberliegendeCA)

      Authority Key Identifier Kurzinformationen mit der man einen Schlussel identifizieren kannFur Endnutzer ist der Authority Key Identifier ein Bezeichner mit dem das zugohrige CA-Zertifikat zu finden ist Kann enthalten

      KeyIdentifier - Schlussel ID

      GeneralNames - Herausgeber Seriennummer

      CertificateSerialNumber

      Subject Key Identifier - SKI Schlussel ID hilft bei der Unterscheidung sollte eine moglichsteindeutige Nummer sein da aber nicht genau festgelegt wird ist die SKI nicht fur Uberprufungengeeignet

      110

      Subject Alternative Name IP Adresse URI Email Adresse (hat das rsquoatrsquo Zeichen welchesin kein Datentyp passt weshalb sie hierher (oder in den Issuer Alt Name) gehort soll alsrfc8224Name gespeichert werden (da dieser nicht groszlig klein sensitiv ist))

      To do neu-ende

      605 Erzeugung

      To do neu

      Bei OpenSSL gibt es zwei moglichkeiten mit Perl Script

      perl ˜optopensslappsCApl -newca

      openssl x509 -text -nout -in cacertpem

      openssl req -text -nout -in careqpem

      Diese Requests folgen dem Standard PKCS 10 - rfc2986

      openssl ans1parse -in careqpem

      Attributes [0] - Contextabhangiges Tag (nur an diesem Ort gultig) Codiert als A0 denn Con-textabhangige tags fangen mit 10 an im Gegensatz zu Universaltags die mit 00 anfangen(Beispiel fur Contextabhangige Tags siehe auch bei AuhtorityKeyIdentifier)

      Im Request ist Set of Atritbute NICHT optional (aber kann leer sein)

      To do neu-ende

      Wie kommen wir eigentlich zu Zertifikaten Zertifikate kommen von einer CA also muss manzuerst ein CA-Zertifikat erstellen

      Request Ich mochte ein Zertifikat haben PKCS10RFC2986openssl req

      openssl req -new -x509 erzeugt gleich ein Zertifikat

      openssl req -new -newkey rsa1500 -days 40 -out userreq ein neuer Schlussel undein Request Der Request enthalt die Informationen des Antragsstellers den offentlichen Schlusselein Challenge-Passwort (von der CA festgelegt) und eine Signatur uber diese Daten

      111

      openssl x509 -req -CA -CAkey -out -days 40

      -in userreq -CAcreateserial -out userx509

      -extensions usr_cert -extfile opensslcnf wichtig um v3-Zertifikate zu erzeu-gen

      606 Gultigkeit

      Der rsquoGultigkeitszeitraumlsquo (Validity) im Zertifikat ist der Zeitraum uber den sich die ausstellendeInstanz verpflichtet etwas uber die Gultigkeit des Zertifikats auszusagen

      CRL Certificate Revocation List

      OCSP Online Certificate Status Protocol

      Sperrlistenformat auch in RFC 3280 Abschnitt 5 als X509-Variante festgelegt

      OCSP version 1 RFC 2560

      To do neu

      Man kann dass conf bearbeiten

      Ubungsaufgabe ein Zertifikatsrequest mit eigen Daten erstellen und zu zertifizieren

      To do einsortieren

      Die CA schmeiszligt eventuell Daten des Request raus

      To do neu-ende

      To do neu-20090624

      Sperrlisten Enthalten

      Version

      Signatur

      112

      Herausgeber

      LastNext Update

      Sperrlisten Nummer (sollte monoton wachsen)

      Liste der gesperten Zertifikate(jeder Eintrag enthalt ein Integer eine Zeit und evt CRLEntryExtension(CRLReason-Code siehe rfc5280 531))

      Bemerkungen

      Sperrlisten sind im DER-Format ( openssl -inform DER)

      (Erweiterungen enthalten immer OID Octet-String)

      Zu CRLEntryExtension CRLReason Code (6) (certificateHold-schwebend gesperrt) und (8)(removeFromCRL-kannwurde wieder entsperrt werden) sind besonders und sind eher nur furAuthosierung sinnvoll

      Sperrlisten nehmen in der Praxis erhebliche groszligen ein

      CRLEntryExtension wird von der Bundesnetzagentur nicht benutzt

      RFC5280 532 sperrdatum (revocation date) darf nicht vor dem Zeitraum der vorherigen CRLliegen sonst ist es in der vorherigen Liste Gultig (ansehen)

      Aufbau des Pfad zum Vertrauensanker (RFC 5280 S72) Das beschriebene Prufverfahren istnicht normativ vorgeschrieben es reicht wenn die Funktion gleich ist

      httpwwwbundesnetzagenturdemediaarchive1343pps

      Kettenmodel benutzt den Erstellungszeitpunkt (nicht Gewahrleistungs-Beginn) (Folie3)

      httpwwwbundesnetzagenturdeenid85f55115e236d80fc18329992037142d0FAQ

      Antwortss4_wphtml

      To do neu-ende

      To do 20090701-fehlt

      113

      61 Praktische Ausschlachtung von kryptografischen Algorithmen mitSMIME und PKCS7

      Root-Zertifikat erzeugenopenssl genrsa 1200 gt cakeypem

      openssl req -x509 -new -key cakeypem -config opensslcnf gt cacert (selbst-signiertes neues root Zertifikat mit eigenem Config Script)

      Root-Zertifikat anschauenopenssl x509 -in cacert -text -noout

      Nutzer der eigenen CA erstellenopenssl req -new -config opensslcnf -out usercert Erstellt mehrere Dateienauch privkeypem

      Zertifikat erstellenopenssl x509 -req -in userreq -CA cacert -CAkey cakeypem -CAcreateserial

      -out usercert -extfile opensslcnf -extensions usr_cert (Zertifikat fur usermit Extenstions Version 3 statt Version 1)

      Senden einer signierten Nachricht (Nachricht in Neutxt)openssl smime -sign -signer usercert -in Neutxt -inkey privkeypem

      -out neusmime -text

      Erzeugt Datei neusmime mit Nachricht und Signature -text erzeugt den Eintrag fur den Con-tent Type vor der Originalnachricht in neusmime

      Umwandeln der SMIME Nachricht in PKCS7 Nachrichtopenssl smime -pk7out -in neusmime -out neupk7

      Das gesamte (ohne Inhalt der Nachricht eigentlich nur die Signatur) SMIME Dokument wirdin eine PKCS7 Struktur eingebunden

      Anschauen mitopenssl asn1parse -i -in neupk7

      Zertifikate ausgeben mitopenssl smime pkcs7 -in neupk7 -print_certs -noout

      Zertifikate anschauen mitopenssl smime pkcs7 -in neupk7 -print_certs -noout -txt

      Verifizierenopenssl smime -verify -in neusmime -CAfile cacert

      Verschlusseln

      114

      openssl smime -encrypt -in Neutxt -out neusmime -text usercer

      Nachricht ohne Signatur verschlusselt

      Entschlusselnopenssl smime -decrypt -in neusmime -text -recip usercer

      -inkey privkeypem

      Fur die Einbindung in Browseropenssl pkcs12 -export -name Annie -inkey privkeypem

      -in usercert -out userp12

      Um auch das CA Zertifikat mit einzubindenopenssl pkcs12 -export -name Annie -inkey privkeypem

      -in usercert -out userp12 [-certfile cacert -CAfile cacert -chain]

      Private Schlussel auspacken openssl pkcs8

      62 PKCS

      PKCS Public Key Cryptography Standards

      1 RSA3 Diffie-Hellman5 Cryptography mit Passworten6 Zertifikate7 Cryptographic Message Syntax8 private Schlussel9 Attributtypen10 Zertifikatsrequest11 Cryptographic Token12 Personal Information Exchange13 Elliptische Kurven15 Chipkarten Token Formate

      621 PKCS7 15 November 93 RFC 3852

      To do neu-20090708

      CMS

      Email (SMIME)

      115

      XML Signaturen XMLDSIG XMLENC

      Dokument rarr signiertes Dokument

      openssl genpkey -algorithm rsa -pkeyopt rsa_keygen_bits300mdash openssl -chek -text -noout

      zu kleine Werte (iexcl256) fur den Schlussel werden nicht akzeptiert (Wert ist immer noch etwasklein) Aber die Ausgabe ist nicht ganz korrekt

      openssl genpkey -algorithm rsa -pkeyopt rsa_keygen_pubexp1

      ist leider moglich

      63 CMS(Cryptographic Message Syntax)

      rfc3852

      SignedData

      bull Version

      bull Hash Algorithmus

      bull gekapselter Inhalt

      bull Certifikat Liste

      bull Widerrufungsliste (Sperrinformationen)

      bull

      bull Signer Infos (Signaturen davon kann es mehrere geben elektronische Signatur nach demSignaturgesetz Signer Info enthalt selber noch einmal einen Signaturblock - der als Digi-tale Signatur aufgefasst werden kann)

      ndash Versionndash Idndash Attributesndash Algondash sig Valuendash

      bull Signer Id

      bull Signed Attributes (zB Zeit Ort Message Digest) Die Signatur dieses Blockes wird er-stellt indem der Hash Wert (nur des Blockes) signiert wird Wenn es signed Attributesgibt sind also auszligerdem Hash Wert des Dokuments und Inhaltstyp(Contenttype) im Si-gned Attributes enthalten und erst dann wird der Signed Attributes Block signiert Es wirdjeweils er Hash-Algorithmus verwendet der oben genannt wird

      116

      Auszligerdem Signing Certificate

      bull

      Frage ist wo wird der Wert Signiert der sagt welcher Hash-Algorithmus verwendet wird Wennnicht konnte man eventuell den Algorithmus austauschen

      Man konnte den Hash-Algorithmus als SignedAttribute einfugen

      To do neu-ende

      CMS (Cryptographic Message Syntax) Beschreibung des Formates mit dem man Krypto-nachrichten erstellen kann

      Kryptographische Nachricht Struktur vorne Bezeichner hinten Daten Daten = irgendwasspannend Welche Typen gibt es eigentlich

      Signed-data Content-Type Was jetzt kommt sind signierte Daten Liste der unterstuetzen Has-hfunktion dann gekapselter Inhalt dann eine Liste von Zertifikaten (optional) optionalSperrlisten dann Signaturbloecke (SignerInfo)

      SignedData = SEQUENCE

      Versionsnummer

      Liste der unterstutzten Hashfunktionen

      Ursprungliche Nachricht selbst

      Liste von Zertifikaten Optional

      Sperrlisten Optional

      Signer Infos

      SignedInfo = SEQUENCE

      Versionsnummer

      Signer Identifier (Wer der Signierer eigentlich gewesen sein soll)

      Hashfunktionen die bei der Signatur verwendet wird

      Signierte Attribute

      Verwendete Signaturalgorithmus

      Signaturwert

      Unsignierte Attribute

      SignerInfo = SEQUENCE

      Versionsnummer

      Signer Identifier (Wer der Signierer eigentlich gewesen sein soll)

      Bezeichner des Hashalgorithmus mit dem die endgultige Signatur erstellt wird

      Signierte Attribute Optional

      117

      Signatur Algorithmus

      Signature SignatureValue

      Unsigned Attributes Optional

      SignerIdentifier = SEQUENCE

      issuerAndSerialNumber

      subjectKeyIdentifier (Eindeutiger Hinweis wer der Aussteller ist)

      SignerInfo Signaturblock der eine Datenstruktur fuer eine Signatur bereitstellt Steht drin Ver-sionsnummer SignerIdentifier verwendeter Hash-Algorithmus dann signierte Attributeverwendeter Signaturalgorithmus Signaturwert unsignierte Attribute

      SignerIdentifier Aussteller und Seriennummer oder Schluesselidentifier (subjectKeyIdenti-fier)

      Signierte Attribute Sammlung von Attributen die signiert sind Was dabei sein sollte erstesAttribut Content-Type wenn die signierten Daten nicht nur Rohdaten sind sondern gekap-selte Daten eine s bestimmten Typs Ein weiteres nuetzliches Attribut Message-DigestDann Signing-Time

      Content-Type Object-Identifier der einen bestimmten Typ impliziert

      Message-Digest Hash der aus den Daten ausgerechnet wird Als Octet-String

      Signing-Time Zeit von der behauptet wird dass die Signatur zu dieser Zeit geleistet wurde

      Signatur Es werden die signierten Attribute signiert dort ist auch der Hash des Dokumentsals messageDigest enthalten Wenn keine signedAttributes existieren wird das Dokumentdirekt gehasht

      Weitere sinnvolle signierte Attribute

      Commitment-Type Was bedeutet die Signatur zum Beispiel virtuelle Poststelle Eingangs-stempel Auslieferung Einschreiben Urheberschaft gelesen Zeitstempel (spezielleSignatur eines authentischen Zeitservers) ist eine Information dass das Dokument vor-her existiert hat

      Signing Certificate Beschreibt mit welchem Schluessel zu welchem Zertifikat ist unterschrie-ben wordenwelches Zertifikat moechte der Signierer zur Ueberpruefung verwendet ha-ben Austausch des Zertifikats fuehrt zu anderer Urheberschaft ist ein realer AngriffVerhindert die Urheberschaft auszutauschen (rfc2634 S 46) Folge mit Zertifikats HashIssuerSerial(Herausgeber und Seriennummer) (leider ist da SHA1 als Algorithmus festge-legt)

      in rfc5035

      Folge mit Hash-Algorithmus (optional default ist aber SHA256) Zertifikat Hash IssuerSerial (Nun Hash als Octet String)

      Da der Wert des Hash Algorithmus optional ist ist diese Variante ruckwartskompatibel

      118

      Signing Location Ort an dem die Signatur geleistet wurde

      Weitere nuetzliche unsignierte Attribute

      Zeitstempel ist eine Information wann die Signatur existiert hat Hash uber die Signatur TimeServer davon Signatur

      not after Information fur die Signatur

      Countersignature Zweite Signatur (Gegenzeichnung) Signaturblock uber eine andere Signa-tur

      (Mitsignatur Bestatigung eines signierten Dokuments wichtiges Feld fur Mehrfachsigna-turen)

      Hashwert des signature Feldes (3 Hash Wert) nicht alle in einander gekappselt sonderansammlung von Signaturen

      Archiv Zeitstempel neuer Hash-Algorithmus signiert Dokument alle Signaturen alle Attri-bute (signiert unsigniert)

      Damit kann mann folgendes machen

      2001 2009 2010

      RS A512 S HA1 S HA256 S HA512

      Dok S ignatur t1 t2cc at1TTYY^^bb at2 at3

      Fur XML XML-DSIC XML-ENC

      7 Wichtige Neuerungen bei den Versionsanderungen

      bull Von 098 zu 099 Verbesserungen bei den Extensions von Certificate Revocation Lists

      bull Von 097h zu 098 UTF8-Support fur das ca-Kommando

      bull SHA1 ist nun default-Hash-Algorithmus statt MD5

      bull Patentierte Algorithmen RC5 und MD2 mussen beim Kompilieren extra angegeben wer-den

      bull Neue FIPS 180-2 Algorithmen SHA-224-256-384-512 wurden implementiert

      119

      bull Neuer Parameter -selfsign fur das ca-Kommando

      bull IPv6 Support bei den Zertifikatserweiterungen

      bull Ausweitung der Eliptischen Kurven Bibliothek

      8 OpenSSL hintergehen

      81 die eine Primzahl ganz klein erzeugen

      bull Offnen einer Datei in genrsa cryptorsarsa_genc

      bull Andern den Teil ldquo generate p and q rdquo so daszlig die eine Primzahl 10bit lang ist(bitsp=10 )

      bull Wir erzeugen einen neuen rsa key openssl genrsa -out rsaweakpem 2048und erstellen hierdurch eine Primzahl mit 10 bit die andere zufallig (also so in etwa2038bit)

      bull Wir schauen uns den key an openssl rsa -in rsaweakpem -text -nooutund sehen die eine Primzahl ist 35879 die andere hat 2046 bit Lange Das kann manlecker faktorisieren

      bull Offnen cryptobnbn_primeh die Zahl kommt durch den kleinen Primzahltest durchdieser geht nur bis ca 17000

      82 beide Primzahlen nah beieinander

      bull Und wieder in rsa_genc (Zeile 136 in der do-while-Schleife hinter degenerate)

      bull BN_copy(rsa-gtq rsa-gtp) wir setzen q gleich pBA_add_word(rsa-gtq 20) wir addieren 20 auf q

      for(i=1 BN_is_prime_ex(rsa-gtq 5 ctx NULL) i++)

      BN_add_word(rsa-gtq 2)

      wir erhoehen q bis zur naechsten Primzahl

      bull hierdurch erzeugen wir zwei Primzahlen die sich enorm ahnlich sind (wieder mit obigenKommandos) Der Angreifer kennt in diesem Fall den Exponenten damit ist das Verfahrenvollig unsicher

      83 Vorschrift des BSI

      01 le |log10 p minus log10q| also p gt10radic

      2 lowast qDas kann man aber mit q =10

      radic2 lowast p im Quellcode umgehen

      120

      84 Programmierung Zufallszahlenerzeugung und andere nette features

      Die ldquocallbackrdquo Funktion gibt den Fortschritt bei Suche nach p und q als Punkt (Fermat Primzah-lentest) und Plus (Miller-Rabin-Test) aus

      DatentypStruktur zum Speichern der auftretenden groszligen Zahlen Binarfeld BIGNUMp ist unsigned char

      p = BN_bn2hex((RSA )pub_rsa)-gtn) Zum Ausgeben eines BIGNUMs

      ((pub_rsa)-gtn)d[] einzelne Teile im Datenblock eines BIGNUMs editieren

      Zufallszahlen findet man in cryptorandrandh rand_libc randc

      Diese beiden Kombinationen vor entsprechenden Programmen i2d oder d2i intern to data datato internpub_rsa = d2i_RSAPublickey(NULL ampstr len) (lange von str) Transfor-miert Binardaten Zeichenkette in interne public Key Datenstruktur mit ASN1

      S(buf) gibt Speicherplatz frei uberschreibt ihn vorher noch einmal mit Zufallsbytes

      9 Zusammenfassung

      bull Symmetrische Verschlusselungsverfahren

      ndash DES

      64 Bit Blockchiffre

      16 Runden Feistelnetzwerk mit 48 Bit Rundenschlusseln

      56 Bit Schlussellange plus 8 Paritatsbits

      XOR Transformationsfunktion mit S-Boxenndash IDEA

      64 Bit Blockchiffre

      8 Runden Feistelnetzwerk mit je 6 middot 16 Bit Rundenschlusseln

      128 Bit Schlussellange

      XOR ADD modulo 216 MULT modulo 216 + 1ndash Blowfish

      64 Bit Blockchiffre

      16 Runden Feistelnetzwerk

      32-448 Bit Schlussellange

      XOR Transformationsfunktion mit XOR CONCAT und viel Schlusselmaterialndash AES

      121

      128 192 256 Bit Blockchiffre

      10 12 14 Runden Feistelnetzwerk

      128 192 256 Bit Schlussellange

      Substitution ShiftRow MixColumn KeyAddition

      ndash RC4

      Stromchiffre

      10 12 14 Runden Feistelnetzwerk

      variabele Schlussellange bis 2048 Bit

      ndash RC5

      wahlbare Blockchiffre (openssl 32 Bit)

      wahlbare Runden Feistelnetzwerk (openssl 12)

      wahlbare Schlussellange (openssl 128 Bit)

      ndash GOST

      64 Bit Blockchiffre

      32 Runden Feistelnetzwerk

      256 Bit Schlussellange

      ADD ROT 8 S-Boxen

      bull Asymmetrische Verschlusselungsverfahren

      ndash RSA (Verschlusseln und Signieren)

      ndash Diffie-Hellmann Schlusselaustausch

      ndash ElGamal Crypto-System (basierend auf DH)

      ndash Rucksackverschlusseln (gebrochen)

      ndash Merkle Puzzle (viele Nachrichten)

      ndash Rabin Verfahren

      Zur Prufung erster Teil mit OpenSSL spielen zweiter Teil Konzepte eine Woche vor derPrufung evt fragen was dran kommen wird Prufungstermine 20072005 oder 04102005oder nach Vereinbarung

      10 Mathematische Techniken

      101 Multiplikatives Inverses

      (nach wwwtzide˜hsLehreU9 mathD1pdf)

      122

      1011 Behauptung

      Seien a b isin Z zwei teilerfremde ganze Zahlen dh ggT (a b) = 1 Dann existiert ein aprime isin Z mitaprime middot a equiv 1 mod b

      1012 Beweis

      Betrachte die Menge ak mod b|k isin N k ge 1 Da ggT (a b) = 1 gilt folgt dass ggT (ak b) = 1fur alle k isin N mit k ge 1 Denn da a teilerfremd zu b ist so gilt dies auch fur alle Potenzenvon a Daher ist die betrachtete Menge eine Untermenge der endlichen Menge x mod b|x isinZ ggT (x b) = 1 und daher selbst endlich Also kann existiert k1 k2 mit ak1 equiv ak2 mod bNehmen wir an k1 lt k2 und setzen n = k2 minus k1 dann gilt ak1 middot an = ak2 equiv ak1 mod bDaher folgern wir an equiv 1 mod b d h anminus1 middot a equiv 1 mod b Also setzen wir aprime = anminus1 und dieBehauptung ist erfullt

      102 Kleiner Fermatscher Satz

      1021 Behauptung

      Aus der Wikipedia (unter GNU Free Documentation License)

      Der kleine fermatsche Satz kurz der kleine Fermat ist ein Lehrsatz in der Zahlentheorie Ermacht eine Aussage uber die Eigenschaften von Primzahlen und wurde aufgestellt im 17 Jahr-hundert von Pierre de Fermat Dieser Satz beschreibt eine allgemein gultige Kongruenz

      ap equiv a mod p

      wobei a eine ganze Zahl und p eine Primzahl ist (die weitere Symbolik wird im Artikel Kon-gruenz beschrieben) Falls a kein Vielfaches von p ist kann man das Resultat in die haufigbenutzte Form

      apminus1 equiv 1 mod p

      bringen

      1022 Beweis

      Der Beweis beruht auf der Tatsache dass wenn zwei Zahlen a und b zueinander inkongruent(modulo einer festen Zahl n) sind auch die beiden Produkte x middot a und x middot b inkongruent modulon sind fur x gt 0 und ggT (x n) = 1

      Denn

      123

      sei a b mod n n eine Primzahl a b naturliche Zahlen Angenommen

      a middot x equiv b middot x mod n

      fur eine naturliche Zahl x mit ggT (x n) = 1 Dann gibt es eine naturliche Zahl k so dass

      a middot x minus b middot x = k middot n

      x middot (a minus b) = k middot n

      x = n middot (k(a minus b))

      Da n eine Primzahl und x eine naturliche Zahl ist ist k(a minus b) entweder eine naturliche Zahlminus1n oder 1n Die letzten beiden Falle widersprechen der Annahme dass a b mod n dererste Fall widerspricht der Annahme dass ggT (x n) = 1 Damit ist die Annahme falsch und esgilt fur x so dass ggT (x n) = 1

      a middot x b middot x mod n

      Aus der Wikipedia (unter GNU Free Documentation License)

      Im folgenden betrachtet man zum einen die Menge A aller Reste mod p - also alle naturlichenZahlen kleiner als p und zum anderen die Menge B die diese Reste multipliziert mit a enthaltZwei beliebige Zahlen aus A sind zueinander inkongruent modulo p Aus dem oberen Satzfolgt dass damit auch zwei beliebige Zahlen aus B zueinander inkongruent sind Dadurchergibt sich dass das Produkt uber alle Zahlen aus A kongruent zum Produkt aller Zahlen aus Bist

      1 middot 2 middot 3 middot middot middot middot middot (p minus 1) equiv (1 middot a) middot (2 middot a) middot middot middot middot middot ((p minus 1) middot a) mod p

      alsoW equiv W middot apminus1 mod p

      wobei W das Produkt 1 middot2 middot3 middot middot(pminus1) ist Da es in Restklassenkorpern stets ein multiplikativesInverses gibt kann man diese W dividieren und man erhalt

      apminus1 equiv 1 mod p

      1023 Verallgemeinerung

      Man kann den kleinen fermatschen Satz zum Satz von Euler verallgemeinern Fur zwei teiler-fremde Zahlen n und a gilt

      aϕ(n) equiv 1 mod n

      wobei ϕ(n) die Eulersche Phi-Funktion bezeichnet Diese hat als Ergebnis die Anzahl der Zah-len zwischen 1 und nminus1 welche teilerfremd zu n sind Ist n eine Primzahl so ist ϕ(n) = nminus1 sodass man Fermats kleinen Satz als Spezialfall erhalt Mit Hilfe des kleinen fermatschen Satzesentwickelte Fermat den fermatschen Primzahltest

      124

      1024 Praktische Anwendung auf Primzahlen

      (p - a a lt p a 0)Wenn gilt apminus1 1 mod p ist dann kann p keine Primzahl sein (Umkehrung muss nicht

      gelten) Wenn man mit a beiweisen kann das p keine Primzahl sein kann dann nennen wir aKanditat (Es gibt aber sogenannte Carmichaelzahlen die kein Kandidat ist)

      To do nacharbeiten Carmichaelzahlen

      Wenn (p minus 1) gerade ist pminus12 = k eine Ganzzahl

      Ist a2k equiv 1 mod p(ak)2 equiv p(ak minus 1)(ak + 1) equiv 0 mod pAlso wenn p eine Primzahl ist dann ist entweder ak equiv 1 mod p oder ak equiv 1 mod pDaraus folgt wenn ak 1 mod p und ak minus1 mod p dann ist p keine PrimzahlSomit gilt auch wenn k gerade ist und a

      k2 1 und a

      k2 minus1 dann ist p keine Primzahl

      Betrachten p minus 1 = 2t middot r (r ungerade) Sei a lt p und p - aIn ar a2r a22middotr a2t middotr = apminus1 (Reste mod p)Wenn die Folge nicht mit 1 endet ist p keine Primzahl Wenn vor der ersten 1 in der Folge

      keine 1 steht ist p keine PrimzahlWir nennen a einen Zeugen wenn man mit a beweisen kann das p keine Primzahl istJede Zahl p die keine Primzahl ist hat mindestens 3

      4 aller Zahlen a (mit ggT(a p) = 1) alsZeugen (Jeder Kandidat ist ein Zeuge)

      Damit ergibt sich der Rabin-Miller-Test Wahle zufallig ein a lt p und teste ob a ein Zeugeist Mit hoher (beliebig genauer) Wahrscheinlichkeit ist p Primzahl

      Bei groszligen Zahlen werden die Zeugen mehr

      openssl genrsa -out keyrsa 800

      Generating RSA private key 800 bit long modulus

      +++++++

      +++++++

      e is 65537 (0x10001)

      Generiert den Schlussel und speichert in rsquokeyrsarsquo Punkte Bedeutet keine kleine PrimzahlRabin-Miller Test schlagt fehl Plus ist ein erfolgreicher Rabin Miller Test bei groszligeren Zahlenbrauch man weniger Tests da es mehr Zeugen gibt

      []

      103 Chinesischer Restklassensatz

      (nach wwwtzide˜hsLehreU9 mathD1pdf)

      125

      1031 Behauptung

      Seien m1m2 mr paarweise teilerfremde ganze Zahlen d h ggT (mim j) = 1 fur alle i j(i j isin 1 2 r) und sei M = m1 middotm2 middotmr Dann existiert fur jede Liste a1 ar mit 0 le ai lt

      mi fur 1 le i le r genau ein x isin Z mit 0 le x lt M welches effizient berechnet werden kann undfur das gilt

      x equiv a1 mod m1

      x equiv a2 mod m2

      x equiv ar mod mr

      Bemerkung Es ist leicht einzusehen dass jedes xprime isin Z mit xprime = x + k middot M fur ein k isin Z d hxprime equiv x mod M genau dasselbe Gleichungssystem lost wie x Der Beweis wird zeigen dass furein gegebenes x nur xprime von dieser Form dasselbe Gleichungssystem losen konnen

      1032 Beweis

      Zunachst beweisen wir die Existenz und setzen dazu Mi = Mmi daher gilt ggT (Mimi) = 1Aus diesem Grund existiert auch ein multiplikatives Inverses Ni isin Z mit Mi middot Ni equiv 1 mod mi

      (vgl multiplikative Inverse) Zu beachten ist jedoch dass fur alle j isin 1 r mit i j stetsMi middot Ni equiv 0 mod m j gilt Nun definieren wir x via

      x equivrsum

      i=1

      ai middot Mi middot Ni mod M

      Fur jedes i existiert ein v isin Z so dass x sich folgendermaszligen darstellen lasst

      x = Mi middot Ni middot ai + v middot mi

      Dies gilt da jedes M j mit j i mi als Faktor enthalt Offensich erfullt x also die obigen Glei-chungen x ist das einzige mit 0 le x lt M welches fur die gegebene Liste a1 a2 ar alleGleichungen lost denn falls xprime und xprimeprime zwei verschiedene Losungen sind so gilt xprime minus xprimeprime equiv 0mod mi fur alle i isin 1 r d h xprimeminus xprimeprime ist ein Vielfaches aller mi und damit auch von M da nachVoraussetzung ggT (mim j) = 1 fur alle i j isin 1 r mit i j erfullt ist Somit folgt xprime equiv xprimeprime

      mod M d h 0 le xprime xprimeprime lt M kann nicht auftreten und der Beweis ist abgeschlossen

      126

      104 Square and multiply

      Der folgende rekursive Algorithmus berechnet xn fur naturliche Zahlen x und n indem sukzes-sive der Exponent reduziert wird

      bull Falls n = 1 xn = x

      bull Sonst falls n gerade xn = (x2)n2

      bull Sonst xn = x middot (x2)(nminus1)2

      Damit kann xn in O(ln(n)) Rechenschritten (quadrieren und multiplizieren) berechnet werdenindem in jedem Schritt des Algorithmus der Exponent halbiert wird und hochstens vier Berech-nungen ausgefuhrt werden

      105 Montgomery Reduktion (Moduloberechnung ohne Division)

      Heute was ganz verrucktes Modulo-Multiplikation ohne Division

      Problem bei RSA und anderen Algorithmenm Modul gegeben und g Zahl gegeben und man rechnet aus ga mod mAufwand der Berechnung mit Square and Multiply Groszlige des Exponenten in Bits Multiplika-tionen + gleichviele ModulooperationenBerechnung von x middot y mod m = x middot y minus (x middot y div m) lowast mDivision aufwendig Daher Methode dies ohne Division bzw mit einer schmerzfreien Divisiondurch eine Zweierpotenz zu tun Dafur Kosten von Hin- und RucktransformationenHier Skizze 1xrarr X = x middot r mod myrarr Y = y middot r mod mX lowast Y = X middot Y middot rminus1 = x middot y middot r mod m

      Wir berechnen t0 equiv minusmminus1 mod r (Preprocessing)

      1 x minusrarr X = x middot r mod m

      2 y minusrarr Y = y middot r mod m

      3 X lowast Y = X middot Y middot rminus1 mod m= x middot r middot y middot r middot rminus1 = x middot y middot r mod m

      Zur Bestimmung von X lowast Y t1 = X middot Y echte Multiplikationt2 = t1 middot t0 mod r Multiplikation untent3 = (t1 + t2 middot m) div r Multiplikation obent3 = X lowast Y oder (t3 minus m) = X lowast Y

      127

      1 t3 ist durch r teilbar

      2 t3 equiv X middot Y middot rminus1 mod m

      3 0 le t3 le 2m

      Zu 1 t1 + t2 middot mequiv t1 + t1 middot t0 middot m mod requiv t1 + t1 middot m middot (minusm)minus1 mod requiv t1 minus t1 equiv 0 mod r

      Zu 2 (t1+t2middotm)r = t3 mod m

      (t1 middot t2 middot m) middot rminus1 mod mequiv t1 middot rminus1 + t2 middot rminus1 middot mequiv X middot Y middot rminus1 mod m

      Beispiel 5 lowast 3 =

      t1 = 15t2 = 15 middot 23 mod r = 45t3 = 15 + 45 middot 13 = 6

      Zu 3t1 le (m minus 1)2

      t2 middot m lt r middot mt1 + t2 middot m lt 2 middot r middot m

      t3 lt 2 middot m

      t3 equiv X middot Y middot rminus1 mod mx lowast r2 = X = x middot r mod mX lowast 1 = x mod m

      Beispiel m = 13 r = 100 t0 = 23

      r mod m r = 9 mod 13r2 = 3 mod 13

      Ziel 6 middot 5 mod 13

      6 lowast 3 = 25 lowast 3 = 6

      128

      2 lowast 6 =

      t1 =

      t2 =

      t3 = xx

      x lowast 1 =

      Wenn eine Division langer als 1 5 Multiplikationen dauert dann lohnt sich das Verfahren DerErfinder heisst ubrigens Peter L Montgomery (Montgomery Reduktion) wwwmiinformatikuni-frankfurtdeteachingws0001krypto algomontgomerypdf

      Montgomery-Multiplikation

      To do siehe Mathematischer Anhangzusammenfugen

      Die Reduktion modulo m erfordert eine Division aber Divisionen sind rsquoteuerrsquo

      Dies kann man aber wie folgt vereinfachen

      Um die Division zu vermeiden rsquotransformiertrsquo man die Zahlen

      Sei gesucht das Produkt x middot y mod m

      x minusrarr X y minusrarr Y x middot y minusrarr X lowast Y

      R = (zweierPotenz) gt m und die Division durch R muss einfach sein

      X = x middot R mod m

      X lowast Y = X middot Y middot Rminus1 mod m (wobei die modulo Reduktion nun nicht mehr jedes mal ausgefuhrtwerden muss sonder nur am Anfang und am Ende der rsquoTransformationrsquo)

      1 Berechne mprime = minusmminus1 mod R

      (minusmR) = 1 rArr XGCD mprime middot m = minus1 mod R

      2 t = X middot Y (echte Multiplikation)

      3 t1 = t middotmprime mod R (echte Multiplikation und oben abschneiden also eine leichtere moduloReduktion da R eine zweier Potenz ist) (dabei gilt t2 lt m2 + R middot m)

      4 t2 = t + t1 middot m (echte Multiplikation und eine Addition) (dabei gilt t3 lt(m+R)middotR

      R = 2m)

      5 t3 = t2divR (also rsquounten abschneidenrsquo)

      6 Wenn t3 gt m dann t3 = t3 minus m

      129

      Nun ist t3 = X lowast Y Dafur muss t3 lt m sein oder in Schritt 6 t3 lt 2m sein

      Wir mussten also prufen

      1 t3 lt m

      2 Division in 5 rsquogeht aufrsquo

      t2 ist durch r teilbar

      t2 mod R equiv (t + t1 middot m) equiv t + (t middot mprime) middot m mod R equiv t + t(minus1) mod R equiv 0 mod R

      3 t3 = X lowast Y

      t3 middot R mod m equiv t2R middot R mod m equiv t2 equiv t + t1 middot m equiv t mod m equiv X middot Y mod m

      Wir haben also den folgenden Aufwand

      1 rsquoTransformationrsquo

      2 rsquoRechnungrsquo

      3 Zuruck rsquotransformierenrsquo

      x lowast R2 = x middot R2 middot Rminus1 mod m = x middot R = X mod m

      X lowast 1 = X middot 1 middot Rminus1 equiv x middot R middot Rminus1 equiv x mod m

      Man benotigt also zwei zusatzliche Operationen zur transformation Dafur kommt die Operationrsquorsquo ohne Divisionen aus

      Beispiel m = 17

      R = 100

      7 middot 11 mod 17

      x lowast y mod mdarr darr

      X Y= =

      (x middot R) mod m lowast (y middot R) mod m

      m1 = minusmminus1 mod 100

      suche also ein m1 mit m1 middot 17 = minus1 mod 100

      m1 = 47

      130

      To do Bsp Magma Quelltext siehe Homepage

      Bem dazu Wenn R groszlig genug ist kann man die Subtraktion von m weglassen

      Mathematischer Hintergrund (Zm+ middot)simminusrarr (Zm+ lowast) Was ist das Einselement und das

      Inverse

      106 Nochwas

      vielleicht

      zur Prufung Zwei Teile (ein theoretischer ein praktischer) Ein openssl-Kommando das in derVL nicht behandelt wurde wird drankommen (zum Beispiel speed ca etc) Theoretischer Teil

      1 symmetrische Verfahren (was sind symmetrische Verfahren wodurch charakterisiert)

      2 Integritatsschutz (wie kann man Integritatsschutz gewahrleisten)

      3 asymmetrische verfahren (siehe 1)

      4 Signatur (was sind Signaturen wofur verwendet man sie was ist ˜konzept was ist sicherwas ist unsicher)

      5 Vertrauensstruktur (zum Beispiel PGP)

      6 Client-Server-Authentisierung (SSL-Protokoll Kerberos)

      7 Sicherheitsparameter (wo sind die welchen Einfluszlig auf die Sicherheit haben sie)

      8 X509 (elektronische Identitat)

      9 RFC-Security (3280 3279 3446 )

      Mathematische Verfahren

      1 Square and Multiply Double and Add

      2 Euklidischer Algorithmus

      3 RSA DH

      4 DSA

      5 AES

      6 das eine oder andere symmetrische Verfahren Strom-Blockchiffre

      7 Elliptische Kurven eher nicht reicht zu wissen dass man mit Addition in EK das gleicheerreichen kann wie mit Multiplikation im Restklassenkorper

      8 kleiner Fermat eher nicht

      131

      9 Montgomery-Multiplikation vielleicht auch nicht sollte aber bekannt sein

      Fur MD5- AES- etc Grundfunktionen reicht evt wissen wo man nachschauen muss

      Dann nachweisen dass man mit Openssl spielen kann

      1 Verschlusseln mit DES3DESBFAES

      2 Prufsummenberechnung

      3 Konfigurationsfile

      4 RSA-Verschlusselung

      5 098 ndash 097 (dynamisch)

      6 Zertifikat

      7 DSA-Verschlusselung

      8 Passworter (passwd) und Salt

      9 E-Mail-Nachricht erstellen und sichern (SMIME-Anwendung)

      Zum Punkt Ich mochte eine 1 haben was muss ich dafur tun Was haben sie ausserhalb derVorlesung schonmal gelesen Was fehlte ihnen an der Vorlesung was fanden sie doof

      132

      • 1 Einfuumlhrung
        • 11 Verschluumlsselung
        • 12 Beispiel rot13
        • 13 Block-Chiffre
        • 14 Strom-Chiffre
        • 15 Angriffstypen
          • 151 Differentielle Kryptoanalysis
            • 16 Base64
              • 2 OpenSSL
              • 3 Symmetrische Verschluumlsselungsverfahren
                • 31 Feistel-Chiffren
                • 32 DES - Data Encryption Standard
                  • 321 Schluumlsselauswahl
                  • 322 Funktionsweise
                  • 323 Schwachstellen und Unsinnigkeiten
                  • 324 spezielle Optionen bei openssl
                  • 325 DESECB - Electronic Code Book
                  • 326 DESCBC - Cipher Block Chaining
                  • 327 DESOFB - Output Feed Back
                  • 328 DESCFB - Cipher Feed Back
                  • 329 CTR Mode CCM
                  • 3210 TEA-Algorithmus
                  • 3211 DES-X
                    • 33 IDEA International Data Encryption Algorithm
                      • 331 Schluumlsselauswahl
                      • 332 Funktionsweise
                      • 333 Pseudocode-multiplikation
                      • 334 Schwachstellen
                        • 34 Blowfish
                          • 341 Initialisierung
                          • 342 Verschluumlsselung
                            • 35 AES Advanced Encryption Standard
                              • 351 Wiederholung-Byteoperation
                              • 352 Uumlberblick
                              • 353 mathematische Grundlagen
                                • 36 RC4 Rons Cipher 4
                                  • 361 Geschichte
                                  • 362 Beschreibung
                                  • 363 Der Pseudo-Zufalls-Algorithmus
                                  • 364 Der Schluumlsselerzeugungs-Algorithmus
                                  • 365 Implementation
                                  • 366 Sicherheit
                                  • 367 Fluhrer Mantin und Shamir Angriff
                                    • 37 RC5 Rons Cipher 5
                                      • 371 Verschluumlsselung
                                      • 372 Schluumlsselexpansion
                                        • 38 GOST 28147-89 Gosudarstvennyi Standard Soyuza SSR nicht in OpenSSL
                                        • 39 FazitWie koumlnnte bei einen Symmetrischen Algorithmus die Sicherheit erhoumlhen
                                          • 4 Asymmetrische Verschluumlsselungsverfahren
                                            • 41 Einfuumlhrung
                                              • 411 Beispiel
                                                • 42 Geschichte
                                                • 43 Einige Theoretische Grundlagen
                                                  • 431 Kleiner Fermat (oder kleiner Fermatscher Satz)
                                                  • 432 Euklidischer Algorithmus
                                                  • 433 Beispiel
                                                    • 44 RSA Rivest Shamir Adleman
                                                      • 441 Funktionsweise des RSA-Verfahrens
                                                      • 442 Beweis der Funktionsweise
                                                        • 45 Schwaumlchen von RSA
                                                        • 46 Fuktionen in OpenSSL
                                                          • 461 genrsa
                                                          • 462 rsa
                                                          • 463 rsautl
                                                          • 464 PKCS
                                                          • 465 OAEP - Optimal Asymmetric Encryption Padding
                                                          • 466 Wie erkennt man an Ciphertexten den Verschluumlsselungsalgorithmus- DER ASN1
                                                          • 467 Umgehen mit den Schluumlsselkomponenten
                                                            • 47 Miller-Rabin Test
                                                            • 48 Diffie-Hellman-Schluumlsselaustausch
                                                            • 49 ElGamal-Cryptosystem
                                                            • 410 Wiederholung DH
                                                              • 4101 Beispiel
                                                                • 411 was anderes
                                                                • 412 Elliptische Kurven
                                                                • 413 Elliptische Kurven Nachtrag
                                                                • 414 Rucksack-Verschluumlsseln
                                                                  • 4141 Beispiel
                                                                    • 415 Merkle Puzzle
                                                                    • 416 Rabin-Verfahren und Wurzelziehen
                                                                      • 4161 Schluumlsselgenerierung
                                                                      • 4162 Kongruenzbedingung
                                                                      • 4163 Verschluumlsselung
                                                                      • 4164 Entschluumlsselung
                                                                        • 417 Angriffe auf asymmetrische Verschluumlsselungsverfahren
                                                                          • 4171 1 Angriff Common modulus attack
                                                                          • 4172 2 Angriff kleiner geheimer Exponent d
                                                                          • 4173 3 Angriff Faktorisieren
                                                                          • 4174 Echt schlechte RSA-Schluumlssel
                                                                          • 4175 Schnelles Faktorisieren bei Fehler im System
                                                                          • 4176 Angriff mit gewaumlhltem Chiffretext
                                                                              • 5 Signaturmechanismen
                                                                                • 51 Integritaumltsschutz und Hashfunktionen
                                                                                  • 511 Schluumlssellose Hashfunktion (Pruumlfsummen ohne Schluumlssel)
                                                                                  • 512 Demonstration Faumllschung
                                                                                    • 52 Unterschied MD5 und SHA
                                                                                    • 53 Secure Hash Standard SHA-2
                                                                                      • 531 Problem bei MD5 und SHA-0
                                                                                      • 532 MACs (Message Authentication Codes) (Pruumlfsummen mit Schluumlsseln)
                                                                                        • 54 Whirlpool
                                                                                        • 55 Zusammenfassung
                                                                                        • 56 Digitale Signaturen
                                                                                          • 561 RSA
                                                                                          • 562 Eigenschaften eines asymmetrischen Verschluumlsselungsverfahren
                                                                                          • 563 RSASSA-PSS-Padding
                                                                                          • 564 DSA
                                                                                          • 565 ECDSA - DSA mit Elliptischen Kurven
                                                                                            • 57 Widerrufen von Zertifikaten
                                                                                            • 58 Was es noch so gibt
                                                                                              • 581 blinde Signaturen
                                                                                              • 582 anonyme Signaturen
                                                                                                  • 6 Zertifikate
                                                                                                    • 603 X509
                                                                                                      • 604 Erweiterungen
                                                                                                      • 605 Erzeugung
                                                                                                      • 606 Guumlltigkeit
                                                                                                        • 61 Praktische Ausschlachtung von kryptografischen Algorithmen mit SMIME und PKCS7
                                                                                                        • 62 PKCS
                                                                                                          • 621 PKCS7 15 November 93 RFC 3852
                                                                                                            • 63 CMS(Cryptographic Message Syntax)
                                                                                                              • 7 Wichtige Neuerungen bei den Versionsaumlnderungen
                                                                                                              • 8 OpenSSL hintergehen
                                                                                                                • 81 die eine Primzahl ganz klein erzeugen
                                                                                                                • 82 beide Primzahlen nah beieinander
                                                                                                                • 83 Vorschrift des BSI
                                                                                                                • 84 Programmierung Zufallszahlenerzeugung und andere nette features
                                                                                                                  • 9 Zusammenfassung
                                                                                                                  • 10 Mathematische Techniken
                                                                                                                    • 101 Multiplikatives Inverses
                                                                                                                      • 1011 Behauptung
                                                                                                                      • 1012 Beweis
                                                                                                                        • 102 Kleiner Fermatscher Satz
                                                                                                                          • 1021 Behauptung
                                                                                                                          • 1022 Beweis
                                                                                                                          • 1023 Verallgemeinerung
                                                                                                                          • 1024 Praktische Anwendung auf Primzahlen
                                                                                                                            • 103 Chinesischer Restklassensatz
                                                                                                                              • 1031 Behauptung
                                                                                                                              • 1032 Beweis
                                                                                                                                • 104 Square and multiply
                                                                                                                                • 105 Montgomery Reduktion (Moduloberechnung ohne Division)
                                                                                                                                • 106 Nochwas

        4163 Verschlusselung 734164 Entschlusselung 74

        417 Angriffe auf asymmetrische Verschlusselungsverfahren 744171 1 Angriff Common modulus attack 754172 2 Angriff kleiner geheimer Exponent d 754173 3 Angriff Faktorisieren 754174 Echt schlechte RSA-Schlussel 754175 Schnelles Faktorisieren bei Fehler im System 764176 Angriff mit gewahltem Chiffretext 76

        5 Signaturmechanismen 7751 Integritatsschutz und Hashfunktionen 77

        511 Schlussellose Hashfunktion (Prufsummen ohne Schlussel) 80512 Demonstration Falschung 83

        52 Unterschied MD5 und SHA 8453 Secure Hash Standard SHA-2 85

        531 Problem bei MD5 und SHA-0 86532 MACs (Message Authentication Codes) (Prufsummen mit Schlusseln) 87

        54 Whirlpool 8955 Zusammenfassung 8956 Digitale Signaturen 91

        561 RSA 92562 Eigenschaften eines asymmetrischen Verschlusselungsverfahren 93563 RSASSA-PSS-Padding 95564 DSA 97565 ECDSA - DSA mit Elliptischen Kurven 99

        57 Widerrufen von Zertifikaten 10358 Was es noch so gibt 105

        581 blinde Signaturen 105582 anonyme Signaturen 105

        6 Zertifikate 105603 X509 107604 Erweiterungen 108605 Erzeugung 111606 Gultigkeit 112

        61 Praktische Ausschlachtung von kryptografischen Algorithmen mit SMIME undPKCS7 114

        62 PKCS 115621 PKCS7 15 November 93 RFC 3852 115

        63 CMS(Cryptographic Message Syntax) 116

        7 Wichtige Neuerungen bei den Versionsanderungen 119

        4

        8 OpenSSL hintergehen 12081 die eine Primzahl ganz klein erzeugen 12082 beide Primzahlen nah beieinander 12083 Vorschrift des BSI 12084 Programmierung Zufallszahlenerzeugung und andere nette features 121

        9 Zusammenfassung 121

        10 Mathematische Techniken 122101 Multiplikatives Inverses 122

        1011 Behauptung 1231012 Beweis 123

        102 Kleiner Fermatscher Satz 1231021 Behauptung 1231022 Beweis 1231023 Verallgemeinerung 1241024 Praktische Anwendung auf Primzahlen 125

        103 Chinesischer Restklassensatz 1251031 Behauptung 1261032 Beweis 126

        104 Square and multiply 127105 Montgomery Reduktion (Moduloberechnung ohne Division) 127106 Nochwas 131

        1 Einfuhrung

        Literaturempfehlungen

        bull Alfred J Menezes Paul C van Oorschot Scott A Vanstone - Handbook of Applied Cryp-tography CRC Press 1996 ISBN 0849385237 httpwwwcacrmathuwaterloocahac

        bull John Viega Matt Messier Pravier Chandra - Network Security with OpenSSL OrsquoReilly2002 ISBN 059600270X

        bull Michael Welschenbach - Kryptographie in C und C++ Springer 2001 ISBN 3540420614

        bull Bruce Schneier - Applied Cryptography Wiley 2nd rev 1996 ISBN 3540420614

        Prufung 24 08 2009

        In der Vorlesung wird ofters der rsquoMagma Calculatorrsquo verwendet Dabei handelt es sich um dieOnline-Version eines Computer Algebra Systems (httpmagmamathsusydeduaucalc) Imfolgenden werden Berechnungen die mit Magma durchgefuhrt wurden mit rsquoMagmarsquo gekenn-zeichnet

        5

        Kryptographie ist einer der beiden Bestandteile der Kryptologie der andere ist Kryptoanalyse

        Kryptographie Entwurf von Sicherheitsalgorythmen die Daten vor Mitlesen und Verandernschutzen

        Kryptoanalyse Aktives Analysieren von kryptographischen Verfahren

        11 Verschlusselung

        Verschlusselung benotigt Menge von Schlusseln

        N - Algorithmus (zB DES) - c

        E

        6

        K

        N Menge der NachrichtenK Menge der Schlusselc Verschlusselte Nachricht

        foralln isin N k isin K c = E(n k) eindeutig

        exist Algorithmus D (decrypt) mit aus c = E(n k) folgt existkprime isin K mit n = D(c kprime)

        12 Beispiel rot13

        N = Alphabetn isin N

        c = n + 13 mod 26Dies ist kein Verschlusselungsalgorithmus da es nur einen Schlussel gibtc = n + k mod 26Dies ist ein Verschlusselungsalgorithmus da es eine Menge von Schlusseln gibt

        c = E(n k) = n + kn = D(c k) = c minus kE(n 13) = D(n 13)

        6

        Variante der Betrachtung kprime = 26 minus k rArr D(c kprime) = E(c kprime)Verschlusseln = Entschlusseln = Vorteil nur ein Algorithmus

        Berechnungk rarr kprime (vernunftig im allgemeinen Sinne)E middot D = IdC

        D middot E = IdN

        Man unterscheidet bei Verschlusselungsverfahren

        symmetrisch k hArr kprime kennt man einen Schlussel kennt man beide

        asymmetrisch k rArr kprime oder k lArr kprime aus dem einen Schlussel kann man denanderen nicht erfahren

        13 Block-Chiffre

        Ausdehnung der Verschlusselung von Alphabet auf Zeichenketten mi Die Originalnachrichtwird in Blocke zerlegt die gleich verschlusselt werden Zum Beispiel

        m = (m1m2m3 )

        k = (k1 k2 k3 )

        ci = mi oplus ki

        Aus der Wikipedia (unter GNU Free Documentation License)

        Symmetrische Verschlusselungsalgorithmen sind oft Blockverschlusselungsalgorithmen (auchBlockchiffre) Bevor sie Daten verschlusseln werden diese zunachst in Blocke unterteilt de-ren Groszlige durch den Algorithmus vorgegeben ist Die Verschlusselungsroutinen setzen jedochganze Blocke voraus somit muss meistens der letzte Block mit Zufallsdaten aufgefullt werden(bei einer Blockgroszlige von 128 Bit werden die verschlusselten Daten somit 0 bis 127 Bit groszligerals der Klartext)Die Blocke werden anschlieszligend nacheinander verschlusselt Dabei ist es durchaus ublich dassdas Ergebnis der Verschlusselung eines Blocks bei der Verschlusselung des nachsten Blocksals Eingangswert mitverwendet wirdWichtige Parameter einer Blockchiffre sind somit die Blocklange (auch Blockgroszlige) und dieSchlussellange

        7

        14 Strom-Chiffre

        Aus der Wikipedia (unter GNU Free Documentation License)

        Eine Strom-Chiffre ver- bzw entschlusselt Nachrichten Bit fur Bit bzw Zeichen fur ZeichenDies steht im Gegensatz zu Block-Chiffren wo Nachrichten immer in gleich groszligen Blockenverarbeitet werden

        Strom-Chiffren sind symmetrische Verschlusselungsalgorithmen die sehr schnell arbei-ten

        Zur Generierung eines Geheimtextes wird zunachst ein Schlusselstrom erzeugt DieserSchlusselstrom ist eine Folge von Zeichen die nur mit Kenntnis des geheimen Schlussels er-zeugt werden kann (in der Regel eine Pseudozufallsfolge) Danach wird jedes Zeichen desSchlusselstroms mit einem Zeichen des Klartextes verknupft Die Verknupfungsoperation istXOR Um Geheimtexte wieder zu entschlusseln wird der Geheimtext mit dem Schlusselstromverknupft

        Beispiele fur Strom-Chiffren sind die XOR-Verschlusselung oder die Entwicklung vonRonald L Rivest namens RC4

        15 Angriffstypen

        m Nachrichtc verschlusselte Nachrichtk Schlussel

        Kommunikation zwischen Alice und Bob mit Angreifer Eve Vorraussetzung Eve kennt dasVerfahren

        1 Chiffre ist bekannt(ciphertext only Chiffre allein Angriff)m k gesucht

        2 (mi ci)-Paare sind bekannt ci = E(kmi)(known plain text bekannter Klartext Angriff)gesucht k und weitere mi

        3 wahlbarer Klartext chosen plaintext(zB Eve hat Encoder in die Hande bekommen)

        4 wahlbarer Chiffretext chosen ciphertext(zB Eve hat Decoder in die Hande bekommen)

        Generelle Schutzmechanismen zum sicherer machen

        8

        1 Klartextbits breit auf Chiffre verteilen und Schlusselbits uberall einbringen um die Si-cherheit zu erhohen bzw einen anderen Algorithmus verwenden um dies zu erreichen

        2 Algorithmus skalieren Lange des Schlussels mehr Runden

        3 Schwachen zusatzlichen Schutz bietet doppeltes verschlusseln zum BeispielAlgorithmus hat 64-Bit Sicherheit (Brute Force Angriff Aufwand von 264) doppelt ver-schlusselt hat er 65-Bit Sicherheit wegen

        rdquomeet in the middle Angriffldquo Ist known plain text attack m ist der Klartext k der Schlusselfur den ersten Algorithmus n der daraus resultierende ldquoZwischentextrdquo l der Schlussel furden zweiten Algorithmus und c die endgultige verschlusselte Nachricht Der Angreiferinist ein m und das dazu gehorige c bekannt Sie erzeugt sich nun alle Werte die k an-nehmen kann und alle Werte die l annehmen kann und berechnet zu jedem ki sowie zujedem li ein ni als E(kim) bzw D(li c) Damit muss sie 2 lowast 264 Paare von Schlusselnund ldquoZwischentextenrdquo erzeugen und speichern In der Menge der ni gibt es nun (da beideVerschlusselungen eindeutig sind) genau zwei - eines als Entschlusselung von c eines alsVerschlusselung von m - die ubereinstimmen Deren Schlussel sind diejenigen die auchbei der Erzeugung von c verwendet wurden Das Auffinden dieses Paares kann durch ge-schickte Speicherung der ni ki und li zum Beispiel in einer Hashtabelle in logarithmischerZeit bewerkstelligt werdenDaher Sicherheit des Algorithmus ist mindestens so stark wie jeder einzelne Algorithmusaber moglicherweise nicht viel besser

        4 Dreifach verschlusseln und Kombination von AlgorithmenDer Meet-in-the-middle attack schlagt hier fehl da der Speicher- und Rechenaufwandnun quadratisch mit dem Werteraum der Schlussel wachst Bei der Verwendung einesschwachen Algorithmus der anderweitig gebrochen werden kann wird die Kombinationjedoch wieder anfallig fur meet-in-the-middle

        5 Block-Chiffre + Strom-Chiffre kombinierenStrom-Chiffre sehr langer Schlussel c = p oplus k k zufallig gewahlt (moglichst echter phy-sikalischer Zufall) zwei Folgen CK rarr in Block-Chiffrerarr Blockweise C2 = E(S 1K)C1 = E(S 2C)Eine Strom-Chiffre und zwei Block-Chiffren Brechen dieser Kombination = Aufwandaddiert sich aber doppelte Ausgabelange

        151 Differentielle Kryptoanalysis

        man wahle Klartexte P1 P2 mit ganz bestimmten Unterschied P1 oplus P2 = D Bei der Ver-schlusselung ergibt sich dann fur die Chiffretexte C1C2 mit bestimmten Dprime = C1 oplus C2 das ineinen bestimmetn Zusammenhang zu D steht

        Bleiben die Schlussel immer gleich so kann man sich langsam mit D1 Dn an den Klartextranprobieren ()

        9

        16 Base64

        Aus der Wikipedia (unter GNU Free Documentation License)

        Base64 [] beschreibt ein Verfahren zur Kodierung von 8-Bit-Binardaten (z B ausfuhrbareProgramme ZIP-Dateien) in eine Zeichenfolge die nur aus wenigen Codepage-unabhangigenASCII-Zeichen besteht Im Zusammenhang mit OpenPGP wird noch eine Prufsumme (CRC-24) angehangt und es als Radix-64 bezeichnet

        Es findet im Internet-Standard MIME (Multipurpose Internet Mail Extensions) Anwen-dung und wird damit hauptsachlich zum Versenden von E-Mail-Anhangen verwendet Notigist dies um den problemlosen Transport von beliebigen Binardaten zu gewahrleisten da SMTPin seiner ursprunglichen Fassung nur fur den Versand von 7-Bit ASCII-Zeichen ausgelegt war

        Zur Kodierung werden die Zeichen A-Z a-z 0-9 + und verwendet sowie = am EndeDa diese Zeichen auch in EBCDIC vorkommen (wenn auch an anderen Code-Positionen) istdamit auch ein Datenaustausch zwischen nicht-ASCII-Plattformen moglich

        Zur Kodierung werden jeweils drei Byte des Bytestroms (=24 bit) in vier 6-bit-Blockeaufgeteilt Jeder dieser 6-bit-Blocke bildet eine Zahl zwischen 0 und 63 Diese Zahlen werdenan Hand der nachfolgenden Umsetzungstabelle in ldquodruckbare ASCII-Zeichenrdquo umgewandeltund ausgegeben Nach jeweils 76 ausgegebenen Zeichen wird spatestens ein Zeilenumbrucheingefugt welcher jedoch ansonsten fur die Kodierung nicht von Belang ist

        Falls die Gesamtanzahl der Eingabebytes nicht durch drei teilbar ist wird der zu kodieren-de Text am Ende mit Fullbytes aufgefullt Um dem Dekodierer mitzuteilen wie viele Fullbytesangefugt wurden werden die 6-Bit-Blocke die vollstandig aus Fullbytes entstanden sind mitrsquo=rsquo kodiert Somit konnen am Ende einer Base64-kodierten Datei 0 1 oder 2 rsquo=rsquo-Zeichenauftreten

        Die angesprochene Transitionstabelle ist eine alphabetisch bzw numerisch aufsteigende Anord-nung zuerst der Groszligbuchstaben dann der Kleinbuchstaben schlieszliglich der Ziffern und am Endeder beiden Zeichen rsquo+rsquo und rsquorsquo in dieser Reihenfolge

        2 OpenSSL

        Optionen fur openssl ciphername oder openssl enc -ciphername

        OPTIONS

        -in filename

        the input filename standard input by default

        -out filename

        the output filename standard output by default

        10

        -pass arg

        the password source

        -salt

        use a salt in the key derivation routines

        -nosalt

        donrsquot use a salt in the key derivation routines

        -e

        encrypt the input data this is the default

        -d

        decrypt the input data

        -a

        base64 process the data This means that if encryption is

        taking place the data is base64 encoded after encryption

        If decryption is set then the input data is base64 decoded

        before being decrypted

        -A

        if the -a option is set then base64 process the data on

        one line

        -k password

        the password to derive the key from This is for

        compatibility with previous versions of OpenSSL Superseded

        by the -pass argument

        -kfile filename

        read the password to derive the key from the first line

        of filename This is for compatibility with previous

        versions of OpenSSL Superseded by the -pass argument

        -S salt

        the actual salt to use this must be represented as a

        string comprised only of hex digits

        -K key

        the actual key to use this must be represented as a string

        comprised only of hex digits If only the key is specified

        the IV must additionally specified using the -iv option

        11

        When both a key and a password are specified the key given

        with the -K option will be used and the IV generated from

        the password will be taken It probably does not make much

        sense to specify both key and password

        -iv IV

        the actual IV to use this must be represented as a string

        comprised only of hex digits When only the key is specified

        using the -K option the IV must explicitly be defined When

        a password is being specified using one of the other options

        the IV is generated from this password

        -p

        print out the key and IV used

        -P

        print out the key and IV used then immediately exit donrsquot

        do any encryption or decryption

        -bufsize number

        set the buffer size for IO

        -nopad

        disable standard block padding

        -debug

        3 Symmetrische Verschlusselungsverfahren

        31 Feistel-Chiffren

        Aus der Wikipedia (unter GNU Free Documentation License)

        Feistel-Chiffre (auch als Feistelnetzwerk bezeichnet) ist eine Block-Chiffre Ein Mitarbeitervon IBM Horst Feistel gilt als der Erfinder dieser Chiffre Er arbeitete mit anderen am sogProjekt rdquoLuciferldquo dessen Ziel es war eine effiziente Verschlusselungstechnologie zu entwi-ckeln Die Feistel-Chiffre war spater dann die Grundlage fur den DES-Algorithmus

        Viele moderne symmetrische Verschlusselungsalgorithmen basieren auf Feistelnetzwer-ken Dies ruhrt ua auch daher dass die Struktur von sehr vielen Kryptografen analysiert undfur gut befunden wurde

        12

        Wie es der Name rdquoBlock-Chiffreldquo schon nahe legt wird der Klartext zuerst in einzelneBlocke zerlegt Die Groszlige dieser Blocke kann frei gewahlt werden ublich sind oftmals Vielfa-che von 64 Bit

        Jeder dieser Blocke wird danach in zwei gleichgroszlige Halften (L0 und R0) geteilt und inmehreren Runden mit verschiedenen Schlusseln verschlusselt Nach den Runden werden dieHalften wieder zusammen gesetzt

        Innerhalb der i-ten Runde (i ist die Nummer der aktuellen Runde und reicht von 1 bis n)wird folgende Formel angewendet

        Li = Riminus1

        Ri = Liminus1 oplus f (Riminus1Ki)

        Dabei bildet f die sog Runden- oder Transformationsfunktion und Ki ist der jeweilige Runden-schlussel Der verschlusselte Text am Ende der Runden ist die Zusammenfuhrung von (LnRn)

        Feistelnetzwerke ermoglichen eine Entschlusselung ohne dass die Umkehrfunktion von fbenotigt wird Will man einen Geheimtext dechiffrieren wendet man die obige Formel leichtmodifiziert an

        Riminus1 = Li

        Liminus1 = Ri oplus f (Riminus1Ki)

        13

        (Quelle httpenwikipediaorgwikiImageFeistelpng)

        32 DES - Data Encryption Standard

        DES ist eine 64 Bit Block-Chiffre mit einer festgelegten Schlussellange von 56 Bit Die Funk-tionsweise entspricht einem 16-Runden Feistel-Netzwerk DES ist der erste Verschlusselungs-Algorithmus der weite Verbreitung fand und dessen Spezifikation offentlich zuganglich ist Erwurde in den 70er Jahren entwickelt und ist im amerikanischen Standard FIPS 46-2 beschrieben

        14

        321 Schlusselauswahl

        Zunachst steht nominal ein 64-Bit Schlussel zur Verfugung Von diesem ist jedoch je ein Bit proByte als Paritatsbit deklariert so dass 56 Bit effektives Schlusselmaterial ubrigbleiben Diese 56Bit werden in 2 mal 28 Bit aufgeteilt die in jeder der 16 Runden um 1 oder 2 Bit rotiert werdeninsgesamt um 28 Bit so dass am Ende wieder das Original vorliegt Aus der Konkatenation derbeiden Halften wird in jeder Runde ein 48-Bit Rundenschlussel ausgewahlt

        (Quelle httpenwikipediaorgwikiImageDES-key-schedulepng)

        15

        322 Funktionsweise

        Die so gewonnenen Rundenschlussel ki werden fur die Runden der Feistelchiffre genutzt E(k1 k2 k16m) =

        cE(k16 k15 k1 c) = mD(k1 k2 k16 c) = E(k16 k15 k1 c) = mJeder 64 Bit Eingabe-Block wird in zwei 32 Bit Blocke (L und R) aufgeteilt und weiterverarbei-tet L und R werden in jeder Runde durch eine festgelegte Permutation E auf 48 Bit ausgedehntanschlieszligend mit dem Rundenschlussel verknupft mittels einer weiteren rundenspezifischenPermutation S wieder auf 32 Bit komprimiert und dann schlieszliglich noch einer weiteren festge-legten Permutation P unterzogenLi = Riminus1Ri = Liminus1 oplus f (Riminus1Ki) wobei f (Riminus1Ki) = P(S (E(Riminus1) oplus Ki))

        rechts Feistelstruktur (Quelle httpenwikipediaorgwikiImageDES-main-networkpng)

        links F Funktion (Quelle httpenwikipediaorgwikiImageDES-f-functionpng)

        16

        (Quelle httpdewikipediaorgwikiBildDES_resizepng)

        323 Schwachstellen und Unsinnigkeiten

        bull Die Anfangliche Permutation der Klartexteingabe sollte Softwareimplementation erschwe-ren Per Hardware ist diese sehr einfach universell verwendbare Rechner hatten in den70er Jahren jedoch noch Probleme mit so etwas

        bull Das Paritatsbit ist eine Schwachstelle da es - soweit es gesetzt ist - ein Durchmustern desSpeichers nach dem Schlussel erlaubt Gesucht wird dann nach dem relativ ungewohn-lichen Auftreten von 8 nahe bei einander liegenden Byte bei denen je das letzte Bit dieParitat angibt

        17

        bull Mit heutigen Rechnern ist es moglich einen 56-Bit Schlussel mittels brute force zu knackenDie Lange des Schlussels ist bei DES aber auf diesen Wert festgelegt

        bull Es wird vermutet dass die ldquomagischenrdquo S-Permutationen uber deren Qualitat nichts be-wiesen ist eine Hintertur darstellen da die NSA hierbei ihre Finger im Spiel hatte Eskonnte jedoch nie bewiesen werden

        324 spezielle Optionen bei openssl

        bull Option -nopad Schaltet Auffullung der letzten Bits zu Block von 64 Bits aus Auch wenndie Nachricht genau in 64 Bit Blocken einteilbar ist wird ein 64 Bit Padding Block an-gehangtDer Block besteht aus x mal der Zahl x So lasst er sich beim Entschlusseln wieder entfer-nen

        bull Option -nosalt Schaltet die Voranstellung des salt-Werts ausDer salt-Wert verlangert die Nachricht um insgesamt 16 Bytes Salted__ gefolgt von 8Bytes salt-WertAus Passwort und salt-Wert wird der Key fur die eigentliche Verschlusselung erzeugt Da-mit wird verhindert dass Schlussel wegen Mehrfachverwendung von Passwortern leich-ter zu brechen sind Gleiche Passworter beim Aufruf der Verschlusselung mit OpenSSLfuhren durch den zufalligen salt-Wert zu verschiedenen Keys bei der Verschlusselung

        bull Neben des gibt es auch des-ede und des-ede3 Diese bieten einen gewissen Schutzgegen Bruteforce-AngriffeTDES (Triple DES) DES3 DES-EDE (Encrypt Decrypt Encrypt) mit effektiv 168 Bit

        E3DES(k1 k2 k3m) = EDES(k3DDES(k2 EDES(k1m)))

        In OpenSSL arbeitet des-ede mit zwei Schlusseln

        E(K1)D(K2) E(K1)

        Um in OpenSSL 3 Schlussel angeben zu konnen muss man des-ede3 verwenden Ver-wendet man bei des-ede zweimal oder bei des-ede3 dreimal den selben Schlusselerhalt man eine einfache DES-Verschlusselung So kann man Abwartskompatibilitat er-reichen

        bull In OpenSSL konnen DES Verschlusselungen mit folgenden Befehlen aufgerufen werden

        ndash -desndash -des-cbcndash -des-cfbndash -des-ecbndash -des-edendash -des-ede-cbc

        18

        ndash -des-ede-cfbndash -des-ede-ofbndash -des-ede3ndash -des-ede3-cbcndash -des-ede3-cfbndash -des-ede3-ofbndash -des-ofbndash -des3ndash -desxndash -desx-cbc

        OpenSSL des-ecb -salt fur den Schlusseleintrag aus Passphrasepassphrase = 12345prime +prime S alt minusWert rarr K

        12345srarr

        264 Moglichkeiten

        Damit man keine Tabelle generieren kann die aus den schwachen Schlussel besteht denn fur12345 gibt es 264 Moglichkeiten aufgrund des salts

        (PC12345)(PC1234)

        P- (Klartext) bekanntS- (Saltwert) bekanntC- (Chiffretext) unbekanntwelcher Schlussel wurde verwendet

        112123

        1234

        rarr K

        s1 s2 s3c1 c1 c1c12 c12 c12c123 c123 c123c1234 c1234 c1234

        Dazu kommt aber spater noch mehr

        19

        325 DESECB - Electronic Code Book

        Die Eingabe wird in Blocke aufgeteilt und jeder Block fur sich verschlusselt Dieses Verfahrenist potentiell unsicher weil in der Abfolge der Blocke eine Struktur enthalten ist die der Algo-rithmus nicht verbirgt Ein Fehler beim Ver- oder Entschlusseln eines Blockes fuhrt allerdingsauch nur zu einem einzigen verlorenen Block

        To do Initialisierungsvektor

        (Quelle httpenwikipediaorgwikiImageEcb_encryptionpng)

        (Quelle httpenwikipediaorgwikiImageEcb_decryptionpng)

        BemReicht fur einen Block dann wird auch kein Initialisierungsvektor benotigt

        20

        Man kann fur den Initialisierungsvektor auch einen vorher vereinbarten Wert (zB Unix Sekun-den) wahlen

        Aus der Wikipedia (unter GNU Free Documentation License)

        Die 64-bit Klartextblocke werden nacheinander und getrennt voneinander kontextfrei ver-schlusselt Dies ist die einfachste Anwendungsmoglichkeit eines Block-Chiffre

        326 DESCBC - Cipher Block Chaining

        Aus der Wikipedia (unter GNU Free Documentation License)

        Vor der Verschlusselung eines Klartextblockes wird der bereits verschlusselte vorhergehendeBlock hinzuaddiert Auf den ersten Klartextblock der ja keinen Vorganger besitzt wird stattdessen ein Initialisierungsvektor der geheim gehalten werden muss addiert Dadurch entstehteine Verkettung (engl chain) der Blocke Trotz dieser Verkettung ist die CBC-Verschlusselung

        rdquoselbstkorrigierendldquo FehlerManipulationen in einem Block wirken sich bei der Entschlusse-lung nur auf den fehlerhaftenmanipulierten und den nachsten Block ausMan kann relativ einfach beliebige Blocke des Geheimtextes einzeln entschlusseln da zusatz-lich zum Schlussel nur der vorhergehende (verschlusselte) Block benotigt wird

        Fehler im c breiten sich nicht aus beim Entschlusseln Ein Initialisierungsvektor IV fur erstenBlock wird benotigt

        bull Klartext oplus Cipher und dann Encryption

        bull Vorteil Muster im Klartext werden zerstort

        bull Nachteil Fehler im Ciphertext eines Blocks verandern Bits an genau der Stelle im folgen-den Block (aber nur in diesem spatere Blocke sind nicht betroffen) so kann gezielt eineStelle im Block angegriffen werden (siehe Skizze)

        To do Skizze zur Fehlerausbreitung erlautern

        21

        m1 mlowast2 mlowast3

        IV oplus

        oplus

        oplus

        oplus

        DES

        DES

        DES

        DES

        c1

        DDc2

        DDc3

        DDc4

        EE

        Vergleich DESECB und DESCBC

        Zum Vergleich bietet es sich an ein Bild (Abbildung 1) mit DES im ECB- und im CBC-Moduszu verschlusseln Deutlich zu erkennen ist dass die Struktur im ECB-Modus (Abbildung 2)erhalten bleibt wahrend sie bei CBC (Abbildung 3) vollkommen zerstort wird

        Abbildung 1 Bild im Klartext (24 Bit RGB mit 182 times 183 Pixeln)

        Abbildung 2 Bild aus Abbildung 1 ECB-verschlusselt

        22

        Abbildung 3 Bild aus Abbildung 1 CBC-verschlusselt

        327 DESOFB - Output Feed Back

        Aus der Wikipedia (unter GNU Free Documentation License)

        In diesem Modus werden die Klartextblocke nicht direkt mit DES verschlusselt sondern DESerzeugt einen pseudozufalligen Bitstrom der dann ohne Ubertrag (vgl XOR) auf den Klartextaddiert wird Dazu muss DES mit einem kontinuierlichen Eingabestrom gefuttert werden AlsEingabe von DES dient hier ein Schieberegister dass zunachst mit einem Initialisierungsvektorgeladen wird Anschlieszligend wird immer ein Teil der Ausgabe von DES in dieses Registerhineingeschoben und so als Eingabe wiederverwendet (daher output feedback)

        bull Output der Encrpytion als Input fur Encryption erzeugt Pseudozufallsstrom oplus Klartext

        bull Vorteil Beliebige Blockgroszligen moglich wie Stromchiffre verwendbar

        bull Nachteil Durchsatz verringert sich auf neue Blockgroszlige pro erzeugtem Block kann abervorberechnet werden

        bull Vorteil Ein Bit Fehler fuhrt zu nur einem invertierten Bit nach der Entschlusselung

        bull Nachteil Keine Selbstsynchronisierung moglich wenn Bits komplett verloren gehen

        23

        (Quelle httpdewikipediaorgwikiBildOfb_encryptionpng)

        (Quelle httpdewikipediaorgwikiBildOfb_decryptionpng)

        328 DESCFB - Cipher Feed Back

        Aus der Wikipedia (unter GNU Free Documentation License)

        Identisch mit OFB aber statt die Ausgabe des DES wieder als Eingabe zu verwenden wirdder Kryptotextstrom als Eingabe wiederverwendet

        bull Cipher als Input fur Encryption erzeugt Pseudozufallsstrom oplus Klartext

        24

        bull Vorteil Beliebige Blockgroszligen moglich wie Stromchiffre verwendbar

        bull Nachteil Durchsatz verringert sich auf neue Blockgroszlige pro erzeugtem Block

        (Quelle httpdewikipediaorgwikiBildCfb_encryptionpng)

        (Quelle httpdewikipediaorgwikiBildCfb_decryptionpng)

        329 CTR Mode CCM

        Dieser Modus spielt fur DES keine Rolle Ist auch nicht in OpenSSL implementiert Aber die-se Betriebsart ist fur 128 Bit Verschlusselungen ist zum Beispiel vom BSI als sicher eingestuftworden rsquoDie Betriebsart der Zukunftrsquo

        Wird zum Beispiel fur W-LAN Verschlusselung verwendet

        25

        Eingabe sind Klartext mit einen Zahler

        ctr0 rarr Block rarr oplusT rarr c0ctr1 rarr Block rarr oplusp1 rarr c1ctr2 rarr Block rarr oplusp2 rarr c2ctr3 rarr Block rarr oplusp3 rarr c3

        ctrn rarr Block rarr opluspn rarr cn

        Standardisiert als rsquoSP 800-38crsquo

        (N A P) mit N Zufallswerten A Assoziierte Daten P Klartext produziert Blocke B0 B1 Br

        httpcsrcnistgovpublicationsnistpubs800-38CSP800-38C_updated-July20_

        2007pdf

        To do algorithmus uberarbeiten ubersetzen

        1 Apply the formatting function to (N A P) to produce the blocks B0 B1 Br

        2 Set Y0 = CIPHK(B0)

        3 For i = 1 to r do Yi = CIPHK(Bi oplus Yiminus1)

        4 Set T = MS BTlen(Yr)

        5 Apply the counter generation function to generate the counter blocks Ctr0Ctr1 Ctrmwhere m = dPlen128e

        6 For j = 0 to m do S j = CIPHK(Ctr j)

        7 Set S = S 1||S 2|| ||S m

        8 Return C =(P oplus MS BPlen(S )

        )||(T oplus MS BTlen(S 0)

        )

        T stellt einen Prufwert dar

        3210 TEA-Algorithmus

        To do uberarbeiten

        26

        Nicht in OpenSSL implementiert Universitarer Algorithmus

        (Quelle httpdewikipediaorgwikiBildTEA_InfoBox_Diagrampng)

        Man sieht die Feistel Idee allerdings die grunen Quadrate sind Additionen modulo 64 Bit

        To do erlautern Pfeilspitzen

        Es gibt ein Extended TEA struktur recht ahnlich aber beim Algorithmus an der Stelle

        Byte 0 28 minus 1 | 28ii

        b middot k = (b middot k mod (28 + 1)) mod 28 Es gibt auch eine Inverseb middot K rarr c rarr c middot kprime = b

        geht nur bei 22 + 1 24 + 1 28 + 1 216 + 1

        27

        3211 DES-X

        In OpenSSL desx KK1K2

        EncK(m oplus K2) oplus K1 = DES minus X(m)

        c1 oplus c2 = EncK(m1 oplus K2) oplus EncK(m2 oplus K2)

        Ist unsymetrisch Hat sich nicht so ganz durchgesetzt

        33 IDEA International Data Encryption Algorithm

        IDEA gilt als sehr sicher ist schneller als DES bei Hardwareimplementation tauchte zuerst alsPES auf Unterschied PES und IPES ist die untere XOR-Vertauschung (siehe Wikipedia Skiz-ze) die es im PES nicht gab War nur zur privaten Nutzung frei ansonsten patentiert weshalber nicht so verbreitet war IDEA verschlusselt 64-Bit Eingabe-Blocke in 64-Bit Ausgabe-Blockeund verwendet dabei einen 128-Bit Schlussel Der Algorithmus basiert im wesentlichen auf 8identischen Runden die den Runden einer Feistel-Chiffre ahnlich sind und einer abschlieszligendenTransformation der Ausgabe In jeder Runde werden 6 16-Bit Subschlussel in der Ausgaben-Transformation weitere 4 davon verwendet Samtliche Subschlussel werden aus dem Original-schlussel berechnet Die 64 Bit Eingabe jeder Runde werden dabei als 4 16-Bit-Blocke verar-beitet Der Algorithmus benutzt verschiedene algebraische Operationen

        bull Polynomaddition mod 2 XOR (blau-verbraucht wenig Strom)

        bull Addition mod 216 ADD (grun-verbraucht wenig Strom etwas Zeit - Uberlauf wirdignoriert)

        bull Multiplikation mod 216︸︷︷︸prim

        +1 MULT (rot-viel Strom)

        Aus der Wikipedia (unter GNU Free Documentation License)

        Der IDEA-Algorithmus (International Data Encryption Algorithm) wurde 1990 als ein Ge-meinschaftsprojekt zwischen der ETH Zurich von James L Massey und Xueija Lai und derAscom Systec AG entwickelt IDEA ist ein symmetrischer Algorithmus und gehort zu denBlockchiffren Der Algorithmus benutzt einen 128-Bit langen Schlussel (DES nur 64 Bit da-von sind 8 Bits fur den Paritats-Check vorgesehen so dass die eigentliche Schlussellange nur56 Bits betragt)

        Bei der Verschlusselung wird der Klartext in 64 Bit groszlige Blocke unterteilt und derSchlussel in Teilstucke zu je 16 Bit zerlegt Die Verschlusselung geschieht durch Kombina-

        28

        tion der logischen Operation XOR der Addition modulo 216 und der Multiplikation modulo216+1 Die Kombination dieser drei Operationen aus unterschiedlichen algebraischen Gruppensoll ein hohes Maszlig an Sicherheit gewahrleisten

        Das Verfahren ist dazu optimiert Angriffen durch differentielle Kryptoanalyse zu wider-stehen

        Es gibt bei IDEA leider eine ganze Reihe von schwachen Schlusseln die sich in zweiKlassen einteilen lassen Die erste Klasse umfasst 232 schwache Schlussel Sie sind insofernschwach als man sie mit gewahltem Klartext nachweisen kann Danach ist ein Brute ForceAngriff selbst fur Privatpersonen mit alteren PCs machbar Die zweite Klasse umfasst sogar265 schwache Schlussel Bei diesen Schlusseln kann man mit nur 20 gewahlten Klartexten72 Bit des Schlussels ermitteln Die restlichen 56 Bit muss man mit Brute Force ermittelnAllerdings liegt die Wahrscheinlichkeit dafur einen schwachen Schlussel zu erwischen bei einszu 263 oder eins zu 9 Trillionen

        Weil die Ascom Systec AG an der Entwicklung des Algorithmus beteiligt war halt siedie Patente fur IDEA In Europa verfallt der Patentschutz am 16052011 In den USA wirdder Algorithmus bereits ein Jahr fruher kostenlos nutzbar sein Da das Patent in der Schweizerteilt wurde greift das Patent auch in Deutschland unabhangig davon dass in DeutschlandSoftwarepatente nicht legal sind

        Der Algorithmus beruht wesentlich darauf dass 216 + 1 eine Primzahl ist Deshalb lasst sichIDEA nicht auf andere Blocklaengen adaptieren

        331 Schlusselauswahl

        Aus den 128 Bit des ursprunglichen Schlussels werden in insgesamt 52 16-Bit Teilschlussel er-zeugt Dabei werden aus dem aktuellen Schlusselwert (initial der ursprungliche 128-Bit Schlussel)8 der Teilschlussel durch aufteilen gewonnen Dann wird der aktuelle Schlussel subsequent um25 Bit nach links rotiert und so je ein neuer aktueller Schlussel erzeugt der wieder zu Teil-schlusseln aufgeteilt wird - solange bis alle Teilschlussel belegt sind Es werden 6 middot 16-Bit ineiner Runde verbraucht in 8 Runden also 48 Teilschlussel Hinzu kommen 4 Teilschlussel dienach der letzten Runde fur weitere Operation verwendet werden Insgesamt werden also 52Teilschlussel mit je 16-Bit aus 128-Bit Rohschlussel erzeugt und auch verbraucht rarr 832-BitSchlusselmaterial

        332 Funktionsweise

        In jeder Runde r finden folgende Transformationen statt

        1 X1 = X1 MULT Kr1 X4 = X4 MULT Kr

        4 X2 = X2 ADD Kr2 X3 = X3 ADD Kr

        3

        2 t0 = Kr5 MULT (X1 XOR X3) t1 = Kr

        6 MULT (t0 ADD (X2 XOR X4)) t2 = t0 ADD t1

        29

        3 X1 = X1 XOR t1 X4 = X4 XOR t2 a = X2 XOR t2 X2 = X3 XOR t1 X3 = a

        Dabei sind X1 bis Xi die 16-Bit Blocke die aus der 64 Bit Eingabe gewonnen wurden Kri ist der

        Teilschlussel mit der Nummer r middot 6 + i Die abschlieszligende Transformation ergibt sich wie folgtY1 = X1 MULT K9

        1 Y4 = X4 MULT K94 Y2 = X3 ADD K9

        2 Y3 = X2 ADD K93

        Dabei sind die Yi 4 16-Bit Worter die die Ausgabe darstellen

        (Quelle httpdewikipediaorgwikiBildInternational_Data_Encryption_Algorithm_InfoBox_Diagrampng)

        bull In OpenSSL konnen IDEA Verschlusselungen mit folgenden Befehlen aufgerufen wer-den

        ndash -ideandash -idea-cbcndash -idea-cfbndash -idea-ecbndash -idea-ofb

        333 Pseudocode-multiplikation

        To do als Pseudocode machen

        30

        if(a==0)return ((216 +1)-b) mod 216

        if(a==0)return ((216 + 1)-a) mod 216

        if(a middot b) mod 216 gt (a middot b) div 216 return (a middot b) mod 216 minus (a middot b) div 216

        if(a middot b) mod 216 le (a middot b) div 216 return (216 + 1) + (a middot b) mod 216 minus (a middot b) div 216

        wenn a==0 rArr a = 216 equiv minus1 mod 216

        334 Schwachstellen

        Bei schlechter implementation konnen die XOR-Berechnungen am Stromverbrauch erkanntwerden Es konnen Ruckschlusse auf bestimmte Werte (insbesondere Null) gemacht werdenNach 218 Testrechnungen kann der Klartext bestimmt werdenSolche Angriffe nennt man Seiten Kanal Atacken in diesem Fall ist der Stromverbrauch derSeitenkanal (Zeitverbrauch spielt beim Idea keine Rolle)Bei guter Implementation gilt aber der Algorithmus als sicher

        To do Skizze Stromverbrauch

        34 Blowfish

        Blowfish ist eine sehr schnelle 64-Bit 16-Runden Block-Chiffre die 1993 von Bruce Schneiererfunden wurde Die Lange der Schlussel ist variabel zwischen 32 und 448 Bit Als Teilschlusselwerden aus dem Ausgangsschlussel eine P-Box mit 18 mal 32 Bit und 4 S-Boxen mit 256 mal32 Bit generiert (P1 P18) (S 1 S 4)

        Blowfisch Algorithmus von Bruc Schreier ist vollig Patentfrei dies hat sehr zu seiner Verbrei-tung beigetragen

        31

        F

        F

        14 weitere Runden

        (Quelle httpdewikipediaorgwikiBildBlowfish_structure_(de)svg)

        P1 P18 die XOR auf den Klartext kommen

        Schlussel-P1 P18 und

        -S-Boxen

        32

        (Quelle httpenwikipediaorgwikiImageBlowfishFFunctionsvg)

        S ist 256 32 Bit WerterArr 4 middot 256 middot 32 Werte rArr kann man sich nicht merken also wird P1 P18 S 1 S 4 werdenals Hexadezimalwerte von π gewahlt

        (K)n oplus (P1 P18)

        Der so initialisierte Algorithmus wird auf den Klartext 0 0︸ ︷︷ ︸64

        angewendet Das Ergebnis ersetzt

        (P1 P2) Der so initialisierte Algorithmus wird auf den Klartext 0 0︸ ︷︷ ︸

        64

        angewendet Das Ergebnis

        ersetzt (Pi Pi+1) Der so initialisierte Algorithmus wird auf den Klartext 0 0︸ ︷︷ ︸64

        angewendet

        Das Ergebnis ersetzt (S 1 S 2)

        Auf kosten eines sehr aufwendigen Schlusselmanagment wird ein schneller Algorithmus er-reicht Fur Prozessoren mit wenig Speicher unpraktisch

        341 Initialisierung

        Teilschlusselmanagement Sehr viele Teilschlussel werden aus wenig Schlusselmaterial gene-riert

        1 P und S werden mit einer Hexadezimal-Expansion von Pi initialisiert

        2 Der Schlussel als Sequenz von 32-Bit-Werten wird mittels XOR auf die P-Box addiertwobei er eventuell ldquowiederholtrdquo wird um die ganze Lange der Box abzudecken P1 oplus K1P2 oplus K2 P18 oplus K18

        3 Sowohl die P-Box als auch die S-Boxen werden verschlusselt

        33

        bull Verschlussle mit Blowfish den Nullstring rarr 64-Bit Ausgabe = 2 32-Bit = neueP1 P2

        bull Verschlussle mit Blowfish (Pi Pi+1) die Ausgabe verwende als (Pi+2 Pi+3) Wieder-hole diesen Schritt fur i von 1 bis zum Ende der P-Boxbull Anschlieszligend S 10 S 11 rarr S 12 S 13 Im gleichen Verfahren wie bei der P-Box

        werden die S-Boxen verschlusselt

        Insgesamt ist so ein langer Vorlauf notig bevor die eigentliche Verschlusselung der Daten be-ginnt

        342 Verschlusselung

        In jeder Runde r (insgesamt 16 Runden) wird folgendes Verfahren angewendet

        1 Der 64-Bit Eingabeblock wird in zwei 32-Bit-Halften L und R zerlegt

        2 L = L oplus Pr R = R oplus f (L)f (L) ist dabei folgendermaszligen charakterisiert Zunachst wird das Argument L als Konka-tenation von 4 8-Bit Vektoren a b c und d aufgefasst die als naturliche Zahlen zwischen0 und 255 verwendet werden

        f (a b c d) = ((S 1a + S 2b mod 232 oplus S 3c) + S 4d mod 232

        3 L und R werden vertauscht konkateniert und als Eingabe fur die nachste Runde verwen-det

        Nach der letzten Runde wird noch R = R oplus P17 und L = L oplus P18 durchgefuhrt

        Aus der Wikipedia (unter GNU Free Documentation License)

        Blowfish ist ein sehr schneller und nicht patentierter Algorithmus der besonders auf 32-Bit-Prozessoren eine exzellente Performance bietet Ein weiterer Vorteil ist seine variableSchlussellange von 32 bis zu 448 Bit Die Blockgroszlige betragt 64 Bit

        bull In OpenSSL konnen Blowfish Verschlusselungen mit folgenden Befehlen aufgerufen wer-den

        ndash -bfndash -bf-cbcndash -bf-cfbndash -bf-ecbndash -bf-ofbndash -blowfish

        34

        35 AES Advanced Encryption Standard

        351 Wiederholung-Byteoperation

        Wir hatten folgende Byteoperationen kennengelernt

        bull Multiplikation mod 256 bzw mod 257 ohne 0

        bull Addition mod 256

        bull XOR-Addition (oplus)

        Die Operationen werden in der dementsprechenden Basisdarstellung modulo 256 durchgefuhrt

        352 Uberblick

        AES wurde im Standard FIPS 197 festgeschrieben

        Aus der Wikipedia (unter GNU Free Documentation License)

        AES ist eine Block-Chiffre dessen Blocklange und Schlussellange unabhangig voneinanderdie Werte 128 192 oder 256 Bit erhalten kann Jeder Block wird zunachst in eine zweidimen-sionale Tabelle mit vier Zeilen geschrieben dessen Zellen ein Byte groszlig sind Die Anzahl derSpalten variiert somit je nach Blockgroszlige von 4 (128 Bit) bis 8 (256 Bit) Zum Beispiel fur 16Byte werden die Bytes wie folgt eingetragen

        1 5 9 132 6 10 143 7 11 154 8 12 16

        Jeder Block wird nun nacheinander bestimmten Transformationen unterzogen Aber anstattjeden Block einmal mit dem Schlussel zu verschlusseln wendet AES verschiedene Teile desSchlussels nacheinander auf den Klartext-Block an Die Anzahl dieser Runden (r) variiertund ist von Schlussellange (k) und Blockgroszlige (b) abhangig Je nach Blocklange b undSchlussellange k wird die Anzahl der Runden bestimmt (10 12 oder 14)

        r b=128 b=192 b=256k=128 10 12 14k=192 12 12 14k=256 14 14 14

        S-BoxenEine Substitutionsbox (S-Box) dient als Basis fur eine monoalphabetische Verschlusselung

        35

        Sie ist meist als Array implementiert und gibt an welches Byte wie getauscht wird DieS-Box in AES basiert auf einem mathematischen Zusammenhang und ist somit fest imAlgorithmus implementiert Doch dies ist kein Schwachpunkt da die S-Box lediglich zur Ver-mischung der Bytes in Kombination mit weiteren Operationen und dem Schlussel genutzt wird

        Ablauf

        bull Schlusselexpansion (nach Fips-197 S23 Kapitel 52)

        Der Schlussel rsquokeyrsquo wird auf den Anfang des expandierten Schlussels rsquowrsquo ubernommen(i lt Nk) Danach berechnet sich w[i] wie folgt

        w[i] =

        w[i minus 1] i mod Nk 0S ubWord(RotWord(w[i minus 1])) oplus Rcon i mod Nk = 0S ubWord(w[i minus 1]) Nk gt 6i (mod N)k = 4

        (1)

        w[i] = w[i] oplus w[i minus Nk] (2)

        Der zugehorige Quelltext (Fips-197 entnommen)

        KeyExpansion(byte key[4Nk] word w[Nb(Nr+1)] Nk)

        begin

        word temp

        i = 0

        while (i lt Nk)

        w[i] = word(key[4i] key[4i+1] key[4i+2] key[4i+3])

        i = i+1

        end while

        i = Nk

        while (i lt Nb (Nr+1)]

        temp = w[i-1]

        if (i mod Nk = 0)

        temp = SubWord(RotWord(temp)) xor Rcon[iNk]

        else if (Nk gt 6 and i mod Nk = 4)

        temp = SubWord(temp)

        end if

        w[i] = w[i-Nk] xor temp

        i = i + 1

        end while

        end

        36

        Fur Beispiele siehe Fips-197 Appendix A1

        bull Vorrunde

        ndash KeyAddition (XOR-des Rundenschlussels)

        bull Verschlusselungsrunden

        ndash Substitution - Jedes Byte b wird ersetzt durch bprime = 1b wie bei Polynommultiplikati-

        on Weiter wird jedes Byte als ein 8-dimensionaler Vektor aufgefasst und folgendeOperation angewendet

        b1b2

        b8

        =

        1 0 0 0 1 1 1 11 1 0 0 0 1 1 11 1 1 0 0 0 1 11 1 1 1 0 0 0 11 1 1 1 1 0 0 00 1 1 1 1 1 0 00 0 1 1 1 1 0 00 0 0 1 1 1 1 0

        middot

        b1b2

        b8

        +

        c1c2

        c8

        ndash ShiftRow - Erste Zeil wird nicht verschoben die zweite Zeil um eins die dritteZeile um zwei die vierte um drei (siehe Wikipedia)

        ndash MixColumn - Zu jeder Spalten

        b1b2b3b4

        des Blocks wird folgende Polynommultiplika-

        tion durchgefuhrt

        (b1x3 + b2x3 + b3x + b4) middot (03X3 + 04X2 + 01X + 02) mod (X4 + 1)

        und die Koeffizienten in gleicher Weise wieder in die jeweilige Spalte eingetragenWobei (X4 + 1) das Inverse (0BX3 + 0DX2 + 09X + DE) hat

        ndash KeyAddition

        bull Schlussrunde

        ndash Substitutionndash ShiftRowndash KeyAddition

        Fur die Entschlusselung gehe die oben angegebene Reihenfolge ruckwarts durch Beachtedabei dass ShiftRow und Subst vertauschbar sind Bei ShiftRow wird in umgekehrter Weiseverschoben Ebenso sind KeyAdd und MultColumn vertauschbar wenn der Rundenschlusselmodifiziert wird (B(X) lowast (S (X) oplus K(X)) = S (X) lowast B(X) oplus B(X) lowast K(X) also ist der modifiziertSchlussel B(X) lowast K(X)) Die Entschlusselung entspricht also der Verschlusselung mit modifi-zierten Schlusseln

        37

        353 mathematische Grundlagen

        Speziell der Schritt Mix-Column beinhaltet einige interessante mathematische Uberlegungen Ersoll zu einer moglichst effektiven Vermischung der 32 Bit in jeder Spalte fuhren die die Suchevon dem unverschlusselten Text ahnlichen Mustern im verschlusselten Text erschwert Dabeiwerden arithmetische Operationen aus zwei algebraischen Gruppen angewandt

        1 Die Gruppe der Bytes F82 Jedes Byte b7b6b0 wird als ein Polynom b7 middot X7 + b6 middot X6 +

        b0 middot X0 angesehen Diese Polynome konnen addiert und multipliziert werden Damitdabei der Werteraum des Byte nicht verlassen wird finden diese Operationen modulom(X) = X8 + X4 + X3 + X +1 statt m ist dabei irreduzibel es gilt also ggT (b(X)m(X)) = 1fur jedes Byte b Somit ist F2[X]m(X) ein Korper und die Multiplikation ist abgeschlos-sen Es gilt fur jedes Paar von Bytes b c eindeutig b middot c = d rarr dc = b Multiplikationenkonnen also eindeutig ruckgangig gemacht werden so dass eine Entschlusselung moglichistBei Zahlen die groszliger als m(X) sind werden also durch die modulo Operation die Koeffi-zienten von x4 x3 x1 x0 verandertBeispiel in Magma

        Q = IntegerRing(2)

        Pltxgt = PolynomialRing(Q)

        f=xˆ7+1

        g=xˆ3+xˆ2+x+1

        fg

        fg mod(xˆ8 +xˆ4+xˆ3+x+1)

        IsPrime(xˆ8 +xˆ4+xˆ3+x+1)

        Ausgabe

        xˆ10 + xˆ9 + xˆ8 + xˆ7 + xˆ3 + xˆ2 + x + 1

        xˆ7 + xˆ6 + xˆ3 + xˆ2 + x

        true

        2 Die Gruppe der Worter F4256 Die 4 Bytes einer Spalte w3w2w1w0 werden wieder als Po-

        lynom aufgefasst w3 middot X3 + w2 middot X2 + w1 middot X + w0 Diese konnen wieder multipliziertund addiert werden wobei die arithmetischen Operationen auf den jeweiligen Bytes in F8

        2stattfinden Die Operationen in F4

        256 werden modulo M(X) = X4 + 1 ausgefuhrt M(X) istzwar nicht irreduzibel aber da der Algorithmus nur eine beschrankte Gruppe von Operan-den verwendet bleiben auch hier alle Operationen invertierbar

        Mix-Column multipliziert (in F4256) nun jede Spalte mit c(X) = 3 middot X3 + X2 + X + 2 Die so

        beschriebene lineare Funktion erreicht beweisbar eine groszlige Diffusion der Eingabe

        38

        bull In OpenSSL konnen AES Verschlusselungen mit folgenden Befehlen aufgerufen werden

        ndash -aes-128-cbcndash -aes-128-cfbndash -aes-128-ecbndash -aes-128-ofbndash -aes-192-cbcndash -aes-192-cfbndash -aes-192-ecbndash -aes-192-ofbndash -aes-256-cbcndash -aes-256-cfbndash -aes-256-ecbndash -aes-256-ofbndash -aes128ndash -aes192ndash -aes256

        36 RC4 Ronrsquos Cipher 4

        Geheimes Chiffreverfahren mit Strom-Chiffre von Ron Rivest 1987 Entstehungsjahr 1994 imNetz aufgetaucht 1999 tauchte im Internet ein Draft ARCFOUR (ARC4) auf der die gleichenErgebnisse lieferte

        Byte orientiert zwei Bytes m k dann wird berechnetm oplus k = cDer Algorithmus basiert auf S-Boxen (Permutationen)

        mdashmdashSkizze Seite 2b ganz oben

        PRG (Pseudo Random Generator)mdashmdashweitere Skizze

        Initialisierung K = L Bytes als Schlussel s[i] = i (identische Permutation)L = 1255 fur RC4 mit 40-Bit L = 5 mit 64-Bit L = 8 mit 128-Bit L = 16j = 0 fur i = 0255rarr j = ( j + s[i] + K[ j mod L]) mod 256

        Problem K-Masterkeyrarr salted key Initialwert (frei bekannt) HashInitial(K) = Kaktuell rarr RC4

        39

        Anfangsstucke von PRG RC4 sind nicht rdquorichtig zufalligldquo verraten viel uber KaktuellRegel fur RC4 Die ersten 256-Byte wegschmeiszligen

        Aus der Wikipedia (unter GNU Free Documentation License)

        RC4 (Ronrsquos Cipher 4) ist ein fur Software optimierter Stromchiffrierer welcher zur Ver-schlusselung von Daten eingesetzt wird Er wurde 1987 von Ronald L Rivest fur RSA DataSecurity Inc (heute RSA Security) entwickelt

        Der Algorithmus war sieben Jahre lang geheim (ldquosecurity by obscurityrdquo) bis 1994 derQuellcode anonym veroffentlicht wurde

        RC4 hat im Gegensatz zu DES eine variable Schlussellange Die Schlussellange kann biszu 2048 Bit betragen RC4 verschlusselt immer ein Byte auf einmal

        Er besteht aus einer so genannten S-Box die sich wahrend der Verschlusselung fortlau-fend andert Diese wird durch ein Passwort initialisiert das fur jede Verschlusselung einmaligsein muss Jedes Klartextzeichen wird XOR mit einem bestimmten vom Paszligwort abhangi-gen Zeichen aus der S-BOX verknupft Theoretisch sind somit ca 2 hoch 1700 verschiedeneZustande moglich

        Der Algorithmus ist sehr kompakt und funf- bis zehnmal schneller als der weitverbreite-te DES Deshalb findet der RC4 Algorithmus in einigen Echtzeit-Systemen Anwendung wiebeispielsweise Mobilfunk (Cellular Digital Packet Data) SSH (Secure Shell) WLAN (Wire-less LAN) oder den Dateiverschlusselungs-Programmen SecurePC und Cryptext Die Verar-beitungsgeschwindigkeit des DES ist jedoch selbst in kleinsten Mikrokontrollern meist ausrei-chend Der Schlussel beim DES und anderen Blockchiffren wie dem AES (CBC-Mode) kannim Gegensatz zum RC4 auch mehrfach verwendet werden Vergleichbare Stromchiffren wieSEAL sind vergleichbar schnell und gelten als sicher

        Aus der Wikipedia (unter GNU Free Documentation License)

        ubersetzt aus dem Englischen nach httpenwikipediaorgwikiRC4RC4 (oder ARCFOUR) ist die am weitesten verbreitete Stromchiffre und wird in vielen be-kannten Protokollen beispielsweise SSL oder WEP verwendet Trotzdem entspricht RC4 nichtmehr dem heutigen Sicherheitsstandard und manche Verwendungsweisen von RC4 fuhren zusehr unsicheren Kryptosystemen (zB WEP) Daher wird es nicht fur die Verwendung in neuenSystemen empfohlen Allerdings gibt es auch RC4-basierte Systeme die sicher genug fur denpraktischen Gebrauch sind

        361 Geschichte

        Aus der Wikipedia (unter GNU Free Documentation License)

        ubersetzt aus dem Englischen nach httpenwikipediaorgwikiRC4RC4 wurde 1987 von Ron Rivest von RSA Security erfunden Offiziell bedeutet die Abkurzung

        40

        ldquoRivest Cipher 4rdquo alternativ wird sie aber als ldquoRonrsquos Coderdquo verstanden (s auch die anderenRC-Algorithmen) Zunachst war RC4 ein Betriebsgeheimnis jedoch wurde im September1994 eine Beschreibung anonym auf der ldquoCypherpunksrdquo Mailingiste gepostet Es wurde baldin die scicrypt newsgroup weitergepostet und von dort auf viele Internet-Seiten verbreitetNachdem der Algorithmus nun bekannt ist ist er kein Betriebsgeheimnis mehr Der NameldquoRC4rdquo unterliegt jedoch weiterhin dem Markenschutz Zur Zeit sieht es so aus als seien ldquoinof-fiziellerdquo Implementationen zwar legal konnen aber nicht den Namen ldquoRC4rdquo verwenden Umdieses Problem zu umgehen wird RC4 oft als ldquoARCFOURrdquo bezeichnet RC4 wird inzwischenin einigen weit verbreiteten Verschlusselungsprotokollen und Standards unter anderem WEPund WPA fur WLAN Karten und SSL verwendet

        362 Beschreibung

        Aus der Wikipedia (unter GNU Free Documentation License)

        ubersetzt aus dem Englischen nach httpenwikipediaorgwikiRC4RC4 generiert einen pseudo-zufalligen Bitstrom (einen ldquoSchlusselstromrdquo) der bei der Ver-schlusselung mit dem Klartext mittels XOR verknupft wird Die Entschlusselung funktioniertgenauso Um den Schlusselstrom zu generieren benutzt die Chiffre einen internen Zustand deraus zwei Teilen besteht

        1 eine Permutation aller 256 moglichen Bytes (wird im Folgenden als S bezeichnet)

        2 zwei 8-Bit Index-Zeiger (mit i und j bezeichnet)

        Die Permutation wird mit einem Schlussel von variabler Lange ublicherweise zwischen 40und 256 Bit initialisiert wobei der Schlusselerzeugungs-Algorithmus verwendet wird An-schlieszligend wird der Bit Strom durch den Pseudo-Zufalls-Algorithmus generiert

        363 Der Pseudo-Zufalls-Algorithmus

        Aus der Wikipedia (unter GNU Free Documentation License)

        ubersetzt aus dem Englischen nach httpenwikipediaorgwikiRC4In jeder Iteration wird der Zustand verandert und ein Byte des Schlusselstroms ausgegebenDabei wird i inkrementiert der Wert von S an der Stelle i auf j addiert S [i] und S [ j] vertauschtund der Wert von S an der Stelle S [i]+S [ j] mod 256 ausgegeben Jeder Wert von S wird dabeimindestens einmal alle 256 Iterationen vertauscht In Pseudocode lasst sich der Algorithmusfolgendermaszligen darstellen

        i = 0

        j = 0

        41

        while GeneratingOutput

        i = (i + 1) mod 256

        j = (j + S[i]) mod 256

        swap (S[i] S[j])

        output (S[(S[i] + S[j]) mod 256])

        (Wobei i offentlich ist und j geheim ist)

        i j

        0 1 2 S[i]+S[j] i j 253 254 255

        S

        S[i] S[j]

        S[i]+S[j]K

        (Quelle httpdewikipediaorgwikiBildRC4svg)

        364 Der Schlusselerzeugungs-Algorithmus

        Aus der Wikipedia (unter GNU Free Documentation License)

        ubersetzt aus dem Englischen nach httpenwikipediaorgwikiRC4Der Schlusselerzeugungs-Algorithmus wird benutzt um die Permutation in S zu initialisierenl wird als die Zahl der Bytes des Schlussels definiert und kann zwischen 1 und 255 liegenublicherweise liegt l zwischen 5 und 32 so dass eine Schlussellange von 40 bis 128 Bit zu-stande kommt Zunachst wird S mit der Identitatspermutation initialisiert Anschlieszligend wirdS in 256 Iterationen mit einem Algorithmus der dem Pseudo-Zufalls-Algorithmus ahnelt aberzusatzlich die Schlusselbits hineinmischt weiterverarbeitet Der folgende Pseudocode drucktdies aus

        for i from 0 to 255

        S[i] = i

        j = 0

        for i from 0 to 255

        42

        j = (j + S[i] + key[i mod l]) mod 256

        swap(S[i]S[j])

        365 Implementation

        Aus der Wikipedia (unter GNU Free Documentation License)

        ubersetzt aus dem Englischen nach httpenwikipediaorgwikiRC4Viele Stromchiffren basieren auf ldquolinear feedback shift registersrdquo und sind damit sehr effizientin Hardware aber weniger effizient in Software implementierbar RC4 hat dieses Manko nichtund kommt zudem ausschlieszliglich mit 8-Bit Operationen aus Damit ist RC4 ideal fur Software-Implementationen

        366 Sicherheit

        Aus der Wikipedia (unter GNU Free Documentation License)

        ubersetzt aus dem Englischen nach httpenwikipediaorgwikiRC4RC4 verfehlt die ublichen Standards fur sichere Chiffren an mehreren Stellen und wird somitnicht zur Verwendung in neuen Anwendungen empfohlen Der von RC4 generierte Schlussel-strom tendiert dazu bestimmte Sequenzen von Bytes haufiger zu enthalten als andere undist somit nicht wirklich zufallig Der beste Angriff der auf diesem Sachverhalt beruht wur-de von Fluhrer und McGrew entdeckt und kann aus einem Gigabyte verschlusseltem Textden Schlusselstrom berechnen Zudem verwendet RC4 keine ldquononcerdquo einen fur jeden Klar-text neu generierten Zusatzschlussel Eine solche ldquononcerdquo wird im allgemeinen als zentralesSicherheitskriterium betrachtet da so gewahrleistet ist dass eine zweimal nacheinander ver-schlusselte Nachricht zwei verschiedene verschluesselte Texte erzeugt Naturlich kann einesolche ldquononcerdquo im Nachhinein aufgesetzt werden indem als RC4-Schlussel nicht der eigentli-che Benutzerschlussel sondern beispielsweise ein Hashwert des Schlussels mit einer nonce ver-wendet wird Die einfachere Methode den Schlussel nur mit der nonce zu konkatenieren dievon einigen Anwendungen genutzt wird fuhrt aufgrund des schwachen Schlusselerzeugungs-Algorithmus wieder zu neuen Problemen

        To do anmerkungen zu k=1-Angriffsmoglichkeiten

        43

        367 Fluhrer Mantin und Shamir Angriff

        Aus der Wikipedia (unter GNU Free Documentation License)

        ubersetzt aus dem Englischen nach httpenwikipediaorgwikiRC42001 wurde eine erstaunliche Entdeckung gemacht Die statistische Verteilung der ersten paarBytes des Schlusselstroms ist uber alle RC4-Schlussel stark nicht-zufallig und enthalt Infor-mationen uber den Schlussel selbst Falls die nonce lediglich mit dem Schlussel konkateniertwurde (oder gar keine nonce verwendet wurde) kann der Schlussel durch die Analyse einergroszligen Zahl verschlusselter Nachrichten herausgefunden werden Mit Hilfe dieses Sachver-haltes und einiger damit zusammenhangender Effekte wurde dann die WEP-Verschlusselung(ldquowireless equivalent privacyrdquo) die in 80211 WLAN-Netzen verwendet wird gebrochen Diesfuhrte zu einer Suche nach einem Ersatz fur WEP und letztlich zu den Bemuhungen um 80211isowie zu WPA

        Der geschilderte Angriff kann naturlich umgangen werden wenn die ersten (ca 256) Bytes desSchlusselstroms verworfen werden

        bull In OpenSSL konnen RC4 Verschlusselungen mit folgenden Befehlen aufgerufen werden

        ndash -rc4ndash -rc4-40

        37 RC5 Ronrsquos Cipher 5

        Die zentrale Neuerung des RC5-Algorithmus sind datenabhangige Rotationen bei denen einZwischenergebnis um eine Zahl von Bytes rotiert wird die weder fest vorgegeben noch vomSchlussel bestimmt sondern aus einem Teil des Klartextes berechnet ist Diese Operation wirdfolgendermaszligen notiert a ltltlt b bedeutet dass a um b Bits nach links rotiert wird Ein weitererinteressanter Aspekt ist die universelle Parametrisierbarkeit des Algorithmus Sowohl die Langeder Worter w als auch die Zahl der Runden r und die Lange des Schlussels b sind wahlbar sodass der Algorithmus offen ist fur zukunftige Bedurfnisse die weitere Operation + wird nun alsAddition modulo 2w definiert In openssl ist RC5 mit den Parameters w = 32 r = 12 b = 16 im-plementiert Samtliche Algorithmen gehen im folgenden von einer little-endian Byte-Anordnungaus Der Algorithmus besteht aus einem Verschlusselungs- und einem Schlusselexpansions-Teil

        371 Verschlusselung

        Gegeben ein auf t = 2(r + 1) Worter expandierter Schlussel S und ein aus zwei Wortern A undB bestehender Eingabeblock gibt folgender Pseudocode den Verschlusselungs-Algorithmus an

        44

        A = A + S[0]

        b = B + S[1]

        for i = 1 to r do

        A = ((A XOR B) ltltlt B) + S[2i]

        B = ((B XOR A) ltltlt A) + S[2i + 1]

        Die Entschlusselung lauft dementsprechend folgendermaszligen ab

        for i = r downto 1 do

        B = ((B - S[2i + 1]) gtgtgt A) XOR A

        A = ((A - S[2i]) gtgtgt B) XOR B

        A = A - S[0]

        B = B - S[1]

        372 Schlusselexpansion

        Zunachst wird S mit einer Kombination aus e und ϕ (dem goldenen Schnitt) initialisiert und derSchlussel in ein Array L kopiert das wortweise indiziert wird Anschlieszligend wird mit folgendemAlgorithmus der Schlussel in S hinein gemischt

        i = j = 0

        A = B = 0

        do 3 max(t 8bw) times

        A = S[i] = (S[i] + A + B) ltltlt 3

        B = L[j] = (L[j] + A + B) ltltlt (A + B)

        i = (i+1) mod t

        j = (j+1) mod (8bw)

        38 GOST 28147-89 Gosudarstvennyi Standard Soyuza SSR nicht inOpenSSL

        GOST ist das russische Normungsinstitut vergleichbar mit DIN oder ANSI

        (siehe auch httpenwikipediaorgwikiGOST_(block_cipher))

        Gost-Chiffre ist eine relativ simple Feistel-Chiffre auf 64 Bit mit 32 Runden 256 Bit Schlussellangeund 8 S-Boxen von zusammen 512 Bit die - da sie geheim gehalten werden konnen - alsSchlusselerweiterung gelten konnen Die Rundenfunktion besteht aus der Addition eines 32-Bit-Substrings des Schlussels der Anwendung der S-Boxen (parallel da jede S-Box 4 Bit alsEin- und Ausgabe hat) und einer 11-Bit-Rotation Die Sicherheit des Algorithmus beruht auf

        45

        der Verwendung sehr langer Schlussel geheimer S-Boxen und der gegenuber DES verdoppeltenRundenzahl In jeder einzelnen Runde wird jedoch ein geringerer Durchmischungseffekt erreichtals bei DES-Runden

        Geheimer Algorithmus S-Boxen auch geheim

        (Quelle httpenwikipediaorgwikiImageGOSTDiagrampng)

        46

        Feistel Chiffre

        Addition Substitution Rotation

        Die S-Boxen sind Gruppenschlussel die extra zugewiesen werden16 4 Bit Werte werden Permutiert 32 RundenSchlusselmaterial 32 die 256 Bit werden jeweils in 8 32 Bit Unterschlussel eingeteilt wobei dieSchlussel wie folgt verwendet werden1234567123456712345677654321

        (Dann einmal S-Box einmal rotieren und dann Feistelschritt)

        Die Sicherheit steckt in den 32 Runden Der Algorithmus wurde bisher nicht geknackt

        39 FazitWie konnte bei einen Symmetrischen Algorithmus die Sicherheiterhohen

        (Das ware zB fur eine Interessante Frage fur eine Klausur)

        bull komplexes Schlusselmanagment

        bull viele Runden

        bull komplexe vermischung pro Runde (AES)

        4 Asymmetrische Verschlusselungsverfahren

        41 Einfuhrung

        AliceBob Chris Dave Eve

        Alice BobkA kA

        Enck1(M) = C minusrarr M = Deck2

        Verschlusselungsverfahren kA kB EncDecAus kA kann kB nicht bestimmt werden dann kann kA sogar offentlich sein Ziel ist es dass je-

        47

        der verschlusseln kann aber nur einer kann (in realistischer Zeit) entschlusseln Solche Verfah-ren mit offentlichen Schlussel werden auch asymmetrisch genannt Mit groszligen Aufwand kannnaturlich der Schlussel immer noch bestimmt werden Man wahlt einen Text mprime Verschlusseltihn (Enck(mprime) = cprime) und probiert dann solange alle k durch bis man Deck(cprime) = mprime erhalt

        Das kB kann aber immer bestimmt werden

        for k_B =00000 to FFFF

        M_0 C_0 sind gegeben

        Dec_k_B(C_0) = M_0

        Wichtig ist nur das dies nicht in rsquovernunftigerrsquo Zeit gemacht werden kann

        To do text sortieren

        Klartext minusrarr E(K) ChiffretextKlartext D(Kprime)larrminus ChiffretextE(K p) = c und zu jedem KexistKprime mit D(Kprime c) = p und K wird offentlich gemachtDie Berechnung von Kprime aus K ist schwer Bruteforce ist nicht ausgeschlossen die Bestimmungvon K aus Kprime ist leicht

        leichtEnckA DeckB (kA kB)minusErzeugung

        schweraus kA allein kB erzeugen

        411 Beispiel

        Bob mochte von Alice verschlusselte Nachrichten lesen Bob uberlegt sich ein asymmetrischesVerfahren wahlt Kprime berechnet K und veroffentlicht KAlice nimmt K berechnet E(K p) = c und sendet c an BobBob berechnet aus c mit Kprime das ursprungliche p

        42 Geschichte

        Whitfield Diffie New Directions in Cryptographie Idee wurde auch schon mal von Ralf Merkelveroffentlich Britische Geheimdienst hatt vorher die Idee auch schon mal

        48

        Aus der Wikipedia (unter GNU Free Documentation License)

        Asymmetrische Verfahren sind ein relativ neues Gebiet der Kryptografie Eine wichtige Vorar-beit fur die asymmetrischen Verfahren sind die Arbeiten von Whitfield Diffie Martin Hellmanund Ralph Merkle zum geheimen Schlusselaustausch Anfang der 1970er Jahre Im Sommer1975 veroffentlichten Diffie und Hellman eine Idee zur asymmetrischen Verschlusselung oh-ne jedoch ein genaues Verfahren zu kennen

        Anfang der 1970er Jahre wurden von Ellis Cocks und Williamson ein dem spateren Ver-fahren von Diffie-Hellman ahnliches asymmetrisches Verfahren entwickelt welches aber inseiner wirtschaftlichen Bedeutung nicht erkannt und aus Geheimhaltungsgrunden nicht (wis-senschaftlich) publiziert und auch nicht zum Patent angemeldet wurde Alle drei waren Mitar-beiter des englischen Government Communications Headquarters

        Der Durchbruch gelang Ronald L Rivest Adi Shamir und Leonard M Adleman die 1977das RSA-Verfahren entwickelten Es gilt bis heute als sicheres Verfahren und hat auszligerdem dengroszligen Vorteil in beiden Richtungen eingesetzt werden zu konnen

        43 Einige Theoretische Grundlagen

        431 Kleiner Fermat (oder kleiner Fermatrsquoscher Satz)

        Fur beliebige Primzahlen p gilt

        n(pminus1) = 1 mod p fur alle n isin Z

        To do Wikipedia verlinken

        432 Euklidischer Algorithmus

        To do erganzen Erweiterter Euklidischer Algorithmus fehlerhaft

        Aus der Wikipedia (unter GNU Free Documentation License)

        Beschreibung durch PseudocodeIm Folgenden wird der moderne Euklidische Algorithmus sowohl in einer rekursiven als

        auch einer iterativen Variante beschrieben Dabei sind a und b jeweils die beiden Zahlen derengroszligter gemeinsamer Teiler berechnet werden soll

        Rekursive Variante

        49

        EUCLID(ab)

        1 wenn b = 0

        2 dann return a

        3 sonst return EUCLID(b a mod b)

        Iterative Variante

        EUCLID(ab)

        1 solange b = 0

        2 r = a mod b

        3 a = b

        4 b = r

        5 return a

        FunktionsweiseIn jedem Schritt des Algorithmus wird eine Division mit Rest ausgefuhrt riminus1 = qi+1 middot

        ri + ri+1 0 le ri+1 lt ri Die Division mit Rest hat die Eigenschaft dass ggT(riminus1 ri) =

        ggT(ri ri+1) giltIm letzten Schritt des Algorithmus rnminus1 = qn+1 middot rn + 0 ist rn+1 = 0 und es gilt deshalb

        ggT(rnminus1 rn) = ggT(rn 0) = rn

        Da im ersten Schritt riminus1 = a und ri = b war ist ggT(a b) = rn

        (Quelle httpdewikipediaorgwikiEuklidischer_Algorithmus)

        (Denn es gilt ggT(a b) = ggT(b r))

        Aus der Wikipedia (unter GNU Free Documentation License)

        Man kann diese Rekursion in folgende Abfolge von Schritten fur den erweiterten euklidi-

        schen Algorithmus fassen Erhalte rdquoardquo und rdquobrdquo als EingabeSetze rdquok=0rdquo r0 = a r1 = b s0 = 1 und s1 = 0WiederholeErhohe rdquokrdquo um einsBestimme den ganzzahligen Quotienten qk = rkminus1 div rkSetze rk+1 = rkminus1 minus qk middot rk und sk+1 = skminus1 minus qk middot skbis rk+1 = 0 giltGib den Rest rk = ggT(a b) und die Zahl sk mit ggT(a b) equiv sk middot a (mod b) zuruckJeder Schritt enthalt implizit auch einen Multiplikator tk = (rk minus sk middot a) div b wobei diese

        Division keinen Rest lasst Die Folge (tk)k kann auch explizit bestimmt werden es gelten t0 =

        0 t1 = 1 und tkminus1 equiv qk middottk+tk+1 Nach dem letzten Schritt ergibt sich nun ggT(a b) = sk middota+tk middotbDer Ubersicht halber werden beim handischen Rechnen auch noch die Hilfsfolgen (ak =

        rkminus1)k und (bk = rk)k sowie (uk = skminus1)k sowie (vk = tkminus1)k mitgefuhrt

        50

        Zur Berechnung des Inversen modulo einer Restklasse benotigt man die tk aber nicht und kannsie ignorieren

        Aus der Wikipedia (unter GNU Free Documentation License)

        Rekursive VarianteFur den erweiterten euklidischen Algorithmus existiert auch eine rekursive Variante die

        durch den folgenden Pseudocode gegeben istab zwei Zahlen fur die der erweiterte euklidische Algorithmus durchgefuhrt wirdrdquoextended euclidrdquo(ab)1 rdquorsquowennrdquorsquo b = 02 rdquorsquodann returnrdquorsquo (a10)3 (drsquosrsquotrsquo)larr rdquoextended euclidrdquo(b a mod b)4 (dst)larr (drsquotrsquosrsquo - floor(ab)trsquo)5 rdquorsquoreturnrdquorsquo (dst)

        (Quelle httpdewikipediaorgwikiErweiterter_euklidischer_Algorithmus)

        Wenn n mod m teilerfremd sind dann existiert so ein Exponent f so dass

        n f equiv 1 mod m

        ist

        Wenn m = m1 middotm2 ein Produkt von zwei verschiedenen Primzahlen ist dann ist fur alle n die zum teilerfremd sind

        n(m1minus1)middot(m2minus1) equiv 1 mod m

        Denn es ist nm1minus1 equiv 1 mod m1 und nm2minus1 equiv 1 mod m2 Dann ist n(m1minus1)middot(m2minus1) minus 1 durch m1und m2 teilbar Denn nach dem Chinesischen Restsatz gilt n(m1minus1)middot(m2minus1) equiv 1 mod m1 middot m2 undwenn eine Zahl durch m1 middot m2 teilbar ist so auch durch m1 und m2

        433 Beispiel

        In Magma

        p=17 q=23

        m=(p-1)(q-1)

        e=19

        F=IntegerRing(m)

        51

        d=(Fe)ˆ(-1)

        d=IntegerRing()d

        19315 div 16

        19315 -374 16

        n=pq

        K=IntegerRing(n)

        N=100

        C=(KN)ˆ(e) Verschlusseln

        C

        Cˆd

        10019 equiv 349 mod 349

        349352 equiv 100 mod 391

        10019middot315 = 100 mod 17

        10019middot315 = 100 mod 23

        10019middot315 equiv 100374middot16+1 mod 17 equiv 100 middot (10016)374︸ ︷︷ ︸=1

        mod 17

        To do Analog von Mathias kopieren

        To do Wiederholung einsortieren

        Wiederholung

        Nachricht n

        ne equiv c( mod m)

        Chiffre c

        cd equiv (ne)d = ndmiddote = n1+k(pminus1)(qminus1) = n middot (n(pminus1)(qminus1))k︸ ︷︷ ︸=1

        equiv n middot 1k = n mod m

        nminusrarr

        dm cminusrarr

        em n

        52

        aus (em) kann man (dm) nicht leicht bestimmen weil man die Zerlegung m = p middotq nicht kenntWer p q kennt kann aus den einen den anderen Schlussel berechnen Wer de kennt kann pqbestimmen

        Verschlusselung kann jeder ausfuhren offentlicher Schlussel (em) Entschlusselung bleibt demvorbehalten der das geheime d (oder auch pq) kennt

        schnelles Potenzieren Ist die Berechung von ne ck ausreichend schnell

        m 1000 Bit pq-150 Dezimalstellen

        ne hat sehr sehr viele Dezimalstellen

        Deshalb berechnet man erst modulo und potenziert dann mit e

        (n mod m)e (c mod m)d

        Beispiele n19 = n middot n middot middot n︸ ︷︷ ︸19 Multiplika-tionen

        oder man rechnet

        n n2 n4 n8 n16 4 Quadrierungen

        n16 middot n2 middot n = n19

        so auch bei n1025 = n n2 n1024 n middot n1024 wo nur 11 Multiplikationen gebraucht werden

        Pseudocode nex=1

        repeat

        if (e = 1 mod 2)x = x middot n(prime mod mprime)

        n = n2(prime mod mprime)

        e = ediv2

        until e==1

        k = (nprime)0 middot xprime

        x = k = ne

        53

        44 RSA Rivest Shamir Adleman

        Bei dem Versuch die Idee der Asymmetrischen Kryptografie zu wiederlegen wurde RSA entwi-ckelt

        RSA beruht auf der Schwierigkeit n = p middotq in seine Primfaktoren zu zerlegen Verschlusseln undEntschlusseln ist Potenzieren modulo n

        D E = id

        p = (pe)d mod n

        p = pemiddotd mod n

        e middot d = 1 mod (p minus 1) middot (q minus 1)

        E(e n) ist offentlich und D(d n) geheim Die Bestimmung von e d n aus p q ist leicht GenauerDie Bestimmung von e aus (d n) ist leicht die Bestimmung von d aus (e n) ist schwer weilFaktorisierung n = p middotq (vermutlich) schwierig ist ist Bestimmung von d aus (e n) auch schwerWer p und q aus n berechnen kann kann auch d bestimmen (Euklid)

        Wer e und d kennt kann p und q bestimmen (dazu waren Erlauterungen in der Vorlesung)

        441 Funktionsweise des RSA-Verfahrens

        (nach wwwcryptooldedownloadsCrypToolScript 1 3 04 depdf)Man kann die Einzelschritte zur Durchfuhrung des RSA-Verfahren folgendermaszligen beschrei-ben Schritt 1 bis 3 sind die Schlusselerzeugung Schritt 4 ist die Verschlusselung 5 die Ent-schlusselung

        1 Wahle zufallig 2 verschiedene Primzahlen p und q und berechne n = p middot q Der Wert nwird als RSA-Modul bezeichnet

        2 Wahle zufallig e isin 2 n minus 1 so dass gilt e ist teilerfremd zu J(n) = (p minus 1) middot (q minus 1)Zum Beispiel kann man e so wahlen dass gilt max(p q) lt e lt J(n) minus 1 Danach kannman p und q ldquowegwerfenrdquo

        3 Wahle d isin 1 n minus 1 mit e middot d = 1 mod J(n) dh d ist die multiplikative Inverse zu emodulo J(n) Danach kann man J(n) ldquowegwerfenrdquo

        bull (n e) ist der offentliche Schlussel Pbull (n d) ist der geheime Schlussel S (es ist nur d geheim zu halten)

        4 Verschlusselung des Klartextes (bzw seiner Blocke) M isin 1 n minus 1

        C = E((n e) M) = Me mod n

        54

        5 Entschlusselung des Chiffretextes (bzw seiner Blocke) C isin 1 n minus 1

        M = D((n d) C) = Cd mod n

        442 Beweis der Funktionsweise

        (nach wwwcryptooldedownloadsCrypToolScript 1 3 04 depdf)Fur Schlusselpaare (n e) und (n d) die die in den Schritten 1 bis 3 des RSA-Verfahrens festge-legten Eigenschaften besitzen muss fur alle M lt n gelten M equiv (Me)d mod n wobei (Me)d =

        Memiddotd Das heiszligt der oben angegebene Dechiffrieralgorithmus arbeitet korrekt Wir zeigen das in3 Schritten

        1 Im ersten Schritt zeigen wir Memiddotd equiv M mod p Dies ergibt sich aus den Voraussetzungenund dem Satz von Fermat Da n = p middot q und J(p middot q) = (p minus 1) middot (q minus 1) und da e undd so gewahlt sind dass e middot d equiv 1 mod J(n) gibt es eine ganze Zahl k so dass gilte middot d = 1 + k middot (p minus 1) middot (q minus 1)

        Memiddotd equiv M1+kmiddotJ(n) equiv M middot MkmiddotJ(n) equiv M middot Mkmiddot(pminus1)middot(qminus1) mod p

        equiv M middot (Mpminus1)kmiddot(qminus1) mod p

        (aufgrund des kleinen Fermat Mpminus1 equiv 1 mod p)

        equiv M middot (1)kmiddot(qminus1) mod p

        equiv M mod p

        Die Voraussetzung fur die Anwendung des kleinen Fermat war dass M und p teilerfremdsind Da das im allgemeinen nicht gilt mussen wir noch betrachten was ist wenn M undp nicht teilerfremd sind da p eine Primzahl ist muss dann notwendigerweise p ein Teilervon M sein Das heiszligt aber

        M equiv 0 mod p

        Wenn p die Zahl M teilt so teilt p erst recht Memiddotd Also ist auch

        Memiddotd equiv 0 mod p

        Da p sowohl M als auch Memiddotd teilt teilt es auch ihre Differenz (Memiddotd minus M) equiv 0 mod pUnd damit gilt auch in diesem Spezialfall unsere zu beweisende Behauptung

        2 Vollig analog beweist man Memiddotd equiv M mod q

        3 Nun fuhren wir die Behauptungen der ersten beiden Schritte zusammen fur n = p middot qum zu zeigen Memiddotd equiv M mod n fur alle M lt n Nach den ersten beiden Schritten gilt(Memiddotd minus M) equiv 0 mod p und (Memiddotd minus M) equiv 0 mod q also teilen p und q jeweils dieselbeZahl z = (Memiddotd minus M) Da p und q verschiedenen Primzahlen sind muss dann auch ihrProdukt diese Zahl z teilen Also gilt

        (Memiddotd minus M) equiv 0 mod p middot q

        55

        oderMemiddotd equiv M mod p middot q

        oderMemiddotd equiv M mod n

        45 Schwachen von RSA

        bull Wenn N Nachrichten aus einer kleinen Menge gewahlt werden ist RSA unsicher

        for Nprime do (Nprime)e = C1 if C1 = C then N = Nprime

        bull Wenn N und e zu klein sind ist RSA unsicher dass heiszligt wenn Ne als Zahl kleiner als nist so das nich modulo gekurzt wird so kann man einfach eradicc

        bull Angriff mit frei gewahlten Chiffretext angenommen man hat Zugriff auf die Verschlusse-lungsmaschine so dass man mit selber vorgebenen Cprime Nprime berechnen kann (Cprime minusrarr Nprime)

        Re = S mod n S d = R mod n Cprime = S middotC

        (Cprime)d = S d middotCd = R middot N︸︷︷︸Nrsquo

        mod n

        Nprime middot Rminus1 = N mod n

        N1 minusrarr C1

        N2 minusrarr C2

        rArr N1 middot N2 minusrarr C1 middotC2

        bull Jeder Benutzer braucht ein eigenes n dass heiszligt man muss fur jeden Benutzer die entspre-chenden Primzahlen suchen allerdings ist dies aufwendig

        bull RSA ist extrem langsam im Vergleich zu symmetrischen Verfahren openssl speed rsabzw speed aes-256

        46 Fuktionen in OpenSSL

        461 genrsa

        genrsa erzeugt Schlusselpaare fur RSASchlussellange num_bits frei wahlbar wobei es einen Bug bei kleinen Werten gibt (weniger als60 Bit) so kurze Schlussel aber auch nicht verwendet werden solltenOptionen

        usage genrsa [args] [numbits]

        -out file output the key to file

        -passout arg output file pass phrase source

        56

        -f4 use F4 (0x10001) for the E value

        -3 use 3 for the E value

        -des encrypt the generated key with DES in cbc mode

        -des3 encrypt the generated key with DES in ede cbc mode (168 bit key)

        -idea encrypt the generated key with IDEA in cbc mode

        -aes128 -aes192 -aes256 encrypt PEM output with cbc aes

        -engine e use engine e possibly a hardware device

        -rand filefile load the file (or the files in the

        directory) into the random number generator

        462 rsa

        rsa gibt den public-key zu gegebenen private-key aus Auszligerdem auch weitere Informationenwie verwendeter Modulus Mit rsa kann auch ein gegebener key neu verschlusselt abgespeichertwerden

        rsa [options] ltinfile gtoutfile

        where options are

        -in arg input file

        -out arg output file

        -pubin expect a public key in input file

        -pubout output a public key

        -passin arg input file pass phrase source

        -passout arg output file pass phrase source

        -text print the key in text

        -noout donrsquot print key out

        -modulus print the RSA key modulus

        -check verify key consistency

        -des encrypt PEM output with cbc des

        -des3 encrypt PEM output with ede cbc des using 168 bit key

        -idea encrypt PEM output with cbc idea

        -aes128 -aes192 -aes256 encrypt PEM output with cbc aes

        -inform arg input format - one of DER NET PEM

        -outform arg output format - one of DER NET PEM

        57

        -sgckey Use IIS SGC key format

        -engine e use engine e possibly a hardware device

        463 rsautl

        Mit rsautl konnen Dateien ver- oder entschlusselt und signiert oder verifiziert werden

        Usage rsautl [options]

        where options are

        -in file input file

        -out file output file

        -inkey file input key

        -pubin input is an RSA public

        -certin input is a certificate carrying an RSA public key

        -sign sign with private key

        -verify verify with public key

        -encrypt encrypt with public key

        -decrypt decrypt with private key

        -hexdump hex dump output

        -pkcs use PKCS1 v15 padding (default)

        -oaep use PKCS1 OAEP

        -ssl use SSL v2 padding

        -raw use no padding

        -keyform arg private key format - default PEM

        -passin arg pass phrase source

        -engine e use engine e possibly a hardware device

        464 PKCS

        spater noch ausfuhrlicher hier nur kurz die Verwendung bei RSA

        Padding beginnt mit 0002 endet mit 00 und dann kommt der Chiffretext

        58

        465 OAEP - Optimal Asymmetric Encryption Padding

        Normalerweise wird mit RSA nur ein Schlussel fur eine symmetrische Verschlusselung ver-schlusselt da RSA verglichen mit symmetrischen Algorithmen sehr langsam ist

        Bemerkung Vergleichen mit speed rsa und speed aes (siehe History 21012009)

        Ist die so festgelegte Lange des Klartextes erheblich kleiner als die des RSA-Schlussels so ist einAuffullen der restlichen Bits notig Die implizite Methode (beim Betrachten des Klartextes alsZahl) einfach 0en einzusetzen empfiehlt sich nicht da die Zusatzinformation die ein Angreiferso uber den Klartext bekommt das Decodieren des geheimen Schlussels vereinfacht

        Beim Padding soll diese Gefahr verringert werden Per default wird bei openssl PKCS benutztAllerdings ist die Verwendung von OAEP besser Beim OAEP ist im Gegensatz zum PKCSdie Lange des Klartextes nicht mehr sichtbar (man kann nur noch dass beginnende 00 Byteerkennen) Choosen Plaintext Attacke ist nicht mehr moglich

        Dabei wird essenziell die zu verschlusselnde Nachricht mit einem Hashwert eines Zufalls-Stringsper xor verknupft und so randomisiert Eine Modifikation des benutzten Hashwerts wird dannmit der Nachricht konkateniert und steht beim Entschlusseln wieder zur Verfugung

        1 Label hash Label =

        2 PS erzeugen (alles Nullen 128-1-h-h-1-mdashmmdash)

        3 DB =

        4 Seed wahlen Lange h (irgendwas seed = Hash(irgendwas))

        5 DBmaske = MGF(seed mdashDBmdash)

        6 mDB = DB oplus GBmask

        7 seedmaske = MGF(mDB mdashseedmdash)

        8 mseed = seed oplus seedmaske

        9 EM =

        10 RSA-Verschlusselung C equiv EMe mod n

        MGF Hash Eingabe x Lange l

        tc = Hash(x c)

        mdashcmdash = 4 Byte

        MGF(x l) = t0 t1 t2 t3 |MGF( l)| = l

        59

        Ruckgangig

        1 Entschlusseln

        2 Zerlegen 00 mseed mDB

        3 seedmaske = MGF(mDB mdashmseedmdash)

        4 seed = mseed oplus seedmaske

        5 DBmaske = MGF(seed mdashmDBmdash)

        6 DB = mDB oplus DBmaske

        7 Padding abtrennen

        PKCS1 v15

        Die fur den Modul verwendeten Primzahlen mussen die ersten beiden Bits gesetzt haben dasgarantiert nach Multiplikation der Primzahlen dass das Produkt im oberen Byte das obere Bitgesetzt hat und somit die feste voranstehende 0 uberdeckt

        466 Wie erkennt man an Ciphertexten den Verschlusselungsalgorithmus- DER ASN1

        Standards damit man (zB RSA) verschlusselte Texte erkennt

        DER- distingushed Encoding Rules

        ASN1- Abstract Syntax Notation

        openssl asn1parse -genstr INTEGER4711 -out intasn1 openssl asn1parse -in intasn1 -inform DER

        Integer werden in ASN1 als rsquo 02︸︷︷︸Tag

        lange Datenrsquo kodiert Integers brauchen 1 Byte mehr rsquoDatenrsquo

        damit Das Vorzeichen 00 enthalten ist Integer ist immer mit Vorzeichen

        Tag fur andere Typen

        Bool 01

        Int 02

        Octet String 04

        Bitstring 03 rsquolangersquo rsquoungenutzte bits am Endersquo rsquoByte des Bitstringrsquo [evt ungenutzte Bits]

        Text PRINTABLESTRING

        60

        utf8 UTF8String

        Text mit Zeichen (emailadresse) IA5STRING

        DatumZeit UTC

        mit Jahrhundert GENTIME

        nuscht (der leere Typ) NULL

        Mengentypen seq set

        Mann kann auch eigene Typen generierend EXPLICITAF oder so

        467 Umgehen mit den Schlusselkomponenten

        Ein vollstandiger RSA-Schlussel besteht aus einem Modul (modulus) n = p middot q offentlichemExponent e privatem Exponent d Primzahl 1 p Primzahl 2 q (haufig p gt q) Exponent 1 dpExponent 2 dq Koeffizient qi und kann so ausgegeben und gespeichert werden

        Bei der Version fur rsquoarmersquo werden nur n offentlicher Exponent e und geheimer Exponent dangegeben

        c equiv me mod n (3)

        m equiv cd mod n (4)

        Vorteil der vollstandigen Version Geschwindigkeitserhohung bei der Entschlusselung in Schritt(4)

        dp equiv d mod (p minus 1) d = k middot (p minus 1) + dp

        dq equiv d mod (q minus 1)qi middot q equiv 1 mod q

        m equiv cd mod (p middot q) berechnenm1 equiv cdp mod p 500 Operationen mit 1

        2 langem Modulm2 equiv cdq mod q 500 Operationen mit 1

        2 langem ModulInsgesamt 1000 Operationen mit 1

        4 der Lange

        apminus1 equiv 1 mod p wenn (a p) = 1teilerfremd1

        1kleiner Fermatscher Satz

        61

        m1 equiv cd mod pm2 equiv cd mod q

        h equiv (m1minusm2)middotqi mod p (darauf achten dass das minusm2 mod p ausgerechnet wird nicht mod q)

        m = m2 + h middot q

        1 m lt n2 m equiv cd mod p da m2 + h middot q equiv m2 + (m1 minus m2) middot qi middot q mod p equiv m2 + m1 minus m2 equiv m1 alsoequiv cd mod pm equiv cd mod q da m2 + h middot q equiv m2 mod q also equiv cd mod q

        x equiv y mod p und x equiv y mod q dann folgt x equiv y mod p middot qEuklidischer Algorithmus (p q)-teilerfremd dann p middot u + q middot v = 1 Chinesischer Restsatz

        47 Miller-Rabin Test

        Heute openssl dhparam und was Verbluffendes so dass man es nur mit der Phantasie einesInformatikers oder Mathematikers verstehen kann (Literatur Menezes Oorschot Handbook ofApplied Cryptography)

        Primzahlen Feststellen ob eine Zahl eine Primzahl ist durch Testen von Divisionen wird beigroszligen Zahlen sehr lang

        p middot q = n ausrechnen geht schnell Umkehrung n =middot ist moglicherweise schwer

        Uber 2214+ 1 weiss man dass es keine Primzahl ist2 kennt aber keinen der Faktoren Kriterium

        rdquokeine Primzahlldquo lasst sich auf folgende Art manchmal feststellenWenn (a n) = 1 so ist anminus1 equiv 1 mod nFermatTest Wenn fur (a n) = 1 anminus1 1 mod n so kann n keine Primzahl sein

        Primzahlen Test

        Wenn fur eine Zahl a mit (a n) = 1 der Fermat-Test nicht bestanden wird nennt man a einenZeugen fur Nichtprimalitat

        2Vierzehnte Fermatsche Zahl

        62

        Zeugen gibt es sehr viele nicht realistisch alle zu rdquobefragenldquo Ausserdem gibt es Zahlen diekeine Zeugen haben aber keine Primzahl sind

        Aus diophantischen Gleichungen folgt Es gibt ein Polynom mit ganzzahligen Koeffizienten f (n)mit der Eigenschaft Wenn f (n) gt 0hArr n ist PrimzahlAber das Polynom hat 26 Koeffizienten Fur Mathematiker ist das Problem erledigt da das Poly-nom existiert fur Informatiker ist es das nicht wirklich da die Berechnung ubermaszligig komplexist

        Die Nicht-Primzahlen ohne Zeugen heissen Carmichael-Zahlen Haben die Eigenschaft forallp(p|nrArrp minus 1|n minus 1)rArr CarmichaelZum Beispiel 561 hat Teiler 3 11 17 Der Test liefert 2|560 10|560 16|560

        Erweitern (n Primzahl) Wenn (a n) = 1 und anminus1 equiv 1 mod n und 2|n minus 1 (anminus1 equiv 1 mod na

        nminus12 equiv )

        Wenn x2 equiv 1 mod n was ist x mod n n|x2 minus 1 = (x minus 1)(x + 1) entweder n|x + 1 odern|x minus 1

        FermatTest+ Wenn fur (a n) = 1 anminus1 1 mod n oder falls anminus1 equiv 1 mod n und anminus1

        2 +1und a

        nminus12 minus1 so kann n keine Primzahl sein

        und 4|n minus 1 anminus1

        4 anminus1

        2 anminus1

        1 mod n Diese Folge ist entweder 1 1 1 oder minus1 1 1 oderlowastminus1 1

        Wenn (a n) = 1 und 2k|nminus 1 (k maximal) dann ist die Folge anminus12k a

        nminus12kminus1 a

        nminus12 anminus1 entweder

        1 1 oder lowastminus1 1 1 (lowast steht fur beliebige Folge)

        Probieren n = 81 n minus 1 = 80 durch 2er-Potenzen teilen kommt irgendwas mit 5 hinten rausAls Zeugen nehmen wir mal 2 Ausrechnen 25 210 220 240 280 und schauen ob diese Folgemodulo 81 einen der beiden Typen hat 32 1 mod 81

        FermatTestlowast (= Miller-Rabin-Test) Wenn fur (a n) = 1 2k|n minus 1 teilt und die Folge anminus12k a

        nminus12kminus1

        anminus1

        2 anminus1 modulo n nicht 1 1 und nicht lowastminus1 1 1 dann ist a ein Zeuge fur Nicht-primalitat

        Fur Miller-Rabin-Test gibt es keine zeugenlosen zusammengesetzten Zahlen es gibt unter denzu n teilerfremenden Zahlen mindestens 25 Zeugen3 (MenezesOorschot Kapitel 4 Fact 425Fact 448 Tabelle 43)

        Die fur Informatiker interessante Frage ist die Frage Wenn man eine Wahrscheinlichkeit kleiner2minus80 fur eine fehlerhaft durch Miller-Rabin nicht erkannte zusammengesetzte Zahl haben will

        3Anmerkung spater 34 sind Zeugen 1

        4 sind Lugner

        63

        muss man fur n (512 Bit) 6 Tests machen Je groszliger die Zahlen werden desto weniger Testsmuss man machen Fur 1024 3 Tests fur 2048 2 Tests Vorausgesetzt ist immer noch ein Testauf kleine Faktoren Dabei pruft man ob (n pi) = 1 fur pi lt B wobei pi kleine Primzahlen sindDas B wahlt man so dass dieser Test nicht langer dauert als ein Miller-Rabin-Test

        Wie wahlt man Primzahlkandidaten Generiere Zahl mit Zufallszahlengenerator schaue ob diedurch 2 oder so teilbar ist wahle dann die nachste Zahl

        openssl dhparam -dsaparams -text -noout 2048 schnellopenssl dhparam -text -noout 2048 langsam

        Safe Prime pminus12 hat einen groszligen Primzahlfaktor q dann getestet ob 2(k middot (q + 1)) Primzahl ist

        pminus12 ist Primzahl

        Wofur braucht man die Primzahlen Naturlich fur RSA und jetzt neu

        48 Diffie-Hellman-Schlusselaustausch

        Alice und Bob haben gemeinsame offentliche Informationen tauschen offentliche Informationenaus und verfugen danach beide uber einen gemeinsamen privaten Schlussel

        g = 2 (offentlich bekannt (Generator)) Primzahl p (offentlich bekannt)

        Erganzungen g g2 g3 gpminus1 mod p (g Generator dann alle verschieden)

        Bob Alice

        Eve

        x y

        g^y mod p

        g^x mod p

        64

        Bob wahlt zufallig 1 lt x lt pminus 1 und ruft Alice gx mod p zu Alice wahlt zufalig 1 lt y lt pminus 1und ruft gy mod p zu

        Bob berechnet (gy)x mod p und Alice berechnet (gx)y mod p Beide erhalten gxmiddoty mod p An-greifer Eve kennt nur gx mod p gy mod p fehlt gxmiddoty mod p

        Wenn Eve das diskrete Logarithmusproblem losen konnte also zu gx mod p und g mod pdas x ausrechnen konnte dann ware gxmiddoty mod p leicht zu berechnen Die besten Algorithmenfur das diskrete Logarithmusproblem mod p sind subexponentiell im groszligten Primfaktor vonp minus 1

        Falls (p minus 1) viele kleine Primfaktoren pi hat ist das diskrete logarithmus Problem leicht denndann lost man das Problem nicht a mod (pminus1) sonder jeweils a mod pi und setzt0 dass ganzedann mit dem Chinesischen Restsatz zusammen

        Sucht p so dass pminus12 auch eine Primzahl ist dazu wird zuerst eine Primzahl pprime gesucht und dann

        geguckt ob 2pprime + 1 auch Prim ist

        Openssl

        Variante DH (DSAparam) (-dsaparam)

        p-Primzahl 1536

        g-rsquoGeneratorrsquo nicht von (p minus 1) sondern von der Restklasse h

        160 Bit g g2 g3 gh alle verschieden mit h=160 Bit

        Dann sollen xy so gewahlt werden dass 1 lt x y lt h = 160 Bit

        Ein weiteres asymmetrisches Cryptosystem kann man darauf aufbauen Alle kennen g und pjeder generiert sich x (privater Schlussel) und gx mod p wird veroffentlichtAlice will Bob etwas verschlusselt schickenSie generiert ein k berechnet aus k und Bobs veroffentlichtem gx a = (gx)k mod p und ausdem allgemein bekanntem g gk mod pM sei die Nachricht ( mod p) die Alice verschicken will Sie berechnet a middot M mod p undsendet an Bob das Paar (gk mod p a middot M mod p)Bob berechnet (gk)x mod p = a und dividiert amiddotM

        a mod p und erhalt somit M

        Der Schlussel a darf nicht zweimal verwendet werden

        Man nennt (gk a) zeitweiliger bzw ephemeraler Diffie Hellmann Schlussel

        Nachteil die Nachrichtenlange wird verdoppelt

        65

        Das Verfahren ist unsicher wenn Alice die Zahl x schlecht wahlt x = 1 2 1 2 1 2 1 = x1 x2

        49 ElGamal-Cryptosystem

        (siehe auch TR 3111 vom BSI auf Seite 21)

        Auf Diffie-Hellmann aufbauendAlice offentlicher Schlussel ga (p g) privat aBob offentlicher Schlussel gb (p g) privat b

        Alice will an Bob schicken

        1 Zufallszahl k generieren

        2 Berechne mit Bobs Parametern gk mod p

        3 Berechne mit Bobs Parametern (gb)k mod p (DH-Schlussel)

        4 Berechne m middot (gb)k mod p

        5 Sende(gkm middot (gb)k

        )mod p

        Bob empfangt (x y)

        1 Berechne xb mod p (DH-Schlussel)

        2 y middot (xb)minus1 mod p = m mod p

        Alice baut also einen temporaren DH-Schlusselteil4 zu Bobs Parametern und sendet diesen unddie damit verschlusselte Nachricht m

        Nachteil Nachricht wird durch den Ephemeralschlussel doppelt so lang

        410 Wiederholung DH

        Generator gPrimzahl pga mod p Restklassen mod p = Korper(middot inverses)Dass p Primzahl ist ist eigentlich ZufallErzeugendes Element GOperation auf Elementen +

        a middotG = G + G + G + + G a-malEs muss schwer sein aus G und B = a middotG gegeben das a zu bestimmenG muss eine Ordnung n haben n middotG = 0 (Neutrales Element der Operation +)

        4Auch Ephemeralschlussel genannt

        66

        4101 Beispiel

        Alice Bob G+ nAlice denkt a denkt a middotGBob denkt b denkt b middotGBeide tauschen a middotG und b middotG aus und berechnen a middot b middotGa middotG ist leicht zu berechnen double and adda = a0 + a1 middot 2 + + ak middot 2k

        a middotG = a0 middotG + a1 middot 2 middotG + + ak middot 2k middotG(k minus 1)-mal rdquomiddot2ldquo und (k minus 1)-mal rdquo+ldquo

        411 was anderes

        Nimmt man nun G groszlige Gruppe mit n Elemente und der Addition +

        g-Generator

        g 2g 3g nG︸︷︷︸Nullelement

        Alice wahlt 1 lt x lt n bestimmt x middot g

        Bob wahlt 1 lt y lt n bestimmt y middot g

        Dann wieder K = (ab) middot g = K

        To do erganzen

        Problem des Diskreten Logarithmus in G gegeben ist G g Generator ist 0 c = a middot g in Ggesucht alogGc-diskreter Logarithmus in G

        Diese Variante funktioniert also mit allen rsquoKomplizierten Gruppenrsquo das fuhrt zu dem nachstenThema

        412 Elliptische Kurven

        Wo gibt es so etwas schon Elliptische Kurven Sind nicht weit verbreitet weil sie dem Mana-gement schwer zu erklaren sind

        67

        Aus der Wikipedia (unter GNU Free Documentation License)

        In der Zahlentheorie ist eine elliptische Kurve eine singularitatenfreie algebraische Kurve derOrdnung 3 in der projektiven Ebene

        Von besonderem Interesse zB fur die Faktorisierung naturlicher Zahlen sind aufgrundihrer einfachen Struktur elliptische Kurven der Form cy2 = x3 + ax + b mit c 0 und 4a3 +

        27b2 0 Einige moderne Verschlusselungsverfahren basieren auf solchen Kurven Der Nameleitet sich historisch davon ab dass diese Kurven durch elliptische Integrale parametrisiertwerden konnen

        Elliptische Kurven uber endlichen Korpern werden in der Kryptografie eingesetzt Dazuwird ausgenutzt dass eine Gerade (lineare Funktion) die zwei Schnittpunkte P und Q mit ei-ner Elliptischen Kurve hat diese auch in einem 3 Punkt schneidet Der Punkt der aus demletzteren durch Verkehren des Vorzeichens der Y-Koordinate (wenn die Kurve die oben ange-gebene Form hat) entsteht wird P + Q genannt Man kann zeigen dass diese Punktaddition(P und Q werden addiert das Ergebnis ist der Punkt P + Q) sowohl kommutativ als auch as-soziativ ist Erganzt man die Elliptische Kurve um einen weiteren Punkt 0 (genannt Punkt imUnendlichen) so bildet sie zusammen mit der (etwas erweiterten) Punktaddition eine abelschealgebraische Gruppe

        Sei nun P ein Punkt der Elliptischen Kurve Der Punkt P + P wird mit 2P bezeichnetentsprechend definiert man kP = P + + P als k-fache Addition des Punktes P Ist P nichtder 0-Punkt und ist die Ordnung der Elliptischen Kurve prim so kann auf diese Weise jederPunkt der Kurve erreicht werden (dh zu jedem Punkt Q auf der Kurve existiert eine naturlicheZahl k mit Q = kP) Die Aufgabe aus gegebenen Punkten PQ diesen Wert k zu ermittelnwird als Diskretes Logarithmus-Problem der Elliptischen Kurven (kurz ECDLP) bezeichnetEs wird angenommen dass das ECDLP (bei geeigneter Kurvenwahl) schwer ist dh nichteffizient gelost werden kann Damit bieten sich Elliptische Kurven an um auf ihnen asymme-trische Kryptosysteme zu realisieren (etwa einen Diffie-Hellman-Schlusselaustausch oder einElgamal-Kryptosystem)

        y2 = x3 + a middot x + b Skizze der Kurven S2Zu S2 Punkte auf der Kurve kann man addieren

        Die Rechenregeln gehen auch in einem Korper mod pBeispiel y2 equiv x3 + a middot x + b mod p Skizze S3

        Es gibt immer Punkte mit denen man rechnen kann Punkte sind geeignet die Addition funk-tioniert auch und hat die Anzahl N der Punkte einen groszligen Primzahlteiler dann haben wir auchKryptosystem mit G+ n Wenn groszliger Primzahlteiler exisitert1 N hat groszligen Primzahlteiler n2 Wahlen zufallig einen Punkt G als GeneratorDaraus erhalt man DH und El Gamal

        Zuerst eingefuhrt durch Victor Miller und Neal Koblitz um 1980 herum Damals war N schwer

        68

        bestimmbar Inzwischen gibt es bekannte Algorithmen (Schoof-Algorithmus)Diskretes Logarithmusproblem ist fur elliptische Kurven wirklich exponentiell (bis jetzt) EinBit mehr verdoppelt den Rechenaufwand (192-Bit-256 Bit bewegt sich in GroszligenordnungenRSA 2000-4000-Bit)

        Erganzung

        1Bei der Erforschung von Eliptischen Kurver stellte sich zuerst die Frag wie groszlig ist eigentlichdie Ordnung n der Gruppe Man wusste n sim p und man wusste sogar n minus p + 1 minus

        radicp lt n lt

        minusp + 1 +radic

        p

        2 Schnelle Algorithmen zur Berchnung der Ordnung

        3 ECDLP ist schwer wenn n einen groszligen Primfaktor hat

        To do sortieren

        Erganzung

        man hat p a bG n h

        K = y2 = x3 + ax + b

        p ist fur die Punktaddition (Formeln siehe enwikipediaorg wobei λ = (yQ minus yP) middotminus1

        (xa minus xp)︸ ︷︷ ︸mit GGT

        mod p)

        Anmerkung zum Wikipedia Artikel binary Case bedeutet man die Eliptischen Kurven auch inKorper mit 2k betrachten allerdings vieler solcher Falle patentiert

        G = Generatorpunkt mit G 2G 3G nG alle verschieden n kleinste Zahl so dass alle ver-schieden

        nG = 0

        bei der DSA-Parameter Form nimmt man weniger Grsquos

        Der nachste Parameter ist der cofactor h welches den Unterschied zwischen n und der Anzahlder Produkte auf der Kurve angibt

        Trick beim testen ob alle iG verschieden sind man guckt ob n eine Primzahl ist und ob nG = 0ist wenn ja ist dies das erste mal sonst ware n ja keine Primzahl Also sind alle vorherigen iG

        69

        verschieden

        Kurven finden besser Bestimmung der Punktanzahl ist schwer

        Fruher gab es kleine cofactoren h lt 16

        openssl ecparama -list_curves sind schon vorher erzeugt kann openssl nicht selber

        openssl ecparam -name secp160k1 -text -noout da die Kurve festgelegt ist gibt es nurein object zuruck

        openss ecparam -name secp160k1 -text -param_enc explicit -noout

        openss ecparam -name secp160k1 -text -param_enc explicit -noout -conv_form compressednichtkomprimiert gibt nur die x-Koordinate aus

        Bei der komprimierten Form kann mit der Kurve die andere eindeutig bestimmen (oder so)

        Darstellung als komprimierte Punkt ist auch wieder patentiert

        413 Elliptische Kurven Nachtrag

        GF(p) (Galois-Field) sind Kurven mod p mit p Primzahl erfullen Gleichungen der Form y2 =

        x3 + a middot x + b

        GF(2k) Korper mit 256 Elementen = 28

        In OpenSSL nur elliptische Kurven mod p patentfrei

        Kofaktor finden Wir haben Punktgruppe G es gibt einen Generatorpunkt gn middotG = 0 n ist die Ordnung

        cofactor︸ ︷︷ ︸klein

        lowast order︸︷︷︸primzahl

        = Anzahl der Punkte

        (cofactor soll klein sein order Primzahl) Anstelle Punkt auf der elliptischen Kurve als (x y) (x ymod p) abzuspeichern TrickWenn es ein Punkt ist gibt es zu x zwei y die quadratische Gleichung y2 = x3 +a middot x+b erfulleny1 =

        radicx3 + ax + b mod p

        y2 = minusradic

        x3 + ax + b mod peine der beiden Zahlen hat als letztes Bit immer 1 die andere eine 0 man nimmt daher nur noch(x LSB(y)) (x und kleinstes Bit von y)

        70

        414 Rucksack-Verschlusseln

        Kryptosystem das sich bei OpenSSL zu recht nicht findet Hat den Anschein als wurde es aufeinem NP-vollstandigen Problem beruhen Problem ist NP-vollstandig weil es ein allgemeinesRucksackproblem istSieht aber nur so aus ist aber nur polynomial weil es ein Transformiertes eines leichten Ruck-sackproblems ist

        Gegeben W Fassungsvermogen des Rucksacks w1w2 wk kleine GewichteGesucht W =

        sumeiwi mit ei isin 0 1

        Rucksack-Verschlusseln von MerkleHellmann Rucksack mit schnell wachsenden Gewichtenist leicht zu berechnendh wi gt

        sumjlti e jw j nachstes Gewicht ist immer schwerer

        4141 Beispiel

        Rucksack W = 51 = 31 + 15 + 3 + 2 wprimei s 2 3 7 15 31Grundidee Aus dem schnellen Rucksack einen langsamen machenM gt

        sumwi k mit (M k) = 1 k middot 2 k middot 3 k middot 31 mod M

        M = 61 ist Modul k = 17 ist privater Schlussel m = (1 1 0 1 1) ist unverschlusselte Nachricht31 51 58 11 39 ist offentlicher Schlussel 34 + 51 + 11 + 39 = 135 = 13rarr c ist verschlusselteNachrichtEmpfanger rechnet aus dem erhaltenen Gewicht (135) das richtige Gewicht wieder raus 135middotkminus1

        mod 61 = 51 und kann das Problem mit den schnellen Gewichten losen

        Zum BrechenMan transformiert 34 51 58 11 39 in eine Folge die schnell wachsend ist zB 1 3 5 11 29dh das transformierte System kann auf mehrere Probleme zuruckgefuhrt werden man brauchtnur eine passende Rucktransformation finden Adi Shamir hat dafur einen polynomiellen Algo-rithmus angegeben

        415 Merkle Puzzle

        Man generiert sich 1000000 Nachrichten rdquoDas ist Nachricht ni fur den Schlussel k jldquo ni zufalli-ge 20-Bit Zahl k j 128-Bit SchlusselVerschlusselungsverfahren DES diese 1000000 werden mit 20-Bit Schlusseln verschlusseltAlice schickt die 1000000 Nachrichten an Bob als offentlichen SchlusselBob will Alice eine Nachricht schicken Er sucht eine der Nachrichten aus dem offentlichen

        71

        Schlussel aus und macht eine Brute-Force Attacke auf diese Nachricht Er findet ni und kiBob verschlusselt mit dem ki seine Nachricht und sendet ni im Klartext mit

        Alice und Bob haben linearen Aufwand Eve quadratischen

        Von everything2comAlice and Bob agree on a symmetric algorithmAlice generates a large number (over a million at least) of messages of the form ldquoThis is myindex X and my puzzle is Yrdquo Each of the messages is encrypted with a 20-bit keyAssume there are 220 (about a million) messages it takes 220 operations to get the key and acomputer can perform 220 operations per second Bob takes 1 second to recover the key to amessage Eve takes 12 daysNow make that 230 (about a billion) messages Bob still only takes a second to get the key andit will take Eve 34 years

        Public Key Idee hier schon vorhanden

        416 Rabin-Verfahren und Wurzelziehen

        Aus der Wikipedia (unter GNU Free Documentation License)

        Das Rabin-Kryptosystem ist innerhalb der Kryptologie ein asymmetrisches Kryptosystem dasauf einem Faktorisierungsproblem beruht und mit RSA verwandt ist Es lasst sich prinzipiellauch zur Signatur verwenden In der Praxis findet das Verfahren allerdings wegen bestimmterAngriffsmoglichkeiten kaum Anwendung

        4161 Schlusselgenerierung

        Aus der Wikipedia (unter GNU Free Documentation License)

        Seien p und q zwei moglichst groszlige Primzahlen fur die eine bestimmte Kongruenzbedingunggelten muss Der offentliche Schlussel n wird durch Multiplikation der beiden Zahlen erzeugtalso n = p middot q Der geheime Schlussel ist das Paar (p q) Anders ausgedruckt Wer nur n kenntkann ver- aber nicht entschlusseln wer dagegen p und q kennt kann damit auch entschlusselnZum Erzeugen des offentlichen Schlussels mussen die Zahlen p und q bekannt sein Der offent-liche Schlussel lasst sich nur genau aus den beiden Primzahlen erzeugenWaren p und q keine Primzahlen so lieszlige sich das Verfahren ubrigens nicht anwendenSeien beispielhaft p = 7 q = 11 (in der praktischen Anwendung handelt es sich um sehr vielgroszligere Zahlen um die Entschlusselung durch Dritte so schwierig wie moglich zu machen)Daraus ergibt sich der offentliche Schlussel n = p middot q = 77

        72

        4162 Kongruenzbedingung

        Aus der Wikipedia (unter GNU Free Documentation License)

        Fur p und q muss die Kongruenzbedingung(

        pminus1p

        )= (p minus 1) und

        ( qminus1q

        )= (q minus 1)

        (wobei fur(

        nminus1n

        )= (n minus 1)

        nminus12 equiv (n minus 1) mod n = (n minus 1) gilt)

        oder einfacher ausgedrucktp equiv q equiv 3 mod 4gelten

        Allgemein gilt namlich fur die Primzahl r mit r equiv 3 mod 4 und die Zahl a mit a equivb2 mod ra

        (r+1)4 equiv

        radica mod r

        Diese Eigenschaft dient dazu spater die Entschlusselung zu erleichternWegen 7 equiv 11 equiv 3 mod 4 ist die Kongruenzbedingung fur das Beispiel erfullt

        n = p middot q Produkt von Primzahlen

        m soll verschlusselt werden c equiv m2 mod n (einfach Quadrieren weil Wurzelziehen schwer istwenn der Modul ein Produkt von 2 Primzahlen (p middot q) ist weil wer Wurzel ziehen kann kannauch Faktorisieren (n)

        Begrundung Es gibt 2 Losungen c = x2 equiv y2 mod n Wie findet man nun die Faktoren von nn teilt x2 minus y2 = (x minus y)(x + y) und x gt y und (x minus y) lt n und n hat nur 2 Primfaktoren daherx minus y = p und x + y = q Wurzelziehen ist leicht mod p mod q Gesucht Wurzel c mod pxp = c

        p+14 mod p und xq = c

        q+14 mod q

        x2p equiv c

        p+12 equiv c

        pminus12 middot c mod p

        Weil cpminus1 equiv 1 mod p ist (nach kleiner Fermat) die Wurzel daraus cpminus1

        2 equiv plusmn1 wegen c equiv m2

        mod n gilt (m2)pminus1

        2 equiv mpminus1 equiv 1(p) Stuck fehlt Ende des Wurzelziehens

        4163 Verschlusselung

        Aus der Wikipedia (unter GNU Free Documentation License)

        Sei nun P = 0 nminus1 der Klartextraum (er besteht also aus Zahlen) und m isin P der KlartextNun lasst sich der Geheimtext c durch c = m2 mod n bestimmen Dabei ist c der QuadratischeRest von zu der Quadratzahl m2 zum Modulo der Schlussel-Zahl n Im praktischen Einsatzbietet sich die Verwendung von Blockchiffre an

        In unserem Beispiel sei P = 0 76 der Klartextraum m = 20 der Klartext Der Ge-heimtext ist hierbei nun c = m2 mod n = 15

        73

        Dabei muss man beachten dass fur genau vier verschiedene m das c den Wert 15 aufweistnamlich fur m isin 13 20 57 64 Ahnliches gilt fur die meisten c

        4164 Entschlusselung

        Aus der Wikipedia (unter GNU Free Documentation License)

        Seien allgemein c und r bekannt gesucht wird m isin 0 n minus 1 mit m2 equiv c mod r Furzusammengesetzte r (beispielsweise unsere n) existiert kein effizientes Verfahren zur Bestim-mung von m Ansonsten wenn also r isin P (in unserem Fall p und q) dann lasst sich jedoch derchinesische Restsatz ausnutzen

        In unserem Fall sind nun die Quadratwurzelnmp =

        radicc mod p

        undmq =

        radicc mod q

        gesuchtWegen obiger Kongruenzbedingung gilt

        mp = c(p+1)

        4 mod pundmq = c

        (q+1)4 mod q

        In unserem Beispiel ergeben sich mp = 1 und mq = 9Mit dem erweiterten euklidischen Algorithmus werden nun yp und yq mit yp middot p+yq middotq = 1

        bestimmt In unserem Beispiel erhalten wir yp = minus3 und yq = 2Nun werden unter Ausnutzung des chinesischen Restsatzes die vier Quadratwurzeln +r

        minusr +s und minuss von c + nZ isin ZnZ berechnet (ZnZ steht hierbei wie ublich fur die Menge derRestklassen modulo n die vier Quadratwurzeln liegen in der Menge 0 n minus 1)

        r = (yp middot p middot mq + yq middot q middot mp) mod nminusr = n minus rs = (yp middot p middot mq minus yq middot q middot mp) mod nminuss = n minus s

        Eine dieser Quadratwurzeln mod n ist wieder der anfangliche Klartext m Im Beispielgilt m isin 64 20 13 57

        417 Angriffe auf asymmetrische Verschlusselungsverfahren

        Fall RSA

        74

        4171 1 Angriff Common modulus attack

        Idee Gleicher Modul fur verschiedene Leute hatte den Vorteil dass man sich nur die kleinenoffentlichen Exponenten e1 und e2 merken muss nicht mehr die groszligen Module hat aber Nach-teil (e1 e2) = 1 teilerfremd umiddote1+vmiddote2 = 1 (mit erweitertem Euklid) Sendet man eine Nachrichtm an zwei Alices berechnet also c1 = me1 mod n und c2 = me2 mod n dann kann man mitden Chiffren c1 und c2 auch ausrechnen cu

        1 middot cv2 = me1u middot me2u = me1u+e2v = m mod n Nachricht

        erhalten

        4172 2 Angriff kleiner geheimer Exponent d

        Wenn |d| lt |m|3 dann ist Faktorisieren moglich Sicherheitsrisiko geheimer Exponent muss im-

        mer moglichst groszlig sein aus groszligem offentlichen Exponenten |e| kann man erfahren dass dergeheime Exponent klein ist

        4173 3 Angriff Faktorisieren

        Wenn p ungefahr so groszlig wie q also p minus q = ∆ klein ist dann ist ( p+q2 + ∆

        2 ) (ungefahr Wurzel n+ was kleines = p) middot( p+q

        2 minus∆2 ) = p middot q Man weiszlig dass die eine Zahl uber Wurzel n liegt und die

        andere Zahl unter Wurzel n (Wurzel n + klein = p Wurzel n - klein = q)

        4174 Echt schlechte RSA-Schlussel

        n = 3middotq (1024 Bit) und offentlichen Exponenten bei TCTrustCenter abgegeben Damit kann manzeigen dass PGP als Signaturverfahren schlecht ist Schlussel schlecht gewahlt dadurch kannjeder die Kommunikation mitlesen da n sehr leicht zu Faktorisieren die Leute sie konntender Person mit dem schlechten Schlussel vertrauenswurdige Nachrichten schicken und laufenin die Falle dass ihre Nachrichten nun offentlich sind Anderer Fall Bewuszligt solche Schlusselvergeben um Nachrichten in einem kompletten Netzwerk lesen zu konnen

        n = Primzahl e middot d equiv 1 mod (n minus 1)

        Mit n als Primzahl geht normale Entschlusselung nicht

        n p q e dp dq qi dc equiv me mod nm1 equiv cdp mod pm2 equiv cdq mod qdp equiv d mod (p minus 1)

        75

        dq equiv d mod (q minus 1)

        m = m2 + (m1 minus m2) middot qi︸ ︷︷ ︸mod p

        middotq

        m equiv cd mod q und m equiv cd mod prArr cd

        Bundesamt fur Informationssicherheit sagt zur Verwendung von RSA p q mussen unabhangigvoneinander zufallig erzeugt werden und 0 5 lt | log2 p minus log2 q| lt 30

        4175 Schnelles Faktorisieren bei Fehler im System

        DFA - Differential Fault Attack System das entschlusselt aber sich an einer Stelle verrechnetmprime1 ist Rechenfehler statt wirkliches m bekommt man ein mprime = m2 + (mprime1 minus m2)qi lowast qbildet man nun m minus mprime 0 aber durch q teilbar dh bringt man das System dazu einen Fehlerzu machen und hat man die Originalnachricht GGT (m minus mprime n) = q schon hat man den Mo-dul faktorisiert hat funktioniert viele Chipkarten verrechneten sich unter Streszlig Es reicht dasmprime zu kennen m kann unbekannt bleiben denn man rechnet (mprimee minus c n) = q es reicht eineentschlusselte Nachricht zu haben

        Anderer Angriff auf ChipkartenDPA - Differential Power Analysis Stromverlauf ansehen Differenzen bilden und sequentiellanalysieren

        Angriff auf El Gamal Systemegeheimer Schlussel a offentlich g p ga Verschlusselte Nachricht zufalliges k (gk mmiddotgak)= c 1Angriff k gleich fur verschiedene Nachrichten oder k1 k2 in Abhangigkeit oder k k+1 k+2 fur verschiedene Nachrichten oder a middot k + b

        4176 Angriff mit gewahltem Chiffretext

        Normalerweise bei RSA m minusrarr c = me mod n

        cprime vorgegeben fuhrt zu Klartext mprime = (cprime)d mod nAnforderung Beliebiger Chiffretext auszliger cprime = c wahlbar zu dem man dann den Klartext erhalt

        Problem bei RSA

        1 r (zufallig gewahlt)rarr re mod n = s

        2 cprime = s middot c mod nVerschlusselungsmaschine liefert dann (cprime)d = sd middot cd = (re)d middot m = r middot m mod n = mprime

        76

        3 Letzter Schritt m = mprime = rminus1 mod n

        Das geht nur theoretisch in der Praxis geht das nicht weil Angreifer kann das r nicht steuernr middot m wird aber von der Verschlusselungsmaschine verworfen weil es bei zufalligem r keinkorrektes Padding hat

        Schwache des RSA Multiplikationseigenschaftm1 rarr c1 und m2 rarr c2 (m1 m2 gultige Klartexte)m1 middot m2 rarr c1 middot c2m1 middot m2 nicht als gultiger Klartext zugelassen

        5 Signaturmechanismen

        Wie erstellt man signierte Daten und versucht ein Aquivalent zu dem zu schaffen was man imtaglichen Leben durch Unterschriften schafftEigenschaften einer Signatur sollen nachgebildet werden Man weiszlig von wem ein Dokumentkommt sie ist an eine Person gebunden und kann von niemanden sonst nachgemacht werden undvom Inhaber nicht abgestritten werden Nachtragliche Anderungen an unterschriebenen Doku-menten sollen nicht mehr moglich sein (gibt es so im echten Leben nicht)

        51 Integritatsschutz und Hashfunktionen

        To do neu Hashfunktionen Definition einsortieren

        Hashfunktion Beliebige Daten werden auf Binarfolgen konstanter Lange abgebildet

        Def Eine Hashfunktion H ist eine Abbildung 0 1lowast rarr 0 1k auf Hashwerte der Lange k

        SHA-256 (SHA- Secure Hash Algorithmen) - Hashwerte der Lange 256 Bit

        1 Es gibt Kollisionen

        d1 d2 H(d1) = H(d2)

        2k Hashwerte aber potentiell abzahlbar viele Daten

        Wunsch

        Man soll diese Kollisionen nicht finden konnen und am besten es gibt sie nicht Hashfunktionendienen zum unterscheiden von Daten

        77

        H(d1) H(d2) dann ist d1 d2

        Dementsprechend groszlig muss das k sein so dass genugend viele Werte unterscheiden kann

        Anforderungen an Hashfunktionen

        Wunsch Kollisionsresitent (schwer Kollisionen zu konstruieren) man kann nicht zwei Doku-mente mit dem gleichen Hashwert konstruieren

        Wunsch Zweites Urbild resistent (schwer zweites Urbild zu konstruieren) man kann zu einemDokument nicht ein zweites mit dem gleichen Hashwert bestimmen

        Geburtstagsparadoxon Kollisionen entstehen zum Beispiel in Horerkreisen 23 Horer(innen)dann haben mit mehr als 50 Wahrscheinlichkeit zwei am gleichen Tag Geburtstag

        H Horer rarr Datum h 7rarr Geburtstag(h)

        h1 h2 H(h1) = H(h2)

        Bestimme die Wahrscheinlichkeit dass keine zwei am gleichen Tag Geburtstag haben

        1 minus g =365middot middot(365minusn+1)

        (365n) wobei n die Anzahl der Horer ist (Fur n = 23 ungefahr 50)

        radic365 20

        g radic

        Hashwerte

        Bei 2128 Hashwerte muss man mit Kollisionen rechnen ( Bsp 30 bei 19 Personen 19 radic

        365)

        Merke Das Geburtsatgs Paradox beschert uns Kolisionen bei 2k2 Hashwerten

        To do ende Neu

        Hashfunktionen Schon bekannt aus dem ersten Semester (Hashtabellen)

        Allgemeine Eigenschaften

        1 Komprimieren beliebig lange Werte auf n-bit Werte

        2 Einfach (und schnell) berechenbar

        Werte Fingerabdruck Prufwert Hashwert

        78

        Kollisionen h(x) (Hashfunktion) mit x1 x2 aber h(x1) = h(x2) x1 und x2 ist KollisionWahrscheinlichkeit fur Kollision fur zufallig gewahlte Werte sollte 1

        2n sein (Anforderung anHashfunktion)

        Wir verlangen dass die Variabilitat in der Eingabe sich auch in den Prufwerten widerspiegeltsprich Wenn die Eingabewerte gleichverteilt sind sind es auch die Ausgabewerte

        To do 20090422

        To do einsortieren

        Kollisionen rsquovermeidenrsquo durch Groszlige 160 Bit Prufwerte (280 fur Kollision (2100 mdash AES 128 mdashbzw 2112 2128 als Kollisionsschranken)

        Zusatzlich Voraussetzungen fur die Pruffunktion

        1 Kollisionsresistenz Es muss schwer sein zwei Nachrichten m1m2 zu finden so dassH(m1) = H(m2)

        (Es ist schwer Zwillinge zu konstruieren)

        2 Zwillingsresistenz Es muss schwer sein (also kryptografisch Aufwendig) zu einer Nach-richt m1 eine Nachricht m2 zu konstruieren so dass H(m1)FH(m2) ist

        (Wenn man eine Bruder hat dann ist es schwer eine zwillings Schwester dazu zu konstru-ieren)

        (aufwendiger als erstens)

        3 Urbildresistenz Es muss schwer sein zu einem beliebigen Prufwert h eine Nachricht zukonstruieren so dass H(m) = h ist

        4 Die Prufwerte mussen rsquozufalligrsquo aussehen Die Ausgabe von H genugt Anforderungen aneinen Zufallszahlengenerator (gewisse statistische Unauffalligkeit) also pseudozufallig

        Eigentlich musste man noch mehr Fordern namlich dass man keine zwei Nachrichten findet diesehr ahnliche Hashwerte haben und dass man zu einer gegeben Nachricht keine Nachricht miteinem ahnlichen Hashwert findet

        Beispiel H gute Pruffunktion

        H(m) =

        |m| n fix so Hprime(m) = 0||H(m)(H(m) rangehangen)|m| = n so ist Hprime(m) = 1||m( rangehangen)

        h ist die Lange der Prufwerte von H

        79

        Hprime ist kollisionsresistent wenn es H ist aber nicht urbildresistent

        To do sortieren

        openssl 097d (2004) Prufwertstandardverfahren ist MD5

        Hashfunktion enthalt eine rsquoKompressionsfunktionrsquo m1

        To do Bild-siehe Blatt - 20090422

        K(sm) = sprime

        K(sm) = K(sm2)

        K(s1m1) = K(s2m2)

        s1 und s2 als Ergebnisse einer Prufwertberechnung darstellen

        K(s1m11) = s1 K(s01m21) = s2

        K(s1m12) = s K(s2m22) = s

        der rechte Teil war 2004 schon bekannt es musste nur noch die linke seite gelost werden

        511 Schlussellose Hashfunktion (Prufsummen ohne Schlussel)

        h x minusrarr h(x)Ausschlieszliglich Prufwert Gute Auswahl garantiert dass man mit h(x) feststellen kann ob xverandert wurde

        xprime ist verandertes DokumentDatenBerechnung des Prufwerts liefert h(xprime) = hprime h(x) bei guter Hashfunktion Veranderung kannalso festgestellt werden

        80

        Zusatzlich verlangte Eigenschaften

        1 Kollisionsresistenz Es ist schwer Kollisionen zu erzeugen Dh es ist schwer x1 x2 mith(x1) = h(x2) zu findenHeute ublich n = 80 oder n = 100 280 oder 2100 in sim 280 Schritten Definitiv 256 istnicht schwer 264 ist nicht mehr so schwer

        2 Zwillingsresistenz Zweites-Urbild-Resistenz second preimage resistance Es ist schwereinen Zwilling zu erzeugen ist x1 mit h(x1) vorgegeben so ist es schwer einen Zwillingx2 zu erzeugen mit h(x1) = h(x2)(Anmerkung Finger weg von Binarcode fur x1 x2)

        3 Einwegeigenschaft Urbild-Resistenz Es ist schwer zu vorgegebenem h(x) ein Urbild xzu berechnen

        h1(x) ist eine gute Hashfunktion mit den schicken Eigenschaften 1 2 3 (n + 1 Bitlange)

        h2(x) =

        1 x wenn x die Lange n hat0 h1(x) sonst

        h2(x) ist kollisionsresistent (Zwillingsresistenz) (wenn h1 so ist) h2 ist aber nicht urbild-resistent 1 x hat als Urbild x

        2 ist die wichtigere Eigenschaft man kann notfalls noch ohne 1 auskommen Zum Beispielletztes Jahr MD5 - Hashfunktion x1 x2 waren konstruiert h(x1) = h(x2)x1 oplus x2 = 0 010 010 010 01 (1 jeweils im msb) Immer noch ein gewisser Schutz dazum Beispiel keine Kollision auf -Kleinbuchstaben oder 64 moglich

        Schlussellose Hashfunktionen sollten alle 3 Eigenschaften haben

        Fast-Kollision x1 x2 h(x1) oplus h(x2) hat wenig 1-Bits Manchmal zu vermeiden

        partielle Urbilder Gegeben h(x) dann ist es schwer x bis auf wenige Bits zu bestimmen

        SHA-1 theoretische Schwelle 280 praktisch 269 (16022005) 263 (19082005)

        Geburtstagsparadoxon 23 Personen die Wahrscheinlichkeit dafur dass 2 am gleichen Tagim Jahr Geburtstag haben ist groszliger als 1

        2

        h(x) =dd-mmMit k Personen x1 xk lassen sich k2 Geburtstagspaare bilden Mit n Tagen h1 hn im Jahrlassen sich n2 Geburtstagspaare bilden davon sind n gute ( (h hprime) mit h = hprime)

        81

        mit k2 Paaren in n2 Paaren suchen und einen von n treffenHashfunktion hat 160 Bit Ausgabe wir brauchen nach Geburtstagsparadoxon 280 Personen ummit hoher Wahrscheinlichkeit den gleichen Geburtstag h mit 160 Bit zu erhalten

        Allgemeines Konstruktionsprinzip x wird auf eine bestimmte Blocklange erweitert (pad-ding)

        1 Nullpadding (auffullen mit Nullbits falls erforderlich)

        2 1-Nullpadding (eine 1 und dann mit Nullbits bis zur Blocklange)

        3 1-Null-Langenpadding (eine 1 und Nullbits (falls erforderlich) und die Lange (msb first64 Bit oder 128 Bit)) Am besten geeignet da bei 1 oder 2 automatisch Kollisionen ent-stehen x (mind 1 bit kurzer als die Blocklange) und x 0

        xrarr b1 bk Blocke der Lange 512 Bit

        Haufig Verlauf in 3 Phasen in openssl init update final

        1 Initialisierung der Hashfunktion Innerer Zustand aus 32-Bit-Wortern H1H2H3H4H5initialisiert (mit Primzahlen π was-auch-immer)

        2 Update A BCD E aus H1 H5 Runden mit Transformationen mit Eingabe bi 48|60|120 H1 = H1 oplus A H2 = H2 oplus B

        3 Finalisierung Ggbf Padding 1 oder 2 mal das Update

        4 Ausgabe H1H2 H5

        Einfaches Beispiel

        82

        So lasst sich aus einem Kryptoalgorithmus ein Hashalgorithmus konstruieren In der Praxis wer-den andere Konstruktionen (Quirlfunktionen) verwendet MD5 SHA-1 SHA-2 (224 256 384512) Whirlpool ISO-

        In OpenSSL MD2 MDC2 MD4 MD5 RIPEMD-128 RIPEMD-160 SHA-0 SHA-1 Allegebrochen ausser RIPEMD-160 und SHA-1 (evt MD2) dh es sind m1 und m2 bekannt mitMD5(m1) =MD5(m2) und m1 m2

        512 Demonstration Falschung

        Ist die Hashfunktion rsquoschwachrsquo kann man Kollisionen sogar konstruieren

        Beispiel fur MD5 MD4 ist seit 10 Jahren schwach SHA-1 wird schwach

        Zwei Postscript-Dateien mit unterschiedlichem Inhalt aber gleichem MD5-Hash Prinzip Datei1

        Header

        if x1 == x2 then strangestring = T1 else strangestring = T2 end

        Rest

        echo strangestring

        Quelltext (B)(B)eq︸ ︷︷ ︸Bedingung

        [tot] [Def] ifelse

        83

        Datei 2

        Header

        if x2 == x2 then strangestring = T1 else strangestring = T2 end

        Rest

        echo strangestring

        (A)(B)eq︸ ︷︷ ︸Bedingung

        [Def] [tot]

        x1 und x2 unterscheiden sich nur sehr wenig und Header if x1 und

        Header if x2 sind je ein Nachrichtenblock mit dem gleichen Hashwert

        Sieht aus wie zweites Urbild-Angriff sind aber in der Tat zwei bose Zwillinge

        Quelle wwwcitsrubdeMD5Collisions

        Fazit Dokumente sind nicht mehr unterscheidbar

        Kollision besteht aus zwei Dokumenten d1 d2 mit dem Hashwert

        Bei MD5 kann man zwei rsquoDokumentersquo (Prafixe bis AB) konstruieren die den gleichen Has-hwert haben

        Man kann aber zu einem Dokument d0 (dem Original) noch nicht ein zweites dprime0 konstruierenso dass d0 dprime0 eine Kollision bilden

        Beispiel Ein SSL-Server-Zertifikat war (MD5) ununterscheidbar von einen SSL-ZertifizierungsstellenZertifikat womit man so viele (evt rsquobosersquo) SSL-Server-Zertifikate erstellen wie man wollte

        MD5 ist nicht kollisionsresistent

        MD5 ist noch 2 Urbild resistent

        52 Unterschied MD5 und SHA

        MD5 128bit Lange (Kollision 264)

        SHA-224 224bit Lange (Kollision 2112)

        SHA-256 256bit Lange (Kollision 2128)

        84

        mehr rotation lokale Unterschiede habe groszligere globale Unterschiede zur Folge bei SHA

        53 Secure Hash Standard SHA-2

        FIPS 180-2 US-Standard Nachfolger von FIPS 180 SHA-0 und SHA-1 sind die SHA-2-Algorithmen(noch nicht in OpenSSL) SHA-224 SHA-256︸ ︷︷ ︸

        32 Bit

        SHA-384 SHA-512︸ ︷︷ ︸64 Bit

        SHA-224 bzw SHA-384

        ist rsquoungefahrlsquo die linke Seite von SHA-256 bzw SHA-512

        Basisfunktionench (xampy)|(sim xampz) Auswahlfunktionpar x and y and z Paritatsfunktionmaj (xampy)|(xampz)|(yampz) Mehrheit

        Ausserdem Addition modulo Wortlange rot left und shift leftMessage M1M2 MN padding

        1 paddinglength auf 5121024 Bit

        51232 = 16 = 1024

        64

        2 Messageblock (16 Stuck) wird erweitertW0W1W2 W15︸ ︷︷ ︸

        Messageblock

        W79

        Wt = rot(Wtminus3) + rot(Wtminus8) + rot(Wtminus14) + rot(Wtminus16) fur t = 16 79rot(x) = rotl7(x) + rotl18(x) + shl3(x)

        3 8 temporare Variable a b c d e f g h mit Breite gleich Wortlange (32 oder 64 Bit) be-schreiben einen inneren Zustand der Funktion

        SHA-Maschine bekommt initialen Zustand H0 H7 Die ersten 32 Bit der gebrochenenAnteile der Quadratwurzeln der i Primzahl Fur SHA-256 und SHA-512 i = 1 8 furSHA-384 und SHA-224 i = 9 16

        85

        Am Anfang jeder Runde a = H0 b = H1 c = H2

        Jedes Wi erzeugt einen Schritt (kleine Zustandsanderung)

        T1 = h + rot(e) + ch(e f g) + Kt + Wt

        T2 = rot(a) + maj(a b c)

        h = g g = f f = e e = d + T1 d = c c = b b = a a = T1 + T2K0 K80 Schrittkonstanten Bruchteile der dritten Wurzeln der ersten 80 Primzahlen80 Schritte in einer Runde

        4 XOR-Operationen H0H1 H7 minusrarr H0 oplus aH1 oplus b H7 oplus hHi beschreiben den inneren Zustand nach Runde Hi am Anfang initialisiert

        5 Ausgabe ist H0 H7 am Ende

        To do ware auch interessant fur die Prufung

        Es wird eine neuer SHA-3 gesucht Voraussetzungen

        1 Nachrichtenexpansion muss komplexer werden

        2 Nachrichtenblocke mussen positionsabhangig werden (Skein tweakable

        3 innerer Zustand muss groszliger werden (2x Hashlange)

        531 Problem bei MD5 und SHA-0

        Beispiel 1 Innerer Zustand zwischen einzelnen Schritten hat Bits die die folgenden Bitsmehr oder weniger beeinflussen Damit sinkt die Komplexitat beim Brechen Besondere Bitsfuhren zur Reduktion der Anzahl der Gleichungen und erlauben eine schnelle Konstruktion vonspeziellen Zwillingen m1m2 mit MD5(m1) =MD5(m2) m1 oplus m2 = viele Nullen

        Parallel hashen rdquoKontostand -20073ldquo und rdquoKontostand +700ldquo Ab -2 bzw +7 entstehen un-terschiedliche innere Zustande Nachkommastellen bei dem zweiten String anpassen um dieUnterschiede auszugleichen

        86

        Aktuelle Angriffe erzeugen keinen zweiten Zwilling sondern rsquonurrsquo falsche Zwillinge Zu einemguten gibt es keinen schlechten Zwilling

        Beispiel 2 Es gibt zwei Zertifikate mit unterschiedlichen Inhalten und gleichem MD5-HashDas sind dann aber 2 schlechte Zertifikate MD5 ist also nicht kollisionsresistent aber momentanzwillingsresistent

        SHA-1 hat momentan eine Komplexitat von 263 anstelle von 280 fur Kollisionen

        mH(m) (H(m) aus vertrauenswurdiger Quelle) rArr m kann nicht unbemerkt verandert werdenManipulation Detection Codes () Das ist keine Prufung des Ursprungs Um zu prufen ob maus einer bestimmten Quelle stammt benutzt man MACs

        532 MACs (Message Authentication Codes) (Prufsummen mit Schlusseln)

        Sei k ein geheimer Schlussel den nur Alice und Bob kennen m ist die Nachricht BerechneHk(m) = h keyed Hash Die Hash-Prufwerte sind also Schlusselabhangig

        (m h) mit h aus vertrauenswurdiger Quelle

        bull Veranderungen sind erkennbar

        bull Nur mit Kenntnis von k kann man h berechnen also nur mit dem Schlussel kann man denPrufwert falschen

        Empfanger der k kennt kann n auf Integritat prufen Um sich vor Angreifern zu schutzen mussfur eine Prufung der Prufwert geschutzt werden

        Hk(mprime) = h

        (m1 h1)(m2 h2)

        rarr (m h) muss verhindert sein

        87

        Standardisiertes Verfahren fur Keyed hash auf der Basis von MDCs RFC 2104 in OpenSSL zufinden HMAC)

        H(k oplus auszligeres Padding H(k oplus inneres Padding m))︸ ︷︷ ︸512- oder 1024-Bit-Blocke

        k linksbundig aufgefullt mit Nullen inneres Padding = 0x36 0x36 auszligeres Padding = 0x5c0x5c Langenpadding am Ende des inneren H

        Berechnen Sie mit OpenSSL und dgst -c oder -hex den Hashwert der leeren Datei

        henrykgleam henryk $ openssl dgst -c -hex -md5 devnull

        MD5(devnull)= d41d8cd98f00b204e9800998ecf8427e

        henrykgleam henryk $ openssl dgst -c -hex -sha1 devnull

        SHA1(devnull)=

        da39a3ee5e6b4b0d3255bfef95601890afd80709

        openssl dgst -sha256 -hmac 1234567890 devnull

        HMAC-SHA256(devnull)= ba92e0bfa35d8a018831f3675f0b4314c8468d4d96e6981b85ba3390c23308fd

        HMAC

        To do vervollstandigen

        Mac mit Hashfunktion K- Schlussel H-Hashfunktion

        H(K oplus oPadH(

        0x565656︷ ︸︸ ︷K oplus iPad︸ ︷︷ ︸Bitlange H

        n))

        K n1 rarr Mac(n1K) = m1

        K nprime = n1||langenpadding ||n2

        (K nprime) rarr HInitialisiert mit m1(n2) = m2

        ISO-10118-32004

        88

        54 Whirlpool

        Basis fur eine Hashfunktion ausgehend von einer einzigen Verschlusselungsfunktion

        Aus der Wikipedia (unter GNU Free Documentation License)

        WHIRLPOOL ist eine kryptografische Hash-Funktion die von Vincent Rijmen und Paulo SL M Barreto entworfen wurde Sie wurde nach der Whirlpool-Galaxie im Sternbild der Jagd-hunde benannt

        Whirlpool funktioniert mit Daten von weniger als 2256 Bit Lange und gibt einen Hash-Wert von 512 Bit aus

        Die Autoren haben erklart dass Whirlpool nicht patentiert ist und es nie sein wird Whirl-pool darf kostenlos zu jedem Zweck verwendet werden Die Referenz-Implementation ist ge-meinfrei

        The WHIRLPOOL algorithm has undergone two revisions since its original 2000 specifi-cation In the first revision in 2001 the s-box was changed from a randomly generated one withgood cryptographic properties to one which has better cryptographic properties and is easier toimplement in hardware In the second revision (2003) the diffusion matrix was changed

        People incorporating WHIRLPOOL will most likely use the most recent revision ofWHIRLPOOL while there are no known security weaknesses in earlier versions of WHIRL-POOL the most recent revision has better hardware implementation efficiency characteristicsand is also likely to be more secure

        E

        +

        H

        H

        m

        AES-Variante

        i-1

        i-1

        i

        55 Zusammenfassung

        To do oben einsortieren

        89

        Manipulation Detection Codes MDCsHashfunktionen MD5SHA-1SHA-2Allgemeines Konstruktionsprinzip aus Langenpadding und Iterationen

        bull MACsKeyed Hash HMAC mit Hashfunktion aufgebaut aus prefix und suffix

        bull CBC-MAC Nachrichtenblocke m0m1 mk

        + +

        MACc c c

        K

        m

        m m

        0

        1

        1

        2

        k

        k+1

        Risiko Weil keine Langeninformationen dabei sind ist es anfallig gegen Einsetzen undAustauschen Wird gerne Verwendet bei Anwendungen die feste Langen haben zBChipkartenCBC-MAC-verbessert

        K

        DES

        1

        K2

        K3

        larrminus CBC-DES3-MAC

        Benutzt zB beim digitalen Tachograph

        Es gibt zwei Grundlegende technische Mechanismen Ohne Schlussel und mit Schlussel Nur mitSchlussel lasst sich spater der richtige MAC-Wert ausrechnen und bestimmen dass die Nachrichtnicht verandert wurde und vom richtigen Absender kommt

        90

        56 Digitale Signaturen

        To do einsortieren

        Definition

        s ist die Signatur zu einer Nachricht n mit einem Signaturverfahren S und einem Verifikations-verfahren V

        S N times D︸︷︷︸Signaturschlussel

        rarr s

        V N times E︸︷︷︸Verifikationsschlussel

        timess rarr ja nein

        V(n e S (n d)) = 1

        V(n e S (nprime d)) = 0 =( n eprime S (n d)) = 0

        RSA

        S (n d) =

        V(n s e) = E(e s)eqH(n)

        openssl dgst -sign keyrsa -hex nulltxt

        openssl -sign keyrsa -sha256 -out nullsig nulltxt

        openssl rsautl -in nullsig -encrypt -inkey keyrsa -raw -hexdump

        in Beta openssl sha256 -hex nulltxt

        Anstatt der Symmetrischen Verschlusselung wie bei MAC kann man auch asymetrische Verfah-ren verwenden

        1 h mit Namen (0D) in ASN1 Struktur 0001 FF FF 00 (ASN1-Struktur)

        2 Padding

        3 rsquoEntschlusselnrsquo

        4 rsquoVerschlusselnrsquo

        5 ASN1 Struktur Hash OID Wert rausziehen

        91

        6 vergleichen 0 1

        openssl hatte in den fruheren Versionen einen Fehler in der Signaturprufung

        langer RSA Schlussel

        exponent e klein (3)

        lange Signatur S

        S 3 = h

        wenn h sehr lang ist konnte man folgendes machen

        h= (0001FF00ASN1 rsquomullrsquo)

        man konnte den rsquoMullrsquo so verandern das h = s3 (also so lange verander bis h dritte Wurzel vons ist)

        Es wurde nicht uberpruft ob am Ende der ASN1-Struktur auch das Ende der Daten ist

        siehe Webseite RSA Zertifikate mit Exponenten 3

        To do alt

        Digitale Signaturen schutzen die Integritat und die Authentizitat Wir betrachten hier welche dieauf asymmetrischen Verfahren basieren Symmetrische gibt es werden aber in der Praxis nichtbenutzt Es gibt 2 Typen

        1 RSA

        2 DSA

        561 RSA

        m = p middot q (2048 Bit)Exponent e klein (64 Bit)Exponent d groszlig mit e middot d equiv 1 mod (p minus 1)(q minus 1)

        xrarr c = xe mod m (offentlich)cd equiv x mod m (geheim)xed equiv x

        92

        Man rechnet zuerst xrarr s = xd mod m Das kann nur derjenige der uber den privaten Schlusseld verfugt Aus s rechnet man se mod m = (xd)e mod m equiv xemiddote mod m = x Bei RSA konnenwir die Rolle vom privaten und offentlichen Algorithmus vertauschen so dass folgt Nur wer dkennt kann zu x ein s erstellen so dass se equiv x mod m ist

        Anwendung dafur Digitale Signatur Wir haben Nachricht M und erstellen daraus einen PrufwertH(M) mit einer Hashfunktion und rechnen

        H(M) = x minusrarr s = xd mod m

        Dann ist (M s) das digital signierte Dokument M (und s die Signatur)

        To do einsortieren neu

        Signatur mit Anhang (with appendix) (m sig)-Signierte Nachricht

        Ver(vm sig)

        Signatur mit Nachrichtruckgewinnung (with (partial) message recovery) (m1mprime2) = mprime so dassmprime2 ein Teil der Nachricht m = m1||m2 enthalt

        Ver(vm1mprime2) (partial recovery)

        Ver(vminusmprime) (complete recovery)

        In RSA

        PKCS1 ver 15 Signatur mit Appendix

        PKCS1 ver 21 (noch nicht in OpenSSL)

        To do ende einsortieren

        Prufung (M s) rarr H(M) = x Ist se mod m = x Nur wer das d hat kann das Paar (M s)

        erstellen und ist damit Inhaber des Dokuments

        562 Eigenschaften eines asymmetrischen Verschlusselungsverfahren

        Alice kennt den offentlichen Schlussel von Bob Bob kennt seinen geheimen Schlussel

        93

        Alice123 Bob Alice Bob123offB gehB gehA offA

        EoffB(m) = c rarr DgehB(c) = m rarr

        MS gehA

        (m s)

        rarr

        Voffa(m s) =

        0 ungultig1 gultig

        Mehrere Alices konnen an Bob schreiben Entschlusselung mit dem geheimen Schlussel vonBob Hier wird eine Nachricht so verschlusselt dass man die Nachricht aus c zuruckgewinnenkann

        Alice sendet an alle Bobs Hier wird ein Paar erzeugt dass in einen Verifikationsalgorithmusgestopft werden kann der dann ja oder nein sagt

        Es ist Zufall dass man mit RSA sowohl einen Verschlusselungsalgorithmus als auch einenSignaturalgorithmus erstellen kann Mit anderen geht das nicht

        Hatte man nicht die Urbildresistenz der Hashfunktion konnte man ein s nehmen und dazu aus-rechnen se mod m = x jetzt konnte man zu dem x ein Urbild M ausrechnen und bekame einPaar (M s) dass gultig signiert ist Dazu kommen in Wahrheit noch Padding und Objekt Identi-fier der angibt womit signiert wurde und Parameter

        30 = SEQUENCE06 = OID2B 0E 03 02 1A = SHA12A 86 48 86 F7 0D 01 01 01 = rsaEncryption05 = NULL Bezeichner fur die leere Menge hier bedeutet es keine Parameter04 = OCTET STRING02 = INTEGER03 = BIT STRINGSchema Tag Length Value

        Das ganze lasst sich mit openssl asn1parse erfahren (asn1 = Abstract Syntax Notation 1)Schlussel immer SEQUENCE SEQUENCE OBJECT PARAMETER BIT STRING bzw Se-quence aus OID und Bitstring Das erste Byte in einem Bitstring gehort nicht zum Bitstring dazusondern gibt die Nummer der von hinten ungenutzten Bits an

        OID-Liste httpwwwalvestrandno

        Mhminusrarr

        SHA-1

        H minusrarr

        Padding

        00 01 FF FF 00 b c b H c

        Identifier Oktetstring

        Padding nach PKCS1 v15

        ASN1 Objektidentifier fur SHA-1 (131432) wird als 2B 0E 03 02 1A codiert

        94

        xyabcd (Dot-Notation)darr

        bx middot 40 + yc babcdc1 Byte Byte (Oktett)

        12840113549127 als Ubungsaufgabe

        563 RSASSA-PSS-Padding

        SSA Signature Scheme with Appendix

        PSS Probabilistic Signature Scheme

        RFC 3447 (siehe figure 2)

        8 zero salt

        h

        0000 01 salt

        +MGF h

        maskiertes seed BC00 1024

        Bits

        zu 0

        setzen

        soviele dass die Eingabe

        kleiner als der Modul wird

        Eingabe fuumlr die Signatur

        M l(M) lt= 2^(64)-1 bei SHA-1

        20 Byte 20 Byte

        To do start einfugen

        MGF-Maskengenerierungsfunktion (beruht auf der Hash-funktion)

        95

        MGF rArr DBmask dann DB oplus DBmaskNullungminusminusminusminusminusminusrarr maskedDB

        Nullung-Nullung der oberen Bits so dass maskedDB kleiner als Modul ist

        Signieren (EMSA-PSS)+(RSA-Verschlusselung)

        Verifikation (RSA Op)

        1 RSA-Operation

        2 EM

        Prufung ob BC am Ende

        H abspalten und mit MGF DBmask erzeugen

        XOR mit Rest von EM

        DBprime = 0000︸︷︷︸Nullungsfehler

        0001 Salt

        00 Label mhash SaltHashminusminusminusminusrarr Hprime

        = H

        Jede Eingabe in die RSA-Operation ist pseudo zufallig (Jede Eingabe hat einen neuen Signa-turwert)

        Angenommen man wendet die RSA-Operation direkt auf m an

        mprime-Signatur mprime = md mod n

        m1m2

        m1 rarr mprime1 mod n = mprime1

        m2 rarr mprime2 mod n = mprime2

        Verifikation

        (m1m2) mod n rarr (m1 middot m2)d = md1md

        2 = mprime1 middot mprime2 mod n

        (rsquoMan kann mit zwei Signaturen eine andere erzeugenrsquo)

        96

        To do ansehen

        Unsicher zeitaufwendig kann leicht gebrochen werden

        m rarr mprime = md mod n

        re = rprime mod n

        chosen message m middot rprime rarr (m middot rprime)d mod n = md middot red mod n = mprime middot r mod n

        (mprime middot r) middot rminus1 mod m = mprime

        (sieht nach Zufallszahlen aus aber die kann man auf eine vorher gewahlte Nachricht zuruck-rechnen)

        To do ende einfugen

        Nachricht M mit |M| lt 264 minus 1 wird mit Hashfunktion h gehasht Davor kommen 8 Zerobytedanach ein Saltwert (Saltwert wird benotigt fur die Auswertung der Signatur und wird verstecktin der Signatur) Auf das Gesamte wird die Hashfunktion h erneut angewendet

        Verstecken des Saltwerts --0000 (rarr eventuell leer) 01 salt-- oplus mit einer Maske gebildetaus dem Hashwert und einer Maskengenerierungsfunktion

        An den Anfang der Eingabe fur die RSA-Signatur werden 0-Bits so gesetzt dass die Eingabefur die RSA-Signatur kleiner als der Modul ist Wenn m volle Bytelange hat wird das obersteBit gleich 0 gesetzt (RSA-Signatur ()d mod m mit m = p middot q) An das Ende der Eingabe fur dieRSA-Signatur wird BC angehangt

        Durch den Saltwert wird das Ergebnis zufallig und schwer vorhersagbar Wird leider nicht oftverwendet da die Maskengenerierungsfunktion Chipkarten teuer machen wurde

        Es existiert eine DIN Variante zum v15 PKCS1 DIN-RN-Padding00 02 Zufallsbytes(ohne 00) 00 Identifikator Oktettstring

        564 DSA

        Vergleich ElGamal und elliptische Kurven

        K-elliptische Kurve y2 = x3 + ax + b mod p

        97

        p-Primzahl ( 2 3)

        Punkte auf der Kurve bilden eine Gruppe E(k)

        P + Q = R k middotG isin E(k)

        G ein Punkt (Generator) mit groszliger Ordnung n

        1 middotG 2G 3G n︸︷︷︸sehr groszlig

        middotG = 0

        n ist eine Primzahl und G 2G nG = 0 ist die gesamte Gruppe E(k)

        Signaturschlussel t-zufallig aus 1 n minus 1 Verifikationsschlussel ist P = t middotG

        Standard FIPS 186-3 rarr finde den Fehler

        To do ende einfugen

        p g Generator gpminus1 equiv 1 mod p gpminus1

        x 1 mod p

        Geheimer Schlussel xoffentlicher Schlussel y = gx mod pk(gkm middot yk) = c

        Parallel bei elliptischen Kurven G geheim x offentlich Y = x middotG

        (k middotGm middot k middot Y)

        DSA auch bekannt als DSS FIPS-186

        Primzahl p (hat zB 1024 Bit im Standard variabel) so gewahlt dass pminus 1 einen Primteiler derLange 160 Bit enthalt q|p minus 1 mit |q| = 160 BitAusserdem Es gibt einen Generator g mit der Eigenschaft gq equiv 1 mod p Das findet man

        indem man einen h Generator in mod p auswahlt und g = hpminus1

        q hpminus1 equiv 1 mod p ausrechnet

        x geheimer Signaturschlussel mit 160 Bit gx mod p ist der offentliche Schlussel

        Signaturerstellung Nachricht M Hashwert h(M) = H ausrechnen Generiere Zufallszahl k mit160 Bit (k isin 1 n minus 1) und berechne

        To do neu

        k middotG = (x y) r = x mod n

        98

        s = hminus1 middot (h + tr) mod n

        (r s) ist die Signatur

        To do ende neu

        r = (gk mod p) mod q und s = (kminus1(H + x middot r) mod p) mod q r und s sind Exponenten furmod p werden aber nochmal mod q genommen um Platz zu sparen (r s) wird die Signaturwerden (s 0 mod q r 0 mod q)

        Signaturverifikation Berechne w = sminus1 mod qu1 = H middot w mod q u1 = H middot w + i middot qu2 = r middot w mod q

        Berechne

        gu1 middot yu2 equiv gHmiddotsminus1middot gxmiddotrmiddotsminus1

        equiv gHmiddotk(H+xmiddotr)minus1middot gxmiddotrk(H+xmiddotr)minus1

        equiv gHmiddotkmiddot(H+xmiddotr)minus1+xmiddotrmiddotk(H+xmiddotr)minus1

        equiv gkmiddot(H+xmiddotr)middot(H+xmiddotr)minus1

        equiv gk mod p

        Prufe also ob (gu1 middot yu2 mod p) mod qequiv r

        Die Signatur zu M ist (r s) mit r und s haben 160 Bit so dass man 320 Bit Signatur hat (kleinerals die 1024 Bit Signatur von RSA)

        Um den geheimen Schlussel zu bestimmen muss man den diskreten Logarithmus mod q be-rechnen und das gilt als schwer

        565 ECDSA - DSA mit Elliptischen Kurven

        K - elliptische Kurve mit Punkten mod pG - Generatorpunkt G hat Ordnung q [q middotG = 0] q Primzahlx - Restklasse mod q Y = x middotG

        r = [(k middot G)1] mod q (rarr 1 Koordinate mod q) s = kminus1(h + x middot r) mod q [u1 middot G + u2 middot Y]1

        mod qequiv r

        700 Bit fur alle Parameter

        99

        To do neu

        ECDS DSAGenerator

        G g gq = 1 mod pdA = [1 q minus 1]

        zufalligPA = dA middotG auf E pA = gdA mod p

        Signatur k isin [1 q minus 1] r = (gk mod p) mod qr = x mod q

        s = kminus1 middot (h + dA middot r) mod q

        h ist genauso lang wie q (gleiche Bitlange)

        h sind die linken Bits von H(n)

        (Bem RSA ist bei Elipt Kurven nicht einsetzbar deshalb ist DSA eine gute alternative)

        link draft-lochter-pkx-brainpool-ecc-03 - eine art RFC zu Brainpool

        openssl ecparam -name brainpoolP256r1 -param_enc explicit -noout

        E =(x y) y2 = x3 + Ax + B mod p

        Dann ist G = 04x (in einer Prufung ware interessant zu wissen was das fuhrende Bytebedeutet und welche Varianten es gibt)

        openssl ecparam -name brainpoolP256r1 -genkey

        -param_enc explicit -noout gt eckey

        (pub - offentlicher Punkt)

        openssl dgst -sha256 -sign eckey eckey gt ecsig

        xxd -p ecsig

        openssl asn1parse -i -in ecsig -inform DER

        Man erhalt die beiden Integers r und s

        (Bem bei Eliptischen Kurven ist die Bitlange kurzer da Algorithmen hohere komplexitat als so

        100

        haben)

        (Hausaufgabe erzeuge zwei Kurven (512Bit - Brainpool bzw 521 NIST) mit anderen Hash-funktionen (mdripemd whirlpool) Signatur (rs) )

        (Bem siehe Wikipedia El C DSA r=0 Abfrage weil sonst dA keine Rolle spielt s= 0 Abfrageweil man sonst mit minusz = r middot dA mod q den geheimen dA ausrechnen kann)

        [Spickzettel zur HA

        h-linke Bits des Hashwertes

        n1 = h middot sminus1 mod q

        n2 = r middot sminus1 mod q

        V = n1 middotG + n2PA = (x y) r = x mod q

        v = gn1 middot pn21 mod p r = v mod q

        (r rarr 0 1 jeweils)

        h middot sminus1 middotG + rsminus1PA = h(k(k + dAr)minus1 middotG + r(k(h + dAr)minus1)dAG = (hk + rkdA)(h + dAr)minus1G = V

        = k (h + rdA) middot (h + dAr)minus1︸ ︷︷ ︸=1

        G

        = k middotG

        ]

        Magma

        p=StringToInteger(rsquorsquo16)

        a=StringToInteger(rsquorsquo16)

        b=StringToInteger(rsquorsquo16)

        IntegerRing(p)

        E=EllipticCurve([KaKb])

        G=E[KStringToInteger(rsquo1Halfte Generatorrsquo16)

        101

        KStringToInteger(rsquo2Halfte Generatorrsquo16)]

        Jetzt kann man rechnen

        qG eq E0

        true

        mdashmdashndash

        qG

        (010)

        mdashmdashmdash

        Kq=IntegerRing(q)

        dA=1+Random(q-2)

        PA=dAG Prufung ob ungleich Null fehlt noch

        h=K12121212121212121212121212121

        k=1+Random(q-2)+1damit keine Null rauskommt

        X=kG

        x=X[1]

        r=(IntegerRing()x) mod q

        s= (Kqk)ˆ(-1) ((Kqh)+ r dA)

        rs

        Verifikation

        u1=h(Kqs)ˆ(-1)

        u2=r(Kqs)ˆ(-1)

        102

        Y=(IntegerRing() u1)G+( IntegerRing() u2) PA

        Y

        ((IntegerRing() Y[1]) mod q) eq r

        =rArr siehe Verzeichnis

        Prufen ob Openssl gut gerechnet hat

        OpenSSL

        wie erzeugt man den offentlichen Schlussel openssl ec -in eckey -pubout

        openssl ec -in ecpub -pubin -text -noout

        -pverify

        To do neu-ende

        To do neu-20090617

        Bem Attributes muss die leere Menge sein und darf nicht weggelassen werden

        SHA1 nur noch zur Unterscheidung benutzen

        57 Widerrufen von Zertifikaten

        siehe rfc5280 S53

        Erste Sperrliste

        Ist eine Liste in der die Nummern der gesperrten Zertifikate stehen

        Beispiel CA erstellen

        perl ˜optopenssl-100-beta2appsCApl -newca

        103

        Zertifikat fur den Nutzer erstellen

        perl ˜optopenssl-100-beta2appsCApl -newreq

        Signieren

        perl ˜optopenssl-100-beta2appsCApl -xsign gt aypem

        Man kann noch weitere Zertifikate erstellen allerdings wird dann der pem Key geloscht Mankann dann feststellen dass die Seriennummer nur um eins erhoht wird Man kann auch openssl ca -gencrl -out -cl1pem -crlhours 12benutzen und dabei die Seriennummer selber angeben

        openssl crl -text -in crl1pem -noout

        Zertifiziert wird nur der Teil zwischen Certificate Rev List bis No Revok Cert Da dieser Teilsehr klein ist ist es recht schwer Kollisionen mit SHA1 dafur zu konstruieren

        Dann gibt es noch Informationen wann es die nachsten Updates gibt (Last Update Next Update(optional)) Alte Sperrlisten bleiben aber Gultig die neuen gelten nur zusatzlich

        Zertifikat ungultig machen

        openssl ca -gencrl -out cr13pem -revoke demoCAcertsF8C85pem -crl_reason keyCompromise -crlhours 12

        aktualisieren

        openssl ca -gencrl -out cl4pem -crlhours 12

        Nun nachsehen mit

        openssl crl -text -in crl4pem -noout

        To do neu-ende

        104

        58 Was es noch so gibt

        581 blinde Signaturen

        Gut fur anonymes digitales Geld Normalfall Bank kriegt digitalen Scheck belastet das Kontound schickt einen von ihr signierten Scheck zuruck Problem Wenn derjenige der den Scheckspater einlosen will zur Bank geht kann diese den Scheck zum Aussteller zuruckverfolgen

        Mit anonymen Signaturen Aussteller erzeugt viele (zum Beispiel 1000) unterschiedliche Schecksmit je einer Zufallszahl und dem gleichen Betrag aber ohne Name Kontonummer etc Diese1000 sendet er verschlusselt an die Bank Die Bank sucht sich zufallig (das ist wichtig) 999davon aus und fordert fur diese den Schlussel an Die Bank entschlusselt diese Schecks unduberpruft ob uberall der gleiche Betrag drinsteht Wenn ja dann ist davon auszugehen dass auchder auf den gleichen Betrag lauft Das Konto wird entsprechend belastet und der Scheck wirdblind (also ohne hineinzusehen) signiert und dem Aussteller zuruckgeschickt Der packt denScheck aus (wobei die Signatur gultig bleibt) und hat jetzt einen von der Bank signierten digita-len Geldschein den die Bank nicht mehr zuruckverfolgen kann

        582 anonyme Signaturen

        Beispiel Elektronische Wahlen wo man nicht mochte dass man weiszlig wer es unterschriebenhat

        6 Zertifikate

        To do neu-20090520

        m rarr Signatur und Verifikation

        mprime rarr Signatur und Verifikation

        Vertrauen in den offentlichen Schlussel

        Schutzen den Schlussel durch Prufwert den Prufwert Schutzen wir durch eine Signatur Vertrau-en eines Schlussel ubertragt sich an einen anderen Das ganze scheint sich im Kreis zu drehen

        Aber es handelt sich um einen Graph (Der Graph muss nicht transitiv sein - A vertraut BB vertraut C aber A vertraut nicht unbedingt C) Zb Baum mit Wurzel (PKI) dann gibt es

        105

        vertrauens-Normen die den Ebenen eines Baumes entsprechen Die andere Variante ist das PGPWeb of Trust bei dem der Baum ungeordneter ist und eine Art Vertrauensbereiche hat

        Dass eine Zertifizierungsstruktur funktioniert braucht es klare Regeln fur den Umgang mit Zer-tifikate

        Standards

        ANSI X509

        X500

        openssl internet Profil

        RFC 5280 (alt 3280 2459)

        Definition Zertifikat bindet (durch Signatur) einen offentlichen Schlussel an einen Namen(Subjekt)

        (siehe rfc5280 S16 - Certificate= SEQUENCE und TBSCertificate) (in TBSCert er-scheint rsquosignaturersquo recht fruh damit schon mit dem Hash-Algorithmus begonnen werden kannaber warum steht in Certificate dann nochmal signature -Bessere Ordnung)

        Zertifikat bei CA-cert runterladen und dann mit openssl ansehen

        openssl x509 -in class3crt -text -noout

        openssl asn1parse -i -in class3crt

        Zur ausgabe des ersten (siehe auch rfc5280)

        Version es gibt momentan 3 Versionen

        Serial Number ist ein Integer kann so groszlig sein das man nicht mehr in den Hash-Block mehrkommt (bis 20 Byte geht)

        Bundesnetzagenturde 15549pdf sagen dass Serien Nummern mindesten 20 Bit Entropie ent-halten sollen damit SHA-1 bis 2010 benutzt werden kann (rsquoQualifizierte Signaturrsquo)

        To do siehe 606 Gultigkeit

        validity Wird oft als Gultigkeitszeitraum ubersetzt was aber nicht ganz richtig ist da nur ange-geben wird wann das Zertifikat nicht gultig ist Besser ware rsquonicht Gewahrleistungszeitraumrsquo

        106

        Die validity gibt (nach dem Standard) den Zeitraum an in der die CA gewahrleistet aussagenuber den Zustand des Zertifikats zu geben (Gultig ODER nicht Gultig - deshalb muss das Zer-tifikat also nicht unbedingt gultig sein)

        To do neu-ende

        To do neu-20090527

        Bemerkung In der Objectstxt findet die Object-Identifier die OpenSSL kennt

        To do neu-20090527-ende

        Signatur Anwendung eines Schlussels Ob der Signaturersteller eine bestimmte Person ist istdamit nicht klar Immer gleichzeitig Authentizitat des Schlussels prufen

        Dazu gibt es zwei Moglichkeiten

        1 Anarchie = Web of Trust (Beispiel PGP)

        2 Vertrauenswurdige dritte Instanz Certification Authority CA bzw ZDA (Zertifizierungs-diensteanbieter) Stellt ein Zertifikat aus das ist ein elektronisches Dokument welcheseine Identitat einem Schlussel zuordnet

        Zertifikat (Name Schlussel ) und Signatur

        Problem Im Zertifikat steht Name Schlussel usw und daran hangt eine Signatur Gegeben Nut-zer Alice mit Zertifikat daruber gibt es die CA1 die ihre Signatur zertifiziert CA1 hat selber einZertifikat mit einem Namen Schlussel usw und daran hangt wieder eine Signatur Das Problemverschiebt sich immer weiter nach oben Man bekommt eine Zertifikatshierarchie und benotigteinen aufgeblahten Riesenbaum mit einer Weltwurzel Im taglichen Leben haben sich 3-stufigeZertifikatshierarchien bewart Root signiert seine eigene Signatur Vertrauen in Authentizitat derNutzerschlussel ist fur alle Nutzer gleich Es bestimmt sich ausschlieszliglich durch die Authenti-zitat des Schlussels des Root CA Das Vertrauen in die Root CA verteilt sich auf die Nutzer

        603 X509

        X509 mittlerweile bei ISO RFC 3280 X509 Certificate and Certificate Revocation List (CRL)Profile Abschnitt 4

        Version X509v3 Version 1 enhalt keine ErweiterungenSerial Number In der Regel 20 Byte muss immer eindeutig sein

        107

        Signaturverfahren fur das Zertifikat muss am Anfang (im ersten Block) stehen damit das Has-hen schon begonnen werden kannHerausgeber Name(eindeutig) C=Country O=Organisation CN=Common Name SN=Surname

        Validity Gultigkeitszeitraum der Zeitraum indem die CA Gultigkeitsinformationen uber dasZertifikat bereitstellen willwirdmussInhaber Name (eindeutig im Bereich der CA) zur Person also stabile Daten SeriennummerVersicherungsnummer etcSchlusselinformationenErweiterungenDarunter die Signatur

        In RFC 3280 steht dass nach dem 31 Dezember 2003 alle Zertifikate UTF-8 kodiert seinmussen

        604 Erweiterungen

        Man kann bei Erweiterungen festlegen ob diese Critical oder nicht sind Critical ist sowas wieeine Vorschrift nicht Critical ist sowas wie eine Information Kritische Erweiterungen mussenimmer ausgewertet werden wenn ein Programm sie nicht versteht darf es das Zertifikat nichtverarbeiten

        To do neu

        Per default auf false ist auszligerdem optionales Argument Wenn nicht critical dann ist es nur eineInformation Also critical muss man lesen und verstehen nicht critical sollte man lesen wennman sie versteht sollte man sich daran halten

        To do neu ende

        Basic Constraints

        To do neu

        Sagt ob es Zertifizierungsinstanz ist oder eine Endnutzer Instanz ist und in welcher Ebene essich befindet

        To do Diagramm basteln

        108

        Ein interessantes Beispiel (goyacrt) findet man bei der Rechnerbetriebsgruppe

        To do neu-ende

        CA Siginalisiert ob es ein CA-Zertifikat ist (TRUE) oder nicht (FALSE) Dh ob das Zertifikatberechtigt ist weitere Unterzertifikate auszustellen

        To do neu

        Per default false es musste also nicht jedesmal CA FALSE angegeben werden

        To do neu-ende

        PATHLEN Beschrankt die Pfadlange Pathlen=0 heisst dass das Zertifikat zwar Nutzerzertifika-te ausstellen kann aber keine weiteren CA-Zertifikate Ist immer als Critical markiert

        Subject Key Identifier und Authority Key Identifier Nicht kritisch Beschreiben die ver-wendeten Schlussel uber Hash-Werte zum Beispiel SHA-1 uber den Schlussel

        Key Usage Kritisch (sollte kritisch sein zb bei GOYA nicht) Ist ein Bitstring der die Ver-wendung des Schlussels angibt Fur eine CA also zum Beispiel nur KeyCertSign NonRepu-diation ist eigentlich fur die Dokumentsignatur (content commitment) DigitalSignature ist furAuthentisierung oder allgemeine Signaturmechanismen Die beiden moglichst exklusiv setzen

        To do neu

        Nicht bei Endnutzerzertifikaten notig

        To do siehe rfc5280 - KeyUsage -HA lesen

        Merkmale

        (0) DigitaleSignatur zur Authentifizierung (hat keine Auswirkungen auf spatere Zeitraume)(werden zu dem aktuellen Zeitpunkt gepruft)

        (1) (ab X509v4) Inhaltsbindung[contentCommitment] (zb Nichtabstreitbarkeit ) (jetzt noch[nonRepudiation]) (werden zu dem Zeitpunkt zu dem sie erstellt worden sind gepruft)

        (0) und (1) sind Endnutzerinformationen

        nur ent-verschlusseln Schlussel zum verschlusseln von Zertifikaten geignet

        109

        keyCertSign==TRUE - wenn man nur Zertifikate damit signieren mochte (brauch man bei CAZertifikaten eigentlich sollte nur eines der Bits gesetzt sein) ansonsten sollte digitalSignaturegesetzt werden

        Key usage zB A0=10100000 (Erste und dritte gesetzt) oder zB 88=10001000 (erstes undfunftes gesetzt)

        authority information Nicht kritisch Feld in dem Daten des Herausgebers abgerufen werdenkonnen

        Benutzt das OCSP-Online Certificate Status Protocol (gibt eine URI an wo man die Informatio-nen erhalten kann - spater mehr)

        X509v3 Certificate Policies ASN1 Strucktur siehe rfc5280 S 33

        System von Regeln fur die Ausgabe von Zertifikaten sowie den Betrieb der ZertifizierungstelleNutzer kann sich uber die Hirarchie der CA informieren (wichtig fur den Vertrauensaufbau)

        CPS - Certificate Policy Statement und dann zwei moglichkeiten cPSuri (uri wo die Informationzu finden ist) oder userNotice (Freitext)

        Bsp httpnasacanasagovnasacphtml dort findet man eine CPS

        Wenn der Regelsatz dem CA Zertifikat zugeordnet ist (Bindung zB durch Root) ist es besserals wenn es nur dem EndNutzer Zertifikat zugordnet ist (Bindung nur durch die daruberliegendeCA)

        Authority Key Identifier Kurzinformationen mit der man einen Schlussel identifizieren kannFur Endnutzer ist der Authority Key Identifier ein Bezeichner mit dem das zugohrige CA-Zertifikat zu finden ist Kann enthalten

        KeyIdentifier - Schlussel ID

        GeneralNames - Herausgeber Seriennummer

        CertificateSerialNumber

        Subject Key Identifier - SKI Schlussel ID hilft bei der Unterscheidung sollte eine moglichsteindeutige Nummer sein da aber nicht genau festgelegt wird ist die SKI nicht fur Uberprufungengeeignet

        110

        Subject Alternative Name IP Adresse URI Email Adresse (hat das rsquoatrsquo Zeichen welchesin kein Datentyp passt weshalb sie hierher (oder in den Issuer Alt Name) gehort soll alsrfc8224Name gespeichert werden (da dieser nicht groszlig klein sensitiv ist))

        To do neu-ende

        605 Erzeugung

        To do neu

        Bei OpenSSL gibt es zwei moglichkeiten mit Perl Script

        perl ˜optopensslappsCApl -newca

        openssl x509 -text -nout -in cacertpem

        openssl req -text -nout -in careqpem

        Diese Requests folgen dem Standard PKCS 10 - rfc2986

        openssl ans1parse -in careqpem

        Attributes [0] - Contextabhangiges Tag (nur an diesem Ort gultig) Codiert als A0 denn Con-textabhangige tags fangen mit 10 an im Gegensatz zu Universaltags die mit 00 anfangen(Beispiel fur Contextabhangige Tags siehe auch bei AuhtorityKeyIdentifier)

        Im Request ist Set of Atritbute NICHT optional (aber kann leer sein)

        To do neu-ende

        Wie kommen wir eigentlich zu Zertifikaten Zertifikate kommen von einer CA also muss manzuerst ein CA-Zertifikat erstellen

        Request Ich mochte ein Zertifikat haben PKCS10RFC2986openssl req

        openssl req -new -x509 erzeugt gleich ein Zertifikat

        openssl req -new -newkey rsa1500 -days 40 -out userreq ein neuer Schlussel undein Request Der Request enthalt die Informationen des Antragsstellers den offentlichen Schlusselein Challenge-Passwort (von der CA festgelegt) und eine Signatur uber diese Daten

        111

        openssl x509 -req -CA -CAkey -out -days 40

        -in userreq -CAcreateserial -out userx509

        -extensions usr_cert -extfile opensslcnf wichtig um v3-Zertifikate zu erzeu-gen

        606 Gultigkeit

        Der rsquoGultigkeitszeitraumlsquo (Validity) im Zertifikat ist der Zeitraum uber den sich die ausstellendeInstanz verpflichtet etwas uber die Gultigkeit des Zertifikats auszusagen

        CRL Certificate Revocation List

        OCSP Online Certificate Status Protocol

        Sperrlistenformat auch in RFC 3280 Abschnitt 5 als X509-Variante festgelegt

        OCSP version 1 RFC 2560

        To do neu

        Man kann dass conf bearbeiten

        Ubungsaufgabe ein Zertifikatsrequest mit eigen Daten erstellen und zu zertifizieren

        To do einsortieren

        Die CA schmeiszligt eventuell Daten des Request raus

        To do neu-ende

        To do neu-20090624

        Sperrlisten Enthalten

        Version

        Signatur

        112

        Herausgeber

        LastNext Update

        Sperrlisten Nummer (sollte monoton wachsen)

        Liste der gesperten Zertifikate(jeder Eintrag enthalt ein Integer eine Zeit und evt CRLEntryExtension(CRLReason-Code siehe rfc5280 531))

        Bemerkungen

        Sperrlisten sind im DER-Format ( openssl -inform DER)

        (Erweiterungen enthalten immer OID Octet-String)

        Zu CRLEntryExtension CRLReason Code (6) (certificateHold-schwebend gesperrt) und (8)(removeFromCRL-kannwurde wieder entsperrt werden) sind besonders und sind eher nur furAuthosierung sinnvoll

        Sperrlisten nehmen in der Praxis erhebliche groszligen ein

        CRLEntryExtension wird von der Bundesnetzagentur nicht benutzt

        RFC5280 532 sperrdatum (revocation date) darf nicht vor dem Zeitraum der vorherigen CRLliegen sonst ist es in der vorherigen Liste Gultig (ansehen)

        Aufbau des Pfad zum Vertrauensanker (RFC 5280 S72) Das beschriebene Prufverfahren istnicht normativ vorgeschrieben es reicht wenn die Funktion gleich ist

        httpwwwbundesnetzagenturdemediaarchive1343pps

        Kettenmodel benutzt den Erstellungszeitpunkt (nicht Gewahrleistungs-Beginn) (Folie3)

        httpwwwbundesnetzagenturdeenid85f55115e236d80fc18329992037142d0FAQ

        Antwortss4_wphtml

        To do neu-ende

        To do 20090701-fehlt

        113

        61 Praktische Ausschlachtung von kryptografischen Algorithmen mitSMIME und PKCS7

        Root-Zertifikat erzeugenopenssl genrsa 1200 gt cakeypem

        openssl req -x509 -new -key cakeypem -config opensslcnf gt cacert (selbst-signiertes neues root Zertifikat mit eigenem Config Script)

        Root-Zertifikat anschauenopenssl x509 -in cacert -text -noout

        Nutzer der eigenen CA erstellenopenssl req -new -config opensslcnf -out usercert Erstellt mehrere Dateienauch privkeypem

        Zertifikat erstellenopenssl x509 -req -in userreq -CA cacert -CAkey cakeypem -CAcreateserial

        -out usercert -extfile opensslcnf -extensions usr_cert (Zertifikat fur usermit Extenstions Version 3 statt Version 1)

        Senden einer signierten Nachricht (Nachricht in Neutxt)openssl smime -sign -signer usercert -in Neutxt -inkey privkeypem

        -out neusmime -text

        Erzeugt Datei neusmime mit Nachricht und Signature -text erzeugt den Eintrag fur den Con-tent Type vor der Originalnachricht in neusmime

        Umwandeln der SMIME Nachricht in PKCS7 Nachrichtopenssl smime -pk7out -in neusmime -out neupk7

        Das gesamte (ohne Inhalt der Nachricht eigentlich nur die Signatur) SMIME Dokument wirdin eine PKCS7 Struktur eingebunden

        Anschauen mitopenssl asn1parse -i -in neupk7

        Zertifikate ausgeben mitopenssl smime pkcs7 -in neupk7 -print_certs -noout

        Zertifikate anschauen mitopenssl smime pkcs7 -in neupk7 -print_certs -noout -txt

        Verifizierenopenssl smime -verify -in neusmime -CAfile cacert

        Verschlusseln

        114

        openssl smime -encrypt -in Neutxt -out neusmime -text usercer

        Nachricht ohne Signatur verschlusselt

        Entschlusselnopenssl smime -decrypt -in neusmime -text -recip usercer

        -inkey privkeypem

        Fur die Einbindung in Browseropenssl pkcs12 -export -name Annie -inkey privkeypem

        -in usercert -out userp12

        Um auch das CA Zertifikat mit einzubindenopenssl pkcs12 -export -name Annie -inkey privkeypem

        -in usercert -out userp12 [-certfile cacert -CAfile cacert -chain]

        Private Schlussel auspacken openssl pkcs8

        62 PKCS

        PKCS Public Key Cryptography Standards

        1 RSA3 Diffie-Hellman5 Cryptography mit Passworten6 Zertifikate7 Cryptographic Message Syntax8 private Schlussel9 Attributtypen10 Zertifikatsrequest11 Cryptographic Token12 Personal Information Exchange13 Elliptische Kurven15 Chipkarten Token Formate

        621 PKCS7 15 November 93 RFC 3852

        To do neu-20090708

        CMS

        Email (SMIME)

        115

        XML Signaturen XMLDSIG XMLENC

        Dokument rarr signiertes Dokument

        openssl genpkey -algorithm rsa -pkeyopt rsa_keygen_bits300mdash openssl -chek -text -noout

        zu kleine Werte (iexcl256) fur den Schlussel werden nicht akzeptiert (Wert ist immer noch etwasklein) Aber die Ausgabe ist nicht ganz korrekt

        openssl genpkey -algorithm rsa -pkeyopt rsa_keygen_pubexp1

        ist leider moglich

        63 CMS(Cryptographic Message Syntax)

        rfc3852

        SignedData

        bull Version

        bull Hash Algorithmus

        bull gekapselter Inhalt

        bull Certifikat Liste

        bull Widerrufungsliste (Sperrinformationen)

        bull

        bull Signer Infos (Signaturen davon kann es mehrere geben elektronische Signatur nach demSignaturgesetz Signer Info enthalt selber noch einmal einen Signaturblock - der als Digi-tale Signatur aufgefasst werden kann)

        ndash Versionndash Idndash Attributesndash Algondash sig Valuendash

        bull Signer Id

        bull Signed Attributes (zB Zeit Ort Message Digest) Die Signatur dieses Blockes wird er-stellt indem der Hash Wert (nur des Blockes) signiert wird Wenn es signed Attributesgibt sind also auszligerdem Hash Wert des Dokuments und Inhaltstyp(Contenttype) im Si-gned Attributes enthalten und erst dann wird der Signed Attributes Block signiert Es wirdjeweils er Hash-Algorithmus verwendet der oben genannt wird

        116

        Auszligerdem Signing Certificate

        bull

        Frage ist wo wird der Wert Signiert der sagt welcher Hash-Algorithmus verwendet wird Wennnicht konnte man eventuell den Algorithmus austauschen

        Man konnte den Hash-Algorithmus als SignedAttribute einfugen

        To do neu-ende

        CMS (Cryptographic Message Syntax) Beschreibung des Formates mit dem man Krypto-nachrichten erstellen kann

        Kryptographische Nachricht Struktur vorne Bezeichner hinten Daten Daten = irgendwasspannend Welche Typen gibt es eigentlich

        Signed-data Content-Type Was jetzt kommt sind signierte Daten Liste der unterstuetzen Has-hfunktion dann gekapselter Inhalt dann eine Liste von Zertifikaten (optional) optionalSperrlisten dann Signaturbloecke (SignerInfo)

        SignedData = SEQUENCE

        Versionsnummer

        Liste der unterstutzten Hashfunktionen

        Ursprungliche Nachricht selbst

        Liste von Zertifikaten Optional

        Sperrlisten Optional

        Signer Infos

        SignedInfo = SEQUENCE

        Versionsnummer

        Signer Identifier (Wer der Signierer eigentlich gewesen sein soll)

        Hashfunktionen die bei der Signatur verwendet wird

        Signierte Attribute

        Verwendete Signaturalgorithmus

        Signaturwert

        Unsignierte Attribute

        SignerInfo = SEQUENCE

        Versionsnummer

        Signer Identifier (Wer der Signierer eigentlich gewesen sein soll)

        Bezeichner des Hashalgorithmus mit dem die endgultige Signatur erstellt wird

        Signierte Attribute Optional

        117

        Signatur Algorithmus

        Signature SignatureValue

        Unsigned Attributes Optional

        SignerIdentifier = SEQUENCE

        issuerAndSerialNumber

        subjectKeyIdentifier (Eindeutiger Hinweis wer der Aussteller ist)

        SignerInfo Signaturblock der eine Datenstruktur fuer eine Signatur bereitstellt Steht drin Ver-sionsnummer SignerIdentifier verwendeter Hash-Algorithmus dann signierte Attributeverwendeter Signaturalgorithmus Signaturwert unsignierte Attribute

        SignerIdentifier Aussteller und Seriennummer oder Schluesselidentifier (subjectKeyIdenti-fier)

        Signierte Attribute Sammlung von Attributen die signiert sind Was dabei sein sollte erstesAttribut Content-Type wenn die signierten Daten nicht nur Rohdaten sind sondern gekap-selte Daten eine s bestimmten Typs Ein weiteres nuetzliches Attribut Message-DigestDann Signing-Time

        Content-Type Object-Identifier der einen bestimmten Typ impliziert

        Message-Digest Hash der aus den Daten ausgerechnet wird Als Octet-String

        Signing-Time Zeit von der behauptet wird dass die Signatur zu dieser Zeit geleistet wurde

        Signatur Es werden die signierten Attribute signiert dort ist auch der Hash des Dokumentsals messageDigest enthalten Wenn keine signedAttributes existieren wird das Dokumentdirekt gehasht

        Weitere sinnvolle signierte Attribute

        Commitment-Type Was bedeutet die Signatur zum Beispiel virtuelle Poststelle Eingangs-stempel Auslieferung Einschreiben Urheberschaft gelesen Zeitstempel (spezielleSignatur eines authentischen Zeitservers) ist eine Information dass das Dokument vor-her existiert hat

        Signing Certificate Beschreibt mit welchem Schluessel zu welchem Zertifikat ist unterschrie-ben wordenwelches Zertifikat moechte der Signierer zur Ueberpruefung verwendet ha-ben Austausch des Zertifikats fuehrt zu anderer Urheberschaft ist ein realer AngriffVerhindert die Urheberschaft auszutauschen (rfc2634 S 46) Folge mit Zertifikats HashIssuerSerial(Herausgeber und Seriennummer) (leider ist da SHA1 als Algorithmus festge-legt)

        in rfc5035

        Folge mit Hash-Algorithmus (optional default ist aber SHA256) Zertifikat Hash IssuerSerial (Nun Hash als Octet String)

        Da der Wert des Hash Algorithmus optional ist ist diese Variante ruckwartskompatibel

        118

        Signing Location Ort an dem die Signatur geleistet wurde

        Weitere nuetzliche unsignierte Attribute

        Zeitstempel ist eine Information wann die Signatur existiert hat Hash uber die Signatur TimeServer davon Signatur

        not after Information fur die Signatur

        Countersignature Zweite Signatur (Gegenzeichnung) Signaturblock uber eine andere Signa-tur

        (Mitsignatur Bestatigung eines signierten Dokuments wichtiges Feld fur Mehrfachsigna-turen)

        Hashwert des signature Feldes (3 Hash Wert) nicht alle in einander gekappselt sonderansammlung von Signaturen

        Archiv Zeitstempel neuer Hash-Algorithmus signiert Dokument alle Signaturen alle Attri-bute (signiert unsigniert)

        Damit kann mann folgendes machen

        2001 2009 2010

        RS A512 S HA1 S HA256 S HA512

        Dok S ignatur t1 t2cc at1TTYY^^bb at2 at3

        Fur XML XML-DSIC XML-ENC

        7 Wichtige Neuerungen bei den Versionsanderungen

        bull Von 098 zu 099 Verbesserungen bei den Extensions von Certificate Revocation Lists

        bull Von 097h zu 098 UTF8-Support fur das ca-Kommando

        bull SHA1 ist nun default-Hash-Algorithmus statt MD5

        bull Patentierte Algorithmen RC5 und MD2 mussen beim Kompilieren extra angegeben wer-den

        bull Neue FIPS 180-2 Algorithmen SHA-224-256-384-512 wurden implementiert

        119

        bull Neuer Parameter -selfsign fur das ca-Kommando

        bull IPv6 Support bei den Zertifikatserweiterungen

        bull Ausweitung der Eliptischen Kurven Bibliothek

        8 OpenSSL hintergehen

        81 die eine Primzahl ganz klein erzeugen

        bull Offnen einer Datei in genrsa cryptorsarsa_genc

        bull Andern den Teil ldquo generate p and q rdquo so daszlig die eine Primzahl 10bit lang ist(bitsp=10 )

        bull Wir erzeugen einen neuen rsa key openssl genrsa -out rsaweakpem 2048und erstellen hierdurch eine Primzahl mit 10 bit die andere zufallig (also so in etwa2038bit)

        bull Wir schauen uns den key an openssl rsa -in rsaweakpem -text -nooutund sehen die eine Primzahl ist 35879 die andere hat 2046 bit Lange Das kann manlecker faktorisieren

        bull Offnen cryptobnbn_primeh die Zahl kommt durch den kleinen Primzahltest durchdieser geht nur bis ca 17000

        82 beide Primzahlen nah beieinander

        bull Und wieder in rsa_genc (Zeile 136 in der do-while-Schleife hinter degenerate)

        bull BN_copy(rsa-gtq rsa-gtp) wir setzen q gleich pBA_add_word(rsa-gtq 20) wir addieren 20 auf q

        for(i=1 BN_is_prime_ex(rsa-gtq 5 ctx NULL) i++)

        BN_add_word(rsa-gtq 2)

        wir erhoehen q bis zur naechsten Primzahl

        bull hierdurch erzeugen wir zwei Primzahlen die sich enorm ahnlich sind (wieder mit obigenKommandos) Der Angreifer kennt in diesem Fall den Exponenten damit ist das Verfahrenvollig unsicher

        83 Vorschrift des BSI

        01 le |log10 p minus log10q| also p gt10radic

        2 lowast qDas kann man aber mit q =10

        radic2 lowast p im Quellcode umgehen

        120

        84 Programmierung Zufallszahlenerzeugung und andere nette features

        Die ldquocallbackrdquo Funktion gibt den Fortschritt bei Suche nach p und q als Punkt (Fermat Primzah-lentest) und Plus (Miller-Rabin-Test) aus

        DatentypStruktur zum Speichern der auftretenden groszligen Zahlen Binarfeld BIGNUMp ist unsigned char

        p = BN_bn2hex((RSA )pub_rsa)-gtn) Zum Ausgeben eines BIGNUMs

        ((pub_rsa)-gtn)d[] einzelne Teile im Datenblock eines BIGNUMs editieren

        Zufallszahlen findet man in cryptorandrandh rand_libc randc

        Diese beiden Kombinationen vor entsprechenden Programmen i2d oder d2i intern to data datato internpub_rsa = d2i_RSAPublickey(NULL ampstr len) (lange von str) Transfor-miert Binardaten Zeichenkette in interne public Key Datenstruktur mit ASN1

        S(buf) gibt Speicherplatz frei uberschreibt ihn vorher noch einmal mit Zufallsbytes

        9 Zusammenfassung

        bull Symmetrische Verschlusselungsverfahren

        ndash DES

        64 Bit Blockchiffre

        16 Runden Feistelnetzwerk mit 48 Bit Rundenschlusseln

        56 Bit Schlussellange plus 8 Paritatsbits

        XOR Transformationsfunktion mit S-Boxenndash IDEA

        64 Bit Blockchiffre

        8 Runden Feistelnetzwerk mit je 6 middot 16 Bit Rundenschlusseln

        128 Bit Schlussellange

        XOR ADD modulo 216 MULT modulo 216 + 1ndash Blowfish

        64 Bit Blockchiffre

        16 Runden Feistelnetzwerk

        32-448 Bit Schlussellange

        XOR Transformationsfunktion mit XOR CONCAT und viel Schlusselmaterialndash AES

        121

        128 192 256 Bit Blockchiffre

        10 12 14 Runden Feistelnetzwerk

        128 192 256 Bit Schlussellange

        Substitution ShiftRow MixColumn KeyAddition

        ndash RC4

        Stromchiffre

        10 12 14 Runden Feistelnetzwerk

        variabele Schlussellange bis 2048 Bit

        ndash RC5

        wahlbare Blockchiffre (openssl 32 Bit)

        wahlbare Runden Feistelnetzwerk (openssl 12)

        wahlbare Schlussellange (openssl 128 Bit)

        ndash GOST

        64 Bit Blockchiffre

        32 Runden Feistelnetzwerk

        256 Bit Schlussellange

        ADD ROT 8 S-Boxen

        bull Asymmetrische Verschlusselungsverfahren

        ndash RSA (Verschlusseln und Signieren)

        ndash Diffie-Hellmann Schlusselaustausch

        ndash ElGamal Crypto-System (basierend auf DH)

        ndash Rucksackverschlusseln (gebrochen)

        ndash Merkle Puzzle (viele Nachrichten)

        ndash Rabin Verfahren

        Zur Prufung erster Teil mit OpenSSL spielen zweiter Teil Konzepte eine Woche vor derPrufung evt fragen was dran kommen wird Prufungstermine 20072005 oder 04102005oder nach Vereinbarung

        10 Mathematische Techniken

        101 Multiplikatives Inverses

        (nach wwwtzide˜hsLehreU9 mathD1pdf)

        122

        1011 Behauptung

        Seien a b isin Z zwei teilerfremde ganze Zahlen dh ggT (a b) = 1 Dann existiert ein aprime isin Z mitaprime middot a equiv 1 mod b

        1012 Beweis

        Betrachte die Menge ak mod b|k isin N k ge 1 Da ggT (a b) = 1 gilt folgt dass ggT (ak b) = 1fur alle k isin N mit k ge 1 Denn da a teilerfremd zu b ist so gilt dies auch fur alle Potenzenvon a Daher ist die betrachtete Menge eine Untermenge der endlichen Menge x mod b|x isinZ ggT (x b) = 1 und daher selbst endlich Also kann existiert k1 k2 mit ak1 equiv ak2 mod bNehmen wir an k1 lt k2 und setzen n = k2 minus k1 dann gilt ak1 middot an = ak2 equiv ak1 mod bDaher folgern wir an equiv 1 mod b d h anminus1 middot a equiv 1 mod b Also setzen wir aprime = anminus1 und dieBehauptung ist erfullt

        102 Kleiner Fermatscher Satz

        1021 Behauptung

        Aus der Wikipedia (unter GNU Free Documentation License)

        Der kleine fermatsche Satz kurz der kleine Fermat ist ein Lehrsatz in der Zahlentheorie Ermacht eine Aussage uber die Eigenschaften von Primzahlen und wurde aufgestellt im 17 Jahr-hundert von Pierre de Fermat Dieser Satz beschreibt eine allgemein gultige Kongruenz

        ap equiv a mod p

        wobei a eine ganze Zahl und p eine Primzahl ist (die weitere Symbolik wird im Artikel Kon-gruenz beschrieben) Falls a kein Vielfaches von p ist kann man das Resultat in die haufigbenutzte Form

        apminus1 equiv 1 mod p

        bringen

        1022 Beweis

        Der Beweis beruht auf der Tatsache dass wenn zwei Zahlen a und b zueinander inkongruent(modulo einer festen Zahl n) sind auch die beiden Produkte x middot a und x middot b inkongruent modulon sind fur x gt 0 und ggT (x n) = 1

        Denn

        123

        sei a b mod n n eine Primzahl a b naturliche Zahlen Angenommen

        a middot x equiv b middot x mod n

        fur eine naturliche Zahl x mit ggT (x n) = 1 Dann gibt es eine naturliche Zahl k so dass

        a middot x minus b middot x = k middot n

        x middot (a minus b) = k middot n

        x = n middot (k(a minus b))

        Da n eine Primzahl und x eine naturliche Zahl ist ist k(a minus b) entweder eine naturliche Zahlminus1n oder 1n Die letzten beiden Falle widersprechen der Annahme dass a b mod n dererste Fall widerspricht der Annahme dass ggT (x n) = 1 Damit ist die Annahme falsch und esgilt fur x so dass ggT (x n) = 1

        a middot x b middot x mod n

        Aus der Wikipedia (unter GNU Free Documentation License)

        Im folgenden betrachtet man zum einen die Menge A aller Reste mod p - also alle naturlichenZahlen kleiner als p und zum anderen die Menge B die diese Reste multipliziert mit a enthaltZwei beliebige Zahlen aus A sind zueinander inkongruent modulo p Aus dem oberen Satzfolgt dass damit auch zwei beliebige Zahlen aus B zueinander inkongruent sind Dadurchergibt sich dass das Produkt uber alle Zahlen aus A kongruent zum Produkt aller Zahlen aus Bist

        1 middot 2 middot 3 middot middot middot middot middot (p minus 1) equiv (1 middot a) middot (2 middot a) middot middot middot middot middot ((p minus 1) middot a) mod p

        alsoW equiv W middot apminus1 mod p

        wobei W das Produkt 1 middot2 middot3 middot middot(pminus1) ist Da es in Restklassenkorpern stets ein multiplikativesInverses gibt kann man diese W dividieren und man erhalt

        apminus1 equiv 1 mod p

        1023 Verallgemeinerung

        Man kann den kleinen fermatschen Satz zum Satz von Euler verallgemeinern Fur zwei teiler-fremde Zahlen n und a gilt

        aϕ(n) equiv 1 mod n

        wobei ϕ(n) die Eulersche Phi-Funktion bezeichnet Diese hat als Ergebnis die Anzahl der Zah-len zwischen 1 und nminus1 welche teilerfremd zu n sind Ist n eine Primzahl so ist ϕ(n) = nminus1 sodass man Fermats kleinen Satz als Spezialfall erhalt Mit Hilfe des kleinen fermatschen Satzesentwickelte Fermat den fermatschen Primzahltest

        124

        1024 Praktische Anwendung auf Primzahlen

        (p - a a lt p a 0)Wenn gilt apminus1 1 mod p ist dann kann p keine Primzahl sein (Umkehrung muss nicht

        gelten) Wenn man mit a beiweisen kann das p keine Primzahl sein kann dann nennen wir aKanditat (Es gibt aber sogenannte Carmichaelzahlen die kein Kandidat ist)

        To do nacharbeiten Carmichaelzahlen

        Wenn (p minus 1) gerade ist pminus12 = k eine Ganzzahl

        Ist a2k equiv 1 mod p(ak)2 equiv p(ak minus 1)(ak + 1) equiv 0 mod pAlso wenn p eine Primzahl ist dann ist entweder ak equiv 1 mod p oder ak equiv 1 mod pDaraus folgt wenn ak 1 mod p und ak minus1 mod p dann ist p keine PrimzahlSomit gilt auch wenn k gerade ist und a

        k2 1 und a

        k2 minus1 dann ist p keine Primzahl

        Betrachten p minus 1 = 2t middot r (r ungerade) Sei a lt p und p - aIn ar a2r a22middotr a2t middotr = apminus1 (Reste mod p)Wenn die Folge nicht mit 1 endet ist p keine Primzahl Wenn vor der ersten 1 in der Folge

        keine 1 steht ist p keine PrimzahlWir nennen a einen Zeugen wenn man mit a beweisen kann das p keine Primzahl istJede Zahl p die keine Primzahl ist hat mindestens 3

        4 aller Zahlen a (mit ggT(a p) = 1) alsZeugen (Jeder Kandidat ist ein Zeuge)

        Damit ergibt sich der Rabin-Miller-Test Wahle zufallig ein a lt p und teste ob a ein Zeugeist Mit hoher (beliebig genauer) Wahrscheinlichkeit ist p Primzahl

        Bei groszligen Zahlen werden die Zeugen mehr

        openssl genrsa -out keyrsa 800

        Generating RSA private key 800 bit long modulus

        +++++++

        +++++++

        e is 65537 (0x10001)

        Generiert den Schlussel und speichert in rsquokeyrsarsquo Punkte Bedeutet keine kleine PrimzahlRabin-Miller Test schlagt fehl Plus ist ein erfolgreicher Rabin Miller Test bei groszligeren Zahlenbrauch man weniger Tests da es mehr Zeugen gibt

        []

        103 Chinesischer Restklassensatz

        (nach wwwtzide˜hsLehreU9 mathD1pdf)

        125

        1031 Behauptung

        Seien m1m2 mr paarweise teilerfremde ganze Zahlen d h ggT (mim j) = 1 fur alle i j(i j isin 1 2 r) und sei M = m1 middotm2 middotmr Dann existiert fur jede Liste a1 ar mit 0 le ai lt

        mi fur 1 le i le r genau ein x isin Z mit 0 le x lt M welches effizient berechnet werden kann undfur das gilt

        x equiv a1 mod m1

        x equiv a2 mod m2

        x equiv ar mod mr

        Bemerkung Es ist leicht einzusehen dass jedes xprime isin Z mit xprime = x + k middot M fur ein k isin Z d hxprime equiv x mod M genau dasselbe Gleichungssystem lost wie x Der Beweis wird zeigen dass furein gegebenes x nur xprime von dieser Form dasselbe Gleichungssystem losen konnen

        1032 Beweis

        Zunachst beweisen wir die Existenz und setzen dazu Mi = Mmi daher gilt ggT (Mimi) = 1Aus diesem Grund existiert auch ein multiplikatives Inverses Ni isin Z mit Mi middot Ni equiv 1 mod mi

        (vgl multiplikative Inverse) Zu beachten ist jedoch dass fur alle j isin 1 r mit i j stetsMi middot Ni equiv 0 mod m j gilt Nun definieren wir x via

        x equivrsum

        i=1

        ai middot Mi middot Ni mod M

        Fur jedes i existiert ein v isin Z so dass x sich folgendermaszligen darstellen lasst

        x = Mi middot Ni middot ai + v middot mi

        Dies gilt da jedes M j mit j i mi als Faktor enthalt Offensich erfullt x also die obigen Glei-chungen x ist das einzige mit 0 le x lt M welches fur die gegebene Liste a1 a2 ar alleGleichungen lost denn falls xprime und xprimeprime zwei verschiedene Losungen sind so gilt xprime minus xprimeprime equiv 0mod mi fur alle i isin 1 r d h xprimeminus xprimeprime ist ein Vielfaches aller mi und damit auch von M da nachVoraussetzung ggT (mim j) = 1 fur alle i j isin 1 r mit i j erfullt ist Somit folgt xprime equiv xprimeprime

        mod M d h 0 le xprime xprimeprime lt M kann nicht auftreten und der Beweis ist abgeschlossen

        126

        104 Square and multiply

        Der folgende rekursive Algorithmus berechnet xn fur naturliche Zahlen x und n indem sukzes-sive der Exponent reduziert wird

        bull Falls n = 1 xn = x

        bull Sonst falls n gerade xn = (x2)n2

        bull Sonst xn = x middot (x2)(nminus1)2

        Damit kann xn in O(ln(n)) Rechenschritten (quadrieren und multiplizieren) berechnet werdenindem in jedem Schritt des Algorithmus der Exponent halbiert wird und hochstens vier Berech-nungen ausgefuhrt werden

        105 Montgomery Reduktion (Moduloberechnung ohne Division)

        Heute was ganz verrucktes Modulo-Multiplikation ohne Division

        Problem bei RSA und anderen Algorithmenm Modul gegeben und g Zahl gegeben und man rechnet aus ga mod mAufwand der Berechnung mit Square and Multiply Groszlige des Exponenten in Bits Multiplika-tionen + gleichviele ModulooperationenBerechnung von x middot y mod m = x middot y minus (x middot y div m) lowast mDivision aufwendig Daher Methode dies ohne Division bzw mit einer schmerzfreien Divisiondurch eine Zweierpotenz zu tun Dafur Kosten von Hin- und RucktransformationenHier Skizze 1xrarr X = x middot r mod myrarr Y = y middot r mod mX lowast Y = X middot Y middot rminus1 = x middot y middot r mod m

        Wir berechnen t0 equiv minusmminus1 mod r (Preprocessing)

        1 x minusrarr X = x middot r mod m

        2 y minusrarr Y = y middot r mod m

        3 X lowast Y = X middot Y middot rminus1 mod m= x middot r middot y middot r middot rminus1 = x middot y middot r mod m

        Zur Bestimmung von X lowast Y t1 = X middot Y echte Multiplikationt2 = t1 middot t0 mod r Multiplikation untent3 = (t1 + t2 middot m) div r Multiplikation obent3 = X lowast Y oder (t3 minus m) = X lowast Y

        127

        1 t3 ist durch r teilbar

        2 t3 equiv X middot Y middot rminus1 mod m

        3 0 le t3 le 2m

        Zu 1 t1 + t2 middot mequiv t1 + t1 middot t0 middot m mod requiv t1 + t1 middot m middot (minusm)minus1 mod requiv t1 minus t1 equiv 0 mod r

        Zu 2 (t1+t2middotm)r = t3 mod m

        (t1 middot t2 middot m) middot rminus1 mod mequiv t1 middot rminus1 + t2 middot rminus1 middot mequiv X middot Y middot rminus1 mod m

        Beispiel 5 lowast 3 =

        t1 = 15t2 = 15 middot 23 mod r = 45t3 = 15 + 45 middot 13 = 6

        Zu 3t1 le (m minus 1)2

        t2 middot m lt r middot mt1 + t2 middot m lt 2 middot r middot m

        t3 lt 2 middot m

        t3 equiv X middot Y middot rminus1 mod mx lowast r2 = X = x middot r mod mX lowast 1 = x mod m

        Beispiel m = 13 r = 100 t0 = 23

        r mod m r = 9 mod 13r2 = 3 mod 13

        Ziel 6 middot 5 mod 13

        6 lowast 3 = 25 lowast 3 = 6

        128

        2 lowast 6 =

        t1 =

        t2 =

        t3 = xx

        x lowast 1 =

        Wenn eine Division langer als 1 5 Multiplikationen dauert dann lohnt sich das Verfahren DerErfinder heisst ubrigens Peter L Montgomery (Montgomery Reduktion) wwwmiinformatikuni-frankfurtdeteachingws0001krypto algomontgomerypdf

        Montgomery-Multiplikation

        To do siehe Mathematischer Anhangzusammenfugen

        Die Reduktion modulo m erfordert eine Division aber Divisionen sind rsquoteuerrsquo

        Dies kann man aber wie folgt vereinfachen

        Um die Division zu vermeiden rsquotransformiertrsquo man die Zahlen

        Sei gesucht das Produkt x middot y mod m

        x minusrarr X y minusrarr Y x middot y minusrarr X lowast Y

        R = (zweierPotenz) gt m und die Division durch R muss einfach sein

        X = x middot R mod m

        X lowast Y = X middot Y middot Rminus1 mod m (wobei die modulo Reduktion nun nicht mehr jedes mal ausgefuhrtwerden muss sonder nur am Anfang und am Ende der rsquoTransformationrsquo)

        1 Berechne mprime = minusmminus1 mod R

        (minusmR) = 1 rArr XGCD mprime middot m = minus1 mod R

        2 t = X middot Y (echte Multiplikation)

        3 t1 = t middotmprime mod R (echte Multiplikation und oben abschneiden also eine leichtere moduloReduktion da R eine zweier Potenz ist) (dabei gilt t2 lt m2 + R middot m)

        4 t2 = t + t1 middot m (echte Multiplikation und eine Addition) (dabei gilt t3 lt(m+R)middotR

        R = 2m)

        5 t3 = t2divR (also rsquounten abschneidenrsquo)

        6 Wenn t3 gt m dann t3 = t3 minus m

        129

        Nun ist t3 = X lowast Y Dafur muss t3 lt m sein oder in Schritt 6 t3 lt 2m sein

        Wir mussten also prufen

        1 t3 lt m

        2 Division in 5 rsquogeht aufrsquo

        t2 ist durch r teilbar

        t2 mod R equiv (t + t1 middot m) equiv t + (t middot mprime) middot m mod R equiv t + t(minus1) mod R equiv 0 mod R

        3 t3 = X lowast Y

        t3 middot R mod m equiv t2R middot R mod m equiv t2 equiv t + t1 middot m equiv t mod m equiv X middot Y mod m

        Wir haben also den folgenden Aufwand

        1 rsquoTransformationrsquo

        2 rsquoRechnungrsquo

        3 Zuruck rsquotransformierenrsquo

        x lowast R2 = x middot R2 middot Rminus1 mod m = x middot R = X mod m

        X lowast 1 = X middot 1 middot Rminus1 equiv x middot R middot Rminus1 equiv x mod m

        Man benotigt also zwei zusatzliche Operationen zur transformation Dafur kommt die Operationrsquorsquo ohne Divisionen aus

        Beispiel m = 17

        R = 100

        7 middot 11 mod 17

        x lowast y mod mdarr darr

        X Y= =

        (x middot R) mod m lowast (y middot R) mod m

        m1 = minusmminus1 mod 100

        suche also ein m1 mit m1 middot 17 = minus1 mod 100

        m1 = 47

        130

        To do Bsp Magma Quelltext siehe Homepage

        Bem dazu Wenn R groszlig genug ist kann man die Subtraktion von m weglassen

        Mathematischer Hintergrund (Zm+ middot)simminusrarr (Zm+ lowast) Was ist das Einselement und das

        Inverse

        106 Nochwas

        vielleicht

        zur Prufung Zwei Teile (ein theoretischer ein praktischer) Ein openssl-Kommando das in derVL nicht behandelt wurde wird drankommen (zum Beispiel speed ca etc) Theoretischer Teil

        1 symmetrische Verfahren (was sind symmetrische Verfahren wodurch charakterisiert)

        2 Integritatsschutz (wie kann man Integritatsschutz gewahrleisten)

        3 asymmetrische verfahren (siehe 1)

        4 Signatur (was sind Signaturen wofur verwendet man sie was ist ˜konzept was ist sicherwas ist unsicher)

        5 Vertrauensstruktur (zum Beispiel PGP)

        6 Client-Server-Authentisierung (SSL-Protokoll Kerberos)

        7 Sicherheitsparameter (wo sind die welchen Einfluszlig auf die Sicherheit haben sie)

        8 X509 (elektronische Identitat)

        9 RFC-Security (3280 3279 3446 )

        Mathematische Verfahren

        1 Square and Multiply Double and Add

        2 Euklidischer Algorithmus

        3 RSA DH

        4 DSA

        5 AES

        6 das eine oder andere symmetrische Verfahren Strom-Blockchiffre

        7 Elliptische Kurven eher nicht reicht zu wissen dass man mit Addition in EK das gleicheerreichen kann wie mit Multiplikation im Restklassenkorper

        8 kleiner Fermat eher nicht

        131

        9 Montgomery-Multiplikation vielleicht auch nicht sollte aber bekannt sein

        Fur MD5- AES- etc Grundfunktionen reicht evt wissen wo man nachschauen muss

        Dann nachweisen dass man mit Openssl spielen kann

        1 Verschlusseln mit DES3DESBFAES

        2 Prufsummenberechnung

        3 Konfigurationsfile

        4 RSA-Verschlusselung

        5 098 ndash 097 (dynamisch)

        6 Zertifikat

        7 DSA-Verschlusselung

        8 Passworter (passwd) und Salt

        9 E-Mail-Nachricht erstellen und sichern (SMIME-Anwendung)

        Zum Punkt Ich mochte eine 1 haben was muss ich dafur tun Was haben sie ausserhalb derVorlesung schonmal gelesen Was fehlte ihnen an der Vorlesung was fanden sie doof

        132

        • 1 Einfuumlhrung
          • 11 Verschluumlsselung
          • 12 Beispiel rot13
          • 13 Block-Chiffre
          • 14 Strom-Chiffre
          • 15 Angriffstypen
            • 151 Differentielle Kryptoanalysis
              • 16 Base64
                • 2 OpenSSL
                • 3 Symmetrische Verschluumlsselungsverfahren
                  • 31 Feistel-Chiffren
                  • 32 DES - Data Encryption Standard
                    • 321 Schluumlsselauswahl
                    • 322 Funktionsweise
                    • 323 Schwachstellen und Unsinnigkeiten
                    • 324 spezielle Optionen bei openssl
                    • 325 DESECB - Electronic Code Book
                    • 326 DESCBC - Cipher Block Chaining
                    • 327 DESOFB - Output Feed Back
                    • 328 DESCFB - Cipher Feed Back
                    • 329 CTR Mode CCM
                    • 3210 TEA-Algorithmus
                    • 3211 DES-X
                      • 33 IDEA International Data Encryption Algorithm
                        • 331 Schluumlsselauswahl
                        • 332 Funktionsweise
                        • 333 Pseudocode-multiplikation
                        • 334 Schwachstellen
                          • 34 Blowfish
                            • 341 Initialisierung
                            • 342 Verschluumlsselung
                              • 35 AES Advanced Encryption Standard
                                • 351 Wiederholung-Byteoperation
                                • 352 Uumlberblick
                                • 353 mathematische Grundlagen
                                  • 36 RC4 Rons Cipher 4
                                    • 361 Geschichte
                                    • 362 Beschreibung
                                    • 363 Der Pseudo-Zufalls-Algorithmus
                                    • 364 Der Schluumlsselerzeugungs-Algorithmus
                                    • 365 Implementation
                                    • 366 Sicherheit
                                    • 367 Fluhrer Mantin und Shamir Angriff
                                      • 37 RC5 Rons Cipher 5
                                        • 371 Verschluumlsselung
                                        • 372 Schluumlsselexpansion
                                          • 38 GOST 28147-89 Gosudarstvennyi Standard Soyuza SSR nicht in OpenSSL
                                          • 39 FazitWie koumlnnte bei einen Symmetrischen Algorithmus die Sicherheit erhoumlhen
                                            • 4 Asymmetrische Verschluumlsselungsverfahren
                                              • 41 Einfuumlhrung
                                                • 411 Beispiel
                                                  • 42 Geschichte
                                                  • 43 Einige Theoretische Grundlagen
                                                    • 431 Kleiner Fermat (oder kleiner Fermatscher Satz)
                                                    • 432 Euklidischer Algorithmus
                                                    • 433 Beispiel
                                                      • 44 RSA Rivest Shamir Adleman
                                                        • 441 Funktionsweise des RSA-Verfahrens
                                                        • 442 Beweis der Funktionsweise
                                                          • 45 Schwaumlchen von RSA
                                                          • 46 Fuktionen in OpenSSL
                                                            • 461 genrsa
                                                            • 462 rsa
                                                            • 463 rsautl
                                                            • 464 PKCS
                                                            • 465 OAEP - Optimal Asymmetric Encryption Padding
                                                            • 466 Wie erkennt man an Ciphertexten den Verschluumlsselungsalgorithmus- DER ASN1
                                                            • 467 Umgehen mit den Schluumlsselkomponenten
                                                              • 47 Miller-Rabin Test
                                                              • 48 Diffie-Hellman-Schluumlsselaustausch
                                                              • 49 ElGamal-Cryptosystem
                                                              • 410 Wiederholung DH
                                                                • 4101 Beispiel
                                                                  • 411 was anderes
                                                                  • 412 Elliptische Kurven
                                                                  • 413 Elliptische Kurven Nachtrag
                                                                  • 414 Rucksack-Verschluumlsseln
                                                                    • 4141 Beispiel
                                                                      • 415 Merkle Puzzle
                                                                      • 416 Rabin-Verfahren und Wurzelziehen
                                                                        • 4161 Schluumlsselgenerierung
                                                                        • 4162 Kongruenzbedingung
                                                                        • 4163 Verschluumlsselung
                                                                        • 4164 Entschluumlsselung
                                                                          • 417 Angriffe auf asymmetrische Verschluumlsselungsverfahren
                                                                            • 4171 1 Angriff Common modulus attack
                                                                            • 4172 2 Angriff kleiner geheimer Exponent d
                                                                            • 4173 3 Angriff Faktorisieren
                                                                            • 4174 Echt schlechte RSA-Schluumlssel
                                                                            • 4175 Schnelles Faktorisieren bei Fehler im System
                                                                            • 4176 Angriff mit gewaumlhltem Chiffretext
                                                                                • 5 Signaturmechanismen
                                                                                  • 51 Integritaumltsschutz und Hashfunktionen
                                                                                    • 511 Schluumlssellose Hashfunktion (Pruumlfsummen ohne Schluumlssel)
                                                                                    • 512 Demonstration Faumllschung
                                                                                      • 52 Unterschied MD5 und SHA
                                                                                      • 53 Secure Hash Standard SHA-2
                                                                                        • 531 Problem bei MD5 und SHA-0
                                                                                        • 532 MACs (Message Authentication Codes) (Pruumlfsummen mit Schluumlsseln)
                                                                                          • 54 Whirlpool
                                                                                          • 55 Zusammenfassung
                                                                                          • 56 Digitale Signaturen
                                                                                            • 561 RSA
                                                                                            • 562 Eigenschaften eines asymmetrischen Verschluumlsselungsverfahren
                                                                                            • 563 RSASSA-PSS-Padding
                                                                                            • 564 DSA
                                                                                            • 565 ECDSA - DSA mit Elliptischen Kurven
                                                                                              • 57 Widerrufen von Zertifikaten
                                                                                              • 58 Was es noch so gibt
                                                                                                • 581 blinde Signaturen
                                                                                                • 582 anonyme Signaturen
                                                                                                    • 6 Zertifikate
                                                                                                      • 603 X509
                                                                                                        • 604 Erweiterungen
                                                                                                        • 605 Erzeugung
                                                                                                        • 606 Guumlltigkeit
                                                                                                          • 61 Praktische Ausschlachtung von kryptografischen Algorithmen mit SMIME und PKCS7
                                                                                                          • 62 PKCS
                                                                                                            • 621 PKCS7 15 November 93 RFC 3852
                                                                                                              • 63 CMS(Cryptographic Message Syntax)
                                                                                                                • 7 Wichtige Neuerungen bei den Versionsaumlnderungen
                                                                                                                • 8 OpenSSL hintergehen
                                                                                                                  • 81 die eine Primzahl ganz klein erzeugen
                                                                                                                  • 82 beide Primzahlen nah beieinander
                                                                                                                  • 83 Vorschrift des BSI
                                                                                                                  • 84 Programmierung Zufallszahlenerzeugung und andere nette features
                                                                                                                    • 9 Zusammenfassung
                                                                                                                    • 10 Mathematische Techniken
                                                                                                                      • 101 Multiplikatives Inverses
                                                                                                                        • 1011 Behauptung
                                                                                                                        • 1012 Beweis
                                                                                                                          • 102 Kleiner Fermatscher Satz
                                                                                                                            • 1021 Behauptung
                                                                                                                            • 1022 Beweis
                                                                                                                            • 1023 Verallgemeinerung
                                                                                                                            • 1024 Praktische Anwendung auf Primzahlen
                                                                                                                              • 103 Chinesischer Restklassensatz
                                                                                                                                • 1031 Behauptung
                                                                                                                                • 1032 Beweis
                                                                                                                                  • 104 Square and multiply
                                                                                                                                  • 105 Montgomery Reduktion (Moduloberechnung ohne Division)
                                                                                                                                  • 106 Nochwas

          8 OpenSSL hintergehen 12081 die eine Primzahl ganz klein erzeugen 12082 beide Primzahlen nah beieinander 12083 Vorschrift des BSI 12084 Programmierung Zufallszahlenerzeugung und andere nette features 121

          9 Zusammenfassung 121

          10 Mathematische Techniken 122101 Multiplikatives Inverses 122

          1011 Behauptung 1231012 Beweis 123

          102 Kleiner Fermatscher Satz 1231021 Behauptung 1231022 Beweis 1231023 Verallgemeinerung 1241024 Praktische Anwendung auf Primzahlen 125

          103 Chinesischer Restklassensatz 1251031 Behauptung 1261032 Beweis 126

          104 Square and multiply 127105 Montgomery Reduktion (Moduloberechnung ohne Division) 127106 Nochwas 131

          1 Einfuhrung

          Literaturempfehlungen

          bull Alfred J Menezes Paul C van Oorschot Scott A Vanstone - Handbook of Applied Cryp-tography CRC Press 1996 ISBN 0849385237 httpwwwcacrmathuwaterloocahac

          bull John Viega Matt Messier Pravier Chandra - Network Security with OpenSSL OrsquoReilly2002 ISBN 059600270X

          bull Michael Welschenbach - Kryptographie in C und C++ Springer 2001 ISBN 3540420614

          bull Bruce Schneier - Applied Cryptography Wiley 2nd rev 1996 ISBN 3540420614

          Prufung 24 08 2009

          In der Vorlesung wird ofters der rsquoMagma Calculatorrsquo verwendet Dabei handelt es sich um dieOnline-Version eines Computer Algebra Systems (httpmagmamathsusydeduaucalc) Imfolgenden werden Berechnungen die mit Magma durchgefuhrt wurden mit rsquoMagmarsquo gekenn-zeichnet

          5

          Kryptographie ist einer der beiden Bestandteile der Kryptologie der andere ist Kryptoanalyse

          Kryptographie Entwurf von Sicherheitsalgorythmen die Daten vor Mitlesen und Verandernschutzen

          Kryptoanalyse Aktives Analysieren von kryptographischen Verfahren

          11 Verschlusselung

          Verschlusselung benotigt Menge von Schlusseln

          N - Algorithmus (zB DES) - c

          E

          6

          K

          N Menge der NachrichtenK Menge der Schlusselc Verschlusselte Nachricht

          foralln isin N k isin K c = E(n k) eindeutig

          exist Algorithmus D (decrypt) mit aus c = E(n k) folgt existkprime isin K mit n = D(c kprime)

          12 Beispiel rot13

          N = Alphabetn isin N

          c = n + 13 mod 26Dies ist kein Verschlusselungsalgorithmus da es nur einen Schlussel gibtc = n + k mod 26Dies ist ein Verschlusselungsalgorithmus da es eine Menge von Schlusseln gibt

          c = E(n k) = n + kn = D(c k) = c minus kE(n 13) = D(n 13)

          6

          Variante der Betrachtung kprime = 26 minus k rArr D(c kprime) = E(c kprime)Verschlusseln = Entschlusseln = Vorteil nur ein Algorithmus

          Berechnungk rarr kprime (vernunftig im allgemeinen Sinne)E middot D = IdC

          D middot E = IdN

          Man unterscheidet bei Verschlusselungsverfahren

          symmetrisch k hArr kprime kennt man einen Schlussel kennt man beide

          asymmetrisch k rArr kprime oder k lArr kprime aus dem einen Schlussel kann man denanderen nicht erfahren

          13 Block-Chiffre

          Ausdehnung der Verschlusselung von Alphabet auf Zeichenketten mi Die Originalnachrichtwird in Blocke zerlegt die gleich verschlusselt werden Zum Beispiel

          m = (m1m2m3 )

          k = (k1 k2 k3 )

          ci = mi oplus ki

          Aus der Wikipedia (unter GNU Free Documentation License)

          Symmetrische Verschlusselungsalgorithmen sind oft Blockverschlusselungsalgorithmen (auchBlockchiffre) Bevor sie Daten verschlusseln werden diese zunachst in Blocke unterteilt de-ren Groszlige durch den Algorithmus vorgegeben ist Die Verschlusselungsroutinen setzen jedochganze Blocke voraus somit muss meistens der letzte Block mit Zufallsdaten aufgefullt werden(bei einer Blockgroszlige von 128 Bit werden die verschlusselten Daten somit 0 bis 127 Bit groszligerals der Klartext)Die Blocke werden anschlieszligend nacheinander verschlusselt Dabei ist es durchaus ublich dassdas Ergebnis der Verschlusselung eines Blocks bei der Verschlusselung des nachsten Blocksals Eingangswert mitverwendet wirdWichtige Parameter einer Blockchiffre sind somit die Blocklange (auch Blockgroszlige) und dieSchlussellange

          7

          14 Strom-Chiffre

          Aus der Wikipedia (unter GNU Free Documentation License)

          Eine Strom-Chiffre ver- bzw entschlusselt Nachrichten Bit fur Bit bzw Zeichen fur ZeichenDies steht im Gegensatz zu Block-Chiffren wo Nachrichten immer in gleich groszligen Blockenverarbeitet werden

          Strom-Chiffren sind symmetrische Verschlusselungsalgorithmen die sehr schnell arbei-ten

          Zur Generierung eines Geheimtextes wird zunachst ein Schlusselstrom erzeugt DieserSchlusselstrom ist eine Folge von Zeichen die nur mit Kenntnis des geheimen Schlussels er-zeugt werden kann (in der Regel eine Pseudozufallsfolge) Danach wird jedes Zeichen desSchlusselstroms mit einem Zeichen des Klartextes verknupft Die Verknupfungsoperation istXOR Um Geheimtexte wieder zu entschlusseln wird der Geheimtext mit dem Schlusselstromverknupft

          Beispiele fur Strom-Chiffren sind die XOR-Verschlusselung oder die Entwicklung vonRonald L Rivest namens RC4

          15 Angriffstypen

          m Nachrichtc verschlusselte Nachrichtk Schlussel

          Kommunikation zwischen Alice und Bob mit Angreifer Eve Vorraussetzung Eve kennt dasVerfahren

          1 Chiffre ist bekannt(ciphertext only Chiffre allein Angriff)m k gesucht

          2 (mi ci)-Paare sind bekannt ci = E(kmi)(known plain text bekannter Klartext Angriff)gesucht k und weitere mi

          3 wahlbarer Klartext chosen plaintext(zB Eve hat Encoder in die Hande bekommen)

          4 wahlbarer Chiffretext chosen ciphertext(zB Eve hat Decoder in die Hande bekommen)

          Generelle Schutzmechanismen zum sicherer machen

          8

          1 Klartextbits breit auf Chiffre verteilen und Schlusselbits uberall einbringen um die Si-cherheit zu erhohen bzw einen anderen Algorithmus verwenden um dies zu erreichen

          2 Algorithmus skalieren Lange des Schlussels mehr Runden

          3 Schwachen zusatzlichen Schutz bietet doppeltes verschlusseln zum BeispielAlgorithmus hat 64-Bit Sicherheit (Brute Force Angriff Aufwand von 264) doppelt ver-schlusselt hat er 65-Bit Sicherheit wegen

          rdquomeet in the middle Angriffldquo Ist known plain text attack m ist der Klartext k der Schlusselfur den ersten Algorithmus n der daraus resultierende ldquoZwischentextrdquo l der Schlussel furden zweiten Algorithmus und c die endgultige verschlusselte Nachricht Der Angreiferinist ein m und das dazu gehorige c bekannt Sie erzeugt sich nun alle Werte die k an-nehmen kann und alle Werte die l annehmen kann und berechnet zu jedem ki sowie zujedem li ein ni als E(kim) bzw D(li c) Damit muss sie 2 lowast 264 Paare von Schlusselnund ldquoZwischentextenrdquo erzeugen und speichern In der Menge der ni gibt es nun (da beideVerschlusselungen eindeutig sind) genau zwei - eines als Entschlusselung von c eines alsVerschlusselung von m - die ubereinstimmen Deren Schlussel sind diejenigen die auchbei der Erzeugung von c verwendet wurden Das Auffinden dieses Paares kann durch ge-schickte Speicherung der ni ki und li zum Beispiel in einer Hashtabelle in logarithmischerZeit bewerkstelligt werdenDaher Sicherheit des Algorithmus ist mindestens so stark wie jeder einzelne Algorithmusaber moglicherweise nicht viel besser

          4 Dreifach verschlusseln und Kombination von AlgorithmenDer Meet-in-the-middle attack schlagt hier fehl da der Speicher- und Rechenaufwandnun quadratisch mit dem Werteraum der Schlussel wachst Bei der Verwendung einesschwachen Algorithmus der anderweitig gebrochen werden kann wird die Kombinationjedoch wieder anfallig fur meet-in-the-middle

          5 Block-Chiffre + Strom-Chiffre kombinierenStrom-Chiffre sehr langer Schlussel c = p oplus k k zufallig gewahlt (moglichst echter phy-sikalischer Zufall) zwei Folgen CK rarr in Block-Chiffrerarr Blockweise C2 = E(S 1K)C1 = E(S 2C)Eine Strom-Chiffre und zwei Block-Chiffren Brechen dieser Kombination = Aufwandaddiert sich aber doppelte Ausgabelange

          151 Differentielle Kryptoanalysis

          man wahle Klartexte P1 P2 mit ganz bestimmten Unterschied P1 oplus P2 = D Bei der Ver-schlusselung ergibt sich dann fur die Chiffretexte C1C2 mit bestimmten Dprime = C1 oplus C2 das ineinen bestimmetn Zusammenhang zu D steht

          Bleiben die Schlussel immer gleich so kann man sich langsam mit D1 Dn an den Klartextranprobieren ()

          9

          16 Base64

          Aus der Wikipedia (unter GNU Free Documentation License)

          Base64 [] beschreibt ein Verfahren zur Kodierung von 8-Bit-Binardaten (z B ausfuhrbareProgramme ZIP-Dateien) in eine Zeichenfolge die nur aus wenigen Codepage-unabhangigenASCII-Zeichen besteht Im Zusammenhang mit OpenPGP wird noch eine Prufsumme (CRC-24) angehangt und es als Radix-64 bezeichnet

          Es findet im Internet-Standard MIME (Multipurpose Internet Mail Extensions) Anwen-dung und wird damit hauptsachlich zum Versenden von E-Mail-Anhangen verwendet Notigist dies um den problemlosen Transport von beliebigen Binardaten zu gewahrleisten da SMTPin seiner ursprunglichen Fassung nur fur den Versand von 7-Bit ASCII-Zeichen ausgelegt war

          Zur Kodierung werden die Zeichen A-Z a-z 0-9 + und verwendet sowie = am EndeDa diese Zeichen auch in EBCDIC vorkommen (wenn auch an anderen Code-Positionen) istdamit auch ein Datenaustausch zwischen nicht-ASCII-Plattformen moglich

          Zur Kodierung werden jeweils drei Byte des Bytestroms (=24 bit) in vier 6-bit-Blockeaufgeteilt Jeder dieser 6-bit-Blocke bildet eine Zahl zwischen 0 und 63 Diese Zahlen werdenan Hand der nachfolgenden Umsetzungstabelle in ldquodruckbare ASCII-Zeichenrdquo umgewandeltund ausgegeben Nach jeweils 76 ausgegebenen Zeichen wird spatestens ein Zeilenumbrucheingefugt welcher jedoch ansonsten fur die Kodierung nicht von Belang ist

          Falls die Gesamtanzahl der Eingabebytes nicht durch drei teilbar ist wird der zu kodieren-de Text am Ende mit Fullbytes aufgefullt Um dem Dekodierer mitzuteilen wie viele Fullbytesangefugt wurden werden die 6-Bit-Blocke die vollstandig aus Fullbytes entstanden sind mitrsquo=rsquo kodiert Somit konnen am Ende einer Base64-kodierten Datei 0 1 oder 2 rsquo=rsquo-Zeichenauftreten

          Die angesprochene Transitionstabelle ist eine alphabetisch bzw numerisch aufsteigende Anord-nung zuerst der Groszligbuchstaben dann der Kleinbuchstaben schlieszliglich der Ziffern und am Endeder beiden Zeichen rsquo+rsquo und rsquorsquo in dieser Reihenfolge

          2 OpenSSL

          Optionen fur openssl ciphername oder openssl enc -ciphername

          OPTIONS

          -in filename

          the input filename standard input by default

          -out filename

          the output filename standard output by default

          10

          -pass arg

          the password source

          -salt

          use a salt in the key derivation routines

          -nosalt

          donrsquot use a salt in the key derivation routines

          -e

          encrypt the input data this is the default

          -d

          decrypt the input data

          -a

          base64 process the data This means that if encryption is

          taking place the data is base64 encoded after encryption

          If decryption is set then the input data is base64 decoded

          before being decrypted

          -A

          if the -a option is set then base64 process the data on

          one line

          -k password

          the password to derive the key from This is for

          compatibility with previous versions of OpenSSL Superseded

          by the -pass argument

          -kfile filename

          read the password to derive the key from the first line

          of filename This is for compatibility with previous

          versions of OpenSSL Superseded by the -pass argument

          -S salt

          the actual salt to use this must be represented as a

          string comprised only of hex digits

          -K key

          the actual key to use this must be represented as a string

          comprised only of hex digits If only the key is specified

          the IV must additionally specified using the -iv option

          11

          When both a key and a password are specified the key given

          with the -K option will be used and the IV generated from

          the password will be taken It probably does not make much

          sense to specify both key and password

          -iv IV

          the actual IV to use this must be represented as a string

          comprised only of hex digits When only the key is specified

          using the -K option the IV must explicitly be defined When

          a password is being specified using one of the other options

          the IV is generated from this password

          -p

          print out the key and IV used

          -P

          print out the key and IV used then immediately exit donrsquot

          do any encryption or decryption

          -bufsize number

          set the buffer size for IO

          -nopad

          disable standard block padding

          -debug

          3 Symmetrische Verschlusselungsverfahren

          31 Feistel-Chiffren

          Aus der Wikipedia (unter GNU Free Documentation License)

          Feistel-Chiffre (auch als Feistelnetzwerk bezeichnet) ist eine Block-Chiffre Ein Mitarbeitervon IBM Horst Feistel gilt als der Erfinder dieser Chiffre Er arbeitete mit anderen am sogProjekt rdquoLuciferldquo dessen Ziel es war eine effiziente Verschlusselungstechnologie zu entwi-ckeln Die Feistel-Chiffre war spater dann die Grundlage fur den DES-Algorithmus

          Viele moderne symmetrische Verschlusselungsalgorithmen basieren auf Feistelnetzwer-ken Dies ruhrt ua auch daher dass die Struktur von sehr vielen Kryptografen analysiert undfur gut befunden wurde

          12

          Wie es der Name rdquoBlock-Chiffreldquo schon nahe legt wird der Klartext zuerst in einzelneBlocke zerlegt Die Groszlige dieser Blocke kann frei gewahlt werden ublich sind oftmals Vielfa-che von 64 Bit

          Jeder dieser Blocke wird danach in zwei gleichgroszlige Halften (L0 und R0) geteilt und inmehreren Runden mit verschiedenen Schlusseln verschlusselt Nach den Runden werden dieHalften wieder zusammen gesetzt

          Innerhalb der i-ten Runde (i ist die Nummer der aktuellen Runde und reicht von 1 bis n)wird folgende Formel angewendet

          Li = Riminus1

          Ri = Liminus1 oplus f (Riminus1Ki)

          Dabei bildet f die sog Runden- oder Transformationsfunktion und Ki ist der jeweilige Runden-schlussel Der verschlusselte Text am Ende der Runden ist die Zusammenfuhrung von (LnRn)

          Feistelnetzwerke ermoglichen eine Entschlusselung ohne dass die Umkehrfunktion von fbenotigt wird Will man einen Geheimtext dechiffrieren wendet man die obige Formel leichtmodifiziert an

          Riminus1 = Li

          Liminus1 = Ri oplus f (Riminus1Ki)

          13

          (Quelle httpenwikipediaorgwikiImageFeistelpng)

          32 DES - Data Encryption Standard

          DES ist eine 64 Bit Block-Chiffre mit einer festgelegten Schlussellange von 56 Bit Die Funk-tionsweise entspricht einem 16-Runden Feistel-Netzwerk DES ist der erste Verschlusselungs-Algorithmus der weite Verbreitung fand und dessen Spezifikation offentlich zuganglich ist Erwurde in den 70er Jahren entwickelt und ist im amerikanischen Standard FIPS 46-2 beschrieben

          14

          321 Schlusselauswahl

          Zunachst steht nominal ein 64-Bit Schlussel zur Verfugung Von diesem ist jedoch je ein Bit proByte als Paritatsbit deklariert so dass 56 Bit effektives Schlusselmaterial ubrigbleiben Diese 56Bit werden in 2 mal 28 Bit aufgeteilt die in jeder der 16 Runden um 1 oder 2 Bit rotiert werdeninsgesamt um 28 Bit so dass am Ende wieder das Original vorliegt Aus der Konkatenation derbeiden Halften wird in jeder Runde ein 48-Bit Rundenschlussel ausgewahlt

          (Quelle httpenwikipediaorgwikiImageDES-key-schedulepng)

          15

          322 Funktionsweise

          Die so gewonnenen Rundenschlussel ki werden fur die Runden der Feistelchiffre genutzt E(k1 k2 k16m) =

          cE(k16 k15 k1 c) = mD(k1 k2 k16 c) = E(k16 k15 k1 c) = mJeder 64 Bit Eingabe-Block wird in zwei 32 Bit Blocke (L und R) aufgeteilt und weiterverarbei-tet L und R werden in jeder Runde durch eine festgelegte Permutation E auf 48 Bit ausgedehntanschlieszligend mit dem Rundenschlussel verknupft mittels einer weiteren rundenspezifischenPermutation S wieder auf 32 Bit komprimiert und dann schlieszliglich noch einer weiteren festge-legten Permutation P unterzogenLi = Riminus1Ri = Liminus1 oplus f (Riminus1Ki) wobei f (Riminus1Ki) = P(S (E(Riminus1) oplus Ki))

          rechts Feistelstruktur (Quelle httpenwikipediaorgwikiImageDES-main-networkpng)

          links F Funktion (Quelle httpenwikipediaorgwikiImageDES-f-functionpng)

          16

          (Quelle httpdewikipediaorgwikiBildDES_resizepng)

          323 Schwachstellen und Unsinnigkeiten

          bull Die Anfangliche Permutation der Klartexteingabe sollte Softwareimplementation erschwe-ren Per Hardware ist diese sehr einfach universell verwendbare Rechner hatten in den70er Jahren jedoch noch Probleme mit so etwas

          bull Das Paritatsbit ist eine Schwachstelle da es - soweit es gesetzt ist - ein Durchmustern desSpeichers nach dem Schlussel erlaubt Gesucht wird dann nach dem relativ ungewohn-lichen Auftreten von 8 nahe bei einander liegenden Byte bei denen je das letzte Bit dieParitat angibt

          17

          bull Mit heutigen Rechnern ist es moglich einen 56-Bit Schlussel mittels brute force zu knackenDie Lange des Schlussels ist bei DES aber auf diesen Wert festgelegt

          bull Es wird vermutet dass die ldquomagischenrdquo S-Permutationen uber deren Qualitat nichts be-wiesen ist eine Hintertur darstellen da die NSA hierbei ihre Finger im Spiel hatte Eskonnte jedoch nie bewiesen werden

          324 spezielle Optionen bei openssl

          bull Option -nopad Schaltet Auffullung der letzten Bits zu Block von 64 Bits aus Auch wenndie Nachricht genau in 64 Bit Blocken einteilbar ist wird ein 64 Bit Padding Block an-gehangtDer Block besteht aus x mal der Zahl x So lasst er sich beim Entschlusseln wieder entfer-nen

          bull Option -nosalt Schaltet die Voranstellung des salt-Werts ausDer salt-Wert verlangert die Nachricht um insgesamt 16 Bytes Salted__ gefolgt von 8Bytes salt-WertAus Passwort und salt-Wert wird der Key fur die eigentliche Verschlusselung erzeugt Da-mit wird verhindert dass Schlussel wegen Mehrfachverwendung von Passwortern leich-ter zu brechen sind Gleiche Passworter beim Aufruf der Verschlusselung mit OpenSSLfuhren durch den zufalligen salt-Wert zu verschiedenen Keys bei der Verschlusselung

          bull Neben des gibt es auch des-ede und des-ede3 Diese bieten einen gewissen Schutzgegen Bruteforce-AngriffeTDES (Triple DES) DES3 DES-EDE (Encrypt Decrypt Encrypt) mit effektiv 168 Bit

          E3DES(k1 k2 k3m) = EDES(k3DDES(k2 EDES(k1m)))

          In OpenSSL arbeitet des-ede mit zwei Schlusseln

          E(K1)D(K2) E(K1)

          Um in OpenSSL 3 Schlussel angeben zu konnen muss man des-ede3 verwenden Ver-wendet man bei des-ede zweimal oder bei des-ede3 dreimal den selben Schlusselerhalt man eine einfache DES-Verschlusselung So kann man Abwartskompatibilitat er-reichen

          bull In OpenSSL konnen DES Verschlusselungen mit folgenden Befehlen aufgerufen werden

          ndash -desndash -des-cbcndash -des-cfbndash -des-ecbndash -des-edendash -des-ede-cbc

          18

          ndash -des-ede-cfbndash -des-ede-ofbndash -des-ede3ndash -des-ede3-cbcndash -des-ede3-cfbndash -des-ede3-ofbndash -des-ofbndash -des3ndash -desxndash -desx-cbc

          OpenSSL des-ecb -salt fur den Schlusseleintrag aus Passphrasepassphrase = 12345prime +prime S alt minusWert rarr K

          12345srarr

          264 Moglichkeiten

          Damit man keine Tabelle generieren kann die aus den schwachen Schlussel besteht denn fur12345 gibt es 264 Moglichkeiten aufgrund des salts

          (PC12345)(PC1234)

          P- (Klartext) bekanntS- (Saltwert) bekanntC- (Chiffretext) unbekanntwelcher Schlussel wurde verwendet

          112123

          1234

          rarr K

          s1 s2 s3c1 c1 c1c12 c12 c12c123 c123 c123c1234 c1234 c1234

          Dazu kommt aber spater noch mehr

          19

          325 DESECB - Electronic Code Book

          Die Eingabe wird in Blocke aufgeteilt und jeder Block fur sich verschlusselt Dieses Verfahrenist potentiell unsicher weil in der Abfolge der Blocke eine Struktur enthalten ist die der Algo-rithmus nicht verbirgt Ein Fehler beim Ver- oder Entschlusseln eines Blockes fuhrt allerdingsauch nur zu einem einzigen verlorenen Block

          To do Initialisierungsvektor

          (Quelle httpenwikipediaorgwikiImageEcb_encryptionpng)

          (Quelle httpenwikipediaorgwikiImageEcb_decryptionpng)

          BemReicht fur einen Block dann wird auch kein Initialisierungsvektor benotigt

          20

          Man kann fur den Initialisierungsvektor auch einen vorher vereinbarten Wert (zB Unix Sekun-den) wahlen

          Aus der Wikipedia (unter GNU Free Documentation License)

          Die 64-bit Klartextblocke werden nacheinander und getrennt voneinander kontextfrei ver-schlusselt Dies ist die einfachste Anwendungsmoglichkeit eines Block-Chiffre

          326 DESCBC - Cipher Block Chaining

          Aus der Wikipedia (unter GNU Free Documentation License)

          Vor der Verschlusselung eines Klartextblockes wird der bereits verschlusselte vorhergehendeBlock hinzuaddiert Auf den ersten Klartextblock der ja keinen Vorganger besitzt wird stattdessen ein Initialisierungsvektor der geheim gehalten werden muss addiert Dadurch entstehteine Verkettung (engl chain) der Blocke Trotz dieser Verkettung ist die CBC-Verschlusselung

          rdquoselbstkorrigierendldquo FehlerManipulationen in einem Block wirken sich bei der Entschlusse-lung nur auf den fehlerhaftenmanipulierten und den nachsten Block ausMan kann relativ einfach beliebige Blocke des Geheimtextes einzeln entschlusseln da zusatz-lich zum Schlussel nur der vorhergehende (verschlusselte) Block benotigt wird

          Fehler im c breiten sich nicht aus beim Entschlusseln Ein Initialisierungsvektor IV fur erstenBlock wird benotigt

          bull Klartext oplus Cipher und dann Encryption

          bull Vorteil Muster im Klartext werden zerstort

          bull Nachteil Fehler im Ciphertext eines Blocks verandern Bits an genau der Stelle im folgen-den Block (aber nur in diesem spatere Blocke sind nicht betroffen) so kann gezielt eineStelle im Block angegriffen werden (siehe Skizze)

          To do Skizze zur Fehlerausbreitung erlautern

          21

          m1 mlowast2 mlowast3

          IV oplus

          oplus

          oplus

          oplus

          DES

          DES

          DES

          DES

          c1

          DDc2

          DDc3

          DDc4

          EE

          Vergleich DESECB und DESCBC

          Zum Vergleich bietet es sich an ein Bild (Abbildung 1) mit DES im ECB- und im CBC-Moduszu verschlusseln Deutlich zu erkennen ist dass die Struktur im ECB-Modus (Abbildung 2)erhalten bleibt wahrend sie bei CBC (Abbildung 3) vollkommen zerstort wird

          Abbildung 1 Bild im Klartext (24 Bit RGB mit 182 times 183 Pixeln)

          Abbildung 2 Bild aus Abbildung 1 ECB-verschlusselt

          22

          Abbildung 3 Bild aus Abbildung 1 CBC-verschlusselt

          327 DESOFB - Output Feed Back

          Aus der Wikipedia (unter GNU Free Documentation License)

          In diesem Modus werden die Klartextblocke nicht direkt mit DES verschlusselt sondern DESerzeugt einen pseudozufalligen Bitstrom der dann ohne Ubertrag (vgl XOR) auf den Klartextaddiert wird Dazu muss DES mit einem kontinuierlichen Eingabestrom gefuttert werden AlsEingabe von DES dient hier ein Schieberegister dass zunachst mit einem Initialisierungsvektorgeladen wird Anschlieszligend wird immer ein Teil der Ausgabe von DES in dieses Registerhineingeschoben und so als Eingabe wiederverwendet (daher output feedback)

          bull Output der Encrpytion als Input fur Encryption erzeugt Pseudozufallsstrom oplus Klartext

          bull Vorteil Beliebige Blockgroszligen moglich wie Stromchiffre verwendbar

          bull Nachteil Durchsatz verringert sich auf neue Blockgroszlige pro erzeugtem Block kann abervorberechnet werden

          bull Vorteil Ein Bit Fehler fuhrt zu nur einem invertierten Bit nach der Entschlusselung

          bull Nachteil Keine Selbstsynchronisierung moglich wenn Bits komplett verloren gehen

          23

          (Quelle httpdewikipediaorgwikiBildOfb_encryptionpng)

          (Quelle httpdewikipediaorgwikiBildOfb_decryptionpng)

          328 DESCFB - Cipher Feed Back

          Aus der Wikipedia (unter GNU Free Documentation License)

          Identisch mit OFB aber statt die Ausgabe des DES wieder als Eingabe zu verwenden wirdder Kryptotextstrom als Eingabe wiederverwendet

          bull Cipher als Input fur Encryption erzeugt Pseudozufallsstrom oplus Klartext

          24

          bull Vorteil Beliebige Blockgroszligen moglich wie Stromchiffre verwendbar

          bull Nachteil Durchsatz verringert sich auf neue Blockgroszlige pro erzeugtem Block

          (Quelle httpdewikipediaorgwikiBildCfb_encryptionpng)

          (Quelle httpdewikipediaorgwikiBildCfb_decryptionpng)

          329 CTR Mode CCM

          Dieser Modus spielt fur DES keine Rolle Ist auch nicht in OpenSSL implementiert Aber die-se Betriebsart ist fur 128 Bit Verschlusselungen ist zum Beispiel vom BSI als sicher eingestuftworden rsquoDie Betriebsart der Zukunftrsquo

          Wird zum Beispiel fur W-LAN Verschlusselung verwendet

          25

          Eingabe sind Klartext mit einen Zahler

          ctr0 rarr Block rarr oplusT rarr c0ctr1 rarr Block rarr oplusp1 rarr c1ctr2 rarr Block rarr oplusp2 rarr c2ctr3 rarr Block rarr oplusp3 rarr c3

          ctrn rarr Block rarr opluspn rarr cn

          Standardisiert als rsquoSP 800-38crsquo

          (N A P) mit N Zufallswerten A Assoziierte Daten P Klartext produziert Blocke B0 B1 Br

          httpcsrcnistgovpublicationsnistpubs800-38CSP800-38C_updated-July20_

          2007pdf

          To do algorithmus uberarbeiten ubersetzen

          1 Apply the formatting function to (N A P) to produce the blocks B0 B1 Br

          2 Set Y0 = CIPHK(B0)

          3 For i = 1 to r do Yi = CIPHK(Bi oplus Yiminus1)

          4 Set T = MS BTlen(Yr)

          5 Apply the counter generation function to generate the counter blocks Ctr0Ctr1 Ctrmwhere m = dPlen128e

          6 For j = 0 to m do S j = CIPHK(Ctr j)

          7 Set S = S 1||S 2|| ||S m

          8 Return C =(P oplus MS BPlen(S )

          )||(T oplus MS BTlen(S 0)

          )

          T stellt einen Prufwert dar

          3210 TEA-Algorithmus

          To do uberarbeiten

          26

          Nicht in OpenSSL implementiert Universitarer Algorithmus

          (Quelle httpdewikipediaorgwikiBildTEA_InfoBox_Diagrampng)

          Man sieht die Feistel Idee allerdings die grunen Quadrate sind Additionen modulo 64 Bit

          To do erlautern Pfeilspitzen

          Es gibt ein Extended TEA struktur recht ahnlich aber beim Algorithmus an der Stelle

          Byte 0 28 minus 1 | 28ii

          b middot k = (b middot k mod (28 + 1)) mod 28 Es gibt auch eine Inverseb middot K rarr c rarr c middot kprime = b

          geht nur bei 22 + 1 24 + 1 28 + 1 216 + 1

          27

          3211 DES-X

          In OpenSSL desx KK1K2

          EncK(m oplus K2) oplus K1 = DES minus X(m)

          c1 oplus c2 = EncK(m1 oplus K2) oplus EncK(m2 oplus K2)

          Ist unsymetrisch Hat sich nicht so ganz durchgesetzt

          33 IDEA International Data Encryption Algorithm

          IDEA gilt als sehr sicher ist schneller als DES bei Hardwareimplementation tauchte zuerst alsPES auf Unterschied PES und IPES ist die untere XOR-Vertauschung (siehe Wikipedia Skiz-ze) die es im PES nicht gab War nur zur privaten Nutzung frei ansonsten patentiert weshalber nicht so verbreitet war IDEA verschlusselt 64-Bit Eingabe-Blocke in 64-Bit Ausgabe-Blockeund verwendet dabei einen 128-Bit Schlussel Der Algorithmus basiert im wesentlichen auf 8identischen Runden die den Runden einer Feistel-Chiffre ahnlich sind und einer abschlieszligendenTransformation der Ausgabe In jeder Runde werden 6 16-Bit Subschlussel in der Ausgaben-Transformation weitere 4 davon verwendet Samtliche Subschlussel werden aus dem Original-schlussel berechnet Die 64 Bit Eingabe jeder Runde werden dabei als 4 16-Bit-Blocke verar-beitet Der Algorithmus benutzt verschiedene algebraische Operationen

          bull Polynomaddition mod 2 XOR (blau-verbraucht wenig Strom)

          bull Addition mod 216 ADD (grun-verbraucht wenig Strom etwas Zeit - Uberlauf wirdignoriert)

          bull Multiplikation mod 216︸︷︷︸prim

          +1 MULT (rot-viel Strom)

          Aus der Wikipedia (unter GNU Free Documentation License)

          Der IDEA-Algorithmus (International Data Encryption Algorithm) wurde 1990 als ein Ge-meinschaftsprojekt zwischen der ETH Zurich von James L Massey und Xueija Lai und derAscom Systec AG entwickelt IDEA ist ein symmetrischer Algorithmus und gehort zu denBlockchiffren Der Algorithmus benutzt einen 128-Bit langen Schlussel (DES nur 64 Bit da-von sind 8 Bits fur den Paritats-Check vorgesehen so dass die eigentliche Schlussellange nur56 Bits betragt)

          Bei der Verschlusselung wird der Klartext in 64 Bit groszlige Blocke unterteilt und derSchlussel in Teilstucke zu je 16 Bit zerlegt Die Verschlusselung geschieht durch Kombina-

          28

          tion der logischen Operation XOR der Addition modulo 216 und der Multiplikation modulo216+1 Die Kombination dieser drei Operationen aus unterschiedlichen algebraischen Gruppensoll ein hohes Maszlig an Sicherheit gewahrleisten

          Das Verfahren ist dazu optimiert Angriffen durch differentielle Kryptoanalyse zu wider-stehen

          Es gibt bei IDEA leider eine ganze Reihe von schwachen Schlusseln die sich in zweiKlassen einteilen lassen Die erste Klasse umfasst 232 schwache Schlussel Sie sind insofernschwach als man sie mit gewahltem Klartext nachweisen kann Danach ist ein Brute ForceAngriff selbst fur Privatpersonen mit alteren PCs machbar Die zweite Klasse umfasst sogar265 schwache Schlussel Bei diesen Schlusseln kann man mit nur 20 gewahlten Klartexten72 Bit des Schlussels ermitteln Die restlichen 56 Bit muss man mit Brute Force ermittelnAllerdings liegt die Wahrscheinlichkeit dafur einen schwachen Schlussel zu erwischen bei einszu 263 oder eins zu 9 Trillionen

          Weil die Ascom Systec AG an der Entwicklung des Algorithmus beteiligt war halt siedie Patente fur IDEA In Europa verfallt der Patentschutz am 16052011 In den USA wirdder Algorithmus bereits ein Jahr fruher kostenlos nutzbar sein Da das Patent in der Schweizerteilt wurde greift das Patent auch in Deutschland unabhangig davon dass in DeutschlandSoftwarepatente nicht legal sind

          Der Algorithmus beruht wesentlich darauf dass 216 + 1 eine Primzahl ist Deshalb lasst sichIDEA nicht auf andere Blocklaengen adaptieren

          331 Schlusselauswahl

          Aus den 128 Bit des ursprunglichen Schlussels werden in insgesamt 52 16-Bit Teilschlussel er-zeugt Dabei werden aus dem aktuellen Schlusselwert (initial der ursprungliche 128-Bit Schlussel)8 der Teilschlussel durch aufteilen gewonnen Dann wird der aktuelle Schlussel subsequent um25 Bit nach links rotiert und so je ein neuer aktueller Schlussel erzeugt der wieder zu Teil-schlusseln aufgeteilt wird - solange bis alle Teilschlussel belegt sind Es werden 6 middot 16-Bit ineiner Runde verbraucht in 8 Runden also 48 Teilschlussel Hinzu kommen 4 Teilschlussel dienach der letzten Runde fur weitere Operation verwendet werden Insgesamt werden also 52Teilschlussel mit je 16-Bit aus 128-Bit Rohschlussel erzeugt und auch verbraucht rarr 832-BitSchlusselmaterial

          332 Funktionsweise

          In jeder Runde r finden folgende Transformationen statt

          1 X1 = X1 MULT Kr1 X4 = X4 MULT Kr

          4 X2 = X2 ADD Kr2 X3 = X3 ADD Kr

          3

          2 t0 = Kr5 MULT (X1 XOR X3) t1 = Kr

          6 MULT (t0 ADD (X2 XOR X4)) t2 = t0 ADD t1

          29

          3 X1 = X1 XOR t1 X4 = X4 XOR t2 a = X2 XOR t2 X2 = X3 XOR t1 X3 = a

          Dabei sind X1 bis Xi die 16-Bit Blocke die aus der 64 Bit Eingabe gewonnen wurden Kri ist der

          Teilschlussel mit der Nummer r middot 6 + i Die abschlieszligende Transformation ergibt sich wie folgtY1 = X1 MULT K9

          1 Y4 = X4 MULT K94 Y2 = X3 ADD K9

          2 Y3 = X2 ADD K93

          Dabei sind die Yi 4 16-Bit Worter die die Ausgabe darstellen

          (Quelle httpdewikipediaorgwikiBildInternational_Data_Encryption_Algorithm_InfoBox_Diagrampng)

          bull In OpenSSL konnen IDEA Verschlusselungen mit folgenden Befehlen aufgerufen wer-den

          ndash -ideandash -idea-cbcndash -idea-cfbndash -idea-ecbndash -idea-ofb

          333 Pseudocode-multiplikation

          To do als Pseudocode machen

          30

          if(a==0)return ((216 +1)-b) mod 216

          if(a==0)return ((216 + 1)-a) mod 216

          if(a middot b) mod 216 gt (a middot b) div 216 return (a middot b) mod 216 minus (a middot b) div 216

          if(a middot b) mod 216 le (a middot b) div 216 return (216 + 1) + (a middot b) mod 216 minus (a middot b) div 216

          wenn a==0 rArr a = 216 equiv minus1 mod 216

          334 Schwachstellen

          Bei schlechter implementation konnen die XOR-Berechnungen am Stromverbrauch erkanntwerden Es konnen Ruckschlusse auf bestimmte Werte (insbesondere Null) gemacht werdenNach 218 Testrechnungen kann der Klartext bestimmt werdenSolche Angriffe nennt man Seiten Kanal Atacken in diesem Fall ist der Stromverbrauch derSeitenkanal (Zeitverbrauch spielt beim Idea keine Rolle)Bei guter Implementation gilt aber der Algorithmus als sicher

          To do Skizze Stromverbrauch

          34 Blowfish

          Blowfish ist eine sehr schnelle 64-Bit 16-Runden Block-Chiffre die 1993 von Bruce Schneiererfunden wurde Die Lange der Schlussel ist variabel zwischen 32 und 448 Bit Als Teilschlusselwerden aus dem Ausgangsschlussel eine P-Box mit 18 mal 32 Bit und 4 S-Boxen mit 256 mal32 Bit generiert (P1 P18) (S 1 S 4)

          Blowfisch Algorithmus von Bruc Schreier ist vollig Patentfrei dies hat sehr zu seiner Verbrei-tung beigetragen

          31

          F

          F

          14 weitere Runden

          (Quelle httpdewikipediaorgwikiBildBlowfish_structure_(de)svg)

          P1 P18 die XOR auf den Klartext kommen

          Schlussel-P1 P18 und

          -S-Boxen

          32

          (Quelle httpenwikipediaorgwikiImageBlowfishFFunctionsvg)

          S ist 256 32 Bit WerterArr 4 middot 256 middot 32 Werte rArr kann man sich nicht merken also wird P1 P18 S 1 S 4 werdenals Hexadezimalwerte von π gewahlt

          (K)n oplus (P1 P18)

          Der so initialisierte Algorithmus wird auf den Klartext 0 0︸ ︷︷ ︸64

          angewendet Das Ergebnis ersetzt

          (P1 P2) Der so initialisierte Algorithmus wird auf den Klartext 0 0︸ ︷︷ ︸

          64

          angewendet Das Ergebnis

          ersetzt (Pi Pi+1) Der so initialisierte Algorithmus wird auf den Klartext 0 0︸ ︷︷ ︸64

          angewendet

          Das Ergebnis ersetzt (S 1 S 2)

          Auf kosten eines sehr aufwendigen Schlusselmanagment wird ein schneller Algorithmus er-reicht Fur Prozessoren mit wenig Speicher unpraktisch

          341 Initialisierung

          Teilschlusselmanagement Sehr viele Teilschlussel werden aus wenig Schlusselmaterial gene-riert

          1 P und S werden mit einer Hexadezimal-Expansion von Pi initialisiert

          2 Der Schlussel als Sequenz von 32-Bit-Werten wird mittels XOR auf die P-Box addiertwobei er eventuell ldquowiederholtrdquo wird um die ganze Lange der Box abzudecken P1 oplus K1P2 oplus K2 P18 oplus K18

          3 Sowohl die P-Box als auch die S-Boxen werden verschlusselt

          33

          bull Verschlussle mit Blowfish den Nullstring rarr 64-Bit Ausgabe = 2 32-Bit = neueP1 P2

          bull Verschlussle mit Blowfish (Pi Pi+1) die Ausgabe verwende als (Pi+2 Pi+3) Wieder-hole diesen Schritt fur i von 1 bis zum Ende der P-Boxbull Anschlieszligend S 10 S 11 rarr S 12 S 13 Im gleichen Verfahren wie bei der P-Box

          werden die S-Boxen verschlusselt

          Insgesamt ist so ein langer Vorlauf notig bevor die eigentliche Verschlusselung der Daten be-ginnt

          342 Verschlusselung

          In jeder Runde r (insgesamt 16 Runden) wird folgendes Verfahren angewendet

          1 Der 64-Bit Eingabeblock wird in zwei 32-Bit-Halften L und R zerlegt

          2 L = L oplus Pr R = R oplus f (L)f (L) ist dabei folgendermaszligen charakterisiert Zunachst wird das Argument L als Konka-tenation von 4 8-Bit Vektoren a b c und d aufgefasst die als naturliche Zahlen zwischen0 und 255 verwendet werden

          f (a b c d) = ((S 1a + S 2b mod 232 oplus S 3c) + S 4d mod 232

          3 L und R werden vertauscht konkateniert und als Eingabe fur die nachste Runde verwen-det

          Nach der letzten Runde wird noch R = R oplus P17 und L = L oplus P18 durchgefuhrt

          Aus der Wikipedia (unter GNU Free Documentation License)

          Blowfish ist ein sehr schneller und nicht patentierter Algorithmus der besonders auf 32-Bit-Prozessoren eine exzellente Performance bietet Ein weiterer Vorteil ist seine variableSchlussellange von 32 bis zu 448 Bit Die Blockgroszlige betragt 64 Bit

          bull In OpenSSL konnen Blowfish Verschlusselungen mit folgenden Befehlen aufgerufen wer-den

          ndash -bfndash -bf-cbcndash -bf-cfbndash -bf-ecbndash -bf-ofbndash -blowfish

          34

          35 AES Advanced Encryption Standard

          351 Wiederholung-Byteoperation

          Wir hatten folgende Byteoperationen kennengelernt

          bull Multiplikation mod 256 bzw mod 257 ohne 0

          bull Addition mod 256

          bull XOR-Addition (oplus)

          Die Operationen werden in der dementsprechenden Basisdarstellung modulo 256 durchgefuhrt

          352 Uberblick

          AES wurde im Standard FIPS 197 festgeschrieben

          Aus der Wikipedia (unter GNU Free Documentation License)

          AES ist eine Block-Chiffre dessen Blocklange und Schlussellange unabhangig voneinanderdie Werte 128 192 oder 256 Bit erhalten kann Jeder Block wird zunachst in eine zweidimen-sionale Tabelle mit vier Zeilen geschrieben dessen Zellen ein Byte groszlig sind Die Anzahl derSpalten variiert somit je nach Blockgroszlige von 4 (128 Bit) bis 8 (256 Bit) Zum Beispiel fur 16Byte werden die Bytes wie folgt eingetragen

          1 5 9 132 6 10 143 7 11 154 8 12 16

          Jeder Block wird nun nacheinander bestimmten Transformationen unterzogen Aber anstattjeden Block einmal mit dem Schlussel zu verschlusseln wendet AES verschiedene Teile desSchlussels nacheinander auf den Klartext-Block an Die Anzahl dieser Runden (r) variiertund ist von Schlussellange (k) und Blockgroszlige (b) abhangig Je nach Blocklange b undSchlussellange k wird die Anzahl der Runden bestimmt (10 12 oder 14)

          r b=128 b=192 b=256k=128 10 12 14k=192 12 12 14k=256 14 14 14

          S-BoxenEine Substitutionsbox (S-Box) dient als Basis fur eine monoalphabetische Verschlusselung

          35

          Sie ist meist als Array implementiert und gibt an welches Byte wie getauscht wird DieS-Box in AES basiert auf einem mathematischen Zusammenhang und ist somit fest imAlgorithmus implementiert Doch dies ist kein Schwachpunkt da die S-Box lediglich zur Ver-mischung der Bytes in Kombination mit weiteren Operationen und dem Schlussel genutzt wird

          Ablauf

          bull Schlusselexpansion (nach Fips-197 S23 Kapitel 52)

          Der Schlussel rsquokeyrsquo wird auf den Anfang des expandierten Schlussels rsquowrsquo ubernommen(i lt Nk) Danach berechnet sich w[i] wie folgt

          w[i] =

          w[i minus 1] i mod Nk 0S ubWord(RotWord(w[i minus 1])) oplus Rcon i mod Nk = 0S ubWord(w[i minus 1]) Nk gt 6i (mod N)k = 4

          (1)

          w[i] = w[i] oplus w[i minus Nk] (2)

          Der zugehorige Quelltext (Fips-197 entnommen)

          KeyExpansion(byte key[4Nk] word w[Nb(Nr+1)] Nk)

          begin

          word temp

          i = 0

          while (i lt Nk)

          w[i] = word(key[4i] key[4i+1] key[4i+2] key[4i+3])

          i = i+1

          end while

          i = Nk

          while (i lt Nb (Nr+1)]

          temp = w[i-1]

          if (i mod Nk = 0)

          temp = SubWord(RotWord(temp)) xor Rcon[iNk]

          else if (Nk gt 6 and i mod Nk = 4)

          temp = SubWord(temp)

          end if

          w[i] = w[i-Nk] xor temp

          i = i + 1

          end while

          end

          36

          Fur Beispiele siehe Fips-197 Appendix A1

          bull Vorrunde

          ndash KeyAddition (XOR-des Rundenschlussels)

          bull Verschlusselungsrunden

          ndash Substitution - Jedes Byte b wird ersetzt durch bprime = 1b wie bei Polynommultiplikati-

          on Weiter wird jedes Byte als ein 8-dimensionaler Vektor aufgefasst und folgendeOperation angewendet

          b1b2

          b8

          =

          1 0 0 0 1 1 1 11 1 0 0 0 1 1 11 1 1 0 0 0 1 11 1 1 1 0 0 0 11 1 1 1 1 0 0 00 1 1 1 1 1 0 00 0 1 1 1 1 0 00 0 0 1 1 1 1 0

          middot

          b1b2

          b8

          +

          c1c2

          c8

          ndash ShiftRow - Erste Zeil wird nicht verschoben die zweite Zeil um eins die dritteZeile um zwei die vierte um drei (siehe Wikipedia)

          ndash MixColumn - Zu jeder Spalten

          b1b2b3b4

          des Blocks wird folgende Polynommultiplika-

          tion durchgefuhrt

          (b1x3 + b2x3 + b3x + b4) middot (03X3 + 04X2 + 01X + 02) mod (X4 + 1)

          und die Koeffizienten in gleicher Weise wieder in die jeweilige Spalte eingetragenWobei (X4 + 1) das Inverse (0BX3 + 0DX2 + 09X + DE) hat

          ndash KeyAddition

          bull Schlussrunde

          ndash Substitutionndash ShiftRowndash KeyAddition

          Fur die Entschlusselung gehe die oben angegebene Reihenfolge ruckwarts durch Beachtedabei dass ShiftRow und Subst vertauschbar sind Bei ShiftRow wird in umgekehrter Weiseverschoben Ebenso sind KeyAdd und MultColumn vertauschbar wenn der Rundenschlusselmodifiziert wird (B(X) lowast (S (X) oplus K(X)) = S (X) lowast B(X) oplus B(X) lowast K(X) also ist der modifiziertSchlussel B(X) lowast K(X)) Die Entschlusselung entspricht also der Verschlusselung mit modifi-zierten Schlusseln

          37

          353 mathematische Grundlagen

          Speziell der Schritt Mix-Column beinhaltet einige interessante mathematische Uberlegungen Ersoll zu einer moglichst effektiven Vermischung der 32 Bit in jeder Spalte fuhren die die Suchevon dem unverschlusselten Text ahnlichen Mustern im verschlusselten Text erschwert Dabeiwerden arithmetische Operationen aus zwei algebraischen Gruppen angewandt

          1 Die Gruppe der Bytes F82 Jedes Byte b7b6b0 wird als ein Polynom b7 middot X7 + b6 middot X6 +

          b0 middot X0 angesehen Diese Polynome konnen addiert und multipliziert werden Damitdabei der Werteraum des Byte nicht verlassen wird finden diese Operationen modulom(X) = X8 + X4 + X3 + X +1 statt m ist dabei irreduzibel es gilt also ggT (b(X)m(X)) = 1fur jedes Byte b Somit ist F2[X]m(X) ein Korper und die Multiplikation ist abgeschlos-sen Es gilt fur jedes Paar von Bytes b c eindeutig b middot c = d rarr dc = b Multiplikationenkonnen also eindeutig ruckgangig gemacht werden so dass eine Entschlusselung moglichistBei Zahlen die groszliger als m(X) sind werden also durch die modulo Operation die Koeffi-zienten von x4 x3 x1 x0 verandertBeispiel in Magma

          Q = IntegerRing(2)

          Pltxgt = PolynomialRing(Q)

          f=xˆ7+1

          g=xˆ3+xˆ2+x+1

          fg

          fg mod(xˆ8 +xˆ4+xˆ3+x+1)

          IsPrime(xˆ8 +xˆ4+xˆ3+x+1)

          Ausgabe

          xˆ10 + xˆ9 + xˆ8 + xˆ7 + xˆ3 + xˆ2 + x + 1

          xˆ7 + xˆ6 + xˆ3 + xˆ2 + x

          true

          2 Die Gruppe der Worter F4256 Die 4 Bytes einer Spalte w3w2w1w0 werden wieder als Po-

          lynom aufgefasst w3 middot X3 + w2 middot X2 + w1 middot X + w0 Diese konnen wieder multipliziertund addiert werden wobei die arithmetischen Operationen auf den jeweiligen Bytes in F8

          2stattfinden Die Operationen in F4

          256 werden modulo M(X) = X4 + 1 ausgefuhrt M(X) istzwar nicht irreduzibel aber da der Algorithmus nur eine beschrankte Gruppe von Operan-den verwendet bleiben auch hier alle Operationen invertierbar

          Mix-Column multipliziert (in F4256) nun jede Spalte mit c(X) = 3 middot X3 + X2 + X + 2 Die so

          beschriebene lineare Funktion erreicht beweisbar eine groszlige Diffusion der Eingabe

          38

          bull In OpenSSL konnen AES Verschlusselungen mit folgenden Befehlen aufgerufen werden

          ndash -aes-128-cbcndash -aes-128-cfbndash -aes-128-ecbndash -aes-128-ofbndash -aes-192-cbcndash -aes-192-cfbndash -aes-192-ecbndash -aes-192-ofbndash -aes-256-cbcndash -aes-256-cfbndash -aes-256-ecbndash -aes-256-ofbndash -aes128ndash -aes192ndash -aes256

          36 RC4 Ronrsquos Cipher 4

          Geheimes Chiffreverfahren mit Strom-Chiffre von Ron Rivest 1987 Entstehungsjahr 1994 imNetz aufgetaucht 1999 tauchte im Internet ein Draft ARCFOUR (ARC4) auf der die gleichenErgebnisse lieferte

          Byte orientiert zwei Bytes m k dann wird berechnetm oplus k = cDer Algorithmus basiert auf S-Boxen (Permutationen)

          mdashmdashSkizze Seite 2b ganz oben

          PRG (Pseudo Random Generator)mdashmdashweitere Skizze

          Initialisierung K = L Bytes als Schlussel s[i] = i (identische Permutation)L = 1255 fur RC4 mit 40-Bit L = 5 mit 64-Bit L = 8 mit 128-Bit L = 16j = 0 fur i = 0255rarr j = ( j + s[i] + K[ j mod L]) mod 256

          Problem K-Masterkeyrarr salted key Initialwert (frei bekannt) HashInitial(K) = Kaktuell rarr RC4

          39

          Anfangsstucke von PRG RC4 sind nicht rdquorichtig zufalligldquo verraten viel uber KaktuellRegel fur RC4 Die ersten 256-Byte wegschmeiszligen

          Aus der Wikipedia (unter GNU Free Documentation License)

          RC4 (Ronrsquos Cipher 4) ist ein fur Software optimierter Stromchiffrierer welcher zur Ver-schlusselung von Daten eingesetzt wird Er wurde 1987 von Ronald L Rivest fur RSA DataSecurity Inc (heute RSA Security) entwickelt

          Der Algorithmus war sieben Jahre lang geheim (ldquosecurity by obscurityrdquo) bis 1994 derQuellcode anonym veroffentlicht wurde

          RC4 hat im Gegensatz zu DES eine variable Schlussellange Die Schlussellange kann biszu 2048 Bit betragen RC4 verschlusselt immer ein Byte auf einmal

          Er besteht aus einer so genannten S-Box die sich wahrend der Verschlusselung fortlau-fend andert Diese wird durch ein Passwort initialisiert das fur jede Verschlusselung einmaligsein muss Jedes Klartextzeichen wird XOR mit einem bestimmten vom Paszligwort abhangi-gen Zeichen aus der S-BOX verknupft Theoretisch sind somit ca 2 hoch 1700 verschiedeneZustande moglich

          Der Algorithmus ist sehr kompakt und funf- bis zehnmal schneller als der weitverbreite-te DES Deshalb findet der RC4 Algorithmus in einigen Echtzeit-Systemen Anwendung wiebeispielsweise Mobilfunk (Cellular Digital Packet Data) SSH (Secure Shell) WLAN (Wire-less LAN) oder den Dateiverschlusselungs-Programmen SecurePC und Cryptext Die Verar-beitungsgeschwindigkeit des DES ist jedoch selbst in kleinsten Mikrokontrollern meist ausrei-chend Der Schlussel beim DES und anderen Blockchiffren wie dem AES (CBC-Mode) kannim Gegensatz zum RC4 auch mehrfach verwendet werden Vergleichbare Stromchiffren wieSEAL sind vergleichbar schnell und gelten als sicher

          Aus der Wikipedia (unter GNU Free Documentation License)

          ubersetzt aus dem Englischen nach httpenwikipediaorgwikiRC4RC4 (oder ARCFOUR) ist die am weitesten verbreitete Stromchiffre und wird in vielen be-kannten Protokollen beispielsweise SSL oder WEP verwendet Trotzdem entspricht RC4 nichtmehr dem heutigen Sicherheitsstandard und manche Verwendungsweisen von RC4 fuhren zusehr unsicheren Kryptosystemen (zB WEP) Daher wird es nicht fur die Verwendung in neuenSystemen empfohlen Allerdings gibt es auch RC4-basierte Systeme die sicher genug fur denpraktischen Gebrauch sind

          361 Geschichte

          Aus der Wikipedia (unter GNU Free Documentation License)

          ubersetzt aus dem Englischen nach httpenwikipediaorgwikiRC4RC4 wurde 1987 von Ron Rivest von RSA Security erfunden Offiziell bedeutet die Abkurzung

          40

          ldquoRivest Cipher 4rdquo alternativ wird sie aber als ldquoRonrsquos Coderdquo verstanden (s auch die anderenRC-Algorithmen) Zunachst war RC4 ein Betriebsgeheimnis jedoch wurde im September1994 eine Beschreibung anonym auf der ldquoCypherpunksrdquo Mailingiste gepostet Es wurde baldin die scicrypt newsgroup weitergepostet und von dort auf viele Internet-Seiten verbreitetNachdem der Algorithmus nun bekannt ist ist er kein Betriebsgeheimnis mehr Der NameldquoRC4rdquo unterliegt jedoch weiterhin dem Markenschutz Zur Zeit sieht es so aus als seien ldquoinof-fiziellerdquo Implementationen zwar legal konnen aber nicht den Namen ldquoRC4rdquo verwenden Umdieses Problem zu umgehen wird RC4 oft als ldquoARCFOURrdquo bezeichnet RC4 wird inzwischenin einigen weit verbreiteten Verschlusselungsprotokollen und Standards unter anderem WEPund WPA fur WLAN Karten und SSL verwendet

          362 Beschreibung

          Aus der Wikipedia (unter GNU Free Documentation License)

          ubersetzt aus dem Englischen nach httpenwikipediaorgwikiRC4RC4 generiert einen pseudo-zufalligen Bitstrom (einen ldquoSchlusselstromrdquo) der bei der Ver-schlusselung mit dem Klartext mittels XOR verknupft wird Die Entschlusselung funktioniertgenauso Um den Schlusselstrom zu generieren benutzt die Chiffre einen internen Zustand deraus zwei Teilen besteht

          1 eine Permutation aller 256 moglichen Bytes (wird im Folgenden als S bezeichnet)

          2 zwei 8-Bit Index-Zeiger (mit i und j bezeichnet)

          Die Permutation wird mit einem Schlussel von variabler Lange ublicherweise zwischen 40und 256 Bit initialisiert wobei der Schlusselerzeugungs-Algorithmus verwendet wird An-schlieszligend wird der Bit Strom durch den Pseudo-Zufalls-Algorithmus generiert

          363 Der Pseudo-Zufalls-Algorithmus

          Aus der Wikipedia (unter GNU Free Documentation License)

          ubersetzt aus dem Englischen nach httpenwikipediaorgwikiRC4In jeder Iteration wird der Zustand verandert und ein Byte des Schlusselstroms ausgegebenDabei wird i inkrementiert der Wert von S an der Stelle i auf j addiert S [i] und S [ j] vertauschtund der Wert von S an der Stelle S [i]+S [ j] mod 256 ausgegeben Jeder Wert von S wird dabeimindestens einmal alle 256 Iterationen vertauscht In Pseudocode lasst sich der Algorithmusfolgendermaszligen darstellen

          i = 0

          j = 0

          41

          while GeneratingOutput

          i = (i + 1) mod 256

          j = (j + S[i]) mod 256

          swap (S[i] S[j])

          output (S[(S[i] + S[j]) mod 256])

          (Wobei i offentlich ist und j geheim ist)

          i j

          0 1 2 S[i]+S[j] i j 253 254 255

          S

          S[i] S[j]

          S[i]+S[j]K

          (Quelle httpdewikipediaorgwikiBildRC4svg)

          364 Der Schlusselerzeugungs-Algorithmus

          Aus der Wikipedia (unter GNU Free Documentation License)

          ubersetzt aus dem Englischen nach httpenwikipediaorgwikiRC4Der Schlusselerzeugungs-Algorithmus wird benutzt um die Permutation in S zu initialisierenl wird als die Zahl der Bytes des Schlussels definiert und kann zwischen 1 und 255 liegenublicherweise liegt l zwischen 5 und 32 so dass eine Schlussellange von 40 bis 128 Bit zu-stande kommt Zunachst wird S mit der Identitatspermutation initialisiert Anschlieszligend wirdS in 256 Iterationen mit einem Algorithmus der dem Pseudo-Zufalls-Algorithmus ahnelt aberzusatzlich die Schlusselbits hineinmischt weiterverarbeitet Der folgende Pseudocode drucktdies aus

          for i from 0 to 255

          S[i] = i

          j = 0

          for i from 0 to 255

          42

          j = (j + S[i] + key[i mod l]) mod 256

          swap(S[i]S[j])

          365 Implementation

          Aus der Wikipedia (unter GNU Free Documentation License)

          ubersetzt aus dem Englischen nach httpenwikipediaorgwikiRC4Viele Stromchiffren basieren auf ldquolinear feedback shift registersrdquo und sind damit sehr effizientin Hardware aber weniger effizient in Software implementierbar RC4 hat dieses Manko nichtund kommt zudem ausschlieszliglich mit 8-Bit Operationen aus Damit ist RC4 ideal fur Software-Implementationen

          366 Sicherheit

          Aus der Wikipedia (unter GNU Free Documentation License)

          ubersetzt aus dem Englischen nach httpenwikipediaorgwikiRC4RC4 verfehlt die ublichen Standards fur sichere Chiffren an mehreren Stellen und wird somitnicht zur Verwendung in neuen Anwendungen empfohlen Der von RC4 generierte Schlussel-strom tendiert dazu bestimmte Sequenzen von Bytes haufiger zu enthalten als andere undist somit nicht wirklich zufallig Der beste Angriff der auf diesem Sachverhalt beruht wur-de von Fluhrer und McGrew entdeckt und kann aus einem Gigabyte verschlusseltem Textden Schlusselstrom berechnen Zudem verwendet RC4 keine ldquononcerdquo einen fur jeden Klar-text neu generierten Zusatzschlussel Eine solche ldquononcerdquo wird im allgemeinen als zentralesSicherheitskriterium betrachtet da so gewahrleistet ist dass eine zweimal nacheinander ver-schlusselte Nachricht zwei verschiedene verschluesselte Texte erzeugt Naturlich kann einesolche ldquononcerdquo im Nachhinein aufgesetzt werden indem als RC4-Schlussel nicht der eigentli-che Benutzerschlussel sondern beispielsweise ein Hashwert des Schlussels mit einer nonce ver-wendet wird Die einfachere Methode den Schlussel nur mit der nonce zu konkatenieren dievon einigen Anwendungen genutzt wird fuhrt aufgrund des schwachen Schlusselerzeugungs-Algorithmus wieder zu neuen Problemen

          To do anmerkungen zu k=1-Angriffsmoglichkeiten

          43

          367 Fluhrer Mantin und Shamir Angriff

          Aus der Wikipedia (unter GNU Free Documentation License)

          ubersetzt aus dem Englischen nach httpenwikipediaorgwikiRC42001 wurde eine erstaunliche Entdeckung gemacht Die statistische Verteilung der ersten paarBytes des Schlusselstroms ist uber alle RC4-Schlussel stark nicht-zufallig und enthalt Infor-mationen uber den Schlussel selbst Falls die nonce lediglich mit dem Schlussel konkateniertwurde (oder gar keine nonce verwendet wurde) kann der Schlussel durch die Analyse einergroszligen Zahl verschlusselter Nachrichten herausgefunden werden Mit Hilfe dieses Sachver-haltes und einiger damit zusammenhangender Effekte wurde dann die WEP-Verschlusselung(ldquowireless equivalent privacyrdquo) die in 80211 WLAN-Netzen verwendet wird gebrochen Diesfuhrte zu einer Suche nach einem Ersatz fur WEP und letztlich zu den Bemuhungen um 80211isowie zu WPA

          Der geschilderte Angriff kann naturlich umgangen werden wenn die ersten (ca 256) Bytes desSchlusselstroms verworfen werden

          bull In OpenSSL konnen RC4 Verschlusselungen mit folgenden Befehlen aufgerufen werden

          ndash -rc4ndash -rc4-40

          37 RC5 Ronrsquos Cipher 5

          Die zentrale Neuerung des RC5-Algorithmus sind datenabhangige Rotationen bei denen einZwischenergebnis um eine Zahl von Bytes rotiert wird die weder fest vorgegeben noch vomSchlussel bestimmt sondern aus einem Teil des Klartextes berechnet ist Diese Operation wirdfolgendermaszligen notiert a ltltlt b bedeutet dass a um b Bits nach links rotiert wird Ein weitererinteressanter Aspekt ist die universelle Parametrisierbarkeit des Algorithmus Sowohl die Langeder Worter w als auch die Zahl der Runden r und die Lange des Schlussels b sind wahlbar sodass der Algorithmus offen ist fur zukunftige Bedurfnisse die weitere Operation + wird nun alsAddition modulo 2w definiert In openssl ist RC5 mit den Parameters w = 32 r = 12 b = 16 im-plementiert Samtliche Algorithmen gehen im folgenden von einer little-endian Byte-Anordnungaus Der Algorithmus besteht aus einem Verschlusselungs- und einem Schlusselexpansions-Teil

          371 Verschlusselung

          Gegeben ein auf t = 2(r + 1) Worter expandierter Schlussel S und ein aus zwei Wortern A undB bestehender Eingabeblock gibt folgender Pseudocode den Verschlusselungs-Algorithmus an

          44

          A = A + S[0]

          b = B + S[1]

          for i = 1 to r do

          A = ((A XOR B) ltltlt B) + S[2i]

          B = ((B XOR A) ltltlt A) + S[2i + 1]

          Die Entschlusselung lauft dementsprechend folgendermaszligen ab

          for i = r downto 1 do

          B = ((B - S[2i + 1]) gtgtgt A) XOR A

          A = ((A - S[2i]) gtgtgt B) XOR B

          A = A - S[0]

          B = B - S[1]

          372 Schlusselexpansion

          Zunachst wird S mit einer Kombination aus e und ϕ (dem goldenen Schnitt) initialisiert und derSchlussel in ein Array L kopiert das wortweise indiziert wird Anschlieszligend wird mit folgendemAlgorithmus der Schlussel in S hinein gemischt

          i = j = 0

          A = B = 0

          do 3 max(t 8bw) times

          A = S[i] = (S[i] + A + B) ltltlt 3

          B = L[j] = (L[j] + A + B) ltltlt (A + B)

          i = (i+1) mod t

          j = (j+1) mod (8bw)

          38 GOST 28147-89 Gosudarstvennyi Standard Soyuza SSR nicht inOpenSSL

          GOST ist das russische Normungsinstitut vergleichbar mit DIN oder ANSI

          (siehe auch httpenwikipediaorgwikiGOST_(block_cipher))

          Gost-Chiffre ist eine relativ simple Feistel-Chiffre auf 64 Bit mit 32 Runden 256 Bit Schlussellangeund 8 S-Boxen von zusammen 512 Bit die - da sie geheim gehalten werden konnen - alsSchlusselerweiterung gelten konnen Die Rundenfunktion besteht aus der Addition eines 32-Bit-Substrings des Schlussels der Anwendung der S-Boxen (parallel da jede S-Box 4 Bit alsEin- und Ausgabe hat) und einer 11-Bit-Rotation Die Sicherheit des Algorithmus beruht auf

          45

          der Verwendung sehr langer Schlussel geheimer S-Boxen und der gegenuber DES verdoppeltenRundenzahl In jeder einzelnen Runde wird jedoch ein geringerer Durchmischungseffekt erreichtals bei DES-Runden

          Geheimer Algorithmus S-Boxen auch geheim

          (Quelle httpenwikipediaorgwikiImageGOSTDiagrampng)

          46

          Feistel Chiffre

          Addition Substitution Rotation

          Die S-Boxen sind Gruppenschlussel die extra zugewiesen werden16 4 Bit Werte werden Permutiert 32 RundenSchlusselmaterial 32 die 256 Bit werden jeweils in 8 32 Bit Unterschlussel eingeteilt wobei dieSchlussel wie folgt verwendet werden1234567123456712345677654321

          (Dann einmal S-Box einmal rotieren und dann Feistelschritt)

          Die Sicherheit steckt in den 32 Runden Der Algorithmus wurde bisher nicht geknackt

          39 FazitWie konnte bei einen Symmetrischen Algorithmus die Sicherheiterhohen

          (Das ware zB fur eine Interessante Frage fur eine Klausur)

          bull komplexes Schlusselmanagment

          bull viele Runden

          bull komplexe vermischung pro Runde (AES)

          4 Asymmetrische Verschlusselungsverfahren

          41 Einfuhrung

          AliceBob Chris Dave Eve

          Alice BobkA kA

          Enck1(M) = C minusrarr M = Deck2

          Verschlusselungsverfahren kA kB EncDecAus kA kann kB nicht bestimmt werden dann kann kA sogar offentlich sein Ziel ist es dass je-

          47

          der verschlusseln kann aber nur einer kann (in realistischer Zeit) entschlusseln Solche Verfah-ren mit offentlichen Schlussel werden auch asymmetrisch genannt Mit groszligen Aufwand kannnaturlich der Schlussel immer noch bestimmt werden Man wahlt einen Text mprime Verschlusseltihn (Enck(mprime) = cprime) und probiert dann solange alle k durch bis man Deck(cprime) = mprime erhalt

          Das kB kann aber immer bestimmt werden

          for k_B =00000 to FFFF

          M_0 C_0 sind gegeben

          Dec_k_B(C_0) = M_0

          Wichtig ist nur das dies nicht in rsquovernunftigerrsquo Zeit gemacht werden kann

          To do text sortieren

          Klartext minusrarr E(K) ChiffretextKlartext D(Kprime)larrminus ChiffretextE(K p) = c und zu jedem KexistKprime mit D(Kprime c) = p und K wird offentlich gemachtDie Berechnung von Kprime aus K ist schwer Bruteforce ist nicht ausgeschlossen die Bestimmungvon K aus Kprime ist leicht

          leichtEnckA DeckB (kA kB)minusErzeugung

          schweraus kA allein kB erzeugen

          411 Beispiel

          Bob mochte von Alice verschlusselte Nachrichten lesen Bob uberlegt sich ein asymmetrischesVerfahren wahlt Kprime berechnet K und veroffentlicht KAlice nimmt K berechnet E(K p) = c und sendet c an BobBob berechnet aus c mit Kprime das ursprungliche p

          42 Geschichte

          Whitfield Diffie New Directions in Cryptographie Idee wurde auch schon mal von Ralf Merkelveroffentlich Britische Geheimdienst hatt vorher die Idee auch schon mal

          48

          Aus der Wikipedia (unter GNU Free Documentation License)

          Asymmetrische Verfahren sind ein relativ neues Gebiet der Kryptografie Eine wichtige Vorar-beit fur die asymmetrischen Verfahren sind die Arbeiten von Whitfield Diffie Martin Hellmanund Ralph Merkle zum geheimen Schlusselaustausch Anfang der 1970er Jahre Im Sommer1975 veroffentlichten Diffie und Hellman eine Idee zur asymmetrischen Verschlusselung oh-ne jedoch ein genaues Verfahren zu kennen

          Anfang der 1970er Jahre wurden von Ellis Cocks und Williamson ein dem spateren Ver-fahren von Diffie-Hellman ahnliches asymmetrisches Verfahren entwickelt welches aber inseiner wirtschaftlichen Bedeutung nicht erkannt und aus Geheimhaltungsgrunden nicht (wis-senschaftlich) publiziert und auch nicht zum Patent angemeldet wurde Alle drei waren Mitar-beiter des englischen Government Communications Headquarters

          Der Durchbruch gelang Ronald L Rivest Adi Shamir und Leonard M Adleman die 1977das RSA-Verfahren entwickelten Es gilt bis heute als sicheres Verfahren und hat auszligerdem dengroszligen Vorteil in beiden Richtungen eingesetzt werden zu konnen

          43 Einige Theoretische Grundlagen

          431 Kleiner Fermat (oder kleiner Fermatrsquoscher Satz)

          Fur beliebige Primzahlen p gilt

          n(pminus1) = 1 mod p fur alle n isin Z

          To do Wikipedia verlinken

          432 Euklidischer Algorithmus

          To do erganzen Erweiterter Euklidischer Algorithmus fehlerhaft

          Aus der Wikipedia (unter GNU Free Documentation License)

          Beschreibung durch PseudocodeIm Folgenden wird der moderne Euklidische Algorithmus sowohl in einer rekursiven als

          auch einer iterativen Variante beschrieben Dabei sind a und b jeweils die beiden Zahlen derengroszligter gemeinsamer Teiler berechnet werden soll

          Rekursive Variante

          49

          EUCLID(ab)

          1 wenn b = 0

          2 dann return a

          3 sonst return EUCLID(b a mod b)

          Iterative Variante

          EUCLID(ab)

          1 solange b = 0

          2 r = a mod b

          3 a = b

          4 b = r

          5 return a

          FunktionsweiseIn jedem Schritt des Algorithmus wird eine Division mit Rest ausgefuhrt riminus1 = qi+1 middot

          ri + ri+1 0 le ri+1 lt ri Die Division mit Rest hat die Eigenschaft dass ggT(riminus1 ri) =

          ggT(ri ri+1) giltIm letzten Schritt des Algorithmus rnminus1 = qn+1 middot rn + 0 ist rn+1 = 0 und es gilt deshalb

          ggT(rnminus1 rn) = ggT(rn 0) = rn

          Da im ersten Schritt riminus1 = a und ri = b war ist ggT(a b) = rn

          (Quelle httpdewikipediaorgwikiEuklidischer_Algorithmus)

          (Denn es gilt ggT(a b) = ggT(b r))

          Aus der Wikipedia (unter GNU Free Documentation License)

          Man kann diese Rekursion in folgende Abfolge von Schritten fur den erweiterten euklidi-

          schen Algorithmus fassen Erhalte rdquoardquo und rdquobrdquo als EingabeSetze rdquok=0rdquo r0 = a r1 = b s0 = 1 und s1 = 0WiederholeErhohe rdquokrdquo um einsBestimme den ganzzahligen Quotienten qk = rkminus1 div rkSetze rk+1 = rkminus1 minus qk middot rk und sk+1 = skminus1 minus qk middot skbis rk+1 = 0 giltGib den Rest rk = ggT(a b) und die Zahl sk mit ggT(a b) equiv sk middot a (mod b) zuruckJeder Schritt enthalt implizit auch einen Multiplikator tk = (rk minus sk middot a) div b wobei diese

          Division keinen Rest lasst Die Folge (tk)k kann auch explizit bestimmt werden es gelten t0 =

          0 t1 = 1 und tkminus1 equiv qk middottk+tk+1 Nach dem letzten Schritt ergibt sich nun ggT(a b) = sk middota+tk middotbDer Ubersicht halber werden beim handischen Rechnen auch noch die Hilfsfolgen (ak =

          rkminus1)k und (bk = rk)k sowie (uk = skminus1)k sowie (vk = tkminus1)k mitgefuhrt

          50

          Zur Berechnung des Inversen modulo einer Restklasse benotigt man die tk aber nicht und kannsie ignorieren

          Aus der Wikipedia (unter GNU Free Documentation License)

          Rekursive VarianteFur den erweiterten euklidischen Algorithmus existiert auch eine rekursive Variante die

          durch den folgenden Pseudocode gegeben istab zwei Zahlen fur die der erweiterte euklidische Algorithmus durchgefuhrt wirdrdquoextended euclidrdquo(ab)1 rdquorsquowennrdquorsquo b = 02 rdquorsquodann returnrdquorsquo (a10)3 (drsquosrsquotrsquo)larr rdquoextended euclidrdquo(b a mod b)4 (dst)larr (drsquotrsquosrsquo - floor(ab)trsquo)5 rdquorsquoreturnrdquorsquo (dst)

          (Quelle httpdewikipediaorgwikiErweiterter_euklidischer_Algorithmus)

          Wenn n mod m teilerfremd sind dann existiert so ein Exponent f so dass

          n f equiv 1 mod m

          ist

          Wenn m = m1 middotm2 ein Produkt von zwei verschiedenen Primzahlen ist dann ist fur alle n die zum teilerfremd sind

          n(m1minus1)middot(m2minus1) equiv 1 mod m

          Denn es ist nm1minus1 equiv 1 mod m1 und nm2minus1 equiv 1 mod m2 Dann ist n(m1minus1)middot(m2minus1) minus 1 durch m1und m2 teilbar Denn nach dem Chinesischen Restsatz gilt n(m1minus1)middot(m2minus1) equiv 1 mod m1 middot m2 undwenn eine Zahl durch m1 middot m2 teilbar ist so auch durch m1 und m2

          433 Beispiel

          In Magma

          p=17 q=23

          m=(p-1)(q-1)

          e=19

          F=IntegerRing(m)

          51

          d=(Fe)ˆ(-1)

          d=IntegerRing()d

          19315 div 16

          19315 -374 16

          n=pq

          K=IntegerRing(n)

          N=100

          C=(KN)ˆ(e) Verschlusseln

          C

          Cˆd

          10019 equiv 349 mod 349

          349352 equiv 100 mod 391

          10019middot315 = 100 mod 17

          10019middot315 = 100 mod 23

          10019middot315 equiv 100374middot16+1 mod 17 equiv 100 middot (10016)374︸ ︷︷ ︸=1

          mod 17

          To do Analog von Mathias kopieren

          To do Wiederholung einsortieren

          Wiederholung

          Nachricht n

          ne equiv c( mod m)

          Chiffre c

          cd equiv (ne)d = ndmiddote = n1+k(pminus1)(qminus1) = n middot (n(pminus1)(qminus1))k︸ ︷︷ ︸=1

          equiv n middot 1k = n mod m

          nminusrarr

          dm cminusrarr

          em n

          52

          aus (em) kann man (dm) nicht leicht bestimmen weil man die Zerlegung m = p middotq nicht kenntWer p q kennt kann aus den einen den anderen Schlussel berechnen Wer de kennt kann pqbestimmen

          Verschlusselung kann jeder ausfuhren offentlicher Schlussel (em) Entschlusselung bleibt demvorbehalten der das geheime d (oder auch pq) kennt

          schnelles Potenzieren Ist die Berechung von ne ck ausreichend schnell

          m 1000 Bit pq-150 Dezimalstellen

          ne hat sehr sehr viele Dezimalstellen

          Deshalb berechnet man erst modulo und potenziert dann mit e

          (n mod m)e (c mod m)d

          Beispiele n19 = n middot n middot middot n︸ ︷︷ ︸19 Multiplika-tionen

          oder man rechnet

          n n2 n4 n8 n16 4 Quadrierungen

          n16 middot n2 middot n = n19

          so auch bei n1025 = n n2 n1024 n middot n1024 wo nur 11 Multiplikationen gebraucht werden

          Pseudocode nex=1

          repeat

          if (e = 1 mod 2)x = x middot n(prime mod mprime)

          n = n2(prime mod mprime)

          e = ediv2

          until e==1

          k = (nprime)0 middot xprime

          x = k = ne

          53

          44 RSA Rivest Shamir Adleman

          Bei dem Versuch die Idee der Asymmetrischen Kryptografie zu wiederlegen wurde RSA entwi-ckelt

          RSA beruht auf der Schwierigkeit n = p middotq in seine Primfaktoren zu zerlegen Verschlusseln undEntschlusseln ist Potenzieren modulo n

          D E = id

          p = (pe)d mod n

          p = pemiddotd mod n

          e middot d = 1 mod (p minus 1) middot (q minus 1)

          E(e n) ist offentlich und D(d n) geheim Die Bestimmung von e d n aus p q ist leicht GenauerDie Bestimmung von e aus (d n) ist leicht die Bestimmung von d aus (e n) ist schwer weilFaktorisierung n = p middotq (vermutlich) schwierig ist ist Bestimmung von d aus (e n) auch schwerWer p und q aus n berechnen kann kann auch d bestimmen (Euklid)

          Wer e und d kennt kann p und q bestimmen (dazu waren Erlauterungen in der Vorlesung)

          441 Funktionsweise des RSA-Verfahrens

          (nach wwwcryptooldedownloadsCrypToolScript 1 3 04 depdf)Man kann die Einzelschritte zur Durchfuhrung des RSA-Verfahren folgendermaszligen beschrei-ben Schritt 1 bis 3 sind die Schlusselerzeugung Schritt 4 ist die Verschlusselung 5 die Ent-schlusselung

          1 Wahle zufallig 2 verschiedene Primzahlen p und q und berechne n = p middot q Der Wert nwird als RSA-Modul bezeichnet

          2 Wahle zufallig e isin 2 n minus 1 so dass gilt e ist teilerfremd zu J(n) = (p minus 1) middot (q minus 1)Zum Beispiel kann man e so wahlen dass gilt max(p q) lt e lt J(n) minus 1 Danach kannman p und q ldquowegwerfenrdquo

          3 Wahle d isin 1 n minus 1 mit e middot d = 1 mod J(n) dh d ist die multiplikative Inverse zu emodulo J(n) Danach kann man J(n) ldquowegwerfenrdquo

          bull (n e) ist der offentliche Schlussel Pbull (n d) ist der geheime Schlussel S (es ist nur d geheim zu halten)

          4 Verschlusselung des Klartextes (bzw seiner Blocke) M isin 1 n minus 1

          C = E((n e) M) = Me mod n

          54

          5 Entschlusselung des Chiffretextes (bzw seiner Blocke) C isin 1 n minus 1

          M = D((n d) C) = Cd mod n

          442 Beweis der Funktionsweise

          (nach wwwcryptooldedownloadsCrypToolScript 1 3 04 depdf)Fur Schlusselpaare (n e) und (n d) die die in den Schritten 1 bis 3 des RSA-Verfahrens festge-legten Eigenschaften besitzen muss fur alle M lt n gelten M equiv (Me)d mod n wobei (Me)d =

          Memiddotd Das heiszligt der oben angegebene Dechiffrieralgorithmus arbeitet korrekt Wir zeigen das in3 Schritten

          1 Im ersten Schritt zeigen wir Memiddotd equiv M mod p Dies ergibt sich aus den Voraussetzungenund dem Satz von Fermat Da n = p middot q und J(p middot q) = (p minus 1) middot (q minus 1) und da e undd so gewahlt sind dass e middot d equiv 1 mod J(n) gibt es eine ganze Zahl k so dass gilte middot d = 1 + k middot (p minus 1) middot (q minus 1)

          Memiddotd equiv M1+kmiddotJ(n) equiv M middot MkmiddotJ(n) equiv M middot Mkmiddot(pminus1)middot(qminus1) mod p

          equiv M middot (Mpminus1)kmiddot(qminus1) mod p

          (aufgrund des kleinen Fermat Mpminus1 equiv 1 mod p)

          equiv M middot (1)kmiddot(qminus1) mod p

          equiv M mod p

          Die Voraussetzung fur die Anwendung des kleinen Fermat war dass M und p teilerfremdsind Da das im allgemeinen nicht gilt mussen wir noch betrachten was ist wenn M undp nicht teilerfremd sind da p eine Primzahl ist muss dann notwendigerweise p ein Teilervon M sein Das heiszligt aber

          M equiv 0 mod p

          Wenn p die Zahl M teilt so teilt p erst recht Memiddotd Also ist auch

          Memiddotd equiv 0 mod p

          Da p sowohl M als auch Memiddotd teilt teilt es auch ihre Differenz (Memiddotd minus M) equiv 0 mod pUnd damit gilt auch in diesem Spezialfall unsere zu beweisende Behauptung

          2 Vollig analog beweist man Memiddotd equiv M mod q

          3 Nun fuhren wir die Behauptungen der ersten beiden Schritte zusammen fur n = p middot qum zu zeigen Memiddotd equiv M mod n fur alle M lt n Nach den ersten beiden Schritten gilt(Memiddotd minus M) equiv 0 mod p und (Memiddotd minus M) equiv 0 mod q also teilen p und q jeweils dieselbeZahl z = (Memiddotd minus M) Da p und q verschiedenen Primzahlen sind muss dann auch ihrProdukt diese Zahl z teilen Also gilt

          (Memiddotd minus M) equiv 0 mod p middot q

          55

          oderMemiddotd equiv M mod p middot q

          oderMemiddotd equiv M mod n

          45 Schwachen von RSA

          bull Wenn N Nachrichten aus einer kleinen Menge gewahlt werden ist RSA unsicher

          for Nprime do (Nprime)e = C1 if C1 = C then N = Nprime

          bull Wenn N und e zu klein sind ist RSA unsicher dass heiszligt wenn Ne als Zahl kleiner als nist so das nich modulo gekurzt wird so kann man einfach eradicc

          bull Angriff mit frei gewahlten Chiffretext angenommen man hat Zugriff auf die Verschlusse-lungsmaschine so dass man mit selber vorgebenen Cprime Nprime berechnen kann (Cprime minusrarr Nprime)

          Re = S mod n S d = R mod n Cprime = S middotC

          (Cprime)d = S d middotCd = R middot N︸︷︷︸Nrsquo

          mod n

          Nprime middot Rminus1 = N mod n

          N1 minusrarr C1

          N2 minusrarr C2

          rArr N1 middot N2 minusrarr C1 middotC2

          bull Jeder Benutzer braucht ein eigenes n dass heiszligt man muss fur jeden Benutzer die entspre-chenden Primzahlen suchen allerdings ist dies aufwendig

          bull RSA ist extrem langsam im Vergleich zu symmetrischen Verfahren openssl speed rsabzw speed aes-256

          46 Fuktionen in OpenSSL

          461 genrsa

          genrsa erzeugt Schlusselpaare fur RSASchlussellange num_bits frei wahlbar wobei es einen Bug bei kleinen Werten gibt (weniger als60 Bit) so kurze Schlussel aber auch nicht verwendet werden solltenOptionen

          usage genrsa [args] [numbits]

          -out file output the key to file

          -passout arg output file pass phrase source

          56

          -f4 use F4 (0x10001) for the E value

          -3 use 3 for the E value

          -des encrypt the generated key with DES in cbc mode

          -des3 encrypt the generated key with DES in ede cbc mode (168 bit key)

          -idea encrypt the generated key with IDEA in cbc mode

          -aes128 -aes192 -aes256 encrypt PEM output with cbc aes

          -engine e use engine e possibly a hardware device

          -rand filefile load the file (or the files in the

          directory) into the random number generator

          462 rsa

          rsa gibt den public-key zu gegebenen private-key aus Auszligerdem auch weitere Informationenwie verwendeter Modulus Mit rsa kann auch ein gegebener key neu verschlusselt abgespeichertwerden

          rsa [options] ltinfile gtoutfile

          where options are

          -in arg input file

          -out arg output file

          -pubin expect a public key in input file

          -pubout output a public key

          -passin arg input file pass phrase source

          -passout arg output file pass phrase source

          -text print the key in text

          -noout donrsquot print key out

          -modulus print the RSA key modulus

          -check verify key consistency

          -des encrypt PEM output with cbc des

          -des3 encrypt PEM output with ede cbc des using 168 bit key

          -idea encrypt PEM output with cbc idea

          -aes128 -aes192 -aes256 encrypt PEM output with cbc aes

          -inform arg input format - one of DER NET PEM

          -outform arg output format - one of DER NET PEM

          57

          -sgckey Use IIS SGC key format

          -engine e use engine e possibly a hardware device

          463 rsautl

          Mit rsautl konnen Dateien ver- oder entschlusselt und signiert oder verifiziert werden

          Usage rsautl [options]

          where options are

          -in file input file

          -out file output file

          -inkey file input key

          -pubin input is an RSA public

          -certin input is a certificate carrying an RSA public key

          -sign sign with private key

          -verify verify with public key

          -encrypt encrypt with public key

          -decrypt decrypt with private key

          -hexdump hex dump output

          -pkcs use PKCS1 v15 padding (default)

          -oaep use PKCS1 OAEP

          -ssl use SSL v2 padding

          -raw use no padding

          -keyform arg private key format - default PEM

          -passin arg pass phrase source

          -engine e use engine e possibly a hardware device

          464 PKCS

          spater noch ausfuhrlicher hier nur kurz die Verwendung bei RSA

          Padding beginnt mit 0002 endet mit 00 und dann kommt der Chiffretext

          58

          465 OAEP - Optimal Asymmetric Encryption Padding

          Normalerweise wird mit RSA nur ein Schlussel fur eine symmetrische Verschlusselung ver-schlusselt da RSA verglichen mit symmetrischen Algorithmen sehr langsam ist

          Bemerkung Vergleichen mit speed rsa und speed aes (siehe History 21012009)

          Ist die so festgelegte Lange des Klartextes erheblich kleiner als die des RSA-Schlussels so ist einAuffullen der restlichen Bits notig Die implizite Methode (beim Betrachten des Klartextes alsZahl) einfach 0en einzusetzen empfiehlt sich nicht da die Zusatzinformation die ein Angreiferso uber den Klartext bekommt das Decodieren des geheimen Schlussels vereinfacht

          Beim Padding soll diese Gefahr verringert werden Per default wird bei openssl PKCS benutztAllerdings ist die Verwendung von OAEP besser Beim OAEP ist im Gegensatz zum PKCSdie Lange des Klartextes nicht mehr sichtbar (man kann nur noch dass beginnende 00 Byteerkennen) Choosen Plaintext Attacke ist nicht mehr moglich

          Dabei wird essenziell die zu verschlusselnde Nachricht mit einem Hashwert eines Zufalls-Stringsper xor verknupft und so randomisiert Eine Modifikation des benutzten Hashwerts wird dannmit der Nachricht konkateniert und steht beim Entschlusseln wieder zur Verfugung

          1 Label hash Label =

          2 PS erzeugen (alles Nullen 128-1-h-h-1-mdashmmdash)

          3 DB =

          4 Seed wahlen Lange h (irgendwas seed = Hash(irgendwas))

          5 DBmaske = MGF(seed mdashDBmdash)

          6 mDB = DB oplus GBmask

          7 seedmaske = MGF(mDB mdashseedmdash)

          8 mseed = seed oplus seedmaske

          9 EM =

          10 RSA-Verschlusselung C equiv EMe mod n

          MGF Hash Eingabe x Lange l

          tc = Hash(x c)

          mdashcmdash = 4 Byte

          MGF(x l) = t0 t1 t2 t3 |MGF( l)| = l

          59

          Ruckgangig

          1 Entschlusseln

          2 Zerlegen 00 mseed mDB

          3 seedmaske = MGF(mDB mdashmseedmdash)

          4 seed = mseed oplus seedmaske

          5 DBmaske = MGF(seed mdashmDBmdash)

          6 DB = mDB oplus DBmaske

          7 Padding abtrennen

          PKCS1 v15

          Die fur den Modul verwendeten Primzahlen mussen die ersten beiden Bits gesetzt haben dasgarantiert nach Multiplikation der Primzahlen dass das Produkt im oberen Byte das obere Bitgesetzt hat und somit die feste voranstehende 0 uberdeckt

          466 Wie erkennt man an Ciphertexten den Verschlusselungsalgorithmus- DER ASN1

          Standards damit man (zB RSA) verschlusselte Texte erkennt

          DER- distingushed Encoding Rules

          ASN1- Abstract Syntax Notation

          openssl asn1parse -genstr INTEGER4711 -out intasn1 openssl asn1parse -in intasn1 -inform DER

          Integer werden in ASN1 als rsquo 02︸︷︷︸Tag

          lange Datenrsquo kodiert Integers brauchen 1 Byte mehr rsquoDatenrsquo

          damit Das Vorzeichen 00 enthalten ist Integer ist immer mit Vorzeichen

          Tag fur andere Typen

          Bool 01

          Int 02

          Octet String 04

          Bitstring 03 rsquolangersquo rsquoungenutzte bits am Endersquo rsquoByte des Bitstringrsquo [evt ungenutzte Bits]

          Text PRINTABLESTRING

          60

          utf8 UTF8String

          Text mit Zeichen (emailadresse) IA5STRING

          DatumZeit UTC

          mit Jahrhundert GENTIME

          nuscht (der leere Typ) NULL

          Mengentypen seq set

          Mann kann auch eigene Typen generierend EXPLICITAF oder so

          467 Umgehen mit den Schlusselkomponenten

          Ein vollstandiger RSA-Schlussel besteht aus einem Modul (modulus) n = p middot q offentlichemExponent e privatem Exponent d Primzahl 1 p Primzahl 2 q (haufig p gt q) Exponent 1 dpExponent 2 dq Koeffizient qi und kann so ausgegeben und gespeichert werden

          Bei der Version fur rsquoarmersquo werden nur n offentlicher Exponent e und geheimer Exponent dangegeben

          c equiv me mod n (3)

          m equiv cd mod n (4)

          Vorteil der vollstandigen Version Geschwindigkeitserhohung bei der Entschlusselung in Schritt(4)

          dp equiv d mod (p minus 1) d = k middot (p minus 1) + dp

          dq equiv d mod (q minus 1)qi middot q equiv 1 mod q

          m equiv cd mod (p middot q) berechnenm1 equiv cdp mod p 500 Operationen mit 1

          2 langem Modulm2 equiv cdq mod q 500 Operationen mit 1

          2 langem ModulInsgesamt 1000 Operationen mit 1

          4 der Lange

          apminus1 equiv 1 mod p wenn (a p) = 1teilerfremd1

          1kleiner Fermatscher Satz

          61

          m1 equiv cd mod pm2 equiv cd mod q

          h equiv (m1minusm2)middotqi mod p (darauf achten dass das minusm2 mod p ausgerechnet wird nicht mod q)

          m = m2 + h middot q

          1 m lt n2 m equiv cd mod p da m2 + h middot q equiv m2 + (m1 minus m2) middot qi middot q mod p equiv m2 + m1 minus m2 equiv m1 alsoequiv cd mod pm equiv cd mod q da m2 + h middot q equiv m2 mod q also equiv cd mod q

          x equiv y mod p und x equiv y mod q dann folgt x equiv y mod p middot qEuklidischer Algorithmus (p q)-teilerfremd dann p middot u + q middot v = 1 Chinesischer Restsatz

          47 Miller-Rabin Test

          Heute openssl dhparam und was Verbluffendes so dass man es nur mit der Phantasie einesInformatikers oder Mathematikers verstehen kann (Literatur Menezes Oorschot Handbook ofApplied Cryptography)

          Primzahlen Feststellen ob eine Zahl eine Primzahl ist durch Testen von Divisionen wird beigroszligen Zahlen sehr lang

          p middot q = n ausrechnen geht schnell Umkehrung n =middot ist moglicherweise schwer

          Uber 2214+ 1 weiss man dass es keine Primzahl ist2 kennt aber keinen der Faktoren Kriterium

          rdquokeine Primzahlldquo lasst sich auf folgende Art manchmal feststellenWenn (a n) = 1 so ist anminus1 equiv 1 mod nFermatTest Wenn fur (a n) = 1 anminus1 1 mod n so kann n keine Primzahl sein

          Primzahlen Test

          Wenn fur eine Zahl a mit (a n) = 1 der Fermat-Test nicht bestanden wird nennt man a einenZeugen fur Nichtprimalitat

          2Vierzehnte Fermatsche Zahl

          62

          Zeugen gibt es sehr viele nicht realistisch alle zu rdquobefragenldquo Ausserdem gibt es Zahlen diekeine Zeugen haben aber keine Primzahl sind

          Aus diophantischen Gleichungen folgt Es gibt ein Polynom mit ganzzahligen Koeffizienten f (n)mit der Eigenschaft Wenn f (n) gt 0hArr n ist PrimzahlAber das Polynom hat 26 Koeffizienten Fur Mathematiker ist das Problem erledigt da das Poly-nom existiert fur Informatiker ist es das nicht wirklich da die Berechnung ubermaszligig komplexist

          Die Nicht-Primzahlen ohne Zeugen heissen Carmichael-Zahlen Haben die Eigenschaft forallp(p|nrArrp minus 1|n minus 1)rArr CarmichaelZum Beispiel 561 hat Teiler 3 11 17 Der Test liefert 2|560 10|560 16|560

          Erweitern (n Primzahl) Wenn (a n) = 1 und anminus1 equiv 1 mod n und 2|n minus 1 (anminus1 equiv 1 mod na

          nminus12 equiv )

          Wenn x2 equiv 1 mod n was ist x mod n n|x2 minus 1 = (x minus 1)(x + 1) entweder n|x + 1 odern|x minus 1

          FermatTest+ Wenn fur (a n) = 1 anminus1 1 mod n oder falls anminus1 equiv 1 mod n und anminus1

          2 +1und a

          nminus12 minus1 so kann n keine Primzahl sein

          und 4|n minus 1 anminus1

          4 anminus1

          2 anminus1

          1 mod n Diese Folge ist entweder 1 1 1 oder minus1 1 1 oderlowastminus1 1

          Wenn (a n) = 1 und 2k|nminus 1 (k maximal) dann ist die Folge anminus12k a

          nminus12kminus1 a

          nminus12 anminus1 entweder

          1 1 oder lowastminus1 1 1 (lowast steht fur beliebige Folge)

          Probieren n = 81 n minus 1 = 80 durch 2er-Potenzen teilen kommt irgendwas mit 5 hinten rausAls Zeugen nehmen wir mal 2 Ausrechnen 25 210 220 240 280 und schauen ob diese Folgemodulo 81 einen der beiden Typen hat 32 1 mod 81

          FermatTestlowast (= Miller-Rabin-Test) Wenn fur (a n) = 1 2k|n minus 1 teilt und die Folge anminus12k a

          nminus12kminus1

          anminus1

          2 anminus1 modulo n nicht 1 1 und nicht lowastminus1 1 1 dann ist a ein Zeuge fur Nicht-primalitat

          Fur Miller-Rabin-Test gibt es keine zeugenlosen zusammengesetzten Zahlen es gibt unter denzu n teilerfremenden Zahlen mindestens 25 Zeugen3 (MenezesOorschot Kapitel 4 Fact 425Fact 448 Tabelle 43)

          Die fur Informatiker interessante Frage ist die Frage Wenn man eine Wahrscheinlichkeit kleiner2minus80 fur eine fehlerhaft durch Miller-Rabin nicht erkannte zusammengesetzte Zahl haben will

          3Anmerkung spater 34 sind Zeugen 1

          4 sind Lugner

          63

          muss man fur n (512 Bit) 6 Tests machen Je groszliger die Zahlen werden desto weniger Testsmuss man machen Fur 1024 3 Tests fur 2048 2 Tests Vorausgesetzt ist immer noch ein Testauf kleine Faktoren Dabei pruft man ob (n pi) = 1 fur pi lt B wobei pi kleine Primzahlen sindDas B wahlt man so dass dieser Test nicht langer dauert als ein Miller-Rabin-Test

          Wie wahlt man Primzahlkandidaten Generiere Zahl mit Zufallszahlengenerator schaue ob diedurch 2 oder so teilbar ist wahle dann die nachste Zahl

          openssl dhparam -dsaparams -text -noout 2048 schnellopenssl dhparam -text -noout 2048 langsam

          Safe Prime pminus12 hat einen groszligen Primzahlfaktor q dann getestet ob 2(k middot (q + 1)) Primzahl ist

          pminus12 ist Primzahl

          Wofur braucht man die Primzahlen Naturlich fur RSA und jetzt neu

          48 Diffie-Hellman-Schlusselaustausch

          Alice und Bob haben gemeinsame offentliche Informationen tauschen offentliche Informationenaus und verfugen danach beide uber einen gemeinsamen privaten Schlussel

          g = 2 (offentlich bekannt (Generator)) Primzahl p (offentlich bekannt)

          Erganzungen g g2 g3 gpminus1 mod p (g Generator dann alle verschieden)

          Bob Alice

          Eve

          x y

          g^y mod p

          g^x mod p

          64

          Bob wahlt zufallig 1 lt x lt pminus 1 und ruft Alice gx mod p zu Alice wahlt zufalig 1 lt y lt pminus 1und ruft gy mod p zu

          Bob berechnet (gy)x mod p und Alice berechnet (gx)y mod p Beide erhalten gxmiddoty mod p An-greifer Eve kennt nur gx mod p gy mod p fehlt gxmiddoty mod p

          Wenn Eve das diskrete Logarithmusproblem losen konnte also zu gx mod p und g mod pdas x ausrechnen konnte dann ware gxmiddoty mod p leicht zu berechnen Die besten Algorithmenfur das diskrete Logarithmusproblem mod p sind subexponentiell im groszligten Primfaktor vonp minus 1

          Falls (p minus 1) viele kleine Primfaktoren pi hat ist das diskrete logarithmus Problem leicht denndann lost man das Problem nicht a mod (pminus1) sonder jeweils a mod pi und setzt0 dass ganzedann mit dem Chinesischen Restsatz zusammen

          Sucht p so dass pminus12 auch eine Primzahl ist dazu wird zuerst eine Primzahl pprime gesucht und dann

          geguckt ob 2pprime + 1 auch Prim ist

          Openssl

          Variante DH (DSAparam) (-dsaparam)

          p-Primzahl 1536

          g-rsquoGeneratorrsquo nicht von (p minus 1) sondern von der Restklasse h

          160 Bit g g2 g3 gh alle verschieden mit h=160 Bit

          Dann sollen xy so gewahlt werden dass 1 lt x y lt h = 160 Bit

          Ein weiteres asymmetrisches Cryptosystem kann man darauf aufbauen Alle kennen g und pjeder generiert sich x (privater Schlussel) und gx mod p wird veroffentlichtAlice will Bob etwas verschlusselt schickenSie generiert ein k berechnet aus k und Bobs veroffentlichtem gx a = (gx)k mod p und ausdem allgemein bekanntem g gk mod pM sei die Nachricht ( mod p) die Alice verschicken will Sie berechnet a middot M mod p undsendet an Bob das Paar (gk mod p a middot M mod p)Bob berechnet (gk)x mod p = a und dividiert amiddotM

          a mod p und erhalt somit M

          Der Schlussel a darf nicht zweimal verwendet werden

          Man nennt (gk a) zeitweiliger bzw ephemeraler Diffie Hellmann Schlussel

          Nachteil die Nachrichtenlange wird verdoppelt

          65

          Das Verfahren ist unsicher wenn Alice die Zahl x schlecht wahlt x = 1 2 1 2 1 2 1 = x1 x2

          49 ElGamal-Cryptosystem

          (siehe auch TR 3111 vom BSI auf Seite 21)

          Auf Diffie-Hellmann aufbauendAlice offentlicher Schlussel ga (p g) privat aBob offentlicher Schlussel gb (p g) privat b

          Alice will an Bob schicken

          1 Zufallszahl k generieren

          2 Berechne mit Bobs Parametern gk mod p

          3 Berechne mit Bobs Parametern (gb)k mod p (DH-Schlussel)

          4 Berechne m middot (gb)k mod p

          5 Sende(gkm middot (gb)k

          )mod p

          Bob empfangt (x y)

          1 Berechne xb mod p (DH-Schlussel)

          2 y middot (xb)minus1 mod p = m mod p

          Alice baut also einen temporaren DH-Schlusselteil4 zu Bobs Parametern und sendet diesen unddie damit verschlusselte Nachricht m

          Nachteil Nachricht wird durch den Ephemeralschlussel doppelt so lang

          410 Wiederholung DH

          Generator gPrimzahl pga mod p Restklassen mod p = Korper(middot inverses)Dass p Primzahl ist ist eigentlich ZufallErzeugendes Element GOperation auf Elementen +

          a middotG = G + G + G + + G a-malEs muss schwer sein aus G und B = a middotG gegeben das a zu bestimmenG muss eine Ordnung n haben n middotG = 0 (Neutrales Element der Operation +)

          4Auch Ephemeralschlussel genannt

          66

          4101 Beispiel

          Alice Bob G+ nAlice denkt a denkt a middotGBob denkt b denkt b middotGBeide tauschen a middotG und b middotG aus und berechnen a middot b middotGa middotG ist leicht zu berechnen double and adda = a0 + a1 middot 2 + + ak middot 2k

          a middotG = a0 middotG + a1 middot 2 middotG + + ak middot 2k middotG(k minus 1)-mal rdquomiddot2ldquo und (k minus 1)-mal rdquo+ldquo

          411 was anderes

          Nimmt man nun G groszlige Gruppe mit n Elemente und der Addition +

          g-Generator

          g 2g 3g nG︸︷︷︸Nullelement

          Alice wahlt 1 lt x lt n bestimmt x middot g

          Bob wahlt 1 lt y lt n bestimmt y middot g

          Dann wieder K = (ab) middot g = K

          To do erganzen

          Problem des Diskreten Logarithmus in G gegeben ist G g Generator ist 0 c = a middot g in Ggesucht alogGc-diskreter Logarithmus in G

          Diese Variante funktioniert also mit allen rsquoKomplizierten Gruppenrsquo das fuhrt zu dem nachstenThema

          412 Elliptische Kurven

          Wo gibt es so etwas schon Elliptische Kurven Sind nicht weit verbreitet weil sie dem Mana-gement schwer zu erklaren sind

          67

          Aus der Wikipedia (unter GNU Free Documentation License)

          In der Zahlentheorie ist eine elliptische Kurve eine singularitatenfreie algebraische Kurve derOrdnung 3 in der projektiven Ebene

          Von besonderem Interesse zB fur die Faktorisierung naturlicher Zahlen sind aufgrundihrer einfachen Struktur elliptische Kurven der Form cy2 = x3 + ax + b mit c 0 und 4a3 +

          27b2 0 Einige moderne Verschlusselungsverfahren basieren auf solchen Kurven Der Nameleitet sich historisch davon ab dass diese Kurven durch elliptische Integrale parametrisiertwerden konnen

          Elliptische Kurven uber endlichen Korpern werden in der Kryptografie eingesetzt Dazuwird ausgenutzt dass eine Gerade (lineare Funktion) die zwei Schnittpunkte P und Q mit ei-ner Elliptischen Kurve hat diese auch in einem 3 Punkt schneidet Der Punkt der aus demletzteren durch Verkehren des Vorzeichens der Y-Koordinate (wenn die Kurve die oben ange-gebene Form hat) entsteht wird P + Q genannt Man kann zeigen dass diese Punktaddition(P und Q werden addiert das Ergebnis ist der Punkt P + Q) sowohl kommutativ als auch as-soziativ ist Erganzt man die Elliptische Kurve um einen weiteren Punkt 0 (genannt Punkt imUnendlichen) so bildet sie zusammen mit der (etwas erweiterten) Punktaddition eine abelschealgebraische Gruppe

          Sei nun P ein Punkt der Elliptischen Kurve Der Punkt P + P wird mit 2P bezeichnetentsprechend definiert man kP = P + + P als k-fache Addition des Punktes P Ist P nichtder 0-Punkt und ist die Ordnung der Elliptischen Kurve prim so kann auf diese Weise jederPunkt der Kurve erreicht werden (dh zu jedem Punkt Q auf der Kurve existiert eine naturlicheZahl k mit Q = kP) Die Aufgabe aus gegebenen Punkten PQ diesen Wert k zu ermittelnwird als Diskretes Logarithmus-Problem der Elliptischen Kurven (kurz ECDLP) bezeichnetEs wird angenommen dass das ECDLP (bei geeigneter Kurvenwahl) schwer ist dh nichteffizient gelost werden kann Damit bieten sich Elliptische Kurven an um auf ihnen asymme-trische Kryptosysteme zu realisieren (etwa einen Diffie-Hellman-Schlusselaustausch oder einElgamal-Kryptosystem)

          y2 = x3 + a middot x + b Skizze der Kurven S2Zu S2 Punkte auf der Kurve kann man addieren

          Die Rechenregeln gehen auch in einem Korper mod pBeispiel y2 equiv x3 + a middot x + b mod p Skizze S3

          Es gibt immer Punkte mit denen man rechnen kann Punkte sind geeignet die Addition funk-tioniert auch und hat die Anzahl N der Punkte einen groszligen Primzahlteiler dann haben wir auchKryptosystem mit G+ n Wenn groszliger Primzahlteiler exisitert1 N hat groszligen Primzahlteiler n2 Wahlen zufallig einen Punkt G als GeneratorDaraus erhalt man DH und El Gamal

          Zuerst eingefuhrt durch Victor Miller und Neal Koblitz um 1980 herum Damals war N schwer

          68

          bestimmbar Inzwischen gibt es bekannte Algorithmen (Schoof-Algorithmus)Diskretes Logarithmusproblem ist fur elliptische Kurven wirklich exponentiell (bis jetzt) EinBit mehr verdoppelt den Rechenaufwand (192-Bit-256 Bit bewegt sich in GroszligenordnungenRSA 2000-4000-Bit)

          Erganzung

          1Bei der Erforschung von Eliptischen Kurver stellte sich zuerst die Frag wie groszlig ist eigentlichdie Ordnung n der Gruppe Man wusste n sim p und man wusste sogar n minus p + 1 minus

          radicp lt n lt

          minusp + 1 +radic

          p

          2 Schnelle Algorithmen zur Berchnung der Ordnung

          3 ECDLP ist schwer wenn n einen groszligen Primfaktor hat

          To do sortieren

          Erganzung

          man hat p a bG n h

          K = y2 = x3 + ax + b

          p ist fur die Punktaddition (Formeln siehe enwikipediaorg wobei λ = (yQ minus yP) middotminus1

          (xa minus xp)︸ ︷︷ ︸mit GGT

          mod p)

          Anmerkung zum Wikipedia Artikel binary Case bedeutet man die Eliptischen Kurven auch inKorper mit 2k betrachten allerdings vieler solcher Falle patentiert

          G = Generatorpunkt mit G 2G 3G nG alle verschieden n kleinste Zahl so dass alle ver-schieden

          nG = 0

          bei der DSA-Parameter Form nimmt man weniger Grsquos

          Der nachste Parameter ist der cofactor h welches den Unterschied zwischen n und der Anzahlder Produkte auf der Kurve angibt

          Trick beim testen ob alle iG verschieden sind man guckt ob n eine Primzahl ist und ob nG = 0ist wenn ja ist dies das erste mal sonst ware n ja keine Primzahl Also sind alle vorherigen iG

          69

          verschieden

          Kurven finden besser Bestimmung der Punktanzahl ist schwer

          Fruher gab es kleine cofactoren h lt 16

          openssl ecparama -list_curves sind schon vorher erzeugt kann openssl nicht selber

          openssl ecparam -name secp160k1 -text -noout da die Kurve festgelegt ist gibt es nurein object zuruck

          openss ecparam -name secp160k1 -text -param_enc explicit -noout

          openss ecparam -name secp160k1 -text -param_enc explicit -noout -conv_form compressednichtkomprimiert gibt nur die x-Koordinate aus

          Bei der komprimierten Form kann mit der Kurve die andere eindeutig bestimmen (oder so)

          Darstellung als komprimierte Punkt ist auch wieder patentiert

          413 Elliptische Kurven Nachtrag

          GF(p) (Galois-Field) sind Kurven mod p mit p Primzahl erfullen Gleichungen der Form y2 =

          x3 + a middot x + b

          GF(2k) Korper mit 256 Elementen = 28

          In OpenSSL nur elliptische Kurven mod p patentfrei

          Kofaktor finden Wir haben Punktgruppe G es gibt einen Generatorpunkt gn middotG = 0 n ist die Ordnung

          cofactor︸ ︷︷ ︸klein

          lowast order︸︷︷︸primzahl

          = Anzahl der Punkte

          (cofactor soll klein sein order Primzahl) Anstelle Punkt auf der elliptischen Kurve als (x y) (x ymod p) abzuspeichern TrickWenn es ein Punkt ist gibt es zu x zwei y die quadratische Gleichung y2 = x3 +a middot x+b erfulleny1 =

          radicx3 + ax + b mod p

          y2 = minusradic

          x3 + ax + b mod peine der beiden Zahlen hat als letztes Bit immer 1 die andere eine 0 man nimmt daher nur noch(x LSB(y)) (x und kleinstes Bit von y)

          70

          414 Rucksack-Verschlusseln

          Kryptosystem das sich bei OpenSSL zu recht nicht findet Hat den Anschein als wurde es aufeinem NP-vollstandigen Problem beruhen Problem ist NP-vollstandig weil es ein allgemeinesRucksackproblem istSieht aber nur so aus ist aber nur polynomial weil es ein Transformiertes eines leichten Ruck-sackproblems ist

          Gegeben W Fassungsvermogen des Rucksacks w1w2 wk kleine GewichteGesucht W =

          sumeiwi mit ei isin 0 1

          Rucksack-Verschlusseln von MerkleHellmann Rucksack mit schnell wachsenden Gewichtenist leicht zu berechnendh wi gt

          sumjlti e jw j nachstes Gewicht ist immer schwerer

          4141 Beispiel

          Rucksack W = 51 = 31 + 15 + 3 + 2 wprimei s 2 3 7 15 31Grundidee Aus dem schnellen Rucksack einen langsamen machenM gt

          sumwi k mit (M k) = 1 k middot 2 k middot 3 k middot 31 mod M

          M = 61 ist Modul k = 17 ist privater Schlussel m = (1 1 0 1 1) ist unverschlusselte Nachricht31 51 58 11 39 ist offentlicher Schlussel 34 + 51 + 11 + 39 = 135 = 13rarr c ist verschlusselteNachrichtEmpfanger rechnet aus dem erhaltenen Gewicht (135) das richtige Gewicht wieder raus 135middotkminus1

          mod 61 = 51 und kann das Problem mit den schnellen Gewichten losen

          Zum BrechenMan transformiert 34 51 58 11 39 in eine Folge die schnell wachsend ist zB 1 3 5 11 29dh das transformierte System kann auf mehrere Probleme zuruckgefuhrt werden man brauchtnur eine passende Rucktransformation finden Adi Shamir hat dafur einen polynomiellen Algo-rithmus angegeben

          415 Merkle Puzzle

          Man generiert sich 1000000 Nachrichten rdquoDas ist Nachricht ni fur den Schlussel k jldquo ni zufalli-ge 20-Bit Zahl k j 128-Bit SchlusselVerschlusselungsverfahren DES diese 1000000 werden mit 20-Bit Schlusseln verschlusseltAlice schickt die 1000000 Nachrichten an Bob als offentlichen SchlusselBob will Alice eine Nachricht schicken Er sucht eine der Nachrichten aus dem offentlichen

          71

          Schlussel aus und macht eine Brute-Force Attacke auf diese Nachricht Er findet ni und kiBob verschlusselt mit dem ki seine Nachricht und sendet ni im Klartext mit

          Alice und Bob haben linearen Aufwand Eve quadratischen

          Von everything2comAlice and Bob agree on a symmetric algorithmAlice generates a large number (over a million at least) of messages of the form ldquoThis is myindex X and my puzzle is Yrdquo Each of the messages is encrypted with a 20-bit keyAssume there are 220 (about a million) messages it takes 220 operations to get the key and acomputer can perform 220 operations per second Bob takes 1 second to recover the key to amessage Eve takes 12 daysNow make that 230 (about a billion) messages Bob still only takes a second to get the key andit will take Eve 34 years

          Public Key Idee hier schon vorhanden

          416 Rabin-Verfahren und Wurzelziehen

          Aus der Wikipedia (unter GNU Free Documentation License)

          Das Rabin-Kryptosystem ist innerhalb der Kryptologie ein asymmetrisches Kryptosystem dasauf einem Faktorisierungsproblem beruht und mit RSA verwandt ist Es lasst sich prinzipiellauch zur Signatur verwenden In der Praxis findet das Verfahren allerdings wegen bestimmterAngriffsmoglichkeiten kaum Anwendung

          4161 Schlusselgenerierung

          Aus der Wikipedia (unter GNU Free Documentation License)

          Seien p und q zwei moglichst groszlige Primzahlen fur die eine bestimmte Kongruenzbedingunggelten muss Der offentliche Schlussel n wird durch Multiplikation der beiden Zahlen erzeugtalso n = p middot q Der geheime Schlussel ist das Paar (p q) Anders ausgedruckt Wer nur n kenntkann ver- aber nicht entschlusseln wer dagegen p und q kennt kann damit auch entschlusselnZum Erzeugen des offentlichen Schlussels mussen die Zahlen p und q bekannt sein Der offent-liche Schlussel lasst sich nur genau aus den beiden Primzahlen erzeugenWaren p und q keine Primzahlen so lieszlige sich das Verfahren ubrigens nicht anwendenSeien beispielhaft p = 7 q = 11 (in der praktischen Anwendung handelt es sich um sehr vielgroszligere Zahlen um die Entschlusselung durch Dritte so schwierig wie moglich zu machen)Daraus ergibt sich der offentliche Schlussel n = p middot q = 77

          72

          4162 Kongruenzbedingung

          Aus der Wikipedia (unter GNU Free Documentation License)

          Fur p und q muss die Kongruenzbedingung(

          pminus1p

          )= (p minus 1) und

          ( qminus1q

          )= (q minus 1)

          (wobei fur(

          nminus1n

          )= (n minus 1)

          nminus12 equiv (n minus 1) mod n = (n minus 1) gilt)

          oder einfacher ausgedrucktp equiv q equiv 3 mod 4gelten

          Allgemein gilt namlich fur die Primzahl r mit r equiv 3 mod 4 und die Zahl a mit a equivb2 mod ra

          (r+1)4 equiv

          radica mod r

          Diese Eigenschaft dient dazu spater die Entschlusselung zu erleichternWegen 7 equiv 11 equiv 3 mod 4 ist die Kongruenzbedingung fur das Beispiel erfullt

          n = p middot q Produkt von Primzahlen

          m soll verschlusselt werden c equiv m2 mod n (einfach Quadrieren weil Wurzelziehen schwer istwenn der Modul ein Produkt von 2 Primzahlen (p middot q) ist weil wer Wurzel ziehen kann kannauch Faktorisieren (n)

          Begrundung Es gibt 2 Losungen c = x2 equiv y2 mod n Wie findet man nun die Faktoren von nn teilt x2 minus y2 = (x minus y)(x + y) und x gt y und (x minus y) lt n und n hat nur 2 Primfaktoren daherx minus y = p und x + y = q Wurzelziehen ist leicht mod p mod q Gesucht Wurzel c mod pxp = c

          p+14 mod p und xq = c

          q+14 mod q

          x2p equiv c

          p+12 equiv c

          pminus12 middot c mod p

          Weil cpminus1 equiv 1 mod p ist (nach kleiner Fermat) die Wurzel daraus cpminus1

          2 equiv plusmn1 wegen c equiv m2

          mod n gilt (m2)pminus1

          2 equiv mpminus1 equiv 1(p) Stuck fehlt Ende des Wurzelziehens

          4163 Verschlusselung

          Aus der Wikipedia (unter GNU Free Documentation License)

          Sei nun P = 0 nminus1 der Klartextraum (er besteht also aus Zahlen) und m isin P der KlartextNun lasst sich der Geheimtext c durch c = m2 mod n bestimmen Dabei ist c der QuadratischeRest von zu der Quadratzahl m2 zum Modulo der Schlussel-Zahl n Im praktischen Einsatzbietet sich die Verwendung von Blockchiffre an

          In unserem Beispiel sei P = 0 76 der Klartextraum m = 20 der Klartext Der Ge-heimtext ist hierbei nun c = m2 mod n = 15

          73

          Dabei muss man beachten dass fur genau vier verschiedene m das c den Wert 15 aufweistnamlich fur m isin 13 20 57 64 Ahnliches gilt fur die meisten c

          4164 Entschlusselung

          Aus der Wikipedia (unter GNU Free Documentation License)

          Seien allgemein c und r bekannt gesucht wird m isin 0 n minus 1 mit m2 equiv c mod r Furzusammengesetzte r (beispielsweise unsere n) existiert kein effizientes Verfahren zur Bestim-mung von m Ansonsten wenn also r isin P (in unserem Fall p und q) dann lasst sich jedoch derchinesische Restsatz ausnutzen

          In unserem Fall sind nun die Quadratwurzelnmp =

          radicc mod p

          undmq =

          radicc mod q

          gesuchtWegen obiger Kongruenzbedingung gilt

          mp = c(p+1)

          4 mod pundmq = c

          (q+1)4 mod q

          In unserem Beispiel ergeben sich mp = 1 und mq = 9Mit dem erweiterten euklidischen Algorithmus werden nun yp und yq mit yp middot p+yq middotq = 1

          bestimmt In unserem Beispiel erhalten wir yp = minus3 und yq = 2Nun werden unter Ausnutzung des chinesischen Restsatzes die vier Quadratwurzeln +r

          minusr +s und minuss von c + nZ isin ZnZ berechnet (ZnZ steht hierbei wie ublich fur die Menge derRestklassen modulo n die vier Quadratwurzeln liegen in der Menge 0 n minus 1)

          r = (yp middot p middot mq + yq middot q middot mp) mod nminusr = n minus rs = (yp middot p middot mq minus yq middot q middot mp) mod nminuss = n minus s

          Eine dieser Quadratwurzeln mod n ist wieder der anfangliche Klartext m Im Beispielgilt m isin 64 20 13 57

          417 Angriffe auf asymmetrische Verschlusselungsverfahren

          Fall RSA

          74

          4171 1 Angriff Common modulus attack

          Idee Gleicher Modul fur verschiedene Leute hatte den Vorteil dass man sich nur die kleinenoffentlichen Exponenten e1 und e2 merken muss nicht mehr die groszligen Module hat aber Nach-teil (e1 e2) = 1 teilerfremd umiddote1+vmiddote2 = 1 (mit erweitertem Euklid) Sendet man eine Nachrichtm an zwei Alices berechnet also c1 = me1 mod n und c2 = me2 mod n dann kann man mitden Chiffren c1 und c2 auch ausrechnen cu

          1 middot cv2 = me1u middot me2u = me1u+e2v = m mod n Nachricht

          erhalten

          4172 2 Angriff kleiner geheimer Exponent d

          Wenn |d| lt |m|3 dann ist Faktorisieren moglich Sicherheitsrisiko geheimer Exponent muss im-

          mer moglichst groszlig sein aus groszligem offentlichen Exponenten |e| kann man erfahren dass dergeheime Exponent klein ist

          4173 3 Angriff Faktorisieren

          Wenn p ungefahr so groszlig wie q also p minus q = ∆ klein ist dann ist ( p+q2 + ∆

          2 ) (ungefahr Wurzel n+ was kleines = p) middot( p+q

          2 minus∆2 ) = p middot q Man weiszlig dass die eine Zahl uber Wurzel n liegt und die

          andere Zahl unter Wurzel n (Wurzel n + klein = p Wurzel n - klein = q)

          4174 Echt schlechte RSA-Schlussel

          n = 3middotq (1024 Bit) und offentlichen Exponenten bei TCTrustCenter abgegeben Damit kann manzeigen dass PGP als Signaturverfahren schlecht ist Schlussel schlecht gewahlt dadurch kannjeder die Kommunikation mitlesen da n sehr leicht zu Faktorisieren die Leute sie konntender Person mit dem schlechten Schlussel vertrauenswurdige Nachrichten schicken und laufenin die Falle dass ihre Nachrichten nun offentlich sind Anderer Fall Bewuszligt solche Schlusselvergeben um Nachrichten in einem kompletten Netzwerk lesen zu konnen

          n = Primzahl e middot d equiv 1 mod (n minus 1)

          Mit n als Primzahl geht normale Entschlusselung nicht

          n p q e dp dq qi dc equiv me mod nm1 equiv cdp mod pm2 equiv cdq mod qdp equiv d mod (p minus 1)

          75

          dq equiv d mod (q minus 1)

          m = m2 + (m1 minus m2) middot qi︸ ︷︷ ︸mod p

          middotq

          m equiv cd mod q und m equiv cd mod prArr cd

          Bundesamt fur Informationssicherheit sagt zur Verwendung von RSA p q mussen unabhangigvoneinander zufallig erzeugt werden und 0 5 lt | log2 p minus log2 q| lt 30

          4175 Schnelles Faktorisieren bei Fehler im System

          DFA - Differential Fault Attack System das entschlusselt aber sich an einer Stelle verrechnetmprime1 ist Rechenfehler statt wirkliches m bekommt man ein mprime = m2 + (mprime1 minus m2)qi lowast qbildet man nun m minus mprime 0 aber durch q teilbar dh bringt man das System dazu einen Fehlerzu machen und hat man die Originalnachricht GGT (m minus mprime n) = q schon hat man den Mo-dul faktorisiert hat funktioniert viele Chipkarten verrechneten sich unter Streszlig Es reicht dasmprime zu kennen m kann unbekannt bleiben denn man rechnet (mprimee minus c n) = q es reicht eineentschlusselte Nachricht zu haben

          Anderer Angriff auf ChipkartenDPA - Differential Power Analysis Stromverlauf ansehen Differenzen bilden und sequentiellanalysieren

          Angriff auf El Gamal Systemegeheimer Schlussel a offentlich g p ga Verschlusselte Nachricht zufalliges k (gk mmiddotgak)= c 1Angriff k gleich fur verschiedene Nachrichten oder k1 k2 in Abhangigkeit oder k k+1 k+2 fur verschiedene Nachrichten oder a middot k + b

          4176 Angriff mit gewahltem Chiffretext

          Normalerweise bei RSA m minusrarr c = me mod n

          cprime vorgegeben fuhrt zu Klartext mprime = (cprime)d mod nAnforderung Beliebiger Chiffretext auszliger cprime = c wahlbar zu dem man dann den Klartext erhalt

          Problem bei RSA

          1 r (zufallig gewahlt)rarr re mod n = s

          2 cprime = s middot c mod nVerschlusselungsmaschine liefert dann (cprime)d = sd middot cd = (re)d middot m = r middot m mod n = mprime

          76

          3 Letzter Schritt m = mprime = rminus1 mod n

          Das geht nur theoretisch in der Praxis geht das nicht weil Angreifer kann das r nicht steuernr middot m wird aber von der Verschlusselungsmaschine verworfen weil es bei zufalligem r keinkorrektes Padding hat

          Schwache des RSA Multiplikationseigenschaftm1 rarr c1 und m2 rarr c2 (m1 m2 gultige Klartexte)m1 middot m2 rarr c1 middot c2m1 middot m2 nicht als gultiger Klartext zugelassen

          5 Signaturmechanismen

          Wie erstellt man signierte Daten und versucht ein Aquivalent zu dem zu schaffen was man imtaglichen Leben durch Unterschriften schafftEigenschaften einer Signatur sollen nachgebildet werden Man weiszlig von wem ein Dokumentkommt sie ist an eine Person gebunden und kann von niemanden sonst nachgemacht werden undvom Inhaber nicht abgestritten werden Nachtragliche Anderungen an unterschriebenen Doku-menten sollen nicht mehr moglich sein (gibt es so im echten Leben nicht)

          51 Integritatsschutz und Hashfunktionen

          To do neu Hashfunktionen Definition einsortieren

          Hashfunktion Beliebige Daten werden auf Binarfolgen konstanter Lange abgebildet

          Def Eine Hashfunktion H ist eine Abbildung 0 1lowast rarr 0 1k auf Hashwerte der Lange k

          SHA-256 (SHA- Secure Hash Algorithmen) - Hashwerte der Lange 256 Bit

          1 Es gibt Kollisionen

          d1 d2 H(d1) = H(d2)

          2k Hashwerte aber potentiell abzahlbar viele Daten

          Wunsch

          Man soll diese Kollisionen nicht finden konnen und am besten es gibt sie nicht Hashfunktionendienen zum unterscheiden von Daten

          77

          H(d1) H(d2) dann ist d1 d2

          Dementsprechend groszlig muss das k sein so dass genugend viele Werte unterscheiden kann

          Anforderungen an Hashfunktionen

          Wunsch Kollisionsresitent (schwer Kollisionen zu konstruieren) man kann nicht zwei Doku-mente mit dem gleichen Hashwert konstruieren

          Wunsch Zweites Urbild resistent (schwer zweites Urbild zu konstruieren) man kann zu einemDokument nicht ein zweites mit dem gleichen Hashwert bestimmen

          Geburtstagsparadoxon Kollisionen entstehen zum Beispiel in Horerkreisen 23 Horer(innen)dann haben mit mehr als 50 Wahrscheinlichkeit zwei am gleichen Tag Geburtstag

          H Horer rarr Datum h 7rarr Geburtstag(h)

          h1 h2 H(h1) = H(h2)

          Bestimme die Wahrscheinlichkeit dass keine zwei am gleichen Tag Geburtstag haben

          1 minus g =365middot middot(365minusn+1)

          (365n) wobei n die Anzahl der Horer ist (Fur n = 23 ungefahr 50)

          radic365 20

          g radic

          Hashwerte

          Bei 2128 Hashwerte muss man mit Kollisionen rechnen ( Bsp 30 bei 19 Personen 19 radic

          365)

          Merke Das Geburtsatgs Paradox beschert uns Kolisionen bei 2k2 Hashwerten

          To do ende Neu

          Hashfunktionen Schon bekannt aus dem ersten Semester (Hashtabellen)

          Allgemeine Eigenschaften

          1 Komprimieren beliebig lange Werte auf n-bit Werte

          2 Einfach (und schnell) berechenbar

          Werte Fingerabdruck Prufwert Hashwert

          78

          Kollisionen h(x) (Hashfunktion) mit x1 x2 aber h(x1) = h(x2) x1 und x2 ist KollisionWahrscheinlichkeit fur Kollision fur zufallig gewahlte Werte sollte 1

          2n sein (Anforderung anHashfunktion)

          Wir verlangen dass die Variabilitat in der Eingabe sich auch in den Prufwerten widerspiegeltsprich Wenn die Eingabewerte gleichverteilt sind sind es auch die Ausgabewerte

          To do 20090422

          To do einsortieren

          Kollisionen rsquovermeidenrsquo durch Groszlige 160 Bit Prufwerte (280 fur Kollision (2100 mdash AES 128 mdashbzw 2112 2128 als Kollisionsschranken)

          Zusatzlich Voraussetzungen fur die Pruffunktion

          1 Kollisionsresistenz Es muss schwer sein zwei Nachrichten m1m2 zu finden so dassH(m1) = H(m2)

          (Es ist schwer Zwillinge zu konstruieren)

          2 Zwillingsresistenz Es muss schwer sein (also kryptografisch Aufwendig) zu einer Nach-richt m1 eine Nachricht m2 zu konstruieren so dass H(m1)FH(m2) ist

          (Wenn man eine Bruder hat dann ist es schwer eine zwillings Schwester dazu zu konstru-ieren)

          (aufwendiger als erstens)

          3 Urbildresistenz Es muss schwer sein zu einem beliebigen Prufwert h eine Nachricht zukonstruieren so dass H(m) = h ist

          4 Die Prufwerte mussen rsquozufalligrsquo aussehen Die Ausgabe von H genugt Anforderungen aneinen Zufallszahlengenerator (gewisse statistische Unauffalligkeit) also pseudozufallig

          Eigentlich musste man noch mehr Fordern namlich dass man keine zwei Nachrichten findet diesehr ahnliche Hashwerte haben und dass man zu einer gegeben Nachricht keine Nachricht miteinem ahnlichen Hashwert findet

          Beispiel H gute Pruffunktion

          H(m) =

          |m| n fix so Hprime(m) = 0||H(m)(H(m) rangehangen)|m| = n so ist Hprime(m) = 1||m( rangehangen)

          h ist die Lange der Prufwerte von H

          79

          Hprime ist kollisionsresistent wenn es H ist aber nicht urbildresistent

          To do sortieren

          openssl 097d (2004) Prufwertstandardverfahren ist MD5

          Hashfunktion enthalt eine rsquoKompressionsfunktionrsquo m1

          To do Bild-siehe Blatt - 20090422

          K(sm) = sprime

          K(sm) = K(sm2)

          K(s1m1) = K(s2m2)

          s1 und s2 als Ergebnisse einer Prufwertberechnung darstellen

          K(s1m11) = s1 K(s01m21) = s2

          K(s1m12) = s K(s2m22) = s

          der rechte Teil war 2004 schon bekannt es musste nur noch die linke seite gelost werden

          511 Schlussellose Hashfunktion (Prufsummen ohne Schlussel)

          h x minusrarr h(x)Ausschlieszliglich Prufwert Gute Auswahl garantiert dass man mit h(x) feststellen kann ob xverandert wurde

          xprime ist verandertes DokumentDatenBerechnung des Prufwerts liefert h(xprime) = hprime h(x) bei guter Hashfunktion Veranderung kannalso festgestellt werden

          80

          Zusatzlich verlangte Eigenschaften

          1 Kollisionsresistenz Es ist schwer Kollisionen zu erzeugen Dh es ist schwer x1 x2 mith(x1) = h(x2) zu findenHeute ublich n = 80 oder n = 100 280 oder 2100 in sim 280 Schritten Definitiv 256 istnicht schwer 264 ist nicht mehr so schwer

          2 Zwillingsresistenz Zweites-Urbild-Resistenz second preimage resistance Es ist schwereinen Zwilling zu erzeugen ist x1 mit h(x1) vorgegeben so ist es schwer einen Zwillingx2 zu erzeugen mit h(x1) = h(x2)(Anmerkung Finger weg von Binarcode fur x1 x2)

          3 Einwegeigenschaft Urbild-Resistenz Es ist schwer zu vorgegebenem h(x) ein Urbild xzu berechnen

          h1(x) ist eine gute Hashfunktion mit den schicken Eigenschaften 1 2 3 (n + 1 Bitlange)

          h2(x) =

          1 x wenn x die Lange n hat0 h1(x) sonst

          h2(x) ist kollisionsresistent (Zwillingsresistenz) (wenn h1 so ist) h2 ist aber nicht urbild-resistent 1 x hat als Urbild x

          2 ist die wichtigere Eigenschaft man kann notfalls noch ohne 1 auskommen Zum Beispielletztes Jahr MD5 - Hashfunktion x1 x2 waren konstruiert h(x1) = h(x2)x1 oplus x2 = 0 010 010 010 01 (1 jeweils im msb) Immer noch ein gewisser Schutz dazum Beispiel keine Kollision auf -Kleinbuchstaben oder 64 moglich

          Schlussellose Hashfunktionen sollten alle 3 Eigenschaften haben

          Fast-Kollision x1 x2 h(x1) oplus h(x2) hat wenig 1-Bits Manchmal zu vermeiden

          partielle Urbilder Gegeben h(x) dann ist es schwer x bis auf wenige Bits zu bestimmen

          SHA-1 theoretische Schwelle 280 praktisch 269 (16022005) 263 (19082005)

          Geburtstagsparadoxon 23 Personen die Wahrscheinlichkeit dafur dass 2 am gleichen Tagim Jahr Geburtstag haben ist groszliger als 1

          2

          h(x) =dd-mmMit k Personen x1 xk lassen sich k2 Geburtstagspaare bilden Mit n Tagen h1 hn im Jahrlassen sich n2 Geburtstagspaare bilden davon sind n gute ( (h hprime) mit h = hprime)

          81

          mit k2 Paaren in n2 Paaren suchen und einen von n treffenHashfunktion hat 160 Bit Ausgabe wir brauchen nach Geburtstagsparadoxon 280 Personen ummit hoher Wahrscheinlichkeit den gleichen Geburtstag h mit 160 Bit zu erhalten

          Allgemeines Konstruktionsprinzip x wird auf eine bestimmte Blocklange erweitert (pad-ding)

          1 Nullpadding (auffullen mit Nullbits falls erforderlich)

          2 1-Nullpadding (eine 1 und dann mit Nullbits bis zur Blocklange)

          3 1-Null-Langenpadding (eine 1 und Nullbits (falls erforderlich) und die Lange (msb first64 Bit oder 128 Bit)) Am besten geeignet da bei 1 oder 2 automatisch Kollisionen ent-stehen x (mind 1 bit kurzer als die Blocklange) und x 0

          xrarr b1 bk Blocke der Lange 512 Bit

          Haufig Verlauf in 3 Phasen in openssl init update final

          1 Initialisierung der Hashfunktion Innerer Zustand aus 32-Bit-Wortern H1H2H3H4H5initialisiert (mit Primzahlen π was-auch-immer)

          2 Update A BCD E aus H1 H5 Runden mit Transformationen mit Eingabe bi 48|60|120 H1 = H1 oplus A H2 = H2 oplus B

          3 Finalisierung Ggbf Padding 1 oder 2 mal das Update

          4 Ausgabe H1H2 H5

          Einfaches Beispiel

          82

          So lasst sich aus einem Kryptoalgorithmus ein Hashalgorithmus konstruieren In der Praxis wer-den andere Konstruktionen (Quirlfunktionen) verwendet MD5 SHA-1 SHA-2 (224 256 384512) Whirlpool ISO-

          In OpenSSL MD2 MDC2 MD4 MD5 RIPEMD-128 RIPEMD-160 SHA-0 SHA-1 Allegebrochen ausser RIPEMD-160 und SHA-1 (evt MD2) dh es sind m1 und m2 bekannt mitMD5(m1) =MD5(m2) und m1 m2

          512 Demonstration Falschung

          Ist die Hashfunktion rsquoschwachrsquo kann man Kollisionen sogar konstruieren

          Beispiel fur MD5 MD4 ist seit 10 Jahren schwach SHA-1 wird schwach

          Zwei Postscript-Dateien mit unterschiedlichem Inhalt aber gleichem MD5-Hash Prinzip Datei1

          Header

          if x1 == x2 then strangestring = T1 else strangestring = T2 end

          Rest

          echo strangestring

          Quelltext (B)(B)eq︸ ︷︷ ︸Bedingung

          [tot] [Def] ifelse

          83

          Datei 2

          Header

          if x2 == x2 then strangestring = T1 else strangestring = T2 end

          Rest

          echo strangestring

          (A)(B)eq︸ ︷︷ ︸Bedingung

          [Def] [tot]

          x1 und x2 unterscheiden sich nur sehr wenig und Header if x1 und

          Header if x2 sind je ein Nachrichtenblock mit dem gleichen Hashwert

          Sieht aus wie zweites Urbild-Angriff sind aber in der Tat zwei bose Zwillinge

          Quelle wwwcitsrubdeMD5Collisions

          Fazit Dokumente sind nicht mehr unterscheidbar

          Kollision besteht aus zwei Dokumenten d1 d2 mit dem Hashwert

          Bei MD5 kann man zwei rsquoDokumentersquo (Prafixe bis AB) konstruieren die den gleichen Has-hwert haben

          Man kann aber zu einem Dokument d0 (dem Original) noch nicht ein zweites dprime0 konstruierenso dass d0 dprime0 eine Kollision bilden

          Beispiel Ein SSL-Server-Zertifikat war (MD5) ununterscheidbar von einen SSL-ZertifizierungsstellenZertifikat womit man so viele (evt rsquobosersquo) SSL-Server-Zertifikate erstellen wie man wollte

          MD5 ist nicht kollisionsresistent

          MD5 ist noch 2 Urbild resistent

          52 Unterschied MD5 und SHA

          MD5 128bit Lange (Kollision 264)

          SHA-224 224bit Lange (Kollision 2112)

          SHA-256 256bit Lange (Kollision 2128)

          84

          mehr rotation lokale Unterschiede habe groszligere globale Unterschiede zur Folge bei SHA

          53 Secure Hash Standard SHA-2

          FIPS 180-2 US-Standard Nachfolger von FIPS 180 SHA-0 und SHA-1 sind die SHA-2-Algorithmen(noch nicht in OpenSSL) SHA-224 SHA-256︸ ︷︷ ︸

          32 Bit

          SHA-384 SHA-512︸ ︷︷ ︸64 Bit

          SHA-224 bzw SHA-384

          ist rsquoungefahrlsquo die linke Seite von SHA-256 bzw SHA-512

          Basisfunktionench (xampy)|(sim xampz) Auswahlfunktionpar x and y and z Paritatsfunktionmaj (xampy)|(xampz)|(yampz) Mehrheit

          Ausserdem Addition modulo Wortlange rot left und shift leftMessage M1M2 MN padding

          1 paddinglength auf 5121024 Bit

          51232 = 16 = 1024

          64

          2 Messageblock (16 Stuck) wird erweitertW0W1W2 W15︸ ︷︷ ︸

          Messageblock

          W79

          Wt = rot(Wtminus3) + rot(Wtminus8) + rot(Wtminus14) + rot(Wtminus16) fur t = 16 79rot(x) = rotl7(x) + rotl18(x) + shl3(x)

          3 8 temporare Variable a b c d e f g h mit Breite gleich Wortlange (32 oder 64 Bit) be-schreiben einen inneren Zustand der Funktion

          SHA-Maschine bekommt initialen Zustand H0 H7 Die ersten 32 Bit der gebrochenenAnteile der Quadratwurzeln der i Primzahl Fur SHA-256 und SHA-512 i = 1 8 furSHA-384 und SHA-224 i = 9 16

          85

          Am Anfang jeder Runde a = H0 b = H1 c = H2

          Jedes Wi erzeugt einen Schritt (kleine Zustandsanderung)

          T1 = h + rot(e) + ch(e f g) + Kt + Wt

          T2 = rot(a) + maj(a b c)

          h = g g = f f = e e = d + T1 d = c c = b b = a a = T1 + T2K0 K80 Schrittkonstanten Bruchteile der dritten Wurzeln der ersten 80 Primzahlen80 Schritte in einer Runde

          4 XOR-Operationen H0H1 H7 minusrarr H0 oplus aH1 oplus b H7 oplus hHi beschreiben den inneren Zustand nach Runde Hi am Anfang initialisiert

          5 Ausgabe ist H0 H7 am Ende

          To do ware auch interessant fur die Prufung

          Es wird eine neuer SHA-3 gesucht Voraussetzungen

          1 Nachrichtenexpansion muss komplexer werden

          2 Nachrichtenblocke mussen positionsabhangig werden (Skein tweakable

          3 innerer Zustand muss groszliger werden (2x Hashlange)

          531 Problem bei MD5 und SHA-0

          Beispiel 1 Innerer Zustand zwischen einzelnen Schritten hat Bits die die folgenden Bitsmehr oder weniger beeinflussen Damit sinkt die Komplexitat beim Brechen Besondere Bitsfuhren zur Reduktion der Anzahl der Gleichungen und erlauben eine schnelle Konstruktion vonspeziellen Zwillingen m1m2 mit MD5(m1) =MD5(m2) m1 oplus m2 = viele Nullen

          Parallel hashen rdquoKontostand -20073ldquo und rdquoKontostand +700ldquo Ab -2 bzw +7 entstehen un-terschiedliche innere Zustande Nachkommastellen bei dem zweiten String anpassen um dieUnterschiede auszugleichen

          86

          Aktuelle Angriffe erzeugen keinen zweiten Zwilling sondern rsquonurrsquo falsche Zwillinge Zu einemguten gibt es keinen schlechten Zwilling

          Beispiel 2 Es gibt zwei Zertifikate mit unterschiedlichen Inhalten und gleichem MD5-HashDas sind dann aber 2 schlechte Zertifikate MD5 ist also nicht kollisionsresistent aber momentanzwillingsresistent

          SHA-1 hat momentan eine Komplexitat von 263 anstelle von 280 fur Kollisionen

          mH(m) (H(m) aus vertrauenswurdiger Quelle) rArr m kann nicht unbemerkt verandert werdenManipulation Detection Codes () Das ist keine Prufung des Ursprungs Um zu prufen ob maus einer bestimmten Quelle stammt benutzt man MACs

          532 MACs (Message Authentication Codes) (Prufsummen mit Schlusseln)

          Sei k ein geheimer Schlussel den nur Alice und Bob kennen m ist die Nachricht BerechneHk(m) = h keyed Hash Die Hash-Prufwerte sind also Schlusselabhangig

          (m h) mit h aus vertrauenswurdiger Quelle

          bull Veranderungen sind erkennbar

          bull Nur mit Kenntnis von k kann man h berechnen also nur mit dem Schlussel kann man denPrufwert falschen

          Empfanger der k kennt kann n auf Integritat prufen Um sich vor Angreifern zu schutzen mussfur eine Prufung der Prufwert geschutzt werden

          Hk(mprime) = h

          (m1 h1)(m2 h2)

          rarr (m h) muss verhindert sein

          87

          Standardisiertes Verfahren fur Keyed hash auf der Basis von MDCs RFC 2104 in OpenSSL zufinden HMAC)

          H(k oplus auszligeres Padding H(k oplus inneres Padding m))︸ ︷︷ ︸512- oder 1024-Bit-Blocke

          k linksbundig aufgefullt mit Nullen inneres Padding = 0x36 0x36 auszligeres Padding = 0x5c0x5c Langenpadding am Ende des inneren H

          Berechnen Sie mit OpenSSL und dgst -c oder -hex den Hashwert der leeren Datei

          henrykgleam henryk $ openssl dgst -c -hex -md5 devnull

          MD5(devnull)= d41d8cd98f00b204e9800998ecf8427e

          henrykgleam henryk $ openssl dgst -c -hex -sha1 devnull

          SHA1(devnull)=

          da39a3ee5e6b4b0d3255bfef95601890afd80709

          openssl dgst -sha256 -hmac 1234567890 devnull

          HMAC-SHA256(devnull)= ba92e0bfa35d8a018831f3675f0b4314c8468d4d96e6981b85ba3390c23308fd

          HMAC

          To do vervollstandigen

          Mac mit Hashfunktion K- Schlussel H-Hashfunktion

          H(K oplus oPadH(

          0x565656︷ ︸︸ ︷K oplus iPad︸ ︷︷ ︸Bitlange H

          n))

          K n1 rarr Mac(n1K) = m1

          K nprime = n1||langenpadding ||n2

          (K nprime) rarr HInitialisiert mit m1(n2) = m2

          ISO-10118-32004

          88

          54 Whirlpool

          Basis fur eine Hashfunktion ausgehend von einer einzigen Verschlusselungsfunktion

          Aus der Wikipedia (unter GNU Free Documentation License)

          WHIRLPOOL ist eine kryptografische Hash-Funktion die von Vincent Rijmen und Paulo SL M Barreto entworfen wurde Sie wurde nach der Whirlpool-Galaxie im Sternbild der Jagd-hunde benannt

          Whirlpool funktioniert mit Daten von weniger als 2256 Bit Lange und gibt einen Hash-Wert von 512 Bit aus

          Die Autoren haben erklart dass Whirlpool nicht patentiert ist und es nie sein wird Whirl-pool darf kostenlos zu jedem Zweck verwendet werden Die Referenz-Implementation ist ge-meinfrei

          The WHIRLPOOL algorithm has undergone two revisions since its original 2000 specifi-cation In the first revision in 2001 the s-box was changed from a randomly generated one withgood cryptographic properties to one which has better cryptographic properties and is easier toimplement in hardware In the second revision (2003) the diffusion matrix was changed

          People incorporating WHIRLPOOL will most likely use the most recent revision ofWHIRLPOOL while there are no known security weaknesses in earlier versions of WHIRL-POOL the most recent revision has better hardware implementation efficiency characteristicsand is also likely to be more secure

          E

          +

          H

          H

          m

          AES-Variante

          i-1

          i-1

          i

          55 Zusammenfassung

          To do oben einsortieren

          89

          Manipulation Detection Codes MDCsHashfunktionen MD5SHA-1SHA-2Allgemeines Konstruktionsprinzip aus Langenpadding und Iterationen

          bull MACsKeyed Hash HMAC mit Hashfunktion aufgebaut aus prefix und suffix

          bull CBC-MAC Nachrichtenblocke m0m1 mk

          + +

          MACc c c

          K

          m

          m m

          0

          1

          1

          2

          k

          k+1

          Risiko Weil keine Langeninformationen dabei sind ist es anfallig gegen Einsetzen undAustauschen Wird gerne Verwendet bei Anwendungen die feste Langen haben zBChipkartenCBC-MAC-verbessert

          K

          DES

          1

          K2

          K3

          larrminus CBC-DES3-MAC

          Benutzt zB beim digitalen Tachograph

          Es gibt zwei Grundlegende technische Mechanismen Ohne Schlussel und mit Schlussel Nur mitSchlussel lasst sich spater der richtige MAC-Wert ausrechnen und bestimmen dass die Nachrichtnicht verandert wurde und vom richtigen Absender kommt

          90

          56 Digitale Signaturen

          To do einsortieren

          Definition

          s ist die Signatur zu einer Nachricht n mit einem Signaturverfahren S und einem Verifikations-verfahren V

          S N times D︸︷︷︸Signaturschlussel

          rarr s

          V N times E︸︷︷︸Verifikationsschlussel

          timess rarr ja nein

          V(n e S (n d)) = 1

          V(n e S (nprime d)) = 0 =( n eprime S (n d)) = 0

          RSA

          S (n d) =

          V(n s e) = E(e s)eqH(n)

          openssl dgst -sign keyrsa -hex nulltxt

          openssl -sign keyrsa -sha256 -out nullsig nulltxt

          openssl rsautl -in nullsig -encrypt -inkey keyrsa -raw -hexdump

          in Beta openssl sha256 -hex nulltxt

          Anstatt der Symmetrischen Verschlusselung wie bei MAC kann man auch asymetrische Verfah-ren verwenden

          1 h mit Namen (0D) in ASN1 Struktur 0001 FF FF 00 (ASN1-Struktur)

          2 Padding

          3 rsquoEntschlusselnrsquo

          4 rsquoVerschlusselnrsquo

          5 ASN1 Struktur Hash OID Wert rausziehen

          91

          6 vergleichen 0 1

          openssl hatte in den fruheren Versionen einen Fehler in der Signaturprufung

          langer RSA Schlussel

          exponent e klein (3)

          lange Signatur S

          S 3 = h

          wenn h sehr lang ist konnte man folgendes machen

          h= (0001FF00ASN1 rsquomullrsquo)

          man konnte den rsquoMullrsquo so verandern das h = s3 (also so lange verander bis h dritte Wurzel vons ist)

          Es wurde nicht uberpruft ob am Ende der ASN1-Struktur auch das Ende der Daten ist

          siehe Webseite RSA Zertifikate mit Exponenten 3

          To do alt

          Digitale Signaturen schutzen die Integritat und die Authentizitat Wir betrachten hier welche dieauf asymmetrischen Verfahren basieren Symmetrische gibt es werden aber in der Praxis nichtbenutzt Es gibt 2 Typen

          1 RSA

          2 DSA

          561 RSA

          m = p middot q (2048 Bit)Exponent e klein (64 Bit)Exponent d groszlig mit e middot d equiv 1 mod (p minus 1)(q minus 1)

          xrarr c = xe mod m (offentlich)cd equiv x mod m (geheim)xed equiv x

          92

          Man rechnet zuerst xrarr s = xd mod m Das kann nur derjenige der uber den privaten Schlusseld verfugt Aus s rechnet man se mod m = (xd)e mod m equiv xemiddote mod m = x Bei RSA konnenwir die Rolle vom privaten und offentlichen Algorithmus vertauschen so dass folgt Nur wer dkennt kann zu x ein s erstellen so dass se equiv x mod m ist

          Anwendung dafur Digitale Signatur Wir haben Nachricht M und erstellen daraus einen PrufwertH(M) mit einer Hashfunktion und rechnen

          H(M) = x minusrarr s = xd mod m

          Dann ist (M s) das digital signierte Dokument M (und s die Signatur)

          To do einsortieren neu

          Signatur mit Anhang (with appendix) (m sig)-Signierte Nachricht

          Ver(vm sig)

          Signatur mit Nachrichtruckgewinnung (with (partial) message recovery) (m1mprime2) = mprime so dassmprime2 ein Teil der Nachricht m = m1||m2 enthalt

          Ver(vm1mprime2) (partial recovery)

          Ver(vminusmprime) (complete recovery)

          In RSA

          PKCS1 ver 15 Signatur mit Appendix

          PKCS1 ver 21 (noch nicht in OpenSSL)

          To do ende einsortieren

          Prufung (M s) rarr H(M) = x Ist se mod m = x Nur wer das d hat kann das Paar (M s)

          erstellen und ist damit Inhaber des Dokuments

          562 Eigenschaften eines asymmetrischen Verschlusselungsverfahren

          Alice kennt den offentlichen Schlussel von Bob Bob kennt seinen geheimen Schlussel

          93

          Alice123 Bob Alice Bob123offB gehB gehA offA

          EoffB(m) = c rarr DgehB(c) = m rarr

          MS gehA

          (m s)

          rarr

          Voffa(m s) =

          0 ungultig1 gultig

          Mehrere Alices konnen an Bob schreiben Entschlusselung mit dem geheimen Schlussel vonBob Hier wird eine Nachricht so verschlusselt dass man die Nachricht aus c zuruckgewinnenkann

          Alice sendet an alle Bobs Hier wird ein Paar erzeugt dass in einen Verifikationsalgorithmusgestopft werden kann der dann ja oder nein sagt

          Es ist Zufall dass man mit RSA sowohl einen Verschlusselungsalgorithmus als auch einenSignaturalgorithmus erstellen kann Mit anderen geht das nicht

          Hatte man nicht die Urbildresistenz der Hashfunktion konnte man ein s nehmen und dazu aus-rechnen se mod m = x jetzt konnte man zu dem x ein Urbild M ausrechnen und bekame einPaar (M s) dass gultig signiert ist Dazu kommen in Wahrheit noch Padding und Objekt Identi-fier der angibt womit signiert wurde und Parameter

          30 = SEQUENCE06 = OID2B 0E 03 02 1A = SHA12A 86 48 86 F7 0D 01 01 01 = rsaEncryption05 = NULL Bezeichner fur die leere Menge hier bedeutet es keine Parameter04 = OCTET STRING02 = INTEGER03 = BIT STRINGSchema Tag Length Value

          Das ganze lasst sich mit openssl asn1parse erfahren (asn1 = Abstract Syntax Notation 1)Schlussel immer SEQUENCE SEQUENCE OBJECT PARAMETER BIT STRING bzw Se-quence aus OID und Bitstring Das erste Byte in einem Bitstring gehort nicht zum Bitstring dazusondern gibt die Nummer der von hinten ungenutzten Bits an

          OID-Liste httpwwwalvestrandno

          Mhminusrarr

          SHA-1

          H minusrarr

          Padding

          00 01 FF FF 00 b c b H c

          Identifier Oktetstring

          Padding nach PKCS1 v15

          ASN1 Objektidentifier fur SHA-1 (131432) wird als 2B 0E 03 02 1A codiert

          94

          xyabcd (Dot-Notation)darr

          bx middot 40 + yc babcdc1 Byte Byte (Oktett)

          12840113549127 als Ubungsaufgabe

          563 RSASSA-PSS-Padding

          SSA Signature Scheme with Appendix

          PSS Probabilistic Signature Scheme

          RFC 3447 (siehe figure 2)

          8 zero salt

          h

          0000 01 salt

          +MGF h

          maskiertes seed BC00 1024

          Bits

          zu 0

          setzen

          soviele dass die Eingabe

          kleiner als der Modul wird

          Eingabe fuumlr die Signatur

          M l(M) lt= 2^(64)-1 bei SHA-1

          20 Byte 20 Byte

          To do start einfugen

          MGF-Maskengenerierungsfunktion (beruht auf der Hash-funktion)

          95

          MGF rArr DBmask dann DB oplus DBmaskNullungminusminusminusminusminusminusrarr maskedDB

          Nullung-Nullung der oberen Bits so dass maskedDB kleiner als Modul ist

          Signieren (EMSA-PSS)+(RSA-Verschlusselung)

          Verifikation (RSA Op)

          1 RSA-Operation

          2 EM

          Prufung ob BC am Ende

          H abspalten und mit MGF DBmask erzeugen

          XOR mit Rest von EM

          DBprime = 0000︸︷︷︸Nullungsfehler

          0001 Salt

          00 Label mhash SaltHashminusminusminusminusrarr Hprime

          = H

          Jede Eingabe in die RSA-Operation ist pseudo zufallig (Jede Eingabe hat einen neuen Signa-turwert)

          Angenommen man wendet die RSA-Operation direkt auf m an

          mprime-Signatur mprime = md mod n

          m1m2

          m1 rarr mprime1 mod n = mprime1

          m2 rarr mprime2 mod n = mprime2

          Verifikation

          (m1m2) mod n rarr (m1 middot m2)d = md1md

          2 = mprime1 middot mprime2 mod n

          (rsquoMan kann mit zwei Signaturen eine andere erzeugenrsquo)

          96

          To do ansehen

          Unsicher zeitaufwendig kann leicht gebrochen werden

          m rarr mprime = md mod n

          re = rprime mod n

          chosen message m middot rprime rarr (m middot rprime)d mod n = md middot red mod n = mprime middot r mod n

          (mprime middot r) middot rminus1 mod m = mprime

          (sieht nach Zufallszahlen aus aber die kann man auf eine vorher gewahlte Nachricht zuruck-rechnen)

          To do ende einfugen

          Nachricht M mit |M| lt 264 minus 1 wird mit Hashfunktion h gehasht Davor kommen 8 Zerobytedanach ein Saltwert (Saltwert wird benotigt fur die Auswertung der Signatur und wird verstecktin der Signatur) Auf das Gesamte wird die Hashfunktion h erneut angewendet

          Verstecken des Saltwerts --0000 (rarr eventuell leer) 01 salt-- oplus mit einer Maske gebildetaus dem Hashwert und einer Maskengenerierungsfunktion

          An den Anfang der Eingabe fur die RSA-Signatur werden 0-Bits so gesetzt dass die Eingabefur die RSA-Signatur kleiner als der Modul ist Wenn m volle Bytelange hat wird das obersteBit gleich 0 gesetzt (RSA-Signatur ()d mod m mit m = p middot q) An das Ende der Eingabe fur dieRSA-Signatur wird BC angehangt

          Durch den Saltwert wird das Ergebnis zufallig und schwer vorhersagbar Wird leider nicht oftverwendet da die Maskengenerierungsfunktion Chipkarten teuer machen wurde

          Es existiert eine DIN Variante zum v15 PKCS1 DIN-RN-Padding00 02 Zufallsbytes(ohne 00) 00 Identifikator Oktettstring

          564 DSA

          Vergleich ElGamal und elliptische Kurven

          K-elliptische Kurve y2 = x3 + ax + b mod p

          97

          p-Primzahl ( 2 3)

          Punkte auf der Kurve bilden eine Gruppe E(k)

          P + Q = R k middotG isin E(k)

          G ein Punkt (Generator) mit groszliger Ordnung n

          1 middotG 2G 3G n︸︷︷︸sehr groszlig

          middotG = 0

          n ist eine Primzahl und G 2G nG = 0 ist die gesamte Gruppe E(k)

          Signaturschlussel t-zufallig aus 1 n minus 1 Verifikationsschlussel ist P = t middotG

          Standard FIPS 186-3 rarr finde den Fehler

          To do ende einfugen

          p g Generator gpminus1 equiv 1 mod p gpminus1

          x 1 mod p

          Geheimer Schlussel xoffentlicher Schlussel y = gx mod pk(gkm middot yk) = c

          Parallel bei elliptischen Kurven G geheim x offentlich Y = x middotG

          (k middotGm middot k middot Y)

          DSA auch bekannt als DSS FIPS-186

          Primzahl p (hat zB 1024 Bit im Standard variabel) so gewahlt dass pminus 1 einen Primteiler derLange 160 Bit enthalt q|p minus 1 mit |q| = 160 BitAusserdem Es gibt einen Generator g mit der Eigenschaft gq equiv 1 mod p Das findet man

          indem man einen h Generator in mod p auswahlt und g = hpminus1

          q hpminus1 equiv 1 mod p ausrechnet

          x geheimer Signaturschlussel mit 160 Bit gx mod p ist der offentliche Schlussel

          Signaturerstellung Nachricht M Hashwert h(M) = H ausrechnen Generiere Zufallszahl k mit160 Bit (k isin 1 n minus 1) und berechne

          To do neu

          k middotG = (x y) r = x mod n

          98

          s = hminus1 middot (h + tr) mod n

          (r s) ist die Signatur

          To do ende neu

          r = (gk mod p) mod q und s = (kminus1(H + x middot r) mod p) mod q r und s sind Exponenten furmod p werden aber nochmal mod q genommen um Platz zu sparen (r s) wird die Signaturwerden (s 0 mod q r 0 mod q)

          Signaturverifikation Berechne w = sminus1 mod qu1 = H middot w mod q u1 = H middot w + i middot qu2 = r middot w mod q

          Berechne

          gu1 middot yu2 equiv gHmiddotsminus1middot gxmiddotrmiddotsminus1

          equiv gHmiddotk(H+xmiddotr)minus1middot gxmiddotrk(H+xmiddotr)minus1

          equiv gHmiddotkmiddot(H+xmiddotr)minus1+xmiddotrmiddotk(H+xmiddotr)minus1

          equiv gkmiddot(H+xmiddotr)middot(H+xmiddotr)minus1

          equiv gk mod p

          Prufe also ob (gu1 middot yu2 mod p) mod qequiv r

          Die Signatur zu M ist (r s) mit r und s haben 160 Bit so dass man 320 Bit Signatur hat (kleinerals die 1024 Bit Signatur von RSA)

          Um den geheimen Schlussel zu bestimmen muss man den diskreten Logarithmus mod q be-rechnen und das gilt als schwer

          565 ECDSA - DSA mit Elliptischen Kurven

          K - elliptische Kurve mit Punkten mod pG - Generatorpunkt G hat Ordnung q [q middotG = 0] q Primzahlx - Restklasse mod q Y = x middotG

          r = [(k middot G)1] mod q (rarr 1 Koordinate mod q) s = kminus1(h + x middot r) mod q [u1 middot G + u2 middot Y]1

          mod qequiv r

          700 Bit fur alle Parameter

          99

          To do neu

          ECDS DSAGenerator

          G g gq = 1 mod pdA = [1 q minus 1]

          zufalligPA = dA middotG auf E pA = gdA mod p

          Signatur k isin [1 q minus 1] r = (gk mod p) mod qr = x mod q

          s = kminus1 middot (h + dA middot r) mod q

          h ist genauso lang wie q (gleiche Bitlange)

          h sind die linken Bits von H(n)

          (Bem RSA ist bei Elipt Kurven nicht einsetzbar deshalb ist DSA eine gute alternative)

          link draft-lochter-pkx-brainpool-ecc-03 - eine art RFC zu Brainpool

          openssl ecparam -name brainpoolP256r1 -param_enc explicit -noout

          E =(x y) y2 = x3 + Ax + B mod p

          Dann ist G = 04x (in einer Prufung ware interessant zu wissen was das fuhrende Bytebedeutet und welche Varianten es gibt)

          openssl ecparam -name brainpoolP256r1 -genkey

          -param_enc explicit -noout gt eckey

          (pub - offentlicher Punkt)

          openssl dgst -sha256 -sign eckey eckey gt ecsig

          xxd -p ecsig

          openssl asn1parse -i -in ecsig -inform DER

          Man erhalt die beiden Integers r und s

          (Bem bei Eliptischen Kurven ist die Bitlange kurzer da Algorithmen hohere komplexitat als so

          100

          haben)

          (Hausaufgabe erzeuge zwei Kurven (512Bit - Brainpool bzw 521 NIST) mit anderen Hash-funktionen (mdripemd whirlpool) Signatur (rs) )

          (Bem siehe Wikipedia El C DSA r=0 Abfrage weil sonst dA keine Rolle spielt s= 0 Abfrageweil man sonst mit minusz = r middot dA mod q den geheimen dA ausrechnen kann)

          [Spickzettel zur HA

          h-linke Bits des Hashwertes

          n1 = h middot sminus1 mod q

          n2 = r middot sminus1 mod q

          V = n1 middotG + n2PA = (x y) r = x mod q

          v = gn1 middot pn21 mod p r = v mod q

          (r rarr 0 1 jeweils)

          h middot sminus1 middotG + rsminus1PA = h(k(k + dAr)minus1 middotG + r(k(h + dAr)minus1)dAG = (hk + rkdA)(h + dAr)minus1G = V

          = k (h + rdA) middot (h + dAr)minus1︸ ︷︷ ︸=1

          G

          = k middotG

          ]

          Magma

          p=StringToInteger(rsquorsquo16)

          a=StringToInteger(rsquorsquo16)

          b=StringToInteger(rsquorsquo16)

          IntegerRing(p)

          E=EllipticCurve([KaKb])

          G=E[KStringToInteger(rsquo1Halfte Generatorrsquo16)

          101

          KStringToInteger(rsquo2Halfte Generatorrsquo16)]

          Jetzt kann man rechnen

          qG eq E0

          true

          mdashmdashndash

          qG

          (010)

          mdashmdashmdash

          Kq=IntegerRing(q)

          dA=1+Random(q-2)

          PA=dAG Prufung ob ungleich Null fehlt noch

          h=K12121212121212121212121212121

          k=1+Random(q-2)+1damit keine Null rauskommt

          X=kG

          x=X[1]

          r=(IntegerRing()x) mod q

          s= (Kqk)ˆ(-1) ((Kqh)+ r dA)

          rs

          Verifikation

          u1=h(Kqs)ˆ(-1)

          u2=r(Kqs)ˆ(-1)

          102

          Y=(IntegerRing() u1)G+( IntegerRing() u2) PA

          Y

          ((IntegerRing() Y[1]) mod q) eq r

          =rArr siehe Verzeichnis

          Prufen ob Openssl gut gerechnet hat

          OpenSSL

          wie erzeugt man den offentlichen Schlussel openssl ec -in eckey -pubout

          openssl ec -in ecpub -pubin -text -noout

          -pverify

          To do neu-ende

          To do neu-20090617

          Bem Attributes muss die leere Menge sein und darf nicht weggelassen werden

          SHA1 nur noch zur Unterscheidung benutzen

          57 Widerrufen von Zertifikaten

          siehe rfc5280 S53

          Erste Sperrliste

          Ist eine Liste in der die Nummern der gesperrten Zertifikate stehen

          Beispiel CA erstellen

          perl ˜optopenssl-100-beta2appsCApl -newca

          103

          Zertifikat fur den Nutzer erstellen

          perl ˜optopenssl-100-beta2appsCApl -newreq

          Signieren

          perl ˜optopenssl-100-beta2appsCApl -xsign gt aypem

          Man kann noch weitere Zertifikate erstellen allerdings wird dann der pem Key geloscht Mankann dann feststellen dass die Seriennummer nur um eins erhoht wird Man kann auch openssl ca -gencrl -out -cl1pem -crlhours 12benutzen und dabei die Seriennummer selber angeben

          openssl crl -text -in crl1pem -noout

          Zertifiziert wird nur der Teil zwischen Certificate Rev List bis No Revok Cert Da dieser Teilsehr klein ist ist es recht schwer Kollisionen mit SHA1 dafur zu konstruieren

          Dann gibt es noch Informationen wann es die nachsten Updates gibt (Last Update Next Update(optional)) Alte Sperrlisten bleiben aber Gultig die neuen gelten nur zusatzlich

          Zertifikat ungultig machen

          openssl ca -gencrl -out cr13pem -revoke demoCAcertsF8C85pem -crl_reason keyCompromise -crlhours 12

          aktualisieren

          openssl ca -gencrl -out cl4pem -crlhours 12

          Nun nachsehen mit

          openssl crl -text -in crl4pem -noout

          To do neu-ende

          104

          58 Was es noch so gibt

          581 blinde Signaturen

          Gut fur anonymes digitales Geld Normalfall Bank kriegt digitalen Scheck belastet das Kontound schickt einen von ihr signierten Scheck zuruck Problem Wenn derjenige der den Scheckspater einlosen will zur Bank geht kann diese den Scheck zum Aussteller zuruckverfolgen

          Mit anonymen Signaturen Aussteller erzeugt viele (zum Beispiel 1000) unterschiedliche Schecksmit je einer Zufallszahl und dem gleichen Betrag aber ohne Name Kontonummer etc Diese1000 sendet er verschlusselt an die Bank Die Bank sucht sich zufallig (das ist wichtig) 999davon aus und fordert fur diese den Schlussel an Die Bank entschlusselt diese Schecks unduberpruft ob uberall der gleiche Betrag drinsteht Wenn ja dann ist davon auszugehen dass auchder auf den gleichen Betrag lauft Das Konto wird entsprechend belastet und der Scheck wirdblind (also ohne hineinzusehen) signiert und dem Aussteller zuruckgeschickt Der packt denScheck aus (wobei die Signatur gultig bleibt) und hat jetzt einen von der Bank signierten digita-len Geldschein den die Bank nicht mehr zuruckverfolgen kann

          582 anonyme Signaturen

          Beispiel Elektronische Wahlen wo man nicht mochte dass man weiszlig wer es unterschriebenhat

          6 Zertifikate

          To do neu-20090520

          m rarr Signatur und Verifikation

          mprime rarr Signatur und Verifikation

          Vertrauen in den offentlichen Schlussel

          Schutzen den Schlussel durch Prufwert den Prufwert Schutzen wir durch eine Signatur Vertrau-en eines Schlussel ubertragt sich an einen anderen Das ganze scheint sich im Kreis zu drehen

          Aber es handelt sich um einen Graph (Der Graph muss nicht transitiv sein - A vertraut BB vertraut C aber A vertraut nicht unbedingt C) Zb Baum mit Wurzel (PKI) dann gibt es

          105

          vertrauens-Normen die den Ebenen eines Baumes entsprechen Die andere Variante ist das PGPWeb of Trust bei dem der Baum ungeordneter ist und eine Art Vertrauensbereiche hat

          Dass eine Zertifizierungsstruktur funktioniert braucht es klare Regeln fur den Umgang mit Zer-tifikate

          Standards

          ANSI X509

          X500

          openssl internet Profil

          RFC 5280 (alt 3280 2459)

          Definition Zertifikat bindet (durch Signatur) einen offentlichen Schlussel an einen Namen(Subjekt)

          (siehe rfc5280 S16 - Certificate= SEQUENCE und TBSCertificate) (in TBSCert er-scheint rsquosignaturersquo recht fruh damit schon mit dem Hash-Algorithmus begonnen werden kannaber warum steht in Certificate dann nochmal signature -Bessere Ordnung)

          Zertifikat bei CA-cert runterladen und dann mit openssl ansehen

          openssl x509 -in class3crt -text -noout

          openssl asn1parse -i -in class3crt

          Zur ausgabe des ersten (siehe auch rfc5280)

          Version es gibt momentan 3 Versionen

          Serial Number ist ein Integer kann so groszlig sein das man nicht mehr in den Hash-Block mehrkommt (bis 20 Byte geht)

          Bundesnetzagenturde 15549pdf sagen dass Serien Nummern mindesten 20 Bit Entropie ent-halten sollen damit SHA-1 bis 2010 benutzt werden kann (rsquoQualifizierte Signaturrsquo)

          To do siehe 606 Gultigkeit

          validity Wird oft als Gultigkeitszeitraum ubersetzt was aber nicht ganz richtig ist da nur ange-geben wird wann das Zertifikat nicht gultig ist Besser ware rsquonicht Gewahrleistungszeitraumrsquo

          106

          Die validity gibt (nach dem Standard) den Zeitraum an in der die CA gewahrleistet aussagenuber den Zustand des Zertifikats zu geben (Gultig ODER nicht Gultig - deshalb muss das Zer-tifikat also nicht unbedingt gultig sein)

          To do neu-ende

          To do neu-20090527

          Bemerkung In der Objectstxt findet die Object-Identifier die OpenSSL kennt

          To do neu-20090527-ende

          Signatur Anwendung eines Schlussels Ob der Signaturersteller eine bestimmte Person ist istdamit nicht klar Immer gleichzeitig Authentizitat des Schlussels prufen

          Dazu gibt es zwei Moglichkeiten

          1 Anarchie = Web of Trust (Beispiel PGP)

          2 Vertrauenswurdige dritte Instanz Certification Authority CA bzw ZDA (Zertifizierungs-diensteanbieter) Stellt ein Zertifikat aus das ist ein elektronisches Dokument welcheseine Identitat einem Schlussel zuordnet

          Zertifikat (Name Schlussel ) und Signatur

          Problem Im Zertifikat steht Name Schlussel usw und daran hangt eine Signatur Gegeben Nut-zer Alice mit Zertifikat daruber gibt es die CA1 die ihre Signatur zertifiziert CA1 hat selber einZertifikat mit einem Namen Schlussel usw und daran hangt wieder eine Signatur Das Problemverschiebt sich immer weiter nach oben Man bekommt eine Zertifikatshierarchie und benotigteinen aufgeblahten Riesenbaum mit einer Weltwurzel Im taglichen Leben haben sich 3-stufigeZertifikatshierarchien bewart Root signiert seine eigene Signatur Vertrauen in Authentizitat derNutzerschlussel ist fur alle Nutzer gleich Es bestimmt sich ausschlieszliglich durch die Authenti-zitat des Schlussels des Root CA Das Vertrauen in die Root CA verteilt sich auf die Nutzer

          603 X509

          X509 mittlerweile bei ISO RFC 3280 X509 Certificate and Certificate Revocation List (CRL)Profile Abschnitt 4

          Version X509v3 Version 1 enhalt keine ErweiterungenSerial Number In der Regel 20 Byte muss immer eindeutig sein

          107

          Signaturverfahren fur das Zertifikat muss am Anfang (im ersten Block) stehen damit das Has-hen schon begonnen werden kannHerausgeber Name(eindeutig) C=Country O=Organisation CN=Common Name SN=Surname

          Validity Gultigkeitszeitraum der Zeitraum indem die CA Gultigkeitsinformationen uber dasZertifikat bereitstellen willwirdmussInhaber Name (eindeutig im Bereich der CA) zur Person also stabile Daten SeriennummerVersicherungsnummer etcSchlusselinformationenErweiterungenDarunter die Signatur

          In RFC 3280 steht dass nach dem 31 Dezember 2003 alle Zertifikate UTF-8 kodiert seinmussen

          604 Erweiterungen

          Man kann bei Erweiterungen festlegen ob diese Critical oder nicht sind Critical ist sowas wieeine Vorschrift nicht Critical ist sowas wie eine Information Kritische Erweiterungen mussenimmer ausgewertet werden wenn ein Programm sie nicht versteht darf es das Zertifikat nichtverarbeiten

          To do neu

          Per default auf false ist auszligerdem optionales Argument Wenn nicht critical dann ist es nur eineInformation Also critical muss man lesen und verstehen nicht critical sollte man lesen wennman sie versteht sollte man sich daran halten

          To do neu ende

          Basic Constraints

          To do neu

          Sagt ob es Zertifizierungsinstanz ist oder eine Endnutzer Instanz ist und in welcher Ebene essich befindet

          To do Diagramm basteln

          108

          Ein interessantes Beispiel (goyacrt) findet man bei der Rechnerbetriebsgruppe

          To do neu-ende

          CA Siginalisiert ob es ein CA-Zertifikat ist (TRUE) oder nicht (FALSE) Dh ob das Zertifikatberechtigt ist weitere Unterzertifikate auszustellen

          To do neu

          Per default false es musste also nicht jedesmal CA FALSE angegeben werden

          To do neu-ende

          PATHLEN Beschrankt die Pfadlange Pathlen=0 heisst dass das Zertifikat zwar Nutzerzertifika-te ausstellen kann aber keine weiteren CA-Zertifikate Ist immer als Critical markiert

          Subject Key Identifier und Authority Key Identifier Nicht kritisch Beschreiben die ver-wendeten Schlussel uber Hash-Werte zum Beispiel SHA-1 uber den Schlussel

          Key Usage Kritisch (sollte kritisch sein zb bei GOYA nicht) Ist ein Bitstring der die Ver-wendung des Schlussels angibt Fur eine CA also zum Beispiel nur KeyCertSign NonRepu-diation ist eigentlich fur die Dokumentsignatur (content commitment) DigitalSignature ist furAuthentisierung oder allgemeine Signaturmechanismen Die beiden moglichst exklusiv setzen

          To do neu

          Nicht bei Endnutzerzertifikaten notig

          To do siehe rfc5280 - KeyUsage -HA lesen

          Merkmale

          (0) DigitaleSignatur zur Authentifizierung (hat keine Auswirkungen auf spatere Zeitraume)(werden zu dem aktuellen Zeitpunkt gepruft)

          (1) (ab X509v4) Inhaltsbindung[contentCommitment] (zb Nichtabstreitbarkeit ) (jetzt noch[nonRepudiation]) (werden zu dem Zeitpunkt zu dem sie erstellt worden sind gepruft)

          (0) und (1) sind Endnutzerinformationen

          nur ent-verschlusseln Schlussel zum verschlusseln von Zertifikaten geignet

          109

          keyCertSign==TRUE - wenn man nur Zertifikate damit signieren mochte (brauch man bei CAZertifikaten eigentlich sollte nur eines der Bits gesetzt sein) ansonsten sollte digitalSignaturegesetzt werden

          Key usage zB A0=10100000 (Erste und dritte gesetzt) oder zB 88=10001000 (erstes undfunftes gesetzt)

          authority information Nicht kritisch Feld in dem Daten des Herausgebers abgerufen werdenkonnen

          Benutzt das OCSP-Online Certificate Status Protocol (gibt eine URI an wo man die Informatio-nen erhalten kann - spater mehr)

          X509v3 Certificate Policies ASN1 Strucktur siehe rfc5280 S 33

          System von Regeln fur die Ausgabe von Zertifikaten sowie den Betrieb der ZertifizierungstelleNutzer kann sich uber die Hirarchie der CA informieren (wichtig fur den Vertrauensaufbau)

          CPS - Certificate Policy Statement und dann zwei moglichkeiten cPSuri (uri wo die Informationzu finden ist) oder userNotice (Freitext)

          Bsp httpnasacanasagovnasacphtml dort findet man eine CPS

          Wenn der Regelsatz dem CA Zertifikat zugeordnet ist (Bindung zB durch Root) ist es besserals wenn es nur dem EndNutzer Zertifikat zugordnet ist (Bindung nur durch die daruberliegendeCA)

          Authority Key Identifier Kurzinformationen mit der man einen Schlussel identifizieren kannFur Endnutzer ist der Authority Key Identifier ein Bezeichner mit dem das zugohrige CA-Zertifikat zu finden ist Kann enthalten

          KeyIdentifier - Schlussel ID

          GeneralNames - Herausgeber Seriennummer

          CertificateSerialNumber

          Subject Key Identifier - SKI Schlussel ID hilft bei der Unterscheidung sollte eine moglichsteindeutige Nummer sein da aber nicht genau festgelegt wird ist die SKI nicht fur Uberprufungengeeignet

          110

          Subject Alternative Name IP Adresse URI Email Adresse (hat das rsquoatrsquo Zeichen welchesin kein Datentyp passt weshalb sie hierher (oder in den Issuer Alt Name) gehort soll alsrfc8224Name gespeichert werden (da dieser nicht groszlig klein sensitiv ist))

          To do neu-ende

          605 Erzeugung

          To do neu

          Bei OpenSSL gibt es zwei moglichkeiten mit Perl Script

          perl ˜optopensslappsCApl -newca

          openssl x509 -text -nout -in cacertpem

          openssl req -text -nout -in careqpem

          Diese Requests folgen dem Standard PKCS 10 - rfc2986

          openssl ans1parse -in careqpem

          Attributes [0] - Contextabhangiges Tag (nur an diesem Ort gultig) Codiert als A0 denn Con-textabhangige tags fangen mit 10 an im Gegensatz zu Universaltags die mit 00 anfangen(Beispiel fur Contextabhangige Tags siehe auch bei AuhtorityKeyIdentifier)

          Im Request ist Set of Atritbute NICHT optional (aber kann leer sein)

          To do neu-ende

          Wie kommen wir eigentlich zu Zertifikaten Zertifikate kommen von einer CA also muss manzuerst ein CA-Zertifikat erstellen

          Request Ich mochte ein Zertifikat haben PKCS10RFC2986openssl req

          openssl req -new -x509 erzeugt gleich ein Zertifikat

          openssl req -new -newkey rsa1500 -days 40 -out userreq ein neuer Schlussel undein Request Der Request enthalt die Informationen des Antragsstellers den offentlichen Schlusselein Challenge-Passwort (von der CA festgelegt) und eine Signatur uber diese Daten

          111

          openssl x509 -req -CA -CAkey -out -days 40

          -in userreq -CAcreateserial -out userx509

          -extensions usr_cert -extfile opensslcnf wichtig um v3-Zertifikate zu erzeu-gen

          606 Gultigkeit

          Der rsquoGultigkeitszeitraumlsquo (Validity) im Zertifikat ist der Zeitraum uber den sich die ausstellendeInstanz verpflichtet etwas uber die Gultigkeit des Zertifikats auszusagen

          CRL Certificate Revocation List

          OCSP Online Certificate Status Protocol

          Sperrlistenformat auch in RFC 3280 Abschnitt 5 als X509-Variante festgelegt

          OCSP version 1 RFC 2560

          To do neu

          Man kann dass conf bearbeiten

          Ubungsaufgabe ein Zertifikatsrequest mit eigen Daten erstellen und zu zertifizieren

          To do einsortieren

          Die CA schmeiszligt eventuell Daten des Request raus

          To do neu-ende

          To do neu-20090624

          Sperrlisten Enthalten

          Version

          Signatur

          112

          Herausgeber

          LastNext Update

          Sperrlisten Nummer (sollte monoton wachsen)

          Liste der gesperten Zertifikate(jeder Eintrag enthalt ein Integer eine Zeit und evt CRLEntryExtension(CRLReason-Code siehe rfc5280 531))

          Bemerkungen

          Sperrlisten sind im DER-Format ( openssl -inform DER)

          (Erweiterungen enthalten immer OID Octet-String)

          Zu CRLEntryExtension CRLReason Code (6) (certificateHold-schwebend gesperrt) und (8)(removeFromCRL-kannwurde wieder entsperrt werden) sind besonders und sind eher nur furAuthosierung sinnvoll

          Sperrlisten nehmen in der Praxis erhebliche groszligen ein

          CRLEntryExtension wird von der Bundesnetzagentur nicht benutzt

          RFC5280 532 sperrdatum (revocation date) darf nicht vor dem Zeitraum der vorherigen CRLliegen sonst ist es in der vorherigen Liste Gultig (ansehen)

          Aufbau des Pfad zum Vertrauensanker (RFC 5280 S72) Das beschriebene Prufverfahren istnicht normativ vorgeschrieben es reicht wenn die Funktion gleich ist

          httpwwwbundesnetzagenturdemediaarchive1343pps

          Kettenmodel benutzt den Erstellungszeitpunkt (nicht Gewahrleistungs-Beginn) (Folie3)

          httpwwwbundesnetzagenturdeenid85f55115e236d80fc18329992037142d0FAQ

          Antwortss4_wphtml

          To do neu-ende

          To do 20090701-fehlt

          113

          61 Praktische Ausschlachtung von kryptografischen Algorithmen mitSMIME und PKCS7

          Root-Zertifikat erzeugenopenssl genrsa 1200 gt cakeypem

          openssl req -x509 -new -key cakeypem -config opensslcnf gt cacert (selbst-signiertes neues root Zertifikat mit eigenem Config Script)

          Root-Zertifikat anschauenopenssl x509 -in cacert -text -noout

          Nutzer der eigenen CA erstellenopenssl req -new -config opensslcnf -out usercert Erstellt mehrere Dateienauch privkeypem

          Zertifikat erstellenopenssl x509 -req -in userreq -CA cacert -CAkey cakeypem -CAcreateserial

          -out usercert -extfile opensslcnf -extensions usr_cert (Zertifikat fur usermit Extenstions Version 3 statt Version 1)

          Senden einer signierten Nachricht (Nachricht in Neutxt)openssl smime -sign -signer usercert -in Neutxt -inkey privkeypem

          -out neusmime -text

          Erzeugt Datei neusmime mit Nachricht und Signature -text erzeugt den Eintrag fur den Con-tent Type vor der Originalnachricht in neusmime

          Umwandeln der SMIME Nachricht in PKCS7 Nachrichtopenssl smime -pk7out -in neusmime -out neupk7

          Das gesamte (ohne Inhalt der Nachricht eigentlich nur die Signatur) SMIME Dokument wirdin eine PKCS7 Struktur eingebunden

          Anschauen mitopenssl asn1parse -i -in neupk7

          Zertifikate ausgeben mitopenssl smime pkcs7 -in neupk7 -print_certs -noout

          Zertifikate anschauen mitopenssl smime pkcs7 -in neupk7 -print_certs -noout -txt

          Verifizierenopenssl smime -verify -in neusmime -CAfile cacert

          Verschlusseln

          114

          openssl smime -encrypt -in Neutxt -out neusmime -text usercer

          Nachricht ohne Signatur verschlusselt

          Entschlusselnopenssl smime -decrypt -in neusmime -text -recip usercer

          -inkey privkeypem

          Fur die Einbindung in Browseropenssl pkcs12 -export -name Annie -inkey privkeypem

          -in usercert -out userp12

          Um auch das CA Zertifikat mit einzubindenopenssl pkcs12 -export -name Annie -inkey privkeypem

          -in usercert -out userp12 [-certfile cacert -CAfile cacert -chain]

          Private Schlussel auspacken openssl pkcs8

          62 PKCS

          PKCS Public Key Cryptography Standards

          1 RSA3 Diffie-Hellman5 Cryptography mit Passworten6 Zertifikate7 Cryptographic Message Syntax8 private Schlussel9 Attributtypen10 Zertifikatsrequest11 Cryptographic Token12 Personal Information Exchange13 Elliptische Kurven15 Chipkarten Token Formate

          621 PKCS7 15 November 93 RFC 3852

          To do neu-20090708

          CMS

          Email (SMIME)

          115

          XML Signaturen XMLDSIG XMLENC

          Dokument rarr signiertes Dokument

          openssl genpkey -algorithm rsa -pkeyopt rsa_keygen_bits300mdash openssl -chek -text -noout

          zu kleine Werte (iexcl256) fur den Schlussel werden nicht akzeptiert (Wert ist immer noch etwasklein) Aber die Ausgabe ist nicht ganz korrekt

          openssl genpkey -algorithm rsa -pkeyopt rsa_keygen_pubexp1

          ist leider moglich

          63 CMS(Cryptographic Message Syntax)

          rfc3852

          SignedData

          bull Version

          bull Hash Algorithmus

          bull gekapselter Inhalt

          bull Certifikat Liste

          bull Widerrufungsliste (Sperrinformationen)

          bull

          bull Signer Infos (Signaturen davon kann es mehrere geben elektronische Signatur nach demSignaturgesetz Signer Info enthalt selber noch einmal einen Signaturblock - der als Digi-tale Signatur aufgefasst werden kann)

          ndash Versionndash Idndash Attributesndash Algondash sig Valuendash

          bull Signer Id

          bull Signed Attributes (zB Zeit Ort Message Digest) Die Signatur dieses Blockes wird er-stellt indem der Hash Wert (nur des Blockes) signiert wird Wenn es signed Attributesgibt sind also auszligerdem Hash Wert des Dokuments und Inhaltstyp(Contenttype) im Si-gned Attributes enthalten und erst dann wird der Signed Attributes Block signiert Es wirdjeweils er Hash-Algorithmus verwendet der oben genannt wird

          116

          Auszligerdem Signing Certificate

          bull

          Frage ist wo wird der Wert Signiert der sagt welcher Hash-Algorithmus verwendet wird Wennnicht konnte man eventuell den Algorithmus austauschen

          Man konnte den Hash-Algorithmus als SignedAttribute einfugen

          To do neu-ende

          CMS (Cryptographic Message Syntax) Beschreibung des Formates mit dem man Krypto-nachrichten erstellen kann

          Kryptographische Nachricht Struktur vorne Bezeichner hinten Daten Daten = irgendwasspannend Welche Typen gibt es eigentlich

          Signed-data Content-Type Was jetzt kommt sind signierte Daten Liste der unterstuetzen Has-hfunktion dann gekapselter Inhalt dann eine Liste von Zertifikaten (optional) optionalSperrlisten dann Signaturbloecke (SignerInfo)

          SignedData = SEQUENCE

          Versionsnummer

          Liste der unterstutzten Hashfunktionen

          Ursprungliche Nachricht selbst

          Liste von Zertifikaten Optional

          Sperrlisten Optional

          Signer Infos

          SignedInfo = SEQUENCE

          Versionsnummer

          Signer Identifier (Wer der Signierer eigentlich gewesen sein soll)

          Hashfunktionen die bei der Signatur verwendet wird

          Signierte Attribute

          Verwendete Signaturalgorithmus

          Signaturwert

          Unsignierte Attribute

          SignerInfo = SEQUENCE

          Versionsnummer

          Signer Identifier (Wer der Signierer eigentlich gewesen sein soll)

          Bezeichner des Hashalgorithmus mit dem die endgultige Signatur erstellt wird

          Signierte Attribute Optional

          117

          Signatur Algorithmus

          Signature SignatureValue

          Unsigned Attributes Optional

          SignerIdentifier = SEQUENCE

          issuerAndSerialNumber

          subjectKeyIdentifier (Eindeutiger Hinweis wer der Aussteller ist)

          SignerInfo Signaturblock der eine Datenstruktur fuer eine Signatur bereitstellt Steht drin Ver-sionsnummer SignerIdentifier verwendeter Hash-Algorithmus dann signierte Attributeverwendeter Signaturalgorithmus Signaturwert unsignierte Attribute

          SignerIdentifier Aussteller und Seriennummer oder Schluesselidentifier (subjectKeyIdenti-fier)

          Signierte Attribute Sammlung von Attributen die signiert sind Was dabei sein sollte erstesAttribut Content-Type wenn die signierten Daten nicht nur Rohdaten sind sondern gekap-selte Daten eine s bestimmten Typs Ein weiteres nuetzliches Attribut Message-DigestDann Signing-Time

          Content-Type Object-Identifier der einen bestimmten Typ impliziert

          Message-Digest Hash der aus den Daten ausgerechnet wird Als Octet-String

          Signing-Time Zeit von der behauptet wird dass die Signatur zu dieser Zeit geleistet wurde

          Signatur Es werden die signierten Attribute signiert dort ist auch der Hash des Dokumentsals messageDigest enthalten Wenn keine signedAttributes existieren wird das Dokumentdirekt gehasht

          Weitere sinnvolle signierte Attribute

          Commitment-Type Was bedeutet die Signatur zum Beispiel virtuelle Poststelle Eingangs-stempel Auslieferung Einschreiben Urheberschaft gelesen Zeitstempel (spezielleSignatur eines authentischen Zeitservers) ist eine Information dass das Dokument vor-her existiert hat

          Signing Certificate Beschreibt mit welchem Schluessel zu welchem Zertifikat ist unterschrie-ben wordenwelches Zertifikat moechte der Signierer zur Ueberpruefung verwendet ha-ben Austausch des Zertifikats fuehrt zu anderer Urheberschaft ist ein realer AngriffVerhindert die Urheberschaft auszutauschen (rfc2634 S 46) Folge mit Zertifikats HashIssuerSerial(Herausgeber und Seriennummer) (leider ist da SHA1 als Algorithmus festge-legt)

          in rfc5035

          Folge mit Hash-Algorithmus (optional default ist aber SHA256) Zertifikat Hash IssuerSerial (Nun Hash als Octet String)

          Da der Wert des Hash Algorithmus optional ist ist diese Variante ruckwartskompatibel

          118

          Signing Location Ort an dem die Signatur geleistet wurde

          Weitere nuetzliche unsignierte Attribute

          Zeitstempel ist eine Information wann die Signatur existiert hat Hash uber die Signatur TimeServer davon Signatur

          not after Information fur die Signatur

          Countersignature Zweite Signatur (Gegenzeichnung) Signaturblock uber eine andere Signa-tur

          (Mitsignatur Bestatigung eines signierten Dokuments wichtiges Feld fur Mehrfachsigna-turen)

          Hashwert des signature Feldes (3 Hash Wert) nicht alle in einander gekappselt sonderansammlung von Signaturen

          Archiv Zeitstempel neuer Hash-Algorithmus signiert Dokument alle Signaturen alle Attri-bute (signiert unsigniert)

          Damit kann mann folgendes machen

          2001 2009 2010

          RS A512 S HA1 S HA256 S HA512

          Dok S ignatur t1 t2cc at1TTYY^^bb at2 at3

          Fur XML XML-DSIC XML-ENC

          7 Wichtige Neuerungen bei den Versionsanderungen

          bull Von 098 zu 099 Verbesserungen bei den Extensions von Certificate Revocation Lists

          bull Von 097h zu 098 UTF8-Support fur das ca-Kommando

          bull SHA1 ist nun default-Hash-Algorithmus statt MD5

          bull Patentierte Algorithmen RC5 und MD2 mussen beim Kompilieren extra angegeben wer-den

          bull Neue FIPS 180-2 Algorithmen SHA-224-256-384-512 wurden implementiert

          119

          bull Neuer Parameter -selfsign fur das ca-Kommando

          bull IPv6 Support bei den Zertifikatserweiterungen

          bull Ausweitung der Eliptischen Kurven Bibliothek

          8 OpenSSL hintergehen

          81 die eine Primzahl ganz klein erzeugen

          bull Offnen einer Datei in genrsa cryptorsarsa_genc

          bull Andern den Teil ldquo generate p and q rdquo so daszlig die eine Primzahl 10bit lang ist(bitsp=10 )

          bull Wir erzeugen einen neuen rsa key openssl genrsa -out rsaweakpem 2048und erstellen hierdurch eine Primzahl mit 10 bit die andere zufallig (also so in etwa2038bit)

          bull Wir schauen uns den key an openssl rsa -in rsaweakpem -text -nooutund sehen die eine Primzahl ist 35879 die andere hat 2046 bit Lange Das kann manlecker faktorisieren

          bull Offnen cryptobnbn_primeh die Zahl kommt durch den kleinen Primzahltest durchdieser geht nur bis ca 17000

          82 beide Primzahlen nah beieinander

          bull Und wieder in rsa_genc (Zeile 136 in der do-while-Schleife hinter degenerate)

          bull BN_copy(rsa-gtq rsa-gtp) wir setzen q gleich pBA_add_word(rsa-gtq 20) wir addieren 20 auf q

          for(i=1 BN_is_prime_ex(rsa-gtq 5 ctx NULL) i++)

          BN_add_word(rsa-gtq 2)

          wir erhoehen q bis zur naechsten Primzahl

          bull hierdurch erzeugen wir zwei Primzahlen die sich enorm ahnlich sind (wieder mit obigenKommandos) Der Angreifer kennt in diesem Fall den Exponenten damit ist das Verfahrenvollig unsicher

          83 Vorschrift des BSI

          01 le |log10 p minus log10q| also p gt10radic

          2 lowast qDas kann man aber mit q =10

          radic2 lowast p im Quellcode umgehen

          120

          84 Programmierung Zufallszahlenerzeugung und andere nette features

          Die ldquocallbackrdquo Funktion gibt den Fortschritt bei Suche nach p und q als Punkt (Fermat Primzah-lentest) und Plus (Miller-Rabin-Test) aus

          DatentypStruktur zum Speichern der auftretenden groszligen Zahlen Binarfeld BIGNUMp ist unsigned char

          p = BN_bn2hex((RSA )pub_rsa)-gtn) Zum Ausgeben eines BIGNUMs

          ((pub_rsa)-gtn)d[] einzelne Teile im Datenblock eines BIGNUMs editieren

          Zufallszahlen findet man in cryptorandrandh rand_libc randc

          Diese beiden Kombinationen vor entsprechenden Programmen i2d oder d2i intern to data datato internpub_rsa = d2i_RSAPublickey(NULL ampstr len) (lange von str) Transfor-miert Binardaten Zeichenkette in interne public Key Datenstruktur mit ASN1

          S(buf) gibt Speicherplatz frei uberschreibt ihn vorher noch einmal mit Zufallsbytes

          9 Zusammenfassung

          bull Symmetrische Verschlusselungsverfahren

          ndash DES

          64 Bit Blockchiffre

          16 Runden Feistelnetzwerk mit 48 Bit Rundenschlusseln

          56 Bit Schlussellange plus 8 Paritatsbits

          XOR Transformationsfunktion mit S-Boxenndash IDEA

          64 Bit Blockchiffre

          8 Runden Feistelnetzwerk mit je 6 middot 16 Bit Rundenschlusseln

          128 Bit Schlussellange

          XOR ADD modulo 216 MULT modulo 216 + 1ndash Blowfish

          64 Bit Blockchiffre

          16 Runden Feistelnetzwerk

          32-448 Bit Schlussellange

          XOR Transformationsfunktion mit XOR CONCAT und viel Schlusselmaterialndash AES

          121

          128 192 256 Bit Blockchiffre

          10 12 14 Runden Feistelnetzwerk

          128 192 256 Bit Schlussellange

          Substitution ShiftRow MixColumn KeyAddition

          ndash RC4

          Stromchiffre

          10 12 14 Runden Feistelnetzwerk

          variabele Schlussellange bis 2048 Bit

          ndash RC5

          wahlbare Blockchiffre (openssl 32 Bit)

          wahlbare Runden Feistelnetzwerk (openssl 12)

          wahlbare Schlussellange (openssl 128 Bit)

          ndash GOST

          64 Bit Blockchiffre

          32 Runden Feistelnetzwerk

          256 Bit Schlussellange

          ADD ROT 8 S-Boxen

          bull Asymmetrische Verschlusselungsverfahren

          ndash RSA (Verschlusseln und Signieren)

          ndash Diffie-Hellmann Schlusselaustausch

          ndash ElGamal Crypto-System (basierend auf DH)

          ndash Rucksackverschlusseln (gebrochen)

          ndash Merkle Puzzle (viele Nachrichten)

          ndash Rabin Verfahren

          Zur Prufung erster Teil mit OpenSSL spielen zweiter Teil Konzepte eine Woche vor derPrufung evt fragen was dran kommen wird Prufungstermine 20072005 oder 04102005oder nach Vereinbarung

          10 Mathematische Techniken

          101 Multiplikatives Inverses

          (nach wwwtzide˜hsLehreU9 mathD1pdf)

          122

          1011 Behauptung

          Seien a b isin Z zwei teilerfremde ganze Zahlen dh ggT (a b) = 1 Dann existiert ein aprime isin Z mitaprime middot a equiv 1 mod b

          1012 Beweis

          Betrachte die Menge ak mod b|k isin N k ge 1 Da ggT (a b) = 1 gilt folgt dass ggT (ak b) = 1fur alle k isin N mit k ge 1 Denn da a teilerfremd zu b ist so gilt dies auch fur alle Potenzenvon a Daher ist die betrachtete Menge eine Untermenge der endlichen Menge x mod b|x isinZ ggT (x b) = 1 und daher selbst endlich Also kann existiert k1 k2 mit ak1 equiv ak2 mod bNehmen wir an k1 lt k2 und setzen n = k2 minus k1 dann gilt ak1 middot an = ak2 equiv ak1 mod bDaher folgern wir an equiv 1 mod b d h anminus1 middot a equiv 1 mod b Also setzen wir aprime = anminus1 und dieBehauptung ist erfullt

          102 Kleiner Fermatscher Satz

          1021 Behauptung

          Aus der Wikipedia (unter GNU Free Documentation License)

          Der kleine fermatsche Satz kurz der kleine Fermat ist ein Lehrsatz in der Zahlentheorie Ermacht eine Aussage uber die Eigenschaften von Primzahlen und wurde aufgestellt im 17 Jahr-hundert von Pierre de Fermat Dieser Satz beschreibt eine allgemein gultige Kongruenz

          ap equiv a mod p

          wobei a eine ganze Zahl und p eine Primzahl ist (die weitere Symbolik wird im Artikel Kon-gruenz beschrieben) Falls a kein Vielfaches von p ist kann man das Resultat in die haufigbenutzte Form

          apminus1 equiv 1 mod p

          bringen

          1022 Beweis

          Der Beweis beruht auf der Tatsache dass wenn zwei Zahlen a und b zueinander inkongruent(modulo einer festen Zahl n) sind auch die beiden Produkte x middot a und x middot b inkongruent modulon sind fur x gt 0 und ggT (x n) = 1

          Denn

          123

          sei a b mod n n eine Primzahl a b naturliche Zahlen Angenommen

          a middot x equiv b middot x mod n

          fur eine naturliche Zahl x mit ggT (x n) = 1 Dann gibt es eine naturliche Zahl k so dass

          a middot x minus b middot x = k middot n

          x middot (a minus b) = k middot n

          x = n middot (k(a minus b))

          Da n eine Primzahl und x eine naturliche Zahl ist ist k(a minus b) entweder eine naturliche Zahlminus1n oder 1n Die letzten beiden Falle widersprechen der Annahme dass a b mod n dererste Fall widerspricht der Annahme dass ggT (x n) = 1 Damit ist die Annahme falsch und esgilt fur x so dass ggT (x n) = 1

          a middot x b middot x mod n

          Aus der Wikipedia (unter GNU Free Documentation License)

          Im folgenden betrachtet man zum einen die Menge A aller Reste mod p - also alle naturlichenZahlen kleiner als p und zum anderen die Menge B die diese Reste multipliziert mit a enthaltZwei beliebige Zahlen aus A sind zueinander inkongruent modulo p Aus dem oberen Satzfolgt dass damit auch zwei beliebige Zahlen aus B zueinander inkongruent sind Dadurchergibt sich dass das Produkt uber alle Zahlen aus A kongruent zum Produkt aller Zahlen aus Bist

          1 middot 2 middot 3 middot middot middot middot middot (p minus 1) equiv (1 middot a) middot (2 middot a) middot middot middot middot middot ((p minus 1) middot a) mod p

          alsoW equiv W middot apminus1 mod p

          wobei W das Produkt 1 middot2 middot3 middot middot(pminus1) ist Da es in Restklassenkorpern stets ein multiplikativesInverses gibt kann man diese W dividieren und man erhalt

          apminus1 equiv 1 mod p

          1023 Verallgemeinerung

          Man kann den kleinen fermatschen Satz zum Satz von Euler verallgemeinern Fur zwei teiler-fremde Zahlen n und a gilt

          aϕ(n) equiv 1 mod n

          wobei ϕ(n) die Eulersche Phi-Funktion bezeichnet Diese hat als Ergebnis die Anzahl der Zah-len zwischen 1 und nminus1 welche teilerfremd zu n sind Ist n eine Primzahl so ist ϕ(n) = nminus1 sodass man Fermats kleinen Satz als Spezialfall erhalt Mit Hilfe des kleinen fermatschen Satzesentwickelte Fermat den fermatschen Primzahltest

          124

          1024 Praktische Anwendung auf Primzahlen

          (p - a a lt p a 0)Wenn gilt apminus1 1 mod p ist dann kann p keine Primzahl sein (Umkehrung muss nicht

          gelten) Wenn man mit a beiweisen kann das p keine Primzahl sein kann dann nennen wir aKanditat (Es gibt aber sogenannte Carmichaelzahlen die kein Kandidat ist)

          To do nacharbeiten Carmichaelzahlen

          Wenn (p minus 1) gerade ist pminus12 = k eine Ganzzahl

          Ist a2k equiv 1 mod p(ak)2 equiv p(ak minus 1)(ak + 1) equiv 0 mod pAlso wenn p eine Primzahl ist dann ist entweder ak equiv 1 mod p oder ak equiv 1 mod pDaraus folgt wenn ak 1 mod p und ak minus1 mod p dann ist p keine PrimzahlSomit gilt auch wenn k gerade ist und a

          k2 1 und a

          k2 minus1 dann ist p keine Primzahl

          Betrachten p minus 1 = 2t middot r (r ungerade) Sei a lt p und p - aIn ar a2r a22middotr a2t middotr = apminus1 (Reste mod p)Wenn die Folge nicht mit 1 endet ist p keine Primzahl Wenn vor der ersten 1 in der Folge

          keine 1 steht ist p keine PrimzahlWir nennen a einen Zeugen wenn man mit a beweisen kann das p keine Primzahl istJede Zahl p die keine Primzahl ist hat mindestens 3

          4 aller Zahlen a (mit ggT(a p) = 1) alsZeugen (Jeder Kandidat ist ein Zeuge)

          Damit ergibt sich der Rabin-Miller-Test Wahle zufallig ein a lt p und teste ob a ein Zeugeist Mit hoher (beliebig genauer) Wahrscheinlichkeit ist p Primzahl

          Bei groszligen Zahlen werden die Zeugen mehr

          openssl genrsa -out keyrsa 800

          Generating RSA private key 800 bit long modulus

          +++++++

          +++++++

          e is 65537 (0x10001)

          Generiert den Schlussel und speichert in rsquokeyrsarsquo Punkte Bedeutet keine kleine PrimzahlRabin-Miller Test schlagt fehl Plus ist ein erfolgreicher Rabin Miller Test bei groszligeren Zahlenbrauch man weniger Tests da es mehr Zeugen gibt

          []

          103 Chinesischer Restklassensatz

          (nach wwwtzide˜hsLehreU9 mathD1pdf)

          125

          1031 Behauptung

          Seien m1m2 mr paarweise teilerfremde ganze Zahlen d h ggT (mim j) = 1 fur alle i j(i j isin 1 2 r) und sei M = m1 middotm2 middotmr Dann existiert fur jede Liste a1 ar mit 0 le ai lt

          mi fur 1 le i le r genau ein x isin Z mit 0 le x lt M welches effizient berechnet werden kann undfur das gilt

          x equiv a1 mod m1

          x equiv a2 mod m2

          x equiv ar mod mr

          Bemerkung Es ist leicht einzusehen dass jedes xprime isin Z mit xprime = x + k middot M fur ein k isin Z d hxprime equiv x mod M genau dasselbe Gleichungssystem lost wie x Der Beweis wird zeigen dass furein gegebenes x nur xprime von dieser Form dasselbe Gleichungssystem losen konnen

          1032 Beweis

          Zunachst beweisen wir die Existenz und setzen dazu Mi = Mmi daher gilt ggT (Mimi) = 1Aus diesem Grund existiert auch ein multiplikatives Inverses Ni isin Z mit Mi middot Ni equiv 1 mod mi

          (vgl multiplikative Inverse) Zu beachten ist jedoch dass fur alle j isin 1 r mit i j stetsMi middot Ni equiv 0 mod m j gilt Nun definieren wir x via

          x equivrsum

          i=1

          ai middot Mi middot Ni mod M

          Fur jedes i existiert ein v isin Z so dass x sich folgendermaszligen darstellen lasst

          x = Mi middot Ni middot ai + v middot mi

          Dies gilt da jedes M j mit j i mi als Faktor enthalt Offensich erfullt x also die obigen Glei-chungen x ist das einzige mit 0 le x lt M welches fur die gegebene Liste a1 a2 ar alleGleichungen lost denn falls xprime und xprimeprime zwei verschiedene Losungen sind so gilt xprime minus xprimeprime equiv 0mod mi fur alle i isin 1 r d h xprimeminus xprimeprime ist ein Vielfaches aller mi und damit auch von M da nachVoraussetzung ggT (mim j) = 1 fur alle i j isin 1 r mit i j erfullt ist Somit folgt xprime equiv xprimeprime

          mod M d h 0 le xprime xprimeprime lt M kann nicht auftreten und der Beweis ist abgeschlossen

          126

          104 Square and multiply

          Der folgende rekursive Algorithmus berechnet xn fur naturliche Zahlen x und n indem sukzes-sive der Exponent reduziert wird

          bull Falls n = 1 xn = x

          bull Sonst falls n gerade xn = (x2)n2

          bull Sonst xn = x middot (x2)(nminus1)2

          Damit kann xn in O(ln(n)) Rechenschritten (quadrieren und multiplizieren) berechnet werdenindem in jedem Schritt des Algorithmus der Exponent halbiert wird und hochstens vier Berech-nungen ausgefuhrt werden

          105 Montgomery Reduktion (Moduloberechnung ohne Division)

          Heute was ganz verrucktes Modulo-Multiplikation ohne Division

          Problem bei RSA und anderen Algorithmenm Modul gegeben und g Zahl gegeben und man rechnet aus ga mod mAufwand der Berechnung mit Square and Multiply Groszlige des Exponenten in Bits Multiplika-tionen + gleichviele ModulooperationenBerechnung von x middot y mod m = x middot y minus (x middot y div m) lowast mDivision aufwendig Daher Methode dies ohne Division bzw mit einer schmerzfreien Divisiondurch eine Zweierpotenz zu tun Dafur Kosten von Hin- und RucktransformationenHier Skizze 1xrarr X = x middot r mod myrarr Y = y middot r mod mX lowast Y = X middot Y middot rminus1 = x middot y middot r mod m

          Wir berechnen t0 equiv minusmminus1 mod r (Preprocessing)

          1 x minusrarr X = x middot r mod m

          2 y minusrarr Y = y middot r mod m

          3 X lowast Y = X middot Y middot rminus1 mod m= x middot r middot y middot r middot rminus1 = x middot y middot r mod m

          Zur Bestimmung von X lowast Y t1 = X middot Y echte Multiplikationt2 = t1 middot t0 mod r Multiplikation untent3 = (t1 + t2 middot m) div r Multiplikation obent3 = X lowast Y oder (t3 minus m) = X lowast Y

          127

          1 t3 ist durch r teilbar

          2 t3 equiv X middot Y middot rminus1 mod m

          3 0 le t3 le 2m

          Zu 1 t1 + t2 middot mequiv t1 + t1 middot t0 middot m mod requiv t1 + t1 middot m middot (minusm)minus1 mod requiv t1 minus t1 equiv 0 mod r

          Zu 2 (t1+t2middotm)r = t3 mod m

          (t1 middot t2 middot m) middot rminus1 mod mequiv t1 middot rminus1 + t2 middot rminus1 middot mequiv X middot Y middot rminus1 mod m

          Beispiel 5 lowast 3 =

          t1 = 15t2 = 15 middot 23 mod r = 45t3 = 15 + 45 middot 13 = 6

          Zu 3t1 le (m minus 1)2

          t2 middot m lt r middot mt1 + t2 middot m lt 2 middot r middot m

          t3 lt 2 middot m

          t3 equiv X middot Y middot rminus1 mod mx lowast r2 = X = x middot r mod mX lowast 1 = x mod m

          Beispiel m = 13 r = 100 t0 = 23

          r mod m r = 9 mod 13r2 = 3 mod 13

          Ziel 6 middot 5 mod 13

          6 lowast 3 = 25 lowast 3 = 6

          128

          2 lowast 6 =

          t1 =

          t2 =

          t3 = xx

          x lowast 1 =

          Wenn eine Division langer als 1 5 Multiplikationen dauert dann lohnt sich das Verfahren DerErfinder heisst ubrigens Peter L Montgomery (Montgomery Reduktion) wwwmiinformatikuni-frankfurtdeteachingws0001krypto algomontgomerypdf

          Montgomery-Multiplikation

          To do siehe Mathematischer Anhangzusammenfugen

          Die Reduktion modulo m erfordert eine Division aber Divisionen sind rsquoteuerrsquo

          Dies kann man aber wie folgt vereinfachen

          Um die Division zu vermeiden rsquotransformiertrsquo man die Zahlen

          Sei gesucht das Produkt x middot y mod m

          x minusrarr X y minusrarr Y x middot y minusrarr X lowast Y

          R = (zweierPotenz) gt m und die Division durch R muss einfach sein

          X = x middot R mod m

          X lowast Y = X middot Y middot Rminus1 mod m (wobei die modulo Reduktion nun nicht mehr jedes mal ausgefuhrtwerden muss sonder nur am Anfang und am Ende der rsquoTransformationrsquo)

          1 Berechne mprime = minusmminus1 mod R

          (minusmR) = 1 rArr XGCD mprime middot m = minus1 mod R

          2 t = X middot Y (echte Multiplikation)

          3 t1 = t middotmprime mod R (echte Multiplikation und oben abschneiden also eine leichtere moduloReduktion da R eine zweier Potenz ist) (dabei gilt t2 lt m2 + R middot m)

          4 t2 = t + t1 middot m (echte Multiplikation und eine Addition) (dabei gilt t3 lt(m+R)middotR

          R = 2m)

          5 t3 = t2divR (also rsquounten abschneidenrsquo)

          6 Wenn t3 gt m dann t3 = t3 minus m

          129

          Nun ist t3 = X lowast Y Dafur muss t3 lt m sein oder in Schritt 6 t3 lt 2m sein

          Wir mussten also prufen

          1 t3 lt m

          2 Division in 5 rsquogeht aufrsquo

          t2 ist durch r teilbar

          t2 mod R equiv (t + t1 middot m) equiv t + (t middot mprime) middot m mod R equiv t + t(minus1) mod R equiv 0 mod R

          3 t3 = X lowast Y

          t3 middot R mod m equiv t2R middot R mod m equiv t2 equiv t + t1 middot m equiv t mod m equiv X middot Y mod m

          Wir haben also den folgenden Aufwand

          1 rsquoTransformationrsquo

          2 rsquoRechnungrsquo

          3 Zuruck rsquotransformierenrsquo

          x lowast R2 = x middot R2 middot Rminus1 mod m = x middot R = X mod m

          X lowast 1 = X middot 1 middot Rminus1 equiv x middot R middot Rminus1 equiv x mod m

          Man benotigt also zwei zusatzliche Operationen zur transformation Dafur kommt die Operationrsquorsquo ohne Divisionen aus

          Beispiel m = 17

          R = 100

          7 middot 11 mod 17

          x lowast y mod mdarr darr

          X Y= =

          (x middot R) mod m lowast (y middot R) mod m

          m1 = minusmminus1 mod 100

          suche also ein m1 mit m1 middot 17 = minus1 mod 100

          m1 = 47

          130

          To do Bsp Magma Quelltext siehe Homepage

          Bem dazu Wenn R groszlig genug ist kann man die Subtraktion von m weglassen

          Mathematischer Hintergrund (Zm+ middot)simminusrarr (Zm+ lowast) Was ist das Einselement und das

          Inverse

          106 Nochwas

          vielleicht

          zur Prufung Zwei Teile (ein theoretischer ein praktischer) Ein openssl-Kommando das in derVL nicht behandelt wurde wird drankommen (zum Beispiel speed ca etc) Theoretischer Teil

          1 symmetrische Verfahren (was sind symmetrische Verfahren wodurch charakterisiert)

          2 Integritatsschutz (wie kann man Integritatsschutz gewahrleisten)

          3 asymmetrische verfahren (siehe 1)

          4 Signatur (was sind Signaturen wofur verwendet man sie was ist ˜konzept was ist sicherwas ist unsicher)

          5 Vertrauensstruktur (zum Beispiel PGP)

          6 Client-Server-Authentisierung (SSL-Protokoll Kerberos)

          7 Sicherheitsparameter (wo sind die welchen Einfluszlig auf die Sicherheit haben sie)

          8 X509 (elektronische Identitat)

          9 RFC-Security (3280 3279 3446 )

          Mathematische Verfahren

          1 Square and Multiply Double and Add

          2 Euklidischer Algorithmus

          3 RSA DH

          4 DSA

          5 AES

          6 das eine oder andere symmetrische Verfahren Strom-Blockchiffre

          7 Elliptische Kurven eher nicht reicht zu wissen dass man mit Addition in EK das gleicheerreichen kann wie mit Multiplikation im Restklassenkorper

          8 kleiner Fermat eher nicht

          131

          9 Montgomery-Multiplikation vielleicht auch nicht sollte aber bekannt sein

          Fur MD5- AES- etc Grundfunktionen reicht evt wissen wo man nachschauen muss

          Dann nachweisen dass man mit Openssl spielen kann

          1 Verschlusseln mit DES3DESBFAES

          2 Prufsummenberechnung

          3 Konfigurationsfile

          4 RSA-Verschlusselung

          5 098 ndash 097 (dynamisch)

          6 Zertifikat

          7 DSA-Verschlusselung

          8 Passworter (passwd) und Salt

          9 E-Mail-Nachricht erstellen und sichern (SMIME-Anwendung)

          Zum Punkt Ich mochte eine 1 haben was muss ich dafur tun Was haben sie ausserhalb derVorlesung schonmal gelesen Was fehlte ihnen an der Vorlesung was fanden sie doof

          132

          • 1 Einfuumlhrung
            • 11 Verschluumlsselung
            • 12 Beispiel rot13
            • 13 Block-Chiffre
            • 14 Strom-Chiffre
            • 15 Angriffstypen
              • 151 Differentielle Kryptoanalysis
                • 16 Base64
                  • 2 OpenSSL
                  • 3 Symmetrische Verschluumlsselungsverfahren
                    • 31 Feistel-Chiffren
                    • 32 DES - Data Encryption Standard
                      • 321 Schluumlsselauswahl
                      • 322 Funktionsweise
                      • 323 Schwachstellen und Unsinnigkeiten
                      • 324 spezielle Optionen bei openssl
                      • 325 DESECB - Electronic Code Book
                      • 326 DESCBC - Cipher Block Chaining
                      • 327 DESOFB - Output Feed Back
                      • 328 DESCFB - Cipher Feed Back
                      • 329 CTR Mode CCM
                      • 3210 TEA-Algorithmus
                      • 3211 DES-X
                        • 33 IDEA International Data Encryption Algorithm
                          • 331 Schluumlsselauswahl
                          • 332 Funktionsweise
                          • 333 Pseudocode-multiplikation
                          • 334 Schwachstellen
                            • 34 Blowfish
                              • 341 Initialisierung
                              • 342 Verschluumlsselung
                                • 35 AES Advanced Encryption Standard
                                  • 351 Wiederholung-Byteoperation
                                  • 352 Uumlberblick
                                  • 353 mathematische Grundlagen
                                    • 36 RC4 Rons Cipher 4
                                      • 361 Geschichte
                                      • 362 Beschreibung
                                      • 363 Der Pseudo-Zufalls-Algorithmus
                                      • 364 Der Schluumlsselerzeugungs-Algorithmus
                                      • 365 Implementation
                                      • 366 Sicherheit
                                      • 367 Fluhrer Mantin und Shamir Angriff
                                        • 37 RC5 Rons Cipher 5
                                          • 371 Verschluumlsselung
                                          • 372 Schluumlsselexpansion
                                            • 38 GOST 28147-89 Gosudarstvennyi Standard Soyuza SSR nicht in OpenSSL
                                            • 39 FazitWie koumlnnte bei einen Symmetrischen Algorithmus die Sicherheit erhoumlhen
                                              • 4 Asymmetrische Verschluumlsselungsverfahren
                                                • 41 Einfuumlhrung
                                                  • 411 Beispiel
                                                    • 42 Geschichte
                                                    • 43 Einige Theoretische Grundlagen
                                                      • 431 Kleiner Fermat (oder kleiner Fermatscher Satz)
                                                      • 432 Euklidischer Algorithmus
                                                      • 433 Beispiel
                                                        • 44 RSA Rivest Shamir Adleman
                                                          • 441 Funktionsweise des RSA-Verfahrens
                                                          • 442 Beweis der Funktionsweise
                                                            • 45 Schwaumlchen von RSA
                                                            • 46 Fuktionen in OpenSSL
                                                              • 461 genrsa
                                                              • 462 rsa
                                                              • 463 rsautl
                                                              • 464 PKCS
                                                              • 465 OAEP - Optimal Asymmetric Encryption Padding
                                                              • 466 Wie erkennt man an Ciphertexten den Verschluumlsselungsalgorithmus- DER ASN1
                                                              • 467 Umgehen mit den Schluumlsselkomponenten
                                                                • 47 Miller-Rabin Test
                                                                • 48 Diffie-Hellman-Schluumlsselaustausch
                                                                • 49 ElGamal-Cryptosystem
                                                                • 410 Wiederholung DH
                                                                  • 4101 Beispiel
                                                                    • 411 was anderes
                                                                    • 412 Elliptische Kurven
                                                                    • 413 Elliptische Kurven Nachtrag
                                                                    • 414 Rucksack-Verschluumlsseln
                                                                      • 4141 Beispiel
                                                                        • 415 Merkle Puzzle
                                                                        • 416 Rabin-Verfahren und Wurzelziehen
                                                                          • 4161 Schluumlsselgenerierung
                                                                          • 4162 Kongruenzbedingung
                                                                          • 4163 Verschluumlsselung
                                                                          • 4164 Entschluumlsselung
                                                                            • 417 Angriffe auf asymmetrische Verschluumlsselungsverfahren
                                                                              • 4171 1 Angriff Common modulus attack
                                                                              • 4172 2 Angriff kleiner geheimer Exponent d
                                                                              • 4173 3 Angriff Faktorisieren
                                                                              • 4174 Echt schlechte RSA-Schluumlssel
                                                                              • 4175 Schnelles Faktorisieren bei Fehler im System
                                                                              • 4176 Angriff mit gewaumlhltem Chiffretext
                                                                                  • 5 Signaturmechanismen
                                                                                    • 51 Integritaumltsschutz und Hashfunktionen
                                                                                      • 511 Schluumlssellose Hashfunktion (Pruumlfsummen ohne Schluumlssel)
                                                                                      • 512 Demonstration Faumllschung
                                                                                        • 52 Unterschied MD5 und SHA
                                                                                        • 53 Secure Hash Standard SHA-2
                                                                                          • 531 Problem bei MD5 und SHA-0
                                                                                          • 532 MACs (Message Authentication Codes) (Pruumlfsummen mit Schluumlsseln)
                                                                                            • 54 Whirlpool
                                                                                            • 55 Zusammenfassung
                                                                                            • 56 Digitale Signaturen
                                                                                              • 561 RSA
                                                                                              • 562 Eigenschaften eines asymmetrischen Verschluumlsselungsverfahren
                                                                                              • 563 RSASSA-PSS-Padding
                                                                                              • 564 DSA
                                                                                              • 565 ECDSA - DSA mit Elliptischen Kurven
                                                                                                • 57 Widerrufen von Zertifikaten
                                                                                                • 58 Was es noch so gibt
                                                                                                  • 581 blinde Signaturen
                                                                                                  • 582 anonyme Signaturen
                                                                                                      • 6 Zertifikate
                                                                                                        • 603 X509
                                                                                                          • 604 Erweiterungen
                                                                                                          • 605 Erzeugung
                                                                                                          • 606 Guumlltigkeit
                                                                                                            • 61 Praktische Ausschlachtung von kryptografischen Algorithmen mit SMIME und PKCS7
                                                                                                            • 62 PKCS
                                                                                                              • 621 PKCS7 15 November 93 RFC 3852
                                                                                                                • 63 CMS(Cryptographic Message Syntax)
                                                                                                                  • 7 Wichtige Neuerungen bei den Versionsaumlnderungen
                                                                                                                  • 8 OpenSSL hintergehen
                                                                                                                    • 81 die eine Primzahl ganz klein erzeugen
                                                                                                                    • 82 beide Primzahlen nah beieinander
                                                                                                                    • 83 Vorschrift des BSI
                                                                                                                    • 84 Programmierung Zufallszahlenerzeugung und andere nette features
                                                                                                                      • 9 Zusammenfassung
                                                                                                                      • 10 Mathematische Techniken
                                                                                                                        • 101 Multiplikatives Inverses
                                                                                                                          • 1011 Behauptung
                                                                                                                          • 1012 Beweis
                                                                                                                            • 102 Kleiner Fermatscher Satz
                                                                                                                              • 1021 Behauptung
                                                                                                                              • 1022 Beweis
                                                                                                                              • 1023 Verallgemeinerung
                                                                                                                              • 1024 Praktische Anwendung auf Primzahlen
                                                                                                                                • 103 Chinesischer Restklassensatz
                                                                                                                                  • 1031 Behauptung
                                                                                                                                  • 1032 Beweis
                                                                                                                                    • 104 Square and multiply
                                                                                                                                    • 105 Montgomery Reduktion (Moduloberechnung ohne Division)
                                                                                                                                    • 106 Nochwas

            Kryptographie ist einer der beiden Bestandteile der Kryptologie der andere ist Kryptoanalyse

            Kryptographie Entwurf von Sicherheitsalgorythmen die Daten vor Mitlesen und Verandernschutzen

            Kryptoanalyse Aktives Analysieren von kryptographischen Verfahren

            11 Verschlusselung

            Verschlusselung benotigt Menge von Schlusseln

            N - Algorithmus (zB DES) - c

            E

            6

            K

            N Menge der NachrichtenK Menge der Schlusselc Verschlusselte Nachricht

            foralln isin N k isin K c = E(n k) eindeutig

            exist Algorithmus D (decrypt) mit aus c = E(n k) folgt existkprime isin K mit n = D(c kprime)

            12 Beispiel rot13

            N = Alphabetn isin N

            c = n + 13 mod 26Dies ist kein Verschlusselungsalgorithmus da es nur einen Schlussel gibtc = n + k mod 26Dies ist ein Verschlusselungsalgorithmus da es eine Menge von Schlusseln gibt

            c = E(n k) = n + kn = D(c k) = c minus kE(n 13) = D(n 13)

            6

            Variante der Betrachtung kprime = 26 minus k rArr D(c kprime) = E(c kprime)Verschlusseln = Entschlusseln = Vorteil nur ein Algorithmus

            Berechnungk rarr kprime (vernunftig im allgemeinen Sinne)E middot D = IdC

            D middot E = IdN

            Man unterscheidet bei Verschlusselungsverfahren

            symmetrisch k hArr kprime kennt man einen Schlussel kennt man beide

            asymmetrisch k rArr kprime oder k lArr kprime aus dem einen Schlussel kann man denanderen nicht erfahren

            13 Block-Chiffre

            Ausdehnung der Verschlusselung von Alphabet auf Zeichenketten mi Die Originalnachrichtwird in Blocke zerlegt die gleich verschlusselt werden Zum Beispiel

            m = (m1m2m3 )

            k = (k1 k2 k3 )

            ci = mi oplus ki

            Aus der Wikipedia (unter GNU Free Documentation License)

            Symmetrische Verschlusselungsalgorithmen sind oft Blockverschlusselungsalgorithmen (auchBlockchiffre) Bevor sie Daten verschlusseln werden diese zunachst in Blocke unterteilt de-ren Groszlige durch den Algorithmus vorgegeben ist Die Verschlusselungsroutinen setzen jedochganze Blocke voraus somit muss meistens der letzte Block mit Zufallsdaten aufgefullt werden(bei einer Blockgroszlige von 128 Bit werden die verschlusselten Daten somit 0 bis 127 Bit groszligerals der Klartext)Die Blocke werden anschlieszligend nacheinander verschlusselt Dabei ist es durchaus ublich dassdas Ergebnis der Verschlusselung eines Blocks bei der Verschlusselung des nachsten Blocksals Eingangswert mitverwendet wirdWichtige Parameter einer Blockchiffre sind somit die Blocklange (auch Blockgroszlige) und dieSchlussellange

            7

            14 Strom-Chiffre

            Aus der Wikipedia (unter GNU Free Documentation License)

            Eine Strom-Chiffre ver- bzw entschlusselt Nachrichten Bit fur Bit bzw Zeichen fur ZeichenDies steht im Gegensatz zu Block-Chiffren wo Nachrichten immer in gleich groszligen Blockenverarbeitet werden

            Strom-Chiffren sind symmetrische Verschlusselungsalgorithmen die sehr schnell arbei-ten

            Zur Generierung eines Geheimtextes wird zunachst ein Schlusselstrom erzeugt DieserSchlusselstrom ist eine Folge von Zeichen die nur mit Kenntnis des geheimen Schlussels er-zeugt werden kann (in der Regel eine Pseudozufallsfolge) Danach wird jedes Zeichen desSchlusselstroms mit einem Zeichen des Klartextes verknupft Die Verknupfungsoperation istXOR Um Geheimtexte wieder zu entschlusseln wird der Geheimtext mit dem Schlusselstromverknupft

            Beispiele fur Strom-Chiffren sind die XOR-Verschlusselung oder die Entwicklung vonRonald L Rivest namens RC4

            15 Angriffstypen

            m Nachrichtc verschlusselte Nachrichtk Schlussel

            Kommunikation zwischen Alice und Bob mit Angreifer Eve Vorraussetzung Eve kennt dasVerfahren

            1 Chiffre ist bekannt(ciphertext only Chiffre allein Angriff)m k gesucht

            2 (mi ci)-Paare sind bekannt ci = E(kmi)(known plain text bekannter Klartext Angriff)gesucht k und weitere mi

            3 wahlbarer Klartext chosen plaintext(zB Eve hat Encoder in die Hande bekommen)

            4 wahlbarer Chiffretext chosen ciphertext(zB Eve hat Decoder in die Hande bekommen)

            Generelle Schutzmechanismen zum sicherer machen

            8

            1 Klartextbits breit auf Chiffre verteilen und Schlusselbits uberall einbringen um die Si-cherheit zu erhohen bzw einen anderen Algorithmus verwenden um dies zu erreichen

            2 Algorithmus skalieren Lange des Schlussels mehr Runden

            3 Schwachen zusatzlichen Schutz bietet doppeltes verschlusseln zum BeispielAlgorithmus hat 64-Bit Sicherheit (Brute Force Angriff Aufwand von 264) doppelt ver-schlusselt hat er 65-Bit Sicherheit wegen

            rdquomeet in the middle Angriffldquo Ist known plain text attack m ist der Klartext k der Schlusselfur den ersten Algorithmus n der daraus resultierende ldquoZwischentextrdquo l der Schlussel furden zweiten Algorithmus und c die endgultige verschlusselte Nachricht Der Angreiferinist ein m und das dazu gehorige c bekannt Sie erzeugt sich nun alle Werte die k an-nehmen kann und alle Werte die l annehmen kann und berechnet zu jedem ki sowie zujedem li ein ni als E(kim) bzw D(li c) Damit muss sie 2 lowast 264 Paare von Schlusselnund ldquoZwischentextenrdquo erzeugen und speichern In der Menge der ni gibt es nun (da beideVerschlusselungen eindeutig sind) genau zwei - eines als Entschlusselung von c eines alsVerschlusselung von m - die ubereinstimmen Deren Schlussel sind diejenigen die auchbei der Erzeugung von c verwendet wurden Das Auffinden dieses Paares kann durch ge-schickte Speicherung der ni ki und li zum Beispiel in einer Hashtabelle in logarithmischerZeit bewerkstelligt werdenDaher Sicherheit des Algorithmus ist mindestens so stark wie jeder einzelne Algorithmusaber moglicherweise nicht viel besser

            4 Dreifach verschlusseln und Kombination von AlgorithmenDer Meet-in-the-middle attack schlagt hier fehl da der Speicher- und Rechenaufwandnun quadratisch mit dem Werteraum der Schlussel wachst Bei der Verwendung einesschwachen Algorithmus der anderweitig gebrochen werden kann wird die Kombinationjedoch wieder anfallig fur meet-in-the-middle

            5 Block-Chiffre + Strom-Chiffre kombinierenStrom-Chiffre sehr langer Schlussel c = p oplus k k zufallig gewahlt (moglichst echter phy-sikalischer Zufall) zwei Folgen CK rarr in Block-Chiffrerarr Blockweise C2 = E(S 1K)C1 = E(S 2C)Eine Strom-Chiffre und zwei Block-Chiffren Brechen dieser Kombination = Aufwandaddiert sich aber doppelte Ausgabelange

            151 Differentielle Kryptoanalysis

            man wahle Klartexte P1 P2 mit ganz bestimmten Unterschied P1 oplus P2 = D Bei der Ver-schlusselung ergibt sich dann fur die Chiffretexte C1C2 mit bestimmten Dprime = C1 oplus C2 das ineinen bestimmetn Zusammenhang zu D steht

            Bleiben die Schlussel immer gleich so kann man sich langsam mit D1 Dn an den Klartextranprobieren ()

            9

            16 Base64

            Aus der Wikipedia (unter GNU Free Documentation License)

            Base64 [] beschreibt ein Verfahren zur Kodierung von 8-Bit-Binardaten (z B ausfuhrbareProgramme ZIP-Dateien) in eine Zeichenfolge die nur aus wenigen Codepage-unabhangigenASCII-Zeichen besteht Im Zusammenhang mit OpenPGP wird noch eine Prufsumme (CRC-24) angehangt und es als Radix-64 bezeichnet

            Es findet im Internet-Standard MIME (Multipurpose Internet Mail Extensions) Anwen-dung und wird damit hauptsachlich zum Versenden von E-Mail-Anhangen verwendet Notigist dies um den problemlosen Transport von beliebigen Binardaten zu gewahrleisten da SMTPin seiner ursprunglichen Fassung nur fur den Versand von 7-Bit ASCII-Zeichen ausgelegt war

            Zur Kodierung werden die Zeichen A-Z a-z 0-9 + und verwendet sowie = am EndeDa diese Zeichen auch in EBCDIC vorkommen (wenn auch an anderen Code-Positionen) istdamit auch ein Datenaustausch zwischen nicht-ASCII-Plattformen moglich

            Zur Kodierung werden jeweils drei Byte des Bytestroms (=24 bit) in vier 6-bit-Blockeaufgeteilt Jeder dieser 6-bit-Blocke bildet eine Zahl zwischen 0 und 63 Diese Zahlen werdenan Hand der nachfolgenden Umsetzungstabelle in ldquodruckbare ASCII-Zeichenrdquo umgewandeltund ausgegeben Nach jeweils 76 ausgegebenen Zeichen wird spatestens ein Zeilenumbrucheingefugt welcher jedoch ansonsten fur die Kodierung nicht von Belang ist

            Falls die Gesamtanzahl der Eingabebytes nicht durch drei teilbar ist wird der zu kodieren-de Text am Ende mit Fullbytes aufgefullt Um dem Dekodierer mitzuteilen wie viele Fullbytesangefugt wurden werden die 6-Bit-Blocke die vollstandig aus Fullbytes entstanden sind mitrsquo=rsquo kodiert Somit konnen am Ende einer Base64-kodierten Datei 0 1 oder 2 rsquo=rsquo-Zeichenauftreten

            Die angesprochene Transitionstabelle ist eine alphabetisch bzw numerisch aufsteigende Anord-nung zuerst der Groszligbuchstaben dann der Kleinbuchstaben schlieszliglich der Ziffern und am Endeder beiden Zeichen rsquo+rsquo und rsquorsquo in dieser Reihenfolge

            2 OpenSSL

            Optionen fur openssl ciphername oder openssl enc -ciphername

            OPTIONS

            -in filename

            the input filename standard input by default

            -out filename

            the output filename standard output by default

            10

            -pass arg

            the password source

            -salt

            use a salt in the key derivation routines

            -nosalt

            donrsquot use a salt in the key derivation routines

            -e

            encrypt the input data this is the default

            -d

            decrypt the input data

            -a

            base64 process the data This means that if encryption is

            taking place the data is base64 encoded after encryption

            If decryption is set then the input data is base64 decoded

            before being decrypted

            -A

            if the -a option is set then base64 process the data on

            one line

            -k password

            the password to derive the key from This is for

            compatibility with previous versions of OpenSSL Superseded

            by the -pass argument

            -kfile filename

            read the password to derive the key from the first line

            of filename This is for compatibility with previous

            versions of OpenSSL Superseded by the -pass argument

            -S salt

            the actual salt to use this must be represented as a

            string comprised only of hex digits

            -K key

            the actual key to use this must be represented as a string

            comprised only of hex digits If only the key is specified

            the IV must additionally specified using the -iv option

            11

            When both a key and a password are specified the key given

            with the -K option will be used and the IV generated from

            the password will be taken It probably does not make much

            sense to specify both key and password

            -iv IV

            the actual IV to use this must be represented as a string

            comprised only of hex digits When only the key is specified

            using the -K option the IV must explicitly be defined When

            a password is being specified using one of the other options

            the IV is generated from this password

            -p

            print out the key and IV used

            -P

            print out the key and IV used then immediately exit donrsquot

            do any encryption or decryption

            -bufsize number

            set the buffer size for IO

            -nopad

            disable standard block padding

            -debug

            3 Symmetrische Verschlusselungsverfahren

            31 Feistel-Chiffren

            Aus der Wikipedia (unter GNU Free Documentation License)

            Feistel-Chiffre (auch als Feistelnetzwerk bezeichnet) ist eine Block-Chiffre Ein Mitarbeitervon IBM Horst Feistel gilt als der Erfinder dieser Chiffre Er arbeitete mit anderen am sogProjekt rdquoLuciferldquo dessen Ziel es war eine effiziente Verschlusselungstechnologie zu entwi-ckeln Die Feistel-Chiffre war spater dann die Grundlage fur den DES-Algorithmus

            Viele moderne symmetrische Verschlusselungsalgorithmen basieren auf Feistelnetzwer-ken Dies ruhrt ua auch daher dass die Struktur von sehr vielen Kryptografen analysiert undfur gut befunden wurde

            12

            Wie es der Name rdquoBlock-Chiffreldquo schon nahe legt wird der Klartext zuerst in einzelneBlocke zerlegt Die Groszlige dieser Blocke kann frei gewahlt werden ublich sind oftmals Vielfa-che von 64 Bit

            Jeder dieser Blocke wird danach in zwei gleichgroszlige Halften (L0 und R0) geteilt und inmehreren Runden mit verschiedenen Schlusseln verschlusselt Nach den Runden werden dieHalften wieder zusammen gesetzt

            Innerhalb der i-ten Runde (i ist die Nummer der aktuellen Runde und reicht von 1 bis n)wird folgende Formel angewendet

            Li = Riminus1

            Ri = Liminus1 oplus f (Riminus1Ki)

            Dabei bildet f die sog Runden- oder Transformationsfunktion und Ki ist der jeweilige Runden-schlussel Der verschlusselte Text am Ende der Runden ist die Zusammenfuhrung von (LnRn)

            Feistelnetzwerke ermoglichen eine Entschlusselung ohne dass die Umkehrfunktion von fbenotigt wird Will man einen Geheimtext dechiffrieren wendet man die obige Formel leichtmodifiziert an

            Riminus1 = Li

            Liminus1 = Ri oplus f (Riminus1Ki)

            13

            (Quelle httpenwikipediaorgwikiImageFeistelpng)

            32 DES - Data Encryption Standard

            DES ist eine 64 Bit Block-Chiffre mit einer festgelegten Schlussellange von 56 Bit Die Funk-tionsweise entspricht einem 16-Runden Feistel-Netzwerk DES ist der erste Verschlusselungs-Algorithmus der weite Verbreitung fand und dessen Spezifikation offentlich zuganglich ist Erwurde in den 70er Jahren entwickelt und ist im amerikanischen Standard FIPS 46-2 beschrieben

            14

            321 Schlusselauswahl

            Zunachst steht nominal ein 64-Bit Schlussel zur Verfugung Von diesem ist jedoch je ein Bit proByte als Paritatsbit deklariert so dass 56 Bit effektives Schlusselmaterial ubrigbleiben Diese 56Bit werden in 2 mal 28 Bit aufgeteilt die in jeder der 16 Runden um 1 oder 2 Bit rotiert werdeninsgesamt um 28 Bit so dass am Ende wieder das Original vorliegt Aus der Konkatenation derbeiden Halften wird in jeder Runde ein 48-Bit Rundenschlussel ausgewahlt

            (Quelle httpenwikipediaorgwikiImageDES-key-schedulepng)

            15

            322 Funktionsweise

            Die so gewonnenen Rundenschlussel ki werden fur die Runden der Feistelchiffre genutzt E(k1 k2 k16m) =

            cE(k16 k15 k1 c) = mD(k1 k2 k16 c) = E(k16 k15 k1 c) = mJeder 64 Bit Eingabe-Block wird in zwei 32 Bit Blocke (L und R) aufgeteilt und weiterverarbei-tet L und R werden in jeder Runde durch eine festgelegte Permutation E auf 48 Bit ausgedehntanschlieszligend mit dem Rundenschlussel verknupft mittels einer weiteren rundenspezifischenPermutation S wieder auf 32 Bit komprimiert und dann schlieszliglich noch einer weiteren festge-legten Permutation P unterzogenLi = Riminus1Ri = Liminus1 oplus f (Riminus1Ki) wobei f (Riminus1Ki) = P(S (E(Riminus1) oplus Ki))

            rechts Feistelstruktur (Quelle httpenwikipediaorgwikiImageDES-main-networkpng)

            links F Funktion (Quelle httpenwikipediaorgwikiImageDES-f-functionpng)

            16

            (Quelle httpdewikipediaorgwikiBildDES_resizepng)

            323 Schwachstellen und Unsinnigkeiten

            bull Die Anfangliche Permutation der Klartexteingabe sollte Softwareimplementation erschwe-ren Per Hardware ist diese sehr einfach universell verwendbare Rechner hatten in den70er Jahren jedoch noch Probleme mit so etwas

            bull Das Paritatsbit ist eine Schwachstelle da es - soweit es gesetzt ist - ein Durchmustern desSpeichers nach dem Schlussel erlaubt Gesucht wird dann nach dem relativ ungewohn-lichen Auftreten von 8 nahe bei einander liegenden Byte bei denen je das letzte Bit dieParitat angibt

            17

            bull Mit heutigen Rechnern ist es moglich einen 56-Bit Schlussel mittels brute force zu knackenDie Lange des Schlussels ist bei DES aber auf diesen Wert festgelegt

            bull Es wird vermutet dass die ldquomagischenrdquo S-Permutationen uber deren Qualitat nichts be-wiesen ist eine Hintertur darstellen da die NSA hierbei ihre Finger im Spiel hatte Eskonnte jedoch nie bewiesen werden

            324 spezielle Optionen bei openssl

            bull Option -nopad Schaltet Auffullung der letzten Bits zu Block von 64 Bits aus Auch wenndie Nachricht genau in 64 Bit Blocken einteilbar ist wird ein 64 Bit Padding Block an-gehangtDer Block besteht aus x mal der Zahl x So lasst er sich beim Entschlusseln wieder entfer-nen

            bull Option -nosalt Schaltet die Voranstellung des salt-Werts ausDer salt-Wert verlangert die Nachricht um insgesamt 16 Bytes Salted__ gefolgt von 8Bytes salt-WertAus Passwort und salt-Wert wird der Key fur die eigentliche Verschlusselung erzeugt Da-mit wird verhindert dass Schlussel wegen Mehrfachverwendung von Passwortern leich-ter zu brechen sind Gleiche Passworter beim Aufruf der Verschlusselung mit OpenSSLfuhren durch den zufalligen salt-Wert zu verschiedenen Keys bei der Verschlusselung

            bull Neben des gibt es auch des-ede und des-ede3 Diese bieten einen gewissen Schutzgegen Bruteforce-AngriffeTDES (Triple DES) DES3 DES-EDE (Encrypt Decrypt Encrypt) mit effektiv 168 Bit

            E3DES(k1 k2 k3m) = EDES(k3DDES(k2 EDES(k1m)))

            In OpenSSL arbeitet des-ede mit zwei Schlusseln

            E(K1)D(K2) E(K1)

            Um in OpenSSL 3 Schlussel angeben zu konnen muss man des-ede3 verwenden Ver-wendet man bei des-ede zweimal oder bei des-ede3 dreimal den selben Schlusselerhalt man eine einfache DES-Verschlusselung So kann man Abwartskompatibilitat er-reichen

            bull In OpenSSL konnen DES Verschlusselungen mit folgenden Befehlen aufgerufen werden

            ndash -desndash -des-cbcndash -des-cfbndash -des-ecbndash -des-edendash -des-ede-cbc

            18

            ndash -des-ede-cfbndash -des-ede-ofbndash -des-ede3ndash -des-ede3-cbcndash -des-ede3-cfbndash -des-ede3-ofbndash -des-ofbndash -des3ndash -desxndash -desx-cbc

            OpenSSL des-ecb -salt fur den Schlusseleintrag aus Passphrasepassphrase = 12345prime +prime S alt minusWert rarr K

            12345srarr

            264 Moglichkeiten

            Damit man keine Tabelle generieren kann die aus den schwachen Schlussel besteht denn fur12345 gibt es 264 Moglichkeiten aufgrund des salts

            (PC12345)(PC1234)

            P- (Klartext) bekanntS- (Saltwert) bekanntC- (Chiffretext) unbekanntwelcher Schlussel wurde verwendet

            112123

            1234

            rarr K

            s1 s2 s3c1 c1 c1c12 c12 c12c123 c123 c123c1234 c1234 c1234

            Dazu kommt aber spater noch mehr

            19

            325 DESECB - Electronic Code Book

            Die Eingabe wird in Blocke aufgeteilt und jeder Block fur sich verschlusselt Dieses Verfahrenist potentiell unsicher weil in der Abfolge der Blocke eine Struktur enthalten ist die der Algo-rithmus nicht verbirgt Ein Fehler beim Ver- oder Entschlusseln eines Blockes fuhrt allerdingsauch nur zu einem einzigen verlorenen Block

            To do Initialisierungsvektor

            (Quelle httpenwikipediaorgwikiImageEcb_encryptionpng)

            (Quelle httpenwikipediaorgwikiImageEcb_decryptionpng)

            BemReicht fur einen Block dann wird auch kein Initialisierungsvektor benotigt

            20

            Man kann fur den Initialisierungsvektor auch einen vorher vereinbarten Wert (zB Unix Sekun-den) wahlen

            Aus der Wikipedia (unter GNU Free Documentation License)

            Die 64-bit Klartextblocke werden nacheinander und getrennt voneinander kontextfrei ver-schlusselt Dies ist die einfachste Anwendungsmoglichkeit eines Block-Chiffre

            326 DESCBC - Cipher Block Chaining

            Aus der Wikipedia (unter GNU Free Documentation License)

            Vor der Verschlusselung eines Klartextblockes wird der bereits verschlusselte vorhergehendeBlock hinzuaddiert Auf den ersten Klartextblock der ja keinen Vorganger besitzt wird stattdessen ein Initialisierungsvektor der geheim gehalten werden muss addiert Dadurch entstehteine Verkettung (engl chain) der Blocke Trotz dieser Verkettung ist die CBC-Verschlusselung

            rdquoselbstkorrigierendldquo FehlerManipulationen in einem Block wirken sich bei der Entschlusse-lung nur auf den fehlerhaftenmanipulierten und den nachsten Block ausMan kann relativ einfach beliebige Blocke des Geheimtextes einzeln entschlusseln da zusatz-lich zum Schlussel nur der vorhergehende (verschlusselte) Block benotigt wird

            Fehler im c breiten sich nicht aus beim Entschlusseln Ein Initialisierungsvektor IV fur erstenBlock wird benotigt

            bull Klartext oplus Cipher und dann Encryption

            bull Vorteil Muster im Klartext werden zerstort

            bull Nachteil Fehler im Ciphertext eines Blocks verandern Bits an genau der Stelle im folgen-den Block (aber nur in diesem spatere Blocke sind nicht betroffen) so kann gezielt eineStelle im Block angegriffen werden (siehe Skizze)

            To do Skizze zur Fehlerausbreitung erlautern

            21

            m1 mlowast2 mlowast3

            IV oplus

            oplus

            oplus

            oplus

            DES

            DES

            DES

            DES

            c1

            DDc2

            DDc3

            DDc4

            EE

            Vergleich DESECB und DESCBC

            Zum Vergleich bietet es sich an ein Bild (Abbildung 1) mit DES im ECB- und im CBC-Moduszu verschlusseln Deutlich zu erkennen ist dass die Struktur im ECB-Modus (Abbildung 2)erhalten bleibt wahrend sie bei CBC (Abbildung 3) vollkommen zerstort wird

            Abbildung 1 Bild im Klartext (24 Bit RGB mit 182 times 183 Pixeln)

            Abbildung 2 Bild aus Abbildung 1 ECB-verschlusselt

            22

            Abbildung 3 Bild aus Abbildung 1 CBC-verschlusselt

            327 DESOFB - Output Feed Back

            Aus der Wikipedia (unter GNU Free Documentation License)

            In diesem Modus werden die Klartextblocke nicht direkt mit DES verschlusselt sondern DESerzeugt einen pseudozufalligen Bitstrom der dann ohne Ubertrag (vgl XOR) auf den Klartextaddiert wird Dazu muss DES mit einem kontinuierlichen Eingabestrom gefuttert werden AlsEingabe von DES dient hier ein Schieberegister dass zunachst mit einem Initialisierungsvektorgeladen wird Anschlieszligend wird immer ein Teil der Ausgabe von DES in dieses Registerhineingeschoben und so als Eingabe wiederverwendet (daher output feedback)

            bull Output der Encrpytion als Input fur Encryption erzeugt Pseudozufallsstrom oplus Klartext

            bull Vorteil Beliebige Blockgroszligen moglich wie Stromchiffre verwendbar

            bull Nachteil Durchsatz verringert sich auf neue Blockgroszlige pro erzeugtem Block kann abervorberechnet werden

            bull Vorteil Ein Bit Fehler fuhrt zu nur einem invertierten Bit nach der Entschlusselung

            bull Nachteil Keine Selbstsynchronisierung moglich wenn Bits komplett verloren gehen

            23

            (Quelle httpdewikipediaorgwikiBildOfb_encryptionpng)

            (Quelle httpdewikipediaorgwikiBildOfb_decryptionpng)

            328 DESCFB - Cipher Feed Back

            Aus der Wikipedia (unter GNU Free Documentation License)

            Identisch mit OFB aber statt die Ausgabe des DES wieder als Eingabe zu verwenden wirdder Kryptotextstrom als Eingabe wiederverwendet

            bull Cipher als Input fur Encryption erzeugt Pseudozufallsstrom oplus Klartext

            24

            bull Vorteil Beliebige Blockgroszligen moglich wie Stromchiffre verwendbar

            bull Nachteil Durchsatz verringert sich auf neue Blockgroszlige pro erzeugtem Block

            (Quelle httpdewikipediaorgwikiBildCfb_encryptionpng)

            (Quelle httpdewikipediaorgwikiBildCfb_decryptionpng)

            329 CTR Mode CCM

            Dieser Modus spielt fur DES keine Rolle Ist auch nicht in OpenSSL implementiert Aber die-se Betriebsart ist fur 128 Bit Verschlusselungen ist zum Beispiel vom BSI als sicher eingestuftworden rsquoDie Betriebsart der Zukunftrsquo

            Wird zum Beispiel fur W-LAN Verschlusselung verwendet

            25

            Eingabe sind Klartext mit einen Zahler

            ctr0 rarr Block rarr oplusT rarr c0ctr1 rarr Block rarr oplusp1 rarr c1ctr2 rarr Block rarr oplusp2 rarr c2ctr3 rarr Block rarr oplusp3 rarr c3

            ctrn rarr Block rarr opluspn rarr cn

            Standardisiert als rsquoSP 800-38crsquo

            (N A P) mit N Zufallswerten A Assoziierte Daten P Klartext produziert Blocke B0 B1 Br

            httpcsrcnistgovpublicationsnistpubs800-38CSP800-38C_updated-July20_

            2007pdf

            To do algorithmus uberarbeiten ubersetzen

            1 Apply the formatting function to (N A P) to produce the blocks B0 B1 Br

            2 Set Y0 = CIPHK(B0)

            3 For i = 1 to r do Yi = CIPHK(Bi oplus Yiminus1)

            4 Set T = MS BTlen(Yr)

            5 Apply the counter generation function to generate the counter blocks Ctr0Ctr1 Ctrmwhere m = dPlen128e

            6 For j = 0 to m do S j = CIPHK(Ctr j)

            7 Set S = S 1||S 2|| ||S m

            8 Return C =(P oplus MS BPlen(S )

            )||(T oplus MS BTlen(S 0)

            )

            T stellt einen Prufwert dar

            3210 TEA-Algorithmus

            To do uberarbeiten

            26

            Nicht in OpenSSL implementiert Universitarer Algorithmus

            (Quelle httpdewikipediaorgwikiBildTEA_InfoBox_Diagrampng)

            Man sieht die Feistel Idee allerdings die grunen Quadrate sind Additionen modulo 64 Bit

            To do erlautern Pfeilspitzen

            Es gibt ein Extended TEA struktur recht ahnlich aber beim Algorithmus an der Stelle

            Byte 0 28 minus 1 | 28ii

            b middot k = (b middot k mod (28 + 1)) mod 28 Es gibt auch eine Inverseb middot K rarr c rarr c middot kprime = b

            geht nur bei 22 + 1 24 + 1 28 + 1 216 + 1

            27

            3211 DES-X

            In OpenSSL desx KK1K2

            EncK(m oplus K2) oplus K1 = DES minus X(m)

            c1 oplus c2 = EncK(m1 oplus K2) oplus EncK(m2 oplus K2)

            Ist unsymetrisch Hat sich nicht so ganz durchgesetzt

            33 IDEA International Data Encryption Algorithm

            IDEA gilt als sehr sicher ist schneller als DES bei Hardwareimplementation tauchte zuerst alsPES auf Unterschied PES und IPES ist die untere XOR-Vertauschung (siehe Wikipedia Skiz-ze) die es im PES nicht gab War nur zur privaten Nutzung frei ansonsten patentiert weshalber nicht so verbreitet war IDEA verschlusselt 64-Bit Eingabe-Blocke in 64-Bit Ausgabe-Blockeund verwendet dabei einen 128-Bit Schlussel Der Algorithmus basiert im wesentlichen auf 8identischen Runden die den Runden einer Feistel-Chiffre ahnlich sind und einer abschlieszligendenTransformation der Ausgabe In jeder Runde werden 6 16-Bit Subschlussel in der Ausgaben-Transformation weitere 4 davon verwendet Samtliche Subschlussel werden aus dem Original-schlussel berechnet Die 64 Bit Eingabe jeder Runde werden dabei als 4 16-Bit-Blocke verar-beitet Der Algorithmus benutzt verschiedene algebraische Operationen

            bull Polynomaddition mod 2 XOR (blau-verbraucht wenig Strom)

            bull Addition mod 216 ADD (grun-verbraucht wenig Strom etwas Zeit - Uberlauf wirdignoriert)

            bull Multiplikation mod 216︸︷︷︸prim

            +1 MULT (rot-viel Strom)

            Aus der Wikipedia (unter GNU Free Documentation License)

            Der IDEA-Algorithmus (International Data Encryption Algorithm) wurde 1990 als ein Ge-meinschaftsprojekt zwischen der ETH Zurich von James L Massey und Xueija Lai und derAscom Systec AG entwickelt IDEA ist ein symmetrischer Algorithmus und gehort zu denBlockchiffren Der Algorithmus benutzt einen 128-Bit langen Schlussel (DES nur 64 Bit da-von sind 8 Bits fur den Paritats-Check vorgesehen so dass die eigentliche Schlussellange nur56 Bits betragt)

            Bei der Verschlusselung wird der Klartext in 64 Bit groszlige Blocke unterteilt und derSchlussel in Teilstucke zu je 16 Bit zerlegt Die Verschlusselung geschieht durch Kombina-

            28

            tion der logischen Operation XOR der Addition modulo 216 und der Multiplikation modulo216+1 Die Kombination dieser drei Operationen aus unterschiedlichen algebraischen Gruppensoll ein hohes Maszlig an Sicherheit gewahrleisten

            Das Verfahren ist dazu optimiert Angriffen durch differentielle Kryptoanalyse zu wider-stehen

            Es gibt bei IDEA leider eine ganze Reihe von schwachen Schlusseln die sich in zweiKlassen einteilen lassen Die erste Klasse umfasst 232 schwache Schlussel Sie sind insofernschwach als man sie mit gewahltem Klartext nachweisen kann Danach ist ein Brute ForceAngriff selbst fur Privatpersonen mit alteren PCs machbar Die zweite Klasse umfasst sogar265 schwache Schlussel Bei diesen Schlusseln kann man mit nur 20 gewahlten Klartexten72 Bit des Schlussels ermitteln Die restlichen 56 Bit muss man mit Brute Force ermittelnAllerdings liegt die Wahrscheinlichkeit dafur einen schwachen Schlussel zu erwischen bei einszu 263 oder eins zu 9 Trillionen

            Weil die Ascom Systec AG an der Entwicklung des Algorithmus beteiligt war halt siedie Patente fur IDEA In Europa verfallt der Patentschutz am 16052011 In den USA wirdder Algorithmus bereits ein Jahr fruher kostenlos nutzbar sein Da das Patent in der Schweizerteilt wurde greift das Patent auch in Deutschland unabhangig davon dass in DeutschlandSoftwarepatente nicht legal sind

            Der Algorithmus beruht wesentlich darauf dass 216 + 1 eine Primzahl ist Deshalb lasst sichIDEA nicht auf andere Blocklaengen adaptieren

            331 Schlusselauswahl

            Aus den 128 Bit des ursprunglichen Schlussels werden in insgesamt 52 16-Bit Teilschlussel er-zeugt Dabei werden aus dem aktuellen Schlusselwert (initial der ursprungliche 128-Bit Schlussel)8 der Teilschlussel durch aufteilen gewonnen Dann wird der aktuelle Schlussel subsequent um25 Bit nach links rotiert und so je ein neuer aktueller Schlussel erzeugt der wieder zu Teil-schlusseln aufgeteilt wird - solange bis alle Teilschlussel belegt sind Es werden 6 middot 16-Bit ineiner Runde verbraucht in 8 Runden also 48 Teilschlussel Hinzu kommen 4 Teilschlussel dienach der letzten Runde fur weitere Operation verwendet werden Insgesamt werden also 52Teilschlussel mit je 16-Bit aus 128-Bit Rohschlussel erzeugt und auch verbraucht rarr 832-BitSchlusselmaterial

            332 Funktionsweise

            In jeder Runde r finden folgende Transformationen statt

            1 X1 = X1 MULT Kr1 X4 = X4 MULT Kr

            4 X2 = X2 ADD Kr2 X3 = X3 ADD Kr

            3

            2 t0 = Kr5 MULT (X1 XOR X3) t1 = Kr

            6 MULT (t0 ADD (X2 XOR X4)) t2 = t0 ADD t1

            29

            3 X1 = X1 XOR t1 X4 = X4 XOR t2 a = X2 XOR t2 X2 = X3 XOR t1 X3 = a

            Dabei sind X1 bis Xi die 16-Bit Blocke die aus der 64 Bit Eingabe gewonnen wurden Kri ist der

            Teilschlussel mit der Nummer r middot 6 + i Die abschlieszligende Transformation ergibt sich wie folgtY1 = X1 MULT K9

            1 Y4 = X4 MULT K94 Y2 = X3 ADD K9

            2 Y3 = X2 ADD K93

            Dabei sind die Yi 4 16-Bit Worter die die Ausgabe darstellen

            (Quelle httpdewikipediaorgwikiBildInternational_Data_Encryption_Algorithm_InfoBox_Diagrampng)

            bull In OpenSSL konnen IDEA Verschlusselungen mit folgenden Befehlen aufgerufen wer-den

            ndash -ideandash -idea-cbcndash -idea-cfbndash -idea-ecbndash -idea-ofb

            333 Pseudocode-multiplikation

            To do als Pseudocode machen

            30

            if(a==0)return ((216 +1)-b) mod 216

            if(a==0)return ((216 + 1)-a) mod 216

            if(a middot b) mod 216 gt (a middot b) div 216 return (a middot b) mod 216 minus (a middot b) div 216

            if(a middot b) mod 216 le (a middot b) div 216 return (216 + 1) + (a middot b) mod 216 minus (a middot b) div 216

            wenn a==0 rArr a = 216 equiv minus1 mod 216

            334 Schwachstellen

            Bei schlechter implementation konnen die XOR-Berechnungen am Stromverbrauch erkanntwerden Es konnen Ruckschlusse auf bestimmte Werte (insbesondere Null) gemacht werdenNach 218 Testrechnungen kann der Klartext bestimmt werdenSolche Angriffe nennt man Seiten Kanal Atacken in diesem Fall ist der Stromverbrauch derSeitenkanal (Zeitverbrauch spielt beim Idea keine Rolle)Bei guter Implementation gilt aber der Algorithmus als sicher

            To do Skizze Stromverbrauch

            34 Blowfish

            Blowfish ist eine sehr schnelle 64-Bit 16-Runden Block-Chiffre die 1993 von Bruce Schneiererfunden wurde Die Lange der Schlussel ist variabel zwischen 32 und 448 Bit Als Teilschlusselwerden aus dem Ausgangsschlussel eine P-Box mit 18 mal 32 Bit und 4 S-Boxen mit 256 mal32 Bit generiert (P1 P18) (S 1 S 4)

            Blowfisch Algorithmus von Bruc Schreier ist vollig Patentfrei dies hat sehr zu seiner Verbrei-tung beigetragen

            31

            F

            F

            14 weitere Runden

            (Quelle httpdewikipediaorgwikiBildBlowfish_structure_(de)svg)

            P1 P18 die XOR auf den Klartext kommen

            Schlussel-P1 P18 und

            -S-Boxen

            32

            (Quelle httpenwikipediaorgwikiImageBlowfishFFunctionsvg)

            S ist 256 32 Bit WerterArr 4 middot 256 middot 32 Werte rArr kann man sich nicht merken also wird P1 P18 S 1 S 4 werdenals Hexadezimalwerte von π gewahlt

            (K)n oplus (P1 P18)

            Der so initialisierte Algorithmus wird auf den Klartext 0 0︸ ︷︷ ︸64

            angewendet Das Ergebnis ersetzt

            (P1 P2) Der so initialisierte Algorithmus wird auf den Klartext 0 0︸ ︷︷ ︸

            64

            angewendet Das Ergebnis

            ersetzt (Pi Pi+1) Der so initialisierte Algorithmus wird auf den Klartext 0 0︸ ︷︷ ︸64

            angewendet

            Das Ergebnis ersetzt (S 1 S 2)

            Auf kosten eines sehr aufwendigen Schlusselmanagment wird ein schneller Algorithmus er-reicht Fur Prozessoren mit wenig Speicher unpraktisch

            341 Initialisierung

            Teilschlusselmanagement Sehr viele Teilschlussel werden aus wenig Schlusselmaterial gene-riert

            1 P und S werden mit einer Hexadezimal-Expansion von Pi initialisiert

            2 Der Schlussel als Sequenz von 32-Bit-Werten wird mittels XOR auf die P-Box addiertwobei er eventuell ldquowiederholtrdquo wird um die ganze Lange der Box abzudecken P1 oplus K1P2 oplus K2 P18 oplus K18

            3 Sowohl die P-Box als auch die S-Boxen werden verschlusselt

            33

            bull Verschlussle mit Blowfish den Nullstring rarr 64-Bit Ausgabe = 2 32-Bit = neueP1 P2

            bull Verschlussle mit Blowfish (Pi Pi+1) die Ausgabe verwende als (Pi+2 Pi+3) Wieder-hole diesen Schritt fur i von 1 bis zum Ende der P-Boxbull Anschlieszligend S 10 S 11 rarr S 12 S 13 Im gleichen Verfahren wie bei der P-Box

            werden die S-Boxen verschlusselt

            Insgesamt ist so ein langer Vorlauf notig bevor die eigentliche Verschlusselung der Daten be-ginnt

            342 Verschlusselung

            In jeder Runde r (insgesamt 16 Runden) wird folgendes Verfahren angewendet

            1 Der 64-Bit Eingabeblock wird in zwei 32-Bit-Halften L und R zerlegt

            2 L = L oplus Pr R = R oplus f (L)f (L) ist dabei folgendermaszligen charakterisiert Zunachst wird das Argument L als Konka-tenation von 4 8-Bit Vektoren a b c und d aufgefasst die als naturliche Zahlen zwischen0 und 255 verwendet werden

            f (a b c d) = ((S 1a + S 2b mod 232 oplus S 3c) + S 4d mod 232

            3 L und R werden vertauscht konkateniert und als Eingabe fur die nachste Runde verwen-det

            Nach der letzten Runde wird noch R = R oplus P17 und L = L oplus P18 durchgefuhrt

            Aus der Wikipedia (unter GNU Free Documentation License)

            Blowfish ist ein sehr schneller und nicht patentierter Algorithmus der besonders auf 32-Bit-Prozessoren eine exzellente Performance bietet Ein weiterer Vorteil ist seine variableSchlussellange von 32 bis zu 448 Bit Die Blockgroszlige betragt 64 Bit

            bull In OpenSSL konnen Blowfish Verschlusselungen mit folgenden Befehlen aufgerufen wer-den

            ndash -bfndash -bf-cbcndash -bf-cfbndash -bf-ecbndash -bf-ofbndash -blowfish

            34

            35 AES Advanced Encryption Standard

            351 Wiederholung-Byteoperation

            Wir hatten folgende Byteoperationen kennengelernt

            bull Multiplikation mod 256 bzw mod 257 ohne 0

            bull Addition mod 256

            bull XOR-Addition (oplus)

            Die Operationen werden in der dementsprechenden Basisdarstellung modulo 256 durchgefuhrt

            352 Uberblick

            AES wurde im Standard FIPS 197 festgeschrieben

            Aus der Wikipedia (unter GNU Free Documentation License)

            AES ist eine Block-Chiffre dessen Blocklange und Schlussellange unabhangig voneinanderdie Werte 128 192 oder 256 Bit erhalten kann Jeder Block wird zunachst in eine zweidimen-sionale Tabelle mit vier Zeilen geschrieben dessen Zellen ein Byte groszlig sind Die Anzahl derSpalten variiert somit je nach Blockgroszlige von 4 (128 Bit) bis 8 (256 Bit) Zum Beispiel fur 16Byte werden die Bytes wie folgt eingetragen

            1 5 9 132 6 10 143 7 11 154 8 12 16

            Jeder Block wird nun nacheinander bestimmten Transformationen unterzogen Aber anstattjeden Block einmal mit dem Schlussel zu verschlusseln wendet AES verschiedene Teile desSchlussels nacheinander auf den Klartext-Block an Die Anzahl dieser Runden (r) variiertund ist von Schlussellange (k) und Blockgroszlige (b) abhangig Je nach Blocklange b undSchlussellange k wird die Anzahl der Runden bestimmt (10 12 oder 14)

            r b=128 b=192 b=256k=128 10 12 14k=192 12 12 14k=256 14 14 14

            S-BoxenEine Substitutionsbox (S-Box) dient als Basis fur eine monoalphabetische Verschlusselung

            35

            Sie ist meist als Array implementiert und gibt an welches Byte wie getauscht wird DieS-Box in AES basiert auf einem mathematischen Zusammenhang und ist somit fest imAlgorithmus implementiert Doch dies ist kein Schwachpunkt da die S-Box lediglich zur Ver-mischung der Bytes in Kombination mit weiteren Operationen und dem Schlussel genutzt wird

            Ablauf

            bull Schlusselexpansion (nach Fips-197 S23 Kapitel 52)

            Der Schlussel rsquokeyrsquo wird auf den Anfang des expandierten Schlussels rsquowrsquo ubernommen(i lt Nk) Danach berechnet sich w[i] wie folgt

            w[i] =

            w[i minus 1] i mod Nk 0S ubWord(RotWord(w[i minus 1])) oplus Rcon i mod Nk = 0S ubWord(w[i minus 1]) Nk gt 6i (mod N)k = 4

            (1)

            w[i] = w[i] oplus w[i minus Nk] (2)

            Der zugehorige Quelltext (Fips-197 entnommen)

            KeyExpansion(byte key[4Nk] word w[Nb(Nr+1)] Nk)

            begin

            word temp

            i = 0

            while (i lt Nk)

            w[i] = word(key[4i] key[4i+1] key[4i+2] key[4i+3])

            i = i+1

            end while

            i = Nk

            while (i lt Nb (Nr+1)]

            temp = w[i-1]

            if (i mod Nk = 0)

            temp = SubWord(RotWord(temp)) xor Rcon[iNk]

            else if (Nk gt 6 and i mod Nk = 4)

            temp = SubWord(temp)

            end if

            w[i] = w[i-Nk] xor temp

            i = i + 1

            end while

            end

            36

            Fur Beispiele siehe Fips-197 Appendix A1

            bull Vorrunde

            ndash KeyAddition (XOR-des Rundenschlussels)

            bull Verschlusselungsrunden

            ndash Substitution - Jedes Byte b wird ersetzt durch bprime = 1b wie bei Polynommultiplikati-

            on Weiter wird jedes Byte als ein 8-dimensionaler Vektor aufgefasst und folgendeOperation angewendet

            b1b2

            b8

            =

            1 0 0 0 1 1 1 11 1 0 0 0 1 1 11 1 1 0 0 0 1 11 1 1 1 0 0 0 11 1 1 1 1 0 0 00 1 1 1 1 1 0 00 0 1 1 1 1 0 00 0 0 1 1 1 1 0

            middot

            b1b2

            b8

            +

            c1c2

            c8

            ndash ShiftRow - Erste Zeil wird nicht verschoben die zweite Zeil um eins die dritteZeile um zwei die vierte um drei (siehe Wikipedia)

            ndash MixColumn - Zu jeder Spalten

            b1b2b3b4

            des Blocks wird folgende Polynommultiplika-

            tion durchgefuhrt

            (b1x3 + b2x3 + b3x + b4) middot (03X3 + 04X2 + 01X + 02) mod (X4 + 1)

            und die Koeffizienten in gleicher Weise wieder in die jeweilige Spalte eingetragenWobei (X4 + 1) das Inverse (0BX3 + 0DX2 + 09X + DE) hat

            ndash KeyAddition

            bull Schlussrunde

            ndash Substitutionndash ShiftRowndash KeyAddition

            Fur die Entschlusselung gehe die oben angegebene Reihenfolge ruckwarts durch Beachtedabei dass ShiftRow und Subst vertauschbar sind Bei ShiftRow wird in umgekehrter Weiseverschoben Ebenso sind KeyAdd und MultColumn vertauschbar wenn der Rundenschlusselmodifiziert wird (B(X) lowast (S (X) oplus K(X)) = S (X) lowast B(X) oplus B(X) lowast K(X) also ist der modifiziertSchlussel B(X) lowast K(X)) Die Entschlusselung entspricht also der Verschlusselung mit modifi-zierten Schlusseln

            37

            353 mathematische Grundlagen

            Speziell der Schritt Mix-Column beinhaltet einige interessante mathematische Uberlegungen Ersoll zu einer moglichst effektiven Vermischung der 32 Bit in jeder Spalte fuhren die die Suchevon dem unverschlusselten Text ahnlichen Mustern im verschlusselten Text erschwert Dabeiwerden arithmetische Operationen aus zwei algebraischen Gruppen angewandt

            1 Die Gruppe der Bytes F82 Jedes Byte b7b6b0 wird als ein Polynom b7 middot X7 + b6 middot X6 +

            b0 middot X0 angesehen Diese Polynome konnen addiert und multipliziert werden Damitdabei der Werteraum des Byte nicht verlassen wird finden diese Operationen modulom(X) = X8 + X4 + X3 + X +1 statt m ist dabei irreduzibel es gilt also ggT (b(X)m(X)) = 1fur jedes Byte b Somit ist F2[X]m(X) ein Korper und die Multiplikation ist abgeschlos-sen Es gilt fur jedes Paar von Bytes b c eindeutig b middot c = d rarr dc = b Multiplikationenkonnen also eindeutig ruckgangig gemacht werden so dass eine Entschlusselung moglichistBei Zahlen die groszliger als m(X) sind werden also durch die modulo Operation die Koeffi-zienten von x4 x3 x1 x0 verandertBeispiel in Magma

            Q = IntegerRing(2)

            Pltxgt = PolynomialRing(Q)

            f=xˆ7+1

            g=xˆ3+xˆ2+x+1

            fg

            fg mod(xˆ8 +xˆ4+xˆ3+x+1)

            IsPrime(xˆ8 +xˆ4+xˆ3+x+1)

            Ausgabe

            xˆ10 + xˆ9 + xˆ8 + xˆ7 + xˆ3 + xˆ2 + x + 1

            xˆ7 + xˆ6 + xˆ3 + xˆ2 + x

            true

            2 Die Gruppe der Worter F4256 Die 4 Bytes einer Spalte w3w2w1w0 werden wieder als Po-

            lynom aufgefasst w3 middot X3 + w2 middot X2 + w1 middot X + w0 Diese konnen wieder multipliziertund addiert werden wobei die arithmetischen Operationen auf den jeweiligen Bytes in F8

            2stattfinden Die Operationen in F4

            256 werden modulo M(X) = X4 + 1 ausgefuhrt M(X) istzwar nicht irreduzibel aber da der Algorithmus nur eine beschrankte Gruppe von Operan-den verwendet bleiben auch hier alle Operationen invertierbar

            Mix-Column multipliziert (in F4256) nun jede Spalte mit c(X) = 3 middot X3 + X2 + X + 2 Die so

            beschriebene lineare Funktion erreicht beweisbar eine groszlige Diffusion der Eingabe

            38

            bull In OpenSSL konnen AES Verschlusselungen mit folgenden Befehlen aufgerufen werden

            ndash -aes-128-cbcndash -aes-128-cfbndash -aes-128-ecbndash -aes-128-ofbndash -aes-192-cbcndash -aes-192-cfbndash -aes-192-ecbndash -aes-192-ofbndash -aes-256-cbcndash -aes-256-cfbndash -aes-256-ecbndash -aes-256-ofbndash -aes128ndash -aes192ndash -aes256

            36 RC4 Ronrsquos Cipher 4

            Geheimes Chiffreverfahren mit Strom-Chiffre von Ron Rivest 1987 Entstehungsjahr 1994 imNetz aufgetaucht 1999 tauchte im Internet ein Draft ARCFOUR (ARC4) auf der die gleichenErgebnisse lieferte

            Byte orientiert zwei Bytes m k dann wird berechnetm oplus k = cDer Algorithmus basiert auf S-Boxen (Permutationen)

            mdashmdashSkizze Seite 2b ganz oben

            PRG (Pseudo Random Generator)mdashmdashweitere Skizze

            Initialisierung K = L Bytes als Schlussel s[i] = i (identische Permutation)L = 1255 fur RC4 mit 40-Bit L = 5 mit 64-Bit L = 8 mit 128-Bit L = 16j = 0 fur i = 0255rarr j = ( j + s[i] + K[ j mod L]) mod 256

            Problem K-Masterkeyrarr salted key Initialwert (frei bekannt) HashInitial(K) = Kaktuell rarr RC4

            39

            Anfangsstucke von PRG RC4 sind nicht rdquorichtig zufalligldquo verraten viel uber KaktuellRegel fur RC4 Die ersten 256-Byte wegschmeiszligen

            Aus der Wikipedia (unter GNU Free Documentation License)

            RC4 (Ronrsquos Cipher 4) ist ein fur Software optimierter Stromchiffrierer welcher zur Ver-schlusselung von Daten eingesetzt wird Er wurde 1987 von Ronald L Rivest fur RSA DataSecurity Inc (heute RSA Security) entwickelt

            Der Algorithmus war sieben Jahre lang geheim (ldquosecurity by obscurityrdquo) bis 1994 derQuellcode anonym veroffentlicht wurde

            RC4 hat im Gegensatz zu DES eine variable Schlussellange Die Schlussellange kann biszu 2048 Bit betragen RC4 verschlusselt immer ein Byte auf einmal

            Er besteht aus einer so genannten S-Box die sich wahrend der Verschlusselung fortlau-fend andert Diese wird durch ein Passwort initialisiert das fur jede Verschlusselung einmaligsein muss Jedes Klartextzeichen wird XOR mit einem bestimmten vom Paszligwort abhangi-gen Zeichen aus der S-BOX verknupft Theoretisch sind somit ca 2 hoch 1700 verschiedeneZustande moglich

            Der Algorithmus ist sehr kompakt und funf- bis zehnmal schneller als der weitverbreite-te DES Deshalb findet der RC4 Algorithmus in einigen Echtzeit-Systemen Anwendung wiebeispielsweise Mobilfunk (Cellular Digital Packet Data) SSH (Secure Shell) WLAN (Wire-less LAN) oder den Dateiverschlusselungs-Programmen SecurePC und Cryptext Die Verar-beitungsgeschwindigkeit des DES ist jedoch selbst in kleinsten Mikrokontrollern meist ausrei-chend Der Schlussel beim DES und anderen Blockchiffren wie dem AES (CBC-Mode) kannim Gegensatz zum RC4 auch mehrfach verwendet werden Vergleichbare Stromchiffren wieSEAL sind vergleichbar schnell und gelten als sicher

            Aus der Wikipedia (unter GNU Free Documentation License)

            ubersetzt aus dem Englischen nach httpenwikipediaorgwikiRC4RC4 (oder ARCFOUR) ist die am weitesten verbreitete Stromchiffre und wird in vielen be-kannten Protokollen beispielsweise SSL oder WEP verwendet Trotzdem entspricht RC4 nichtmehr dem heutigen Sicherheitsstandard und manche Verwendungsweisen von RC4 fuhren zusehr unsicheren Kryptosystemen (zB WEP) Daher wird es nicht fur die Verwendung in neuenSystemen empfohlen Allerdings gibt es auch RC4-basierte Systeme die sicher genug fur denpraktischen Gebrauch sind

            361 Geschichte

            Aus der Wikipedia (unter GNU Free Documentation License)

            ubersetzt aus dem Englischen nach httpenwikipediaorgwikiRC4RC4 wurde 1987 von Ron Rivest von RSA Security erfunden Offiziell bedeutet die Abkurzung

            40

            ldquoRivest Cipher 4rdquo alternativ wird sie aber als ldquoRonrsquos Coderdquo verstanden (s auch die anderenRC-Algorithmen) Zunachst war RC4 ein Betriebsgeheimnis jedoch wurde im September1994 eine Beschreibung anonym auf der ldquoCypherpunksrdquo Mailingiste gepostet Es wurde baldin die scicrypt newsgroup weitergepostet und von dort auf viele Internet-Seiten verbreitetNachdem der Algorithmus nun bekannt ist ist er kein Betriebsgeheimnis mehr Der NameldquoRC4rdquo unterliegt jedoch weiterhin dem Markenschutz Zur Zeit sieht es so aus als seien ldquoinof-fiziellerdquo Implementationen zwar legal konnen aber nicht den Namen ldquoRC4rdquo verwenden Umdieses Problem zu umgehen wird RC4 oft als ldquoARCFOURrdquo bezeichnet RC4 wird inzwischenin einigen weit verbreiteten Verschlusselungsprotokollen und Standards unter anderem WEPund WPA fur WLAN Karten und SSL verwendet

            362 Beschreibung

            Aus der Wikipedia (unter GNU Free Documentation License)

            ubersetzt aus dem Englischen nach httpenwikipediaorgwikiRC4RC4 generiert einen pseudo-zufalligen Bitstrom (einen ldquoSchlusselstromrdquo) der bei der Ver-schlusselung mit dem Klartext mittels XOR verknupft wird Die Entschlusselung funktioniertgenauso Um den Schlusselstrom zu generieren benutzt die Chiffre einen internen Zustand deraus zwei Teilen besteht

            1 eine Permutation aller 256 moglichen Bytes (wird im Folgenden als S bezeichnet)

            2 zwei 8-Bit Index-Zeiger (mit i und j bezeichnet)

            Die Permutation wird mit einem Schlussel von variabler Lange ublicherweise zwischen 40und 256 Bit initialisiert wobei der Schlusselerzeugungs-Algorithmus verwendet wird An-schlieszligend wird der Bit Strom durch den Pseudo-Zufalls-Algorithmus generiert

            363 Der Pseudo-Zufalls-Algorithmus

            Aus der Wikipedia (unter GNU Free Documentation License)

            ubersetzt aus dem Englischen nach httpenwikipediaorgwikiRC4In jeder Iteration wird der Zustand verandert und ein Byte des Schlusselstroms ausgegebenDabei wird i inkrementiert der Wert von S an der Stelle i auf j addiert S [i] und S [ j] vertauschtund der Wert von S an der Stelle S [i]+S [ j] mod 256 ausgegeben Jeder Wert von S wird dabeimindestens einmal alle 256 Iterationen vertauscht In Pseudocode lasst sich der Algorithmusfolgendermaszligen darstellen

            i = 0

            j = 0

            41

            while GeneratingOutput

            i = (i + 1) mod 256

            j = (j + S[i]) mod 256

            swap (S[i] S[j])

            output (S[(S[i] + S[j]) mod 256])

            (Wobei i offentlich ist und j geheim ist)

            i j

            0 1 2 S[i]+S[j] i j 253 254 255

            S

            S[i] S[j]

            S[i]+S[j]K

            (Quelle httpdewikipediaorgwikiBildRC4svg)

            364 Der Schlusselerzeugungs-Algorithmus

            Aus der Wikipedia (unter GNU Free Documentation License)

            ubersetzt aus dem Englischen nach httpenwikipediaorgwikiRC4Der Schlusselerzeugungs-Algorithmus wird benutzt um die Permutation in S zu initialisierenl wird als die Zahl der Bytes des Schlussels definiert und kann zwischen 1 und 255 liegenublicherweise liegt l zwischen 5 und 32 so dass eine Schlussellange von 40 bis 128 Bit zu-stande kommt Zunachst wird S mit der Identitatspermutation initialisiert Anschlieszligend wirdS in 256 Iterationen mit einem Algorithmus der dem Pseudo-Zufalls-Algorithmus ahnelt aberzusatzlich die Schlusselbits hineinmischt weiterverarbeitet Der folgende Pseudocode drucktdies aus

            for i from 0 to 255

            S[i] = i

            j = 0

            for i from 0 to 255

            42

            j = (j + S[i] + key[i mod l]) mod 256

            swap(S[i]S[j])

            365 Implementation

            Aus der Wikipedia (unter GNU Free Documentation License)

            ubersetzt aus dem Englischen nach httpenwikipediaorgwikiRC4Viele Stromchiffren basieren auf ldquolinear feedback shift registersrdquo und sind damit sehr effizientin Hardware aber weniger effizient in Software implementierbar RC4 hat dieses Manko nichtund kommt zudem ausschlieszliglich mit 8-Bit Operationen aus Damit ist RC4 ideal fur Software-Implementationen

            366 Sicherheit

            Aus der Wikipedia (unter GNU Free Documentation License)

            ubersetzt aus dem Englischen nach httpenwikipediaorgwikiRC4RC4 verfehlt die ublichen Standards fur sichere Chiffren an mehreren Stellen und wird somitnicht zur Verwendung in neuen Anwendungen empfohlen Der von RC4 generierte Schlussel-strom tendiert dazu bestimmte Sequenzen von Bytes haufiger zu enthalten als andere undist somit nicht wirklich zufallig Der beste Angriff der auf diesem Sachverhalt beruht wur-de von Fluhrer und McGrew entdeckt und kann aus einem Gigabyte verschlusseltem Textden Schlusselstrom berechnen Zudem verwendet RC4 keine ldquononcerdquo einen fur jeden Klar-text neu generierten Zusatzschlussel Eine solche ldquononcerdquo wird im allgemeinen als zentralesSicherheitskriterium betrachtet da so gewahrleistet ist dass eine zweimal nacheinander ver-schlusselte Nachricht zwei verschiedene verschluesselte Texte erzeugt Naturlich kann einesolche ldquononcerdquo im Nachhinein aufgesetzt werden indem als RC4-Schlussel nicht der eigentli-che Benutzerschlussel sondern beispielsweise ein Hashwert des Schlussels mit einer nonce ver-wendet wird Die einfachere Methode den Schlussel nur mit der nonce zu konkatenieren dievon einigen Anwendungen genutzt wird fuhrt aufgrund des schwachen Schlusselerzeugungs-Algorithmus wieder zu neuen Problemen

            To do anmerkungen zu k=1-Angriffsmoglichkeiten

            43

            367 Fluhrer Mantin und Shamir Angriff

            Aus der Wikipedia (unter GNU Free Documentation License)

            ubersetzt aus dem Englischen nach httpenwikipediaorgwikiRC42001 wurde eine erstaunliche Entdeckung gemacht Die statistische Verteilung der ersten paarBytes des Schlusselstroms ist uber alle RC4-Schlussel stark nicht-zufallig und enthalt Infor-mationen uber den Schlussel selbst Falls die nonce lediglich mit dem Schlussel konkateniertwurde (oder gar keine nonce verwendet wurde) kann der Schlussel durch die Analyse einergroszligen Zahl verschlusselter Nachrichten herausgefunden werden Mit Hilfe dieses Sachver-haltes und einiger damit zusammenhangender Effekte wurde dann die WEP-Verschlusselung(ldquowireless equivalent privacyrdquo) die in 80211 WLAN-Netzen verwendet wird gebrochen Diesfuhrte zu einer Suche nach einem Ersatz fur WEP und letztlich zu den Bemuhungen um 80211isowie zu WPA

            Der geschilderte Angriff kann naturlich umgangen werden wenn die ersten (ca 256) Bytes desSchlusselstroms verworfen werden

            bull In OpenSSL konnen RC4 Verschlusselungen mit folgenden Befehlen aufgerufen werden

            ndash -rc4ndash -rc4-40

            37 RC5 Ronrsquos Cipher 5

            Die zentrale Neuerung des RC5-Algorithmus sind datenabhangige Rotationen bei denen einZwischenergebnis um eine Zahl von Bytes rotiert wird die weder fest vorgegeben noch vomSchlussel bestimmt sondern aus einem Teil des Klartextes berechnet ist Diese Operation wirdfolgendermaszligen notiert a ltltlt b bedeutet dass a um b Bits nach links rotiert wird Ein weitererinteressanter Aspekt ist die universelle Parametrisierbarkeit des Algorithmus Sowohl die Langeder Worter w als auch die Zahl der Runden r und die Lange des Schlussels b sind wahlbar sodass der Algorithmus offen ist fur zukunftige Bedurfnisse die weitere Operation + wird nun alsAddition modulo 2w definiert In openssl ist RC5 mit den Parameters w = 32 r = 12 b = 16 im-plementiert Samtliche Algorithmen gehen im folgenden von einer little-endian Byte-Anordnungaus Der Algorithmus besteht aus einem Verschlusselungs- und einem Schlusselexpansions-Teil

            371 Verschlusselung

            Gegeben ein auf t = 2(r + 1) Worter expandierter Schlussel S und ein aus zwei Wortern A undB bestehender Eingabeblock gibt folgender Pseudocode den Verschlusselungs-Algorithmus an

            44

            A = A + S[0]

            b = B + S[1]

            for i = 1 to r do

            A = ((A XOR B) ltltlt B) + S[2i]

            B = ((B XOR A) ltltlt A) + S[2i + 1]

            Die Entschlusselung lauft dementsprechend folgendermaszligen ab

            for i = r downto 1 do

            B = ((B - S[2i + 1]) gtgtgt A) XOR A

            A = ((A - S[2i]) gtgtgt B) XOR B

            A = A - S[0]

            B = B - S[1]

            372 Schlusselexpansion

            Zunachst wird S mit einer Kombination aus e und ϕ (dem goldenen Schnitt) initialisiert und derSchlussel in ein Array L kopiert das wortweise indiziert wird Anschlieszligend wird mit folgendemAlgorithmus der Schlussel in S hinein gemischt

            i = j = 0

            A = B = 0

            do 3 max(t 8bw) times

            A = S[i] = (S[i] + A + B) ltltlt 3

            B = L[j] = (L[j] + A + B) ltltlt (A + B)

            i = (i+1) mod t

            j = (j+1) mod (8bw)

            38 GOST 28147-89 Gosudarstvennyi Standard Soyuza SSR nicht inOpenSSL

            GOST ist das russische Normungsinstitut vergleichbar mit DIN oder ANSI

            (siehe auch httpenwikipediaorgwikiGOST_(block_cipher))

            Gost-Chiffre ist eine relativ simple Feistel-Chiffre auf 64 Bit mit 32 Runden 256 Bit Schlussellangeund 8 S-Boxen von zusammen 512 Bit die - da sie geheim gehalten werden konnen - alsSchlusselerweiterung gelten konnen Die Rundenfunktion besteht aus der Addition eines 32-Bit-Substrings des Schlussels der Anwendung der S-Boxen (parallel da jede S-Box 4 Bit alsEin- und Ausgabe hat) und einer 11-Bit-Rotation Die Sicherheit des Algorithmus beruht auf

            45

            der Verwendung sehr langer Schlussel geheimer S-Boxen und der gegenuber DES verdoppeltenRundenzahl In jeder einzelnen Runde wird jedoch ein geringerer Durchmischungseffekt erreichtals bei DES-Runden

            Geheimer Algorithmus S-Boxen auch geheim

            (Quelle httpenwikipediaorgwikiImageGOSTDiagrampng)

            46

            Feistel Chiffre

            Addition Substitution Rotation

            Die S-Boxen sind Gruppenschlussel die extra zugewiesen werden16 4 Bit Werte werden Permutiert 32 RundenSchlusselmaterial 32 die 256 Bit werden jeweils in 8 32 Bit Unterschlussel eingeteilt wobei dieSchlussel wie folgt verwendet werden1234567123456712345677654321

            (Dann einmal S-Box einmal rotieren und dann Feistelschritt)

            Die Sicherheit steckt in den 32 Runden Der Algorithmus wurde bisher nicht geknackt

            39 FazitWie konnte bei einen Symmetrischen Algorithmus die Sicherheiterhohen

            (Das ware zB fur eine Interessante Frage fur eine Klausur)

            bull komplexes Schlusselmanagment

            bull viele Runden

            bull komplexe vermischung pro Runde (AES)

            4 Asymmetrische Verschlusselungsverfahren

            41 Einfuhrung

            AliceBob Chris Dave Eve

            Alice BobkA kA

            Enck1(M) = C minusrarr M = Deck2

            Verschlusselungsverfahren kA kB EncDecAus kA kann kB nicht bestimmt werden dann kann kA sogar offentlich sein Ziel ist es dass je-

            47

            der verschlusseln kann aber nur einer kann (in realistischer Zeit) entschlusseln Solche Verfah-ren mit offentlichen Schlussel werden auch asymmetrisch genannt Mit groszligen Aufwand kannnaturlich der Schlussel immer noch bestimmt werden Man wahlt einen Text mprime Verschlusseltihn (Enck(mprime) = cprime) und probiert dann solange alle k durch bis man Deck(cprime) = mprime erhalt

            Das kB kann aber immer bestimmt werden

            for k_B =00000 to FFFF

            M_0 C_0 sind gegeben

            Dec_k_B(C_0) = M_0

            Wichtig ist nur das dies nicht in rsquovernunftigerrsquo Zeit gemacht werden kann

            To do text sortieren

            Klartext minusrarr E(K) ChiffretextKlartext D(Kprime)larrminus ChiffretextE(K p) = c und zu jedem KexistKprime mit D(Kprime c) = p und K wird offentlich gemachtDie Berechnung von Kprime aus K ist schwer Bruteforce ist nicht ausgeschlossen die Bestimmungvon K aus Kprime ist leicht

            leichtEnckA DeckB (kA kB)minusErzeugung

            schweraus kA allein kB erzeugen

            411 Beispiel

            Bob mochte von Alice verschlusselte Nachrichten lesen Bob uberlegt sich ein asymmetrischesVerfahren wahlt Kprime berechnet K und veroffentlicht KAlice nimmt K berechnet E(K p) = c und sendet c an BobBob berechnet aus c mit Kprime das ursprungliche p

            42 Geschichte

            Whitfield Diffie New Directions in Cryptographie Idee wurde auch schon mal von Ralf Merkelveroffentlich Britische Geheimdienst hatt vorher die Idee auch schon mal

            48

            Aus der Wikipedia (unter GNU Free Documentation License)

            Asymmetrische Verfahren sind ein relativ neues Gebiet der Kryptografie Eine wichtige Vorar-beit fur die asymmetrischen Verfahren sind die Arbeiten von Whitfield Diffie Martin Hellmanund Ralph Merkle zum geheimen Schlusselaustausch Anfang der 1970er Jahre Im Sommer1975 veroffentlichten Diffie und Hellman eine Idee zur asymmetrischen Verschlusselung oh-ne jedoch ein genaues Verfahren zu kennen

            Anfang der 1970er Jahre wurden von Ellis Cocks und Williamson ein dem spateren Ver-fahren von Diffie-Hellman ahnliches asymmetrisches Verfahren entwickelt welches aber inseiner wirtschaftlichen Bedeutung nicht erkannt und aus Geheimhaltungsgrunden nicht (wis-senschaftlich) publiziert und auch nicht zum Patent angemeldet wurde Alle drei waren Mitar-beiter des englischen Government Communications Headquarters

            Der Durchbruch gelang Ronald L Rivest Adi Shamir und Leonard M Adleman die 1977das RSA-Verfahren entwickelten Es gilt bis heute als sicheres Verfahren und hat auszligerdem dengroszligen Vorteil in beiden Richtungen eingesetzt werden zu konnen

            43 Einige Theoretische Grundlagen

            431 Kleiner Fermat (oder kleiner Fermatrsquoscher Satz)

            Fur beliebige Primzahlen p gilt

            n(pminus1) = 1 mod p fur alle n isin Z

            To do Wikipedia verlinken

            432 Euklidischer Algorithmus

            To do erganzen Erweiterter Euklidischer Algorithmus fehlerhaft

            Aus der Wikipedia (unter GNU Free Documentation License)

            Beschreibung durch PseudocodeIm Folgenden wird der moderne Euklidische Algorithmus sowohl in einer rekursiven als

            auch einer iterativen Variante beschrieben Dabei sind a und b jeweils die beiden Zahlen derengroszligter gemeinsamer Teiler berechnet werden soll

            Rekursive Variante

            49

            EUCLID(ab)

            1 wenn b = 0

            2 dann return a

            3 sonst return EUCLID(b a mod b)

            Iterative Variante

            EUCLID(ab)

            1 solange b = 0

            2 r = a mod b

            3 a = b

            4 b = r

            5 return a

            FunktionsweiseIn jedem Schritt des Algorithmus wird eine Division mit Rest ausgefuhrt riminus1 = qi+1 middot

            ri + ri+1 0 le ri+1 lt ri Die Division mit Rest hat die Eigenschaft dass ggT(riminus1 ri) =

            ggT(ri ri+1) giltIm letzten Schritt des Algorithmus rnminus1 = qn+1 middot rn + 0 ist rn+1 = 0 und es gilt deshalb

            ggT(rnminus1 rn) = ggT(rn 0) = rn

            Da im ersten Schritt riminus1 = a und ri = b war ist ggT(a b) = rn

            (Quelle httpdewikipediaorgwikiEuklidischer_Algorithmus)

            (Denn es gilt ggT(a b) = ggT(b r))

            Aus der Wikipedia (unter GNU Free Documentation License)

            Man kann diese Rekursion in folgende Abfolge von Schritten fur den erweiterten euklidi-

            schen Algorithmus fassen Erhalte rdquoardquo und rdquobrdquo als EingabeSetze rdquok=0rdquo r0 = a r1 = b s0 = 1 und s1 = 0WiederholeErhohe rdquokrdquo um einsBestimme den ganzzahligen Quotienten qk = rkminus1 div rkSetze rk+1 = rkminus1 minus qk middot rk und sk+1 = skminus1 minus qk middot skbis rk+1 = 0 giltGib den Rest rk = ggT(a b) und die Zahl sk mit ggT(a b) equiv sk middot a (mod b) zuruckJeder Schritt enthalt implizit auch einen Multiplikator tk = (rk minus sk middot a) div b wobei diese

            Division keinen Rest lasst Die Folge (tk)k kann auch explizit bestimmt werden es gelten t0 =

            0 t1 = 1 und tkminus1 equiv qk middottk+tk+1 Nach dem letzten Schritt ergibt sich nun ggT(a b) = sk middota+tk middotbDer Ubersicht halber werden beim handischen Rechnen auch noch die Hilfsfolgen (ak =

            rkminus1)k und (bk = rk)k sowie (uk = skminus1)k sowie (vk = tkminus1)k mitgefuhrt

            50

            Zur Berechnung des Inversen modulo einer Restklasse benotigt man die tk aber nicht und kannsie ignorieren

            Aus der Wikipedia (unter GNU Free Documentation License)

            Rekursive VarianteFur den erweiterten euklidischen Algorithmus existiert auch eine rekursive Variante die

            durch den folgenden Pseudocode gegeben istab zwei Zahlen fur die der erweiterte euklidische Algorithmus durchgefuhrt wirdrdquoextended euclidrdquo(ab)1 rdquorsquowennrdquorsquo b = 02 rdquorsquodann returnrdquorsquo (a10)3 (drsquosrsquotrsquo)larr rdquoextended euclidrdquo(b a mod b)4 (dst)larr (drsquotrsquosrsquo - floor(ab)trsquo)5 rdquorsquoreturnrdquorsquo (dst)

            (Quelle httpdewikipediaorgwikiErweiterter_euklidischer_Algorithmus)

            Wenn n mod m teilerfremd sind dann existiert so ein Exponent f so dass

            n f equiv 1 mod m

            ist

            Wenn m = m1 middotm2 ein Produkt von zwei verschiedenen Primzahlen ist dann ist fur alle n die zum teilerfremd sind

            n(m1minus1)middot(m2minus1) equiv 1 mod m

            Denn es ist nm1minus1 equiv 1 mod m1 und nm2minus1 equiv 1 mod m2 Dann ist n(m1minus1)middot(m2minus1) minus 1 durch m1und m2 teilbar Denn nach dem Chinesischen Restsatz gilt n(m1minus1)middot(m2minus1) equiv 1 mod m1 middot m2 undwenn eine Zahl durch m1 middot m2 teilbar ist so auch durch m1 und m2

            433 Beispiel

            In Magma

            p=17 q=23

            m=(p-1)(q-1)

            e=19

            F=IntegerRing(m)

            51

            d=(Fe)ˆ(-1)

            d=IntegerRing()d

            19315 div 16

            19315 -374 16

            n=pq

            K=IntegerRing(n)

            N=100

            C=(KN)ˆ(e) Verschlusseln

            C

            Cˆd

            10019 equiv 349 mod 349

            349352 equiv 100 mod 391

            10019middot315 = 100 mod 17

            10019middot315 = 100 mod 23

            10019middot315 equiv 100374middot16+1 mod 17 equiv 100 middot (10016)374︸ ︷︷ ︸=1

            mod 17

            To do Analog von Mathias kopieren

            To do Wiederholung einsortieren

            Wiederholung

            Nachricht n

            ne equiv c( mod m)

            Chiffre c

            cd equiv (ne)d = ndmiddote = n1+k(pminus1)(qminus1) = n middot (n(pminus1)(qminus1))k︸ ︷︷ ︸=1

            equiv n middot 1k = n mod m

            nminusrarr

            dm cminusrarr

            em n

            52

            aus (em) kann man (dm) nicht leicht bestimmen weil man die Zerlegung m = p middotq nicht kenntWer p q kennt kann aus den einen den anderen Schlussel berechnen Wer de kennt kann pqbestimmen

            Verschlusselung kann jeder ausfuhren offentlicher Schlussel (em) Entschlusselung bleibt demvorbehalten der das geheime d (oder auch pq) kennt

            schnelles Potenzieren Ist die Berechung von ne ck ausreichend schnell

            m 1000 Bit pq-150 Dezimalstellen

            ne hat sehr sehr viele Dezimalstellen

            Deshalb berechnet man erst modulo und potenziert dann mit e

            (n mod m)e (c mod m)d

            Beispiele n19 = n middot n middot middot n︸ ︷︷ ︸19 Multiplika-tionen

            oder man rechnet

            n n2 n4 n8 n16 4 Quadrierungen

            n16 middot n2 middot n = n19

            so auch bei n1025 = n n2 n1024 n middot n1024 wo nur 11 Multiplikationen gebraucht werden

            Pseudocode nex=1

            repeat

            if (e = 1 mod 2)x = x middot n(prime mod mprime)

            n = n2(prime mod mprime)

            e = ediv2

            until e==1

            k = (nprime)0 middot xprime

            x = k = ne

            53

            44 RSA Rivest Shamir Adleman

            Bei dem Versuch die Idee der Asymmetrischen Kryptografie zu wiederlegen wurde RSA entwi-ckelt

            RSA beruht auf der Schwierigkeit n = p middotq in seine Primfaktoren zu zerlegen Verschlusseln undEntschlusseln ist Potenzieren modulo n

            D E = id

            p = (pe)d mod n

            p = pemiddotd mod n

            e middot d = 1 mod (p minus 1) middot (q minus 1)

            E(e n) ist offentlich und D(d n) geheim Die Bestimmung von e d n aus p q ist leicht GenauerDie Bestimmung von e aus (d n) ist leicht die Bestimmung von d aus (e n) ist schwer weilFaktorisierung n = p middotq (vermutlich) schwierig ist ist Bestimmung von d aus (e n) auch schwerWer p und q aus n berechnen kann kann auch d bestimmen (Euklid)

            Wer e und d kennt kann p und q bestimmen (dazu waren Erlauterungen in der Vorlesung)

            441 Funktionsweise des RSA-Verfahrens

            (nach wwwcryptooldedownloadsCrypToolScript 1 3 04 depdf)Man kann die Einzelschritte zur Durchfuhrung des RSA-Verfahren folgendermaszligen beschrei-ben Schritt 1 bis 3 sind die Schlusselerzeugung Schritt 4 ist die Verschlusselung 5 die Ent-schlusselung

            1 Wahle zufallig 2 verschiedene Primzahlen p und q und berechne n = p middot q Der Wert nwird als RSA-Modul bezeichnet

            2 Wahle zufallig e isin 2 n minus 1 so dass gilt e ist teilerfremd zu J(n) = (p minus 1) middot (q minus 1)Zum Beispiel kann man e so wahlen dass gilt max(p q) lt e lt J(n) minus 1 Danach kannman p und q ldquowegwerfenrdquo

            3 Wahle d isin 1 n minus 1 mit e middot d = 1 mod J(n) dh d ist die multiplikative Inverse zu emodulo J(n) Danach kann man J(n) ldquowegwerfenrdquo

            bull (n e) ist der offentliche Schlussel Pbull (n d) ist der geheime Schlussel S (es ist nur d geheim zu halten)

            4 Verschlusselung des Klartextes (bzw seiner Blocke) M isin 1 n minus 1

            C = E((n e) M) = Me mod n

            54

            5 Entschlusselung des Chiffretextes (bzw seiner Blocke) C isin 1 n minus 1

            M = D((n d) C) = Cd mod n

            442 Beweis der Funktionsweise

            (nach wwwcryptooldedownloadsCrypToolScript 1 3 04 depdf)Fur Schlusselpaare (n e) und (n d) die die in den Schritten 1 bis 3 des RSA-Verfahrens festge-legten Eigenschaften besitzen muss fur alle M lt n gelten M equiv (Me)d mod n wobei (Me)d =

            Memiddotd Das heiszligt der oben angegebene Dechiffrieralgorithmus arbeitet korrekt Wir zeigen das in3 Schritten

            1 Im ersten Schritt zeigen wir Memiddotd equiv M mod p Dies ergibt sich aus den Voraussetzungenund dem Satz von Fermat Da n = p middot q und J(p middot q) = (p minus 1) middot (q minus 1) und da e undd so gewahlt sind dass e middot d equiv 1 mod J(n) gibt es eine ganze Zahl k so dass gilte middot d = 1 + k middot (p minus 1) middot (q minus 1)

            Memiddotd equiv M1+kmiddotJ(n) equiv M middot MkmiddotJ(n) equiv M middot Mkmiddot(pminus1)middot(qminus1) mod p

            equiv M middot (Mpminus1)kmiddot(qminus1) mod p

            (aufgrund des kleinen Fermat Mpminus1 equiv 1 mod p)

            equiv M middot (1)kmiddot(qminus1) mod p

            equiv M mod p

            Die Voraussetzung fur die Anwendung des kleinen Fermat war dass M und p teilerfremdsind Da das im allgemeinen nicht gilt mussen wir noch betrachten was ist wenn M undp nicht teilerfremd sind da p eine Primzahl ist muss dann notwendigerweise p ein Teilervon M sein Das heiszligt aber

            M equiv 0 mod p

            Wenn p die Zahl M teilt so teilt p erst recht Memiddotd Also ist auch

            Memiddotd equiv 0 mod p

            Da p sowohl M als auch Memiddotd teilt teilt es auch ihre Differenz (Memiddotd minus M) equiv 0 mod pUnd damit gilt auch in diesem Spezialfall unsere zu beweisende Behauptung

            2 Vollig analog beweist man Memiddotd equiv M mod q

            3 Nun fuhren wir die Behauptungen der ersten beiden Schritte zusammen fur n = p middot qum zu zeigen Memiddotd equiv M mod n fur alle M lt n Nach den ersten beiden Schritten gilt(Memiddotd minus M) equiv 0 mod p und (Memiddotd minus M) equiv 0 mod q also teilen p und q jeweils dieselbeZahl z = (Memiddotd minus M) Da p und q verschiedenen Primzahlen sind muss dann auch ihrProdukt diese Zahl z teilen Also gilt

            (Memiddotd minus M) equiv 0 mod p middot q

            55

            oderMemiddotd equiv M mod p middot q

            oderMemiddotd equiv M mod n

            45 Schwachen von RSA

            bull Wenn N Nachrichten aus einer kleinen Menge gewahlt werden ist RSA unsicher

            for Nprime do (Nprime)e = C1 if C1 = C then N = Nprime

            bull Wenn N und e zu klein sind ist RSA unsicher dass heiszligt wenn Ne als Zahl kleiner als nist so das nich modulo gekurzt wird so kann man einfach eradicc

            bull Angriff mit frei gewahlten Chiffretext angenommen man hat Zugriff auf die Verschlusse-lungsmaschine so dass man mit selber vorgebenen Cprime Nprime berechnen kann (Cprime minusrarr Nprime)

            Re = S mod n S d = R mod n Cprime = S middotC

            (Cprime)d = S d middotCd = R middot N︸︷︷︸Nrsquo

            mod n

            Nprime middot Rminus1 = N mod n

            N1 minusrarr C1

            N2 minusrarr C2

            rArr N1 middot N2 minusrarr C1 middotC2

            bull Jeder Benutzer braucht ein eigenes n dass heiszligt man muss fur jeden Benutzer die entspre-chenden Primzahlen suchen allerdings ist dies aufwendig

            bull RSA ist extrem langsam im Vergleich zu symmetrischen Verfahren openssl speed rsabzw speed aes-256

            46 Fuktionen in OpenSSL

            461 genrsa

            genrsa erzeugt Schlusselpaare fur RSASchlussellange num_bits frei wahlbar wobei es einen Bug bei kleinen Werten gibt (weniger als60 Bit) so kurze Schlussel aber auch nicht verwendet werden solltenOptionen

            usage genrsa [args] [numbits]

            -out file output the key to file

            -passout arg output file pass phrase source

            56

            -f4 use F4 (0x10001) for the E value

            -3 use 3 for the E value

            -des encrypt the generated key with DES in cbc mode

            -des3 encrypt the generated key with DES in ede cbc mode (168 bit key)

            -idea encrypt the generated key with IDEA in cbc mode

            -aes128 -aes192 -aes256 encrypt PEM output with cbc aes

            -engine e use engine e possibly a hardware device

            -rand filefile load the file (or the files in the

            directory) into the random number generator

            462 rsa

            rsa gibt den public-key zu gegebenen private-key aus Auszligerdem auch weitere Informationenwie verwendeter Modulus Mit rsa kann auch ein gegebener key neu verschlusselt abgespeichertwerden

            rsa [options] ltinfile gtoutfile

            where options are

            -in arg input file

            -out arg output file

            -pubin expect a public key in input file

            -pubout output a public key

            -passin arg input file pass phrase source

            -passout arg output file pass phrase source

            -text print the key in text

            -noout donrsquot print key out

            -modulus print the RSA key modulus

            -check verify key consistency

            -des encrypt PEM output with cbc des

            -des3 encrypt PEM output with ede cbc des using 168 bit key

            -idea encrypt PEM output with cbc idea

            -aes128 -aes192 -aes256 encrypt PEM output with cbc aes

            -inform arg input format - one of DER NET PEM

            -outform arg output format - one of DER NET PEM

            57

            -sgckey Use IIS SGC key format

            -engine e use engine e possibly a hardware device

            463 rsautl

            Mit rsautl konnen Dateien ver- oder entschlusselt und signiert oder verifiziert werden

            Usage rsautl [options]

            where options are

            -in file input file

            -out file output file

            -inkey file input key

            -pubin input is an RSA public

            -certin input is a certificate carrying an RSA public key

            -sign sign with private key

            -verify verify with public key

            -encrypt encrypt with public key

            -decrypt decrypt with private key

            -hexdump hex dump output

            -pkcs use PKCS1 v15 padding (default)

            -oaep use PKCS1 OAEP

            -ssl use SSL v2 padding

            -raw use no padding

            -keyform arg private key format - default PEM

            -passin arg pass phrase source

            -engine e use engine e possibly a hardware device

            464 PKCS

            spater noch ausfuhrlicher hier nur kurz die Verwendung bei RSA

            Padding beginnt mit 0002 endet mit 00 und dann kommt der Chiffretext

            58

            465 OAEP - Optimal Asymmetric Encryption Padding

            Normalerweise wird mit RSA nur ein Schlussel fur eine symmetrische Verschlusselung ver-schlusselt da RSA verglichen mit symmetrischen Algorithmen sehr langsam ist

            Bemerkung Vergleichen mit speed rsa und speed aes (siehe History 21012009)

            Ist die so festgelegte Lange des Klartextes erheblich kleiner als die des RSA-Schlussels so ist einAuffullen der restlichen Bits notig Die implizite Methode (beim Betrachten des Klartextes alsZahl) einfach 0en einzusetzen empfiehlt sich nicht da die Zusatzinformation die ein Angreiferso uber den Klartext bekommt das Decodieren des geheimen Schlussels vereinfacht

            Beim Padding soll diese Gefahr verringert werden Per default wird bei openssl PKCS benutztAllerdings ist die Verwendung von OAEP besser Beim OAEP ist im Gegensatz zum PKCSdie Lange des Klartextes nicht mehr sichtbar (man kann nur noch dass beginnende 00 Byteerkennen) Choosen Plaintext Attacke ist nicht mehr moglich

            Dabei wird essenziell die zu verschlusselnde Nachricht mit einem Hashwert eines Zufalls-Stringsper xor verknupft und so randomisiert Eine Modifikation des benutzten Hashwerts wird dannmit der Nachricht konkateniert und steht beim Entschlusseln wieder zur Verfugung

            1 Label hash Label =

            2 PS erzeugen (alles Nullen 128-1-h-h-1-mdashmmdash)

            3 DB =

            4 Seed wahlen Lange h (irgendwas seed = Hash(irgendwas))

            5 DBmaske = MGF(seed mdashDBmdash)

            6 mDB = DB oplus GBmask

            7 seedmaske = MGF(mDB mdashseedmdash)

            8 mseed = seed oplus seedmaske

            9 EM =

            10 RSA-Verschlusselung C equiv EMe mod n

            MGF Hash Eingabe x Lange l

            tc = Hash(x c)

            mdashcmdash = 4 Byte

            MGF(x l) = t0 t1 t2 t3 |MGF( l)| = l

            59

            Ruckgangig

            1 Entschlusseln

            2 Zerlegen 00 mseed mDB

            3 seedmaske = MGF(mDB mdashmseedmdash)

            4 seed = mseed oplus seedmaske

            5 DBmaske = MGF(seed mdashmDBmdash)

            6 DB = mDB oplus DBmaske

            7 Padding abtrennen

            PKCS1 v15

            Die fur den Modul verwendeten Primzahlen mussen die ersten beiden Bits gesetzt haben dasgarantiert nach Multiplikation der Primzahlen dass das Produkt im oberen Byte das obere Bitgesetzt hat und somit die feste voranstehende 0 uberdeckt

            466 Wie erkennt man an Ciphertexten den Verschlusselungsalgorithmus- DER ASN1

            Standards damit man (zB RSA) verschlusselte Texte erkennt

            DER- distingushed Encoding Rules

            ASN1- Abstract Syntax Notation

            openssl asn1parse -genstr INTEGER4711 -out intasn1 openssl asn1parse -in intasn1 -inform DER

            Integer werden in ASN1 als rsquo 02︸︷︷︸Tag

            lange Datenrsquo kodiert Integers brauchen 1 Byte mehr rsquoDatenrsquo

            damit Das Vorzeichen 00 enthalten ist Integer ist immer mit Vorzeichen

            Tag fur andere Typen

            Bool 01

            Int 02

            Octet String 04

            Bitstring 03 rsquolangersquo rsquoungenutzte bits am Endersquo rsquoByte des Bitstringrsquo [evt ungenutzte Bits]

            Text PRINTABLESTRING

            60

            utf8 UTF8String

            Text mit Zeichen (emailadresse) IA5STRING

            DatumZeit UTC

            mit Jahrhundert GENTIME

            nuscht (der leere Typ) NULL

            Mengentypen seq set

            Mann kann auch eigene Typen generierend EXPLICITAF oder so

            467 Umgehen mit den Schlusselkomponenten

            Ein vollstandiger RSA-Schlussel besteht aus einem Modul (modulus) n = p middot q offentlichemExponent e privatem Exponent d Primzahl 1 p Primzahl 2 q (haufig p gt q) Exponent 1 dpExponent 2 dq Koeffizient qi und kann so ausgegeben und gespeichert werden

            Bei der Version fur rsquoarmersquo werden nur n offentlicher Exponent e und geheimer Exponent dangegeben

            c equiv me mod n (3)

            m equiv cd mod n (4)

            Vorteil der vollstandigen Version Geschwindigkeitserhohung bei der Entschlusselung in Schritt(4)

            dp equiv d mod (p minus 1) d = k middot (p minus 1) + dp

            dq equiv d mod (q minus 1)qi middot q equiv 1 mod q

            m equiv cd mod (p middot q) berechnenm1 equiv cdp mod p 500 Operationen mit 1

            2 langem Modulm2 equiv cdq mod q 500 Operationen mit 1

            2 langem ModulInsgesamt 1000 Operationen mit 1

            4 der Lange

            apminus1 equiv 1 mod p wenn (a p) = 1teilerfremd1

            1kleiner Fermatscher Satz

            61

            m1 equiv cd mod pm2 equiv cd mod q

            h equiv (m1minusm2)middotqi mod p (darauf achten dass das minusm2 mod p ausgerechnet wird nicht mod q)

            m = m2 + h middot q

            1 m lt n2 m equiv cd mod p da m2 + h middot q equiv m2 + (m1 minus m2) middot qi middot q mod p equiv m2 + m1 minus m2 equiv m1 alsoequiv cd mod pm equiv cd mod q da m2 + h middot q equiv m2 mod q also equiv cd mod q

            x equiv y mod p und x equiv y mod q dann folgt x equiv y mod p middot qEuklidischer Algorithmus (p q)-teilerfremd dann p middot u + q middot v = 1 Chinesischer Restsatz

            47 Miller-Rabin Test

            Heute openssl dhparam und was Verbluffendes so dass man es nur mit der Phantasie einesInformatikers oder Mathematikers verstehen kann (Literatur Menezes Oorschot Handbook ofApplied Cryptography)

            Primzahlen Feststellen ob eine Zahl eine Primzahl ist durch Testen von Divisionen wird beigroszligen Zahlen sehr lang

            p middot q = n ausrechnen geht schnell Umkehrung n =middot ist moglicherweise schwer

            Uber 2214+ 1 weiss man dass es keine Primzahl ist2 kennt aber keinen der Faktoren Kriterium

            rdquokeine Primzahlldquo lasst sich auf folgende Art manchmal feststellenWenn (a n) = 1 so ist anminus1 equiv 1 mod nFermatTest Wenn fur (a n) = 1 anminus1 1 mod n so kann n keine Primzahl sein

            Primzahlen Test

            Wenn fur eine Zahl a mit (a n) = 1 der Fermat-Test nicht bestanden wird nennt man a einenZeugen fur Nichtprimalitat

            2Vierzehnte Fermatsche Zahl

            62

            Zeugen gibt es sehr viele nicht realistisch alle zu rdquobefragenldquo Ausserdem gibt es Zahlen diekeine Zeugen haben aber keine Primzahl sind

            Aus diophantischen Gleichungen folgt Es gibt ein Polynom mit ganzzahligen Koeffizienten f (n)mit der Eigenschaft Wenn f (n) gt 0hArr n ist PrimzahlAber das Polynom hat 26 Koeffizienten Fur Mathematiker ist das Problem erledigt da das Poly-nom existiert fur Informatiker ist es das nicht wirklich da die Berechnung ubermaszligig komplexist

            Die Nicht-Primzahlen ohne Zeugen heissen Carmichael-Zahlen Haben die Eigenschaft forallp(p|nrArrp minus 1|n minus 1)rArr CarmichaelZum Beispiel 561 hat Teiler 3 11 17 Der Test liefert 2|560 10|560 16|560

            Erweitern (n Primzahl) Wenn (a n) = 1 und anminus1 equiv 1 mod n und 2|n minus 1 (anminus1 equiv 1 mod na

            nminus12 equiv )

            Wenn x2 equiv 1 mod n was ist x mod n n|x2 minus 1 = (x minus 1)(x + 1) entweder n|x + 1 odern|x minus 1

            FermatTest+ Wenn fur (a n) = 1 anminus1 1 mod n oder falls anminus1 equiv 1 mod n und anminus1

            2 +1und a

            nminus12 minus1 so kann n keine Primzahl sein

            und 4|n minus 1 anminus1

            4 anminus1

            2 anminus1

            1 mod n Diese Folge ist entweder 1 1 1 oder minus1 1 1 oderlowastminus1 1

            Wenn (a n) = 1 und 2k|nminus 1 (k maximal) dann ist die Folge anminus12k a

            nminus12kminus1 a

            nminus12 anminus1 entweder

            1 1 oder lowastminus1 1 1 (lowast steht fur beliebige Folge)

            Probieren n = 81 n minus 1 = 80 durch 2er-Potenzen teilen kommt irgendwas mit 5 hinten rausAls Zeugen nehmen wir mal 2 Ausrechnen 25 210 220 240 280 und schauen ob diese Folgemodulo 81 einen der beiden Typen hat 32 1 mod 81

            FermatTestlowast (= Miller-Rabin-Test) Wenn fur (a n) = 1 2k|n minus 1 teilt und die Folge anminus12k a

            nminus12kminus1

            anminus1

            2 anminus1 modulo n nicht 1 1 und nicht lowastminus1 1 1 dann ist a ein Zeuge fur Nicht-primalitat

            Fur Miller-Rabin-Test gibt es keine zeugenlosen zusammengesetzten Zahlen es gibt unter denzu n teilerfremenden Zahlen mindestens 25 Zeugen3 (MenezesOorschot Kapitel 4 Fact 425Fact 448 Tabelle 43)

            Die fur Informatiker interessante Frage ist die Frage Wenn man eine Wahrscheinlichkeit kleiner2minus80 fur eine fehlerhaft durch Miller-Rabin nicht erkannte zusammengesetzte Zahl haben will

            3Anmerkung spater 34 sind Zeugen 1

            4 sind Lugner

            63

            muss man fur n (512 Bit) 6 Tests machen Je groszliger die Zahlen werden desto weniger Testsmuss man machen Fur 1024 3 Tests fur 2048 2 Tests Vorausgesetzt ist immer noch ein Testauf kleine Faktoren Dabei pruft man ob (n pi) = 1 fur pi lt B wobei pi kleine Primzahlen sindDas B wahlt man so dass dieser Test nicht langer dauert als ein Miller-Rabin-Test

            Wie wahlt man Primzahlkandidaten Generiere Zahl mit Zufallszahlengenerator schaue ob diedurch 2 oder so teilbar ist wahle dann die nachste Zahl

            openssl dhparam -dsaparams -text -noout 2048 schnellopenssl dhparam -text -noout 2048 langsam

            Safe Prime pminus12 hat einen groszligen Primzahlfaktor q dann getestet ob 2(k middot (q + 1)) Primzahl ist

            pminus12 ist Primzahl

            Wofur braucht man die Primzahlen Naturlich fur RSA und jetzt neu

            48 Diffie-Hellman-Schlusselaustausch

            Alice und Bob haben gemeinsame offentliche Informationen tauschen offentliche Informationenaus und verfugen danach beide uber einen gemeinsamen privaten Schlussel

            g = 2 (offentlich bekannt (Generator)) Primzahl p (offentlich bekannt)

            Erganzungen g g2 g3 gpminus1 mod p (g Generator dann alle verschieden)

            Bob Alice

            Eve

            x y

            g^y mod p

            g^x mod p

            64

            Bob wahlt zufallig 1 lt x lt pminus 1 und ruft Alice gx mod p zu Alice wahlt zufalig 1 lt y lt pminus 1und ruft gy mod p zu

            Bob berechnet (gy)x mod p und Alice berechnet (gx)y mod p Beide erhalten gxmiddoty mod p An-greifer Eve kennt nur gx mod p gy mod p fehlt gxmiddoty mod p

            Wenn Eve das diskrete Logarithmusproblem losen konnte also zu gx mod p und g mod pdas x ausrechnen konnte dann ware gxmiddoty mod p leicht zu berechnen Die besten Algorithmenfur das diskrete Logarithmusproblem mod p sind subexponentiell im groszligten Primfaktor vonp minus 1

            Falls (p minus 1) viele kleine Primfaktoren pi hat ist das diskrete logarithmus Problem leicht denndann lost man das Problem nicht a mod (pminus1) sonder jeweils a mod pi und setzt0 dass ganzedann mit dem Chinesischen Restsatz zusammen

            Sucht p so dass pminus12 auch eine Primzahl ist dazu wird zuerst eine Primzahl pprime gesucht und dann

            geguckt ob 2pprime + 1 auch Prim ist

            Openssl

            Variante DH (DSAparam) (-dsaparam)

            p-Primzahl 1536

            g-rsquoGeneratorrsquo nicht von (p minus 1) sondern von der Restklasse h

            160 Bit g g2 g3 gh alle verschieden mit h=160 Bit

            Dann sollen xy so gewahlt werden dass 1 lt x y lt h = 160 Bit

            Ein weiteres asymmetrisches Cryptosystem kann man darauf aufbauen Alle kennen g und pjeder generiert sich x (privater Schlussel) und gx mod p wird veroffentlichtAlice will Bob etwas verschlusselt schickenSie generiert ein k berechnet aus k und Bobs veroffentlichtem gx a = (gx)k mod p und ausdem allgemein bekanntem g gk mod pM sei die Nachricht ( mod p) die Alice verschicken will Sie berechnet a middot M mod p undsendet an Bob das Paar (gk mod p a middot M mod p)Bob berechnet (gk)x mod p = a und dividiert amiddotM

            a mod p und erhalt somit M

            Der Schlussel a darf nicht zweimal verwendet werden

            Man nennt (gk a) zeitweiliger bzw ephemeraler Diffie Hellmann Schlussel

            Nachteil die Nachrichtenlange wird verdoppelt

            65

            Das Verfahren ist unsicher wenn Alice die Zahl x schlecht wahlt x = 1 2 1 2 1 2 1 = x1 x2

            49 ElGamal-Cryptosystem

            (siehe auch TR 3111 vom BSI auf Seite 21)

            Auf Diffie-Hellmann aufbauendAlice offentlicher Schlussel ga (p g) privat aBob offentlicher Schlussel gb (p g) privat b

            Alice will an Bob schicken

            1 Zufallszahl k generieren

            2 Berechne mit Bobs Parametern gk mod p

            3 Berechne mit Bobs Parametern (gb)k mod p (DH-Schlussel)

            4 Berechne m middot (gb)k mod p

            5 Sende(gkm middot (gb)k

            )mod p

            Bob empfangt (x y)

            1 Berechne xb mod p (DH-Schlussel)

            2 y middot (xb)minus1 mod p = m mod p

            Alice baut also einen temporaren DH-Schlusselteil4 zu Bobs Parametern und sendet diesen unddie damit verschlusselte Nachricht m

            Nachteil Nachricht wird durch den Ephemeralschlussel doppelt so lang

            410 Wiederholung DH

            Generator gPrimzahl pga mod p Restklassen mod p = Korper(middot inverses)Dass p Primzahl ist ist eigentlich ZufallErzeugendes Element GOperation auf Elementen +

            a middotG = G + G + G + + G a-malEs muss schwer sein aus G und B = a middotG gegeben das a zu bestimmenG muss eine Ordnung n haben n middotG = 0 (Neutrales Element der Operation +)

            4Auch Ephemeralschlussel genannt

            66

            4101 Beispiel

            Alice Bob G+ nAlice denkt a denkt a middotGBob denkt b denkt b middotGBeide tauschen a middotG und b middotG aus und berechnen a middot b middotGa middotG ist leicht zu berechnen double and adda = a0 + a1 middot 2 + + ak middot 2k

            a middotG = a0 middotG + a1 middot 2 middotG + + ak middot 2k middotG(k minus 1)-mal rdquomiddot2ldquo und (k minus 1)-mal rdquo+ldquo

            411 was anderes

            Nimmt man nun G groszlige Gruppe mit n Elemente und der Addition +

            g-Generator

            g 2g 3g nG︸︷︷︸Nullelement

            Alice wahlt 1 lt x lt n bestimmt x middot g

            Bob wahlt 1 lt y lt n bestimmt y middot g

            Dann wieder K = (ab) middot g = K

            To do erganzen

            Problem des Diskreten Logarithmus in G gegeben ist G g Generator ist 0 c = a middot g in Ggesucht alogGc-diskreter Logarithmus in G

            Diese Variante funktioniert also mit allen rsquoKomplizierten Gruppenrsquo das fuhrt zu dem nachstenThema

            412 Elliptische Kurven

            Wo gibt es so etwas schon Elliptische Kurven Sind nicht weit verbreitet weil sie dem Mana-gement schwer zu erklaren sind

            67

            Aus der Wikipedia (unter GNU Free Documentation License)

            In der Zahlentheorie ist eine elliptische Kurve eine singularitatenfreie algebraische Kurve derOrdnung 3 in der projektiven Ebene

            Von besonderem Interesse zB fur die Faktorisierung naturlicher Zahlen sind aufgrundihrer einfachen Struktur elliptische Kurven der Form cy2 = x3 + ax + b mit c 0 und 4a3 +

            27b2 0 Einige moderne Verschlusselungsverfahren basieren auf solchen Kurven Der Nameleitet sich historisch davon ab dass diese Kurven durch elliptische Integrale parametrisiertwerden konnen

            Elliptische Kurven uber endlichen Korpern werden in der Kryptografie eingesetzt Dazuwird ausgenutzt dass eine Gerade (lineare Funktion) die zwei Schnittpunkte P und Q mit ei-ner Elliptischen Kurve hat diese auch in einem 3 Punkt schneidet Der Punkt der aus demletzteren durch Verkehren des Vorzeichens der Y-Koordinate (wenn die Kurve die oben ange-gebene Form hat) entsteht wird P + Q genannt Man kann zeigen dass diese Punktaddition(P und Q werden addiert das Ergebnis ist der Punkt P + Q) sowohl kommutativ als auch as-soziativ ist Erganzt man die Elliptische Kurve um einen weiteren Punkt 0 (genannt Punkt imUnendlichen) so bildet sie zusammen mit der (etwas erweiterten) Punktaddition eine abelschealgebraische Gruppe

            Sei nun P ein Punkt der Elliptischen Kurve Der Punkt P + P wird mit 2P bezeichnetentsprechend definiert man kP = P + + P als k-fache Addition des Punktes P Ist P nichtder 0-Punkt und ist die Ordnung der Elliptischen Kurve prim so kann auf diese Weise jederPunkt der Kurve erreicht werden (dh zu jedem Punkt Q auf der Kurve existiert eine naturlicheZahl k mit Q = kP) Die Aufgabe aus gegebenen Punkten PQ diesen Wert k zu ermittelnwird als Diskretes Logarithmus-Problem der Elliptischen Kurven (kurz ECDLP) bezeichnetEs wird angenommen dass das ECDLP (bei geeigneter Kurvenwahl) schwer ist dh nichteffizient gelost werden kann Damit bieten sich Elliptische Kurven an um auf ihnen asymme-trische Kryptosysteme zu realisieren (etwa einen Diffie-Hellman-Schlusselaustausch oder einElgamal-Kryptosystem)

            y2 = x3 + a middot x + b Skizze der Kurven S2Zu S2 Punkte auf der Kurve kann man addieren

            Die Rechenregeln gehen auch in einem Korper mod pBeispiel y2 equiv x3 + a middot x + b mod p Skizze S3

            Es gibt immer Punkte mit denen man rechnen kann Punkte sind geeignet die Addition funk-tioniert auch und hat die Anzahl N der Punkte einen groszligen Primzahlteiler dann haben wir auchKryptosystem mit G+ n Wenn groszliger Primzahlteiler exisitert1 N hat groszligen Primzahlteiler n2 Wahlen zufallig einen Punkt G als GeneratorDaraus erhalt man DH und El Gamal

            Zuerst eingefuhrt durch Victor Miller und Neal Koblitz um 1980 herum Damals war N schwer

            68

            bestimmbar Inzwischen gibt es bekannte Algorithmen (Schoof-Algorithmus)Diskretes Logarithmusproblem ist fur elliptische Kurven wirklich exponentiell (bis jetzt) EinBit mehr verdoppelt den Rechenaufwand (192-Bit-256 Bit bewegt sich in GroszligenordnungenRSA 2000-4000-Bit)

            Erganzung

            1Bei der Erforschung von Eliptischen Kurver stellte sich zuerst die Frag wie groszlig ist eigentlichdie Ordnung n der Gruppe Man wusste n sim p und man wusste sogar n minus p + 1 minus

            radicp lt n lt

            minusp + 1 +radic

            p

            2 Schnelle Algorithmen zur Berchnung der Ordnung

            3 ECDLP ist schwer wenn n einen groszligen Primfaktor hat

            To do sortieren

            Erganzung

            man hat p a bG n h

            K = y2 = x3 + ax + b

            p ist fur die Punktaddition (Formeln siehe enwikipediaorg wobei λ = (yQ minus yP) middotminus1

            (xa minus xp)︸ ︷︷ ︸mit GGT

            mod p)

            Anmerkung zum Wikipedia Artikel binary Case bedeutet man die Eliptischen Kurven auch inKorper mit 2k betrachten allerdings vieler solcher Falle patentiert

            G = Generatorpunkt mit G 2G 3G nG alle verschieden n kleinste Zahl so dass alle ver-schieden

            nG = 0

            bei der DSA-Parameter Form nimmt man weniger Grsquos

            Der nachste Parameter ist der cofactor h welches den Unterschied zwischen n und der Anzahlder Produkte auf der Kurve angibt

            Trick beim testen ob alle iG verschieden sind man guckt ob n eine Primzahl ist und ob nG = 0ist wenn ja ist dies das erste mal sonst ware n ja keine Primzahl Also sind alle vorherigen iG

            69

            verschieden

            Kurven finden besser Bestimmung der Punktanzahl ist schwer

            Fruher gab es kleine cofactoren h lt 16

            openssl ecparama -list_curves sind schon vorher erzeugt kann openssl nicht selber

            openssl ecparam -name secp160k1 -text -noout da die Kurve festgelegt ist gibt es nurein object zuruck

            openss ecparam -name secp160k1 -text -param_enc explicit -noout

            openss ecparam -name secp160k1 -text -param_enc explicit -noout -conv_form compressednichtkomprimiert gibt nur die x-Koordinate aus

            Bei der komprimierten Form kann mit der Kurve die andere eindeutig bestimmen (oder so)

            Darstellung als komprimierte Punkt ist auch wieder patentiert

            413 Elliptische Kurven Nachtrag

            GF(p) (Galois-Field) sind Kurven mod p mit p Primzahl erfullen Gleichungen der Form y2 =

            x3 + a middot x + b

            GF(2k) Korper mit 256 Elementen = 28

            In OpenSSL nur elliptische Kurven mod p patentfrei

            Kofaktor finden Wir haben Punktgruppe G es gibt einen Generatorpunkt gn middotG = 0 n ist die Ordnung

            cofactor︸ ︷︷ ︸klein

            lowast order︸︷︷︸primzahl

            = Anzahl der Punkte

            (cofactor soll klein sein order Primzahl) Anstelle Punkt auf der elliptischen Kurve als (x y) (x ymod p) abzuspeichern TrickWenn es ein Punkt ist gibt es zu x zwei y die quadratische Gleichung y2 = x3 +a middot x+b erfulleny1 =

            radicx3 + ax + b mod p

            y2 = minusradic

            x3 + ax + b mod peine der beiden Zahlen hat als letztes Bit immer 1 die andere eine 0 man nimmt daher nur noch(x LSB(y)) (x und kleinstes Bit von y)

            70

            414 Rucksack-Verschlusseln

            Kryptosystem das sich bei OpenSSL zu recht nicht findet Hat den Anschein als wurde es aufeinem NP-vollstandigen Problem beruhen Problem ist NP-vollstandig weil es ein allgemeinesRucksackproblem istSieht aber nur so aus ist aber nur polynomial weil es ein Transformiertes eines leichten Ruck-sackproblems ist

            Gegeben W Fassungsvermogen des Rucksacks w1w2 wk kleine GewichteGesucht W =

            sumeiwi mit ei isin 0 1

            Rucksack-Verschlusseln von MerkleHellmann Rucksack mit schnell wachsenden Gewichtenist leicht zu berechnendh wi gt

            sumjlti e jw j nachstes Gewicht ist immer schwerer

            4141 Beispiel

            Rucksack W = 51 = 31 + 15 + 3 + 2 wprimei s 2 3 7 15 31Grundidee Aus dem schnellen Rucksack einen langsamen machenM gt

            sumwi k mit (M k) = 1 k middot 2 k middot 3 k middot 31 mod M

            M = 61 ist Modul k = 17 ist privater Schlussel m = (1 1 0 1 1) ist unverschlusselte Nachricht31 51 58 11 39 ist offentlicher Schlussel 34 + 51 + 11 + 39 = 135 = 13rarr c ist verschlusselteNachrichtEmpfanger rechnet aus dem erhaltenen Gewicht (135) das richtige Gewicht wieder raus 135middotkminus1

            mod 61 = 51 und kann das Problem mit den schnellen Gewichten losen

            Zum BrechenMan transformiert 34 51 58 11 39 in eine Folge die schnell wachsend ist zB 1 3 5 11 29dh das transformierte System kann auf mehrere Probleme zuruckgefuhrt werden man brauchtnur eine passende Rucktransformation finden Adi Shamir hat dafur einen polynomiellen Algo-rithmus angegeben

            415 Merkle Puzzle

            Man generiert sich 1000000 Nachrichten rdquoDas ist Nachricht ni fur den Schlussel k jldquo ni zufalli-ge 20-Bit Zahl k j 128-Bit SchlusselVerschlusselungsverfahren DES diese 1000000 werden mit 20-Bit Schlusseln verschlusseltAlice schickt die 1000000 Nachrichten an Bob als offentlichen SchlusselBob will Alice eine Nachricht schicken Er sucht eine der Nachrichten aus dem offentlichen

            71

            Schlussel aus und macht eine Brute-Force Attacke auf diese Nachricht Er findet ni und kiBob verschlusselt mit dem ki seine Nachricht und sendet ni im Klartext mit

            Alice und Bob haben linearen Aufwand Eve quadratischen

            Von everything2comAlice and Bob agree on a symmetric algorithmAlice generates a large number (over a million at least) of messages of the form ldquoThis is myindex X and my puzzle is Yrdquo Each of the messages is encrypted with a 20-bit keyAssume there are 220 (about a million) messages it takes 220 operations to get the key and acomputer can perform 220 operations per second Bob takes 1 second to recover the key to amessage Eve takes 12 daysNow make that 230 (about a billion) messages Bob still only takes a second to get the key andit will take Eve 34 years

            Public Key Idee hier schon vorhanden

            416 Rabin-Verfahren und Wurzelziehen

            Aus der Wikipedia (unter GNU Free Documentation License)

            Das Rabin-Kryptosystem ist innerhalb der Kryptologie ein asymmetrisches Kryptosystem dasauf einem Faktorisierungsproblem beruht und mit RSA verwandt ist Es lasst sich prinzipiellauch zur Signatur verwenden In der Praxis findet das Verfahren allerdings wegen bestimmterAngriffsmoglichkeiten kaum Anwendung

            4161 Schlusselgenerierung

            Aus der Wikipedia (unter GNU Free Documentation License)

            Seien p und q zwei moglichst groszlige Primzahlen fur die eine bestimmte Kongruenzbedingunggelten muss Der offentliche Schlussel n wird durch Multiplikation der beiden Zahlen erzeugtalso n = p middot q Der geheime Schlussel ist das Paar (p q) Anders ausgedruckt Wer nur n kenntkann ver- aber nicht entschlusseln wer dagegen p und q kennt kann damit auch entschlusselnZum Erzeugen des offentlichen Schlussels mussen die Zahlen p und q bekannt sein Der offent-liche Schlussel lasst sich nur genau aus den beiden Primzahlen erzeugenWaren p und q keine Primzahlen so lieszlige sich das Verfahren ubrigens nicht anwendenSeien beispielhaft p = 7 q = 11 (in der praktischen Anwendung handelt es sich um sehr vielgroszligere Zahlen um die Entschlusselung durch Dritte so schwierig wie moglich zu machen)Daraus ergibt sich der offentliche Schlussel n = p middot q = 77

            72

            4162 Kongruenzbedingung

            Aus der Wikipedia (unter GNU Free Documentation License)

            Fur p und q muss die Kongruenzbedingung(

            pminus1p

            )= (p minus 1) und

            ( qminus1q

            )= (q minus 1)

            (wobei fur(

            nminus1n

            )= (n minus 1)

            nminus12 equiv (n minus 1) mod n = (n minus 1) gilt)

            oder einfacher ausgedrucktp equiv q equiv 3 mod 4gelten

            Allgemein gilt namlich fur die Primzahl r mit r equiv 3 mod 4 und die Zahl a mit a equivb2 mod ra

            (r+1)4 equiv

            radica mod r

            Diese Eigenschaft dient dazu spater die Entschlusselung zu erleichternWegen 7 equiv 11 equiv 3 mod 4 ist die Kongruenzbedingung fur das Beispiel erfullt

            n = p middot q Produkt von Primzahlen

            m soll verschlusselt werden c equiv m2 mod n (einfach Quadrieren weil Wurzelziehen schwer istwenn der Modul ein Produkt von 2 Primzahlen (p middot q) ist weil wer Wurzel ziehen kann kannauch Faktorisieren (n)

            Begrundung Es gibt 2 Losungen c = x2 equiv y2 mod n Wie findet man nun die Faktoren von nn teilt x2 minus y2 = (x minus y)(x + y) und x gt y und (x minus y) lt n und n hat nur 2 Primfaktoren daherx minus y = p und x + y = q Wurzelziehen ist leicht mod p mod q Gesucht Wurzel c mod pxp = c

            p+14 mod p und xq = c

            q+14 mod q

            x2p equiv c

            p+12 equiv c

            pminus12 middot c mod p

            Weil cpminus1 equiv 1 mod p ist (nach kleiner Fermat) die Wurzel daraus cpminus1

            2 equiv plusmn1 wegen c equiv m2

            mod n gilt (m2)pminus1

            2 equiv mpminus1 equiv 1(p) Stuck fehlt Ende des Wurzelziehens

            4163 Verschlusselung

            Aus der Wikipedia (unter GNU Free Documentation License)

            Sei nun P = 0 nminus1 der Klartextraum (er besteht also aus Zahlen) und m isin P der KlartextNun lasst sich der Geheimtext c durch c = m2 mod n bestimmen Dabei ist c der QuadratischeRest von zu der Quadratzahl m2 zum Modulo der Schlussel-Zahl n Im praktischen Einsatzbietet sich die Verwendung von Blockchiffre an

            In unserem Beispiel sei P = 0 76 der Klartextraum m = 20 der Klartext Der Ge-heimtext ist hierbei nun c = m2 mod n = 15

            73

            Dabei muss man beachten dass fur genau vier verschiedene m das c den Wert 15 aufweistnamlich fur m isin 13 20 57 64 Ahnliches gilt fur die meisten c

            4164 Entschlusselung

            Aus der Wikipedia (unter GNU Free Documentation License)

            Seien allgemein c und r bekannt gesucht wird m isin 0 n minus 1 mit m2 equiv c mod r Furzusammengesetzte r (beispielsweise unsere n) existiert kein effizientes Verfahren zur Bestim-mung von m Ansonsten wenn also r isin P (in unserem Fall p und q) dann lasst sich jedoch derchinesische Restsatz ausnutzen

            In unserem Fall sind nun die Quadratwurzelnmp =

            radicc mod p

            undmq =

            radicc mod q

            gesuchtWegen obiger Kongruenzbedingung gilt

            mp = c(p+1)

            4 mod pundmq = c

            (q+1)4 mod q

            In unserem Beispiel ergeben sich mp = 1 und mq = 9Mit dem erweiterten euklidischen Algorithmus werden nun yp und yq mit yp middot p+yq middotq = 1

            bestimmt In unserem Beispiel erhalten wir yp = minus3 und yq = 2Nun werden unter Ausnutzung des chinesischen Restsatzes die vier Quadratwurzeln +r

            minusr +s und minuss von c + nZ isin ZnZ berechnet (ZnZ steht hierbei wie ublich fur die Menge derRestklassen modulo n die vier Quadratwurzeln liegen in der Menge 0 n minus 1)

            r = (yp middot p middot mq + yq middot q middot mp) mod nminusr = n minus rs = (yp middot p middot mq minus yq middot q middot mp) mod nminuss = n minus s

            Eine dieser Quadratwurzeln mod n ist wieder der anfangliche Klartext m Im Beispielgilt m isin 64 20 13 57

            417 Angriffe auf asymmetrische Verschlusselungsverfahren

            Fall RSA

            74

            4171 1 Angriff Common modulus attack

            Idee Gleicher Modul fur verschiedene Leute hatte den Vorteil dass man sich nur die kleinenoffentlichen Exponenten e1 und e2 merken muss nicht mehr die groszligen Module hat aber Nach-teil (e1 e2) = 1 teilerfremd umiddote1+vmiddote2 = 1 (mit erweitertem Euklid) Sendet man eine Nachrichtm an zwei Alices berechnet also c1 = me1 mod n und c2 = me2 mod n dann kann man mitden Chiffren c1 und c2 auch ausrechnen cu

            1 middot cv2 = me1u middot me2u = me1u+e2v = m mod n Nachricht

            erhalten

            4172 2 Angriff kleiner geheimer Exponent d

            Wenn |d| lt |m|3 dann ist Faktorisieren moglich Sicherheitsrisiko geheimer Exponent muss im-

            mer moglichst groszlig sein aus groszligem offentlichen Exponenten |e| kann man erfahren dass dergeheime Exponent klein ist

            4173 3 Angriff Faktorisieren

            Wenn p ungefahr so groszlig wie q also p minus q = ∆ klein ist dann ist ( p+q2 + ∆

            2 ) (ungefahr Wurzel n+ was kleines = p) middot( p+q

            2 minus∆2 ) = p middot q Man weiszlig dass die eine Zahl uber Wurzel n liegt und die

            andere Zahl unter Wurzel n (Wurzel n + klein = p Wurzel n - klein = q)

            4174 Echt schlechte RSA-Schlussel

            n = 3middotq (1024 Bit) und offentlichen Exponenten bei TCTrustCenter abgegeben Damit kann manzeigen dass PGP als Signaturverfahren schlecht ist Schlussel schlecht gewahlt dadurch kannjeder die Kommunikation mitlesen da n sehr leicht zu Faktorisieren die Leute sie konntender Person mit dem schlechten Schlussel vertrauenswurdige Nachrichten schicken und laufenin die Falle dass ihre Nachrichten nun offentlich sind Anderer Fall Bewuszligt solche Schlusselvergeben um Nachrichten in einem kompletten Netzwerk lesen zu konnen

            n = Primzahl e middot d equiv 1 mod (n minus 1)

            Mit n als Primzahl geht normale Entschlusselung nicht

            n p q e dp dq qi dc equiv me mod nm1 equiv cdp mod pm2 equiv cdq mod qdp equiv d mod (p minus 1)

            75

            dq equiv d mod (q minus 1)

            m = m2 + (m1 minus m2) middot qi︸ ︷︷ ︸mod p

            middotq

            m equiv cd mod q und m equiv cd mod prArr cd

            Bundesamt fur Informationssicherheit sagt zur Verwendung von RSA p q mussen unabhangigvoneinander zufallig erzeugt werden und 0 5 lt | log2 p minus log2 q| lt 30

            4175 Schnelles Faktorisieren bei Fehler im System

            DFA - Differential Fault Attack System das entschlusselt aber sich an einer Stelle verrechnetmprime1 ist Rechenfehler statt wirkliches m bekommt man ein mprime = m2 + (mprime1 minus m2)qi lowast qbildet man nun m minus mprime 0 aber durch q teilbar dh bringt man das System dazu einen Fehlerzu machen und hat man die Originalnachricht GGT (m minus mprime n) = q schon hat man den Mo-dul faktorisiert hat funktioniert viele Chipkarten verrechneten sich unter Streszlig Es reicht dasmprime zu kennen m kann unbekannt bleiben denn man rechnet (mprimee minus c n) = q es reicht eineentschlusselte Nachricht zu haben

            Anderer Angriff auf ChipkartenDPA - Differential Power Analysis Stromverlauf ansehen Differenzen bilden und sequentiellanalysieren

            Angriff auf El Gamal Systemegeheimer Schlussel a offentlich g p ga Verschlusselte Nachricht zufalliges k (gk mmiddotgak)= c 1Angriff k gleich fur verschiedene Nachrichten oder k1 k2 in Abhangigkeit oder k k+1 k+2 fur verschiedene Nachrichten oder a middot k + b

            4176 Angriff mit gewahltem Chiffretext

            Normalerweise bei RSA m minusrarr c = me mod n

            cprime vorgegeben fuhrt zu Klartext mprime = (cprime)d mod nAnforderung Beliebiger Chiffretext auszliger cprime = c wahlbar zu dem man dann den Klartext erhalt

            Problem bei RSA

            1 r (zufallig gewahlt)rarr re mod n = s

            2 cprime = s middot c mod nVerschlusselungsmaschine liefert dann (cprime)d = sd middot cd = (re)d middot m = r middot m mod n = mprime

            76

            3 Letzter Schritt m = mprime = rminus1 mod n

            Das geht nur theoretisch in der Praxis geht das nicht weil Angreifer kann das r nicht steuernr middot m wird aber von der Verschlusselungsmaschine verworfen weil es bei zufalligem r keinkorrektes Padding hat

            Schwache des RSA Multiplikationseigenschaftm1 rarr c1 und m2 rarr c2 (m1 m2 gultige Klartexte)m1 middot m2 rarr c1 middot c2m1 middot m2 nicht als gultiger Klartext zugelassen

            5 Signaturmechanismen

            Wie erstellt man signierte Daten und versucht ein Aquivalent zu dem zu schaffen was man imtaglichen Leben durch Unterschriften schafftEigenschaften einer Signatur sollen nachgebildet werden Man weiszlig von wem ein Dokumentkommt sie ist an eine Person gebunden und kann von niemanden sonst nachgemacht werden undvom Inhaber nicht abgestritten werden Nachtragliche Anderungen an unterschriebenen Doku-menten sollen nicht mehr moglich sein (gibt es so im echten Leben nicht)

            51 Integritatsschutz und Hashfunktionen

            To do neu Hashfunktionen Definition einsortieren

            Hashfunktion Beliebige Daten werden auf Binarfolgen konstanter Lange abgebildet

            Def Eine Hashfunktion H ist eine Abbildung 0 1lowast rarr 0 1k auf Hashwerte der Lange k

            SHA-256 (SHA- Secure Hash Algorithmen) - Hashwerte der Lange 256 Bit

            1 Es gibt Kollisionen

            d1 d2 H(d1) = H(d2)

            2k Hashwerte aber potentiell abzahlbar viele Daten

            Wunsch

            Man soll diese Kollisionen nicht finden konnen und am besten es gibt sie nicht Hashfunktionendienen zum unterscheiden von Daten

            77

            H(d1) H(d2) dann ist d1 d2

            Dementsprechend groszlig muss das k sein so dass genugend viele Werte unterscheiden kann

            Anforderungen an Hashfunktionen

            Wunsch Kollisionsresitent (schwer Kollisionen zu konstruieren) man kann nicht zwei Doku-mente mit dem gleichen Hashwert konstruieren

            Wunsch Zweites Urbild resistent (schwer zweites Urbild zu konstruieren) man kann zu einemDokument nicht ein zweites mit dem gleichen Hashwert bestimmen

            Geburtstagsparadoxon Kollisionen entstehen zum Beispiel in Horerkreisen 23 Horer(innen)dann haben mit mehr als 50 Wahrscheinlichkeit zwei am gleichen Tag Geburtstag

            H Horer rarr Datum h 7rarr Geburtstag(h)

            h1 h2 H(h1) = H(h2)

            Bestimme die Wahrscheinlichkeit dass keine zwei am gleichen Tag Geburtstag haben

            1 minus g =365middot middot(365minusn+1)

            (365n) wobei n die Anzahl der Horer ist (Fur n = 23 ungefahr 50)

            radic365 20

            g radic

            Hashwerte

            Bei 2128 Hashwerte muss man mit Kollisionen rechnen ( Bsp 30 bei 19 Personen 19 radic

            365)

            Merke Das Geburtsatgs Paradox beschert uns Kolisionen bei 2k2 Hashwerten

            To do ende Neu

            Hashfunktionen Schon bekannt aus dem ersten Semester (Hashtabellen)

            Allgemeine Eigenschaften

            1 Komprimieren beliebig lange Werte auf n-bit Werte

            2 Einfach (und schnell) berechenbar

            Werte Fingerabdruck Prufwert Hashwert

            78

            Kollisionen h(x) (Hashfunktion) mit x1 x2 aber h(x1) = h(x2) x1 und x2 ist KollisionWahrscheinlichkeit fur Kollision fur zufallig gewahlte Werte sollte 1

            2n sein (Anforderung anHashfunktion)

            Wir verlangen dass die Variabilitat in der Eingabe sich auch in den Prufwerten widerspiegeltsprich Wenn die Eingabewerte gleichverteilt sind sind es auch die Ausgabewerte

            To do 20090422

            To do einsortieren

            Kollisionen rsquovermeidenrsquo durch Groszlige 160 Bit Prufwerte (280 fur Kollision (2100 mdash AES 128 mdashbzw 2112 2128 als Kollisionsschranken)

            Zusatzlich Voraussetzungen fur die Pruffunktion

            1 Kollisionsresistenz Es muss schwer sein zwei Nachrichten m1m2 zu finden so dassH(m1) = H(m2)

            (Es ist schwer Zwillinge zu konstruieren)

            2 Zwillingsresistenz Es muss schwer sein (also kryptografisch Aufwendig) zu einer Nach-richt m1 eine Nachricht m2 zu konstruieren so dass H(m1)FH(m2) ist

            (Wenn man eine Bruder hat dann ist es schwer eine zwillings Schwester dazu zu konstru-ieren)

            (aufwendiger als erstens)

            3 Urbildresistenz Es muss schwer sein zu einem beliebigen Prufwert h eine Nachricht zukonstruieren so dass H(m) = h ist

            4 Die Prufwerte mussen rsquozufalligrsquo aussehen Die Ausgabe von H genugt Anforderungen aneinen Zufallszahlengenerator (gewisse statistische Unauffalligkeit) also pseudozufallig

            Eigentlich musste man noch mehr Fordern namlich dass man keine zwei Nachrichten findet diesehr ahnliche Hashwerte haben und dass man zu einer gegeben Nachricht keine Nachricht miteinem ahnlichen Hashwert findet

            Beispiel H gute Pruffunktion

            H(m) =

            |m| n fix so Hprime(m) = 0||H(m)(H(m) rangehangen)|m| = n so ist Hprime(m) = 1||m( rangehangen)

            h ist die Lange der Prufwerte von H

            79

            Hprime ist kollisionsresistent wenn es H ist aber nicht urbildresistent

            To do sortieren

            openssl 097d (2004) Prufwertstandardverfahren ist MD5

            Hashfunktion enthalt eine rsquoKompressionsfunktionrsquo m1

            To do Bild-siehe Blatt - 20090422

            K(sm) = sprime

            K(sm) = K(sm2)

            K(s1m1) = K(s2m2)

            s1 und s2 als Ergebnisse einer Prufwertberechnung darstellen

            K(s1m11) = s1 K(s01m21) = s2

            K(s1m12) = s K(s2m22) = s

            der rechte Teil war 2004 schon bekannt es musste nur noch die linke seite gelost werden

            511 Schlussellose Hashfunktion (Prufsummen ohne Schlussel)

            h x minusrarr h(x)Ausschlieszliglich Prufwert Gute Auswahl garantiert dass man mit h(x) feststellen kann ob xverandert wurde

            xprime ist verandertes DokumentDatenBerechnung des Prufwerts liefert h(xprime) = hprime h(x) bei guter Hashfunktion Veranderung kannalso festgestellt werden

            80

            Zusatzlich verlangte Eigenschaften

            1 Kollisionsresistenz Es ist schwer Kollisionen zu erzeugen Dh es ist schwer x1 x2 mith(x1) = h(x2) zu findenHeute ublich n = 80 oder n = 100 280 oder 2100 in sim 280 Schritten Definitiv 256 istnicht schwer 264 ist nicht mehr so schwer

            2 Zwillingsresistenz Zweites-Urbild-Resistenz second preimage resistance Es ist schwereinen Zwilling zu erzeugen ist x1 mit h(x1) vorgegeben so ist es schwer einen Zwillingx2 zu erzeugen mit h(x1) = h(x2)(Anmerkung Finger weg von Binarcode fur x1 x2)

            3 Einwegeigenschaft Urbild-Resistenz Es ist schwer zu vorgegebenem h(x) ein Urbild xzu berechnen

            h1(x) ist eine gute Hashfunktion mit den schicken Eigenschaften 1 2 3 (n + 1 Bitlange)

            h2(x) =

            1 x wenn x die Lange n hat0 h1(x) sonst

            h2(x) ist kollisionsresistent (Zwillingsresistenz) (wenn h1 so ist) h2 ist aber nicht urbild-resistent 1 x hat als Urbild x

            2 ist die wichtigere Eigenschaft man kann notfalls noch ohne 1 auskommen Zum Beispielletztes Jahr MD5 - Hashfunktion x1 x2 waren konstruiert h(x1) = h(x2)x1 oplus x2 = 0 010 010 010 01 (1 jeweils im msb) Immer noch ein gewisser Schutz dazum Beispiel keine Kollision auf -Kleinbuchstaben oder 64 moglich

            Schlussellose Hashfunktionen sollten alle 3 Eigenschaften haben

            Fast-Kollision x1 x2 h(x1) oplus h(x2) hat wenig 1-Bits Manchmal zu vermeiden

            partielle Urbilder Gegeben h(x) dann ist es schwer x bis auf wenige Bits zu bestimmen

            SHA-1 theoretische Schwelle 280 praktisch 269 (16022005) 263 (19082005)

            Geburtstagsparadoxon 23 Personen die Wahrscheinlichkeit dafur dass 2 am gleichen Tagim Jahr Geburtstag haben ist groszliger als 1

            2

            h(x) =dd-mmMit k Personen x1 xk lassen sich k2 Geburtstagspaare bilden Mit n Tagen h1 hn im Jahrlassen sich n2 Geburtstagspaare bilden davon sind n gute ( (h hprime) mit h = hprime)

            81

            mit k2 Paaren in n2 Paaren suchen und einen von n treffenHashfunktion hat 160 Bit Ausgabe wir brauchen nach Geburtstagsparadoxon 280 Personen ummit hoher Wahrscheinlichkeit den gleichen Geburtstag h mit 160 Bit zu erhalten

            Allgemeines Konstruktionsprinzip x wird auf eine bestimmte Blocklange erweitert (pad-ding)

            1 Nullpadding (auffullen mit Nullbits falls erforderlich)

            2 1-Nullpadding (eine 1 und dann mit Nullbits bis zur Blocklange)

            3 1-Null-Langenpadding (eine 1 und Nullbits (falls erforderlich) und die Lange (msb first64 Bit oder 128 Bit)) Am besten geeignet da bei 1 oder 2 automatisch Kollisionen ent-stehen x (mind 1 bit kurzer als die Blocklange) und x 0

            xrarr b1 bk Blocke der Lange 512 Bit

            Haufig Verlauf in 3 Phasen in openssl init update final

            1 Initialisierung der Hashfunktion Innerer Zustand aus 32-Bit-Wortern H1H2H3H4H5initialisiert (mit Primzahlen π was-auch-immer)

            2 Update A BCD E aus H1 H5 Runden mit Transformationen mit Eingabe bi 48|60|120 H1 = H1 oplus A H2 = H2 oplus B

            3 Finalisierung Ggbf Padding 1 oder 2 mal das Update

            4 Ausgabe H1H2 H5

            Einfaches Beispiel

            82

            So lasst sich aus einem Kryptoalgorithmus ein Hashalgorithmus konstruieren In der Praxis wer-den andere Konstruktionen (Quirlfunktionen) verwendet MD5 SHA-1 SHA-2 (224 256 384512) Whirlpool ISO-

            In OpenSSL MD2 MDC2 MD4 MD5 RIPEMD-128 RIPEMD-160 SHA-0 SHA-1 Allegebrochen ausser RIPEMD-160 und SHA-1 (evt MD2) dh es sind m1 und m2 bekannt mitMD5(m1) =MD5(m2) und m1 m2

            512 Demonstration Falschung

            Ist die Hashfunktion rsquoschwachrsquo kann man Kollisionen sogar konstruieren

            Beispiel fur MD5 MD4 ist seit 10 Jahren schwach SHA-1 wird schwach

            Zwei Postscript-Dateien mit unterschiedlichem Inhalt aber gleichem MD5-Hash Prinzip Datei1

            Header

            if x1 == x2 then strangestring = T1 else strangestring = T2 end

            Rest

            echo strangestring

            Quelltext (B)(B)eq︸ ︷︷ ︸Bedingung

            [tot] [Def] ifelse

            83

            Datei 2

            Header

            if x2 == x2 then strangestring = T1 else strangestring = T2 end

            Rest

            echo strangestring

            (A)(B)eq︸ ︷︷ ︸Bedingung

            [Def] [tot]

            x1 und x2 unterscheiden sich nur sehr wenig und Header if x1 und

            Header if x2 sind je ein Nachrichtenblock mit dem gleichen Hashwert

            Sieht aus wie zweites Urbild-Angriff sind aber in der Tat zwei bose Zwillinge

            Quelle wwwcitsrubdeMD5Collisions

            Fazit Dokumente sind nicht mehr unterscheidbar

            Kollision besteht aus zwei Dokumenten d1 d2 mit dem Hashwert

            Bei MD5 kann man zwei rsquoDokumentersquo (Prafixe bis AB) konstruieren die den gleichen Has-hwert haben

            Man kann aber zu einem Dokument d0 (dem Original) noch nicht ein zweites dprime0 konstruierenso dass d0 dprime0 eine Kollision bilden

            Beispiel Ein SSL-Server-Zertifikat war (MD5) ununterscheidbar von einen SSL-ZertifizierungsstellenZertifikat womit man so viele (evt rsquobosersquo) SSL-Server-Zertifikate erstellen wie man wollte

            MD5 ist nicht kollisionsresistent

            MD5 ist noch 2 Urbild resistent

            52 Unterschied MD5 und SHA

            MD5 128bit Lange (Kollision 264)

            SHA-224 224bit Lange (Kollision 2112)

            SHA-256 256bit Lange (Kollision 2128)

            84

            mehr rotation lokale Unterschiede habe groszligere globale Unterschiede zur Folge bei SHA

            53 Secure Hash Standard SHA-2

            FIPS 180-2 US-Standard Nachfolger von FIPS 180 SHA-0 und SHA-1 sind die SHA-2-Algorithmen(noch nicht in OpenSSL) SHA-224 SHA-256︸ ︷︷ ︸

            32 Bit

            SHA-384 SHA-512︸ ︷︷ ︸64 Bit

            SHA-224 bzw SHA-384

            ist rsquoungefahrlsquo die linke Seite von SHA-256 bzw SHA-512

            Basisfunktionench (xampy)|(sim xampz) Auswahlfunktionpar x and y and z Paritatsfunktionmaj (xampy)|(xampz)|(yampz) Mehrheit

            Ausserdem Addition modulo Wortlange rot left und shift leftMessage M1M2 MN padding

            1 paddinglength auf 5121024 Bit

            51232 = 16 = 1024

            64

            2 Messageblock (16 Stuck) wird erweitertW0W1W2 W15︸ ︷︷ ︸

            Messageblock

            W79

            Wt = rot(Wtminus3) + rot(Wtminus8) + rot(Wtminus14) + rot(Wtminus16) fur t = 16 79rot(x) = rotl7(x) + rotl18(x) + shl3(x)

            3 8 temporare Variable a b c d e f g h mit Breite gleich Wortlange (32 oder 64 Bit) be-schreiben einen inneren Zustand der Funktion

            SHA-Maschine bekommt initialen Zustand H0 H7 Die ersten 32 Bit der gebrochenenAnteile der Quadratwurzeln der i Primzahl Fur SHA-256 und SHA-512 i = 1 8 furSHA-384 und SHA-224 i = 9 16

            85

            Am Anfang jeder Runde a = H0 b = H1 c = H2

            Jedes Wi erzeugt einen Schritt (kleine Zustandsanderung)

            T1 = h + rot(e) + ch(e f g) + Kt + Wt

            T2 = rot(a) + maj(a b c)

            h = g g = f f = e e = d + T1 d = c c = b b = a a = T1 + T2K0 K80 Schrittkonstanten Bruchteile der dritten Wurzeln der ersten 80 Primzahlen80 Schritte in einer Runde

            4 XOR-Operationen H0H1 H7 minusrarr H0 oplus aH1 oplus b H7 oplus hHi beschreiben den inneren Zustand nach Runde Hi am Anfang initialisiert

            5 Ausgabe ist H0 H7 am Ende

            To do ware auch interessant fur die Prufung

            Es wird eine neuer SHA-3 gesucht Voraussetzungen

            1 Nachrichtenexpansion muss komplexer werden

            2 Nachrichtenblocke mussen positionsabhangig werden (Skein tweakable

            3 innerer Zustand muss groszliger werden (2x Hashlange)

            531 Problem bei MD5 und SHA-0

            Beispiel 1 Innerer Zustand zwischen einzelnen Schritten hat Bits die die folgenden Bitsmehr oder weniger beeinflussen Damit sinkt die Komplexitat beim Brechen Besondere Bitsfuhren zur Reduktion der Anzahl der Gleichungen und erlauben eine schnelle Konstruktion vonspeziellen Zwillingen m1m2 mit MD5(m1) =MD5(m2) m1 oplus m2 = viele Nullen

            Parallel hashen rdquoKontostand -20073ldquo und rdquoKontostand +700ldquo Ab -2 bzw +7 entstehen un-terschiedliche innere Zustande Nachkommastellen bei dem zweiten String anpassen um dieUnterschiede auszugleichen

            86

            Aktuelle Angriffe erzeugen keinen zweiten Zwilling sondern rsquonurrsquo falsche Zwillinge Zu einemguten gibt es keinen schlechten Zwilling

            Beispiel 2 Es gibt zwei Zertifikate mit unterschiedlichen Inhalten und gleichem MD5-HashDas sind dann aber 2 schlechte Zertifikate MD5 ist also nicht kollisionsresistent aber momentanzwillingsresistent

            SHA-1 hat momentan eine Komplexitat von 263 anstelle von 280 fur Kollisionen

            mH(m) (H(m) aus vertrauenswurdiger Quelle) rArr m kann nicht unbemerkt verandert werdenManipulation Detection Codes () Das ist keine Prufung des Ursprungs Um zu prufen ob maus einer bestimmten Quelle stammt benutzt man MACs

            532 MACs (Message Authentication Codes) (Prufsummen mit Schlusseln)

            Sei k ein geheimer Schlussel den nur Alice und Bob kennen m ist die Nachricht BerechneHk(m) = h keyed Hash Die Hash-Prufwerte sind also Schlusselabhangig

            (m h) mit h aus vertrauenswurdiger Quelle

            bull Veranderungen sind erkennbar

            bull Nur mit Kenntnis von k kann man h berechnen also nur mit dem Schlussel kann man denPrufwert falschen

            Empfanger der k kennt kann n auf Integritat prufen Um sich vor Angreifern zu schutzen mussfur eine Prufung der Prufwert geschutzt werden

            Hk(mprime) = h

            (m1 h1)(m2 h2)

            rarr (m h) muss verhindert sein

            87

            Standardisiertes Verfahren fur Keyed hash auf der Basis von MDCs RFC 2104 in OpenSSL zufinden HMAC)

            H(k oplus auszligeres Padding H(k oplus inneres Padding m))︸ ︷︷ ︸512- oder 1024-Bit-Blocke

            k linksbundig aufgefullt mit Nullen inneres Padding = 0x36 0x36 auszligeres Padding = 0x5c0x5c Langenpadding am Ende des inneren H

            Berechnen Sie mit OpenSSL und dgst -c oder -hex den Hashwert der leeren Datei

            henrykgleam henryk $ openssl dgst -c -hex -md5 devnull

            MD5(devnull)= d41d8cd98f00b204e9800998ecf8427e

            henrykgleam henryk $ openssl dgst -c -hex -sha1 devnull

            SHA1(devnull)=

            da39a3ee5e6b4b0d3255bfef95601890afd80709

            openssl dgst -sha256 -hmac 1234567890 devnull

            HMAC-SHA256(devnull)= ba92e0bfa35d8a018831f3675f0b4314c8468d4d96e6981b85ba3390c23308fd

            HMAC

            To do vervollstandigen

            Mac mit Hashfunktion K- Schlussel H-Hashfunktion

            H(K oplus oPadH(

            0x565656︷ ︸︸ ︷K oplus iPad︸ ︷︷ ︸Bitlange H

            n))

            K n1 rarr Mac(n1K) = m1

            K nprime = n1||langenpadding ||n2

            (K nprime) rarr HInitialisiert mit m1(n2) = m2

            ISO-10118-32004

            88

            54 Whirlpool

            Basis fur eine Hashfunktion ausgehend von einer einzigen Verschlusselungsfunktion

            Aus der Wikipedia (unter GNU Free Documentation License)

            WHIRLPOOL ist eine kryptografische Hash-Funktion die von Vincent Rijmen und Paulo SL M Barreto entworfen wurde Sie wurde nach der Whirlpool-Galaxie im Sternbild der Jagd-hunde benannt

            Whirlpool funktioniert mit Daten von weniger als 2256 Bit Lange und gibt einen Hash-Wert von 512 Bit aus

            Die Autoren haben erklart dass Whirlpool nicht patentiert ist und es nie sein wird Whirl-pool darf kostenlos zu jedem Zweck verwendet werden Die Referenz-Implementation ist ge-meinfrei

            The WHIRLPOOL algorithm has undergone two revisions since its original 2000 specifi-cation In the first revision in 2001 the s-box was changed from a randomly generated one withgood cryptographic properties to one which has better cryptographic properties and is easier toimplement in hardware In the second revision (2003) the diffusion matrix was changed

            People incorporating WHIRLPOOL will most likely use the most recent revision ofWHIRLPOOL while there are no known security weaknesses in earlier versions of WHIRL-POOL the most recent revision has better hardware implementation efficiency characteristicsand is also likely to be more secure

            E

            +

            H

            H

            m

            AES-Variante

            i-1

            i-1

            i

            55 Zusammenfassung

            To do oben einsortieren

            89

            Manipulation Detection Codes MDCsHashfunktionen MD5SHA-1SHA-2Allgemeines Konstruktionsprinzip aus Langenpadding und Iterationen

            bull MACsKeyed Hash HMAC mit Hashfunktion aufgebaut aus prefix und suffix

            bull CBC-MAC Nachrichtenblocke m0m1 mk

            + +

            MACc c c

            K

            m

            m m

            0

            1

            1

            2

            k

            k+1

            Risiko Weil keine Langeninformationen dabei sind ist es anfallig gegen Einsetzen undAustauschen Wird gerne Verwendet bei Anwendungen die feste Langen haben zBChipkartenCBC-MAC-verbessert

            K

            DES

            1

            K2

            K3

            larrminus CBC-DES3-MAC

            Benutzt zB beim digitalen Tachograph

            Es gibt zwei Grundlegende technische Mechanismen Ohne Schlussel und mit Schlussel Nur mitSchlussel lasst sich spater der richtige MAC-Wert ausrechnen und bestimmen dass die Nachrichtnicht verandert wurde und vom richtigen Absender kommt

            90

            56 Digitale Signaturen

            To do einsortieren

            Definition

            s ist die Signatur zu einer Nachricht n mit einem Signaturverfahren S und einem Verifikations-verfahren V

            S N times D︸︷︷︸Signaturschlussel

            rarr s

            V N times E︸︷︷︸Verifikationsschlussel

            timess rarr ja nein

            V(n e S (n d)) = 1

            V(n e S (nprime d)) = 0 =( n eprime S (n d)) = 0

            RSA

            S (n d) =

            V(n s e) = E(e s)eqH(n)

            openssl dgst -sign keyrsa -hex nulltxt

            openssl -sign keyrsa -sha256 -out nullsig nulltxt

            openssl rsautl -in nullsig -encrypt -inkey keyrsa -raw -hexdump

            in Beta openssl sha256 -hex nulltxt

            Anstatt der Symmetrischen Verschlusselung wie bei MAC kann man auch asymetrische Verfah-ren verwenden

            1 h mit Namen (0D) in ASN1 Struktur 0001 FF FF 00 (ASN1-Struktur)

            2 Padding

            3 rsquoEntschlusselnrsquo

            4 rsquoVerschlusselnrsquo

            5 ASN1 Struktur Hash OID Wert rausziehen

            91

            6 vergleichen 0 1

            openssl hatte in den fruheren Versionen einen Fehler in der Signaturprufung

            langer RSA Schlussel

            exponent e klein (3)

            lange Signatur S

            S 3 = h

            wenn h sehr lang ist konnte man folgendes machen

            h= (0001FF00ASN1 rsquomullrsquo)

            man konnte den rsquoMullrsquo so verandern das h = s3 (also so lange verander bis h dritte Wurzel vons ist)

            Es wurde nicht uberpruft ob am Ende der ASN1-Struktur auch das Ende der Daten ist

            siehe Webseite RSA Zertifikate mit Exponenten 3

            To do alt

            Digitale Signaturen schutzen die Integritat und die Authentizitat Wir betrachten hier welche dieauf asymmetrischen Verfahren basieren Symmetrische gibt es werden aber in der Praxis nichtbenutzt Es gibt 2 Typen

            1 RSA

            2 DSA

            561 RSA

            m = p middot q (2048 Bit)Exponent e klein (64 Bit)Exponent d groszlig mit e middot d equiv 1 mod (p minus 1)(q minus 1)

            xrarr c = xe mod m (offentlich)cd equiv x mod m (geheim)xed equiv x

            92

            Man rechnet zuerst xrarr s = xd mod m Das kann nur derjenige der uber den privaten Schlusseld verfugt Aus s rechnet man se mod m = (xd)e mod m equiv xemiddote mod m = x Bei RSA konnenwir die Rolle vom privaten und offentlichen Algorithmus vertauschen so dass folgt Nur wer dkennt kann zu x ein s erstellen so dass se equiv x mod m ist

            Anwendung dafur Digitale Signatur Wir haben Nachricht M und erstellen daraus einen PrufwertH(M) mit einer Hashfunktion und rechnen

            H(M) = x minusrarr s = xd mod m

            Dann ist (M s) das digital signierte Dokument M (und s die Signatur)

            To do einsortieren neu

            Signatur mit Anhang (with appendix) (m sig)-Signierte Nachricht

            Ver(vm sig)

            Signatur mit Nachrichtruckgewinnung (with (partial) message recovery) (m1mprime2) = mprime so dassmprime2 ein Teil der Nachricht m = m1||m2 enthalt

            Ver(vm1mprime2) (partial recovery)

            Ver(vminusmprime) (complete recovery)

            In RSA

            PKCS1 ver 15 Signatur mit Appendix

            PKCS1 ver 21 (noch nicht in OpenSSL)

            To do ende einsortieren

            Prufung (M s) rarr H(M) = x Ist se mod m = x Nur wer das d hat kann das Paar (M s)

            erstellen und ist damit Inhaber des Dokuments

            562 Eigenschaften eines asymmetrischen Verschlusselungsverfahren

            Alice kennt den offentlichen Schlussel von Bob Bob kennt seinen geheimen Schlussel

            93

            Alice123 Bob Alice Bob123offB gehB gehA offA

            EoffB(m) = c rarr DgehB(c) = m rarr

            MS gehA

            (m s)

            rarr

            Voffa(m s) =

            0 ungultig1 gultig

            Mehrere Alices konnen an Bob schreiben Entschlusselung mit dem geheimen Schlussel vonBob Hier wird eine Nachricht so verschlusselt dass man die Nachricht aus c zuruckgewinnenkann

            Alice sendet an alle Bobs Hier wird ein Paar erzeugt dass in einen Verifikationsalgorithmusgestopft werden kann der dann ja oder nein sagt

            Es ist Zufall dass man mit RSA sowohl einen Verschlusselungsalgorithmus als auch einenSignaturalgorithmus erstellen kann Mit anderen geht das nicht

            Hatte man nicht die Urbildresistenz der Hashfunktion konnte man ein s nehmen und dazu aus-rechnen se mod m = x jetzt konnte man zu dem x ein Urbild M ausrechnen und bekame einPaar (M s) dass gultig signiert ist Dazu kommen in Wahrheit noch Padding und Objekt Identi-fier der angibt womit signiert wurde und Parameter

            30 = SEQUENCE06 = OID2B 0E 03 02 1A = SHA12A 86 48 86 F7 0D 01 01 01 = rsaEncryption05 = NULL Bezeichner fur die leere Menge hier bedeutet es keine Parameter04 = OCTET STRING02 = INTEGER03 = BIT STRINGSchema Tag Length Value

            Das ganze lasst sich mit openssl asn1parse erfahren (asn1 = Abstract Syntax Notation 1)Schlussel immer SEQUENCE SEQUENCE OBJECT PARAMETER BIT STRING bzw Se-quence aus OID und Bitstring Das erste Byte in einem Bitstring gehort nicht zum Bitstring dazusondern gibt die Nummer der von hinten ungenutzten Bits an

            OID-Liste httpwwwalvestrandno

            Mhminusrarr

            SHA-1

            H minusrarr

            Padding

            00 01 FF FF 00 b c b H c

            Identifier Oktetstring

            Padding nach PKCS1 v15

            ASN1 Objektidentifier fur SHA-1 (131432) wird als 2B 0E 03 02 1A codiert

            94

            xyabcd (Dot-Notation)darr

            bx middot 40 + yc babcdc1 Byte Byte (Oktett)

            12840113549127 als Ubungsaufgabe

            563 RSASSA-PSS-Padding

            SSA Signature Scheme with Appendix

            PSS Probabilistic Signature Scheme

            RFC 3447 (siehe figure 2)

            8 zero salt

            h

            0000 01 salt

            +MGF h

            maskiertes seed BC00 1024

            Bits

            zu 0

            setzen

            soviele dass die Eingabe

            kleiner als der Modul wird

            Eingabe fuumlr die Signatur

            M l(M) lt= 2^(64)-1 bei SHA-1

            20 Byte 20 Byte

            To do start einfugen

            MGF-Maskengenerierungsfunktion (beruht auf der Hash-funktion)

            95

            MGF rArr DBmask dann DB oplus DBmaskNullungminusminusminusminusminusminusrarr maskedDB

            Nullung-Nullung der oberen Bits so dass maskedDB kleiner als Modul ist

            Signieren (EMSA-PSS)+(RSA-Verschlusselung)

            Verifikation (RSA Op)

            1 RSA-Operation

            2 EM

            Prufung ob BC am Ende

            H abspalten und mit MGF DBmask erzeugen

            XOR mit Rest von EM

            DBprime = 0000︸︷︷︸Nullungsfehler

            0001 Salt

            00 Label mhash SaltHashminusminusminusminusrarr Hprime

            = H

            Jede Eingabe in die RSA-Operation ist pseudo zufallig (Jede Eingabe hat einen neuen Signa-turwert)

            Angenommen man wendet die RSA-Operation direkt auf m an

            mprime-Signatur mprime = md mod n

            m1m2

            m1 rarr mprime1 mod n = mprime1

            m2 rarr mprime2 mod n = mprime2

            Verifikation

            (m1m2) mod n rarr (m1 middot m2)d = md1md

            2 = mprime1 middot mprime2 mod n

            (rsquoMan kann mit zwei Signaturen eine andere erzeugenrsquo)

            96

            To do ansehen

            Unsicher zeitaufwendig kann leicht gebrochen werden

            m rarr mprime = md mod n

            re = rprime mod n

            chosen message m middot rprime rarr (m middot rprime)d mod n = md middot red mod n = mprime middot r mod n

            (mprime middot r) middot rminus1 mod m = mprime

            (sieht nach Zufallszahlen aus aber die kann man auf eine vorher gewahlte Nachricht zuruck-rechnen)

            To do ende einfugen

            Nachricht M mit |M| lt 264 minus 1 wird mit Hashfunktion h gehasht Davor kommen 8 Zerobytedanach ein Saltwert (Saltwert wird benotigt fur die Auswertung der Signatur und wird verstecktin der Signatur) Auf das Gesamte wird die Hashfunktion h erneut angewendet

            Verstecken des Saltwerts --0000 (rarr eventuell leer) 01 salt-- oplus mit einer Maske gebildetaus dem Hashwert und einer Maskengenerierungsfunktion

            An den Anfang der Eingabe fur die RSA-Signatur werden 0-Bits so gesetzt dass die Eingabefur die RSA-Signatur kleiner als der Modul ist Wenn m volle Bytelange hat wird das obersteBit gleich 0 gesetzt (RSA-Signatur ()d mod m mit m = p middot q) An das Ende der Eingabe fur dieRSA-Signatur wird BC angehangt

            Durch den Saltwert wird das Ergebnis zufallig und schwer vorhersagbar Wird leider nicht oftverwendet da die Maskengenerierungsfunktion Chipkarten teuer machen wurde

            Es existiert eine DIN Variante zum v15 PKCS1 DIN-RN-Padding00 02 Zufallsbytes(ohne 00) 00 Identifikator Oktettstring

            564 DSA

            Vergleich ElGamal und elliptische Kurven

            K-elliptische Kurve y2 = x3 + ax + b mod p

            97

            p-Primzahl ( 2 3)

            Punkte auf der Kurve bilden eine Gruppe E(k)

            P + Q = R k middotG isin E(k)

            G ein Punkt (Generator) mit groszliger Ordnung n

            1 middotG 2G 3G n︸︷︷︸sehr groszlig

            middotG = 0

            n ist eine Primzahl und G 2G nG = 0 ist die gesamte Gruppe E(k)

            Signaturschlussel t-zufallig aus 1 n minus 1 Verifikationsschlussel ist P = t middotG

            Standard FIPS 186-3 rarr finde den Fehler

            To do ende einfugen

            p g Generator gpminus1 equiv 1 mod p gpminus1

            x 1 mod p

            Geheimer Schlussel xoffentlicher Schlussel y = gx mod pk(gkm middot yk) = c

            Parallel bei elliptischen Kurven G geheim x offentlich Y = x middotG

            (k middotGm middot k middot Y)

            DSA auch bekannt als DSS FIPS-186

            Primzahl p (hat zB 1024 Bit im Standard variabel) so gewahlt dass pminus 1 einen Primteiler derLange 160 Bit enthalt q|p minus 1 mit |q| = 160 BitAusserdem Es gibt einen Generator g mit der Eigenschaft gq equiv 1 mod p Das findet man

            indem man einen h Generator in mod p auswahlt und g = hpminus1

            q hpminus1 equiv 1 mod p ausrechnet

            x geheimer Signaturschlussel mit 160 Bit gx mod p ist der offentliche Schlussel

            Signaturerstellung Nachricht M Hashwert h(M) = H ausrechnen Generiere Zufallszahl k mit160 Bit (k isin 1 n minus 1) und berechne

            To do neu

            k middotG = (x y) r = x mod n

            98

            s = hminus1 middot (h + tr) mod n

            (r s) ist die Signatur

            To do ende neu

            r = (gk mod p) mod q und s = (kminus1(H + x middot r) mod p) mod q r und s sind Exponenten furmod p werden aber nochmal mod q genommen um Platz zu sparen (r s) wird die Signaturwerden (s 0 mod q r 0 mod q)

            Signaturverifikation Berechne w = sminus1 mod qu1 = H middot w mod q u1 = H middot w + i middot qu2 = r middot w mod q

            Berechne

            gu1 middot yu2 equiv gHmiddotsminus1middot gxmiddotrmiddotsminus1

            equiv gHmiddotk(H+xmiddotr)minus1middot gxmiddotrk(H+xmiddotr)minus1

            equiv gHmiddotkmiddot(H+xmiddotr)minus1+xmiddotrmiddotk(H+xmiddotr)minus1

            equiv gkmiddot(H+xmiddotr)middot(H+xmiddotr)minus1

            equiv gk mod p

            Prufe also ob (gu1 middot yu2 mod p) mod qequiv r

            Die Signatur zu M ist (r s) mit r und s haben 160 Bit so dass man 320 Bit Signatur hat (kleinerals die 1024 Bit Signatur von RSA)

            Um den geheimen Schlussel zu bestimmen muss man den diskreten Logarithmus mod q be-rechnen und das gilt als schwer

            565 ECDSA - DSA mit Elliptischen Kurven

            K - elliptische Kurve mit Punkten mod pG - Generatorpunkt G hat Ordnung q [q middotG = 0] q Primzahlx - Restklasse mod q Y = x middotG

            r = [(k middot G)1] mod q (rarr 1 Koordinate mod q) s = kminus1(h + x middot r) mod q [u1 middot G + u2 middot Y]1

            mod qequiv r

            700 Bit fur alle Parameter

            99

            To do neu

            ECDS DSAGenerator

            G g gq = 1 mod pdA = [1 q minus 1]

            zufalligPA = dA middotG auf E pA = gdA mod p

            Signatur k isin [1 q minus 1] r = (gk mod p) mod qr = x mod q

            s = kminus1 middot (h + dA middot r) mod q

            h ist genauso lang wie q (gleiche Bitlange)

            h sind die linken Bits von H(n)

            (Bem RSA ist bei Elipt Kurven nicht einsetzbar deshalb ist DSA eine gute alternative)

            link draft-lochter-pkx-brainpool-ecc-03 - eine art RFC zu Brainpool

            openssl ecparam -name brainpoolP256r1 -param_enc explicit -noout

            E =(x y) y2 = x3 + Ax + B mod p

            Dann ist G = 04x (in einer Prufung ware interessant zu wissen was das fuhrende Bytebedeutet und welche Varianten es gibt)

            openssl ecparam -name brainpoolP256r1 -genkey

            -param_enc explicit -noout gt eckey

            (pub - offentlicher Punkt)

            openssl dgst -sha256 -sign eckey eckey gt ecsig

            xxd -p ecsig

            openssl asn1parse -i -in ecsig -inform DER

            Man erhalt die beiden Integers r und s

            (Bem bei Eliptischen Kurven ist die Bitlange kurzer da Algorithmen hohere komplexitat als so

            100

            haben)

            (Hausaufgabe erzeuge zwei Kurven (512Bit - Brainpool bzw 521 NIST) mit anderen Hash-funktionen (mdripemd whirlpool) Signatur (rs) )

            (Bem siehe Wikipedia El C DSA r=0 Abfrage weil sonst dA keine Rolle spielt s= 0 Abfrageweil man sonst mit minusz = r middot dA mod q den geheimen dA ausrechnen kann)

            [Spickzettel zur HA

            h-linke Bits des Hashwertes

            n1 = h middot sminus1 mod q

            n2 = r middot sminus1 mod q

            V = n1 middotG + n2PA = (x y) r = x mod q

            v = gn1 middot pn21 mod p r = v mod q

            (r rarr 0 1 jeweils)

            h middot sminus1 middotG + rsminus1PA = h(k(k + dAr)minus1 middotG + r(k(h + dAr)minus1)dAG = (hk + rkdA)(h + dAr)minus1G = V

            = k (h + rdA) middot (h + dAr)minus1︸ ︷︷ ︸=1

            G

            = k middotG

            ]

            Magma

            p=StringToInteger(rsquorsquo16)

            a=StringToInteger(rsquorsquo16)

            b=StringToInteger(rsquorsquo16)

            IntegerRing(p)

            E=EllipticCurve([KaKb])

            G=E[KStringToInteger(rsquo1Halfte Generatorrsquo16)

            101

            KStringToInteger(rsquo2Halfte Generatorrsquo16)]

            Jetzt kann man rechnen

            qG eq E0

            true

            mdashmdashndash

            qG

            (010)

            mdashmdashmdash

            Kq=IntegerRing(q)

            dA=1+Random(q-2)

            PA=dAG Prufung ob ungleich Null fehlt noch

            h=K12121212121212121212121212121

            k=1+Random(q-2)+1damit keine Null rauskommt

            X=kG

            x=X[1]

            r=(IntegerRing()x) mod q

            s= (Kqk)ˆ(-1) ((Kqh)+ r dA)

            rs

            Verifikation

            u1=h(Kqs)ˆ(-1)

            u2=r(Kqs)ˆ(-1)

            102

            Y=(IntegerRing() u1)G+( IntegerRing() u2) PA

            Y

            ((IntegerRing() Y[1]) mod q) eq r

            =rArr siehe Verzeichnis

            Prufen ob Openssl gut gerechnet hat

            OpenSSL

            wie erzeugt man den offentlichen Schlussel openssl ec -in eckey -pubout

            openssl ec -in ecpub -pubin -text -noout

            -pverify

            To do neu-ende

            To do neu-20090617

            Bem Attributes muss die leere Menge sein und darf nicht weggelassen werden

            SHA1 nur noch zur Unterscheidung benutzen

            57 Widerrufen von Zertifikaten

            siehe rfc5280 S53

            Erste Sperrliste

            Ist eine Liste in der die Nummern der gesperrten Zertifikate stehen

            Beispiel CA erstellen

            perl ˜optopenssl-100-beta2appsCApl -newca

            103

            Zertifikat fur den Nutzer erstellen

            perl ˜optopenssl-100-beta2appsCApl -newreq

            Signieren

            perl ˜optopenssl-100-beta2appsCApl -xsign gt aypem

            Man kann noch weitere Zertifikate erstellen allerdings wird dann der pem Key geloscht Mankann dann feststellen dass die Seriennummer nur um eins erhoht wird Man kann auch openssl ca -gencrl -out -cl1pem -crlhours 12benutzen und dabei die Seriennummer selber angeben

            openssl crl -text -in crl1pem -noout

            Zertifiziert wird nur der Teil zwischen Certificate Rev List bis No Revok Cert Da dieser Teilsehr klein ist ist es recht schwer Kollisionen mit SHA1 dafur zu konstruieren

            Dann gibt es noch Informationen wann es die nachsten Updates gibt (Last Update Next Update(optional)) Alte Sperrlisten bleiben aber Gultig die neuen gelten nur zusatzlich

            Zertifikat ungultig machen

            openssl ca -gencrl -out cr13pem -revoke demoCAcertsF8C85pem -crl_reason keyCompromise -crlhours 12

            aktualisieren

            openssl ca -gencrl -out cl4pem -crlhours 12

            Nun nachsehen mit

            openssl crl -text -in crl4pem -noout

            To do neu-ende

            104

            58 Was es noch so gibt

            581 blinde Signaturen

            Gut fur anonymes digitales Geld Normalfall Bank kriegt digitalen Scheck belastet das Kontound schickt einen von ihr signierten Scheck zuruck Problem Wenn derjenige der den Scheckspater einlosen will zur Bank geht kann diese den Scheck zum Aussteller zuruckverfolgen

            Mit anonymen Signaturen Aussteller erzeugt viele (zum Beispiel 1000) unterschiedliche Schecksmit je einer Zufallszahl und dem gleichen Betrag aber ohne Name Kontonummer etc Diese1000 sendet er verschlusselt an die Bank Die Bank sucht sich zufallig (das ist wichtig) 999davon aus und fordert fur diese den Schlussel an Die Bank entschlusselt diese Schecks unduberpruft ob uberall der gleiche Betrag drinsteht Wenn ja dann ist davon auszugehen dass auchder auf den gleichen Betrag lauft Das Konto wird entsprechend belastet und der Scheck wirdblind (also ohne hineinzusehen) signiert und dem Aussteller zuruckgeschickt Der packt denScheck aus (wobei die Signatur gultig bleibt) und hat jetzt einen von der Bank signierten digita-len Geldschein den die Bank nicht mehr zuruckverfolgen kann

            582 anonyme Signaturen

            Beispiel Elektronische Wahlen wo man nicht mochte dass man weiszlig wer es unterschriebenhat

            6 Zertifikate

            To do neu-20090520

            m rarr Signatur und Verifikation

            mprime rarr Signatur und Verifikation

            Vertrauen in den offentlichen Schlussel

            Schutzen den Schlussel durch Prufwert den Prufwert Schutzen wir durch eine Signatur Vertrau-en eines Schlussel ubertragt sich an einen anderen Das ganze scheint sich im Kreis zu drehen

            Aber es handelt sich um einen Graph (Der Graph muss nicht transitiv sein - A vertraut BB vertraut C aber A vertraut nicht unbedingt C) Zb Baum mit Wurzel (PKI) dann gibt es

            105

            vertrauens-Normen die den Ebenen eines Baumes entsprechen Die andere Variante ist das PGPWeb of Trust bei dem der Baum ungeordneter ist und eine Art Vertrauensbereiche hat

            Dass eine Zertifizierungsstruktur funktioniert braucht es klare Regeln fur den Umgang mit Zer-tifikate

            Standards

            ANSI X509

            X500

            openssl internet Profil

            RFC 5280 (alt 3280 2459)

            Definition Zertifikat bindet (durch Signatur) einen offentlichen Schlussel an einen Namen(Subjekt)

            (siehe rfc5280 S16 - Certificate= SEQUENCE und TBSCertificate) (in TBSCert er-scheint rsquosignaturersquo recht fruh damit schon mit dem Hash-Algorithmus begonnen werden kannaber warum steht in Certificate dann nochmal signature -Bessere Ordnung)

            Zertifikat bei CA-cert runterladen und dann mit openssl ansehen

            openssl x509 -in class3crt -text -noout

            openssl asn1parse -i -in class3crt

            Zur ausgabe des ersten (siehe auch rfc5280)

            Version es gibt momentan 3 Versionen

            Serial Number ist ein Integer kann so groszlig sein das man nicht mehr in den Hash-Block mehrkommt (bis 20 Byte geht)

            Bundesnetzagenturde 15549pdf sagen dass Serien Nummern mindesten 20 Bit Entropie ent-halten sollen damit SHA-1 bis 2010 benutzt werden kann (rsquoQualifizierte Signaturrsquo)

            To do siehe 606 Gultigkeit

            validity Wird oft als Gultigkeitszeitraum ubersetzt was aber nicht ganz richtig ist da nur ange-geben wird wann das Zertifikat nicht gultig ist Besser ware rsquonicht Gewahrleistungszeitraumrsquo

            106

            Die validity gibt (nach dem Standard) den Zeitraum an in der die CA gewahrleistet aussagenuber den Zustand des Zertifikats zu geben (Gultig ODER nicht Gultig - deshalb muss das Zer-tifikat also nicht unbedingt gultig sein)

            To do neu-ende

            To do neu-20090527

            Bemerkung In der Objectstxt findet die Object-Identifier die OpenSSL kennt

            To do neu-20090527-ende

            Signatur Anwendung eines Schlussels Ob der Signaturersteller eine bestimmte Person ist istdamit nicht klar Immer gleichzeitig Authentizitat des Schlussels prufen

            Dazu gibt es zwei Moglichkeiten

            1 Anarchie = Web of Trust (Beispiel PGP)

            2 Vertrauenswurdige dritte Instanz Certification Authority CA bzw ZDA (Zertifizierungs-diensteanbieter) Stellt ein Zertifikat aus das ist ein elektronisches Dokument welcheseine Identitat einem Schlussel zuordnet

            Zertifikat (Name Schlussel ) und Signatur

            Problem Im Zertifikat steht Name Schlussel usw und daran hangt eine Signatur Gegeben Nut-zer Alice mit Zertifikat daruber gibt es die CA1 die ihre Signatur zertifiziert CA1 hat selber einZertifikat mit einem Namen Schlussel usw und daran hangt wieder eine Signatur Das Problemverschiebt sich immer weiter nach oben Man bekommt eine Zertifikatshierarchie und benotigteinen aufgeblahten Riesenbaum mit einer Weltwurzel Im taglichen Leben haben sich 3-stufigeZertifikatshierarchien bewart Root signiert seine eigene Signatur Vertrauen in Authentizitat derNutzerschlussel ist fur alle Nutzer gleich Es bestimmt sich ausschlieszliglich durch die Authenti-zitat des Schlussels des Root CA Das Vertrauen in die Root CA verteilt sich auf die Nutzer

            603 X509

            X509 mittlerweile bei ISO RFC 3280 X509 Certificate and Certificate Revocation List (CRL)Profile Abschnitt 4

            Version X509v3 Version 1 enhalt keine ErweiterungenSerial Number In der Regel 20 Byte muss immer eindeutig sein

            107

            Signaturverfahren fur das Zertifikat muss am Anfang (im ersten Block) stehen damit das Has-hen schon begonnen werden kannHerausgeber Name(eindeutig) C=Country O=Organisation CN=Common Name SN=Surname

            Validity Gultigkeitszeitraum der Zeitraum indem die CA Gultigkeitsinformationen uber dasZertifikat bereitstellen willwirdmussInhaber Name (eindeutig im Bereich der CA) zur Person also stabile Daten SeriennummerVersicherungsnummer etcSchlusselinformationenErweiterungenDarunter die Signatur

            In RFC 3280 steht dass nach dem 31 Dezember 2003 alle Zertifikate UTF-8 kodiert seinmussen

            604 Erweiterungen

            Man kann bei Erweiterungen festlegen ob diese Critical oder nicht sind Critical ist sowas wieeine Vorschrift nicht Critical ist sowas wie eine Information Kritische Erweiterungen mussenimmer ausgewertet werden wenn ein Programm sie nicht versteht darf es das Zertifikat nichtverarbeiten

            To do neu

            Per default auf false ist auszligerdem optionales Argument Wenn nicht critical dann ist es nur eineInformation Also critical muss man lesen und verstehen nicht critical sollte man lesen wennman sie versteht sollte man sich daran halten

            To do neu ende

            Basic Constraints

            To do neu

            Sagt ob es Zertifizierungsinstanz ist oder eine Endnutzer Instanz ist und in welcher Ebene essich befindet

            To do Diagramm basteln

            108

            Ein interessantes Beispiel (goyacrt) findet man bei der Rechnerbetriebsgruppe

            To do neu-ende

            CA Siginalisiert ob es ein CA-Zertifikat ist (TRUE) oder nicht (FALSE) Dh ob das Zertifikatberechtigt ist weitere Unterzertifikate auszustellen

            To do neu

            Per default false es musste also nicht jedesmal CA FALSE angegeben werden

            To do neu-ende

            PATHLEN Beschrankt die Pfadlange Pathlen=0 heisst dass das Zertifikat zwar Nutzerzertifika-te ausstellen kann aber keine weiteren CA-Zertifikate Ist immer als Critical markiert

            Subject Key Identifier und Authority Key Identifier Nicht kritisch Beschreiben die ver-wendeten Schlussel uber Hash-Werte zum Beispiel SHA-1 uber den Schlussel

            Key Usage Kritisch (sollte kritisch sein zb bei GOYA nicht) Ist ein Bitstring der die Ver-wendung des Schlussels angibt Fur eine CA also zum Beispiel nur KeyCertSign NonRepu-diation ist eigentlich fur die Dokumentsignatur (content commitment) DigitalSignature ist furAuthentisierung oder allgemeine Signaturmechanismen Die beiden moglichst exklusiv setzen

            To do neu

            Nicht bei Endnutzerzertifikaten notig

            To do siehe rfc5280 - KeyUsage -HA lesen

            Merkmale

            (0) DigitaleSignatur zur Authentifizierung (hat keine Auswirkungen auf spatere Zeitraume)(werden zu dem aktuellen Zeitpunkt gepruft)

            (1) (ab X509v4) Inhaltsbindung[contentCommitment] (zb Nichtabstreitbarkeit ) (jetzt noch[nonRepudiation]) (werden zu dem Zeitpunkt zu dem sie erstellt worden sind gepruft)

            (0) und (1) sind Endnutzerinformationen

            nur ent-verschlusseln Schlussel zum verschlusseln von Zertifikaten geignet

            109

            keyCertSign==TRUE - wenn man nur Zertifikate damit signieren mochte (brauch man bei CAZertifikaten eigentlich sollte nur eines der Bits gesetzt sein) ansonsten sollte digitalSignaturegesetzt werden

            Key usage zB A0=10100000 (Erste und dritte gesetzt) oder zB 88=10001000 (erstes undfunftes gesetzt)

            authority information Nicht kritisch Feld in dem Daten des Herausgebers abgerufen werdenkonnen

            Benutzt das OCSP-Online Certificate Status Protocol (gibt eine URI an wo man die Informatio-nen erhalten kann - spater mehr)

            X509v3 Certificate Policies ASN1 Strucktur siehe rfc5280 S 33

            System von Regeln fur die Ausgabe von Zertifikaten sowie den Betrieb der ZertifizierungstelleNutzer kann sich uber die Hirarchie der CA informieren (wichtig fur den Vertrauensaufbau)

            CPS - Certificate Policy Statement und dann zwei moglichkeiten cPSuri (uri wo die Informationzu finden ist) oder userNotice (Freitext)

            Bsp httpnasacanasagovnasacphtml dort findet man eine CPS

            Wenn der Regelsatz dem CA Zertifikat zugeordnet ist (Bindung zB durch Root) ist es besserals wenn es nur dem EndNutzer Zertifikat zugordnet ist (Bindung nur durch die daruberliegendeCA)

            Authority Key Identifier Kurzinformationen mit der man einen Schlussel identifizieren kannFur Endnutzer ist der Authority Key Identifier ein Bezeichner mit dem das zugohrige CA-Zertifikat zu finden ist Kann enthalten

            KeyIdentifier - Schlussel ID

            GeneralNames - Herausgeber Seriennummer

            CertificateSerialNumber

            Subject Key Identifier - SKI Schlussel ID hilft bei der Unterscheidung sollte eine moglichsteindeutige Nummer sein da aber nicht genau festgelegt wird ist die SKI nicht fur Uberprufungengeeignet

            110

            Subject Alternative Name IP Adresse URI Email Adresse (hat das rsquoatrsquo Zeichen welchesin kein Datentyp passt weshalb sie hierher (oder in den Issuer Alt Name) gehort soll alsrfc8224Name gespeichert werden (da dieser nicht groszlig klein sensitiv ist))

            To do neu-ende

            605 Erzeugung

            To do neu

            Bei OpenSSL gibt es zwei moglichkeiten mit Perl Script

            perl ˜optopensslappsCApl -newca

            openssl x509 -text -nout -in cacertpem

            openssl req -text -nout -in careqpem

            Diese Requests folgen dem Standard PKCS 10 - rfc2986

            openssl ans1parse -in careqpem

            Attributes [0] - Contextabhangiges Tag (nur an diesem Ort gultig) Codiert als A0 denn Con-textabhangige tags fangen mit 10 an im Gegensatz zu Universaltags die mit 00 anfangen(Beispiel fur Contextabhangige Tags siehe auch bei AuhtorityKeyIdentifier)

            Im Request ist Set of Atritbute NICHT optional (aber kann leer sein)

            To do neu-ende

            Wie kommen wir eigentlich zu Zertifikaten Zertifikate kommen von einer CA also muss manzuerst ein CA-Zertifikat erstellen

            Request Ich mochte ein Zertifikat haben PKCS10RFC2986openssl req

            openssl req -new -x509 erzeugt gleich ein Zertifikat

            openssl req -new -newkey rsa1500 -days 40 -out userreq ein neuer Schlussel undein Request Der Request enthalt die Informationen des Antragsstellers den offentlichen Schlusselein Challenge-Passwort (von der CA festgelegt) und eine Signatur uber diese Daten

            111

            openssl x509 -req -CA -CAkey -out -days 40

            -in userreq -CAcreateserial -out userx509

            -extensions usr_cert -extfile opensslcnf wichtig um v3-Zertifikate zu erzeu-gen

            606 Gultigkeit

            Der rsquoGultigkeitszeitraumlsquo (Validity) im Zertifikat ist der Zeitraum uber den sich die ausstellendeInstanz verpflichtet etwas uber die Gultigkeit des Zertifikats auszusagen

            CRL Certificate Revocation List

            OCSP Online Certificate Status Protocol

            Sperrlistenformat auch in RFC 3280 Abschnitt 5 als X509-Variante festgelegt

            OCSP version 1 RFC 2560

            To do neu

            Man kann dass conf bearbeiten

            Ubungsaufgabe ein Zertifikatsrequest mit eigen Daten erstellen und zu zertifizieren

            To do einsortieren

            Die CA schmeiszligt eventuell Daten des Request raus

            To do neu-ende

            To do neu-20090624

            Sperrlisten Enthalten

            Version

            Signatur

            112

            Herausgeber

            LastNext Update

            Sperrlisten Nummer (sollte monoton wachsen)

            Liste der gesperten Zertifikate(jeder Eintrag enthalt ein Integer eine Zeit und evt CRLEntryExtension(CRLReason-Code siehe rfc5280 531))

            Bemerkungen

            Sperrlisten sind im DER-Format ( openssl -inform DER)

            (Erweiterungen enthalten immer OID Octet-String)

            Zu CRLEntryExtension CRLReason Code (6) (certificateHold-schwebend gesperrt) und (8)(removeFromCRL-kannwurde wieder entsperrt werden) sind besonders und sind eher nur furAuthosierung sinnvoll

            Sperrlisten nehmen in der Praxis erhebliche groszligen ein

            CRLEntryExtension wird von der Bundesnetzagentur nicht benutzt

            RFC5280 532 sperrdatum (revocation date) darf nicht vor dem Zeitraum der vorherigen CRLliegen sonst ist es in der vorherigen Liste Gultig (ansehen)

            Aufbau des Pfad zum Vertrauensanker (RFC 5280 S72) Das beschriebene Prufverfahren istnicht normativ vorgeschrieben es reicht wenn die Funktion gleich ist

            httpwwwbundesnetzagenturdemediaarchive1343pps

            Kettenmodel benutzt den Erstellungszeitpunkt (nicht Gewahrleistungs-Beginn) (Folie3)

            httpwwwbundesnetzagenturdeenid85f55115e236d80fc18329992037142d0FAQ

            Antwortss4_wphtml

            To do neu-ende

            To do 20090701-fehlt

            113

            61 Praktische Ausschlachtung von kryptografischen Algorithmen mitSMIME und PKCS7

            Root-Zertifikat erzeugenopenssl genrsa 1200 gt cakeypem

            openssl req -x509 -new -key cakeypem -config opensslcnf gt cacert (selbst-signiertes neues root Zertifikat mit eigenem Config Script)

            Root-Zertifikat anschauenopenssl x509 -in cacert -text -noout

            Nutzer der eigenen CA erstellenopenssl req -new -config opensslcnf -out usercert Erstellt mehrere Dateienauch privkeypem

            Zertifikat erstellenopenssl x509 -req -in userreq -CA cacert -CAkey cakeypem -CAcreateserial

            -out usercert -extfile opensslcnf -extensions usr_cert (Zertifikat fur usermit Extenstions Version 3 statt Version 1)

            Senden einer signierten Nachricht (Nachricht in Neutxt)openssl smime -sign -signer usercert -in Neutxt -inkey privkeypem

            -out neusmime -text

            Erzeugt Datei neusmime mit Nachricht und Signature -text erzeugt den Eintrag fur den Con-tent Type vor der Originalnachricht in neusmime

            Umwandeln der SMIME Nachricht in PKCS7 Nachrichtopenssl smime -pk7out -in neusmime -out neupk7

            Das gesamte (ohne Inhalt der Nachricht eigentlich nur die Signatur) SMIME Dokument wirdin eine PKCS7 Struktur eingebunden

            Anschauen mitopenssl asn1parse -i -in neupk7

            Zertifikate ausgeben mitopenssl smime pkcs7 -in neupk7 -print_certs -noout

            Zertifikate anschauen mitopenssl smime pkcs7 -in neupk7 -print_certs -noout -txt

            Verifizierenopenssl smime -verify -in neusmime -CAfile cacert

            Verschlusseln

            114

            openssl smime -encrypt -in Neutxt -out neusmime -text usercer

            Nachricht ohne Signatur verschlusselt

            Entschlusselnopenssl smime -decrypt -in neusmime -text -recip usercer

            -inkey privkeypem

            Fur die Einbindung in Browseropenssl pkcs12 -export -name Annie -inkey privkeypem

            -in usercert -out userp12

            Um auch das CA Zertifikat mit einzubindenopenssl pkcs12 -export -name Annie -inkey privkeypem

            -in usercert -out userp12 [-certfile cacert -CAfile cacert -chain]

            Private Schlussel auspacken openssl pkcs8

            62 PKCS

            PKCS Public Key Cryptography Standards

            1 RSA3 Diffie-Hellman5 Cryptography mit Passworten6 Zertifikate7 Cryptographic Message Syntax8 private Schlussel9 Attributtypen10 Zertifikatsrequest11 Cryptographic Token12 Personal Information Exchange13 Elliptische Kurven15 Chipkarten Token Formate

            621 PKCS7 15 November 93 RFC 3852

            To do neu-20090708

            CMS

            Email (SMIME)

            115

            XML Signaturen XMLDSIG XMLENC

            Dokument rarr signiertes Dokument

            openssl genpkey -algorithm rsa -pkeyopt rsa_keygen_bits300mdash openssl -chek -text -noout

            zu kleine Werte (iexcl256) fur den Schlussel werden nicht akzeptiert (Wert ist immer noch etwasklein) Aber die Ausgabe ist nicht ganz korrekt

            openssl genpkey -algorithm rsa -pkeyopt rsa_keygen_pubexp1

            ist leider moglich

            63 CMS(Cryptographic Message Syntax)

            rfc3852

            SignedData

            bull Version

            bull Hash Algorithmus

            bull gekapselter Inhalt

            bull Certifikat Liste

            bull Widerrufungsliste (Sperrinformationen)

            bull

            bull Signer Infos (Signaturen davon kann es mehrere geben elektronische Signatur nach demSignaturgesetz Signer Info enthalt selber noch einmal einen Signaturblock - der als Digi-tale Signatur aufgefasst werden kann)

            ndash Versionndash Idndash Attributesndash Algondash sig Valuendash

            bull Signer Id

            bull Signed Attributes (zB Zeit Ort Message Digest) Die Signatur dieses Blockes wird er-stellt indem der Hash Wert (nur des Blockes) signiert wird Wenn es signed Attributesgibt sind also auszligerdem Hash Wert des Dokuments und Inhaltstyp(Contenttype) im Si-gned Attributes enthalten und erst dann wird der Signed Attributes Block signiert Es wirdjeweils er Hash-Algorithmus verwendet der oben genannt wird

            116

            Auszligerdem Signing Certificate

            bull

            Frage ist wo wird der Wert Signiert der sagt welcher Hash-Algorithmus verwendet wird Wennnicht konnte man eventuell den Algorithmus austauschen

            Man konnte den Hash-Algorithmus als SignedAttribute einfugen

            To do neu-ende

            CMS (Cryptographic Message Syntax) Beschreibung des Formates mit dem man Krypto-nachrichten erstellen kann

            Kryptographische Nachricht Struktur vorne Bezeichner hinten Daten Daten = irgendwasspannend Welche Typen gibt es eigentlich

            Signed-data Content-Type Was jetzt kommt sind signierte Daten Liste der unterstuetzen Has-hfunktion dann gekapselter Inhalt dann eine Liste von Zertifikaten (optional) optionalSperrlisten dann Signaturbloecke (SignerInfo)

            SignedData = SEQUENCE

            Versionsnummer

            Liste der unterstutzten Hashfunktionen

            Ursprungliche Nachricht selbst

            Liste von Zertifikaten Optional

            Sperrlisten Optional

            Signer Infos

            SignedInfo = SEQUENCE

            Versionsnummer

            Signer Identifier (Wer der Signierer eigentlich gewesen sein soll)

            Hashfunktionen die bei der Signatur verwendet wird

            Signierte Attribute

            Verwendete Signaturalgorithmus

            Signaturwert

            Unsignierte Attribute

            SignerInfo = SEQUENCE

            Versionsnummer

            Signer Identifier (Wer der Signierer eigentlich gewesen sein soll)

            Bezeichner des Hashalgorithmus mit dem die endgultige Signatur erstellt wird

            Signierte Attribute Optional

            117

            Signatur Algorithmus

            Signature SignatureValue

            Unsigned Attributes Optional

            SignerIdentifier = SEQUENCE

            issuerAndSerialNumber

            subjectKeyIdentifier (Eindeutiger Hinweis wer der Aussteller ist)

            SignerInfo Signaturblock der eine Datenstruktur fuer eine Signatur bereitstellt Steht drin Ver-sionsnummer SignerIdentifier verwendeter Hash-Algorithmus dann signierte Attributeverwendeter Signaturalgorithmus Signaturwert unsignierte Attribute

            SignerIdentifier Aussteller und Seriennummer oder Schluesselidentifier (subjectKeyIdenti-fier)

            Signierte Attribute Sammlung von Attributen die signiert sind Was dabei sein sollte erstesAttribut Content-Type wenn die signierten Daten nicht nur Rohdaten sind sondern gekap-selte Daten eine s bestimmten Typs Ein weiteres nuetzliches Attribut Message-DigestDann Signing-Time

            Content-Type Object-Identifier der einen bestimmten Typ impliziert

            Message-Digest Hash der aus den Daten ausgerechnet wird Als Octet-String

            Signing-Time Zeit von der behauptet wird dass die Signatur zu dieser Zeit geleistet wurde

            Signatur Es werden die signierten Attribute signiert dort ist auch der Hash des Dokumentsals messageDigest enthalten Wenn keine signedAttributes existieren wird das Dokumentdirekt gehasht

            Weitere sinnvolle signierte Attribute

            Commitment-Type Was bedeutet die Signatur zum Beispiel virtuelle Poststelle Eingangs-stempel Auslieferung Einschreiben Urheberschaft gelesen Zeitstempel (spezielleSignatur eines authentischen Zeitservers) ist eine Information dass das Dokument vor-her existiert hat

            Signing Certificate Beschreibt mit welchem Schluessel zu welchem Zertifikat ist unterschrie-ben wordenwelches Zertifikat moechte der Signierer zur Ueberpruefung verwendet ha-ben Austausch des Zertifikats fuehrt zu anderer Urheberschaft ist ein realer AngriffVerhindert die Urheberschaft auszutauschen (rfc2634 S 46) Folge mit Zertifikats HashIssuerSerial(Herausgeber und Seriennummer) (leider ist da SHA1 als Algorithmus festge-legt)

            in rfc5035

            Folge mit Hash-Algorithmus (optional default ist aber SHA256) Zertifikat Hash IssuerSerial (Nun Hash als Octet String)

            Da der Wert des Hash Algorithmus optional ist ist diese Variante ruckwartskompatibel

            118

            Signing Location Ort an dem die Signatur geleistet wurde

            Weitere nuetzliche unsignierte Attribute

            Zeitstempel ist eine Information wann die Signatur existiert hat Hash uber die Signatur TimeServer davon Signatur

            not after Information fur die Signatur

            Countersignature Zweite Signatur (Gegenzeichnung) Signaturblock uber eine andere Signa-tur

            (Mitsignatur Bestatigung eines signierten Dokuments wichtiges Feld fur Mehrfachsigna-turen)

            Hashwert des signature Feldes (3 Hash Wert) nicht alle in einander gekappselt sonderansammlung von Signaturen

            Archiv Zeitstempel neuer Hash-Algorithmus signiert Dokument alle Signaturen alle Attri-bute (signiert unsigniert)

            Damit kann mann folgendes machen

            2001 2009 2010

            RS A512 S HA1 S HA256 S HA512

            Dok S ignatur t1 t2cc at1TTYY^^bb at2 at3

            Fur XML XML-DSIC XML-ENC

            7 Wichtige Neuerungen bei den Versionsanderungen

            bull Von 098 zu 099 Verbesserungen bei den Extensions von Certificate Revocation Lists

            bull Von 097h zu 098 UTF8-Support fur das ca-Kommando

            bull SHA1 ist nun default-Hash-Algorithmus statt MD5

            bull Patentierte Algorithmen RC5 und MD2 mussen beim Kompilieren extra angegeben wer-den

            bull Neue FIPS 180-2 Algorithmen SHA-224-256-384-512 wurden implementiert

            119

            bull Neuer Parameter -selfsign fur das ca-Kommando

            bull IPv6 Support bei den Zertifikatserweiterungen

            bull Ausweitung der Eliptischen Kurven Bibliothek

            8 OpenSSL hintergehen

            81 die eine Primzahl ganz klein erzeugen

            bull Offnen einer Datei in genrsa cryptorsarsa_genc

            bull Andern den Teil ldquo generate p and q rdquo so daszlig die eine Primzahl 10bit lang ist(bitsp=10 )

            bull Wir erzeugen einen neuen rsa key openssl genrsa -out rsaweakpem 2048und erstellen hierdurch eine Primzahl mit 10 bit die andere zufallig (also so in etwa2038bit)

            bull Wir schauen uns den key an openssl rsa -in rsaweakpem -text -nooutund sehen die eine Primzahl ist 35879 die andere hat 2046 bit Lange Das kann manlecker faktorisieren

            bull Offnen cryptobnbn_primeh die Zahl kommt durch den kleinen Primzahltest durchdieser geht nur bis ca 17000

            82 beide Primzahlen nah beieinander

            bull Und wieder in rsa_genc (Zeile 136 in der do-while-Schleife hinter degenerate)

            bull BN_copy(rsa-gtq rsa-gtp) wir setzen q gleich pBA_add_word(rsa-gtq 20) wir addieren 20 auf q

            for(i=1 BN_is_prime_ex(rsa-gtq 5 ctx NULL) i++)

            BN_add_word(rsa-gtq 2)

            wir erhoehen q bis zur naechsten Primzahl

            bull hierdurch erzeugen wir zwei Primzahlen die sich enorm ahnlich sind (wieder mit obigenKommandos) Der Angreifer kennt in diesem Fall den Exponenten damit ist das Verfahrenvollig unsicher

            83 Vorschrift des BSI

            01 le |log10 p minus log10q| also p gt10radic

            2 lowast qDas kann man aber mit q =10

            radic2 lowast p im Quellcode umgehen

            120

            84 Programmierung Zufallszahlenerzeugung und andere nette features

            Die ldquocallbackrdquo Funktion gibt den Fortschritt bei Suche nach p und q als Punkt (Fermat Primzah-lentest) und Plus (Miller-Rabin-Test) aus

            DatentypStruktur zum Speichern der auftretenden groszligen Zahlen Binarfeld BIGNUMp ist unsigned char

            p = BN_bn2hex((RSA )pub_rsa)-gtn) Zum Ausgeben eines BIGNUMs

            ((pub_rsa)-gtn)d[] einzelne Teile im Datenblock eines BIGNUMs editieren

            Zufallszahlen findet man in cryptorandrandh rand_libc randc

            Diese beiden Kombinationen vor entsprechenden Programmen i2d oder d2i intern to data datato internpub_rsa = d2i_RSAPublickey(NULL ampstr len) (lange von str) Transfor-miert Binardaten Zeichenkette in interne public Key Datenstruktur mit ASN1

            S(buf) gibt Speicherplatz frei uberschreibt ihn vorher noch einmal mit Zufallsbytes

            9 Zusammenfassung

            bull Symmetrische Verschlusselungsverfahren

            ndash DES

            64 Bit Blockchiffre

            16 Runden Feistelnetzwerk mit 48 Bit Rundenschlusseln

            56 Bit Schlussellange plus 8 Paritatsbits

            XOR Transformationsfunktion mit S-Boxenndash IDEA

            64 Bit Blockchiffre

            8 Runden Feistelnetzwerk mit je 6 middot 16 Bit Rundenschlusseln

            128 Bit Schlussellange

            XOR ADD modulo 216 MULT modulo 216 + 1ndash Blowfish

            64 Bit Blockchiffre

            16 Runden Feistelnetzwerk

            32-448 Bit Schlussellange

            XOR Transformationsfunktion mit XOR CONCAT und viel Schlusselmaterialndash AES

            121

            128 192 256 Bit Blockchiffre

            10 12 14 Runden Feistelnetzwerk

            128 192 256 Bit Schlussellange

            Substitution ShiftRow MixColumn KeyAddition

            ndash RC4

            Stromchiffre

            10 12 14 Runden Feistelnetzwerk

            variabele Schlussellange bis 2048 Bit

            ndash RC5

            wahlbare Blockchiffre (openssl 32 Bit)

            wahlbare Runden Feistelnetzwerk (openssl 12)

            wahlbare Schlussellange (openssl 128 Bit)

            ndash GOST

            64 Bit Blockchiffre

            32 Runden Feistelnetzwerk

            256 Bit Schlussellange

            ADD ROT 8 S-Boxen

            bull Asymmetrische Verschlusselungsverfahren

            ndash RSA (Verschlusseln und Signieren)

            ndash Diffie-Hellmann Schlusselaustausch

            ndash ElGamal Crypto-System (basierend auf DH)

            ndash Rucksackverschlusseln (gebrochen)

            ndash Merkle Puzzle (viele Nachrichten)

            ndash Rabin Verfahren

            Zur Prufung erster Teil mit OpenSSL spielen zweiter Teil Konzepte eine Woche vor derPrufung evt fragen was dran kommen wird Prufungstermine 20072005 oder 04102005oder nach Vereinbarung

            10 Mathematische Techniken

            101 Multiplikatives Inverses

            (nach wwwtzide˜hsLehreU9 mathD1pdf)

            122

            1011 Behauptung

            Seien a b isin Z zwei teilerfremde ganze Zahlen dh ggT (a b) = 1 Dann existiert ein aprime isin Z mitaprime middot a equiv 1 mod b

            1012 Beweis

            Betrachte die Menge ak mod b|k isin N k ge 1 Da ggT (a b) = 1 gilt folgt dass ggT (ak b) = 1fur alle k isin N mit k ge 1 Denn da a teilerfremd zu b ist so gilt dies auch fur alle Potenzenvon a Daher ist die betrachtete Menge eine Untermenge der endlichen Menge x mod b|x isinZ ggT (x b) = 1 und daher selbst endlich Also kann existiert k1 k2 mit ak1 equiv ak2 mod bNehmen wir an k1 lt k2 und setzen n = k2 minus k1 dann gilt ak1 middot an = ak2 equiv ak1 mod bDaher folgern wir an equiv 1 mod b d h anminus1 middot a equiv 1 mod b Also setzen wir aprime = anminus1 und dieBehauptung ist erfullt

            102 Kleiner Fermatscher Satz

            1021 Behauptung

            Aus der Wikipedia (unter GNU Free Documentation License)

            Der kleine fermatsche Satz kurz der kleine Fermat ist ein Lehrsatz in der Zahlentheorie Ermacht eine Aussage uber die Eigenschaften von Primzahlen und wurde aufgestellt im 17 Jahr-hundert von Pierre de Fermat Dieser Satz beschreibt eine allgemein gultige Kongruenz

            ap equiv a mod p

            wobei a eine ganze Zahl und p eine Primzahl ist (die weitere Symbolik wird im Artikel Kon-gruenz beschrieben) Falls a kein Vielfaches von p ist kann man das Resultat in die haufigbenutzte Form

            apminus1 equiv 1 mod p

            bringen

            1022 Beweis

            Der Beweis beruht auf der Tatsache dass wenn zwei Zahlen a und b zueinander inkongruent(modulo einer festen Zahl n) sind auch die beiden Produkte x middot a und x middot b inkongruent modulon sind fur x gt 0 und ggT (x n) = 1

            Denn

            123

            sei a b mod n n eine Primzahl a b naturliche Zahlen Angenommen

            a middot x equiv b middot x mod n

            fur eine naturliche Zahl x mit ggT (x n) = 1 Dann gibt es eine naturliche Zahl k so dass

            a middot x minus b middot x = k middot n

            x middot (a minus b) = k middot n

            x = n middot (k(a minus b))

            Da n eine Primzahl und x eine naturliche Zahl ist ist k(a minus b) entweder eine naturliche Zahlminus1n oder 1n Die letzten beiden Falle widersprechen der Annahme dass a b mod n dererste Fall widerspricht der Annahme dass ggT (x n) = 1 Damit ist die Annahme falsch und esgilt fur x so dass ggT (x n) = 1

            a middot x b middot x mod n

            Aus der Wikipedia (unter GNU Free Documentation License)

            Im folgenden betrachtet man zum einen die Menge A aller Reste mod p - also alle naturlichenZahlen kleiner als p und zum anderen die Menge B die diese Reste multipliziert mit a enthaltZwei beliebige Zahlen aus A sind zueinander inkongruent modulo p Aus dem oberen Satzfolgt dass damit auch zwei beliebige Zahlen aus B zueinander inkongruent sind Dadurchergibt sich dass das Produkt uber alle Zahlen aus A kongruent zum Produkt aller Zahlen aus Bist

            1 middot 2 middot 3 middot middot middot middot middot (p minus 1) equiv (1 middot a) middot (2 middot a) middot middot middot middot middot ((p minus 1) middot a) mod p

            alsoW equiv W middot apminus1 mod p

            wobei W das Produkt 1 middot2 middot3 middot middot(pminus1) ist Da es in Restklassenkorpern stets ein multiplikativesInverses gibt kann man diese W dividieren und man erhalt

            apminus1 equiv 1 mod p

            1023 Verallgemeinerung

            Man kann den kleinen fermatschen Satz zum Satz von Euler verallgemeinern Fur zwei teiler-fremde Zahlen n und a gilt

            aϕ(n) equiv 1 mod n

            wobei ϕ(n) die Eulersche Phi-Funktion bezeichnet Diese hat als Ergebnis die Anzahl der Zah-len zwischen 1 und nminus1 welche teilerfremd zu n sind Ist n eine Primzahl so ist ϕ(n) = nminus1 sodass man Fermats kleinen Satz als Spezialfall erhalt Mit Hilfe des kleinen fermatschen Satzesentwickelte Fermat den fermatschen Primzahltest

            124

            1024 Praktische Anwendung auf Primzahlen

            (p - a a lt p a 0)Wenn gilt apminus1 1 mod p ist dann kann p keine Primzahl sein (Umkehrung muss nicht

            gelten) Wenn man mit a beiweisen kann das p keine Primzahl sein kann dann nennen wir aKanditat (Es gibt aber sogenannte Carmichaelzahlen die kein Kandidat ist)

            To do nacharbeiten Carmichaelzahlen

            Wenn (p minus 1) gerade ist pminus12 = k eine Ganzzahl

            Ist a2k equiv 1 mod p(ak)2 equiv p(ak minus 1)(ak + 1) equiv 0 mod pAlso wenn p eine Primzahl ist dann ist entweder ak equiv 1 mod p oder ak equiv 1 mod pDaraus folgt wenn ak 1 mod p und ak minus1 mod p dann ist p keine PrimzahlSomit gilt auch wenn k gerade ist und a

            k2 1 und a

            k2 minus1 dann ist p keine Primzahl

            Betrachten p minus 1 = 2t middot r (r ungerade) Sei a lt p und p - aIn ar a2r a22middotr a2t middotr = apminus1 (Reste mod p)Wenn die Folge nicht mit 1 endet ist p keine Primzahl Wenn vor der ersten 1 in der Folge

            keine 1 steht ist p keine PrimzahlWir nennen a einen Zeugen wenn man mit a beweisen kann das p keine Primzahl istJede Zahl p die keine Primzahl ist hat mindestens 3

            4 aller Zahlen a (mit ggT(a p) = 1) alsZeugen (Jeder Kandidat ist ein Zeuge)

            Damit ergibt sich der Rabin-Miller-Test Wahle zufallig ein a lt p und teste ob a ein Zeugeist Mit hoher (beliebig genauer) Wahrscheinlichkeit ist p Primzahl

            Bei groszligen Zahlen werden die Zeugen mehr

            openssl genrsa -out keyrsa 800

            Generating RSA private key 800 bit long modulus

            +++++++

            +++++++

            e is 65537 (0x10001)

            Generiert den Schlussel und speichert in rsquokeyrsarsquo Punkte Bedeutet keine kleine PrimzahlRabin-Miller Test schlagt fehl Plus ist ein erfolgreicher Rabin Miller Test bei groszligeren Zahlenbrauch man weniger Tests da es mehr Zeugen gibt

            []

            103 Chinesischer Restklassensatz

            (nach wwwtzide˜hsLehreU9 mathD1pdf)

            125

            1031 Behauptung

            Seien m1m2 mr paarweise teilerfremde ganze Zahlen d h ggT (mim j) = 1 fur alle i j(i j isin 1 2 r) und sei M = m1 middotm2 middotmr Dann existiert fur jede Liste a1 ar mit 0 le ai lt

            mi fur 1 le i le r genau ein x isin Z mit 0 le x lt M welches effizient berechnet werden kann undfur das gilt

            x equiv a1 mod m1

            x equiv a2 mod m2

            x equiv ar mod mr

            Bemerkung Es ist leicht einzusehen dass jedes xprime isin Z mit xprime = x + k middot M fur ein k isin Z d hxprime equiv x mod M genau dasselbe Gleichungssystem lost wie x Der Beweis wird zeigen dass furein gegebenes x nur xprime von dieser Form dasselbe Gleichungssystem losen konnen

            1032 Beweis

            Zunachst beweisen wir die Existenz und setzen dazu Mi = Mmi daher gilt ggT (Mimi) = 1Aus diesem Grund existiert auch ein multiplikatives Inverses Ni isin Z mit Mi middot Ni equiv 1 mod mi

            (vgl multiplikative Inverse) Zu beachten ist jedoch dass fur alle j isin 1 r mit i j stetsMi middot Ni equiv 0 mod m j gilt Nun definieren wir x via

            x equivrsum

            i=1

            ai middot Mi middot Ni mod M

            Fur jedes i existiert ein v isin Z so dass x sich folgendermaszligen darstellen lasst

            x = Mi middot Ni middot ai + v middot mi

            Dies gilt da jedes M j mit j i mi als Faktor enthalt Offensich erfullt x also die obigen Glei-chungen x ist das einzige mit 0 le x lt M welches fur die gegebene Liste a1 a2 ar alleGleichungen lost denn falls xprime und xprimeprime zwei verschiedene Losungen sind so gilt xprime minus xprimeprime equiv 0mod mi fur alle i isin 1 r d h xprimeminus xprimeprime ist ein Vielfaches aller mi und damit auch von M da nachVoraussetzung ggT (mim j) = 1 fur alle i j isin 1 r mit i j erfullt ist Somit folgt xprime equiv xprimeprime

            mod M d h 0 le xprime xprimeprime lt M kann nicht auftreten und der Beweis ist abgeschlossen

            126

            104 Square and multiply

            Der folgende rekursive Algorithmus berechnet xn fur naturliche Zahlen x und n indem sukzes-sive der Exponent reduziert wird

            bull Falls n = 1 xn = x

            bull Sonst falls n gerade xn = (x2)n2

            bull Sonst xn = x middot (x2)(nminus1)2

            Damit kann xn in O(ln(n)) Rechenschritten (quadrieren und multiplizieren) berechnet werdenindem in jedem Schritt des Algorithmus der Exponent halbiert wird und hochstens vier Berech-nungen ausgefuhrt werden

            105 Montgomery Reduktion (Moduloberechnung ohne Division)

            Heute was ganz verrucktes Modulo-Multiplikation ohne Division

            Problem bei RSA und anderen Algorithmenm Modul gegeben und g Zahl gegeben und man rechnet aus ga mod mAufwand der Berechnung mit Square and Multiply Groszlige des Exponenten in Bits Multiplika-tionen + gleichviele ModulooperationenBerechnung von x middot y mod m = x middot y minus (x middot y div m) lowast mDivision aufwendig Daher Methode dies ohne Division bzw mit einer schmerzfreien Divisiondurch eine Zweierpotenz zu tun Dafur Kosten von Hin- und RucktransformationenHier Skizze 1xrarr X = x middot r mod myrarr Y = y middot r mod mX lowast Y = X middot Y middot rminus1 = x middot y middot r mod m

            Wir berechnen t0 equiv minusmminus1 mod r (Preprocessing)

            1 x minusrarr X = x middot r mod m

            2 y minusrarr Y = y middot r mod m

            3 X lowast Y = X middot Y middot rminus1 mod m= x middot r middot y middot r middot rminus1 = x middot y middot r mod m

            Zur Bestimmung von X lowast Y t1 = X middot Y echte Multiplikationt2 = t1 middot t0 mod r Multiplikation untent3 = (t1 + t2 middot m) div r Multiplikation obent3 = X lowast Y oder (t3 minus m) = X lowast Y

            127

            1 t3 ist durch r teilbar

            2 t3 equiv X middot Y middot rminus1 mod m

            3 0 le t3 le 2m

            Zu 1 t1 + t2 middot mequiv t1 + t1 middot t0 middot m mod requiv t1 + t1 middot m middot (minusm)minus1 mod requiv t1 minus t1 equiv 0 mod r

            Zu 2 (t1+t2middotm)r = t3 mod m

            (t1 middot t2 middot m) middot rminus1 mod mequiv t1 middot rminus1 + t2 middot rminus1 middot mequiv X middot Y middot rminus1 mod m

            Beispiel 5 lowast 3 =

            t1 = 15t2 = 15 middot 23 mod r = 45t3 = 15 + 45 middot 13 = 6

            Zu 3t1 le (m minus 1)2

            t2 middot m lt r middot mt1 + t2 middot m lt 2 middot r middot m

            t3 lt 2 middot m

            t3 equiv X middot Y middot rminus1 mod mx lowast r2 = X = x middot r mod mX lowast 1 = x mod m

            Beispiel m = 13 r = 100 t0 = 23

            r mod m r = 9 mod 13r2 = 3 mod 13

            Ziel 6 middot 5 mod 13

            6 lowast 3 = 25 lowast 3 = 6

            128

            2 lowast 6 =

            t1 =

            t2 =

            t3 = xx

            x lowast 1 =

            Wenn eine Division langer als 1 5 Multiplikationen dauert dann lohnt sich das Verfahren DerErfinder heisst ubrigens Peter L Montgomery (Montgomery Reduktion) wwwmiinformatikuni-frankfurtdeteachingws0001krypto algomontgomerypdf

            Montgomery-Multiplikation

            To do siehe Mathematischer Anhangzusammenfugen

            Die Reduktion modulo m erfordert eine Division aber Divisionen sind rsquoteuerrsquo

            Dies kann man aber wie folgt vereinfachen

            Um die Division zu vermeiden rsquotransformiertrsquo man die Zahlen

            Sei gesucht das Produkt x middot y mod m

            x minusrarr X y minusrarr Y x middot y minusrarr X lowast Y

            R = (zweierPotenz) gt m und die Division durch R muss einfach sein

            X = x middot R mod m

            X lowast Y = X middot Y middot Rminus1 mod m (wobei die modulo Reduktion nun nicht mehr jedes mal ausgefuhrtwerden muss sonder nur am Anfang und am Ende der rsquoTransformationrsquo)

            1 Berechne mprime = minusmminus1 mod R

            (minusmR) = 1 rArr XGCD mprime middot m = minus1 mod R

            2 t = X middot Y (echte Multiplikation)

            3 t1 = t middotmprime mod R (echte Multiplikation und oben abschneiden also eine leichtere moduloReduktion da R eine zweier Potenz ist) (dabei gilt t2 lt m2 + R middot m)

            4 t2 = t + t1 middot m (echte Multiplikation und eine Addition) (dabei gilt t3 lt(m+R)middotR

            R = 2m)

            5 t3 = t2divR (also rsquounten abschneidenrsquo)

            6 Wenn t3 gt m dann t3 = t3 minus m

            129

            Nun ist t3 = X lowast Y Dafur muss t3 lt m sein oder in Schritt 6 t3 lt 2m sein

            Wir mussten also prufen

            1 t3 lt m

            2 Division in 5 rsquogeht aufrsquo

            t2 ist durch r teilbar

            t2 mod R equiv (t + t1 middot m) equiv t + (t middot mprime) middot m mod R equiv t + t(minus1) mod R equiv 0 mod R

            3 t3 = X lowast Y

            t3 middot R mod m equiv t2R middot R mod m equiv t2 equiv t + t1 middot m equiv t mod m equiv X middot Y mod m

            Wir haben also den folgenden Aufwand

            1 rsquoTransformationrsquo

            2 rsquoRechnungrsquo

            3 Zuruck rsquotransformierenrsquo

            x lowast R2 = x middot R2 middot Rminus1 mod m = x middot R = X mod m

            X lowast 1 = X middot 1 middot Rminus1 equiv x middot R middot Rminus1 equiv x mod m

            Man benotigt also zwei zusatzliche Operationen zur transformation Dafur kommt die Operationrsquorsquo ohne Divisionen aus

            Beispiel m = 17

            R = 100

            7 middot 11 mod 17

            x lowast y mod mdarr darr

            X Y= =

            (x middot R) mod m lowast (y middot R) mod m

            m1 = minusmminus1 mod 100

            suche also ein m1 mit m1 middot 17 = minus1 mod 100

            m1 = 47

            130

            To do Bsp Magma Quelltext siehe Homepage

            Bem dazu Wenn R groszlig genug ist kann man die Subtraktion von m weglassen

            Mathematischer Hintergrund (Zm+ middot)simminusrarr (Zm+ lowast) Was ist das Einselement und das

            Inverse

            106 Nochwas

            vielleicht

            zur Prufung Zwei Teile (ein theoretischer ein praktischer) Ein openssl-Kommando das in derVL nicht behandelt wurde wird drankommen (zum Beispiel speed ca etc) Theoretischer Teil

            1 symmetrische Verfahren (was sind symmetrische Verfahren wodurch charakterisiert)

            2 Integritatsschutz (wie kann man Integritatsschutz gewahrleisten)

            3 asymmetrische verfahren (siehe 1)

            4 Signatur (was sind Signaturen wofur verwendet man sie was ist ˜konzept was ist sicherwas ist unsicher)

            5 Vertrauensstruktur (zum Beispiel PGP)

            6 Client-Server-Authentisierung (SSL-Protokoll Kerberos)

            7 Sicherheitsparameter (wo sind die welchen Einfluszlig auf die Sicherheit haben sie)

            8 X509 (elektronische Identitat)

            9 RFC-Security (3280 3279 3446 )

            Mathematische Verfahren

            1 Square and Multiply Double and Add

            2 Euklidischer Algorithmus

            3 RSA DH

            4 DSA

            5 AES

            6 das eine oder andere symmetrische Verfahren Strom-Blockchiffre

            7 Elliptische Kurven eher nicht reicht zu wissen dass man mit Addition in EK das gleicheerreichen kann wie mit Multiplikation im Restklassenkorper

            8 kleiner Fermat eher nicht

            131

            9 Montgomery-Multiplikation vielleicht auch nicht sollte aber bekannt sein

            Fur MD5- AES- etc Grundfunktionen reicht evt wissen wo man nachschauen muss

            Dann nachweisen dass man mit Openssl spielen kann

            1 Verschlusseln mit DES3DESBFAES

            2 Prufsummenberechnung

            3 Konfigurationsfile

            4 RSA-Verschlusselung

            5 098 ndash 097 (dynamisch)

            6 Zertifikat

            7 DSA-Verschlusselung

            8 Passworter (passwd) und Salt

            9 E-Mail-Nachricht erstellen und sichern (SMIME-Anwendung)

            Zum Punkt Ich mochte eine 1 haben was muss ich dafur tun Was haben sie ausserhalb derVorlesung schonmal gelesen Was fehlte ihnen an der Vorlesung was fanden sie doof

            132

            • 1 Einfuumlhrung
              • 11 Verschluumlsselung
              • 12 Beispiel rot13
              • 13 Block-Chiffre
              • 14 Strom-Chiffre
              • 15 Angriffstypen
                • 151 Differentielle Kryptoanalysis
                  • 16 Base64
                    • 2 OpenSSL
                    • 3 Symmetrische Verschluumlsselungsverfahren
                      • 31 Feistel-Chiffren
                      • 32 DES - Data Encryption Standard
                        • 321 Schluumlsselauswahl
                        • 322 Funktionsweise
                        • 323 Schwachstellen und Unsinnigkeiten
                        • 324 spezielle Optionen bei openssl
                        • 325 DESECB - Electronic Code Book
                        • 326 DESCBC - Cipher Block Chaining
                        • 327 DESOFB - Output Feed Back
                        • 328 DESCFB - Cipher Feed Back
                        • 329 CTR Mode CCM
                        • 3210 TEA-Algorithmus
                        • 3211 DES-X
                          • 33 IDEA International Data Encryption Algorithm
                            • 331 Schluumlsselauswahl
                            • 332 Funktionsweise
                            • 333 Pseudocode-multiplikation
                            • 334 Schwachstellen
                              • 34 Blowfish
                                • 341 Initialisierung
                                • 342 Verschluumlsselung
                                  • 35 AES Advanced Encryption Standard
                                    • 351 Wiederholung-Byteoperation
                                    • 352 Uumlberblick
                                    • 353 mathematische Grundlagen
                                      • 36 RC4 Rons Cipher 4
                                        • 361 Geschichte
                                        • 362 Beschreibung
                                        • 363 Der Pseudo-Zufalls-Algorithmus
                                        • 364 Der Schluumlsselerzeugungs-Algorithmus
                                        • 365 Implementation
                                        • 366 Sicherheit
                                        • 367 Fluhrer Mantin und Shamir Angriff
                                          • 37 RC5 Rons Cipher 5
                                            • 371 Verschluumlsselung
                                            • 372 Schluumlsselexpansion
                                              • 38 GOST 28147-89 Gosudarstvennyi Standard Soyuza SSR nicht in OpenSSL
                                              • 39 FazitWie koumlnnte bei einen Symmetrischen Algorithmus die Sicherheit erhoumlhen
                                                • 4 Asymmetrische Verschluumlsselungsverfahren
                                                  • 41 Einfuumlhrung
                                                    • 411 Beispiel
                                                      • 42 Geschichte
                                                      • 43 Einige Theoretische Grundlagen
                                                        • 431 Kleiner Fermat (oder kleiner Fermatscher Satz)
                                                        • 432 Euklidischer Algorithmus
                                                        • 433 Beispiel
                                                          • 44 RSA Rivest Shamir Adleman
                                                            • 441 Funktionsweise des RSA-Verfahrens
                                                            • 442 Beweis der Funktionsweise
                                                              • 45 Schwaumlchen von RSA
                                                              • 46 Fuktionen in OpenSSL
                                                                • 461 genrsa
                                                                • 462 rsa
                                                                • 463 rsautl
                                                                • 464 PKCS
                                                                • 465 OAEP - Optimal Asymmetric Encryption Padding
                                                                • 466 Wie erkennt man an Ciphertexten den Verschluumlsselungsalgorithmus- DER ASN1
                                                                • 467 Umgehen mit den Schluumlsselkomponenten
                                                                  • 47 Miller-Rabin Test
                                                                  • 48 Diffie-Hellman-Schluumlsselaustausch
                                                                  • 49 ElGamal-Cryptosystem
                                                                  • 410 Wiederholung DH
                                                                    • 4101 Beispiel
                                                                      • 411 was anderes
                                                                      • 412 Elliptische Kurven
                                                                      • 413 Elliptische Kurven Nachtrag
                                                                      • 414 Rucksack-Verschluumlsseln
                                                                        • 4141 Beispiel
                                                                          • 415 Merkle Puzzle
                                                                          • 416 Rabin-Verfahren und Wurzelziehen
                                                                            • 4161 Schluumlsselgenerierung
                                                                            • 4162 Kongruenzbedingung
                                                                            • 4163 Verschluumlsselung
                                                                            • 4164 Entschluumlsselung
                                                                              • 417 Angriffe auf asymmetrische Verschluumlsselungsverfahren
                                                                                • 4171 1 Angriff Common modulus attack
                                                                                • 4172 2 Angriff kleiner geheimer Exponent d
                                                                                • 4173 3 Angriff Faktorisieren
                                                                                • 4174 Echt schlechte RSA-Schluumlssel
                                                                                • 4175 Schnelles Faktorisieren bei Fehler im System
                                                                                • 4176 Angriff mit gewaumlhltem Chiffretext
                                                                                    • 5 Signaturmechanismen
                                                                                      • 51 Integritaumltsschutz und Hashfunktionen
                                                                                        • 511 Schluumlssellose Hashfunktion (Pruumlfsummen ohne Schluumlssel)
                                                                                        • 512 Demonstration Faumllschung
                                                                                          • 52 Unterschied MD5 und SHA
                                                                                          • 53 Secure Hash Standard SHA-2
                                                                                            • 531 Problem bei MD5 und SHA-0
                                                                                            • 532 MACs (Message Authentication Codes) (Pruumlfsummen mit Schluumlsseln)
                                                                                              • 54 Whirlpool
                                                                                              • 55 Zusammenfassung
                                                                                              • 56 Digitale Signaturen
                                                                                                • 561 RSA
                                                                                                • 562 Eigenschaften eines asymmetrischen Verschluumlsselungsverfahren
                                                                                                • 563 RSASSA-PSS-Padding
                                                                                                • 564 DSA
                                                                                                • 565 ECDSA - DSA mit Elliptischen Kurven
                                                                                                  • 57 Widerrufen von Zertifikaten
                                                                                                  • 58 Was es noch so gibt
                                                                                                    • 581 blinde Signaturen
                                                                                                    • 582 anonyme Signaturen
                                                                                                        • 6 Zertifikate
                                                                                                          • 603 X509
                                                                                                            • 604 Erweiterungen
                                                                                                            • 605 Erzeugung
                                                                                                            • 606 Guumlltigkeit
                                                                                                              • 61 Praktische Ausschlachtung von kryptografischen Algorithmen mit SMIME und PKCS7
                                                                                                              • 62 PKCS
                                                                                                                • 621 PKCS7 15 November 93 RFC 3852
                                                                                                                  • 63 CMS(Cryptographic Message Syntax)
                                                                                                                    • 7 Wichtige Neuerungen bei den Versionsaumlnderungen
                                                                                                                    • 8 OpenSSL hintergehen
                                                                                                                      • 81 die eine Primzahl ganz klein erzeugen
                                                                                                                      • 82 beide Primzahlen nah beieinander
                                                                                                                      • 83 Vorschrift des BSI
                                                                                                                      • 84 Programmierung Zufallszahlenerzeugung und andere nette features
                                                                                                                        • 9 Zusammenfassung
                                                                                                                        • 10 Mathematische Techniken
                                                                                                                          • 101 Multiplikatives Inverses
                                                                                                                            • 1011 Behauptung
                                                                                                                            • 1012 Beweis
                                                                                                                              • 102 Kleiner Fermatscher Satz
                                                                                                                                • 1021 Behauptung
                                                                                                                                • 1022 Beweis
                                                                                                                                • 1023 Verallgemeinerung
                                                                                                                                • 1024 Praktische Anwendung auf Primzahlen
                                                                                                                                  • 103 Chinesischer Restklassensatz
                                                                                                                                    • 1031 Behauptung
                                                                                                                                    • 1032 Beweis
                                                                                                                                      • 104 Square and multiply
                                                                                                                                      • 105 Montgomery Reduktion (Moduloberechnung ohne Division)
                                                                                                                                      • 106 Nochwas

              Variante der Betrachtung kprime = 26 minus k rArr D(c kprime) = E(c kprime)Verschlusseln = Entschlusseln = Vorteil nur ein Algorithmus

              Berechnungk rarr kprime (vernunftig im allgemeinen Sinne)E middot D = IdC

              D middot E = IdN

              Man unterscheidet bei Verschlusselungsverfahren

              symmetrisch k hArr kprime kennt man einen Schlussel kennt man beide

              asymmetrisch k rArr kprime oder k lArr kprime aus dem einen Schlussel kann man denanderen nicht erfahren

              13 Block-Chiffre

              Ausdehnung der Verschlusselung von Alphabet auf Zeichenketten mi Die Originalnachrichtwird in Blocke zerlegt die gleich verschlusselt werden Zum Beispiel

              m = (m1m2m3 )

              k = (k1 k2 k3 )

              ci = mi oplus ki

              Aus der Wikipedia (unter GNU Free Documentation License)

              Symmetrische Verschlusselungsalgorithmen sind oft Blockverschlusselungsalgorithmen (auchBlockchiffre) Bevor sie Daten verschlusseln werden diese zunachst in Blocke unterteilt de-ren Groszlige durch den Algorithmus vorgegeben ist Die Verschlusselungsroutinen setzen jedochganze Blocke voraus somit muss meistens der letzte Block mit Zufallsdaten aufgefullt werden(bei einer Blockgroszlige von 128 Bit werden die verschlusselten Daten somit 0 bis 127 Bit groszligerals der Klartext)Die Blocke werden anschlieszligend nacheinander verschlusselt Dabei ist es durchaus ublich dassdas Ergebnis der Verschlusselung eines Blocks bei der Verschlusselung des nachsten Blocksals Eingangswert mitverwendet wirdWichtige Parameter einer Blockchiffre sind somit die Blocklange (auch Blockgroszlige) und dieSchlussellange

              7

              14 Strom-Chiffre

              Aus der Wikipedia (unter GNU Free Documentation License)

              Eine Strom-Chiffre ver- bzw entschlusselt Nachrichten Bit fur Bit bzw Zeichen fur ZeichenDies steht im Gegensatz zu Block-Chiffren wo Nachrichten immer in gleich groszligen Blockenverarbeitet werden

              Strom-Chiffren sind symmetrische Verschlusselungsalgorithmen die sehr schnell arbei-ten

              Zur Generierung eines Geheimtextes wird zunachst ein Schlusselstrom erzeugt DieserSchlusselstrom ist eine Folge von Zeichen die nur mit Kenntnis des geheimen Schlussels er-zeugt werden kann (in der Regel eine Pseudozufallsfolge) Danach wird jedes Zeichen desSchlusselstroms mit einem Zeichen des Klartextes verknupft Die Verknupfungsoperation istXOR Um Geheimtexte wieder zu entschlusseln wird der Geheimtext mit dem Schlusselstromverknupft

              Beispiele fur Strom-Chiffren sind die XOR-Verschlusselung oder die Entwicklung vonRonald L Rivest namens RC4

              15 Angriffstypen

              m Nachrichtc verschlusselte Nachrichtk Schlussel

              Kommunikation zwischen Alice und Bob mit Angreifer Eve Vorraussetzung Eve kennt dasVerfahren

              1 Chiffre ist bekannt(ciphertext only Chiffre allein Angriff)m k gesucht

              2 (mi ci)-Paare sind bekannt ci = E(kmi)(known plain text bekannter Klartext Angriff)gesucht k und weitere mi

              3 wahlbarer Klartext chosen plaintext(zB Eve hat Encoder in die Hande bekommen)

              4 wahlbarer Chiffretext chosen ciphertext(zB Eve hat Decoder in die Hande bekommen)

              Generelle Schutzmechanismen zum sicherer machen

              8

              1 Klartextbits breit auf Chiffre verteilen und Schlusselbits uberall einbringen um die Si-cherheit zu erhohen bzw einen anderen Algorithmus verwenden um dies zu erreichen

              2 Algorithmus skalieren Lange des Schlussels mehr Runden

              3 Schwachen zusatzlichen Schutz bietet doppeltes verschlusseln zum BeispielAlgorithmus hat 64-Bit Sicherheit (Brute Force Angriff Aufwand von 264) doppelt ver-schlusselt hat er 65-Bit Sicherheit wegen

              rdquomeet in the middle Angriffldquo Ist known plain text attack m ist der Klartext k der Schlusselfur den ersten Algorithmus n der daraus resultierende ldquoZwischentextrdquo l der Schlussel furden zweiten Algorithmus und c die endgultige verschlusselte Nachricht Der Angreiferinist ein m und das dazu gehorige c bekannt Sie erzeugt sich nun alle Werte die k an-nehmen kann und alle Werte die l annehmen kann und berechnet zu jedem ki sowie zujedem li ein ni als E(kim) bzw D(li c) Damit muss sie 2 lowast 264 Paare von Schlusselnund ldquoZwischentextenrdquo erzeugen und speichern In der Menge der ni gibt es nun (da beideVerschlusselungen eindeutig sind) genau zwei - eines als Entschlusselung von c eines alsVerschlusselung von m - die ubereinstimmen Deren Schlussel sind diejenigen die auchbei der Erzeugung von c verwendet wurden Das Auffinden dieses Paares kann durch ge-schickte Speicherung der ni ki und li zum Beispiel in einer Hashtabelle in logarithmischerZeit bewerkstelligt werdenDaher Sicherheit des Algorithmus ist mindestens so stark wie jeder einzelne Algorithmusaber moglicherweise nicht viel besser

              4 Dreifach verschlusseln und Kombination von AlgorithmenDer Meet-in-the-middle attack schlagt hier fehl da der Speicher- und Rechenaufwandnun quadratisch mit dem Werteraum der Schlussel wachst Bei der Verwendung einesschwachen Algorithmus der anderweitig gebrochen werden kann wird die Kombinationjedoch wieder anfallig fur meet-in-the-middle

              5 Block-Chiffre + Strom-Chiffre kombinierenStrom-Chiffre sehr langer Schlussel c = p oplus k k zufallig gewahlt (moglichst echter phy-sikalischer Zufall) zwei Folgen CK rarr in Block-Chiffrerarr Blockweise C2 = E(S 1K)C1 = E(S 2C)Eine Strom-Chiffre und zwei Block-Chiffren Brechen dieser Kombination = Aufwandaddiert sich aber doppelte Ausgabelange

              151 Differentielle Kryptoanalysis

              man wahle Klartexte P1 P2 mit ganz bestimmten Unterschied P1 oplus P2 = D Bei der Ver-schlusselung ergibt sich dann fur die Chiffretexte C1C2 mit bestimmten Dprime = C1 oplus C2 das ineinen bestimmetn Zusammenhang zu D steht

              Bleiben die Schlussel immer gleich so kann man sich langsam mit D1 Dn an den Klartextranprobieren ()

              9

              16 Base64

              Aus der Wikipedia (unter GNU Free Documentation License)

              Base64 [] beschreibt ein Verfahren zur Kodierung von 8-Bit-Binardaten (z B ausfuhrbareProgramme ZIP-Dateien) in eine Zeichenfolge die nur aus wenigen Codepage-unabhangigenASCII-Zeichen besteht Im Zusammenhang mit OpenPGP wird noch eine Prufsumme (CRC-24) angehangt und es als Radix-64 bezeichnet

              Es findet im Internet-Standard MIME (Multipurpose Internet Mail Extensions) Anwen-dung und wird damit hauptsachlich zum Versenden von E-Mail-Anhangen verwendet Notigist dies um den problemlosen Transport von beliebigen Binardaten zu gewahrleisten da SMTPin seiner ursprunglichen Fassung nur fur den Versand von 7-Bit ASCII-Zeichen ausgelegt war

              Zur Kodierung werden die Zeichen A-Z a-z 0-9 + und verwendet sowie = am EndeDa diese Zeichen auch in EBCDIC vorkommen (wenn auch an anderen Code-Positionen) istdamit auch ein Datenaustausch zwischen nicht-ASCII-Plattformen moglich

              Zur Kodierung werden jeweils drei Byte des Bytestroms (=24 bit) in vier 6-bit-Blockeaufgeteilt Jeder dieser 6-bit-Blocke bildet eine Zahl zwischen 0 und 63 Diese Zahlen werdenan Hand der nachfolgenden Umsetzungstabelle in ldquodruckbare ASCII-Zeichenrdquo umgewandeltund ausgegeben Nach jeweils 76 ausgegebenen Zeichen wird spatestens ein Zeilenumbrucheingefugt welcher jedoch ansonsten fur die Kodierung nicht von Belang ist

              Falls die Gesamtanzahl der Eingabebytes nicht durch drei teilbar ist wird der zu kodieren-de Text am Ende mit Fullbytes aufgefullt Um dem Dekodierer mitzuteilen wie viele Fullbytesangefugt wurden werden die 6-Bit-Blocke die vollstandig aus Fullbytes entstanden sind mitrsquo=rsquo kodiert Somit konnen am Ende einer Base64-kodierten Datei 0 1 oder 2 rsquo=rsquo-Zeichenauftreten

              Die angesprochene Transitionstabelle ist eine alphabetisch bzw numerisch aufsteigende Anord-nung zuerst der Groszligbuchstaben dann der Kleinbuchstaben schlieszliglich der Ziffern und am Endeder beiden Zeichen rsquo+rsquo und rsquorsquo in dieser Reihenfolge

              2 OpenSSL

              Optionen fur openssl ciphername oder openssl enc -ciphername

              OPTIONS

              -in filename

              the input filename standard input by default

              -out filename

              the output filename standard output by default

              10

              -pass arg

              the password source

              -salt

              use a salt in the key derivation routines

              -nosalt

              donrsquot use a salt in the key derivation routines

              -e

              encrypt the input data this is the default

              -d

              decrypt the input data

              -a

              base64 process the data This means that if encryption is

              taking place the data is base64 encoded after encryption

              If decryption is set then the input data is base64 decoded

              before being decrypted

              -A

              if the -a option is set then base64 process the data on

              one line

              -k password

              the password to derive the key from This is for

              compatibility with previous versions of OpenSSL Superseded

              by the -pass argument

              -kfile filename

              read the password to derive the key from the first line

              of filename This is for compatibility with previous

              versions of OpenSSL Superseded by the -pass argument

              -S salt

              the actual salt to use this must be represented as a

              string comprised only of hex digits

              -K key

              the actual key to use this must be represented as a string

              comprised only of hex digits If only the key is specified

              the IV must additionally specified using the -iv option

              11

              When both a key and a password are specified the key given

              with the -K option will be used and the IV generated from

              the password will be taken It probably does not make much

              sense to specify both key and password

              -iv IV

              the actual IV to use this must be represented as a string

              comprised only of hex digits When only the key is specified

              using the -K option the IV must explicitly be defined When

              a password is being specified using one of the other options

              the IV is generated from this password

              -p

              print out the key and IV used

              -P

              print out the key and IV used then immediately exit donrsquot

              do any encryption or decryption

              -bufsize number

              set the buffer size for IO

              -nopad

              disable standard block padding

              -debug

              3 Symmetrische Verschlusselungsverfahren

              31 Feistel-Chiffren

              Aus der Wikipedia (unter GNU Free Documentation License)

              Feistel-Chiffre (auch als Feistelnetzwerk bezeichnet) ist eine Block-Chiffre Ein Mitarbeitervon IBM Horst Feistel gilt als der Erfinder dieser Chiffre Er arbeitete mit anderen am sogProjekt rdquoLuciferldquo dessen Ziel es war eine effiziente Verschlusselungstechnologie zu entwi-ckeln Die Feistel-Chiffre war spater dann die Grundlage fur den DES-Algorithmus

              Viele moderne symmetrische Verschlusselungsalgorithmen basieren auf Feistelnetzwer-ken Dies ruhrt ua auch daher dass die Struktur von sehr vielen Kryptografen analysiert undfur gut befunden wurde

              12

              Wie es der Name rdquoBlock-Chiffreldquo schon nahe legt wird der Klartext zuerst in einzelneBlocke zerlegt Die Groszlige dieser Blocke kann frei gewahlt werden ublich sind oftmals Vielfa-che von 64 Bit

              Jeder dieser Blocke wird danach in zwei gleichgroszlige Halften (L0 und R0) geteilt und inmehreren Runden mit verschiedenen Schlusseln verschlusselt Nach den Runden werden dieHalften wieder zusammen gesetzt

              Innerhalb der i-ten Runde (i ist die Nummer der aktuellen Runde und reicht von 1 bis n)wird folgende Formel angewendet

              Li = Riminus1

              Ri = Liminus1 oplus f (Riminus1Ki)

              Dabei bildet f die sog Runden- oder Transformationsfunktion und Ki ist der jeweilige Runden-schlussel Der verschlusselte Text am Ende der Runden ist die Zusammenfuhrung von (LnRn)

              Feistelnetzwerke ermoglichen eine Entschlusselung ohne dass die Umkehrfunktion von fbenotigt wird Will man einen Geheimtext dechiffrieren wendet man die obige Formel leichtmodifiziert an

              Riminus1 = Li

              Liminus1 = Ri oplus f (Riminus1Ki)

              13

              (Quelle httpenwikipediaorgwikiImageFeistelpng)

              32 DES - Data Encryption Standard

              DES ist eine 64 Bit Block-Chiffre mit einer festgelegten Schlussellange von 56 Bit Die Funk-tionsweise entspricht einem 16-Runden Feistel-Netzwerk DES ist der erste Verschlusselungs-Algorithmus der weite Verbreitung fand und dessen Spezifikation offentlich zuganglich ist Erwurde in den 70er Jahren entwickelt und ist im amerikanischen Standard FIPS 46-2 beschrieben

              14

              321 Schlusselauswahl

              Zunachst steht nominal ein 64-Bit Schlussel zur Verfugung Von diesem ist jedoch je ein Bit proByte als Paritatsbit deklariert so dass 56 Bit effektives Schlusselmaterial ubrigbleiben Diese 56Bit werden in 2 mal 28 Bit aufgeteilt die in jeder der 16 Runden um 1 oder 2 Bit rotiert werdeninsgesamt um 28 Bit so dass am Ende wieder das Original vorliegt Aus der Konkatenation derbeiden Halften wird in jeder Runde ein 48-Bit Rundenschlussel ausgewahlt

              (Quelle httpenwikipediaorgwikiImageDES-key-schedulepng)

              15

              322 Funktionsweise

              Die so gewonnenen Rundenschlussel ki werden fur die Runden der Feistelchiffre genutzt E(k1 k2 k16m) =

              cE(k16 k15 k1 c) = mD(k1 k2 k16 c) = E(k16 k15 k1 c) = mJeder 64 Bit Eingabe-Block wird in zwei 32 Bit Blocke (L und R) aufgeteilt und weiterverarbei-tet L und R werden in jeder Runde durch eine festgelegte Permutation E auf 48 Bit ausgedehntanschlieszligend mit dem Rundenschlussel verknupft mittels einer weiteren rundenspezifischenPermutation S wieder auf 32 Bit komprimiert und dann schlieszliglich noch einer weiteren festge-legten Permutation P unterzogenLi = Riminus1Ri = Liminus1 oplus f (Riminus1Ki) wobei f (Riminus1Ki) = P(S (E(Riminus1) oplus Ki))

              rechts Feistelstruktur (Quelle httpenwikipediaorgwikiImageDES-main-networkpng)

              links F Funktion (Quelle httpenwikipediaorgwikiImageDES-f-functionpng)

              16

              (Quelle httpdewikipediaorgwikiBildDES_resizepng)

              323 Schwachstellen und Unsinnigkeiten

              bull Die Anfangliche Permutation der Klartexteingabe sollte Softwareimplementation erschwe-ren Per Hardware ist diese sehr einfach universell verwendbare Rechner hatten in den70er Jahren jedoch noch Probleme mit so etwas

              bull Das Paritatsbit ist eine Schwachstelle da es - soweit es gesetzt ist - ein Durchmustern desSpeichers nach dem Schlussel erlaubt Gesucht wird dann nach dem relativ ungewohn-lichen Auftreten von 8 nahe bei einander liegenden Byte bei denen je das letzte Bit dieParitat angibt

              17

              bull Mit heutigen Rechnern ist es moglich einen 56-Bit Schlussel mittels brute force zu knackenDie Lange des Schlussels ist bei DES aber auf diesen Wert festgelegt

              bull Es wird vermutet dass die ldquomagischenrdquo S-Permutationen uber deren Qualitat nichts be-wiesen ist eine Hintertur darstellen da die NSA hierbei ihre Finger im Spiel hatte Eskonnte jedoch nie bewiesen werden

              324 spezielle Optionen bei openssl

              bull Option -nopad Schaltet Auffullung der letzten Bits zu Block von 64 Bits aus Auch wenndie Nachricht genau in 64 Bit Blocken einteilbar ist wird ein 64 Bit Padding Block an-gehangtDer Block besteht aus x mal der Zahl x So lasst er sich beim Entschlusseln wieder entfer-nen

              bull Option -nosalt Schaltet die Voranstellung des salt-Werts ausDer salt-Wert verlangert die Nachricht um insgesamt 16 Bytes Salted__ gefolgt von 8Bytes salt-WertAus Passwort und salt-Wert wird der Key fur die eigentliche Verschlusselung erzeugt Da-mit wird verhindert dass Schlussel wegen Mehrfachverwendung von Passwortern leich-ter zu brechen sind Gleiche Passworter beim Aufruf der Verschlusselung mit OpenSSLfuhren durch den zufalligen salt-Wert zu verschiedenen Keys bei der Verschlusselung

              bull Neben des gibt es auch des-ede und des-ede3 Diese bieten einen gewissen Schutzgegen Bruteforce-AngriffeTDES (Triple DES) DES3 DES-EDE (Encrypt Decrypt Encrypt) mit effektiv 168 Bit

              E3DES(k1 k2 k3m) = EDES(k3DDES(k2 EDES(k1m)))

              In OpenSSL arbeitet des-ede mit zwei Schlusseln

              E(K1)D(K2) E(K1)

              Um in OpenSSL 3 Schlussel angeben zu konnen muss man des-ede3 verwenden Ver-wendet man bei des-ede zweimal oder bei des-ede3 dreimal den selben Schlusselerhalt man eine einfache DES-Verschlusselung So kann man Abwartskompatibilitat er-reichen

              bull In OpenSSL konnen DES Verschlusselungen mit folgenden Befehlen aufgerufen werden

              ndash -desndash -des-cbcndash -des-cfbndash -des-ecbndash -des-edendash -des-ede-cbc

              18

              ndash -des-ede-cfbndash -des-ede-ofbndash -des-ede3ndash -des-ede3-cbcndash -des-ede3-cfbndash -des-ede3-ofbndash -des-ofbndash -des3ndash -desxndash -desx-cbc

              OpenSSL des-ecb -salt fur den Schlusseleintrag aus Passphrasepassphrase = 12345prime +prime S alt minusWert rarr K

              12345srarr

              264 Moglichkeiten

              Damit man keine Tabelle generieren kann die aus den schwachen Schlussel besteht denn fur12345 gibt es 264 Moglichkeiten aufgrund des salts

              (PC12345)(PC1234)

              P- (Klartext) bekanntS- (Saltwert) bekanntC- (Chiffretext) unbekanntwelcher Schlussel wurde verwendet

              112123

              1234

              rarr K

              s1 s2 s3c1 c1 c1c12 c12 c12c123 c123 c123c1234 c1234 c1234

              Dazu kommt aber spater noch mehr

              19

              325 DESECB - Electronic Code Book

              Die Eingabe wird in Blocke aufgeteilt und jeder Block fur sich verschlusselt Dieses Verfahrenist potentiell unsicher weil in der Abfolge der Blocke eine Struktur enthalten ist die der Algo-rithmus nicht verbirgt Ein Fehler beim Ver- oder Entschlusseln eines Blockes fuhrt allerdingsauch nur zu einem einzigen verlorenen Block

              To do Initialisierungsvektor

              (Quelle httpenwikipediaorgwikiImageEcb_encryptionpng)

              (Quelle httpenwikipediaorgwikiImageEcb_decryptionpng)

              BemReicht fur einen Block dann wird auch kein Initialisierungsvektor benotigt

              20

              Man kann fur den Initialisierungsvektor auch einen vorher vereinbarten Wert (zB Unix Sekun-den) wahlen

              Aus der Wikipedia (unter GNU Free Documentation License)

              Die 64-bit Klartextblocke werden nacheinander und getrennt voneinander kontextfrei ver-schlusselt Dies ist die einfachste Anwendungsmoglichkeit eines Block-Chiffre

              326 DESCBC - Cipher Block Chaining

              Aus der Wikipedia (unter GNU Free Documentation License)

              Vor der Verschlusselung eines Klartextblockes wird der bereits verschlusselte vorhergehendeBlock hinzuaddiert Auf den ersten Klartextblock der ja keinen Vorganger besitzt wird stattdessen ein Initialisierungsvektor der geheim gehalten werden muss addiert Dadurch entstehteine Verkettung (engl chain) der Blocke Trotz dieser Verkettung ist die CBC-Verschlusselung

              rdquoselbstkorrigierendldquo FehlerManipulationen in einem Block wirken sich bei der Entschlusse-lung nur auf den fehlerhaftenmanipulierten und den nachsten Block ausMan kann relativ einfach beliebige Blocke des Geheimtextes einzeln entschlusseln da zusatz-lich zum Schlussel nur der vorhergehende (verschlusselte) Block benotigt wird

              Fehler im c breiten sich nicht aus beim Entschlusseln Ein Initialisierungsvektor IV fur erstenBlock wird benotigt

              bull Klartext oplus Cipher und dann Encryption

              bull Vorteil Muster im Klartext werden zerstort

              bull Nachteil Fehler im Ciphertext eines Blocks verandern Bits an genau der Stelle im folgen-den Block (aber nur in diesem spatere Blocke sind nicht betroffen) so kann gezielt eineStelle im Block angegriffen werden (siehe Skizze)

              To do Skizze zur Fehlerausbreitung erlautern

              21

              m1 mlowast2 mlowast3

              IV oplus

              oplus

              oplus

              oplus

              DES

              DES

              DES

              DES

              c1

              DDc2

              DDc3

              DDc4

              EE

              Vergleich DESECB und DESCBC

              Zum Vergleich bietet es sich an ein Bild (Abbildung 1) mit DES im ECB- und im CBC-Moduszu verschlusseln Deutlich zu erkennen ist dass die Struktur im ECB-Modus (Abbildung 2)erhalten bleibt wahrend sie bei CBC (Abbildung 3) vollkommen zerstort wird

              Abbildung 1 Bild im Klartext (24 Bit RGB mit 182 times 183 Pixeln)

              Abbildung 2 Bild aus Abbildung 1 ECB-verschlusselt

              22

              Abbildung 3 Bild aus Abbildung 1 CBC-verschlusselt

              327 DESOFB - Output Feed Back

              Aus der Wikipedia (unter GNU Free Documentation License)

              In diesem Modus werden die Klartextblocke nicht direkt mit DES verschlusselt sondern DESerzeugt einen pseudozufalligen Bitstrom der dann ohne Ubertrag (vgl XOR) auf den Klartextaddiert wird Dazu muss DES mit einem kontinuierlichen Eingabestrom gefuttert werden AlsEingabe von DES dient hier ein Schieberegister dass zunachst mit einem Initialisierungsvektorgeladen wird Anschlieszligend wird immer ein Teil der Ausgabe von DES in dieses Registerhineingeschoben und so als Eingabe wiederverwendet (daher output feedback)

              bull Output der Encrpytion als Input fur Encryption erzeugt Pseudozufallsstrom oplus Klartext

              bull Vorteil Beliebige Blockgroszligen moglich wie Stromchiffre verwendbar

              bull Nachteil Durchsatz verringert sich auf neue Blockgroszlige pro erzeugtem Block kann abervorberechnet werden

              bull Vorteil Ein Bit Fehler fuhrt zu nur einem invertierten Bit nach der Entschlusselung

              bull Nachteil Keine Selbstsynchronisierung moglich wenn Bits komplett verloren gehen

              23

              (Quelle httpdewikipediaorgwikiBildOfb_encryptionpng)

              (Quelle httpdewikipediaorgwikiBildOfb_decryptionpng)

              328 DESCFB - Cipher Feed Back

              Aus der Wikipedia (unter GNU Free Documentation License)

              Identisch mit OFB aber statt die Ausgabe des DES wieder als Eingabe zu verwenden wirdder Kryptotextstrom als Eingabe wiederverwendet

              bull Cipher als Input fur Encryption erzeugt Pseudozufallsstrom oplus Klartext

              24

              bull Vorteil Beliebige Blockgroszligen moglich wie Stromchiffre verwendbar

              bull Nachteil Durchsatz verringert sich auf neue Blockgroszlige pro erzeugtem Block

              (Quelle httpdewikipediaorgwikiBildCfb_encryptionpng)

              (Quelle httpdewikipediaorgwikiBildCfb_decryptionpng)

              329 CTR Mode CCM

              Dieser Modus spielt fur DES keine Rolle Ist auch nicht in OpenSSL implementiert Aber die-se Betriebsart ist fur 128 Bit Verschlusselungen ist zum Beispiel vom BSI als sicher eingestuftworden rsquoDie Betriebsart der Zukunftrsquo

              Wird zum Beispiel fur W-LAN Verschlusselung verwendet

              25

              Eingabe sind Klartext mit einen Zahler

              ctr0 rarr Block rarr oplusT rarr c0ctr1 rarr Block rarr oplusp1 rarr c1ctr2 rarr Block rarr oplusp2 rarr c2ctr3 rarr Block rarr oplusp3 rarr c3

              ctrn rarr Block rarr opluspn rarr cn

              Standardisiert als rsquoSP 800-38crsquo

              (N A P) mit N Zufallswerten A Assoziierte Daten P Klartext produziert Blocke B0 B1 Br

              httpcsrcnistgovpublicationsnistpubs800-38CSP800-38C_updated-July20_

              2007pdf

              To do algorithmus uberarbeiten ubersetzen

              1 Apply the formatting function to (N A P) to produce the blocks B0 B1 Br

              2 Set Y0 = CIPHK(B0)

              3 For i = 1 to r do Yi = CIPHK(Bi oplus Yiminus1)

              4 Set T = MS BTlen(Yr)

              5 Apply the counter generation function to generate the counter blocks Ctr0Ctr1 Ctrmwhere m = dPlen128e

              6 For j = 0 to m do S j = CIPHK(Ctr j)

              7 Set S = S 1||S 2|| ||S m

              8 Return C =(P oplus MS BPlen(S )

              )||(T oplus MS BTlen(S 0)

              )

              T stellt einen Prufwert dar

              3210 TEA-Algorithmus

              To do uberarbeiten

              26

              Nicht in OpenSSL implementiert Universitarer Algorithmus

              (Quelle httpdewikipediaorgwikiBildTEA_InfoBox_Diagrampng)

              Man sieht die Feistel Idee allerdings die grunen Quadrate sind Additionen modulo 64 Bit

              To do erlautern Pfeilspitzen

              Es gibt ein Extended TEA struktur recht ahnlich aber beim Algorithmus an der Stelle

              Byte 0 28 minus 1 | 28ii

              b middot k = (b middot k mod (28 + 1)) mod 28 Es gibt auch eine Inverseb middot K rarr c rarr c middot kprime = b

              geht nur bei 22 + 1 24 + 1 28 + 1 216 + 1

              27

              3211 DES-X

              In OpenSSL desx KK1K2

              EncK(m oplus K2) oplus K1 = DES minus X(m)

              c1 oplus c2 = EncK(m1 oplus K2) oplus EncK(m2 oplus K2)

              Ist unsymetrisch Hat sich nicht so ganz durchgesetzt

              33 IDEA International Data Encryption Algorithm

              IDEA gilt als sehr sicher ist schneller als DES bei Hardwareimplementation tauchte zuerst alsPES auf Unterschied PES und IPES ist die untere XOR-Vertauschung (siehe Wikipedia Skiz-ze) die es im PES nicht gab War nur zur privaten Nutzung frei ansonsten patentiert weshalber nicht so verbreitet war IDEA verschlusselt 64-Bit Eingabe-Blocke in 64-Bit Ausgabe-Blockeund verwendet dabei einen 128-Bit Schlussel Der Algorithmus basiert im wesentlichen auf 8identischen Runden die den Runden einer Feistel-Chiffre ahnlich sind und einer abschlieszligendenTransformation der Ausgabe In jeder Runde werden 6 16-Bit Subschlussel in der Ausgaben-Transformation weitere 4 davon verwendet Samtliche Subschlussel werden aus dem Original-schlussel berechnet Die 64 Bit Eingabe jeder Runde werden dabei als 4 16-Bit-Blocke verar-beitet Der Algorithmus benutzt verschiedene algebraische Operationen

              bull Polynomaddition mod 2 XOR (blau-verbraucht wenig Strom)

              bull Addition mod 216 ADD (grun-verbraucht wenig Strom etwas Zeit - Uberlauf wirdignoriert)

              bull Multiplikation mod 216︸︷︷︸prim

              +1 MULT (rot-viel Strom)

              Aus der Wikipedia (unter GNU Free Documentation License)

              Der IDEA-Algorithmus (International Data Encryption Algorithm) wurde 1990 als ein Ge-meinschaftsprojekt zwischen der ETH Zurich von James L Massey und Xueija Lai und derAscom Systec AG entwickelt IDEA ist ein symmetrischer Algorithmus und gehort zu denBlockchiffren Der Algorithmus benutzt einen 128-Bit langen Schlussel (DES nur 64 Bit da-von sind 8 Bits fur den Paritats-Check vorgesehen so dass die eigentliche Schlussellange nur56 Bits betragt)

              Bei der Verschlusselung wird der Klartext in 64 Bit groszlige Blocke unterteilt und derSchlussel in Teilstucke zu je 16 Bit zerlegt Die Verschlusselung geschieht durch Kombina-

              28

              tion der logischen Operation XOR der Addition modulo 216 und der Multiplikation modulo216+1 Die Kombination dieser drei Operationen aus unterschiedlichen algebraischen Gruppensoll ein hohes Maszlig an Sicherheit gewahrleisten

              Das Verfahren ist dazu optimiert Angriffen durch differentielle Kryptoanalyse zu wider-stehen

              Es gibt bei IDEA leider eine ganze Reihe von schwachen Schlusseln die sich in zweiKlassen einteilen lassen Die erste Klasse umfasst 232 schwache Schlussel Sie sind insofernschwach als man sie mit gewahltem Klartext nachweisen kann Danach ist ein Brute ForceAngriff selbst fur Privatpersonen mit alteren PCs machbar Die zweite Klasse umfasst sogar265 schwache Schlussel Bei diesen Schlusseln kann man mit nur 20 gewahlten Klartexten72 Bit des Schlussels ermitteln Die restlichen 56 Bit muss man mit Brute Force ermittelnAllerdings liegt die Wahrscheinlichkeit dafur einen schwachen Schlussel zu erwischen bei einszu 263 oder eins zu 9 Trillionen

              Weil die Ascom Systec AG an der Entwicklung des Algorithmus beteiligt war halt siedie Patente fur IDEA In Europa verfallt der Patentschutz am 16052011 In den USA wirdder Algorithmus bereits ein Jahr fruher kostenlos nutzbar sein Da das Patent in der Schweizerteilt wurde greift das Patent auch in Deutschland unabhangig davon dass in DeutschlandSoftwarepatente nicht legal sind

              Der Algorithmus beruht wesentlich darauf dass 216 + 1 eine Primzahl ist Deshalb lasst sichIDEA nicht auf andere Blocklaengen adaptieren

              331 Schlusselauswahl

              Aus den 128 Bit des ursprunglichen Schlussels werden in insgesamt 52 16-Bit Teilschlussel er-zeugt Dabei werden aus dem aktuellen Schlusselwert (initial der ursprungliche 128-Bit Schlussel)8 der Teilschlussel durch aufteilen gewonnen Dann wird der aktuelle Schlussel subsequent um25 Bit nach links rotiert und so je ein neuer aktueller Schlussel erzeugt der wieder zu Teil-schlusseln aufgeteilt wird - solange bis alle Teilschlussel belegt sind Es werden 6 middot 16-Bit ineiner Runde verbraucht in 8 Runden also 48 Teilschlussel Hinzu kommen 4 Teilschlussel dienach der letzten Runde fur weitere Operation verwendet werden Insgesamt werden also 52Teilschlussel mit je 16-Bit aus 128-Bit Rohschlussel erzeugt und auch verbraucht rarr 832-BitSchlusselmaterial

              332 Funktionsweise

              In jeder Runde r finden folgende Transformationen statt

              1 X1 = X1 MULT Kr1 X4 = X4 MULT Kr

              4 X2 = X2 ADD Kr2 X3 = X3 ADD Kr

              3

              2 t0 = Kr5 MULT (X1 XOR X3) t1 = Kr

              6 MULT (t0 ADD (X2 XOR X4)) t2 = t0 ADD t1

              29

              3 X1 = X1 XOR t1 X4 = X4 XOR t2 a = X2 XOR t2 X2 = X3 XOR t1 X3 = a

              Dabei sind X1 bis Xi die 16-Bit Blocke die aus der 64 Bit Eingabe gewonnen wurden Kri ist der

              Teilschlussel mit der Nummer r middot 6 + i Die abschlieszligende Transformation ergibt sich wie folgtY1 = X1 MULT K9

              1 Y4 = X4 MULT K94 Y2 = X3 ADD K9

              2 Y3 = X2 ADD K93

              Dabei sind die Yi 4 16-Bit Worter die die Ausgabe darstellen

              (Quelle httpdewikipediaorgwikiBildInternational_Data_Encryption_Algorithm_InfoBox_Diagrampng)

              bull In OpenSSL konnen IDEA Verschlusselungen mit folgenden Befehlen aufgerufen wer-den

              ndash -ideandash -idea-cbcndash -idea-cfbndash -idea-ecbndash -idea-ofb

              333 Pseudocode-multiplikation

              To do als Pseudocode machen

              30

              if(a==0)return ((216 +1)-b) mod 216

              if(a==0)return ((216 + 1)-a) mod 216

              if(a middot b) mod 216 gt (a middot b) div 216 return (a middot b) mod 216 minus (a middot b) div 216

              if(a middot b) mod 216 le (a middot b) div 216 return (216 + 1) + (a middot b) mod 216 minus (a middot b) div 216

              wenn a==0 rArr a = 216 equiv minus1 mod 216

              334 Schwachstellen

              Bei schlechter implementation konnen die XOR-Berechnungen am Stromverbrauch erkanntwerden Es konnen Ruckschlusse auf bestimmte Werte (insbesondere Null) gemacht werdenNach 218 Testrechnungen kann der Klartext bestimmt werdenSolche Angriffe nennt man Seiten Kanal Atacken in diesem Fall ist der Stromverbrauch derSeitenkanal (Zeitverbrauch spielt beim Idea keine Rolle)Bei guter Implementation gilt aber der Algorithmus als sicher

              To do Skizze Stromverbrauch

              34 Blowfish

              Blowfish ist eine sehr schnelle 64-Bit 16-Runden Block-Chiffre die 1993 von Bruce Schneiererfunden wurde Die Lange der Schlussel ist variabel zwischen 32 und 448 Bit Als Teilschlusselwerden aus dem Ausgangsschlussel eine P-Box mit 18 mal 32 Bit und 4 S-Boxen mit 256 mal32 Bit generiert (P1 P18) (S 1 S 4)

              Blowfisch Algorithmus von Bruc Schreier ist vollig Patentfrei dies hat sehr zu seiner Verbrei-tung beigetragen

              31

              F

              F

              14 weitere Runden

              (Quelle httpdewikipediaorgwikiBildBlowfish_structure_(de)svg)

              P1 P18 die XOR auf den Klartext kommen

              Schlussel-P1 P18 und

              -S-Boxen

              32

              (Quelle httpenwikipediaorgwikiImageBlowfishFFunctionsvg)

              S ist 256 32 Bit WerterArr 4 middot 256 middot 32 Werte rArr kann man sich nicht merken also wird P1 P18 S 1 S 4 werdenals Hexadezimalwerte von π gewahlt

              (K)n oplus (P1 P18)

              Der so initialisierte Algorithmus wird auf den Klartext 0 0︸ ︷︷ ︸64

              angewendet Das Ergebnis ersetzt

              (P1 P2) Der so initialisierte Algorithmus wird auf den Klartext 0 0︸ ︷︷ ︸

              64

              angewendet Das Ergebnis

              ersetzt (Pi Pi+1) Der so initialisierte Algorithmus wird auf den Klartext 0 0︸ ︷︷ ︸64

              angewendet

              Das Ergebnis ersetzt (S 1 S 2)

              Auf kosten eines sehr aufwendigen Schlusselmanagment wird ein schneller Algorithmus er-reicht Fur Prozessoren mit wenig Speicher unpraktisch

              341 Initialisierung

              Teilschlusselmanagement Sehr viele Teilschlussel werden aus wenig Schlusselmaterial gene-riert

              1 P und S werden mit einer Hexadezimal-Expansion von Pi initialisiert

              2 Der Schlussel als Sequenz von 32-Bit-Werten wird mittels XOR auf die P-Box addiertwobei er eventuell ldquowiederholtrdquo wird um die ganze Lange der Box abzudecken P1 oplus K1P2 oplus K2 P18 oplus K18

              3 Sowohl die P-Box als auch die S-Boxen werden verschlusselt

              33

              bull Verschlussle mit Blowfish den Nullstring rarr 64-Bit Ausgabe = 2 32-Bit = neueP1 P2

              bull Verschlussle mit Blowfish (Pi Pi+1) die Ausgabe verwende als (Pi+2 Pi+3) Wieder-hole diesen Schritt fur i von 1 bis zum Ende der P-Boxbull Anschlieszligend S 10 S 11 rarr S 12 S 13 Im gleichen Verfahren wie bei der P-Box

              werden die S-Boxen verschlusselt

              Insgesamt ist so ein langer Vorlauf notig bevor die eigentliche Verschlusselung der Daten be-ginnt

              342 Verschlusselung

              In jeder Runde r (insgesamt 16 Runden) wird folgendes Verfahren angewendet

              1 Der 64-Bit Eingabeblock wird in zwei 32-Bit-Halften L und R zerlegt

              2 L = L oplus Pr R = R oplus f (L)f (L) ist dabei folgendermaszligen charakterisiert Zunachst wird das Argument L als Konka-tenation von 4 8-Bit Vektoren a b c und d aufgefasst die als naturliche Zahlen zwischen0 und 255 verwendet werden

              f (a b c d) = ((S 1a + S 2b mod 232 oplus S 3c) + S 4d mod 232

              3 L und R werden vertauscht konkateniert und als Eingabe fur die nachste Runde verwen-det

              Nach der letzten Runde wird noch R = R oplus P17 und L = L oplus P18 durchgefuhrt

              Aus der Wikipedia (unter GNU Free Documentation License)

              Blowfish ist ein sehr schneller und nicht patentierter Algorithmus der besonders auf 32-Bit-Prozessoren eine exzellente Performance bietet Ein weiterer Vorteil ist seine variableSchlussellange von 32 bis zu 448 Bit Die Blockgroszlige betragt 64 Bit

              bull In OpenSSL konnen Blowfish Verschlusselungen mit folgenden Befehlen aufgerufen wer-den

              ndash -bfndash -bf-cbcndash -bf-cfbndash -bf-ecbndash -bf-ofbndash -blowfish

              34

              35 AES Advanced Encryption Standard

              351 Wiederholung-Byteoperation

              Wir hatten folgende Byteoperationen kennengelernt

              bull Multiplikation mod 256 bzw mod 257 ohne 0

              bull Addition mod 256

              bull XOR-Addition (oplus)

              Die Operationen werden in der dementsprechenden Basisdarstellung modulo 256 durchgefuhrt

              352 Uberblick

              AES wurde im Standard FIPS 197 festgeschrieben

              Aus der Wikipedia (unter GNU Free Documentation License)

              AES ist eine Block-Chiffre dessen Blocklange und Schlussellange unabhangig voneinanderdie Werte 128 192 oder 256 Bit erhalten kann Jeder Block wird zunachst in eine zweidimen-sionale Tabelle mit vier Zeilen geschrieben dessen Zellen ein Byte groszlig sind Die Anzahl derSpalten variiert somit je nach Blockgroszlige von 4 (128 Bit) bis 8 (256 Bit) Zum Beispiel fur 16Byte werden die Bytes wie folgt eingetragen

              1 5 9 132 6 10 143 7 11 154 8 12 16

              Jeder Block wird nun nacheinander bestimmten Transformationen unterzogen Aber anstattjeden Block einmal mit dem Schlussel zu verschlusseln wendet AES verschiedene Teile desSchlussels nacheinander auf den Klartext-Block an Die Anzahl dieser Runden (r) variiertund ist von Schlussellange (k) und Blockgroszlige (b) abhangig Je nach Blocklange b undSchlussellange k wird die Anzahl der Runden bestimmt (10 12 oder 14)

              r b=128 b=192 b=256k=128 10 12 14k=192 12 12 14k=256 14 14 14

              S-BoxenEine Substitutionsbox (S-Box) dient als Basis fur eine monoalphabetische Verschlusselung

              35

              Sie ist meist als Array implementiert und gibt an welches Byte wie getauscht wird DieS-Box in AES basiert auf einem mathematischen Zusammenhang und ist somit fest imAlgorithmus implementiert Doch dies ist kein Schwachpunkt da die S-Box lediglich zur Ver-mischung der Bytes in Kombination mit weiteren Operationen und dem Schlussel genutzt wird

              Ablauf

              bull Schlusselexpansion (nach Fips-197 S23 Kapitel 52)

              Der Schlussel rsquokeyrsquo wird auf den Anfang des expandierten Schlussels rsquowrsquo ubernommen(i lt Nk) Danach berechnet sich w[i] wie folgt

              w[i] =

              w[i minus 1] i mod Nk 0S ubWord(RotWord(w[i minus 1])) oplus Rcon i mod Nk = 0S ubWord(w[i minus 1]) Nk gt 6i (mod N)k = 4

              (1)

              w[i] = w[i] oplus w[i minus Nk] (2)

              Der zugehorige Quelltext (Fips-197 entnommen)

              KeyExpansion(byte key[4Nk] word w[Nb(Nr+1)] Nk)

              begin

              word temp

              i = 0

              while (i lt Nk)

              w[i] = word(key[4i] key[4i+1] key[4i+2] key[4i+3])

              i = i+1

              end while

              i = Nk

              while (i lt Nb (Nr+1)]

              temp = w[i-1]

              if (i mod Nk = 0)

              temp = SubWord(RotWord(temp)) xor Rcon[iNk]

              else if (Nk gt 6 and i mod Nk = 4)

              temp = SubWord(temp)

              end if

              w[i] = w[i-Nk] xor temp

              i = i + 1

              end while

              end

              36

              Fur Beispiele siehe Fips-197 Appendix A1

              bull Vorrunde

              ndash KeyAddition (XOR-des Rundenschlussels)

              bull Verschlusselungsrunden

              ndash Substitution - Jedes Byte b wird ersetzt durch bprime = 1b wie bei Polynommultiplikati-

              on Weiter wird jedes Byte als ein 8-dimensionaler Vektor aufgefasst und folgendeOperation angewendet

              b1b2

              b8

              =

              1 0 0 0 1 1 1 11 1 0 0 0 1 1 11 1 1 0 0 0 1 11 1 1 1 0 0 0 11 1 1 1 1 0 0 00 1 1 1 1 1 0 00 0 1 1 1 1 0 00 0 0 1 1 1 1 0

              middot

              b1b2

              b8

              +

              c1c2

              c8

              ndash ShiftRow - Erste Zeil wird nicht verschoben die zweite Zeil um eins die dritteZeile um zwei die vierte um drei (siehe Wikipedia)

              ndash MixColumn - Zu jeder Spalten

              b1b2b3b4

              des Blocks wird folgende Polynommultiplika-

              tion durchgefuhrt

              (b1x3 + b2x3 + b3x + b4) middot (03X3 + 04X2 + 01X + 02) mod (X4 + 1)

              und die Koeffizienten in gleicher Weise wieder in die jeweilige Spalte eingetragenWobei (X4 + 1) das Inverse (0BX3 + 0DX2 + 09X + DE) hat

              ndash KeyAddition

              bull Schlussrunde

              ndash Substitutionndash ShiftRowndash KeyAddition

              Fur die Entschlusselung gehe die oben angegebene Reihenfolge ruckwarts durch Beachtedabei dass ShiftRow und Subst vertauschbar sind Bei ShiftRow wird in umgekehrter Weiseverschoben Ebenso sind KeyAdd und MultColumn vertauschbar wenn der Rundenschlusselmodifiziert wird (B(X) lowast (S (X) oplus K(X)) = S (X) lowast B(X) oplus B(X) lowast K(X) also ist der modifiziertSchlussel B(X) lowast K(X)) Die Entschlusselung entspricht also der Verschlusselung mit modifi-zierten Schlusseln

              37

              353 mathematische Grundlagen

              Speziell der Schritt Mix-Column beinhaltet einige interessante mathematische Uberlegungen Ersoll zu einer moglichst effektiven Vermischung der 32 Bit in jeder Spalte fuhren die die Suchevon dem unverschlusselten Text ahnlichen Mustern im verschlusselten Text erschwert Dabeiwerden arithmetische Operationen aus zwei algebraischen Gruppen angewandt

              1 Die Gruppe der Bytes F82 Jedes Byte b7b6b0 wird als ein Polynom b7 middot X7 + b6 middot X6 +

              b0 middot X0 angesehen Diese Polynome konnen addiert und multipliziert werden Damitdabei der Werteraum des Byte nicht verlassen wird finden diese Operationen modulom(X) = X8 + X4 + X3 + X +1 statt m ist dabei irreduzibel es gilt also ggT (b(X)m(X)) = 1fur jedes Byte b Somit ist F2[X]m(X) ein Korper und die Multiplikation ist abgeschlos-sen Es gilt fur jedes Paar von Bytes b c eindeutig b middot c = d rarr dc = b Multiplikationenkonnen also eindeutig ruckgangig gemacht werden so dass eine Entschlusselung moglichistBei Zahlen die groszliger als m(X) sind werden also durch die modulo Operation die Koeffi-zienten von x4 x3 x1 x0 verandertBeispiel in Magma

              Q = IntegerRing(2)

              Pltxgt = PolynomialRing(Q)

              f=xˆ7+1

              g=xˆ3+xˆ2+x+1

              fg

              fg mod(xˆ8 +xˆ4+xˆ3+x+1)

              IsPrime(xˆ8 +xˆ4+xˆ3+x+1)

              Ausgabe

              xˆ10 + xˆ9 + xˆ8 + xˆ7 + xˆ3 + xˆ2 + x + 1

              xˆ7 + xˆ6 + xˆ3 + xˆ2 + x

              true

              2 Die Gruppe der Worter F4256 Die 4 Bytes einer Spalte w3w2w1w0 werden wieder als Po-

              lynom aufgefasst w3 middot X3 + w2 middot X2 + w1 middot X + w0 Diese konnen wieder multipliziertund addiert werden wobei die arithmetischen Operationen auf den jeweiligen Bytes in F8

              2stattfinden Die Operationen in F4

              256 werden modulo M(X) = X4 + 1 ausgefuhrt M(X) istzwar nicht irreduzibel aber da der Algorithmus nur eine beschrankte Gruppe von Operan-den verwendet bleiben auch hier alle Operationen invertierbar

              Mix-Column multipliziert (in F4256) nun jede Spalte mit c(X) = 3 middot X3 + X2 + X + 2 Die so

              beschriebene lineare Funktion erreicht beweisbar eine groszlige Diffusion der Eingabe

              38

              bull In OpenSSL konnen AES Verschlusselungen mit folgenden Befehlen aufgerufen werden

              ndash -aes-128-cbcndash -aes-128-cfbndash -aes-128-ecbndash -aes-128-ofbndash -aes-192-cbcndash -aes-192-cfbndash -aes-192-ecbndash -aes-192-ofbndash -aes-256-cbcndash -aes-256-cfbndash -aes-256-ecbndash -aes-256-ofbndash -aes128ndash -aes192ndash -aes256

              36 RC4 Ronrsquos Cipher 4

              Geheimes Chiffreverfahren mit Strom-Chiffre von Ron Rivest 1987 Entstehungsjahr 1994 imNetz aufgetaucht 1999 tauchte im Internet ein Draft ARCFOUR (ARC4) auf der die gleichenErgebnisse lieferte

              Byte orientiert zwei Bytes m k dann wird berechnetm oplus k = cDer Algorithmus basiert auf S-Boxen (Permutationen)

              mdashmdashSkizze Seite 2b ganz oben

              PRG (Pseudo Random Generator)mdashmdashweitere Skizze

              Initialisierung K = L Bytes als Schlussel s[i] = i (identische Permutation)L = 1255 fur RC4 mit 40-Bit L = 5 mit 64-Bit L = 8 mit 128-Bit L = 16j = 0 fur i = 0255rarr j = ( j + s[i] + K[ j mod L]) mod 256

              Problem K-Masterkeyrarr salted key Initialwert (frei bekannt) HashInitial(K) = Kaktuell rarr RC4

              39

              Anfangsstucke von PRG RC4 sind nicht rdquorichtig zufalligldquo verraten viel uber KaktuellRegel fur RC4 Die ersten 256-Byte wegschmeiszligen

              Aus der Wikipedia (unter GNU Free Documentation License)

              RC4 (Ronrsquos Cipher 4) ist ein fur Software optimierter Stromchiffrierer welcher zur Ver-schlusselung von Daten eingesetzt wird Er wurde 1987 von Ronald L Rivest fur RSA DataSecurity Inc (heute RSA Security) entwickelt

              Der Algorithmus war sieben Jahre lang geheim (ldquosecurity by obscurityrdquo) bis 1994 derQuellcode anonym veroffentlicht wurde

              RC4 hat im Gegensatz zu DES eine variable Schlussellange Die Schlussellange kann biszu 2048 Bit betragen RC4 verschlusselt immer ein Byte auf einmal

              Er besteht aus einer so genannten S-Box die sich wahrend der Verschlusselung fortlau-fend andert Diese wird durch ein Passwort initialisiert das fur jede Verschlusselung einmaligsein muss Jedes Klartextzeichen wird XOR mit einem bestimmten vom Paszligwort abhangi-gen Zeichen aus der S-BOX verknupft Theoretisch sind somit ca 2 hoch 1700 verschiedeneZustande moglich

              Der Algorithmus ist sehr kompakt und funf- bis zehnmal schneller als der weitverbreite-te DES Deshalb findet der RC4 Algorithmus in einigen Echtzeit-Systemen Anwendung wiebeispielsweise Mobilfunk (Cellular Digital Packet Data) SSH (Secure Shell) WLAN (Wire-less LAN) oder den Dateiverschlusselungs-Programmen SecurePC und Cryptext Die Verar-beitungsgeschwindigkeit des DES ist jedoch selbst in kleinsten Mikrokontrollern meist ausrei-chend Der Schlussel beim DES und anderen Blockchiffren wie dem AES (CBC-Mode) kannim Gegensatz zum RC4 auch mehrfach verwendet werden Vergleichbare Stromchiffren wieSEAL sind vergleichbar schnell und gelten als sicher

              Aus der Wikipedia (unter GNU Free Documentation License)

              ubersetzt aus dem Englischen nach httpenwikipediaorgwikiRC4RC4 (oder ARCFOUR) ist die am weitesten verbreitete Stromchiffre und wird in vielen be-kannten Protokollen beispielsweise SSL oder WEP verwendet Trotzdem entspricht RC4 nichtmehr dem heutigen Sicherheitsstandard und manche Verwendungsweisen von RC4 fuhren zusehr unsicheren Kryptosystemen (zB WEP) Daher wird es nicht fur die Verwendung in neuenSystemen empfohlen Allerdings gibt es auch RC4-basierte Systeme die sicher genug fur denpraktischen Gebrauch sind

              361 Geschichte

              Aus der Wikipedia (unter GNU Free Documentation License)

              ubersetzt aus dem Englischen nach httpenwikipediaorgwikiRC4RC4 wurde 1987 von Ron Rivest von RSA Security erfunden Offiziell bedeutet die Abkurzung

              40

              ldquoRivest Cipher 4rdquo alternativ wird sie aber als ldquoRonrsquos Coderdquo verstanden (s auch die anderenRC-Algorithmen) Zunachst war RC4 ein Betriebsgeheimnis jedoch wurde im September1994 eine Beschreibung anonym auf der ldquoCypherpunksrdquo Mailingiste gepostet Es wurde baldin die scicrypt newsgroup weitergepostet und von dort auf viele Internet-Seiten verbreitetNachdem der Algorithmus nun bekannt ist ist er kein Betriebsgeheimnis mehr Der NameldquoRC4rdquo unterliegt jedoch weiterhin dem Markenschutz Zur Zeit sieht es so aus als seien ldquoinof-fiziellerdquo Implementationen zwar legal konnen aber nicht den Namen ldquoRC4rdquo verwenden Umdieses Problem zu umgehen wird RC4 oft als ldquoARCFOURrdquo bezeichnet RC4 wird inzwischenin einigen weit verbreiteten Verschlusselungsprotokollen und Standards unter anderem WEPund WPA fur WLAN Karten und SSL verwendet

              362 Beschreibung

              Aus der Wikipedia (unter GNU Free Documentation License)

              ubersetzt aus dem Englischen nach httpenwikipediaorgwikiRC4RC4 generiert einen pseudo-zufalligen Bitstrom (einen ldquoSchlusselstromrdquo) der bei der Ver-schlusselung mit dem Klartext mittels XOR verknupft wird Die Entschlusselung funktioniertgenauso Um den Schlusselstrom zu generieren benutzt die Chiffre einen internen Zustand deraus zwei Teilen besteht

              1 eine Permutation aller 256 moglichen Bytes (wird im Folgenden als S bezeichnet)

              2 zwei 8-Bit Index-Zeiger (mit i und j bezeichnet)

              Die Permutation wird mit einem Schlussel von variabler Lange ublicherweise zwischen 40und 256 Bit initialisiert wobei der Schlusselerzeugungs-Algorithmus verwendet wird An-schlieszligend wird der Bit Strom durch den Pseudo-Zufalls-Algorithmus generiert

              363 Der Pseudo-Zufalls-Algorithmus

              Aus der Wikipedia (unter GNU Free Documentation License)

              ubersetzt aus dem Englischen nach httpenwikipediaorgwikiRC4In jeder Iteration wird der Zustand verandert und ein Byte des Schlusselstroms ausgegebenDabei wird i inkrementiert der Wert von S an der Stelle i auf j addiert S [i] und S [ j] vertauschtund der Wert von S an der Stelle S [i]+S [ j] mod 256 ausgegeben Jeder Wert von S wird dabeimindestens einmal alle 256 Iterationen vertauscht In Pseudocode lasst sich der Algorithmusfolgendermaszligen darstellen

              i = 0

              j = 0

              41

              while GeneratingOutput

              i = (i + 1) mod 256

              j = (j + S[i]) mod 256

              swap (S[i] S[j])

              output (S[(S[i] + S[j]) mod 256])

              (Wobei i offentlich ist und j geheim ist)

              i j

              0 1 2 S[i]+S[j] i j 253 254 255

              S

              S[i] S[j]

              S[i]+S[j]K

              (Quelle httpdewikipediaorgwikiBildRC4svg)

              364 Der Schlusselerzeugungs-Algorithmus

              Aus der Wikipedia (unter GNU Free Documentation License)

              ubersetzt aus dem Englischen nach httpenwikipediaorgwikiRC4Der Schlusselerzeugungs-Algorithmus wird benutzt um die Permutation in S zu initialisierenl wird als die Zahl der Bytes des Schlussels definiert und kann zwischen 1 und 255 liegenublicherweise liegt l zwischen 5 und 32 so dass eine Schlussellange von 40 bis 128 Bit zu-stande kommt Zunachst wird S mit der Identitatspermutation initialisiert Anschlieszligend wirdS in 256 Iterationen mit einem Algorithmus der dem Pseudo-Zufalls-Algorithmus ahnelt aberzusatzlich die Schlusselbits hineinmischt weiterverarbeitet Der folgende Pseudocode drucktdies aus

              for i from 0 to 255

              S[i] = i

              j = 0

              for i from 0 to 255

              42

              j = (j + S[i] + key[i mod l]) mod 256

              swap(S[i]S[j])

              365 Implementation

              Aus der Wikipedia (unter GNU Free Documentation License)

              ubersetzt aus dem Englischen nach httpenwikipediaorgwikiRC4Viele Stromchiffren basieren auf ldquolinear feedback shift registersrdquo und sind damit sehr effizientin Hardware aber weniger effizient in Software implementierbar RC4 hat dieses Manko nichtund kommt zudem ausschlieszliglich mit 8-Bit Operationen aus Damit ist RC4 ideal fur Software-Implementationen

              366 Sicherheit

              Aus der Wikipedia (unter GNU Free Documentation License)

              ubersetzt aus dem Englischen nach httpenwikipediaorgwikiRC4RC4 verfehlt die ublichen Standards fur sichere Chiffren an mehreren Stellen und wird somitnicht zur Verwendung in neuen Anwendungen empfohlen Der von RC4 generierte Schlussel-strom tendiert dazu bestimmte Sequenzen von Bytes haufiger zu enthalten als andere undist somit nicht wirklich zufallig Der beste Angriff der auf diesem Sachverhalt beruht wur-de von Fluhrer und McGrew entdeckt und kann aus einem Gigabyte verschlusseltem Textden Schlusselstrom berechnen Zudem verwendet RC4 keine ldquononcerdquo einen fur jeden Klar-text neu generierten Zusatzschlussel Eine solche ldquononcerdquo wird im allgemeinen als zentralesSicherheitskriterium betrachtet da so gewahrleistet ist dass eine zweimal nacheinander ver-schlusselte Nachricht zwei verschiedene verschluesselte Texte erzeugt Naturlich kann einesolche ldquononcerdquo im Nachhinein aufgesetzt werden indem als RC4-Schlussel nicht der eigentli-che Benutzerschlussel sondern beispielsweise ein Hashwert des Schlussels mit einer nonce ver-wendet wird Die einfachere Methode den Schlussel nur mit der nonce zu konkatenieren dievon einigen Anwendungen genutzt wird fuhrt aufgrund des schwachen Schlusselerzeugungs-Algorithmus wieder zu neuen Problemen

              To do anmerkungen zu k=1-Angriffsmoglichkeiten

              43

              367 Fluhrer Mantin und Shamir Angriff

              Aus der Wikipedia (unter GNU Free Documentation License)

              ubersetzt aus dem Englischen nach httpenwikipediaorgwikiRC42001 wurde eine erstaunliche Entdeckung gemacht Die statistische Verteilung der ersten paarBytes des Schlusselstroms ist uber alle RC4-Schlussel stark nicht-zufallig und enthalt Infor-mationen uber den Schlussel selbst Falls die nonce lediglich mit dem Schlussel konkateniertwurde (oder gar keine nonce verwendet wurde) kann der Schlussel durch die Analyse einergroszligen Zahl verschlusselter Nachrichten herausgefunden werden Mit Hilfe dieses Sachver-haltes und einiger damit zusammenhangender Effekte wurde dann die WEP-Verschlusselung(ldquowireless equivalent privacyrdquo) die in 80211 WLAN-Netzen verwendet wird gebrochen Diesfuhrte zu einer Suche nach einem Ersatz fur WEP und letztlich zu den Bemuhungen um 80211isowie zu WPA

              Der geschilderte Angriff kann naturlich umgangen werden wenn die ersten (ca 256) Bytes desSchlusselstroms verworfen werden

              bull In OpenSSL konnen RC4 Verschlusselungen mit folgenden Befehlen aufgerufen werden

              ndash -rc4ndash -rc4-40

              37 RC5 Ronrsquos Cipher 5

              Die zentrale Neuerung des RC5-Algorithmus sind datenabhangige Rotationen bei denen einZwischenergebnis um eine Zahl von Bytes rotiert wird die weder fest vorgegeben noch vomSchlussel bestimmt sondern aus einem Teil des Klartextes berechnet ist Diese Operation wirdfolgendermaszligen notiert a ltltlt b bedeutet dass a um b Bits nach links rotiert wird Ein weitererinteressanter Aspekt ist die universelle Parametrisierbarkeit des Algorithmus Sowohl die Langeder Worter w als auch die Zahl der Runden r und die Lange des Schlussels b sind wahlbar sodass der Algorithmus offen ist fur zukunftige Bedurfnisse die weitere Operation + wird nun alsAddition modulo 2w definiert In openssl ist RC5 mit den Parameters w = 32 r = 12 b = 16 im-plementiert Samtliche Algorithmen gehen im folgenden von einer little-endian Byte-Anordnungaus Der Algorithmus besteht aus einem Verschlusselungs- und einem Schlusselexpansions-Teil

              371 Verschlusselung

              Gegeben ein auf t = 2(r + 1) Worter expandierter Schlussel S und ein aus zwei Wortern A undB bestehender Eingabeblock gibt folgender Pseudocode den Verschlusselungs-Algorithmus an

              44

              A = A + S[0]

              b = B + S[1]

              for i = 1 to r do

              A = ((A XOR B) ltltlt B) + S[2i]

              B = ((B XOR A) ltltlt A) + S[2i + 1]

              Die Entschlusselung lauft dementsprechend folgendermaszligen ab

              for i = r downto 1 do

              B = ((B - S[2i + 1]) gtgtgt A) XOR A

              A = ((A - S[2i]) gtgtgt B) XOR B

              A = A - S[0]

              B = B - S[1]

              372 Schlusselexpansion

              Zunachst wird S mit einer Kombination aus e und ϕ (dem goldenen Schnitt) initialisiert und derSchlussel in ein Array L kopiert das wortweise indiziert wird Anschlieszligend wird mit folgendemAlgorithmus der Schlussel in S hinein gemischt

              i = j = 0

              A = B = 0

              do 3 max(t 8bw) times

              A = S[i] = (S[i] + A + B) ltltlt 3

              B = L[j] = (L[j] + A + B) ltltlt (A + B)

              i = (i+1) mod t

              j = (j+1) mod (8bw)

              38 GOST 28147-89 Gosudarstvennyi Standard Soyuza SSR nicht inOpenSSL

              GOST ist das russische Normungsinstitut vergleichbar mit DIN oder ANSI

              (siehe auch httpenwikipediaorgwikiGOST_(block_cipher))

              Gost-Chiffre ist eine relativ simple Feistel-Chiffre auf 64 Bit mit 32 Runden 256 Bit Schlussellangeund 8 S-Boxen von zusammen 512 Bit die - da sie geheim gehalten werden konnen - alsSchlusselerweiterung gelten konnen Die Rundenfunktion besteht aus der Addition eines 32-Bit-Substrings des Schlussels der Anwendung der S-Boxen (parallel da jede S-Box 4 Bit alsEin- und Ausgabe hat) und einer 11-Bit-Rotation Die Sicherheit des Algorithmus beruht auf

              45

              der Verwendung sehr langer Schlussel geheimer S-Boxen und der gegenuber DES verdoppeltenRundenzahl In jeder einzelnen Runde wird jedoch ein geringerer Durchmischungseffekt erreichtals bei DES-Runden

              Geheimer Algorithmus S-Boxen auch geheim

              (Quelle httpenwikipediaorgwikiImageGOSTDiagrampng)

              46

              Feistel Chiffre

              Addition Substitution Rotation

              Die S-Boxen sind Gruppenschlussel die extra zugewiesen werden16 4 Bit Werte werden Permutiert 32 RundenSchlusselmaterial 32 die 256 Bit werden jeweils in 8 32 Bit Unterschlussel eingeteilt wobei dieSchlussel wie folgt verwendet werden1234567123456712345677654321

              (Dann einmal S-Box einmal rotieren und dann Feistelschritt)

              Die Sicherheit steckt in den 32 Runden Der Algorithmus wurde bisher nicht geknackt

              39 FazitWie konnte bei einen Symmetrischen Algorithmus die Sicherheiterhohen

              (Das ware zB fur eine Interessante Frage fur eine Klausur)

              bull komplexes Schlusselmanagment

              bull viele Runden

              bull komplexe vermischung pro Runde (AES)

              4 Asymmetrische Verschlusselungsverfahren

              41 Einfuhrung

              AliceBob Chris Dave Eve

              Alice BobkA kA

              Enck1(M) = C minusrarr M = Deck2

              Verschlusselungsverfahren kA kB EncDecAus kA kann kB nicht bestimmt werden dann kann kA sogar offentlich sein Ziel ist es dass je-

              47

              der verschlusseln kann aber nur einer kann (in realistischer Zeit) entschlusseln Solche Verfah-ren mit offentlichen Schlussel werden auch asymmetrisch genannt Mit groszligen Aufwand kannnaturlich der Schlussel immer noch bestimmt werden Man wahlt einen Text mprime Verschlusseltihn (Enck(mprime) = cprime) und probiert dann solange alle k durch bis man Deck(cprime) = mprime erhalt

              Das kB kann aber immer bestimmt werden

              for k_B =00000 to FFFF

              M_0 C_0 sind gegeben

              Dec_k_B(C_0) = M_0

              Wichtig ist nur das dies nicht in rsquovernunftigerrsquo Zeit gemacht werden kann

              To do text sortieren

              Klartext minusrarr E(K) ChiffretextKlartext D(Kprime)larrminus ChiffretextE(K p) = c und zu jedem KexistKprime mit D(Kprime c) = p und K wird offentlich gemachtDie Berechnung von Kprime aus K ist schwer Bruteforce ist nicht ausgeschlossen die Bestimmungvon K aus Kprime ist leicht

              leichtEnckA DeckB (kA kB)minusErzeugung

              schweraus kA allein kB erzeugen

              411 Beispiel

              Bob mochte von Alice verschlusselte Nachrichten lesen Bob uberlegt sich ein asymmetrischesVerfahren wahlt Kprime berechnet K und veroffentlicht KAlice nimmt K berechnet E(K p) = c und sendet c an BobBob berechnet aus c mit Kprime das ursprungliche p

              42 Geschichte

              Whitfield Diffie New Directions in Cryptographie Idee wurde auch schon mal von Ralf Merkelveroffentlich Britische Geheimdienst hatt vorher die Idee auch schon mal

              48

              Aus der Wikipedia (unter GNU Free Documentation License)

              Asymmetrische Verfahren sind ein relativ neues Gebiet der Kryptografie Eine wichtige Vorar-beit fur die asymmetrischen Verfahren sind die Arbeiten von Whitfield Diffie Martin Hellmanund Ralph Merkle zum geheimen Schlusselaustausch Anfang der 1970er Jahre Im Sommer1975 veroffentlichten Diffie und Hellman eine Idee zur asymmetrischen Verschlusselung oh-ne jedoch ein genaues Verfahren zu kennen

              Anfang der 1970er Jahre wurden von Ellis Cocks und Williamson ein dem spateren Ver-fahren von Diffie-Hellman ahnliches asymmetrisches Verfahren entwickelt welches aber inseiner wirtschaftlichen Bedeutung nicht erkannt und aus Geheimhaltungsgrunden nicht (wis-senschaftlich) publiziert und auch nicht zum Patent angemeldet wurde Alle drei waren Mitar-beiter des englischen Government Communications Headquarters

              Der Durchbruch gelang Ronald L Rivest Adi Shamir und Leonard M Adleman die 1977das RSA-Verfahren entwickelten Es gilt bis heute als sicheres Verfahren und hat auszligerdem dengroszligen Vorteil in beiden Richtungen eingesetzt werden zu konnen

              43 Einige Theoretische Grundlagen

              431 Kleiner Fermat (oder kleiner Fermatrsquoscher Satz)

              Fur beliebige Primzahlen p gilt

              n(pminus1) = 1 mod p fur alle n isin Z

              To do Wikipedia verlinken

              432 Euklidischer Algorithmus

              To do erganzen Erweiterter Euklidischer Algorithmus fehlerhaft

              Aus der Wikipedia (unter GNU Free Documentation License)

              Beschreibung durch PseudocodeIm Folgenden wird der moderne Euklidische Algorithmus sowohl in einer rekursiven als

              auch einer iterativen Variante beschrieben Dabei sind a und b jeweils die beiden Zahlen derengroszligter gemeinsamer Teiler berechnet werden soll

              Rekursive Variante

              49

              EUCLID(ab)

              1 wenn b = 0

              2 dann return a

              3 sonst return EUCLID(b a mod b)

              Iterative Variante

              EUCLID(ab)

              1 solange b = 0

              2 r = a mod b

              3 a = b

              4 b = r

              5 return a

              FunktionsweiseIn jedem Schritt des Algorithmus wird eine Division mit Rest ausgefuhrt riminus1 = qi+1 middot

              ri + ri+1 0 le ri+1 lt ri Die Division mit Rest hat die Eigenschaft dass ggT(riminus1 ri) =

              ggT(ri ri+1) giltIm letzten Schritt des Algorithmus rnminus1 = qn+1 middot rn + 0 ist rn+1 = 0 und es gilt deshalb

              ggT(rnminus1 rn) = ggT(rn 0) = rn

              Da im ersten Schritt riminus1 = a und ri = b war ist ggT(a b) = rn

              (Quelle httpdewikipediaorgwikiEuklidischer_Algorithmus)

              (Denn es gilt ggT(a b) = ggT(b r))

              Aus der Wikipedia (unter GNU Free Documentation License)

              Man kann diese Rekursion in folgende Abfolge von Schritten fur den erweiterten euklidi-

              schen Algorithmus fassen Erhalte rdquoardquo und rdquobrdquo als EingabeSetze rdquok=0rdquo r0 = a r1 = b s0 = 1 und s1 = 0WiederholeErhohe rdquokrdquo um einsBestimme den ganzzahligen Quotienten qk = rkminus1 div rkSetze rk+1 = rkminus1 minus qk middot rk und sk+1 = skminus1 minus qk middot skbis rk+1 = 0 giltGib den Rest rk = ggT(a b) und die Zahl sk mit ggT(a b) equiv sk middot a (mod b) zuruckJeder Schritt enthalt implizit auch einen Multiplikator tk = (rk minus sk middot a) div b wobei diese

              Division keinen Rest lasst Die Folge (tk)k kann auch explizit bestimmt werden es gelten t0 =

              0 t1 = 1 und tkminus1 equiv qk middottk+tk+1 Nach dem letzten Schritt ergibt sich nun ggT(a b) = sk middota+tk middotbDer Ubersicht halber werden beim handischen Rechnen auch noch die Hilfsfolgen (ak =

              rkminus1)k und (bk = rk)k sowie (uk = skminus1)k sowie (vk = tkminus1)k mitgefuhrt

              50

              Zur Berechnung des Inversen modulo einer Restklasse benotigt man die tk aber nicht und kannsie ignorieren

              Aus der Wikipedia (unter GNU Free Documentation License)

              Rekursive VarianteFur den erweiterten euklidischen Algorithmus existiert auch eine rekursive Variante die

              durch den folgenden Pseudocode gegeben istab zwei Zahlen fur die der erweiterte euklidische Algorithmus durchgefuhrt wirdrdquoextended euclidrdquo(ab)1 rdquorsquowennrdquorsquo b = 02 rdquorsquodann returnrdquorsquo (a10)3 (drsquosrsquotrsquo)larr rdquoextended euclidrdquo(b a mod b)4 (dst)larr (drsquotrsquosrsquo - floor(ab)trsquo)5 rdquorsquoreturnrdquorsquo (dst)

              (Quelle httpdewikipediaorgwikiErweiterter_euklidischer_Algorithmus)

              Wenn n mod m teilerfremd sind dann existiert so ein Exponent f so dass

              n f equiv 1 mod m

              ist

              Wenn m = m1 middotm2 ein Produkt von zwei verschiedenen Primzahlen ist dann ist fur alle n die zum teilerfremd sind

              n(m1minus1)middot(m2minus1) equiv 1 mod m

              Denn es ist nm1minus1 equiv 1 mod m1 und nm2minus1 equiv 1 mod m2 Dann ist n(m1minus1)middot(m2minus1) minus 1 durch m1und m2 teilbar Denn nach dem Chinesischen Restsatz gilt n(m1minus1)middot(m2minus1) equiv 1 mod m1 middot m2 undwenn eine Zahl durch m1 middot m2 teilbar ist so auch durch m1 und m2

              433 Beispiel

              In Magma

              p=17 q=23

              m=(p-1)(q-1)

              e=19

              F=IntegerRing(m)

              51

              d=(Fe)ˆ(-1)

              d=IntegerRing()d

              19315 div 16

              19315 -374 16

              n=pq

              K=IntegerRing(n)

              N=100

              C=(KN)ˆ(e) Verschlusseln

              C

              Cˆd

              10019 equiv 349 mod 349

              349352 equiv 100 mod 391

              10019middot315 = 100 mod 17

              10019middot315 = 100 mod 23

              10019middot315 equiv 100374middot16+1 mod 17 equiv 100 middot (10016)374︸ ︷︷ ︸=1

              mod 17

              To do Analog von Mathias kopieren

              To do Wiederholung einsortieren

              Wiederholung

              Nachricht n

              ne equiv c( mod m)

              Chiffre c

              cd equiv (ne)d = ndmiddote = n1+k(pminus1)(qminus1) = n middot (n(pminus1)(qminus1))k︸ ︷︷ ︸=1

              equiv n middot 1k = n mod m

              nminusrarr

              dm cminusrarr

              em n

              52

              aus (em) kann man (dm) nicht leicht bestimmen weil man die Zerlegung m = p middotq nicht kenntWer p q kennt kann aus den einen den anderen Schlussel berechnen Wer de kennt kann pqbestimmen

              Verschlusselung kann jeder ausfuhren offentlicher Schlussel (em) Entschlusselung bleibt demvorbehalten der das geheime d (oder auch pq) kennt

              schnelles Potenzieren Ist die Berechung von ne ck ausreichend schnell

              m 1000 Bit pq-150 Dezimalstellen

              ne hat sehr sehr viele Dezimalstellen

              Deshalb berechnet man erst modulo und potenziert dann mit e

              (n mod m)e (c mod m)d

              Beispiele n19 = n middot n middot middot n︸ ︷︷ ︸19 Multiplika-tionen

              oder man rechnet

              n n2 n4 n8 n16 4 Quadrierungen

              n16 middot n2 middot n = n19

              so auch bei n1025 = n n2 n1024 n middot n1024 wo nur 11 Multiplikationen gebraucht werden

              Pseudocode nex=1

              repeat

              if (e = 1 mod 2)x = x middot n(prime mod mprime)

              n = n2(prime mod mprime)

              e = ediv2

              until e==1

              k = (nprime)0 middot xprime

              x = k = ne

              53

              44 RSA Rivest Shamir Adleman

              Bei dem Versuch die Idee der Asymmetrischen Kryptografie zu wiederlegen wurde RSA entwi-ckelt

              RSA beruht auf der Schwierigkeit n = p middotq in seine Primfaktoren zu zerlegen Verschlusseln undEntschlusseln ist Potenzieren modulo n

              D E = id

              p = (pe)d mod n

              p = pemiddotd mod n

              e middot d = 1 mod (p minus 1) middot (q minus 1)

              E(e n) ist offentlich und D(d n) geheim Die Bestimmung von e d n aus p q ist leicht GenauerDie Bestimmung von e aus (d n) ist leicht die Bestimmung von d aus (e n) ist schwer weilFaktorisierung n = p middotq (vermutlich) schwierig ist ist Bestimmung von d aus (e n) auch schwerWer p und q aus n berechnen kann kann auch d bestimmen (Euklid)

              Wer e und d kennt kann p und q bestimmen (dazu waren Erlauterungen in der Vorlesung)

              441 Funktionsweise des RSA-Verfahrens

              (nach wwwcryptooldedownloadsCrypToolScript 1 3 04 depdf)Man kann die Einzelschritte zur Durchfuhrung des RSA-Verfahren folgendermaszligen beschrei-ben Schritt 1 bis 3 sind die Schlusselerzeugung Schritt 4 ist die Verschlusselung 5 die Ent-schlusselung

              1 Wahle zufallig 2 verschiedene Primzahlen p und q und berechne n = p middot q Der Wert nwird als RSA-Modul bezeichnet

              2 Wahle zufallig e isin 2 n minus 1 so dass gilt e ist teilerfremd zu J(n) = (p minus 1) middot (q minus 1)Zum Beispiel kann man e so wahlen dass gilt max(p q) lt e lt J(n) minus 1 Danach kannman p und q ldquowegwerfenrdquo

              3 Wahle d isin 1 n minus 1 mit e middot d = 1 mod J(n) dh d ist die multiplikative Inverse zu emodulo J(n) Danach kann man J(n) ldquowegwerfenrdquo

              bull (n e) ist der offentliche Schlussel Pbull (n d) ist der geheime Schlussel S (es ist nur d geheim zu halten)

              4 Verschlusselung des Klartextes (bzw seiner Blocke) M isin 1 n minus 1

              C = E((n e) M) = Me mod n

              54

              5 Entschlusselung des Chiffretextes (bzw seiner Blocke) C isin 1 n minus 1

              M = D((n d) C) = Cd mod n

              442 Beweis der Funktionsweise

              (nach wwwcryptooldedownloadsCrypToolScript 1 3 04 depdf)Fur Schlusselpaare (n e) und (n d) die die in den Schritten 1 bis 3 des RSA-Verfahrens festge-legten Eigenschaften besitzen muss fur alle M lt n gelten M equiv (Me)d mod n wobei (Me)d =

              Memiddotd Das heiszligt der oben angegebene Dechiffrieralgorithmus arbeitet korrekt Wir zeigen das in3 Schritten

              1 Im ersten Schritt zeigen wir Memiddotd equiv M mod p Dies ergibt sich aus den Voraussetzungenund dem Satz von Fermat Da n = p middot q und J(p middot q) = (p minus 1) middot (q minus 1) und da e undd so gewahlt sind dass e middot d equiv 1 mod J(n) gibt es eine ganze Zahl k so dass gilte middot d = 1 + k middot (p minus 1) middot (q minus 1)

              Memiddotd equiv M1+kmiddotJ(n) equiv M middot MkmiddotJ(n) equiv M middot Mkmiddot(pminus1)middot(qminus1) mod p

              equiv M middot (Mpminus1)kmiddot(qminus1) mod p

              (aufgrund des kleinen Fermat Mpminus1 equiv 1 mod p)

              equiv M middot (1)kmiddot(qminus1) mod p

              equiv M mod p

              Die Voraussetzung fur die Anwendung des kleinen Fermat war dass M und p teilerfremdsind Da das im allgemeinen nicht gilt mussen wir noch betrachten was ist wenn M undp nicht teilerfremd sind da p eine Primzahl ist muss dann notwendigerweise p ein Teilervon M sein Das heiszligt aber

              M equiv 0 mod p

              Wenn p die Zahl M teilt so teilt p erst recht Memiddotd Also ist auch

              Memiddotd equiv 0 mod p

              Da p sowohl M als auch Memiddotd teilt teilt es auch ihre Differenz (Memiddotd minus M) equiv 0 mod pUnd damit gilt auch in diesem Spezialfall unsere zu beweisende Behauptung

              2 Vollig analog beweist man Memiddotd equiv M mod q

              3 Nun fuhren wir die Behauptungen der ersten beiden Schritte zusammen fur n = p middot qum zu zeigen Memiddotd equiv M mod n fur alle M lt n Nach den ersten beiden Schritten gilt(Memiddotd minus M) equiv 0 mod p und (Memiddotd minus M) equiv 0 mod q also teilen p und q jeweils dieselbeZahl z = (Memiddotd minus M) Da p und q verschiedenen Primzahlen sind muss dann auch ihrProdukt diese Zahl z teilen Also gilt

              (Memiddotd minus M) equiv 0 mod p middot q

              55

              oderMemiddotd equiv M mod p middot q

              oderMemiddotd equiv M mod n

              45 Schwachen von RSA

              bull Wenn N Nachrichten aus einer kleinen Menge gewahlt werden ist RSA unsicher

              for Nprime do (Nprime)e = C1 if C1 = C then N = Nprime

              bull Wenn N und e zu klein sind ist RSA unsicher dass heiszligt wenn Ne als Zahl kleiner als nist so das nich modulo gekurzt wird so kann man einfach eradicc

              bull Angriff mit frei gewahlten Chiffretext angenommen man hat Zugriff auf die Verschlusse-lungsmaschine so dass man mit selber vorgebenen Cprime Nprime berechnen kann (Cprime minusrarr Nprime)

              Re = S mod n S d = R mod n Cprime = S middotC

              (Cprime)d = S d middotCd = R middot N︸︷︷︸Nrsquo

              mod n

              Nprime middot Rminus1 = N mod n

              N1 minusrarr C1

              N2 minusrarr C2

              rArr N1 middot N2 minusrarr C1 middotC2

              bull Jeder Benutzer braucht ein eigenes n dass heiszligt man muss fur jeden Benutzer die entspre-chenden Primzahlen suchen allerdings ist dies aufwendig

              bull RSA ist extrem langsam im Vergleich zu symmetrischen Verfahren openssl speed rsabzw speed aes-256

              46 Fuktionen in OpenSSL

              461 genrsa

              genrsa erzeugt Schlusselpaare fur RSASchlussellange num_bits frei wahlbar wobei es einen Bug bei kleinen Werten gibt (weniger als60 Bit) so kurze Schlussel aber auch nicht verwendet werden solltenOptionen

              usage genrsa [args] [numbits]

              -out file output the key to file

              -passout arg output file pass phrase source

              56

              -f4 use F4 (0x10001) for the E value

              -3 use 3 for the E value

              -des encrypt the generated key with DES in cbc mode

              -des3 encrypt the generated key with DES in ede cbc mode (168 bit key)

              -idea encrypt the generated key with IDEA in cbc mode

              -aes128 -aes192 -aes256 encrypt PEM output with cbc aes

              -engine e use engine e possibly a hardware device

              -rand filefile load the file (or the files in the

              directory) into the random number generator

              462 rsa

              rsa gibt den public-key zu gegebenen private-key aus Auszligerdem auch weitere Informationenwie verwendeter Modulus Mit rsa kann auch ein gegebener key neu verschlusselt abgespeichertwerden

              rsa [options] ltinfile gtoutfile

              where options are

              -in arg input file

              -out arg output file

              -pubin expect a public key in input file

              -pubout output a public key

              -passin arg input file pass phrase source

              -passout arg output file pass phrase source

              -text print the key in text

              -noout donrsquot print key out

              -modulus print the RSA key modulus

              -check verify key consistency

              -des encrypt PEM output with cbc des

              -des3 encrypt PEM output with ede cbc des using 168 bit key

              -idea encrypt PEM output with cbc idea

              -aes128 -aes192 -aes256 encrypt PEM output with cbc aes

              -inform arg input format - one of DER NET PEM

              -outform arg output format - one of DER NET PEM

              57

              -sgckey Use IIS SGC key format

              -engine e use engine e possibly a hardware device

              463 rsautl

              Mit rsautl konnen Dateien ver- oder entschlusselt und signiert oder verifiziert werden

              Usage rsautl [options]

              where options are

              -in file input file

              -out file output file

              -inkey file input key

              -pubin input is an RSA public

              -certin input is a certificate carrying an RSA public key

              -sign sign with private key

              -verify verify with public key

              -encrypt encrypt with public key

              -decrypt decrypt with private key

              -hexdump hex dump output

              -pkcs use PKCS1 v15 padding (default)

              -oaep use PKCS1 OAEP

              -ssl use SSL v2 padding

              -raw use no padding

              -keyform arg private key format - default PEM

              -passin arg pass phrase source

              -engine e use engine e possibly a hardware device

              464 PKCS

              spater noch ausfuhrlicher hier nur kurz die Verwendung bei RSA

              Padding beginnt mit 0002 endet mit 00 und dann kommt der Chiffretext

              58

              465 OAEP - Optimal Asymmetric Encryption Padding

              Normalerweise wird mit RSA nur ein Schlussel fur eine symmetrische Verschlusselung ver-schlusselt da RSA verglichen mit symmetrischen Algorithmen sehr langsam ist

              Bemerkung Vergleichen mit speed rsa und speed aes (siehe History 21012009)

              Ist die so festgelegte Lange des Klartextes erheblich kleiner als die des RSA-Schlussels so ist einAuffullen der restlichen Bits notig Die implizite Methode (beim Betrachten des Klartextes alsZahl) einfach 0en einzusetzen empfiehlt sich nicht da die Zusatzinformation die ein Angreiferso uber den Klartext bekommt das Decodieren des geheimen Schlussels vereinfacht

              Beim Padding soll diese Gefahr verringert werden Per default wird bei openssl PKCS benutztAllerdings ist die Verwendung von OAEP besser Beim OAEP ist im Gegensatz zum PKCSdie Lange des Klartextes nicht mehr sichtbar (man kann nur noch dass beginnende 00 Byteerkennen) Choosen Plaintext Attacke ist nicht mehr moglich

              Dabei wird essenziell die zu verschlusselnde Nachricht mit einem Hashwert eines Zufalls-Stringsper xor verknupft und so randomisiert Eine Modifikation des benutzten Hashwerts wird dannmit der Nachricht konkateniert und steht beim Entschlusseln wieder zur Verfugung

              1 Label hash Label =

              2 PS erzeugen (alles Nullen 128-1-h-h-1-mdashmmdash)

              3 DB =

              4 Seed wahlen Lange h (irgendwas seed = Hash(irgendwas))

              5 DBmaske = MGF(seed mdashDBmdash)

              6 mDB = DB oplus GBmask

              7 seedmaske = MGF(mDB mdashseedmdash)

              8 mseed = seed oplus seedmaske

              9 EM =

              10 RSA-Verschlusselung C equiv EMe mod n

              MGF Hash Eingabe x Lange l

              tc = Hash(x c)

              mdashcmdash = 4 Byte

              MGF(x l) = t0 t1 t2 t3 |MGF( l)| = l

              59

              Ruckgangig

              1 Entschlusseln

              2 Zerlegen 00 mseed mDB

              3 seedmaske = MGF(mDB mdashmseedmdash)

              4 seed = mseed oplus seedmaske

              5 DBmaske = MGF(seed mdashmDBmdash)

              6 DB = mDB oplus DBmaske

              7 Padding abtrennen

              PKCS1 v15

              Die fur den Modul verwendeten Primzahlen mussen die ersten beiden Bits gesetzt haben dasgarantiert nach Multiplikation der Primzahlen dass das Produkt im oberen Byte das obere Bitgesetzt hat und somit die feste voranstehende 0 uberdeckt

              466 Wie erkennt man an Ciphertexten den Verschlusselungsalgorithmus- DER ASN1

              Standards damit man (zB RSA) verschlusselte Texte erkennt

              DER- distingushed Encoding Rules

              ASN1- Abstract Syntax Notation

              openssl asn1parse -genstr INTEGER4711 -out intasn1 openssl asn1parse -in intasn1 -inform DER

              Integer werden in ASN1 als rsquo 02︸︷︷︸Tag

              lange Datenrsquo kodiert Integers brauchen 1 Byte mehr rsquoDatenrsquo

              damit Das Vorzeichen 00 enthalten ist Integer ist immer mit Vorzeichen

              Tag fur andere Typen

              Bool 01

              Int 02

              Octet String 04

              Bitstring 03 rsquolangersquo rsquoungenutzte bits am Endersquo rsquoByte des Bitstringrsquo [evt ungenutzte Bits]

              Text PRINTABLESTRING

              60

              utf8 UTF8String

              Text mit Zeichen (emailadresse) IA5STRING

              DatumZeit UTC

              mit Jahrhundert GENTIME

              nuscht (der leere Typ) NULL

              Mengentypen seq set

              Mann kann auch eigene Typen generierend EXPLICITAF oder so

              467 Umgehen mit den Schlusselkomponenten

              Ein vollstandiger RSA-Schlussel besteht aus einem Modul (modulus) n = p middot q offentlichemExponent e privatem Exponent d Primzahl 1 p Primzahl 2 q (haufig p gt q) Exponent 1 dpExponent 2 dq Koeffizient qi und kann so ausgegeben und gespeichert werden

              Bei der Version fur rsquoarmersquo werden nur n offentlicher Exponent e und geheimer Exponent dangegeben

              c equiv me mod n (3)

              m equiv cd mod n (4)

              Vorteil der vollstandigen Version Geschwindigkeitserhohung bei der Entschlusselung in Schritt(4)

              dp equiv d mod (p minus 1) d = k middot (p minus 1) + dp

              dq equiv d mod (q minus 1)qi middot q equiv 1 mod q

              m equiv cd mod (p middot q) berechnenm1 equiv cdp mod p 500 Operationen mit 1

              2 langem Modulm2 equiv cdq mod q 500 Operationen mit 1

              2 langem ModulInsgesamt 1000 Operationen mit 1

              4 der Lange

              apminus1 equiv 1 mod p wenn (a p) = 1teilerfremd1

              1kleiner Fermatscher Satz

              61

              m1 equiv cd mod pm2 equiv cd mod q

              h equiv (m1minusm2)middotqi mod p (darauf achten dass das minusm2 mod p ausgerechnet wird nicht mod q)

              m = m2 + h middot q

              1 m lt n2 m equiv cd mod p da m2 + h middot q equiv m2 + (m1 minus m2) middot qi middot q mod p equiv m2 + m1 minus m2 equiv m1 alsoequiv cd mod pm equiv cd mod q da m2 + h middot q equiv m2 mod q also equiv cd mod q

              x equiv y mod p und x equiv y mod q dann folgt x equiv y mod p middot qEuklidischer Algorithmus (p q)-teilerfremd dann p middot u + q middot v = 1 Chinesischer Restsatz

              47 Miller-Rabin Test

              Heute openssl dhparam und was Verbluffendes so dass man es nur mit der Phantasie einesInformatikers oder Mathematikers verstehen kann (Literatur Menezes Oorschot Handbook ofApplied Cryptography)

              Primzahlen Feststellen ob eine Zahl eine Primzahl ist durch Testen von Divisionen wird beigroszligen Zahlen sehr lang

              p middot q = n ausrechnen geht schnell Umkehrung n =middot ist moglicherweise schwer

              Uber 2214+ 1 weiss man dass es keine Primzahl ist2 kennt aber keinen der Faktoren Kriterium

              rdquokeine Primzahlldquo lasst sich auf folgende Art manchmal feststellenWenn (a n) = 1 so ist anminus1 equiv 1 mod nFermatTest Wenn fur (a n) = 1 anminus1 1 mod n so kann n keine Primzahl sein

              Primzahlen Test

              Wenn fur eine Zahl a mit (a n) = 1 der Fermat-Test nicht bestanden wird nennt man a einenZeugen fur Nichtprimalitat

              2Vierzehnte Fermatsche Zahl

              62

              Zeugen gibt es sehr viele nicht realistisch alle zu rdquobefragenldquo Ausserdem gibt es Zahlen diekeine Zeugen haben aber keine Primzahl sind

              Aus diophantischen Gleichungen folgt Es gibt ein Polynom mit ganzzahligen Koeffizienten f (n)mit der Eigenschaft Wenn f (n) gt 0hArr n ist PrimzahlAber das Polynom hat 26 Koeffizienten Fur Mathematiker ist das Problem erledigt da das Poly-nom existiert fur Informatiker ist es das nicht wirklich da die Berechnung ubermaszligig komplexist

              Die Nicht-Primzahlen ohne Zeugen heissen Carmichael-Zahlen Haben die Eigenschaft forallp(p|nrArrp minus 1|n minus 1)rArr CarmichaelZum Beispiel 561 hat Teiler 3 11 17 Der Test liefert 2|560 10|560 16|560

              Erweitern (n Primzahl) Wenn (a n) = 1 und anminus1 equiv 1 mod n und 2|n minus 1 (anminus1 equiv 1 mod na

              nminus12 equiv )

              Wenn x2 equiv 1 mod n was ist x mod n n|x2 minus 1 = (x minus 1)(x + 1) entweder n|x + 1 odern|x minus 1

              FermatTest+ Wenn fur (a n) = 1 anminus1 1 mod n oder falls anminus1 equiv 1 mod n und anminus1

              2 +1und a

              nminus12 minus1 so kann n keine Primzahl sein

              und 4|n minus 1 anminus1

              4 anminus1

              2 anminus1

              1 mod n Diese Folge ist entweder 1 1 1 oder minus1 1 1 oderlowastminus1 1

              Wenn (a n) = 1 und 2k|nminus 1 (k maximal) dann ist die Folge anminus12k a

              nminus12kminus1 a

              nminus12 anminus1 entweder

              1 1 oder lowastminus1 1 1 (lowast steht fur beliebige Folge)

              Probieren n = 81 n minus 1 = 80 durch 2er-Potenzen teilen kommt irgendwas mit 5 hinten rausAls Zeugen nehmen wir mal 2 Ausrechnen 25 210 220 240 280 und schauen ob diese Folgemodulo 81 einen der beiden Typen hat 32 1 mod 81

              FermatTestlowast (= Miller-Rabin-Test) Wenn fur (a n) = 1 2k|n minus 1 teilt und die Folge anminus12k a

              nminus12kminus1

              anminus1

              2 anminus1 modulo n nicht 1 1 und nicht lowastminus1 1 1 dann ist a ein Zeuge fur Nicht-primalitat

              Fur Miller-Rabin-Test gibt es keine zeugenlosen zusammengesetzten Zahlen es gibt unter denzu n teilerfremenden Zahlen mindestens 25 Zeugen3 (MenezesOorschot Kapitel 4 Fact 425Fact 448 Tabelle 43)

              Die fur Informatiker interessante Frage ist die Frage Wenn man eine Wahrscheinlichkeit kleiner2minus80 fur eine fehlerhaft durch Miller-Rabin nicht erkannte zusammengesetzte Zahl haben will

              3Anmerkung spater 34 sind Zeugen 1

              4 sind Lugner

              63

              muss man fur n (512 Bit) 6 Tests machen Je groszliger die Zahlen werden desto weniger Testsmuss man machen Fur 1024 3 Tests fur 2048 2 Tests Vorausgesetzt ist immer noch ein Testauf kleine Faktoren Dabei pruft man ob (n pi) = 1 fur pi lt B wobei pi kleine Primzahlen sindDas B wahlt man so dass dieser Test nicht langer dauert als ein Miller-Rabin-Test

              Wie wahlt man Primzahlkandidaten Generiere Zahl mit Zufallszahlengenerator schaue ob diedurch 2 oder so teilbar ist wahle dann die nachste Zahl

              openssl dhparam -dsaparams -text -noout 2048 schnellopenssl dhparam -text -noout 2048 langsam

              Safe Prime pminus12 hat einen groszligen Primzahlfaktor q dann getestet ob 2(k middot (q + 1)) Primzahl ist

              pminus12 ist Primzahl

              Wofur braucht man die Primzahlen Naturlich fur RSA und jetzt neu

              48 Diffie-Hellman-Schlusselaustausch

              Alice und Bob haben gemeinsame offentliche Informationen tauschen offentliche Informationenaus und verfugen danach beide uber einen gemeinsamen privaten Schlussel

              g = 2 (offentlich bekannt (Generator)) Primzahl p (offentlich bekannt)

              Erganzungen g g2 g3 gpminus1 mod p (g Generator dann alle verschieden)

              Bob Alice

              Eve

              x y

              g^y mod p

              g^x mod p

              64

              Bob wahlt zufallig 1 lt x lt pminus 1 und ruft Alice gx mod p zu Alice wahlt zufalig 1 lt y lt pminus 1und ruft gy mod p zu

              Bob berechnet (gy)x mod p und Alice berechnet (gx)y mod p Beide erhalten gxmiddoty mod p An-greifer Eve kennt nur gx mod p gy mod p fehlt gxmiddoty mod p

              Wenn Eve das diskrete Logarithmusproblem losen konnte also zu gx mod p und g mod pdas x ausrechnen konnte dann ware gxmiddoty mod p leicht zu berechnen Die besten Algorithmenfur das diskrete Logarithmusproblem mod p sind subexponentiell im groszligten Primfaktor vonp minus 1

              Falls (p minus 1) viele kleine Primfaktoren pi hat ist das diskrete logarithmus Problem leicht denndann lost man das Problem nicht a mod (pminus1) sonder jeweils a mod pi und setzt0 dass ganzedann mit dem Chinesischen Restsatz zusammen

              Sucht p so dass pminus12 auch eine Primzahl ist dazu wird zuerst eine Primzahl pprime gesucht und dann

              geguckt ob 2pprime + 1 auch Prim ist

              Openssl

              Variante DH (DSAparam) (-dsaparam)

              p-Primzahl 1536

              g-rsquoGeneratorrsquo nicht von (p minus 1) sondern von der Restklasse h

              160 Bit g g2 g3 gh alle verschieden mit h=160 Bit

              Dann sollen xy so gewahlt werden dass 1 lt x y lt h = 160 Bit

              Ein weiteres asymmetrisches Cryptosystem kann man darauf aufbauen Alle kennen g und pjeder generiert sich x (privater Schlussel) und gx mod p wird veroffentlichtAlice will Bob etwas verschlusselt schickenSie generiert ein k berechnet aus k und Bobs veroffentlichtem gx a = (gx)k mod p und ausdem allgemein bekanntem g gk mod pM sei die Nachricht ( mod p) die Alice verschicken will Sie berechnet a middot M mod p undsendet an Bob das Paar (gk mod p a middot M mod p)Bob berechnet (gk)x mod p = a und dividiert amiddotM

              a mod p und erhalt somit M

              Der Schlussel a darf nicht zweimal verwendet werden

              Man nennt (gk a) zeitweiliger bzw ephemeraler Diffie Hellmann Schlussel

              Nachteil die Nachrichtenlange wird verdoppelt

              65

              Das Verfahren ist unsicher wenn Alice die Zahl x schlecht wahlt x = 1 2 1 2 1 2 1 = x1 x2

              49 ElGamal-Cryptosystem

              (siehe auch TR 3111 vom BSI auf Seite 21)

              Auf Diffie-Hellmann aufbauendAlice offentlicher Schlussel ga (p g) privat aBob offentlicher Schlussel gb (p g) privat b

              Alice will an Bob schicken

              1 Zufallszahl k generieren

              2 Berechne mit Bobs Parametern gk mod p

              3 Berechne mit Bobs Parametern (gb)k mod p (DH-Schlussel)

              4 Berechne m middot (gb)k mod p

              5 Sende(gkm middot (gb)k

              )mod p

              Bob empfangt (x y)

              1 Berechne xb mod p (DH-Schlussel)

              2 y middot (xb)minus1 mod p = m mod p

              Alice baut also einen temporaren DH-Schlusselteil4 zu Bobs Parametern und sendet diesen unddie damit verschlusselte Nachricht m

              Nachteil Nachricht wird durch den Ephemeralschlussel doppelt so lang

              410 Wiederholung DH

              Generator gPrimzahl pga mod p Restklassen mod p = Korper(middot inverses)Dass p Primzahl ist ist eigentlich ZufallErzeugendes Element GOperation auf Elementen +

              a middotG = G + G + G + + G a-malEs muss schwer sein aus G und B = a middotG gegeben das a zu bestimmenG muss eine Ordnung n haben n middotG = 0 (Neutrales Element der Operation +)

              4Auch Ephemeralschlussel genannt

              66

              4101 Beispiel

              Alice Bob G+ nAlice denkt a denkt a middotGBob denkt b denkt b middotGBeide tauschen a middotG und b middotG aus und berechnen a middot b middotGa middotG ist leicht zu berechnen double and adda = a0 + a1 middot 2 + + ak middot 2k

              a middotG = a0 middotG + a1 middot 2 middotG + + ak middot 2k middotG(k minus 1)-mal rdquomiddot2ldquo und (k minus 1)-mal rdquo+ldquo

              411 was anderes

              Nimmt man nun G groszlige Gruppe mit n Elemente und der Addition +

              g-Generator

              g 2g 3g nG︸︷︷︸Nullelement

              Alice wahlt 1 lt x lt n bestimmt x middot g

              Bob wahlt 1 lt y lt n bestimmt y middot g

              Dann wieder K = (ab) middot g = K

              To do erganzen

              Problem des Diskreten Logarithmus in G gegeben ist G g Generator ist 0 c = a middot g in Ggesucht alogGc-diskreter Logarithmus in G

              Diese Variante funktioniert also mit allen rsquoKomplizierten Gruppenrsquo das fuhrt zu dem nachstenThema

              412 Elliptische Kurven

              Wo gibt es so etwas schon Elliptische Kurven Sind nicht weit verbreitet weil sie dem Mana-gement schwer zu erklaren sind

              67

              Aus der Wikipedia (unter GNU Free Documentation License)

              In der Zahlentheorie ist eine elliptische Kurve eine singularitatenfreie algebraische Kurve derOrdnung 3 in der projektiven Ebene

              Von besonderem Interesse zB fur die Faktorisierung naturlicher Zahlen sind aufgrundihrer einfachen Struktur elliptische Kurven der Form cy2 = x3 + ax + b mit c 0 und 4a3 +

              27b2 0 Einige moderne Verschlusselungsverfahren basieren auf solchen Kurven Der Nameleitet sich historisch davon ab dass diese Kurven durch elliptische Integrale parametrisiertwerden konnen

              Elliptische Kurven uber endlichen Korpern werden in der Kryptografie eingesetzt Dazuwird ausgenutzt dass eine Gerade (lineare Funktion) die zwei Schnittpunkte P und Q mit ei-ner Elliptischen Kurve hat diese auch in einem 3 Punkt schneidet Der Punkt der aus demletzteren durch Verkehren des Vorzeichens der Y-Koordinate (wenn die Kurve die oben ange-gebene Form hat) entsteht wird P + Q genannt Man kann zeigen dass diese Punktaddition(P und Q werden addiert das Ergebnis ist der Punkt P + Q) sowohl kommutativ als auch as-soziativ ist Erganzt man die Elliptische Kurve um einen weiteren Punkt 0 (genannt Punkt imUnendlichen) so bildet sie zusammen mit der (etwas erweiterten) Punktaddition eine abelschealgebraische Gruppe

              Sei nun P ein Punkt der Elliptischen Kurve Der Punkt P + P wird mit 2P bezeichnetentsprechend definiert man kP = P + + P als k-fache Addition des Punktes P Ist P nichtder 0-Punkt und ist die Ordnung der Elliptischen Kurve prim so kann auf diese Weise jederPunkt der Kurve erreicht werden (dh zu jedem Punkt Q auf der Kurve existiert eine naturlicheZahl k mit Q = kP) Die Aufgabe aus gegebenen Punkten PQ diesen Wert k zu ermittelnwird als Diskretes Logarithmus-Problem der Elliptischen Kurven (kurz ECDLP) bezeichnetEs wird angenommen dass das ECDLP (bei geeigneter Kurvenwahl) schwer ist dh nichteffizient gelost werden kann Damit bieten sich Elliptische Kurven an um auf ihnen asymme-trische Kryptosysteme zu realisieren (etwa einen Diffie-Hellman-Schlusselaustausch oder einElgamal-Kryptosystem)

              y2 = x3 + a middot x + b Skizze der Kurven S2Zu S2 Punkte auf der Kurve kann man addieren

              Die Rechenregeln gehen auch in einem Korper mod pBeispiel y2 equiv x3 + a middot x + b mod p Skizze S3

              Es gibt immer Punkte mit denen man rechnen kann Punkte sind geeignet die Addition funk-tioniert auch und hat die Anzahl N der Punkte einen groszligen Primzahlteiler dann haben wir auchKryptosystem mit G+ n Wenn groszliger Primzahlteiler exisitert1 N hat groszligen Primzahlteiler n2 Wahlen zufallig einen Punkt G als GeneratorDaraus erhalt man DH und El Gamal

              Zuerst eingefuhrt durch Victor Miller und Neal Koblitz um 1980 herum Damals war N schwer

              68

              bestimmbar Inzwischen gibt es bekannte Algorithmen (Schoof-Algorithmus)Diskretes Logarithmusproblem ist fur elliptische Kurven wirklich exponentiell (bis jetzt) EinBit mehr verdoppelt den Rechenaufwand (192-Bit-256 Bit bewegt sich in GroszligenordnungenRSA 2000-4000-Bit)

              Erganzung

              1Bei der Erforschung von Eliptischen Kurver stellte sich zuerst die Frag wie groszlig ist eigentlichdie Ordnung n der Gruppe Man wusste n sim p und man wusste sogar n minus p + 1 minus

              radicp lt n lt

              minusp + 1 +radic

              p

              2 Schnelle Algorithmen zur Berchnung der Ordnung

              3 ECDLP ist schwer wenn n einen groszligen Primfaktor hat

              To do sortieren

              Erganzung

              man hat p a bG n h

              K = y2 = x3 + ax + b

              p ist fur die Punktaddition (Formeln siehe enwikipediaorg wobei λ = (yQ minus yP) middotminus1

              (xa minus xp)︸ ︷︷ ︸mit GGT

              mod p)

              Anmerkung zum Wikipedia Artikel binary Case bedeutet man die Eliptischen Kurven auch inKorper mit 2k betrachten allerdings vieler solcher Falle patentiert

              G = Generatorpunkt mit G 2G 3G nG alle verschieden n kleinste Zahl so dass alle ver-schieden

              nG = 0

              bei der DSA-Parameter Form nimmt man weniger Grsquos

              Der nachste Parameter ist der cofactor h welches den Unterschied zwischen n und der Anzahlder Produkte auf der Kurve angibt

              Trick beim testen ob alle iG verschieden sind man guckt ob n eine Primzahl ist und ob nG = 0ist wenn ja ist dies das erste mal sonst ware n ja keine Primzahl Also sind alle vorherigen iG

              69

              verschieden

              Kurven finden besser Bestimmung der Punktanzahl ist schwer

              Fruher gab es kleine cofactoren h lt 16

              openssl ecparama -list_curves sind schon vorher erzeugt kann openssl nicht selber

              openssl ecparam -name secp160k1 -text -noout da die Kurve festgelegt ist gibt es nurein object zuruck

              openss ecparam -name secp160k1 -text -param_enc explicit -noout

              openss ecparam -name secp160k1 -text -param_enc explicit -noout -conv_form compressednichtkomprimiert gibt nur die x-Koordinate aus

              Bei der komprimierten Form kann mit der Kurve die andere eindeutig bestimmen (oder so)

              Darstellung als komprimierte Punkt ist auch wieder patentiert

              413 Elliptische Kurven Nachtrag

              GF(p) (Galois-Field) sind Kurven mod p mit p Primzahl erfullen Gleichungen der Form y2 =

              x3 + a middot x + b

              GF(2k) Korper mit 256 Elementen = 28

              In OpenSSL nur elliptische Kurven mod p patentfrei

              Kofaktor finden Wir haben Punktgruppe G es gibt einen Generatorpunkt gn middotG = 0 n ist die Ordnung

              cofactor︸ ︷︷ ︸klein

              lowast order︸︷︷︸primzahl

              = Anzahl der Punkte

              (cofactor soll klein sein order Primzahl) Anstelle Punkt auf der elliptischen Kurve als (x y) (x ymod p) abzuspeichern TrickWenn es ein Punkt ist gibt es zu x zwei y die quadratische Gleichung y2 = x3 +a middot x+b erfulleny1 =

              radicx3 + ax + b mod p

              y2 = minusradic

              x3 + ax + b mod peine der beiden Zahlen hat als letztes Bit immer 1 die andere eine 0 man nimmt daher nur noch(x LSB(y)) (x und kleinstes Bit von y)

              70

              414 Rucksack-Verschlusseln

              Kryptosystem das sich bei OpenSSL zu recht nicht findet Hat den Anschein als wurde es aufeinem NP-vollstandigen Problem beruhen Problem ist NP-vollstandig weil es ein allgemeinesRucksackproblem istSieht aber nur so aus ist aber nur polynomial weil es ein Transformiertes eines leichten Ruck-sackproblems ist

              Gegeben W Fassungsvermogen des Rucksacks w1w2 wk kleine GewichteGesucht W =

              sumeiwi mit ei isin 0 1

              Rucksack-Verschlusseln von MerkleHellmann Rucksack mit schnell wachsenden Gewichtenist leicht zu berechnendh wi gt

              sumjlti e jw j nachstes Gewicht ist immer schwerer

              4141 Beispiel

              Rucksack W = 51 = 31 + 15 + 3 + 2 wprimei s 2 3 7 15 31Grundidee Aus dem schnellen Rucksack einen langsamen machenM gt

              sumwi k mit (M k) = 1 k middot 2 k middot 3 k middot 31 mod M

              M = 61 ist Modul k = 17 ist privater Schlussel m = (1 1 0 1 1) ist unverschlusselte Nachricht31 51 58 11 39 ist offentlicher Schlussel 34 + 51 + 11 + 39 = 135 = 13rarr c ist verschlusselteNachrichtEmpfanger rechnet aus dem erhaltenen Gewicht (135) das richtige Gewicht wieder raus 135middotkminus1

              mod 61 = 51 und kann das Problem mit den schnellen Gewichten losen

              Zum BrechenMan transformiert 34 51 58 11 39 in eine Folge die schnell wachsend ist zB 1 3 5 11 29dh das transformierte System kann auf mehrere Probleme zuruckgefuhrt werden man brauchtnur eine passende Rucktransformation finden Adi Shamir hat dafur einen polynomiellen Algo-rithmus angegeben

              415 Merkle Puzzle

              Man generiert sich 1000000 Nachrichten rdquoDas ist Nachricht ni fur den Schlussel k jldquo ni zufalli-ge 20-Bit Zahl k j 128-Bit SchlusselVerschlusselungsverfahren DES diese 1000000 werden mit 20-Bit Schlusseln verschlusseltAlice schickt die 1000000 Nachrichten an Bob als offentlichen SchlusselBob will Alice eine Nachricht schicken Er sucht eine der Nachrichten aus dem offentlichen

              71

              Schlussel aus und macht eine Brute-Force Attacke auf diese Nachricht Er findet ni und kiBob verschlusselt mit dem ki seine Nachricht und sendet ni im Klartext mit

              Alice und Bob haben linearen Aufwand Eve quadratischen

              Von everything2comAlice and Bob agree on a symmetric algorithmAlice generates a large number (over a million at least) of messages of the form ldquoThis is myindex X and my puzzle is Yrdquo Each of the messages is encrypted with a 20-bit keyAssume there are 220 (about a million) messages it takes 220 operations to get the key and acomputer can perform 220 operations per second Bob takes 1 second to recover the key to amessage Eve takes 12 daysNow make that 230 (about a billion) messages Bob still only takes a second to get the key andit will take Eve 34 years

              Public Key Idee hier schon vorhanden

              416 Rabin-Verfahren und Wurzelziehen

              Aus der Wikipedia (unter GNU Free Documentation License)

              Das Rabin-Kryptosystem ist innerhalb der Kryptologie ein asymmetrisches Kryptosystem dasauf einem Faktorisierungsproblem beruht und mit RSA verwandt ist Es lasst sich prinzipiellauch zur Signatur verwenden In der Praxis findet das Verfahren allerdings wegen bestimmterAngriffsmoglichkeiten kaum Anwendung

              4161 Schlusselgenerierung

              Aus der Wikipedia (unter GNU Free Documentation License)

              Seien p und q zwei moglichst groszlige Primzahlen fur die eine bestimmte Kongruenzbedingunggelten muss Der offentliche Schlussel n wird durch Multiplikation der beiden Zahlen erzeugtalso n = p middot q Der geheime Schlussel ist das Paar (p q) Anders ausgedruckt Wer nur n kenntkann ver- aber nicht entschlusseln wer dagegen p und q kennt kann damit auch entschlusselnZum Erzeugen des offentlichen Schlussels mussen die Zahlen p und q bekannt sein Der offent-liche Schlussel lasst sich nur genau aus den beiden Primzahlen erzeugenWaren p und q keine Primzahlen so lieszlige sich das Verfahren ubrigens nicht anwendenSeien beispielhaft p = 7 q = 11 (in der praktischen Anwendung handelt es sich um sehr vielgroszligere Zahlen um die Entschlusselung durch Dritte so schwierig wie moglich zu machen)Daraus ergibt sich der offentliche Schlussel n = p middot q = 77

              72

              4162 Kongruenzbedingung

              Aus der Wikipedia (unter GNU Free Documentation License)

              Fur p und q muss die Kongruenzbedingung(

              pminus1p

              )= (p minus 1) und

              ( qminus1q

              )= (q minus 1)

              (wobei fur(

              nminus1n

              )= (n minus 1)

              nminus12 equiv (n minus 1) mod n = (n minus 1) gilt)

              oder einfacher ausgedrucktp equiv q equiv 3 mod 4gelten

              Allgemein gilt namlich fur die Primzahl r mit r equiv 3 mod 4 und die Zahl a mit a equivb2 mod ra

              (r+1)4 equiv

              radica mod r

              Diese Eigenschaft dient dazu spater die Entschlusselung zu erleichternWegen 7 equiv 11 equiv 3 mod 4 ist die Kongruenzbedingung fur das Beispiel erfullt

              n = p middot q Produkt von Primzahlen

              m soll verschlusselt werden c equiv m2 mod n (einfach Quadrieren weil Wurzelziehen schwer istwenn der Modul ein Produkt von 2 Primzahlen (p middot q) ist weil wer Wurzel ziehen kann kannauch Faktorisieren (n)

              Begrundung Es gibt 2 Losungen c = x2 equiv y2 mod n Wie findet man nun die Faktoren von nn teilt x2 minus y2 = (x minus y)(x + y) und x gt y und (x minus y) lt n und n hat nur 2 Primfaktoren daherx minus y = p und x + y = q Wurzelziehen ist leicht mod p mod q Gesucht Wurzel c mod pxp = c

              p+14 mod p und xq = c

              q+14 mod q

              x2p equiv c

              p+12 equiv c

              pminus12 middot c mod p

              Weil cpminus1 equiv 1 mod p ist (nach kleiner Fermat) die Wurzel daraus cpminus1

              2 equiv plusmn1 wegen c equiv m2

              mod n gilt (m2)pminus1

              2 equiv mpminus1 equiv 1(p) Stuck fehlt Ende des Wurzelziehens

              4163 Verschlusselung

              Aus der Wikipedia (unter GNU Free Documentation License)

              Sei nun P = 0 nminus1 der Klartextraum (er besteht also aus Zahlen) und m isin P der KlartextNun lasst sich der Geheimtext c durch c = m2 mod n bestimmen Dabei ist c der QuadratischeRest von zu der Quadratzahl m2 zum Modulo der Schlussel-Zahl n Im praktischen Einsatzbietet sich die Verwendung von Blockchiffre an

              In unserem Beispiel sei P = 0 76 der Klartextraum m = 20 der Klartext Der Ge-heimtext ist hierbei nun c = m2 mod n = 15

              73

              Dabei muss man beachten dass fur genau vier verschiedene m das c den Wert 15 aufweistnamlich fur m isin 13 20 57 64 Ahnliches gilt fur die meisten c

              4164 Entschlusselung

              Aus der Wikipedia (unter GNU Free Documentation License)

              Seien allgemein c und r bekannt gesucht wird m isin 0 n minus 1 mit m2 equiv c mod r Furzusammengesetzte r (beispielsweise unsere n) existiert kein effizientes Verfahren zur Bestim-mung von m Ansonsten wenn also r isin P (in unserem Fall p und q) dann lasst sich jedoch derchinesische Restsatz ausnutzen

              In unserem Fall sind nun die Quadratwurzelnmp =

              radicc mod p

              undmq =

              radicc mod q

              gesuchtWegen obiger Kongruenzbedingung gilt

              mp = c(p+1)

              4 mod pundmq = c

              (q+1)4 mod q

              In unserem Beispiel ergeben sich mp = 1 und mq = 9Mit dem erweiterten euklidischen Algorithmus werden nun yp und yq mit yp middot p+yq middotq = 1

              bestimmt In unserem Beispiel erhalten wir yp = minus3 und yq = 2Nun werden unter Ausnutzung des chinesischen Restsatzes die vier Quadratwurzeln +r

              minusr +s und minuss von c + nZ isin ZnZ berechnet (ZnZ steht hierbei wie ublich fur die Menge derRestklassen modulo n die vier Quadratwurzeln liegen in der Menge 0 n minus 1)

              r = (yp middot p middot mq + yq middot q middot mp) mod nminusr = n minus rs = (yp middot p middot mq minus yq middot q middot mp) mod nminuss = n minus s

              Eine dieser Quadratwurzeln mod n ist wieder der anfangliche Klartext m Im Beispielgilt m isin 64 20 13 57

              417 Angriffe auf asymmetrische Verschlusselungsverfahren

              Fall RSA

              74

              4171 1 Angriff Common modulus attack

              Idee Gleicher Modul fur verschiedene Leute hatte den Vorteil dass man sich nur die kleinenoffentlichen Exponenten e1 und e2 merken muss nicht mehr die groszligen Module hat aber Nach-teil (e1 e2) = 1 teilerfremd umiddote1+vmiddote2 = 1 (mit erweitertem Euklid) Sendet man eine Nachrichtm an zwei Alices berechnet also c1 = me1 mod n und c2 = me2 mod n dann kann man mitden Chiffren c1 und c2 auch ausrechnen cu

              1 middot cv2 = me1u middot me2u = me1u+e2v = m mod n Nachricht

              erhalten

              4172 2 Angriff kleiner geheimer Exponent d

              Wenn |d| lt |m|3 dann ist Faktorisieren moglich Sicherheitsrisiko geheimer Exponent muss im-

              mer moglichst groszlig sein aus groszligem offentlichen Exponenten |e| kann man erfahren dass dergeheime Exponent klein ist

              4173 3 Angriff Faktorisieren

              Wenn p ungefahr so groszlig wie q also p minus q = ∆ klein ist dann ist ( p+q2 + ∆

              2 ) (ungefahr Wurzel n+ was kleines = p) middot( p+q

              2 minus∆2 ) = p middot q Man weiszlig dass die eine Zahl uber Wurzel n liegt und die

              andere Zahl unter Wurzel n (Wurzel n + klein = p Wurzel n - klein = q)

              4174 Echt schlechte RSA-Schlussel

              n = 3middotq (1024 Bit) und offentlichen Exponenten bei TCTrustCenter abgegeben Damit kann manzeigen dass PGP als Signaturverfahren schlecht ist Schlussel schlecht gewahlt dadurch kannjeder die Kommunikation mitlesen da n sehr leicht zu Faktorisieren die Leute sie konntender Person mit dem schlechten Schlussel vertrauenswurdige Nachrichten schicken und laufenin die Falle dass ihre Nachrichten nun offentlich sind Anderer Fall Bewuszligt solche Schlusselvergeben um Nachrichten in einem kompletten Netzwerk lesen zu konnen

              n = Primzahl e middot d equiv 1 mod (n minus 1)

              Mit n als Primzahl geht normale Entschlusselung nicht

              n p q e dp dq qi dc equiv me mod nm1 equiv cdp mod pm2 equiv cdq mod qdp equiv d mod (p minus 1)

              75

              dq equiv d mod (q minus 1)

              m = m2 + (m1 minus m2) middot qi︸ ︷︷ ︸mod p

              middotq

              m equiv cd mod q und m equiv cd mod prArr cd

              Bundesamt fur Informationssicherheit sagt zur Verwendung von RSA p q mussen unabhangigvoneinander zufallig erzeugt werden und 0 5 lt | log2 p minus log2 q| lt 30

              4175 Schnelles Faktorisieren bei Fehler im System

              DFA - Differential Fault Attack System das entschlusselt aber sich an einer Stelle verrechnetmprime1 ist Rechenfehler statt wirkliches m bekommt man ein mprime = m2 + (mprime1 minus m2)qi lowast qbildet man nun m minus mprime 0 aber durch q teilbar dh bringt man das System dazu einen Fehlerzu machen und hat man die Originalnachricht GGT (m minus mprime n) = q schon hat man den Mo-dul faktorisiert hat funktioniert viele Chipkarten verrechneten sich unter Streszlig Es reicht dasmprime zu kennen m kann unbekannt bleiben denn man rechnet (mprimee minus c n) = q es reicht eineentschlusselte Nachricht zu haben

              Anderer Angriff auf ChipkartenDPA - Differential Power Analysis Stromverlauf ansehen Differenzen bilden und sequentiellanalysieren

              Angriff auf El Gamal Systemegeheimer Schlussel a offentlich g p ga Verschlusselte Nachricht zufalliges k (gk mmiddotgak)= c 1Angriff k gleich fur verschiedene Nachrichten oder k1 k2 in Abhangigkeit oder k k+1 k+2 fur verschiedene Nachrichten oder a middot k + b

              4176 Angriff mit gewahltem Chiffretext

              Normalerweise bei RSA m minusrarr c = me mod n

              cprime vorgegeben fuhrt zu Klartext mprime = (cprime)d mod nAnforderung Beliebiger Chiffretext auszliger cprime = c wahlbar zu dem man dann den Klartext erhalt

              Problem bei RSA

              1 r (zufallig gewahlt)rarr re mod n = s

              2 cprime = s middot c mod nVerschlusselungsmaschine liefert dann (cprime)d = sd middot cd = (re)d middot m = r middot m mod n = mprime

              76

              3 Letzter Schritt m = mprime = rminus1 mod n

              Das geht nur theoretisch in der Praxis geht das nicht weil Angreifer kann das r nicht steuernr middot m wird aber von der Verschlusselungsmaschine verworfen weil es bei zufalligem r keinkorrektes Padding hat

              Schwache des RSA Multiplikationseigenschaftm1 rarr c1 und m2 rarr c2 (m1 m2 gultige Klartexte)m1 middot m2 rarr c1 middot c2m1 middot m2 nicht als gultiger Klartext zugelassen

              5 Signaturmechanismen

              Wie erstellt man signierte Daten und versucht ein Aquivalent zu dem zu schaffen was man imtaglichen Leben durch Unterschriften schafftEigenschaften einer Signatur sollen nachgebildet werden Man weiszlig von wem ein Dokumentkommt sie ist an eine Person gebunden und kann von niemanden sonst nachgemacht werden undvom Inhaber nicht abgestritten werden Nachtragliche Anderungen an unterschriebenen Doku-menten sollen nicht mehr moglich sein (gibt es so im echten Leben nicht)

              51 Integritatsschutz und Hashfunktionen

              To do neu Hashfunktionen Definition einsortieren

              Hashfunktion Beliebige Daten werden auf Binarfolgen konstanter Lange abgebildet

              Def Eine Hashfunktion H ist eine Abbildung 0 1lowast rarr 0 1k auf Hashwerte der Lange k

              SHA-256 (SHA- Secure Hash Algorithmen) - Hashwerte der Lange 256 Bit

              1 Es gibt Kollisionen

              d1 d2 H(d1) = H(d2)

              2k Hashwerte aber potentiell abzahlbar viele Daten

              Wunsch

              Man soll diese Kollisionen nicht finden konnen und am besten es gibt sie nicht Hashfunktionendienen zum unterscheiden von Daten

              77

              H(d1) H(d2) dann ist d1 d2

              Dementsprechend groszlig muss das k sein so dass genugend viele Werte unterscheiden kann

              Anforderungen an Hashfunktionen

              Wunsch Kollisionsresitent (schwer Kollisionen zu konstruieren) man kann nicht zwei Doku-mente mit dem gleichen Hashwert konstruieren

              Wunsch Zweites Urbild resistent (schwer zweites Urbild zu konstruieren) man kann zu einemDokument nicht ein zweites mit dem gleichen Hashwert bestimmen

              Geburtstagsparadoxon Kollisionen entstehen zum Beispiel in Horerkreisen 23 Horer(innen)dann haben mit mehr als 50 Wahrscheinlichkeit zwei am gleichen Tag Geburtstag

              H Horer rarr Datum h 7rarr Geburtstag(h)

              h1 h2 H(h1) = H(h2)

              Bestimme die Wahrscheinlichkeit dass keine zwei am gleichen Tag Geburtstag haben

              1 minus g =365middot middot(365minusn+1)

              (365n) wobei n die Anzahl der Horer ist (Fur n = 23 ungefahr 50)

              radic365 20

              g radic

              Hashwerte

              Bei 2128 Hashwerte muss man mit Kollisionen rechnen ( Bsp 30 bei 19 Personen 19 radic

              365)

              Merke Das Geburtsatgs Paradox beschert uns Kolisionen bei 2k2 Hashwerten

              To do ende Neu

              Hashfunktionen Schon bekannt aus dem ersten Semester (Hashtabellen)

              Allgemeine Eigenschaften

              1 Komprimieren beliebig lange Werte auf n-bit Werte

              2 Einfach (und schnell) berechenbar

              Werte Fingerabdruck Prufwert Hashwert

              78

              Kollisionen h(x) (Hashfunktion) mit x1 x2 aber h(x1) = h(x2) x1 und x2 ist KollisionWahrscheinlichkeit fur Kollision fur zufallig gewahlte Werte sollte 1

              2n sein (Anforderung anHashfunktion)

              Wir verlangen dass die Variabilitat in der Eingabe sich auch in den Prufwerten widerspiegeltsprich Wenn die Eingabewerte gleichverteilt sind sind es auch die Ausgabewerte

              To do 20090422

              To do einsortieren

              Kollisionen rsquovermeidenrsquo durch Groszlige 160 Bit Prufwerte (280 fur Kollision (2100 mdash AES 128 mdashbzw 2112 2128 als Kollisionsschranken)

              Zusatzlich Voraussetzungen fur die Pruffunktion

              1 Kollisionsresistenz Es muss schwer sein zwei Nachrichten m1m2 zu finden so dassH(m1) = H(m2)

              (Es ist schwer Zwillinge zu konstruieren)

              2 Zwillingsresistenz Es muss schwer sein (also kryptografisch Aufwendig) zu einer Nach-richt m1 eine Nachricht m2 zu konstruieren so dass H(m1)FH(m2) ist

              (Wenn man eine Bruder hat dann ist es schwer eine zwillings Schwester dazu zu konstru-ieren)

              (aufwendiger als erstens)

              3 Urbildresistenz Es muss schwer sein zu einem beliebigen Prufwert h eine Nachricht zukonstruieren so dass H(m) = h ist

              4 Die Prufwerte mussen rsquozufalligrsquo aussehen Die Ausgabe von H genugt Anforderungen aneinen Zufallszahlengenerator (gewisse statistische Unauffalligkeit) also pseudozufallig

              Eigentlich musste man noch mehr Fordern namlich dass man keine zwei Nachrichten findet diesehr ahnliche Hashwerte haben und dass man zu einer gegeben Nachricht keine Nachricht miteinem ahnlichen Hashwert findet

              Beispiel H gute Pruffunktion

              H(m) =

              |m| n fix so Hprime(m) = 0||H(m)(H(m) rangehangen)|m| = n so ist Hprime(m) = 1||m( rangehangen)

              h ist die Lange der Prufwerte von H

              79

              Hprime ist kollisionsresistent wenn es H ist aber nicht urbildresistent

              To do sortieren

              openssl 097d (2004) Prufwertstandardverfahren ist MD5

              Hashfunktion enthalt eine rsquoKompressionsfunktionrsquo m1

              To do Bild-siehe Blatt - 20090422

              K(sm) = sprime

              K(sm) = K(sm2)

              K(s1m1) = K(s2m2)

              s1 und s2 als Ergebnisse einer Prufwertberechnung darstellen

              K(s1m11) = s1 K(s01m21) = s2

              K(s1m12) = s K(s2m22) = s

              der rechte Teil war 2004 schon bekannt es musste nur noch die linke seite gelost werden

              511 Schlussellose Hashfunktion (Prufsummen ohne Schlussel)

              h x minusrarr h(x)Ausschlieszliglich Prufwert Gute Auswahl garantiert dass man mit h(x) feststellen kann ob xverandert wurde

              xprime ist verandertes DokumentDatenBerechnung des Prufwerts liefert h(xprime) = hprime h(x) bei guter Hashfunktion Veranderung kannalso festgestellt werden

              80

              Zusatzlich verlangte Eigenschaften

              1 Kollisionsresistenz Es ist schwer Kollisionen zu erzeugen Dh es ist schwer x1 x2 mith(x1) = h(x2) zu findenHeute ublich n = 80 oder n = 100 280 oder 2100 in sim 280 Schritten Definitiv 256 istnicht schwer 264 ist nicht mehr so schwer

              2 Zwillingsresistenz Zweites-Urbild-Resistenz second preimage resistance Es ist schwereinen Zwilling zu erzeugen ist x1 mit h(x1) vorgegeben so ist es schwer einen Zwillingx2 zu erzeugen mit h(x1) = h(x2)(Anmerkung Finger weg von Binarcode fur x1 x2)

              3 Einwegeigenschaft Urbild-Resistenz Es ist schwer zu vorgegebenem h(x) ein Urbild xzu berechnen

              h1(x) ist eine gute Hashfunktion mit den schicken Eigenschaften 1 2 3 (n + 1 Bitlange)

              h2(x) =

              1 x wenn x die Lange n hat0 h1(x) sonst

              h2(x) ist kollisionsresistent (Zwillingsresistenz) (wenn h1 so ist) h2 ist aber nicht urbild-resistent 1 x hat als Urbild x

              2 ist die wichtigere Eigenschaft man kann notfalls noch ohne 1 auskommen Zum Beispielletztes Jahr MD5 - Hashfunktion x1 x2 waren konstruiert h(x1) = h(x2)x1 oplus x2 = 0 010 010 010 01 (1 jeweils im msb) Immer noch ein gewisser Schutz dazum Beispiel keine Kollision auf -Kleinbuchstaben oder 64 moglich

              Schlussellose Hashfunktionen sollten alle 3 Eigenschaften haben

              Fast-Kollision x1 x2 h(x1) oplus h(x2) hat wenig 1-Bits Manchmal zu vermeiden

              partielle Urbilder Gegeben h(x) dann ist es schwer x bis auf wenige Bits zu bestimmen

              SHA-1 theoretische Schwelle 280 praktisch 269 (16022005) 263 (19082005)

              Geburtstagsparadoxon 23 Personen die Wahrscheinlichkeit dafur dass 2 am gleichen Tagim Jahr Geburtstag haben ist groszliger als 1

              2

              h(x) =dd-mmMit k Personen x1 xk lassen sich k2 Geburtstagspaare bilden Mit n Tagen h1 hn im Jahrlassen sich n2 Geburtstagspaare bilden davon sind n gute ( (h hprime) mit h = hprime)

              81

              mit k2 Paaren in n2 Paaren suchen und einen von n treffenHashfunktion hat 160 Bit Ausgabe wir brauchen nach Geburtstagsparadoxon 280 Personen ummit hoher Wahrscheinlichkeit den gleichen Geburtstag h mit 160 Bit zu erhalten

              Allgemeines Konstruktionsprinzip x wird auf eine bestimmte Blocklange erweitert (pad-ding)

              1 Nullpadding (auffullen mit Nullbits falls erforderlich)

              2 1-Nullpadding (eine 1 und dann mit Nullbits bis zur Blocklange)

              3 1-Null-Langenpadding (eine 1 und Nullbits (falls erforderlich) und die Lange (msb first64 Bit oder 128 Bit)) Am besten geeignet da bei 1 oder 2 automatisch Kollisionen ent-stehen x (mind 1 bit kurzer als die Blocklange) und x 0

              xrarr b1 bk Blocke der Lange 512 Bit

              Haufig Verlauf in 3 Phasen in openssl init update final

              1 Initialisierung der Hashfunktion Innerer Zustand aus 32-Bit-Wortern H1H2H3H4H5initialisiert (mit Primzahlen π was-auch-immer)

              2 Update A BCD E aus H1 H5 Runden mit Transformationen mit Eingabe bi 48|60|120 H1 = H1 oplus A H2 = H2 oplus B

              3 Finalisierung Ggbf Padding 1 oder 2 mal das Update

              4 Ausgabe H1H2 H5

              Einfaches Beispiel

              82

              So lasst sich aus einem Kryptoalgorithmus ein Hashalgorithmus konstruieren In der Praxis wer-den andere Konstruktionen (Quirlfunktionen) verwendet MD5 SHA-1 SHA-2 (224 256 384512) Whirlpool ISO-

              In OpenSSL MD2 MDC2 MD4 MD5 RIPEMD-128 RIPEMD-160 SHA-0 SHA-1 Allegebrochen ausser RIPEMD-160 und SHA-1 (evt MD2) dh es sind m1 und m2 bekannt mitMD5(m1) =MD5(m2) und m1 m2

              512 Demonstration Falschung

              Ist die Hashfunktion rsquoschwachrsquo kann man Kollisionen sogar konstruieren

              Beispiel fur MD5 MD4 ist seit 10 Jahren schwach SHA-1 wird schwach

              Zwei Postscript-Dateien mit unterschiedlichem Inhalt aber gleichem MD5-Hash Prinzip Datei1

              Header

              if x1 == x2 then strangestring = T1 else strangestring = T2 end

              Rest

              echo strangestring

              Quelltext (B)(B)eq︸ ︷︷ ︸Bedingung

              [tot] [Def] ifelse

              83

              Datei 2

              Header

              if x2 == x2 then strangestring = T1 else strangestring = T2 end

              Rest

              echo strangestring

              (A)(B)eq︸ ︷︷ ︸Bedingung

              [Def] [tot]

              x1 und x2 unterscheiden sich nur sehr wenig und Header if x1 und

              Header if x2 sind je ein Nachrichtenblock mit dem gleichen Hashwert

              Sieht aus wie zweites Urbild-Angriff sind aber in der Tat zwei bose Zwillinge

              Quelle wwwcitsrubdeMD5Collisions

              Fazit Dokumente sind nicht mehr unterscheidbar

              Kollision besteht aus zwei Dokumenten d1 d2 mit dem Hashwert

              Bei MD5 kann man zwei rsquoDokumentersquo (Prafixe bis AB) konstruieren die den gleichen Has-hwert haben

              Man kann aber zu einem Dokument d0 (dem Original) noch nicht ein zweites dprime0 konstruierenso dass d0 dprime0 eine Kollision bilden

              Beispiel Ein SSL-Server-Zertifikat war (MD5) ununterscheidbar von einen SSL-ZertifizierungsstellenZertifikat womit man so viele (evt rsquobosersquo) SSL-Server-Zertifikate erstellen wie man wollte

              MD5 ist nicht kollisionsresistent

              MD5 ist noch 2 Urbild resistent

              52 Unterschied MD5 und SHA

              MD5 128bit Lange (Kollision 264)

              SHA-224 224bit Lange (Kollision 2112)

              SHA-256 256bit Lange (Kollision 2128)

              84

              mehr rotation lokale Unterschiede habe groszligere globale Unterschiede zur Folge bei SHA

              53 Secure Hash Standard SHA-2

              FIPS 180-2 US-Standard Nachfolger von FIPS 180 SHA-0 und SHA-1 sind die SHA-2-Algorithmen(noch nicht in OpenSSL) SHA-224 SHA-256︸ ︷︷ ︸

              32 Bit

              SHA-384 SHA-512︸ ︷︷ ︸64 Bit

              SHA-224 bzw SHA-384

              ist rsquoungefahrlsquo die linke Seite von SHA-256 bzw SHA-512

              Basisfunktionench (xampy)|(sim xampz) Auswahlfunktionpar x and y and z Paritatsfunktionmaj (xampy)|(xampz)|(yampz) Mehrheit

              Ausserdem Addition modulo Wortlange rot left und shift leftMessage M1M2 MN padding

              1 paddinglength auf 5121024 Bit

              51232 = 16 = 1024

              64

              2 Messageblock (16 Stuck) wird erweitertW0W1W2 W15︸ ︷︷ ︸

              Messageblock

              W79

              Wt = rot(Wtminus3) + rot(Wtminus8) + rot(Wtminus14) + rot(Wtminus16) fur t = 16 79rot(x) = rotl7(x) + rotl18(x) + shl3(x)

              3 8 temporare Variable a b c d e f g h mit Breite gleich Wortlange (32 oder 64 Bit) be-schreiben einen inneren Zustand der Funktion

              SHA-Maschine bekommt initialen Zustand H0 H7 Die ersten 32 Bit der gebrochenenAnteile der Quadratwurzeln der i Primzahl Fur SHA-256 und SHA-512 i = 1 8 furSHA-384 und SHA-224 i = 9 16

              85

              Am Anfang jeder Runde a = H0 b = H1 c = H2

              Jedes Wi erzeugt einen Schritt (kleine Zustandsanderung)

              T1 = h + rot(e) + ch(e f g) + Kt + Wt

              T2 = rot(a) + maj(a b c)

              h = g g = f f = e e = d + T1 d = c c = b b = a a = T1 + T2K0 K80 Schrittkonstanten Bruchteile der dritten Wurzeln der ersten 80 Primzahlen80 Schritte in einer Runde

              4 XOR-Operationen H0H1 H7 minusrarr H0 oplus aH1 oplus b H7 oplus hHi beschreiben den inneren Zustand nach Runde Hi am Anfang initialisiert

              5 Ausgabe ist H0 H7 am Ende

              To do ware auch interessant fur die Prufung

              Es wird eine neuer SHA-3 gesucht Voraussetzungen

              1 Nachrichtenexpansion muss komplexer werden

              2 Nachrichtenblocke mussen positionsabhangig werden (Skein tweakable

              3 innerer Zustand muss groszliger werden (2x Hashlange)

              531 Problem bei MD5 und SHA-0

              Beispiel 1 Innerer Zustand zwischen einzelnen Schritten hat Bits die die folgenden Bitsmehr oder weniger beeinflussen Damit sinkt die Komplexitat beim Brechen Besondere Bitsfuhren zur Reduktion der Anzahl der Gleichungen und erlauben eine schnelle Konstruktion vonspeziellen Zwillingen m1m2 mit MD5(m1) =MD5(m2) m1 oplus m2 = viele Nullen

              Parallel hashen rdquoKontostand -20073ldquo und rdquoKontostand +700ldquo Ab -2 bzw +7 entstehen un-terschiedliche innere Zustande Nachkommastellen bei dem zweiten String anpassen um dieUnterschiede auszugleichen

              86

              Aktuelle Angriffe erzeugen keinen zweiten Zwilling sondern rsquonurrsquo falsche Zwillinge Zu einemguten gibt es keinen schlechten Zwilling

              Beispiel 2 Es gibt zwei Zertifikate mit unterschiedlichen Inhalten und gleichem MD5-HashDas sind dann aber 2 schlechte Zertifikate MD5 ist also nicht kollisionsresistent aber momentanzwillingsresistent

              SHA-1 hat momentan eine Komplexitat von 263 anstelle von 280 fur Kollisionen

              mH(m) (H(m) aus vertrauenswurdiger Quelle) rArr m kann nicht unbemerkt verandert werdenManipulation Detection Codes () Das ist keine Prufung des Ursprungs Um zu prufen ob maus einer bestimmten Quelle stammt benutzt man MACs

              532 MACs (Message Authentication Codes) (Prufsummen mit Schlusseln)

              Sei k ein geheimer Schlussel den nur Alice und Bob kennen m ist die Nachricht BerechneHk(m) = h keyed Hash Die Hash-Prufwerte sind also Schlusselabhangig

              (m h) mit h aus vertrauenswurdiger Quelle

              bull Veranderungen sind erkennbar

              bull Nur mit Kenntnis von k kann man h berechnen also nur mit dem Schlussel kann man denPrufwert falschen

              Empfanger der k kennt kann n auf Integritat prufen Um sich vor Angreifern zu schutzen mussfur eine Prufung der Prufwert geschutzt werden

              Hk(mprime) = h

              (m1 h1)(m2 h2)

              rarr (m h) muss verhindert sein

              87

              Standardisiertes Verfahren fur Keyed hash auf der Basis von MDCs RFC 2104 in OpenSSL zufinden HMAC)

              H(k oplus auszligeres Padding H(k oplus inneres Padding m))︸ ︷︷ ︸512- oder 1024-Bit-Blocke

              k linksbundig aufgefullt mit Nullen inneres Padding = 0x36 0x36 auszligeres Padding = 0x5c0x5c Langenpadding am Ende des inneren H

              Berechnen Sie mit OpenSSL und dgst -c oder -hex den Hashwert der leeren Datei

              henrykgleam henryk $ openssl dgst -c -hex -md5 devnull

              MD5(devnull)= d41d8cd98f00b204e9800998ecf8427e

              henrykgleam henryk $ openssl dgst -c -hex -sha1 devnull

              SHA1(devnull)=

              da39a3ee5e6b4b0d3255bfef95601890afd80709

              openssl dgst -sha256 -hmac 1234567890 devnull

              HMAC-SHA256(devnull)= ba92e0bfa35d8a018831f3675f0b4314c8468d4d96e6981b85ba3390c23308fd

              HMAC

              To do vervollstandigen

              Mac mit Hashfunktion K- Schlussel H-Hashfunktion

              H(K oplus oPadH(

              0x565656︷ ︸︸ ︷K oplus iPad︸ ︷︷ ︸Bitlange H

              n))

              K n1 rarr Mac(n1K) = m1

              K nprime = n1||langenpadding ||n2

              (K nprime) rarr HInitialisiert mit m1(n2) = m2

              ISO-10118-32004

              88

              54 Whirlpool

              Basis fur eine Hashfunktion ausgehend von einer einzigen Verschlusselungsfunktion

              Aus der Wikipedia (unter GNU Free Documentation License)

              WHIRLPOOL ist eine kryptografische Hash-Funktion die von Vincent Rijmen und Paulo SL M Barreto entworfen wurde Sie wurde nach der Whirlpool-Galaxie im Sternbild der Jagd-hunde benannt

              Whirlpool funktioniert mit Daten von weniger als 2256 Bit Lange und gibt einen Hash-Wert von 512 Bit aus

              Die Autoren haben erklart dass Whirlpool nicht patentiert ist und es nie sein wird Whirl-pool darf kostenlos zu jedem Zweck verwendet werden Die Referenz-Implementation ist ge-meinfrei

              The WHIRLPOOL algorithm has undergone two revisions since its original 2000 specifi-cation In the first revision in 2001 the s-box was changed from a randomly generated one withgood cryptographic properties to one which has better cryptographic properties and is easier toimplement in hardware In the second revision (2003) the diffusion matrix was changed

              People incorporating WHIRLPOOL will most likely use the most recent revision ofWHIRLPOOL while there are no known security weaknesses in earlier versions of WHIRL-POOL the most recent revision has better hardware implementation efficiency characteristicsand is also likely to be more secure

              E

              +

              H

              H

              m

              AES-Variante

              i-1

              i-1

              i

              55 Zusammenfassung

              To do oben einsortieren

              89

              Manipulation Detection Codes MDCsHashfunktionen MD5SHA-1SHA-2Allgemeines Konstruktionsprinzip aus Langenpadding und Iterationen

              bull MACsKeyed Hash HMAC mit Hashfunktion aufgebaut aus prefix und suffix

              bull CBC-MAC Nachrichtenblocke m0m1 mk

              + +

              MACc c c

              K

              m

              m m

              0

              1

              1

              2

              k

              k+1

              Risiko Weil keine Langeninformationen dabei sind ist es anfallig gegen Einsetzen undAustauschen Wird gerne Verwendet bei Anwendungen die feste Langen haben zBChipkartenCBC-MAC-verbessert

              K

              DES

              1

              K2

              K3

              larrminus CBC-DES3-MAC

              Benutzt zB beim digitalen Tachograph

              Es gibt zwei Grundlegende technische Mechanismen Ohne Schlussel und mit Schlussel Nur mitSchlussel lasst sich spater der richtige MAC-Wert ausrechnen und bestimmen dass die Nachrichtnicht verandert wurde und vom richtigen Absender kommt

              90

              56 Digitale Signaturen

              To do einsortieren

              Definition

              s ist die Signatur zu einer Nachricht n mit einem Signaturverfahren S und einem Verifikations-verfahren V

              S N times D︸︷︷︸Signaturschlussel

              rarr s

              V N times E︸︷︷︸Verifikationsschlussel

              timess rarr ja nein

              V(n e S (n d)) = 1

              V(n e S (nprime d)) = 0 =( n eprime S (n d)) = 0

              RSA

              S (n d) =

              V(n s e) = E(e s)eqH(n)

              openssl dgst -sign keyrsa -hex nulltxt

              openssl -sign keyrsa -sha256 -out nullsig nulltxt

              openssl rsautl -in nullsig -encrypt -inkey keyrsa -raw -hexdump

              in Beta openssl sha256 -hex nulltxt

              Anstatt der Symmetrischen Verschlusselung wie bei MAC kann man auch asymetrische Verfah-ren verwenden

              1 h mit Namen (0D) in ASN1 Struktur 0001 FF FF 00 (ASN1-Struktur)

              2 Padding

              3 rsquoEntschlusselnrsquo

              4 rsquoVerschlusselnrsquo

              5 ASN1 Struktur Hash OID Wert rausziehen

              91

              6 vergleichen 0 1

              openssl hatte in den fruheren Versionen einen Fehler in der Signaturprufung

              langer RSA Schlussel

              exponent e klein (3)

              lange Signatur S

              S 3 = h

              wenn h sehr lang ist konnte man folgendes machen

              h= (0001FF00ASN1 rsquomullrsquo)

              man konnte den rsquoMullrsquo so verandern das h = s3 (also so lange verander bis h dritte Wurzel vons ist)

              Es wurde nicht uberpruft ob am Ende der ASN1-Struktur auch das Ende der Daten ist

              siehe Webseite RSA Zertifikate mit Exponenten 3

              To do alt

              Digitale Signaturen schutzen die Integritat und die Authentizitat Wir betrachten hier welche dieauf asymmetrischen Verfahren basieren Symmetrische gibt es werden aber in der Praxis nichtbenutzt Es gibt 2 Typen

              1 RSA

              2 DSA

              561 RSA

              m = p middot q (2048 Bit)Exponent e klein (64 Bit)Exponent d groszlig mit e middot d equiv 1 mod (p minus 1)(q minus 1)

              xrarr c = xe mod m (offentlich)cd equiv x mod m (geheim)xed equiv x

              92

              Man rechnet zuerst xrarr s = xd mod m Das kann nur derjenige der uber den privaten Schlusseld verfugt Aus s rechnet man se mod m = (xd)e mod m equiv xemiddote mod m = x Bei RSA konnenwir die Rolle vom privaten und offentlichen Algorithmus vertauschen so dass folgt Nur wer dkennt kann zu x ein s erstellen so dass se equiv x mod m ist

              Anwendung dafur Digitale Signatur Wir haben Nachricht M und erstellen daraus einen PrufwertH(M) mit einer Hashfunktion und rechnen

              H(M) = x minusrarr s = xd mod m

              Dann ist (M s) das digital signierte Dokument M (und s die Signatur)

              To do einsortieren neu

              Signatur mit Anhang (with appendix) (m sig)-Signierte Nachricht

              Ver(vm sig)

              Signatur mit Nachrichtruckgewinnung (with (partial) message recovery) (m1mprime2) = mprime so dassmprime2 ein Teil der Nachricht m = m1||m2 enthalt

              Ver(vm1mprime2) (partial recovery)

              Ver(vminusmprime) (complete recovery)

              In RSA

              PKCS1 ver 15 Signatur mit Appendix

              PKCS1 ver 21 (noch nicht in OpenSSL)

              To do ende einsortieren

              Prufung (M s) rarr H(M) = x Ist se mod m = x Nur wer das d hat kann das Paar (M s)

              erstellen und ist damit Inhaber des Dokuments

              562 Eigenschaften eines asymmetrischen Verschlusselungsverfahren

              Alice kennt den offentlichen Schlussel von Bob Bob kennt seinen geheimen Schlussel

              93

              Alice123 Bob Alice Bob123offB gehB gehA offA

              EoffB(m) = c rarr DgehB(c) = m rarr

              MS gehA

              (m s)

              rarr

              Voffa(m s) =

              0 ungultig1 gultig

              Mehrere Alices konnen an Bob schreiben Entschlusselung mit dem geheimen Schlussel vonBob Hier wird eine Nachricht so verschlusselt dass man die Nachricht aus c zuruckgewinnenkann

              Alice sendet an alle Bobs Hier wird ein Paar erzeugt dass in einen Verifikationsalgorithmusgestopft werden kann der dann ja oder nein sagt

              Es ist Zufall dass man mit RSA sowohl einen Verschlusselungsalgorithmus als auch einenSignaturalgorithmus erstellen kann Mit anderen geht das nicht

              Hatte man nicht die Urbildresistenz der Hashfunktion konnte man ein s nehmen und dazu aus-rechnen se mod m = x jetzt konnte man zu dem x ein Urbild M ausrechnen und bekame einPaar (M s) dass gultig signiert ist Dazu kommen in Wahrheit noch Padding und Objekt Identi-fier der angibt womit signiert wurde und Parameter

              30 = SEQUENCE06 = OID2B 0E 03 02 1A = SHA12A 86 48 86 F7 0D 01 01 01 = rsaEncryption05 = NULL Bezeichner fur die leere Menge hier bedeutet es keine Parameter04 = OCTET STRING02 = INTEGER03 = BIT STRINGSchema Tag Length Value

              Das ganze lasst sich mit openssl asn1parse erfahren (asn1 = Abstract Syntax Notation 1)Schlussel immer SEQUENCE SEQUENCE OBJECT PARAMETER BIT STRING bzw Se-quence aus OID und Bitstring Das erste Byte in einem Bitstring gehort nicht zum Bitstring dazusondern gibt die Nummer der von hinten ungenutzten Bits an

              OID-Liste httpwwwalvestrandno

              Mhminusrarr

              SHA-1

              H minusrarr

              Padding

              00 01 FF FF 00 b c b H c

              Identifier Oktetstring

              Padding nach PKCS1 v15

              ASN1 Objektidentifier fur SHA-1 (131432) wird als 2B 0E 03 02 1A codiert

              94

              xyabcd (Dot-Notation)darr

              bx middot 40 + yc babcdc1 Byte Byte (Oktett)

              12840113549127 als Ubungsaufgabe

              563 RSASSA-PSS-Padding

              SSA Signature Scheme with Appendix

              PSS Probabilistic Signature Scheme

              RFC 3447 (siehe figure 2)

              8 zero salt

              h

              0000 01 salt

              +MGF h

              maskiertes seed BC00 1024

              Bits

              zu 0

              setzen

              soviele dass die Eingabe

              kleiner als der Modul wird

              Eingabe fuumlr die Signatur

              M l(M) lt= 2^(64)-1 bei SHA-1

              20 Byte 20 Byte

              To do start einfugen

              MGF-Maskengenerierungsfunktion (beruht auf der Hash-funktion)

              95

              MGF rArr DBmask dann DB oplus DBmaskNullungminusminusminusminusminusminusrarr maskedDB

              Nullung-Nullung der oberen Bits so dass maskedDB kleiner als Modul ist

              Signieren (EMSA-PSS)+(RSA-Verschlusselung)

              Verifikation (RSA Op)

              1 RSA-Operation

              2 EM

              Prufung ob BC am Ende

              H abspalten und mit MGF DBmask erzeugen

              XOR mit Rest von EM

              DBprime = 0000︸︷︷︸Nullungsfehler

              0001 Salt

              00 Label mhash SaltHashminusminusminusminusrarr Hprime

              = H

              Jede Eingabe in die RSA-Operation ist pseudo zufallig (Jede Eingabe hat einen neuen Signa-turwert)

              Angenommen man wendet die RSA-Operation direkt auf m an

              mprime-Signatur mprime = md mod n

              m1m2

              m1 rarr mprime1 mod n = mprime1

              m2 rarr mprime2 mod n = mprime2

              Verifikation

              (m1m2) mod n rarr (m1 middot m2)d = md1md

              2 = mprime1 middot mprime2 mod n

              (rsquoMan kann mit zwei Signaturen eine andere erzeugenrsquo)

              96

              To do ansehen

              Unsicher zeitaufwendig kann leicht gebrochen werden

              m rarr mprime = md mod n

              re = rprime mod n

              chosen message m middot rprime rarr (m middot rprime)d mod n = md middot red mod n = mprime middot r mod n

              (mprime middot r) middot rminus1 mod m = mprime

              (sieht nach Zufallszahlen aus aber die kann man auf eine vorher gewahlte Nachricht zuruck-rechnen)

              To do ende einfugen

              Nachricht M mit |M| lt 264 minus 1 wird mit Hashfunktion h gehasht Davor kommen 8 Zerobytedanach ein Saltwert (Saltwert wird benotigt fur die Auswertung der Signatur und wird verstecktin der Signatur) Auf das Gesamte wird die Hashfunktion h erneut angewendet

              Verstecken des Saltwerts --0000 (rarr eventuell leer) 01 salt-- oplus mit einer Maske gebildetaus dem Hashwert und einer Maskengenerierungsfunktion

              An den Anfang der Eingabe fur die RSA-Signatur werden 0-Bits so gesetzt dass die Eingabefur die RSA-Signatur kleiner als der Modul ist Wenn m volle Bytelange hat wird das obersteBit gleich 0 gesetzt (RSA-Signatur ()d mod m mit m = p middot q) An das Ende der Eingabe fur dieRSA-Signatur wird BC angehangt

              Durch den Saltwert wird das Ergebnis zufallig und schwer vorhersagbar Wird leider nicht oftverwendet da die Maskengenerierungsfunktion Chipkarten teuer machen wurde

              Es existiert eine DIN Variante zum v15 PKCS1 DIN-RN-Padding00 02 Zufallsbytes(ohne 00) 00 Identifikator Oktettstring

              564 DSA

              Vergleich ElGamal und elliptische Kurven

              K-elliptische Kurve y2 = x3 + ax + b mod p

              97

              p-Primzahl ( 2 3)

              Punkte auf der Kurve bilden eine Gruppe E(k)

              P + Q = R k middotG isin E(k)

              G ein Punkt (Generator) mit groszliger Ordnung n

              1 middotG 2G 3G n︸︷︷︸sehr groszlig

              middotG = 0

              n ist eine Primzahl und G 2G nG = 0 ist die gesamte Gruppe E(k)

              Signaturschlussel t-zufallig aus 1 n minus 1 Verifikationsschlussel ist P = t middotG

              Standard FIPS 186-3 rarr finde den Fehler

              To do ende einfugen

              p g Generator gpminus1 equiv 1 mod p gpminus1

              x 1 mod p

              Geheimer Schlussel xoffentlicher Schlussel y = gx mod pk(gkm middot yk) = c

              Parallel bei elliptischen Kurven G geheim x offentlich Y = x middotG

              (k middotGm middot k middot Y)

              DSA auch bekannt als DSS FIPS-186

              Primzahl p (hat zB 1024 Bit im Standard variabel) so gewahlt dass pminus 1 einen Primteiler derLange 160 Bit enthalt q|p minus 1 mit |q| = 160 BitAusserdem Es gibt einen Generator g mit der Eigenschaft gq equiv 1 mod p Das findet man

              indem man einen h Generator in mod p auswahlt und g = hpminus1

              q hpminus1 equiv 1 mod p ausrechnet

              x geheimer Signaturschlussel mit 160 Bit gx mod p ist der offentliche Schlussel

              Signaturerstellung Nachricht M Hashwert h(M) = H ausrechnen Generiere Zufallszahl k mit160 Bit (k isin 1 n minus 1) und berechne

              To do neu

              k middotG = (x y) r = x mod n

              98

              s = hminus1 middot (h + tr) mod n

              (r s) ist die Signatur

              To do ende neu

              r = (gk mod p) mod q und s = (kminus1(H + x middot r) mod p) mod q r und s sind Exponenten furmod p werden aber nochmal mod q genommen um Platz zu sparen (r s) wird die Signaturwerden (s 0 mod q r 0 mod q)

              Signaturverifikation Berechne w = sminus1 mod qu1 = H middot w mod q u1 = H middot w + i middot qu2 = r middot w mod q

              Berechne

              gu1 middot yu2 equiv gHmiddotsminus1middot gxmiddotrmiddotsminus1

              equiv gHmiddotk(H+xmiddotr)minus1middot gxmiddotrk(H+xmiddotr)minus1

              equiv gHmiddotkmiddot(H+xmiddotr)minus1+xmiddotrmiddotk(H+xmiddotr)minus1

              equiv gkmiddot(H+xmiddotr)middot(H+xmiddotr)minus1

              equiv gk mod p

              Prufe also ob (gu1 middot yu2 mod p) mod qequiv r

              Die Signatur zu M ist (r s) mit r und s haben 160 Bit so dass man 320 Bit Signatur hat (kleinerals die 1024 Bit Signatur von RSA)

              Um den geheimen Schlussel zu bestimmen muss man den diskreten Logarithmus mod q be-rechnen und das gilt als schwer

              565 ECDSA - DSA mit Elliptischen Kurven

              K - elliptische Kurve mit Punkten mod pG - Generatorpunkt G hat Ordnung q [q middotG = 0] q Primzahlx - Restklasse mod q Y = x middotG

              r = [(k middot G)1] mod q (rarr 1 Koordinate mod q) s = kminus1(h + x middot r) mod q [u1 middot G + u2 middot Y]1

              mod qequiv r

              700 Bit fur alle Parameter

              99

              To do neu

              ECDS DSAGenerator

              G g gq = 1 mod pdA = [1 q minus 1]

              zufalligPA = dA middotG auf E pA = gdA mod p

              Signatur k isin [1 q minus 1] r = (gk mod p) mod qr = x mod q

              s = kminus1 middot (h + dA middot r) mod q

              h ist genauso lang wie q (gleiche Bitlange)

              h sind die linken Bits von H(n)

              (Bem RSA ist bei Elipt Kurven nicht einsetzbar deshalb ist DSA eine gute alternative)

              link draft-lochter-pkx-brainpool-ecc-03 - eine art RFC zu Brainpool

              openssl ecparam -name brainpoolP256r1 -param_enc explicit -noout

              E =(x y) y2 = x3 + Ax + B mod p

              Dann ist G = 04x (in einer Prufung ware interessant zu wissen was das fuhrende Bytebedeutet und welche Varianten es gibt)

              openssl ecparam -name brainpoolP256r1 -genkey

              -param_enc explicit -noout gt eckey

              (pub - offentlicher Punkt)

              openssl dgst -sha256 -sign eckey eckey gt ecsig

              xxd -p ecsig

              openssl asn1parse -i -in ecsig -inform DER

              Man erhalt die beiden Integers r und s

              (Bem bei Eliptischen Kurven ist die Bitlange kurzer da Algorithmen hohere komplexitat als so

              100

              haben)

              (Hausaufgabe erzeuge zwei Kurven (512Bit - Brainpool bzw 521 NIST) mit anderen Hash-funktionen (mdripemd whirlpool) Signatur (rs) )

              (Bem siehe Wikipedia El C DSA r=0 Abfrage weil sonst dA keine Rolle spielt s= 0 Abfrageweil man sonst mit minusz = r middot dA mod q den geheimen dA ausrechnen kann)

              [Spickzettel zur HA

              h-linke Bits des Hashwertes

              n1 = h middot sminus1 mod q

              n2 = r middot sminus1 mod q

              V = n1 middotG + n2PA = (x y) r = x mod q

              v = gn1 middot pn21 mod p r = v mod q

              (r rarr 0 1 jeweils)

              h middot sminus1 middotG + rsminus1PA = h(k(k + dAr)minus1 middotG + r(k(h + dAr)minus1)dAG = (hk + rkdA)(h + dAr)minus1G = V

              = k (h + rdA) middot (h + dAr)minus1︸ ︷︷ ︸=1

              G

              = k middotG

              ]

              Magma

              p=StringToInteger(rsquorsquo16)

              a=StringToInteger(rsquorsquo16)

              b=StringToInteger(rsquorsquo16)

              IntegerRing(p)

              E=EllipticCurve([KaKb])

              G=E[KStringToInteger(rsquo1Halfte Generatorrsquo16)

              101

              KStringToInteger(rsquo2Halfte Generatorrsquo16)]

              Jetzt kann man rechnen

              qG eq E0

              true

              mdashmdashndash

              qG

              (010)

              mdashmdashmdash

              Kq=IntegerRing(q)

              dA=1+Random(q-2)

              PA=dAG Prufung ob ungleich Null fehlt noch

              h=K12121212121212121212121212121

              k=1+Random(q-2)+1damit keine Null rauskommt

              X=kG

              x=X[1]

              r=(IntegerRing()x) mod q

              s= (Kqk)ˆ(-1) ((Kqh)+ r dA)

              rs

              Verifikation

              u1=h(Kqs)ˆ(-1)

              u2=r(Kqs)ˆ(-1)

              102

              Y=(IntegerRing() u1)G+( IntegerRing() u2) PA

              Y

              ((IntegerRing() Y[1]) mod q) eq r

              =rArr siehe Verzeichnis

              Prufen ob Openssl gut gerechnet hat

              OpenSSL

              wie erzeugt man den offentlichen Schlussel openssl ec -in eckey -pubout

              openssl ec -in ecpub -pubin -text -noout

              -pverify

              To do neu-ende

              To do neu-20090617

              Bem Attributes muss die leere Menge sein und darf nicht weggelassen werden

              SHA1 nur noch zur Unterscheidung benutzen

              57 Widerrufen von Zertifikaten

              siehe rfc5280 S53

              Erste Sperrliste

              Ist eine Liste in der die Nummern der gesperrten Zertifikate stehen

              Beispiel CA erstellen

              perl ˜optopenssl-100-beta2appsCApl -newca

              103

              Zertifikat fur den Nutzer erstellen

              perl ˜optopenssl-100-beta2appsCApl -newreq

              Signieren

              perl ˜optopenssl-100-beta2appsCApl -xsign gt aypem

              Man kann noch weitere Zertifikate erstellen allerdings wird dann der pem Key geloscht Mankann dann feststellen dass die Seriennummer nur um eins erhoht wird Man kann auch openssl ca -gencrl -out -cl1pem -crlhours 12benutzen und dabei die Seriennummer selber angeben

              openssl crl -text -in crl1pem -noout

              Zertifiziert wird nur der Teil zwischen Certificate Rev List bis No Revok Cert Da dieser Teilsehr klein ist ist es recht schwer Kollisionen mit SHA1 dafur zu konstruieren

              Dann gibt es noch Informationen wann es die nachsten Updates gibt (Last Update Next Update(optional)) Alte Sperrlisten bleiben aber Gultig die neuen gelten nur zusatzlich

              Zertifikat ungultig machen

              openssl ca -gencrl -out cr13pem -revoke demoCAcertsF8C85pem -crl_reason keyCompromise -crlhours 12

              aktualisieren

              openssl ca -gencrl -out cl4pem -crlhours 12

              Nun nachsehen mit

              openssl crl -text -in crl4pem -noout

              To do neu-ende

              104

              58 Was es noch so gibt

              581 blinde Signaturen

              Gut fur anonymes digitales Geld Normalfall Bank kriegt digitalen Scheck belastet das Kontound schickt einen von ihr signierten Scheck zuruck Problem Wenn derjenige der den Scheckspater einlosen will zur Bank geht kann diese den Scheck zum Aussteller zuruckverfolgen

              Mit anonymen Signaturen Aussteller erzeugt viele (zum Beispiel 1000) unterschiedliche Schecksmit je einer Zufallszahl und dem gleichen Betrag aber ohne Name Kontonummer etc Diese1000 sendet er verschlusselt an die Bank Die Bank sucht sich zufallig (das ist wichtig) 999davon aus und fordert fur diese den Schlussel an Die Bank entschlusselt diese Schecks unduberpruft ob uberall der gleiche Betrag drinsteht Wenn ja dann ist davon auszugehen dass auchder auf den gleichen Betrag lauft Das Konto wird entsprechend belastet und der Scheck wirdblind (also ohne hineinzusehen) signiert und dem Aussteller zuruckgeschickt Der packt denScheck aus (wobei die Signatur gultig bleibt) und hat jetzt einen von der Bank signierten digita-len Geldschein den die Bank nicht mehr zuruckverfolgen kann

              582 anonyme Signaturen

              Beispiel Elektronische Wahlen wo man nicht mochte dass man weiszlig wer es unterschriebenhat

              6 Zertifikate

              To do neu-20090520

              m rarr Signatur und Verifikation

              mprime rarr Signatur und Verifikation

              Vertrauen in den offentlichen Schlussel

              Schutzen den Schlussel durch Prufwert den Prufwert Schutzen wir durch eine Signatur Vertrau-en eines Schlussel ubertragt sich an einen anderen Das ganze scheint sich im Kreis zu drehen

              Aber es handelt sich um einen Graph (Der Graph muss nicht transitiv sein - A vertraut BB vertraut C aber A vertraut nicht unbedingt C) Zb Baum mit Wurzel (PKI) dann gibt es

              105

              vertrauens-Normen die den Ebenen eines Baumes entsprechen Die andere Variante ist das PGPWeb of Trust bei dem der Baum ungeordneter ist und eine Art Vertrauensbereiche hat

              Dass eine Zertifizierungsstruktur funktioniert braucht es klare Regeln fur den Umgang mit Zer-tifikate

              Standards

              ANSI X509

              X500

              openssl internet Profil

              RFC 5280 (alt 3280 2459)

              Definition Zertifikat bindet (durch Signatur) einen offentlichen Schlussel an einen Namen(Subjekt)

              (siehe rfc5280 S16 - Certificate= SEQUENCE und TBSCertificate) (in TBSCert er-scheint rsquosignaturersquo recht fruh damit schon mit dem Hash-Algorithmus begonnen werden kannaber warum steht in Certificate dann nochmal signature -Bessere Ordnung)

              Zertifikat bei CA-cert runterladen und dann mit openssl ansehen

              openssl x509 -in class3crt -text -noout

              openssl asn1parse -i -in class3crt

              Zur ausgabe des ersten (siehe auch rfc5280)

              Version es gibt momentan 3 Versionen

              Serial Number ist ein Integer kann so groszlig sein das man nicht mehr in den Hash-Block mehrkommt (bis 20 Byte geht)

              Bundesnetzagenturde 15549pdf sagen dass Serien Nummern mindesten 20 Bit Entropie ent-halten sollen damit SHA-1 bis 2010 benutzt werden kann (rsquoQualifizierte Signaturrsquo)

              To do siehe 606 Gultigkeit

              validity Wird oft als Gultigkeitszeitraum ubersetzt was aber nicht ganz richtig ist da nur ange-geben wird wann das Zertifikat nicht gultig ist Besser ware rsquonicht Gewahrleistungszeitraumrsquo

              106

              Die validity gibt (nach dem Standard) den Zeitraum an in der die CA gewahrleistet aussagenuber den Zustand des Zertifikats zu geben (Gultig ODER nicht Gultig - deshalb muss das Zer-tifikat also nicht unbedingt gultig sein)

              To do neu-ende

              To do neu-20090527

              Bemerkung In der Objectstxt findet die Object-Identifier die OpenSSL kennt

              To do neu-20090527-ende

              Signatur Anwendung eines Schlussels Ob der Signaturersteller eine bestimmte Person ist istdamit nicht klar Immer gleichzeitig Authentizitat des Schlussels prufen

              Dazu gibt es zwei Moglichkeiten

              1 Anarchie = Web of Trust (Beispiel PGP)

              2 Vertrauenswurdige dritte Instanz Certification Authority CA bzw ZDA (Zertifizierungs-diensteanbieter) Stellt ein Zertifikat aus das ist ein elektronisches Dokument welcheseine Identitat einem Schlussel zuordnet

              Zertifikat (Name Schlussel ) und Signatur

              Problem Im Zertifikat steht Name Schlussel usw und daran hangt eine Signatur Gegeben Nut-zer Alice mit Zertifikat daruber gibt es die CA1 die ihre Signatur zertifiziert CA1 hat selber einZertifikat mit einem Namen Schlussel usw und daran hangt wieder eine Signatur Das Problemverschiebt sich immer weiter nach oben Man bekommt eine Zertifikatshierarchie und benotigteinen aufgeblahten Riesenbaum mit einer Weltwurzel Im taglichen Leben haben sich 3-stufigeZertifikatshierarchien bewart Root signiert seine eigene Signatur Vertrauen in Authentizitat derNutzerschlussel ist fur alle Nutzer gleich Es bestimmt sich ausschlieszliglich durch die Authenti-zitat des Schlussels des Root CA Das Vertrauen in die Root CA verteilt sich auf die Nutzer

              603 X509

              X509 mittlerweile bei ISO RFC 3280 X509 Certificate and Certificate Revocation List (CRL)Profile Abschnitt 4

              Version X509v3 Version 1 enhalt keine ErweiterungenSerial Number In der Regel 20 Byte muss immer eindeutig sein

              107

              Signaturverfahren fur das Zertifikat muss am Anfang (im ersten Block) stehen damit das Has-hen schon begonnen werden kannHerausgeber Name(eindeutig) C=Country O=Organisation CN=Common Name SN=Surname

              Validity Gultigkeitszeitraum der Zeitraum indem die CA Gultigkeitsinformationen uber dasZertifikat bereitstellen willwirdmussInhaber Name (eindeutig im Bereich der CA) zur Person also stabile Daten SeriennummerVersicherungsnummer etcSchlusselinformationenErweiterungenDarunter die Signatur

              In RFC 3280 steht dass nach dem 31 Dezember 2003 alle Zertifikate UTF-8 kodiert seinmussen

              604 Erweiterungen

              Man kann bei Erweiterungen festlegen ob diese Critical oder nicht sind Critical ist sowas wieeine Vorschrift nicht Critical ist sowas wie eine Information Kritische Erweiterungen mussenimmer ausgewertet werden wenn ein Programm sie nicht versteht darf es das Zertifikat nichtverarbeiten

              To do neu

              Per default auf false ist auszligerdem optionales Argument Wenn nicht critical dann ist es nur eineInformation Also critical muss man lesen und verstehen nicht critical sollte man lesen wennman sie versteht sollte man sich daran halten

              To do neu ende

              Basic Constraints

              To do neu

              Sagt ob es Zertifizierungsinstanz ist oder eine Endnutzer Instanz ist und in welcher Ebene essich befindet

              To do Diagramm basteln

              108

              Ein interessantes Beispiel (goyacrt) findet man bei der Rechnerbetriebsgruppe

              To do neu-ende

              CA Siginalisiert ob es ein CA-Zertifikat ist (TRUE) oder nicht (FALSE) Dh ob das Zertifikatberechtigt ist weitere Unterzertifikate auszustellen

              To do neu

              Per default false es musste also nicht jedesmal CA FALSE angegeben werden

              To do neu-ende

              PATHLEN Beschrankt die Pfadlange Pathlen=0 heisst dass das Zertifikat zwar Nutzerzertifika-te ausstellen kann aber keine weiteren CA-Zertifikate Ist immer als Critical markiert

              Subject Key Identifier und Authority Key Identifier Nicht kritisch Beschreiben die ver-wendeten Schlussel uber Hash-Werte zum Beispiel SHA-1 uber den Schlussel

              Key Usage Kritisch (sollte kritisch sein zb bei GOYA nicht) Ist ein Bitstring der die Ver-wendung des Schlussels angibt Fur eine CA also zum Beispiel nur KeyCertSign NonRepu-diation ist eigentlich fur die Dokumentsignatur (content commitment) DigitalSignature ist furAuthentisierung oder allgemeine Signaturmechanismen Die beiden moglichst exklusiv setzen

              To do neu

              Nicht bei Endnutzerzertifikaten notig

              To do siehe rfc5280 - KeyUsage -HA lesen

              Merkmale

              (0) DigitaleSignatur zur Authentifizierung (hat keine Auswirkungen auf spatere Zeitraume)(werden zu dem aktuellen Zeitpunkt gepruft)

              (1) (ab X509v4) Inhaltsbindung[contentCommitment] (zb Nichtabstreitbarkeit ) (jetzt noch[nonRepudiation]) (werden zu dem Zeitpunkt zu dem sie erstellt worden sind gepruft)

              (0) und (1) sind Endnutzerinformationen

              nur ent-verschlusseln Schlussel zum verschlusseln von Zertifikaten geignet

              109

              keyCertSign==TRUE - wenn man nur Zertifikate damit signieren mochte (brauch man bei CAZertifikaten eigentlich sollte nur eines der Bits gesetzt sein) ansonsten sollte digitalSignaturegesetzt werden

              Key usage zB A0=10100000 (Erste und dritte gesetzt) oder zB 88=10001000 (erstes undfunftes gesetzt)

              authority information Nicht kritisch Feld in dem Daten des Herausgebers abgerufen werdenkonnen

              Benutzt das OCSP-Online Certificate Status Protocol (gibt eine URI an wo man die Informatio-nen erhalten kann - spater mehr)

              X509v3 Certificate Policies ASN1 Strucktur siehe rfc5280 S 33

              System von Regeln fur die Ausgabe von Zertifikaten sowie den Betrieb der ZertifizierungstelleNutzer kann sich uber die Hirarchie der CA informieren (wichtig fur den Vertrauensaufbau)

              CPS - Certificate Policy Statement und dann zwei moglichkeiten cPSuri (uri wo die Informationzu finden ist) oder userNotice (Freitext)

              Bsp httpnasacanasagovnasacphtml dort findet man eine CPS

              Wenn der Regelsatz dem CA Zertifikat zugeordnet ist (Bindung zB durch Root) ist es besserals wenn es nur dem EndNutzer Zertifikat zugordnet ist (Bindung nur durch die daruberliegendeCA)

              Authority Key Identifier Kurzinformationen mit der man einen Schlussel identifizieren kannFur Endnutzer ist der Authority Key Identifier ein Bezeichner mit dem das zugohrige CA-Zertifikat zu finden ist Kann enthalten

              KeyIdentifier - Schlussel ID

              GeneralNames - Herausgeber Seriennummer

              CertificateSerialNumber

              Subject Key Identifier - SKI Schlussel ID hilft bei der Unterscheidung sollte eine moglichsteindeutige Nummer sein da aber nicht genau festgelegt wird ist die SKI nicht fur Uberprufungengeeignet

              110

              Subject Alternative Name IP Adresse URI Email Adresse (hat das rsquoatrsquo Zeichen welchesin kein Datentyp passt weshalb sie hierher (oder in den Issuer Alt Name) gehort soll alsrfc8224Name gespeichert werden (da dieser nicht groszlig klein sensitiv ist))

              To do neu-ende

              605 Erzeugung

              To do neu

              Bei OpenSSL gibt es zwei moglichkeiten mit Perl Script

              perl ˜optopensslappsCApl -newca

              openssl x509 -text -nout -in cacertpem

              openssl req -text -nout -in careqpem

              Diese Requests folgen dem Standard PKCS 10 - rfc2986

              openssl ans1parse -in careqpem

              Attributes [0] - Contextabhangiges Tag (nur an diesem Ort gultig) Codiert als A0 denn Con-textabhangige tags fangen mit 10 an im Gegensatz zu Universaltags die mit 00 anfangen(Beispiel fur Contextabhangige Tags siehe auch bei AuhtorityKeyIdentifier)

              Im Request ist Set of Atritbute NICHT optional (aber kann leer sein)

              To do neu-ende

              Wie kommen wir eigentlich zu Zertifikaten Zertifikate kommen von einer CA also muss manzuerst ein CA-Zertifikat erstellen

              Request Ich mochte ein Zertifikat haben PKCS10RFC2986openssl req

              openssl req -new -x509 erzeugt gleich ein Zertifikat

              openssl req -new -newkey rsa1500 -days 40 -out userreq ein neuer Schlussel undein Request Der Request enthalt die Informationen des Antragsstellers den offentlichen Schlusselein Challenge-Passwort (von der CA festgelegt) und eine Signatur uber diese Daten

              111

              openssl x509 -req -CA -CAkey -out -days 40

              -in userreq -CAcreateserial -out userx509

              -extensions usr_cert -extfile opensslcnf wichtig um v3-Zertifikate zu erzeu-gen

              606 Gultigkeit

              Der rsquoGultigkeitszeitraumlsquo (Validity) im Zertifikat ist der Zeitraum uber den sich die ausstellendeInstanz verpflichtet etwas uber die Gultigkeit des Zertifikats auszusagen

              CRL Certificate Revocation List

              OCSP Online Certificate Status Protocol

              Sperrlistenformat auch in RFC 3280 Abschnitt 5 als X509-Variante festgelegt

              OCSP version 1 RFC 2560

              To do neu

              Man kann dass conf bearbeiten

              Ubungsaufgabe ein Zertifikatsrequest mit eigen Daten erstellen und zu zertifizieren

              To do einsortieren

              Die CA schmeiszligt eventuell Daten des Request raus

              To do neu-ende

              To do neu-20090624

              Sperrlisten Enthalten

              Version

              Signatur

              112

              Herausgeber

              LastNext Update

              Sperrlisten Nummer (sollte monoton wachsen)

              Liste der gesperten Zertifikate(jeder Eintrag enthalt ein Integer eine Zeit und evt CRLEntryExtension(CRLReason-Code siehe rfc5280 531))

              Bemerkungen

              Sperrlisten sind im DER-Format ( openssl -inform DER)

              (Erweiterungen enthalten immer OID Octet-String)

              Zu CRLEntryExtension CRLReason Code (6) (certificateHold-schwebend gesperrt) und (8)(removeFromCRL-kannwurde wieder entsperrt werden) sind besonders und sind eher nur furAuthosierung sinnvoll

              Sperrlisten nehmen in der Praxis erhebliche groszligen ein

              CRLEntryExtension wird von der Bundesnetzagentur nicht benutzt

              RFC5280 532 sperrdatum (revocation date) darf nicht vor dem Zeitraum der vorherigen CRLliegen sonst ist es in der vorherigen Liste Gultig (ansehen)

              Aufbau des Pfad zum Vertrauensanker (RFC 5280 S72) Das beschriebene Prufverfahren istnicht normativ vorgeschrieben es reicht wenn die Funktion gleich ist

              httpwwwbundesnetzagenturdemediaarchive1343pps

              Kettenmodel benutzt den Erstellungszeitpunkt (nicht Gewahrleistungs-Beginn) (Folie3)

              httpwwwbundesnetzagenturdeenid85f55115e236d80fc18329992037142d0FAQ

              Antwortss4_wphtml

              To do neu-ende

              To do 20090701-fehlt

              113

              61 Praktische Ausschlachtung von kryptografischen Algorithmen mitSMIME und PKCS7

              Root-Zertifikat erzeugenopenssl genrsa 1200 gt cakeypem

              openssl req -x509 -new -key cakeypem -config opensslcnf gt cacert (selbst-signiertes neues root Zertifikat mit eigenem Config Script)

              Root-Zertifikat anschauenopenssl x509 -in cacert -text -noout

              Nutzer der eigenen CA erstellenopenssl req -new -config opensslcnf -out usercert Erstellt mehrere Dateienauch privkeypem

              Zertifikat erstellenopenssl x509 -req -in userreq -CA cacert -CAkey cakeypem -CAcreateserial

              -out usercert -extfile opensslcnf -extensions usr_cert (Zertifikat fur usermit Extenstions Version 3 statt Version 1)

              Senden einer signierten Nachricht (Nachricht in Neutxt)openssl smime -sign -signer usercert -in Neutxt -inkey privkeypem

              -out neusmime -text

              Erzeugt Datei neusmime mit Nachricht und Signature -text erzeugt den Eintrag fur den Con-tent Type vor der Originalnachricht in neusmime

              Umwandeln der SMIME Nachricht in PKCS7 Nachrichtopenssl smime -pk7out -in neusmime -out neupk7

              Das gesamte (ohne Inhalt der Nachricht eigentlich nur die Signatur) SMIME Dokument wirdin eine PKCS7 Struktur eingebunden

              Anschauen mitopenssl asn1parse -i -in neupk7

              Zertifikate ausgeben mitopenssl smime pkcs7 -in neupk7 -print_certs -noout

              Zertifikate anschauen mitopenssl smime pkcs7 -in neupk7 -print_certs -noout -txt

              Verifizierenopenssl smime -verify -in neusmime -CAfile cacert

              Verschlusseln

              114

              openssl smime -encrypt -in Neutxt -out neusmime -text usercer

              Nachricht ohne Signatur verschlusselt

              Entschlusselnopenssl smime -decrypt -in neusmime -text -recip usercer

              -inkey privkeypem

              Fur die Einbindung in Browseropenssl pkcs12 -export -name Annie -inkey privkeypem

              -in usercert -out userp12

              Um auch das CA Zertifikat mit einzubindenopenssl pkcs12 -export -name Annie -inkey privkeypem

              -in usercert -out userp12 [-certfile cacert -CAfile cacert -chain]

              Private Schlussel auspacken openssl pkcs8

              62 PKCS

              PKCS Public Key Cryptography Standards

              1 RSA3 Diffie-Hellman5 Cryptography mit Passworten6 Zertifikate7 Cryptographic Message Syntax8 private Schlussel9 Attributtypen10 Zertifikatsrequest11 Cryptographic Token12 Personal Information Exchange13 Elliptische Kurven15 Chipkarten Token Formate

              621 PKCS7 15 November 93 RFC 3852

              To do neu-20090708

              CMS

              Email (SMIME)

              115

              XML Signaturen XMLDSIG XMLENC

              Dokument rarr signiertes Dokument

              openssl genpkey -algorithm rsa -pkeyopt rsa_keygen_bits300mdash openssl -chek -text -noout

              zu kleine Werte (iexcl256) fur den Schlussel werden nicht akzeptiert (Wert ist immer noch etwasklein) Aber die Ausgabe ist nicht ganz korrekt

              openssl genpkey -algorithm rsa -pkeyopt rsa_keygen_pubexp1

              ist leider moglich

              63 CMS(Cryptographic Message Syntax)

              rfc3852

              SignedData

              bull Version

              bull Hash Algorithmus

              bull gekapselter Inhalt

              bull Certifikat Liste

              bull Widerrufungsliste (Sperrinformationen)

              bull

              bull Signer Infos (Signaturen davon kann es mehrere geben elektronische Signatur nach demSignaturgesetz Signer Info enthalt selber noch einmal einen Signaturblock - der als Digi-tale Signatur aufgefasst werden kann)

              ndash Versionndash Idndash Attributesndash Algondash sig Valuendash

              bull Signer Id

              bull Signed Attributes (zB Zeit Ort Message Digest) Die Signatur dieses Blockes wird er-stellt indem der Hash Wert (nur des Blockes) signiert wird Wenn es signed Attributesgibt sind also auszligerdem Hash Wert des Dokuments und Inhaltstyp(Contenttype) im Si-gned Attributes enthalten und erst dann wird der Signed Attributes Block signiert Es wirdjeweils er Hash-Algorithmus verwendet der oben genannt wird

              116

              Auszligerdem Signing Certificate

              bull

              Frage ist wo wird der Wert Signiert der sagt welcher Hash-Algorithmus verwendet wird Wennnicht konnte man eventuell den Algorithmus austauschen

              Man konnte den Hash-Algorithmus als SignedAttribute einfugen

              To do neu-ende

              CMS (Cryptographic Message Syntax) Beschreibung des Formates mit dem man Krypto-nachrichten erstellen kann

              Kryptographische Nachricht Struktur vorne Bezeichner hinten Daten Daten = irgendwasspannend Welche Typen gibt es eigentlich

              Signed-data Content-Type Was jetzt kommt sind signierte Daten Liste der unterstuetzen Has-hfunktion dann gekapselter Inhalt dann eine Liste von Zertifikaten (optional) optionalSperrlisten dann Signaturbloecke (SignerInfo)

              SignedData = SEQUENCE

              Versionsnummer

              Liste der unterstutzten Hashfunktionen

              Ursprungliche Nachricht selbst

              Liste von Zertifikaten Optional

              Sperrlisten Optional

              Signer Infos

              SignedInfo = SEQUENCE

              Versionsnummer

              Signer Identifier (Wer der Signierer eigentlich gewesen sein soll)

              Hashfunktionen die bei der Signatur verwendet wird

              Signierte Attribute

              Verwendete Signaturalgorithmus

              Signaturwert

              Unsignierte Attribute

              SignerInfo = SEQUENCE

              Versionsnummer

              Signer Identifier (Wer der Signierer eigentlich gewesen sein soll)

              Bezeichner des Hashalgorithmus mit dem die endgultige Signatur erstellt wird

              Signierte Attribute Optional

              117

              Signatur Algorithmus

              Signature SignatureValue

              Unsigned Attributes Optional

              SignerIdentifier = SEQUENCE

              issuerAndSerialNumber

              subjectKeyIdentifier (Eindeutiger Hinweis wer der Aussteller ist)

              SignerInfo Signaturblock der eine Datenstruktur fuer eine Signatur bereitstellt Steht drin Ver-sionsnummer SignerIdentifier verwendeter Hash-Algorithmus dann signierte Attributeverwendeter Signaturalgorithmus Signaturwert unsignierte Attribute

              SignerIdentifier Aussteller und Seriennummer oder Schluesselidentifier (subjectKeyIdenti-fier)

              Signierte Attribute Sammlung von Attributen die signiert sind Was dabei sein sollte erstesAttribut Content-Type wenn die signierten Daten nicht nur Rohdaten sind sondern gekap-selte Daten eine s bestimmten Typs Ein weiteres nuetzliches Attribut Message-DigestDann Signing-Time

              Content-Type Object-Identifier der einen bestimmten Typ impliziert

              Message-Digest Hash der aus den Daten ausgerechnet wird Als Octet-String

              Signing-Time Zeit von der behauptet wird dass die Signatur zu dieser Zeit geleistet wurde

              Signatur Es werden die signierten Attribute signiert dort ist auch der Hash des Dokumentsals messageDigest enthalten Wenn keine signedAttributes existieren wird das Dokumentdirekt gehasht

              Weitere sinnvolle signierte Attribute

              Commitment-Type Was bedeutet die Signatur zum Beispiel virtuelle Poststelle Eingangs-stempel Auslieferung Einschreiben Urheberschaft gelesen Zeitstempel (spezielleSignatur eines authentischen Zeitservers) ist eine Information dass das Dokument vor-her existiert hat

              Signing Certificate Beschreibt mit welchem Schluessel zu welchem Zertifikat ist unterschrie-ben wordenwelches Zertifikat moechte der Signierer zur Ueberpruefung verwendet ha-ben Austausch des Zertifikats fuehrt zu anderer Urheberschaft ist ein realer AngriffVerhindert die Urheberschaft auszutauschen (rfc2634 S 46) Folge mit Zertifikats HashIssuerSerial(Herausgeber und Seriennummer) (leider ist da SHA1 als Algorithmus festge-legt)

              in rfc5035

              Folge mit Hash-Algorithmus (optional default ist aber SHA256) Zertifikat Hash IssuerSerial (Nun Hash als Octet String)

              Da der Wert des Hash Algorithmus optional ist ist diese Variante ruckwartskompatibel

              118

              Signing Location Ort an dem die Signatur geleistet wurde

              Weitere nuetzliche unsignierte Attribute

              Zeitstempel ist eine Information wann die Signatur existiert hat Hash uber die Signatur TimeServer davon Signatur

              not after Information fur die Signatur

              Countersignature Zweite Signatur (Gegenzeichnung) Signaturblock uber eine andere Signa-tur

              (Mitsignatur Bestatigung eines signierten Dokuments wichtiges Feld fur Mehrfachsigna-turen)

              Hashwert des signature Feldes (3 Hash Wert) nicht alle in einander gekappselt sonderansammlung von Signaturen

              Archiv Zeitstempel neuer Hash-Algorithmus signiert Dokument alle Signaturen alle Attri-bute (signiert unsigniert)

              Damit kann mann folgendes machen

              2001 2009 2010

              RS A512 S HA1 S HA256 S HA512

              Dok S ignatur t1 t2cc at1TTYY^^bb at2 at3

              Fur XML XML-DSIC XML-ENC

              7 Wichtige Neuerungen bei den Versionsanderungen

              bull Von 098 zu 099 Verbesserungen bei den Extensions von Certificate Revocation Lists

              bull Von 097h zu 098 UTF8-Support fur das ca-Kommando

              bull SHA1 ist nun default-Hash-Algorithmus statt MD5

              bull Patentierte Algorithmen RC5 und MD2 mussen beim Kompilieren extra angegeben wer-den

              bull Neue FIPS 180-2 Algorithmen SHA-224-256-384-512 wurden implementiert

              119

              bull Neuer Parameter -selfsign fur das ca-Kommando

              bull IPv6 Support bei den Zertifikatserweiterungen

              bull Ausweitung der Eliptischen Kurven Bibliothek

              8 OpenSSL hintergehen

              81 die eine Primzahl ganz klein erzeugen

              bull Offnen einer Datei in genrsa cryptorsarsa_genc

              bull Andern den Teil ldquo generate p and q rdquo so daszlig die eine Primzahl 10bit lang ist(bitsp=10 )

              bull Wir erzeugen einen neuen rsa key openssl genrsa -out rsaweakpem 2048und erstellen hierdurch eine Primzahl mit 10 bit die andere zufallig (also so in etwa2038bit)

              bull Wir schauen uns den key an openssl rsa -in rsaweakpem -text -nooutund sehen die eine Primzahl ist 35879 die andere hat 2046 bit Lange Das kann manlecker faktorisieren

              bull Offnen cryptobnbn_primeh die Zahl kommt durch den kleinen Primzahltest durchdieser geht nur bis ca 17000

              82 beide Primzahlen nah beieinander

              bull Und wieder in rsa_genc (Zeile 136 in der do-while-Schleife hinter degenerate)

              bull BN_copy(rsa-gtq rsa-gtp) wir setzen q gleich pBA_add_word(rsa-gtq 20) wir addieren 20 auf q

              for(i=1 BN_is_prime_ex(rsa-gtq 5 ctx NULL) i++)

              BN_add_word(rsa-gtq 2)

              wir erhoehen q bis zur naechsten Primzahl

              bull hierdurch erzeugen wir zwei Primzahlen die sich enorm ahnlich sind (wieder mit obigenKommandos) Der Angreifer kennt in diesem Fall den Exponenten damit ist das Verfahrenvollig unsicher

              83 Vorschrift des BSI

              01 le |log10 p minus log10q| also p gt10radic

              2 lowast qDas kann man aber mit q =10

              radic2 lowast p im Quellcode umgehen

              120

              84 Programmierung Zufallszahlenerzeugung und andere nette features

              Die ldquocallbackrdquo Funktion gibt den Fortschritt bei Suche nach p und q als Punkt (Fermat Primzah-lentest) und Plus (Miller-Rabin-Test) aus

              DatentypStruktur zum Speichern der auftretenden groszligen Zahlen Binarfeld BIGNUMp ist unsigned char

              p = BN_bn2hex((RSA )pub_rsa)-gtn) Zum Ausgeben eines BIGNUMs

              ((pub_rsa)-gtn)d[] einzelne Teile im Datenblock eines BIGNUMs editieren

              Zufallszahlen findet man in cryptorandrandh rand_libc randc

              Diese beiden Kombinationen vor entsprechenden Programmen i2d oder d2i intern to data datato internpub_rsa = d2i_RSAPublickey(NULL ampstr len) (lange von str) Transfor-miert Binardaten Zeichenkette in interne public Key Datenstruktur mit ASN1

              S(buf) gibt Speicherplatz frei uberschreibt ihn vorher noch einmal mit Zufallsbytes

              9 Zusammenfassung

              bull Symmetrische Verschlusselungsverfahren

              ndash DES

              64 Bit Blockchiffre

              16 Runden Feistelnetzwerk mit 48 Bit Rundenschlusseln

              56 Bit Schlussellange plus 8 Paritatsbits

              XOR Transformationsfunktion mit S-Boxenndash IDEA

              64 Bit Blockchiffre

              8 Runden Feistelnetzwerk mit je 6 middot 16 Bit Rundenschlusseln

              128 Bit Schlussellange

              XOR ADD modulo 216 MULT modulo 216 + 1ndash Blowfish

              64 Bit Blockchiffre

              16 Runden Feistelnetzwerk

              32-448 Bit Schlussellange

              XOR Transformationsfunktion mit XOR CONCAT und viel Schlusselmaterialndash AES

              121

              128 192 256 Bit Blockchiffre

              10 12 14 Runden Feistelnetzwerk

              128 192 256 Bit Schlussellange

              Substitution ShiftRow MixColumn KeyAddition

              ndash RC4

              Stromchiffre

              10 12 14 Runden Feistelnetzwerk

              variabele Schlussellange bis 2048 Bit

              ndash RC5

              wahlbare Blockchiffre (openssl 32 Bit)

              wahlbare Runden Feistelnetzwerk (openssl 12)

              wahlbare Schlussellange (openssl 128 Bit)

              ndash GOST

              64 Bit Blockchiffre

              32 Runden Feistelnetzwerk

              256 Bit Schlussellange

              ADD ROT 8 S-Boxen

              bull Asymmetrische Verschlusselungsverfahren

              ndash RSA (Verschlusseln und Signieren)

              ndash Diffie-Hellmann Schlusselaustausch

              ndash ElGamal Crypto-System (basierend auf DH)

              ndash Rucksackverschlusseln (gebrochen)

              ndash Merkle Puzzle (viele Nachrichten)

              ndash Rabin Verfahren

              Zur Prufung erster Teil mit OpenSSL spielen zweiter Teil Konzepte eine Woche vor derPrufung evt fragen was dran kommen wird Prufungstermine 20072005 oder 04102005oder nach Vereinbarung

              10 Mathematische Techniken

              101 Multiplikatives Inverses

              (nach wwwtzide˜hsLehreU9 mathD1pdf)

              122

              1011 Behauptung

              Seien a b isin Z zwei teilerfremde ganze Zahlen dh ggT (a b) = 1 Dann existiert ein aprime isin Z mitaprime middot a equiv 1 mod b

              1012 Beweis

              Betrachte die Menge ak mod b|k isin N k ge 1 Da ggT (a b) = 1 gilt folgt dass ggT (ak b) = 1fur alle k isin N mit k ge 1 Denn da a teilerfremd zu b ist so gilt dies auch fur alle Potenzenvon a Daher ist die betrachtete Menge eine Untermenge der endlichen Menge x mod b|x isinZ ggT (x b) = 1 und daher selbst endlich Also kann existiert k1 k2 mit ak1 equiv ak2 mod bNehmen wir an k1 lt k2 und setzen n = k2 minus k1 dann gilt ak1 middot an = ak2 equiv ak1 mod bDaher folgern wir an equiv 1 mod b d h anminus1 middot a equiv 1 mod b Also setzen wir aprime = anminus1 und dieBehauptung ist erfullt

              102 Kleiner Fermatscher Satz

              1021 Behauptung

              Aus der Wikipedia (unter GNU Free Documentation License)

              Der kleine fermatsche Satz kurz der kleine Fermat ist ein Lehrsatz in der Zahlentheorie Ermacht eine Aussage uber die Eigenschaften von Primzahlen und wurde aufgestellt im 17 Jahr-hundert von Pierre de Fermat Dieser Satz beschreibt eine allgemein gultige Kongruenz

              ap equiv a mod p

              wobei a eine ganze Zahl und p eine Primzahl ist (die weitere Symbolik wird im Artikel Kon-gruenz beschrieben) Falls a kein Vielfaches von p ist kann man das Resultat in die haufigbenutzte Form

              apminus1 equiv 1 mod p

              bringen

              1022 Beweis

              Der Beweis beruht auf der Tatsache dass wenn zwei Zahlen a und b zueinander inkongruent(modulo einer festen Zahl n) sind auch die beiden Produkte x middot a und x middot b inkongruent modulon sind fur x gt 0 und ggT (x n) = 1

              Denn

              123

              sei a b mod n n eine Primzahl a b naturliche Zahlen Angenommen

              a middot x equiv b middot x mod n

              fur eine naturliche Zahl x mit ggT (x n) = 1 Dann gibt es eine naturliche Zahl k so dass

              a middot x minus b middot x = k middot n

              x middot (a minus b) = k middot n

              x = n middot (k(a minus b))

              Da n eine Primzahl und x eine naturliche Zahl ist ist k(a minus b) entweder eine naturliche Zahlminus1n oder 1n Die letzten beiden Falle widersprechen der Annahme dass a b mod n dererste Fall widerspricht der Annahme dass ggT (x n) = 1 Damit ist die Annahme falsch und esgilt fur x so dass ggT (x n) = 1

              a middot x b middot x mod n

              Aus der Wikipedia (unter GNU Free Documentation License)

              Im folgenden betrachtet man zum einen die Menge A aller Reste mod p - also alle naturlichenZahlen kleiner als p und zum anderen die Menge B die diese Reste multipliziert mit a enthaltZwei beliebige Zahlen aus A sind zueinander inkongruent modulo p Aus dem oberen Satzfolgt dass damit auch zwei beliebige Zahlen aus B zueinander inkongruent sind Dadurchergibt sich dass das Produkt uber alle Zahlen aus A kongruent zum Produkt aller Zahlen aus Bist

              1 middot 2 middot 3 middot middot middot middot middot (p minus 1) equiv (1 middot a) middot (2 middot a) middot middot middot middot middot ((p minus 1) middot a) mod p

              alsoW equiv W middot apminus1 mod p

              wobei W das Produkt 1 middot2 middot3 middot middot(pminus1) ist Da es in Restklassenkorpern stets ein multiplikativesInverses gibt kann man diese W dividieren und man erhalt

              apminus1 equiv 1 mod p

              1023 Verallgemeinerung

              Man kann den kleinen fermatschen Satz zum Satz von Euler verallgemeinern Fur zwei teiler-fremde Zahlen n und a gilt

              aϕ(n) equiv 1 mod n

              wobei ϕ(n) die Eulersche Phi-Funktion bezeichnet Diese hat als Ergebnis die Anzahl der Zah-len zwischen 1 und nminus1 welche teilerfremd zu n sind Ist n eine Primzahl so ist ϕ(n) = nminus1 sodass man Fermats kleinen Satz als Spezialfall erhalt Mit Hilfe des kleinen fermatschen Satzesentwickelte Fermat den fermatschen Primzahltest

              124

              1024 Praktische Anwendung auf Primzahlen

              (p - a a lt p a 0)Wenn gilt apminus1 1 mod p ist dann kann p keine Primzahl sein (Umkehrung muss nicht

              gelten) Wenn man mit a beiweisen kann das p keine Primzahl sein kann dann nennen wir aKanditat (Es gibt aber sogenannte Carmichaelzahlen die kein Kandidat ist)

              To do nacharbeiten Carmichaelzahlen

              Wenn (p minus 1) gerade ist pminus12 = k eine Ganzzahl

              Ist a2k equiv 1 mod p(ak)2 equiv p(ak minus 1)(ak + 1) equiv 0 mod pAlso wenn p eine Primzahl ist dann ist entweder ak equiv 1 mod p oder ak equiv 1 mod pDaraus folgt wenn ak 1 mod p und ak minus1 mod p dann ist p keine PrimzahlSomit gilt auch wenn k gerade ist und a

              k2 1 und a

              k2 minus1 dann ist p keine Primzahl

              Betrachten p minus 1 = 2t middot r (r ungerade) Sei a lt p und p - aIn ar a2r a22middotr a2t middotr = apminus1 (Reste mod p)Wenn die Folge nicht mit 1 endet ist p keine Primzahl Wenn vor der ersten 1 in der Folge

              keine 1 steht ist p keine PrimzahlWir nennen a einen Zeugen wenn man mit a beweisen kann das p keine Primzahl istJede Zahl p die keine Primzahl ist hat mindestens 3

              4 aller Zahlen a (mit ggT(a p) = 1) alsZeugen (Jeder Kandidat ist ein Zeuge)

              Damit ergibt sich der Rabin-Miller-Test Wahle zufallig ein a lt p und teste ob a ein Zeugeist Mit hoher (beliebig genauer) Wahrscheinlichkeit ist p Primzahl

              Bei groszligen Zahlen werden die Zeugen mehr

              openssl genrsa -out keyrsa 800

              Generating RSA private key 800 bit long modulus

              +++++++

              +++++++

              e is 65537 (0x10001)

              Generiert den Schlussel und speichert in rsquokeyrsarsquo Punkte Bedeutet keine kleine PrimzahlRabin-Miller Test schlagt fehl Plus ist ein erfolgreicher Rabin Miller Test bei groszligeren Zahlenbrauch man weniger Tests da es mehr Zeugen gibt

              []

              103 Chinesischer Restklassensatz

              (nach wwwtzide˜hsLehreU9 mathD1pdf)

              125

              1031 Behauptung

              Seien m1m2 mr paarweise teilerfremde ganze Zahlen d h ggT (mim j) = 1 fur alle i j(i j isin 1 2 r) und sei M = m1 middotm2 middotmr Dann existiert fur jede Liste a1 ar mit 0 le ai lt

              mi fur 1 le i le r genau ein x isin Z mit 0 le x lt M welches effizient berechnet werden kann undfur das gilt

              x equiv a1 mod m1

              x equiv a2 mod m2

              x equiv ar mod mr

              Bemerkung Es ist leicht einzusehen dass jedes xprime isin Z mit xprime = x + k middot M fur ein k isin Z d hxprime equiv x mod M genau dasselbe Gleichungssystem lost wie x Der Beweis wird zeigen dass furein gegebenes x nur xprime von dieser Form dasselbe Gleichungssystem losen konnen

              1032 Beweis

              Zunachst beweisen wir die Existenz und setzen dazu Mi = Mmi daher gilt ggT (Mimi) = 1Aus diesem Grund existiert auch ein multiplikatives Inverses Ni isin Z mit Mi middot Ni equiv 1 mod mi

              (vgl multiplikative Inverse) Zu beachten ist jedoch dass fur alle j isin 1 r mit i j stetsMi middot Ni equiv 0 mod m j gilt Nun definieren wir x via

              x equivrsum

              i=1

              ai middot Mi middot Ni mod M

              Fur jedes i existiert ein v isin Z so dass x sich folgendermaszligen darstellen lasst

              x = Mi middot Ni middot ai + v middot mi

              Dies gilt da jedes M j mit j i mi als Faktor enthalt Offensich erfullt x also die obigen Glei-chungen x ist das einzige mit 0 le x lt M welches fur die gegebene Liste a1 a2 ar alleGleichungen lost denn falls xprime und xprimeprime zwei verschiedene Losungen sind so gilt xprime minus xprimeprime equiv 0mod mi fur alle i isin 1 r d h xprimeminus xprimeprime ist ein Vielfaches aller mi und damit auch von M da nachVoraussetzung ggT (mim j) = 1 fur alle i j isin 1 r mit i j erfullt ist Somit folgt xprime equiv xprimeprime

              mod M d h 0 le xprime xprimeprime lt M kann nicht auftreten und der Beweis ist abgeschlossen

              126

              104 Square and multiply

              Der folgende rekursive Algorithmus berechnet xn fur naturliche Zahlen x und n indem sukzes-sive der Exponent reduziert wird

              bull Falls n = 1 xn = x

              bull Sonst falls n gerade xn = (x2)n2

              bull Sonst xn = x middot (x2)(nminus1)2

              Damit kann xn in O(ln(n)) Rechenschritten (quadrieren und multiplizieren) berechnet werdenindem in jedem Schritt des Algorithmus der Exponent halbiert wird und hochstens vier Berech-nungen ausgefuhrt werden

              105 Montgomery Reduktion (Moduloberechnung ohne Division)

              Heute was ganz verrucktes Modulo-Multiplikation ohne Division

              Problem bei RSA und anderen Algorithmenm Modul gegeben und g Zahl gegeben und man rechnet aus ga mod mAufwand der Berechnung mit Square and Multiply Groszlige des Exponenten in Bits Multiplika-tionen + gleichviele ModulooperationenBerechnung von x middot y mod m = x middot y minus (x middot y div m) lowast mDivision aufwendig Daher Methode dies ohne Division bzw mit einer schmerzfreien Divisiondurch eine Zweierpotenz zu tun Dafur Kosten von Hin- und RucktransformationenHier Skizze 1xrarr X = x middot r mod myrarr Y = y middot r mod mX lowast Y = X middot Y middot rminus1 = x middot y middot r mod m

              Wir berechnen t0 equiv minusmminus1 mod r (Preprocessing)

              1 x minusrarr X = x middot r mod m

              2 y minusrarr Y = y middot r mod m

              3 X lowast Y = X middot Y middot rminus1 mod m= x middot r middot y middot r middot rminus1 = x middot y middot r mod m

              Zur Bestimmung von X lowast Y t1 = X middot Y echte Multiplikationt2 = t1 middot t0 mod r Multiplikation untent3 = (t1 + t2 middot m) div r Multiplikation obent3 = X lowast Y oder (t3 minus m) = X lowast Y

              127

              1 t3 ist durch r teilbar

              2 t3 equiv X middot Y middot rminus1 mod m

              3 0 le t3 le 2m

              Zu 1 t1 + t2 middot mequiv t1 + t1 middot t0 middot m mod requiv t1 + t1 middot m middot (minusm)minus1 mod requiv t1 minus t1 equiv 0 mod r

              Zu 2 (t1+t2middotm)r = t3 mod m

              (t1 middot t2 middot m) middot rminus1 mod mequiv t1 middot rminus1 + t2 middot rminus1 middot mequiv X middot Y middot rminus1 mod m

              Beispiel 5 lowast 3 =

              t1 = 15t2 = 15 middot 23 mod r = 45t3 = 15 + 45 middot 13 = 6

              Zu 3t1 le (m minus 1)2

              t2 middot m lt r middot mt1 + t2 middot m lt 2 middot r middot m

              t3 lt 2 middot m

              t3 equiv X middot Y middot rminus1 mod mx lowast r2 = X = x middot r mod mX lowast 1 = x mod m

              Beispiel m = 13 r = 100 t0 = 23

              r mod m r = 9 mod 13r2 = 3 mod 13

              Ziel 6 middot 5 mod 13

              6 lowast 3 = 25 lowast 3 = 6

              128

              2 lowast 6 =

              t1 =

              t2 =

              t3 = xx

              x lowast 1 =

              Wenn eine Division langer als 1 5 Multiplikationen dauert dann lohnt sich das Verfahren DerErfinder heisst ubrigens Peter L Montgomery (Montgomery Reduktion) wwwmiinformatikuni-frankfurtdeteachingws0001krypto algomontgomerypdf

              Montgomery-Multiplikation

              To do siehe Mathematischer Anhangzusammenfugen

              Die Reduktion modulo m erfordert eine Division aber Divisionen sind rsquoteuerrsquo

              Dies kann man aber wie folgt vereinfachen

              Um die Division zu vermeiden rsquotransformiertrsquo man die Zahlen

              Sei gesucht das Produkt x middot y mod m

              x minusrarr X y minusrarr Y x middot y minusrarr X lowast Y

              R = (zweierPotenz) gt m und die Division durch R muss einfach sein

              X = x middot R mod m

              X lowast Y = X middot Y middot Rminus1 mod m (wobei die modulo Reduktion nun nicht mehr jedes mal ausgefuhrtwerden muss sonder nur am Anfang und am Ende der rsquoTransformationrsquo)

              1 Berechne mprime = minusmminus1 mod R

              (minusmR) = 1 rArr XGCD mprime middot m = minus1 mod R

              2 t = X middot Y (echte Multiplikation)

              3 t1 = t middotmprime mod R (echte Multiplikation und oben abschneiden also eine leichtere moduloReduktion da R eine zweier Potenz ist) (dabei gilt t2 lt m2 + R middot m)

              4 t2 = t + t1 middot m (echte Multiplikation und eine Addition) (dabei gilt t3 lt(m+R)middotR

              R = 2m)

              5 t3 = t2divR (also rsquounten abschneidenrsquo)

              6 Wenn t3 gt m dann t3 = t3 minus m

              129

              Nun ist t3 = X lowast Y Dafur muss t3 lt m sein oder in Schritt 6 t3 lt 2m sein

              Wir mussten also prufen

              1 t3 lt m

              2 Division in 5 rsquogeht aufrsquo

              t2 ist durch r teilbar

              t2 mod R equiv (t + t1 middot m) equiv t + (t middot mprime) middot m mod R equiv t + t(minus1) mod R equiv 0 mod R

              3 t3 = X lowast Y

              t3 middot R mod m equiv t2R middot R mod m equiv t2 equiv t + t1 middot m equiv t mod m equiv X middot Y mod m

              Wir haben also den folgenden Aufwand

              1 rsquoTransformationrsquo

              2 rsquoRechnungrsquo

              3 Zuruck rsquotransformierenrsquo

              x lowast R2 = x middot R2 middot Rminus1 mod m = x middot R = X mod m

              X lowast 1 = X middot 1 middot Rminus1 equiv x middot R middot Rminus1 equiv x mod m

              Man benotigt also zwei zusatzliche Operationen zur transformation Dafur kommt die Operationrsquorsquo ohne Divisionen aus

              Beispiel m = 17

              R = 100

              7 middot 11 mod 17

              x lowast y mod mdarr darr

              X Y= =

              (x middot R) mod m lowast (y middot R) mod m

              m1 = minusmminus1 mod 100

              suche also ein m1 mit m1 middot 17 = minus1 mod 100

              m1 = 47

              130

              To do Bsp Magma Quelltext siehe Homepage

              Bem dazu Wenn R groszlig genug ist kann man die Subtraktion von m weglassen

              Mathematischer Hintergrund (Zm+ middot)simminusrarr (Zm+ lowast) Was ist das Einselement und das

              Inverse

              106 Nochwas

              vielleicht

              zur Prufung Zwei Teile (ein theoretischer ein praktischer) Ein openssl-Kommando das in derVL nicht behandelt wurde wird drankommen (zum Beispiel speed ca etc) Theoretischer Teil

              1 symmetrische Verfahren (was sind symmetrische Verfahren wodurch charakterisiert)

              2 Integritatsschutz (wie kann man Integritatsschutz gewahrleisten)

              3 asymmetrische verfahren (siehe 1)

              4 Signatur (was sind Signaturen wofur verwendet man sie was ist ˜konzept was ist sicherwas ist unsicher)

              5 Vertrauensstruktur (zum Beispiel PGP)

              6 Client-Server-Authentisierung (SSL-Protokoll Kerberos)

              7 Sicherheitsparameter (wo sind die welchen Einfluszlig auf die Sicherheit haben sie)

              8 X509 (elektronische Identitat)

              9 RFC-Security (3280 3279 3446 )

              Mathematische Verfahren

              1 Square and Multiply Double and Add

              2 Euklidischer Algorithmus

              3 RSA DH

              4 DSA

              5 AES

              6 das eine oder andere symmetrische Verfahren Strom-Blockchiffre

              7 Elliptische Kurven eher nicht reicht zu wissen dass man mit Addition in EK das gleicheerreichen kann wie mit Multiplikation im Restklassenkorper

              8 kleiner Fermat eher nicht

              131

              9 Montgomery-Multiplikation vielleicht auch nicht sollte aber bekannt sein

              Fur MD5- AES- etc Grundfunktionen reicht evt wissen wo man nachschauen muss

              Dann nachweisen dass man mit Openssl spielen kann

              1 Verschlusseln mit DES3DESBFAES

              2 Prufsummenberechnung

              3 Konfigurationsfile

              4 RSA-Verschlusselung

              5 098 ndash 097 (dynamisch)

              6 Zertifikat

              7 DSA-Verschlusselung

              8 Passworter (passwd) und Salt

              9 E-Mail-Nachricht erstellen und sichern (SMIME-Anwendung)

              Zum Punkt Ich mochte eine 1 haben was muss ich dafur tun Was haben sie ausserhalb derVorlesung schonmal gelesen Was fehlte ihnen an der Vorlesung was fanden sie doof

              132

              • 1 Einfuumlhrung
                • 11 Verschluumlsselung
                • 12 Beispiel rot13
                • 13 Block-Chiffre
                • 14 Strom-Chiffre
                • 15 Angriffstypen
                  • 151 Differentielle Kryptoanalysis
                    • 16 Base64
                      • 2 OpenSSL
                      • 3 Symmetrische Verschluumlsselungsverfahren
                        • 31 Feistel-Chiffren
                        • 32 DES - Data Encryption Standard
                          • 321 Schluumlsselauswahl
                          • 322 Funktionsweise
                          • 323 Schwachstellen und Unsinnigkeiten
                          • 324 spezielle Optionen bei openssl
                          • 325 DESECB - Electronic Code Book
                          • 326 DESCBC - Cipher Block Chaining
                          • 327 DESOFB - Output Feed Back
                          • 328 DESCFB - Cipher Feed Back
                          • 329 CTR Mode CCM
                          • 3210 TEA-Algorithmus
                          • 3211 DES-X
                            • 33 IDEA International Data Encryption Algorithm
                              • 331 Schluumlsselauswahl
                              • 332 Funktionsweise
                              • 333 Pseudocode-multiplikation
                              • 334 Schwachstellen
                                • 34 Blowfish
                                  • 341 Initialisierung
                                  • 342 Verschluumlsselung
                                    • 35 AES Advanced Encryption Standard
                                      • 351 Wiederholung-Byteoperation
                                      • 352 Uumlberblick
                                      • 353 mathematische Grundlagen
                                        • 36 RC4 Rons Cipher 4
                                          • 361 Geschichte
                                          • 362 Beschreibung
                                          • 363 Der Pseudo-Zufalls-Algorithmus
                                          • 364 Der Schluumlsselerzeugungs-Algorithmus
                                          • 365 Implementation
                                          • 366 Sicherheit
                                          • 367 Fluhrer Mantin und Shamir Angriff
                                            • 37 RC5 Rons Cipher 5
                                              • 371 Verschluumlsselung
                                              • 372 Schluumlsselexpansion
                                                • 38 GOST 28147-89 Gosudarstvennyi Standard Soyuza SSR nicht in OpenSSL
                                                • 39 FazitWie koumlnnte bei einen Symmetrischen Algorithmus die Sicherheit erhoumlhen
                                                  • 4 Asymmetrische Verschluumlsselungsverfahren
                                                    • 41 Einfuumlhrung
                                                      • 411 Beispiel
                                                        • 42 Geschichte
                                                        • 43 Einige Theoretische Grundlagen
                                                          • 431 Kleiner Fermat (oder kleiner Fermatscher Satz)
                                                          • 432 Euklidischer Algorithmus
                                                          • 433 Beispiel
                                                            • 44 RSA Rivest Shamir Adleman
                                                              • 441 Funktionsweise des RSA-Verfahrens
                                                              • 442 Beweis der Funktionsweise
                                                                • 45 Schwaumlchen von RSA
                                                                • 46 Fuktionen in OpenSSL
                                                                  • 461 genrsa
                                                                  • 462 rsa
                                                                  • 463 rsautl
                                                                  • 464 PKCS
                                                                  • 465 OAEP - Optimal Asymmetric Encryption Padding
                                                                  • 466 Wie erkennt man an Ciphertexten den Verschluumlsselungsalgorithmus- DER ASN1
                                                                  • 467 Umgehen mit den Schluumlsselkomponenten
                                                                    • 47 Miller-Rabin Test
                                                                    • 48 Diffie-Hellman-Schluumlsselaustausch
                                                                    • 49 ElGamal-Cryptosystem
                                                                    • 410 Wiederholung DH
                                                                      • 4101 Beispiel
                                                                        • 411 was anderes
                                                                        • 412 Elliptische Kurven
                                                                        • 413 Elliptische Kurven Nachtrag
                                                                        • 414 Rucksack-Verschluumlsseln
                                                                          • 4141 Beispiel
                                                                            • 415 Merkle Puzzle
                                                                            • 416 Rabin-Verfahren und Wurzelziehen
                                                                              • 4161 Schluumlsselgenerierung
                                                                              • 4162 Kongruenzbedingung
                                                                              • 4163 Verschluumlsselung
                                                                              • 4164 Entschluumlsselung
                                                                                • 417 Angriffe auf asymmetrische Verschluumlsselungsverfahren
                                                                                  • 4171 1 Angriff Common modulus attack
                                                                                  • 4172 2 Angriff kleiner geheimer Exponent d
                                                                                  • 4173 3 Angriff Faktorisieren
                                                                                  • 4174 Echt schlechte RSA-Schluumlssel
                                                                                  • 4175 Schnelles Faktorisieren bei Fehler im System
                                                                                  • 4176 Angriff mit gewaumlhltem Chiffretext
                                                                                      • 5 Signaturmechanismen
                                                                                        • 51 Integritaumltsschutz und Hashfunktionen
                                                                                          • 511 Schluumlssellose Hashfunktion (Pruumlfsummen ohne Schluumlssel)
                                                                                          • 512 Demonstration Faumllschung
                                                                                            • 52 Unterschied MD5 und SHA
                                                                                            • 53 Secure Hash Standard SHA-2
                                                                                              • 531 Problem bei MD5 und SHA-0
                                                                                              • 532 MACs (Message Authentication Codes) (Pruumlfsummen mit Schluumlsseln)
                                                                                                • 54 Whirlpool
                                                                                                • 55 Zusammenfassung
                                                                                                • 56 Digitale Signaturen
                                                                                                  • 561 RSA
                                                                                                  • 562 Eigenschaften eines asymmetrischen Verschluumlsselungsverfahren
                                                                                                  • 563 RSASSA-PSS-Padding
                                                                                                  • 564 DSA
                                                                                                  • 565 ECDSA - DSA mit Elliptischen Kurven
                                                                                                    • 57 Widerrufen von Zertifikaten
                                                                                                    • 58 Was es noch so gibt
                                                                                                      • 581 blinde Signaturen
                                                                                                      • 582 anonyme Signaturen
                                                                                                          • 6 Zertifikate
                                                                                                            • 603 X509
                                                                                                              • 604 Erweiterungen
                                                                                                              • 605 Erzeugung
                                                                                                              • 606 Guumlltigkeit
                                                                                                                • 61 Praktische Ausschlachtung von kryptografischen Algorithmen mit SMIME und PKCS7
                                                                                                                • 62 PKCS
                                                                                                                  • 621 PKCS7 15 November 93 RFC 3852
                                                                                                                    • 63 CMS(Cryptographic Message Syntax)
                                                                                                                      • 7 Wichtige Neuerungen bei den Versionsaumlnderungen
                                                                                                                      • 8 OpenSSL hintergehen
                                                                                                                        • 81 die eine Primzahl ganz klein erzeugen
                                                                                                                        • 82 beide Primzahlen nah beieinander
                                                                                                                        • 83 Vorschrift des BSI
                                                                                                                        • 84 Programmierung Zufallszahlenerzeugung und andere nette features
                                                                                                                          • 9 Zusammenfassung
                                                                                                                          • 10 Mathematische Techniken
                                                                                                                            • 101 Multiplikatives Inverses
                                                                                                                              • 1011 Behauptung
                                                                                                                              • 1012 Beweis
                                                                                                                                • 102 Kleiner Fermatscher Satz
                                                                                                                                  • 1021 Behauptung
                                                                                                                                  • 1022 Beweis
                                                                                                                                  • 1023 Verallgemeinerung
                                                                                                                                  • 1024 Praktische Anwendung auf Primzahlen
                                                                                                                                    • 103 Chinesischer Restklassensatz
                                                                                                                                      • 1031 Behauptung
                                                                                                                                      • 1032 Beweis
                                                                                                                                        • 104 Square and multiply
                                                                                                                                        • 105 Montgomery Reduktion (Moduloberechnung ohne Division)
                                                                                                                                        • 106 Nochwas

                14 Strom-Chiffre

                Aus der Wikipedia (unter GNU Free Documentation License)

                Eine Strom-Chiffre ver- bzw entschlusselt Nachrichten Bit fur Bit bzw Zeichen fur ZeichenDies steht im Gegensatz zu Block-Chiffren wo Nachrichten immer in gleich groszligen Blockenverarbeitet werden

                Strom-Chiffren sind symmetrische Verschlusselungsalgorithmen die sehr schnell arbei-ten

                Zur Generierung eines Geheimtextes wird zunachst ein Schlusselstrom erzeugt DieserSchlusselstrom ist eine Folge von Zeichen die nur mit Kenntnis des geheimen Schlussels er-zeugt werden kann (in der Regel eine Pseudozufallsfolge) Danach wird jedes Zeichen desSchlusselstroms mit einem Zeichen des Klartextes verknupft Die Verknupfungsoperation istXOR Um Geheimtexte wieder zu entschlusseln wird der Geheimtext mit dem Schlusselstromverknupft

                Beispiele fur Strom-Chiffren sind die XOR-Verschlusselung oder die Entwicklung vonRonald L Rivest namens RC4

                15 Angriffstypen

                m Nachrichtc verschlusselte Nachrichtk Schlussel

                Kommunikation zwischen Alice und Bob mit Angreifer Eve Vorraussetzung Eve kennt dasVerfahren

                1 Chiffre ist bekannt(ciphertext only Chiffre allein Angriff)m k gesucht

                2 (mi ci)-Paare sind bekannt ci = E(kmi)(known plain text bekannter Klartext Angriff)gesucht k und weitere mi

                3 wahlbarer Klartext chosen plaintext(zB Eve hat Encoder in die Hande bekommen)

                4 wahlbarer Chiffretext chosen ciphertext(zB Eve hat Decoder in die Hande bekommen)

                Generelle Schutzmechanismen zum sicherer machen

                8

                1 Klartextbits breit auf Chiffre verteilen und Schlusselbits uberall einbringen um die Si-cherheit zu erhohen bzw einen anderen Algorithmus verwenden um dies zu erreichen

                2 Algorithmus skalieren Lange des Schlussels mehr Runden

                3 Schwachen zusatzlichen Schutz bietet doppeltes verschlusseln zum BeispielAlgorithmus hat 64-Bit Sicherheit (Brute Force Angriff Aufwand von 264) doppelt ver-schlusselt hat er 65-Bit Sicherheit wegen

                rdquomeet in the middle Angriffldquo Ist known plain text attack m ist der Klartext k der Schlusselfur den ersten Algorithmus n der daraus resultierende ldquoZwischentextrdquo l der Schlussel furden zweiten Algorithmus und c die endgultige verschlusselte Nachricht Der Angreiferinist ein m und das dazu gehorige c bekannt Sie erzeugt sich nun alle Werte die k an-nehmen kann und alle Werte die l annehmen kann und berechnet zu jedem ki sowie zujedem li ein ni als E(kim) bzw D(li c) Damit muss sie 2 lowast 264 Paare von Schlusselnund ldquoZwischentextenrdquo erzeugen und speichern In der Menge der ni gibt es nun (da beideVerschlusselungen eindeutig sind) genau zwei - eines als Entschlusselung von c eines alsVerschlusselung von m - die ubereinstimmen Deren Schlussel sind diejenigen die auchbei der Erzeugung von c verwendet wurden Das Auffinden dieses Paares kann durch ge-schickte Speicherung der ni ki und li zum Beispiel in einer Hashtabelle in logarithmischerZeit bewerkstelligt werdenDaher Sicherheit des Algorithmus ist mindestens so stark wie jeder einzelne Algorithmusaber moglicherweise nicht viel besser

                4 Dreifach verschlusseln und Kombination von AlgorithmenDer Meet-in-the-middle attack schlagt hier fehl da der Speicher- und Rechenaufwandnun quadratisch mit dem Werteraum der Schlussel wachst Bei der Verwendung einesschwachen Algorithmus der anderweitig gebrochen werden kann wird die Kombinationjedoch wieder anfallig fur meet-in-the-middle

                5 Block-Chiffre + Strom-Chiffre kombinierenStrom-Chiffre sehr langer Schlussel c = p oplus k k zufallig gewahlt (moglichst echter phy-sikalischer Zufall) zwei Folgen CK rarr in Block-Chiffrerarr Blockweise C2 = E(S 1K)C1 = E(S 2C)Eine Strom-Chiffre und zwei Block-Chiffren Brechen dieser Kombination = Aufwandaddiert sich aber doppelte Ausgabelange

                151 Differentielle Kryptoanalysis

                man wahle Klartexte P1 P2 mit ganz bestimmten Unterschied P1 oplus P2 = D Bei der Ver-schlusselung ergibt sich dann fur die Chiffretexte C1C2 mit bestimmten Dprime = C1 oplus C2 das ineinen bestimmetn Zusammenhang zu D steht

                Bleiben die Schlussel immer gleich so kann man sich langsam mit D1 Dn an den Klartextranprobieren ()

                9

                16 Base64

                Aus der Wikipedia (unter GNU Free Documentation License)

                Base64 [] beschreibt ein Verfahren zur Kodierung von 8-Bit-Binardaten (z B ausfuhrbareProgramme ZIP-Dateien) in eine Zeichenfolge die nur aus wenigen Codepage-unabhangigenASCII-Zeichen besteht Im Zusammenhang mit OpenPGP wird noch eine Prufsumme (CRC-24) angehangt und es als Radix-64 bezeichnet

                Es findet im Internet-Standard MIME (Multipurpose Internet Mail Extensions) Anwen-dung und wird damit hauptsachlich zum Versenden von E-Mail-Anhangen verwendet Notigist dies um den problemlosen Transport von beliebigen Binardaten zu gewahrleisten da SMTPin seiner ursprunglichen Fassung nur fur den Versand von 7-Bit ASCII-Zeichen ausgelegt war

                Zur Kodierung werden die Zeichen A-Z a-z 0-9 + und verwendet sowie = am EndeDa diese Zeichen auch in EBCDIC vorkommen (wenn auch an anderen Code-Positionen) istdamit auch ein Datenaustausch zwischen nicht-ASCII-Plattformen moglich

                Zur Kodierung werden jeweils drei Byte des Bytestroms (=24 bit) in vier 6-bit-Blockeaufgeteilt Jeder dieser 6-bit-Blocke bildet eine Zahl zwischen 0 und 63 Diese Zahlen werdenan Hand der nachfolgenden Umsetzungstabelle in ldquodruckbare ASCII-Zeichenrdquo umgewandeltund ausgegeben Nach jeweils 76 ausgegebenen Zeichen wird spatestens ein Zeilenumbrucheingefugt welcher jedoch ansonsten fur die Kodierung nicht von Belang ist

                Falls die Gesamtanzahl der Eingabebytes nicht durch drei teilbar ist wird der zu kodieren-de Text am Ende mit Fullbytes aufgefullt Um dem Dekodierer mitzuteilen wie viele Fullbytesangefugt wurden werden die 6-Bit-Blocke die vollstandig aus Fullbytes entstanden sind mitrsquo=rsquo kodiert Somit konnen am Ende einer Base64-kodierten Datei 0 1 oder 2 rsquo=rsquo-Zeichenauftreten

                Die angesprochene Transitionstabelle ist eine alphabetisch bzw numerisch aufsteigende Anord-nung zuerst der Groszligbuchstaben dann der Kleinbuchstaben schlieszliglich der Ziffern und am Endeder beiden Zeichen rsquo+rsquo und rsquorsquo in dieser Reihenfolge

                2 OpenSSL

                Optionen fur openssl ciphername oder openssl enc -ciphername

                OPTIONS

                -in filename

                the input filename standard input by default

                -out filename

                the output filename standard output by default

                10

                -pass arg

                the password source

                -salt

                use a salt in the key derivation routines

                -nosalt

                donrsquot use a salt in the key derivation routines

                -e

                encrypt the input data this is the default

                -d

                decrypt the input data

                -a

                base64 process the data This means that if encryption is

                taking place the data is base64 encoded after encryption

                If decryption is set then the input data is base64 decoded

                before being decrypted

                -A

                if the -a option is set then base64 process the data on

                one line

                -k password

                the password to derive the key from This is for

                compatibility with previous versions of OpenSSL Superseded

                by the -pass argument

                -kfile filename

                read the password to derive the key from the first line

                of filename This is for compatibility with previous

                versions of OpenSSL Superseded by the -pass argument

                -S salt

                the actual salt to use this must be represented as a

                string comprised only of hex digits

                -K key

                the actual key to use this must be represented as a string

                comprised only of hex digits If only the key is specified

                the IV must additionally specified using the -iv option

                11

                When both a key and a password are specified the key given

                with the -K option will be used and the IV generated from

                the password will be taken It probably does not make much

                sense to specify both key and password

                -iv IV

                the actual IV to use this must be represented as a string

                comprised only of hex digits When only the key is specified

                using the -K option the IV must explicitly be defined When

                a password is being specified using one of the other options

                the IV is generated from this password

                -p

                print out the key and IV used

                -P

                print out the key and IV used then immediately exit donrsquot

                do any encryption or decryption

                -bufsize number

                set the buffer size for IO

                -nopad

                disable standard block padding

                -debug

                3 Symmetrische Verschlusselungsverfahren

                31 Feistel-Chiffren

                Aus der Wikipedia (unter GNU Free Documentation License)

                Feistel-Chiffre (auch als Feistelnetzwerk bezeichnet) ist eine Block-Chiffre Ein Mitarbeitervon IBM Horst Feistel gilt als der Erfinder dieser Chiffre Er arbeitete mit anderen am sogProjekt rdquoLuciferldquo dessen Ziel es war eine effiziente Verschlusselungstechnologie zu entwi-ckeln Die Feistel-Chiffre war spater dann die Grundlage fur den DES-Algorithmus

                Viele moderne symmetrische Verschlusselungsalgorithmen basieren auf Feistelnetzwer-ken Dies ruhrt ua auch daher dass die Struktur von sehr vielen Kryptografen analysiert undfur gut befunden wurde

                12

                Wie es der Name rdquoBlock-Chiffreldquo schon nahe legt wird der Klartext zuerst in einzelneBlocke zerlegt Die Groszlige dieser Blocke kann frei gewahlt werden ublich sind oftmals Vielfa-che von 64 Bit

                Jeder dieser Blocke wird danach in zwei gleichgroszlige Halften (L0 und R0) geteilt und inmehreren Runden mit verschiedenen Schlusseln verschlusselt Nach den Runden werden dieHalften wieder zusammen gesetzt

                Innerhalb der i-ten Runde (i ist die Nummer der aktuellen Runde und reicht von 1 bis n)wird folgende Formel angewendet

                Li = Riminus1

                Ri = Liminus1 oplus f (Riminus1Ki)

                Dabei bildet f die sog Runden- oder Transformationsfunktion und Ki ist der jeweilige Runden-schlussel Der verschlusselte Text am Ende der Runden ist die Zusammenfuhrung von (LnRn)

                Feistelnetzwerke ermoglichen eine Entschlusselung ohne dass die Umkehrfunktion von fbenotigt wird Will man einen Geheimtext dechiffrieren wendet man die obige Formel leichtmodifiziert an

                Riminus1 = Li

                Liminus1 = Ri oplus f (Riminus1Ki)

                13

                (Quelle httpenwikipediaorgwikiImageFeistelpng)

                32 DES - Data Encryption Standard

                DES ist eine 64 Bit Block-Chiffre mit einer festgelegten Schlussellange von 56 Bit Die Funk-tionsweise entspricht einem 16-Runden Feistel-Netzwerk DES ist der erste Verschlusselungs-Algorithmus der weite Verbreitung fand und dessen Spezifikation offentlich zuganglich ist Erwurde in den 70er Jahren entwickelt und ist im amerikanischen Standard FIPS 46-2 beschrieben

                14

                321 Schlusselauswahl

                Zunachst steht nominal ein 64-Bit Schlussel zur Verfugung Von diesem ist jedoch je ein Bit proByte als Paritatsbit deklariert so dass 56 Bit effektives Schlusselmaterial ubrigbleiben Diese 56Bit werden in 2 mal 28 Bit aufgeteilt die in jeder der 16 Runden um 1 oder 2 Bit rotiert werdeninsgesamt um 28 Bit so dass am Ende wieder das Original vorliegt Aus der Konkatenation derbeiden Halften wird in jeder Runde ein 48-Bit Rundenschlussel ausgewahlt

                (Quelle httpenwikipediaorgwikiImageDES-key-schedulepng)

                15

                322 Funktionsweise

                Die so gewonnenen Rundenschlussel ki werden fur die Runden der Feistelchiffre genutzt E(k1 k2 k16m) =

                cE(k16 k15 k1 c) = mD(k1 k2 k16 c) = E(k16 k15 k1 c) = mJeder 64 Bit Eingabe-Block wird in zwei 32 Bit Blocke (L und R) aufgeteilt und weiterverarbei-tet L und R werden in jeder Runde durch eine festgelegte Permutation E auf 48 Bit ausgedehntanschlieszligend mit dem Rundenschlussel verknupft mittels einer weiteren rundenspezifischenPermutation S wieder auf 32 Bit komprimiert und dann schlieszliglich noch einer weiteren festge-legten Permutation P unterzogenLi = Riminus1Ri = Liminus1 oplus f (Riminus1Ki) wobei f (Riminus1Ki) = P(S (E(Riminus1) oplus Ki))

                rechts Feistelstruktur (Quelle httpenwikipediaorgwikiImageDES-main-networkpng)

                links F Funktion (Quelle httpenwikipediaorgwikiImageDES-f-functionpng)

                16

                (Quelle httpdewikipediaorgwikiBildDES_resizepng)

                323 Schwachstellen und Unsinnigkeiten

                bull Die Anfangliche Permutation der Klartexteingabe sollte Softwareimplementation erschwe-ren Per Hardware ist diese sehr einfach universell verwendbare Rechner hatten in den70er Jahren jedoch noch Probleme mit so etwas

                bull Das Paritatsbit ist eine Schwachstelle da es - soweit es gesetzt ist - ein Durchmustern desSpeichers nach dem Schlussel erlaubt Gesucht wird dann nach dem relativ ungewohn-lichen Auftreten von 8 nahe bei einander liegenden Byte bei denen je das letzte Bit dieParitat angibt

                17

                bull Mit heutigen Rechnern ist es moglich einen 56-Bit Schlussel mittels brute force zu knackenDie Lange des Schlussels ist bei DES aber auf diesen Wert festgelegt

                bull Es wird vermutet dass die ldquomagischenrdquo S-Permutationen uber deren Qualitat nichts be-wiesen ist eine Hintertur darstellen da die NSA hierbei ihre Finger im Spiel hatte Eskonnte jedoch nie bewiesen werden

                324 spezielle Optionen bei openssl

                bull Option -nopad Schaltet Auffullung der letzten Bits zu Block von 64 Bits aus Auch wenndie Nachricht genau in 64 Bit Blocken einteilbar ist wird ein 64 Bit Padding Block an-gehangtDer Block besteht aus x mal der Zahl x So lasst er sich beim Entschlusseln wieder entfer-nen

                bull Option -nosalt Schaltet die Voranstellung des salt-Werts ausDer salt-Wert verlangert die Nachricht um insgesamt 16 Bytes Salted__ gefolgt von 8Bytes salt-WertAus Passwort und salt-Wert wird der Key fur die eigentliche Verschlusselung erzeugt Da-mit wird verhindert dass Schlussel wegen Mehrfachverwendung von Passwortern leich-ter zu brechen sind Gleiche Passworter beim Aufruf der Verschlusselung mit OpenSSLfuhren durch den zufalligen salt-Wert zu verschiedenen Keys bei der Verschlusselung

                bull Neben des gibt es auch des-ede und des-ede3 Diese bieten einen gewissen Schutzgegen Bruteforce-AngriffeTDES (Triple DES) DES3 DES-EDE (Encrypt Decrypt Encrypt) mit effektiv 168 Bit

                E3DES(k1 k2 k3m) = EDES(k3DDES(k2 EDES(k1m)))

                In OpenSSL arbeitet des-ede mit zwei Schlusseln

                E(K1)D(K2) E(K1)

                Um in OpenSSL 3 Schlussel angeben zu konnen muss man des-ede3 verwenden Ver-wendet man bei des-ede zweimal oder bei des-ede3 dreimal den selben Schlusselerhalt man eine einfache DES-Verschlusselung So kann man Abwartskompatibilitat er-reichen

                bull In OpenSSL konnen DES Verschlusselungen mit folgenden Befehlen aufgerufen werden

                ndash -desndash -des-cbcndash -des-cfbndash -des-ecbndash -des-edendash -des-ede-cbc

                18

                ndash -des-ede-cfbndash -des-ede-ofbndash -des-ede3ndash -des-ede3-cbcndash -des-ede3-cfbndash -des-ede3-ofbndash -des-ofbndash -des3ndash -desxndash -desx-cbc

                OpenSSL des-ecb -salt fur den Schlusseleintrag aus Passphrasepassphrase = 12345prime +prime S alt minusWert rarr K

                12345srarr

                264 Moglichkeiten

                Damit man keine Tabelle generieren kann die aus den schwachen Schlussel besteht denn fur12345 gibt es 264 Moglichkeiten aufgrund des salts

                (PC12345)(PC1234)

                P- (Klartext) bekanntS- (Saltwert) bekanntC- (Chiffretext) unbekanntwelcher Schlussel wurde verwendet

                112123

                1234

                rarr K

                s1 s2 s3c1 c1 c1c12 c12 c12c123 c123 c123c1234 c1234 c1234

                Dazu kommt aber spater noch mehr

                19

                325 DESECB - Electronic Code Book

                Die Eingabe wird in Blocke aufgeteilt und jeder Block fur sich verschlusselt Dieses Verfahrenist potentiell unsicher weil in der Abfolge der Blocke eine Struktur enthalten ist die der Algo-rithmus nicht verbirgt Ein Fehler beim Ver- oder Entschlusseln eines Blockes fuhrt allerdingsauch nur zu einem einzigen verlorenen Block

                To do Initialisierungsvektor

                (Quelle httpenwikipediaorgwikiImageEcb_encryptionpng)

                (Quelle httpenwikipediaorgwikiImageEcb_decryptionpng)

                BemReicht fur einen Block dann wird auch kein Initialisierungsvektor benotigt

                20

                Man kann fur den Initialisierungsvektor auch einen vorher vereinbarten Wert (zB Unix Sekun-den) wahlen

                Aus der Wikipedia (unter GNU Free Documentation License)

                Die 64-bit Klartextblocke werden nacheinander und getrennt voneinander kontextfrei ver-schlusselt Dies ist die einfachste Anwendungsmoglichkeit eines Block-Chiffre

                326 DESCBC - Cipher Block Chaining

                Aus der Wikipedia (unter GNU Free Documentation License)

                Vor der Verschlusselung eines Klartextblockes wird der bereits verschlusselte vorhergehendeBlock hinzuaddiert Auf den ersten Klartextblock der ja keinen Vorganger besitzt wird stattdessen ein Initialisierungsvektor der geheim gehalten werden muss addiert Dadurch entstehteine Verkettung (engl chain) der Blocke Trotz dieser Verkettung ist die CBC-Verschlusselung

                rdquoselbstkorrigierendldquo FehlerManipulationen in einem Block wirken sich bei der Entschlusse-lung nur auf den fehlerhaftenmanipulierten und den nachsten Block ausMan kann relativ einfach beliebige Blocke des Geheimtextes einzeln entschlusseln da zusatz-lich zum Schlussel nur der vorhergehende (verschlusselte) Block benotigt wird

                Fehler im c breiten sich nicht aus beim Entschlusseln Ein Initialisierungsvektor IV fur erstenBlock wird benotigt

                bull Klartext oplus Cipher und dann Encryption

                bull Vorteil Muster im Klartext werden zerstort

                bull Nachteil Fehler im Ciphertext eines Blocks verandern Bits an genau der Stelle im folgen-den Block (aber nur in diesem spatere Blocke sind nicht betroffen) so kann gezielt eineStelle im Block angegriffen werden (siehe Skizze)

                To do Skizze zur Fehlerausbreitung erlautern

                21

                m1 mlowast2 mlowast3

                IV oplus

                oplus

                oplus

                oplus

                DES

                DES

                DES

                DES

                c1

                DDc2

                DDc3

                DDc4

                EE

                Vergleich DESECB und DESCBC

                Zum Vergleich bietet es sich an ein Bild (Abbildung 1) mit DES im ECB- und im CBC-Moduszu verschlusseln Deutlich zu erkennen ist dass die Struktur im ECB-Modus (Abbildung 2)erhalten bleibt wahrend sie bei CBC (Abbildung 3) vollkommen zerstort wird

                Abbildung 1 Bild im Klartext (24 Bit RGB mit 182 times 183 Pixeln)

                Abbildung 2 Bild aus Abbildung 1 ECB-verschlusselt

                22

                Abbildung 3 Bild aus Abbildung 1 CBC-verschlusselt

                327 DESOFB - Output Feed Back

                Aus der Wikipedia (unter GNU Free Documentation License)

                In diesem Modus werden die Klartextblocke nicht direkt mit DES verschlusselt sondern DESerzeugt einen pseudozufalligen Bitstrom der dann ohne Ubertrag (vgl XOR) auf den Klartextaddiert wird Dazu muss DES mit einem kontinuierlichen Eingabestrom gefuttert werden AlsEingabe von DES dient hier ein Schieberegister dass zunachst mit einem Initialisierungsvektorgeladen wird Anschlieszligend wird immer ein Teil der Ausgabe von DES in dieses Registerhineingeschoben und so als Eingabe wiederverwendet (daher output feedback)

                bull Output der Encrpytion als Input fur Encryption erzeugt Pseudozufallsstrom oplus Klartext

                bull Vorteil Beliebige Blockgroszligen moglich wie Stromchiffre verwendbar

                bull Nachteil Durchsatz verringert sich auf neue Blockgroszlige pro erzeugtem Block kann abervorberechnet werden

                bull Vorteil Ein Bit Fehler fuhrt zu nur einem invertierten Bit nach der Entschlusselung

                bull Nachteil Keine Selbstsynchronisierung moglich wenn Bits komplett verloren gehen

                23

                (Quelle httpdewikipediaorgwikiBildOfb_encryptionpng)

                (Quelle httpdewikipediaorgwikiBildOfb_decryptionpng)

                328 DESCFB - Cipher Feed Back

                Aus der Wikipedia (unter GNU Free Documentation License)

                Identisch mit OFB aber statt die Ausgabe des DES wieder als Eingabe zu verwenden wirdder Kryptotextstrom als Eingabe wiederverwendet

                bull Cipher als Input fur Encryption erzeugt Pseudozufallsstrom oplus Klartext

                24

                bull Vorteil Beliebige Blockgroszligen moglich wie Stromchiffre verwendbar

                bull Nachteil Durchsatz verringert sich auf neue Blockgroszlige pro erzeugtem Block

                (Quelle httpdewikipediaorgwikiBildCfb_encryptionpng)

                (Quelle httpdewikipediaorgwikiBildCfb_decryptionpng)

                329 CTR Mode CCM

                Dieser Modus spielt fur DES keine Rolle Ist auch nicht in OpenSSL implementiert Aber die-se Betriebsart ist fur 128 Bit Verschlusselungen ist zum Beispiel vom BSI als sicher eingestuftworden rsquoDie Betriebsart der Zukunftrsquo

                Wird zum Beispiel fur W-LAN Verschlusselung verwendet

                25

                Eingabe sind Klartext mit einen Zahler

                ctr0 rarr Block rarr oplusT rarr c0ctr1 rarr Block rarr oplusp1 rarr c1ctr2 rarr Block rarr oplusp2 rarr c2ctr3 rarr Block rarr oplusp3 rarr c3

                ctrn rarr Block rarr opluspn rarr cn

                Standardisiert als rsquoSP 800-38crsquo

                (N A P) mit N Zufallswerten A Assoziierte Daten P Klartext produziert Blocke B0 B1 Br

                httpcsrcnistgovpublicationsnistpubs800-38CSP800-38C_updated-July20_

                2007pdf

                To do algorithmus uberarbeiten ubersetzen

                1 Apply the formatting function to (N A P) to produce the blocks B0 B1 Br

                2 Set Y0 = CIPHK(B0)

                3 For i = 1 to r do Yi = CIPHK(Bi oplus Yiminus1)

                4 Set T = MS BTlen(Yr)

                5 Apply the counter generation function to generate the counter blocks Ctr0Ctr1 Ctrmwhere m = dPlen128e

                6 For j = 0 to m do S j = CIPHK(Ctr j)

                7 Set S = S 1||S 2|| ||S m

                8 Return C =(P oplus MS BPlen(S )

                )||(T oplus MS BTlen(S 0)

                )

                T stellt einen Prufwert dar

                3210 TEA-Algorithmus

                To do uberarbeiten

                26

                Nicht in OpenSSL implementiert Universitarer Algorithmus

                (Quelle httpdewikipediaorgwikiBildTEA_InfoBox_Diagrampng)

                Man sieht die Feistel Idee allerdings die grunen Quadrate sind Additionen modulo 64 Bit

                To do erlautern Pfeilspitzen

                Es gibt ein Extended TEA struktur recht ahnlich aber beim Algorithmus an der Stelle

                Byte 0 28 minus 1 | 28ii

                b middot k = (b middot k mod (28 + 1)) mod 28 Es gibt auch eine Inverseb middot K rarr c rarr c middot kprime = b

                geht nur bei 22 + 1 24 + 1 28 + 1 216 + 1

                27

                3211 DES-X

                In OpenSSL desx KK1K2

                EncK(m oplus K2) oplus K1 = DES minus X(m)

                c1 oplus c2 = EncK(m1 oplus K2) oplus EncK(m2 oplus K2)

                Ist unsymetrisch Hat sich nicht so ganz durchgesetzt

                33 IDEA International Data Encryption Algorithm

                IDEA gilt als sehr sicher ist schneller als DES bei Hardwareimplementation tauchte zuerst alsPES auf Unterschied PES und IPES ist die untere XOR-Vertauschung (siehe Wikipedia Skiz-ze) die es im PES nicht gab War nur zur privaten Nutzung frei ansonsten patentiert weshalber nicht so verbreitet war IDEA verschlusselt 64-Bit Eingabe-Blocke in 64-Bit Ausgabe-Blockeund verwendet dabei einen 128-Bit Schlussel Der Algorithmus basiert im wesentlichen auf 8identischen Runden die den Runden einer Feistel-Chiffre ahnlich sind und einer abschlieszligendenTransformation der Ausgabe In jeder Runde werden 6 16-Bit Subschlussel in der Ausgaben-Transformation weitere 4 davon verwendet Samtliche Subschlussel werden aus dem Original-schlussel berechnet Die 64 Bit Eingabe jeder Runde werden dabei als 4 16-Bit-Blocke verar-beitet Der Algorithmus benutzt verschiedene algebraische Operationen

                bull Polynomaddition mod 2 XOR (blau-verbraucht wenig Strom)

                bull Addition mod 216 ADD (grun-verbraucht wenig Strom etwas Zeit - Uberlauf wirdignoriert)

                bull Multiplikation mod 216︸︷︷︸prim

                +1 MULT (rot-viel Strom)

                Aus der Wikipedia (unter GNU Free Documentation License)

                Der IDEA-Algorithmus (International Data Encryption Algorithm) wurde 1990 als ein Ge-meinschaftsprojekt zwischen der ETH Zurich von James L Massey und Xueija Lai und derAscom Systec AG entwickelt IDEA ist ein symmetrischer Algorithmus und gehort zu denBlockchiffren Der Algorithmus benutzt einen 128-Bit langen Schlussel (DES nur 64 Bit da-von sind 8 Bits fur den Paritats-Check vorgesehen so dass die eigentliche Schlussellange nur56 Bits betragt)

                Bei der Verschlusselung wird der Klartext in 64 Bit groszlige Blocke unterteilt und derSchlussel in Teilstucke zu je 16 Bit zerlegt Die Verschlusselung geschieht durch Kombina-

                28

                tion der logischen Operation XOR der Addition modulo 216 und der Multiplikation modulo216+1 Die Kombination dieser drei Operationen aus unterschiedlichen algebraischen Gruppensoll ein hohes Maszlig an Sicherheit gewahrleisten

                Das Verfahren ist dazu optimiert Angriffen durch differentielle Kryptoanalyse zu wider-stehen

                Es gibt bei IDEA leider eine ganze Reihe von schwachen Schlusseln die sich in zweiKlassen einteilen lassen Die erste Klasse umfasst 232 schwache Schlussel Sie sind insofernschwach als man sie mit gewahltem Klartext nachweisen kann Danach ist ein Brute ForceAngriff selbst fur Privatpersonen mit alteren PCs machbar Die zweite Klasse umfasst sogar265 schwache Schlussel Bei diesen Schlusseln kann man mit nur 20 gewahlten Klartexten72 Bit des Schlussels ermitteln Die restlichen 56 Bit muss man mit Brute Force ermittelnAllerdings liegt die Wahrscheinlichkeit dafur einen schwachen Schlussel zu erwischen bei einszu 263 oder eins zu 9 Trillionen

                Weil die Ascom Systec AG an der Entwicklung des Algorithmus beteiligt war halt siedie Patente fur IDEA In Europa verfallt der Patentschutz am 16052011 In den USA wirdder Algorithmus bereits ein Jahr fruher kostenlos nutzbar sein Da das Patent in der Schweizerteilt wurde greift das Patent auch in Deutschland unabhangig davon dass in DeutschlandSoftwarepatente nicht legal sind

                Der Algorithmus beruht wesentlich darauf dass 216 + 1 eine Primzahl ist Deshalb lasst sichIDEA nicht auf andere Blocklaengen adaptieren

                331 Schlusselauswahl

                Aus den 128 Bit des ursprunglichen Schlussels werden in insgesamt 52 16-Bit Teilschlussel er-zeugt Dabei werden aus dem aktuellen Schlusselwert (initial der ursprungliche 128-Bit Schlussel)8 der Teilschlussel durch aufteilen gewonnen Dann wird der aktuelle Schlussel subsequent um25 Bit nach links rotiert und so je ein neuer aktueller Schlussel erzeugt der wieder zu Teil-schlusseln aufgeteilt wird - solange bis alle Teilschlussel belegt sind Es werden 6 middot 16-Bit ineiner Runde verbraucht in 8 Runden also 48 Teilschlussel Hinzu kommen 4 Teilschlussel dienach der letzten Runde fur weitere Operation verwendet werden Insgesamt werden also 52Teilschlussel mit je 16-Bit aus 128-Bit Rohschlussel erzeugt und auch verbraucht rarr 832-BitSchlusselmaterial

                332 Funktionsweise

                In jeder Runde r finden folgende Transformationen statt

                1 X1 = X1 MULT Kr1 X4 = X4 MULT Kr

                4 X2 = X2 ADD Kr2 X3 = X3 ADD Kr

                3

                2 t0 = Kr5 MULT (X1 XOR X3) t1 = Kr

                6 MULT (t0 ADD (X2 XOR X4)) t2 = t0 ADD t1

                29

                3 X1 = X1 XOR t1 X4 = X4 XOR t2 a = X2 XOR t2 X2 = X3 XOR t1 X3 = a

                Dabei sind X1 bis Xi die 16-Bit Blocke die aus der 64 Bit Eingabe gewonnen wurden Kri ist der

                Teilschlussel mit der Nummer r middot 6 + i Die abschlieszligende Transformation ergibt sich wie folgtY1 = X1 MULT K9

                1 Y4 = X4 MULT K94 Y2 = X3 ADD K9

                2 Y3 = X2 ADD K93

                Dabei sind die Yi 4 16-Bit Worter die die Ausgabe darstellen

                (Quelle httpdewikipediaorgwikiBildInternational_Data_Encryption_Algorithm_InfoBox_Diagrampng)

                bull In OpenSSL konnen IDEA Verschlusselungen mit folgenden Befehlen aufgerufen wer-den

                ndash -ideandash -idea-cbcndash -idea-cfbndash -idea-ecbndash -idea-ofb

                333 Pseudocode-multiplikation

                To do als Pseudocode machen

                30

                if(a==0)return ((216 +1)-b) mod 216

                if(a==0)return ((216 + 1)-a) mod 216

                if(a middot b) mod 216 gt (a middot b) div 216 return (a middot b) mod 216 minus (a middot b) div 216

                if(a middot b) mod 216 le (a middot b) div 216 return (216 + 1) + (a middot b) mod 216 minus (a middot b) div 216

                wenn a==0 rArr a = 216 equiv minus1 mod 216

                334 Schwachstellen

                Bei schlechter implementation konnen die XOR-Berechnungen am Stromverbrauch erkanntwerden Es konnen Ruckschlusse auf bestimmte Werte (insbesondere Null) gemacht werdenNach 218 Testrechnungen kann der Klartext bestimmt werdenSolche Angriffe nennt man Seiten Kanal Atacken in diesem Fall ist der Stromverbrauch derSeitenkanal (Zeitverbrauch spielt beim Idea keine Rolle)Bei guter Implementation gilt aber der Algorithmus als sicher

                To do Skizze Stromverbrauch

                34 Blowfish

                Blowfish ist eine sehr schnelle 64-Bit 16-Runden Block-Chiffre die 1993 von Bruce Schneiererfunden wurde Die Lange der Schlussel ist variabel zwischen 32 und 448 Bit Als Teilschlusselwerden aus dem Ausgangsschlussel eine P-Box mit 18 mal 32 Bit und 4 S-Boxen mit 256 mal32 Bit generiert (P1 P18) (S 1 S 4)

                Blowfisch Algorithmus von Bruc Schreier ist vollig Patentfrei dies hat sehr zu seiner Verbrei-tung beigetragen

                31

                F

                F

                14 weitere Runden

                (Quelle httpdewikipediaorgwikiBildBlowfish_structure_(de)svg)

                P1 P18 die XOR auf den Klartext kommen

                Schlussel-P1 P18 und

                -S-Boxen

                32

                (Quelle httpenwikipediaorgwikiImageBlowfishFFunctionsvg)

                S ist 256 32 Bit WerterArr 4 middot 256 middot 32 Werte rArr kann man sich nicht merken also wird P1 P18 S 1 S 4 werdenals Hexadezimalwerte von π gewahlt

                (K)n oplus (P1 P18)

                Der so initialisierte Algorithmus wird auf den Klartext 0 0︸ ︷︷ ︸64

                angewendet Das Ergebnis ersetzt

                (P1 P2) Der so initialisierte Algorithmus wird auf den Klartext 0 0︸ ︷︷ ︸

                64

                angewendet Das Ergebnis

                ersetzt (Pi Pi+1) Der so initialisierte Algorithmus wird auf den Klartext 0 0︸ ︷︷ ︸64

                angewendet

                Das Ergebnis ersetzt (S 1 S 2)

                Auf kosten eines sehr aufwendigen Schlusselmanagment wird ein schneller Algorithmus er-reicht Fur Prozessoren mit wenig Speicher unpraktisch

                341 Initialisierung

                Teilschlusselmanagement Sehr viele Teilschlussel werden aus wenig Schlusselmaterial gene-riert

                1 P und S werden mit einer Hexadezimal-Expansion von Pi initialisiert

                2 Der Schlussel als Sequenz von 32-Bit-Werten wird mittels XOR auf die P-Box addiertwobei er eventuell ldquowiederholtrdquo wird um die ganze Lange der Box abzudecken P1 oplus K1P2 oplus K2 P18 oplus K18

                3 Sowohl die P-Box als auch die S-Boxen werden verschlusselt

                33

                bull Verschlussle mit Blowfish den Nullstring rarr 64-Bit Ausgabe = 2 32-Bit = neueP1 P2

                bull Verschlussle mit Blowfish (Pi Pi+1) die Ausgabe verwende als (Pi+2 Pi+3) Wieder-hole diesen Schritt fur i von 1 bis zum Ende der P-Boxbull Anschlieszligend S 10 S 11 rarr S 12 S 13 Im gleichen Verfahren wie bei der P-Box

                werden die S-Boxen verschlusselt

                Insgesamt ist so ein langer Vorlauf notig bevor die eigentliche Verschlusselung der Daten be-ginnt

                342 Verschlusselung

                In jeder Runde r (insgesamt 16 Runden) wird folgendes Verfahren angewendet

                1 Der 64-Bit Eingabeblock wird in zwei 32-Bit-Halften L und R zerlegt

                2 L = L oplus Pr R = R oplus f (L)f (L) ist dabei folgendermaszligen charakterisiert Zunachst wird das Argument L als Konka-tenation von 4 8-Bit Vektoren a b c und d aufgefasst die als naturliche Zahlen zwischen0 und 255 verwendet werden

                f (a b c d) = ((S 1a + S 2b mod 232 oplus S 3c) + S 4d mod 232

                3 L und R werden vertauscht konkateniert und als Eingabe fur die nachste Runde verwen-det

                Nach der letzten Runde wird noch R = R oplus P17 und L = L oplus P18 durchgefuhrt

                Aus der Wikipedia (unter GNU Free Documentation License)

                Blowfish ist ein sehr schneller und nicht patentierter Algorithmus der besonders auf 32-Bit-Prozessoren eine exzellente Performance bietet Ein weiterer Vorteil ist seine variableSchlussellange von 32 bis zu 448 Bit Die Blockgroszlige betragt 64 Bit

                bull In OpenSSL konnen Blowfish Verschlusselungen mit folgenden Befehlen aufgerufen wer-den

                ndash -bfndash -bf-cbcndash -bf-cfbndash -bf-ecbndash -bf-ofbndash -blowfish

                34

                35 AES Advanced Encryption Standard

                351 Wiederholung-Byteoperation

                Wir hatten folgende Byteoperationen kennengelernt

                bull Multiplikation mod 256 bzw mod 257 ohne 0

                bull Addition mod 256

                bull XOR-Addition (oplus)

                Die Operationen werden in der dementsprechenden Basisdarstellung modulo 256 durchgefuhrt

                352 Uberblick

                AES wurde im Standard FIPS 197 festgeschrieben

                Aus der Wikipedia (unter GNU Free Documentation License)

                AES ist eine Block-Chiffre dessen Blocklange und Schlussellange unabhangig voneinanderdie Werte 128 192 oder 256 Bit erhalten kann Jeder Block wird zunachst in eine zweidimen-sionale Tabelle mit vier Zeilen geschrieben dessen Zellen ein Byte groszlig sind Die Anzahl derSpalten variiert somit je nach Blockgroszlige von 4 (128 Bit) bis 8 (256 Bit) Zum Beispiel fur 16Byte werden die Bytes wie folgt eingetragen

                1 5 9 132 6 10 143 7 11 154 8 12 16

                Jeder Block wird nun nacheinander bestimmten Transformationen unterzogen Aber anstattjeden Block einmal mit dem Schlussel zu verschlusseln wendet AES verschiedene Teile desSchlussels nacheinander auf den Klartext-Block an Die Anzahl dieser Runden (r) variiertund ist von Schlussellange (k) und Blockgroszlige (b) abhangig Je nach Blocklange b undSchlussellange k wird die Anzahl der Runden bestimmt (10 12 oder 14)

                r b=128 b=192 b=256k=128 10 12 14k=192 12 12 14k=256 14 14 14

                S-BoxenEine Substitutionsbox (S-Box) dient als Basis fur eine monoalphabetische Verschlusselung

                35

                Sie ist meist als Array implementiert und gibt an welches Byte wie getauscht wird DieS-Box in AES basiert auf einem mathematischen Zusammenhang und ist somit fest imAlgorithmus implementiert Doch dies ist kein Schwachpunkt da die S-Box lediglich zur Ver-mischung der Bytes in Kombination mit weiteren Operationen und dem Schlussel genutzt wird

                Ablauf

                bull Schlusselexpansion (nach Fips-197 S23 Kapitel 52)

                Der Schlussel rsquokeyrsquo wird auf den Anfang des expandierten Schlussels rsquowrsquo ubernommen(i lt Nk) Danach berechnet sich w[i] wie folgt

                w[i] =

                w[i minus 1] i mod Nk 0S ubWord(RotWord(w[i minus 1])) oplus Rcon i mod Nk = 0S ubWord(w[i minus 1]) Nk gt 6i (mod N)k = 4

                (1)

                w[i] = w[i] oplus w[i minus Nk] (2)

                Der zugehorige Quelltext (Fips-197 entnommen)

                KeyExpansion(byte key[4Nk] word w[Nb(Nr+1)] Nk)

                begin

                word temp

                i = 0

                while (i lt Nk)

                w[i] = word(key[4i] key[4i+1] key[4i+2] key[4i+3])

                i = i+1

                end while

                i = Nk

                while (i lt Nb (Nr+1)]

                temp = w[i-1]

                if (i mod Nk = 0)

                temp = SubWord(RotWord(temp)) xor Rcon[iNk]

                else if (Nk gt 6 and i mod Nk = 4)

                temp = SubWord(temp)

                end if

                w[i] = w[i-Nk] xor temp

                i = i + 1

                end while

                end

                36

                Fur Beispiele siehe Fips-197 Appendix A1

                bull Vorrunde

                ndash KeyAddition (XOR-des Rundenschlussels)

                bull Verschlusselungsrunden

                ndash Substitution - Jedes Byte b wird ersetzt durch bprime = 1b wie bei Polynommultiplikati-

                on Weiter wird jedes Byte als ein 8-dimensionaler Vektor aufgefasst und folgendeOperation angewendet

                b1b2

                b8

                =

                1 0 0 0 1 1 1 11 1 0 0 0 1 1 11 1 1 0 0 0 1 11 1 1 1 0 0 0 11 1 1 1 1 0 0 00 1 1 1 1 1 0 00 0 1 1 1 1 0 00 0 0 1 1 1 1 0

                middot

                b1b2

                b8

                +

                c1c2

                c8

                ndash ShiftRow - Erste Zeil wird nicht verschoben die zweite Zeil um eins die dritteZeile um zwei die vierte um drei (siehe Wikipedia)

                ndash MixColumn - Zu jeder Spalten

                b1b2b3b4

                des Blocks wird folgende Polynommultiplika-

                tion durchgefuhrt

                (b1x3 + b2x3 + b3x + b4) middot (03X3 + 04X2 + 01X + 02) mod (X4 + 1)

                und die Koeffizienten in gleicher Weise wieder in die jeweilige Spalte eingetragenWobei (X4 + 1) das Inverse (0BX3 + 0DX2 + 09X + DE) hat

                ndash KeyAddition

                bull Schlussrunde

                ndash Substitutionndash ShiftRowndash KeyAddition

                Fur die Entschlusselung gehe die oben angegebene Reihenfolge ruckwarts durch Beachtedabei dass ShiftRow und Subst vertauschbar sind Bei ShiftRow wird in umgekehrter Weiseverschoben Ebenso sind KeyAdd und MultColumn vertauschbar wenn der Rundenschlusselmodifiziert wird (B(X) lowast (S (X) oplus K(X)) = S (X) lowast B(X) oplus B(X) lowast K(X) also ist der modifiziertSchlussel B(X) lowast K(X)) Die Entschlusselung entspricht also der Verschlusselung mit modifi-zierten Schlusseln

                37

                353 mathematische Grundlagen

                Speziell der Schritt Mix-Column beinhaltet einige interessante mathematische Uberlegungen Ersoll zu einer moglichst effektiven Vermischung der 32 Bit in jeder Spalte fuhren die die Suchevon dem unverschlusselten Text ahnlichen Mustern im verschlusselten Text erschwert Dabeiwerden arithmetische Operationen aus zwei algebraischen Gruppen angewandt

                1 Die Gruppe der Bytes F82 Jedes Byte b7b6b0 wird als ein Polynom b7 middot X7 + b6 middot X6 +

                b0 middot X0 angesehen Diese Polynome konnen addiert und multipliziert werden Damitdabei der Werteraum des Byte nicht verlassen wird finden diese Operationen modulom(X) = X8 + X4 + X3 + X +1 statt m ist dabei irreduzibel es gilt also ggT (b(X)m(X)) = 1fur jedes Byte b Somit ist F2[X]m(X) ein Korper und die Multiplikation ist abgeschlos-sen Es gilt fur jedes Paar von Bytes b c eindeutig b middot c = d rarr dc = b Multiplikationenkonnen also eindeutig ruckgangig gemacht werden so dass eine Entschlusselung moglichistBei Zahlen die groszliger als m(X) sind werden also durch die modulo Operation die Koeffi-zienten von x4 x3 x1 x0 verandertBeispiel in Magma

                Q = IntegerRing(2)

                Pltxgt = PolynomialRing(Q)

                f=xˆ7+1

                g=xˆ3+xˆ2+x+1

                fg

                fg mod(xˆ8 +xˆ4+xˆ3+x+1)

                IsPrime(xˆ8 +xˆ4+xˆ3+x+1)

                Ausgabe

                xˆ10 + xˆ9 + xˆ8 + xˆ7 + xˆ3 + xˆ2 + x + 1

                xˆ7 + xˆ6 + xˆ3 + xˆ2 + x

                true

                2 Die Gruppe der Worter F4256 Die 4 Bytes einer Spalte w3w2w1w0 werden wieder als Po-

                lynom aufgefasst w3 middot X3 + w2 middot X2 + w1 middot X + w0 Diese konnen wieder multipliziertund addiert werden wobei die arithmetischen Operationen auf den jeweiligen Bytes in F8

                2stattfinden Die Operationen in F4

                256 werden modulo M(X) = X4 + 1 ausgefuhrt M(X) istzwar nicht irreduzibel aber da der Algorithmus nur eine beschrankte Gruppe von Operan-den verwendet bleiben auch hier alle Operationen invertierbar

                Mix-Column multipliziert (in F4256) nun jede Spalte mit c(X) = 3 middot X3 + X2 + X + 2 Die so

                beschriebene lineare Funktion erreicht beweisbar eine groszlige Diffusion der Eingabe

                38

                bull In OpenSSL konnen AES Verschlusselungen mit folgenden Befehlen aufgerufen werden

                ndash -aes-128-cbcndash -aes-128-cfbndash -aes-128-ecbndash -aes-128-ofbndash -aes-192-cbcndash -aes-192-cfbndash -aes-192-ecbndash -aes-192-ofbndash -aes-256-cbcndash -aes-256-cfbndash -aes-256-ecbndash -aes-256-ofbndash -aes128ndash -aes192ndash -aes256

                36 RC4 Ronrsquos Cipher 4

                Geheimes Chiffreverfahren mit Strom-Chiffre von Ron Rivest 1987 Entstehungsjahr 1994 imNetz aufgetaucht 1999 tauchte im Internet ein Draft ARCFOUR (ARC4) auf der die gleichenErgebnisse lieferte

                Byte orientiert zwei Bytes m k dann wird berechnetm oplus k = cDer Algorithmus basiert auf S-Boxen (Permutationen)

                mdashmdashSkizze Seite 2b ganz oben

                PRG (Pseudo Random Generator)mdashmdashweitere Skizze

                Initialisierung K = L Bytes als Schlussel s[i] = i (identische Permutation)L = 1255 fur RC4 mit 40-Bit L = 5 mit 64-Bit L = 8 mit 128-Bit L = 16j = 0 fur i = 0255rarr j = ( j + s[i] + K[ j mod L]) mod 256

                Problem K-Masterkeyrarr salted key Initialwert (frei bekannt) HashInitial(K) = Kaktuell rarr RC4

                39

                Anfangsstucke von PRG RC4 sind nicht rdquorichtig zufalligldquo verraten viel uber KaktuellRegel fur RC4 Die ersten 256-Byte wegschmeiszligen

                Aus der Wikipedia (unter GNU Free Documentation License)

                RC4 (Ronrsquos Cipher 4) ist ein fur Software optimierter Stromchiffrierer welcher zur Ver-schlusselung von Daten eingesetzt wird Er wurde 1987 von Ronald L Rivest fur RSA DataSecurity Inc (heute RSA Security) entwickelt

                Der Algorithmus war sieben Jahre lang geheim (ldquosecurity by obscurityrdquo) bis 1994 derQuellcode anonym veroffentlicht wurde

                RC4 hat im Gegensatz zu DES eine variable Schlussellange Die Schlussellange kann biszu 2048 Bit betragen RC4 verschlusselt immer ein Byte auf einmal

                Er besteht aus einer so genannten S-Box die sich wahrend der Verschlusselung fortlau-fend andert Diese wird durch ein Passwort initialisiert das fur jede Verschlusselung einmaligsein muss Jedes Klartextzeichen wird XOR mit einem bestimmten vom Paszligwort abhangi-gen Zeichen aus der S-BOX verknupft Theoretisch sind somit ca 2 hoch 1700 verschiedeneZustande moglich

                Der Algorithmus ist sehr kompakt und funf- bis zehnmal schneller als der weitverbreite-te DES Deshalb findet der RC4 Algorithmus in einigen Echtzeit-Systemen Anwendung wiebeispielsweise Mobilfunk (Cellular Digital Packet Data) SSH (Secure Shell) WLAN (Wire-less LAN) oder den Dateiverschlusselungs-Programmen SecurePC und Cryptext Die Verar-beitungsgeschwindigkeit des DES ist jedoch selbst in kleinsten Mikrokontrollern meist ausrei-chend Der Schlussel beim DES und anderen Blockchiffren wie dem AES (CBC-Mode) kannim Gegensatz zum RC4 auch mehrfach verwendet werden Vergleichbare Stromchiffren wieSEAL sind vergleichbar schnell und gelten als sicher

                Aus der Wikipedia (unter GNU Free Documentation License)

                ubersetzt aus dem Englischen nach httpenwikipediaorgwikiRC4RC4 (oder ARCFOUR) ist die am weitesten verbreitete Stromchiffre und wird in vielen be-kannten Protokollen beispielsweise SSL oder WEP verwendet Trotzdem entspricht RC4 nichtmehr dem heutigen Sicherheitsstandard und manche Verwendungsweisen von RC4 fuhren zusehr unsicheren Kryptosystemen (zB WEP) Daher wird es nicht fur die Verwendung in neuenSystemen empfohlen Allerdings gibt es auch RC4-basierte Systeme die sicher genug fur denpraktischen Gebrauch sind

                361 Geschichte

                Aus der Wikipedia (unter GNU Free Documentation License)

                ubersetzt aus dem Englischen nach httpenwikipediaorgwikiRC4RC4 wurde 1987 von Ron Rivest von RSA Security erfunden Offiziell bedeutet die Abkurzung

                40

                ldquoRivest Cipher 4rdquo alternativ wird sie aber als ldquoRonrsquos Coderdquo verstanden (s auch die anderenRC-Algorithmen) Zunachst war RC4 ein Betriebsgeheimnis jedoch wurde im September1994 eine Beschreibung anonym auf der ldquoCypherpunksrdquo Mailingiste gepostet Es wurde baldin die scicrypt newsgroup weitergepostet und von dort auf viele Internet-Seiten verbreitetNachdem der Algorithmus nun bekannt ist ist er kein Betriebsgeheimnis mehr Der NameldquoRC4rdquo unterliegt jedoch weiterhin dem Markenschutz Zur Zeit sieht es so aus als seien ldquoinof-fiziellerdquo Implementationen zwar legal konnen aber nicht den Namen ldquoRC4rdquo verwenden Umdieses Problem zu umgehen wird RC4 oft als ldquoARCFOURrdquo bezeichnet RC4 wird inzwischenin einigen weit verbreiteten Verschlusselungsprotokollen und Standards unter anderem WEPund WPA fur WLAN Karten und SSL verwendet

                362 Beschreibung

                Aus der Wikipedia (unter GNU Free Documentation License)

                ubersetzt aus dem Englischen nach httpenwikipediaorgwikiRC4RC4 generiert einen pseudo-zufalligen Bitstrom (einen ldquoSchlusselstromrdquo) der bei der Ver-schlusselung mit dem Klartext mittels XOR verknupft wird Die Entschlusselung funktioniertgenauso Um den Schlusselstrom zu generieren benutzt die Chiffre einen internen Zustand deraus zwei Teilen besteht

                1 eine Permutation aller 256 moglichen Bytes (wird im Folgenden als S bezeichnet)

                2 zwei 8-Bit Index-Zeiger (mit i und j bezeichnet)

                Die Permutation wird mit einem Schlussel von variabler Lange ublicherweise zwischen 40und 256 Bit initialisiert wobei der Schlusselerzeugungs-Algorithmus verwendet wird An-schlieszligend wird der Bit Strom durch den Pseudo-Zufalls-Algorithmus generiert

                363 Der Pseudo-Zufalls-Algorithmus

                Aus der Wikipedia (unter GNU Free Documentation License)

                ubersetzt aus dem Englischen nach httpenwikipediaorgwikiRC4In jeder Iteration wird der Zustand verandert und ein Byte des Schlusselstroms ausgegebenDabei wird i inkrementiert der Wert von S an der Stelle i auf j addiert S [i] und S [ j] vertauschtund der Wert von S an der Stelle S [i]+S [ j] mod 256 ausgegeben Jeder Wert von S wird dabeimindestens einmal alle 256 Iterationen vertauscht In Pseudocode lasst sich der Algorithmusfolgendermaszligen darstellen

                i = 0

                j = 0

                41

                while GeneratingOutput

                i = (i + 1) mod 256

                j = (j + S[i]) mod 256

                swap (S[i] S[j])

                output (S[(S[i] + S[j]) mod 256])

                (Wobei i offentlich ist und j geheim ist)

                i j

                0 1 2 S[i]+S[j] i j 253 254 255

                S

                S[i] S[j]

                S[i]+S[j]K

                (Quelle httpdewikipediaorgwikiBildRC4svg)

                364 Der Schlusselerzeugungs-Algorithmus

                Aus der Wikipedia (unter GNU Free Documentation License)

                ubersetzt aus dem Englischen nach httpenwikipediaorgwikiRC4Der Schlusselerzeugungs-Algorithmus wird benutzt um die Permutation in S zu initialisierenl wird als die Zahl der Bytes des Schlussels definiert und kann zwischen 1 und 255 liegenublicherweise liegt l zwischen 5 und 32 so dass eine Schlussellange von 40 bis 128 Bit zu-stande kommt Zunachst wird S mit der Identitatspermutation initialisiert Anschlieszligend wirdS in 256 Iterationen mit einem Algorithmus der dem Pseudo-Zufalls-Algorithmus ahnelt aberzusatzlich die Schlusselbits hineinmischt weiterverarbeitet Der folgende Pseudocode drucktdies aus

                for i from 0 to 255

                S[i] = i

                j = 0

                for i from 0 to 255

                42

                j = (j + S[i] + key[i mod l]) mod 256

                swap(S[i]S[j])

                365 Implementation

                Aus der Wikipedia (unter GNU Free Documentation License)

                ubersetzt aus dem Englischen nach httpenwikipediaorgwikiRC4Viele Stromchiffren basieren auf ldquolinear feedback shift registersrdquo und sind damit sehr effizientin Hardware aber weniger effizient in Software implementierbar RC4 hat dieses Manko nichtund kommt zudem ausschlieszliglich mit 8-Bit Operationen aus Damit ist RC4 ideal fur Software-Implementationen

                366 Sicherheit

                Aus der Wikipedia (unter GNU Free Documentation License)

                ubersetzt aus dem Englischen nach httpenwikipediaorgwikiRC4RC4 verfehlt die ublichen Standards fur sichere Chiffren an mehreren Stellen und wird somitnicht zur Verwendung in neuen Anwendungen empfohlen Der von RC4 generierte Schlussel-strom tendiert dazu bestimmte Sequenzen von Bytes haufiger zu enthalten als andere undist somit nicht wirklich zufallig Der beste Angriff der auf diesem Sachverhalt beruht wur-de von Fluhrer und McGrew entdeckt und kann aus einem Gigabyte verschlusseltem Textden Schlusselstrom berechnen Zudem verwendet RC4 keine ldquononcerdquo einen fur jeden Klar-text neu generierten Zusatzschlussel Eine solche ldquononcerdquo wird im allgemeinen als zentralesSicherheitskriterium betrachtet da so gewahrleistet ist dass eine zweimal nacheinander ver-schlusselte Nachricht zwei verschiedene verschluesselte Texte erzeugt Naturlich kann einesolche ldquononcerdquo im Nachhinein aufgesetzt werden indem als RC4-Schlussel nicht der eigentli-che Benutzerschlussel sondern beispielsweise ein Hashwert des Schlussels mit einer nonce ver-wendet wird Die einfachere Methode den Schlussel nur mit der nonce zu konkatenieren dievon einigen Anwendungen genutzt wird fuhrt aufgrund des schwachen Schlusselerzeugungs-Algorithmus wieder zu neuen Problemen

                To do anmerkungen zu k=1-Angriffsmoglichkeiten

                43

                367 Fluhrer Mantin und Shamir Angriff

                Aus der Wikipedia (unter GNU Free Documentation License)

                ubersetzt aus dem Englischen nach httpenwikipediaorgwikiRC42001 wurde eine erstaunliche Entdeckung gemacht Die statistische Verteilung der ersten paarBytes des Schlusselstroms ist uber alle RC4-Schlussel stark nicht-zufallig und enthalt Infor-mationen uber den Schlussel selbst Falls die nonce lediglich mit dem Schlussel konkateniertwurde (oder gar keine nonce verwendet wurde) kann der Schlussel durch die Analyse einergroszligen Zahl verschlusselter Nachrichten herausgefunden werden Mit Hilfe dieses Sachver-haltes und einiger damit zusammenhangender Effekte wurde dann die WEP-Verschlusselung(ldquowireless equivalent privacyrdquo) die in 80211 WLAN-Netzen verwendet wird gebrochen Diesfuhrte zu einer Suche nach einem Ersatz fur WEP und letztlich zu den Bemuhungen um 80211isowie zu WPA

                Der geschilderte Angriff kann naturlich umgangen werden wenn die ersten (ca 256) Bytes desSchlusselstroms verworfen werden

                bull In OpenSSL konnen RC4 Verschlusselungen mit folgenden Befehlen aufgerufen werden

                ndash -rc4ndash -rc4-40

                37 RC5 Ronrsquos Cipher 5

                Die zentrale Neuerung des RC5-Algorithmus sind datenabhangige Rotationen bei denen einZwischenergebnis um eine Zahl von Bytes rotiert wird die weder fest vorgegeben noch vomSchlussel bestimmt sondern aus einem Teil des Klartextes berechnet ist Diese Operation wirdfolgendermaszligen notiert a ltltlt b bedeutet dass a um b Bits nach links rotiert wird Ein weitererinteressanter Aspekt ist die universelle Parametrisierbarkeit des Algorithmus Sowohl die Langeder Worter w als auch die Zahl der Runden r und die Lange des Schlussels b sind wahlbar sodass der Algorithmus offen ist fur zukunftige Bedurfnisse die weitere Operation + wird nun alsAddition modulo 2w definiert In openssl ist RC5 mit den Parameters w = 32 r = 12 b = 16 im-plementiert Samtliche Algorithmen gehen im folgenden von einer little-endian Byte-Anordnungaus Der Algorithmus besteht aus einem Verschlusselungs- und einem Schlusselexpansions-Teil

                371 Verschlusselung

                Gegeben ein auf t = 2(r + 1) Worter expandierter Schlussel S und ein aus zwei Wortern A undB bestehender Eingabeblock gibt folgender Pseudocode den Verschlusselungs-Algorithmus an

                44

                A = A + S[0]

                b = B + S[1]

                for i = 1 to r do

                A = ((A XOR B) ltltlt B) + S[2i]

                B = ((B XOR A) ltltlt A) + S[2i + 1]

                Die Entschlusselung lauft dementsprechend folgendermaszligen ab

                for i = r downto 1 do

                B = ((B - S[2i + 1]) gtgtgt A) XOR A

                A = ((A - S[2i]) gtgtgt B) XOR B

                A = A - S[0]

                B = B - S[1]

                372 Schlusselexpansion

                Zunachst wird S mit einer Kombination aus e und ϕ (dem goldenen Schnitt) initialisiert und derSchlussel in ein Array L kopiert das wortweise indiziert wird Anschlieszligend wird mit folgendemAlgorithmus der Schlussel in S hinein gemischt

                i = j = 0

                A = B = 0

                do 3 max(t 8bw) times

                A = S[i] = (S[i] + A + B) ltltlt 3

                B = L[j] = (L[j] + A + B) ltltlt (A + B)

                i = (i+1) mod t

                j = (j+1) mod (8bw)

                38 GOST 28147-89 Gosudarstvennyi Standard Soyuza SSR nicht inOpenSSL

                GOST ist das russische Normungsinstitut vergleichbar mit DIN oder ANSI

                (siehe auch httpenwikipediaorgwikiGOST_(block_cipher))

                Gost-Chiffre ist eine relativ simple Feistel-Chiffre auf 64 Bit mit 32 Runden 256 Bit Schlussellangeund 8 S-Boxen von zusammen 512 Bit die - da sie geheim gehalten werden konnen - alsSchlusselerweiterung gelten konnen Die Rundenfunktion besteht aus der Addition eines 32-Bit-Substrings des Schlussels der Anwendung der S-Boxen (parallel da jede S-Box 4 Bit alsEin- und Ausgabe hat) und einer 11-Bit-Rotation Die Sicherheit des Algorithmus beruht auf

                45

                der Verwendung sehr langer Schlussel geheimer S-Boxen und der gegenuber DES verdoppeltenRundenzahl In jeder einzelnen Runde wird jedoch ein geringerer Durchmischungseffekt erreichtals bei DES-Runden

                Geheimer Algorithmus S-Boxen auch geheim

                (Quelle httpenwikipediaorgwikiImageGOSTDiagrampng)

                46

                Feistel Chiffre

                Addition Substitution Rotation

                Die S-Boxen sind Gruppenschlussel die extra zugewiesen werden16 4 Bit Werte werden Permutiert 32 RundenSchlusselmaterial 32 die 256 Bit werden jeweils in 8 32 Bit Unterschlussel eingeteilt wobei dieSchlussel wie folgt verwendet werden1234567123456712345677654321

                (Dann einmal S-Box einmal rotieren und dann Feistelschritt)

                Die Sicherheit steckt in den 32 Runden Der Algorithmus wurde bisher nicht geknackt

                39 FazitWie konnte bei einen Symmetrischen Algorithmus die Sicherheiterhohen

                (Das ware zB fur eine Interessante Frage fur eine Klausur)

                bull komplexes Schlusselmanagment

                bull viele Runden

                bull komplexe vermischung pro Runde (AES)

                4 Asymmetrische Verschlusselungsverfahren

                41 Einfuhrung

                AliceBob Chris Dave Eve

                Alice BobkA kA

                Enck1(M) = C minusrarr M = Deck2

                Verschlusselungsverfahren kA kB EncDecAus kA kann kB nicht bestimmt werden dann kann kA sogar offentlich sein Ziel ist es dass je-

                47

                der verschlusseln kann aber nur einer kann (in realistischer Zeit) entschlusseln Solche Verfah-ren mit offentlichen Schlussel werden auch asymmetrisch genannt Mit groszligen Aufwand kannnaturlich der Schlussel immer noch bestimmt werden Man wahlt einen Text mprime Verschlusseltihn (Enck(mprime) = cprime) und probiert dann solange alle k durch bis man Deck(cprime) = mprime erhalt

                Das kB kann aber immer bestimmt werden

                for k_B =00000 to FFFF

                M_0 C_0 sind gegeben

                Dec_k_B(C_0) = M_0

                Wichtig ist nur das dies nicht in rsquovernunftigerrsquo Zeit gemacht werden kann

                To do text sortieren

                Klartext minusrarr E(K) ChiffretextKlartext D(Kprime)larrminus ChiffretextE(K p) = c und zu jedem KexistKprime mit D(Kprime c) = p und K wird offentlich gemachtDie Berechnung von Kprime aus K ist schwer Bruteforce ist nicht ausgeschlossen die Bestimmungvon K aus Kprime ist leicht

                leichtEnckA DeckB (kA kB)minusErzeugung

                schweraus kA allein kB erzeugen

                411 Beispiel

                Bob mochte von Alice verschlusselte Nachrichten lesen Bob uberlegt sich ein asymmetrischesVerfahren wahlt Kprime berechnet K und veroffentlicht KAlice nimmt K berechnet E(K p) = c und sendet c an BobBob berechnet aus c mit Kprime das ursprungliche p

                42 Geschichte

                Whitfield Diffie New Directions in Cryptographie Idee wurde auch schon mal von Ralf Merkelveroffentlich Britische Geheimdienst hatt vorher die Idee auch schon mal

                48

                Aus der Wikipedia (unter GNU Free Documentation License)

                Asymmetrische Verfahren sind ein relativ neues Gebiet der Kryptografie Eine wichtige Vorar-beit fur die asymmetrischen Verfahren sind die Arbeiten von Whitfield Diffie Martin Hellmanund Ralph Merkle zum geheimen Schlusselaustausch Anfang der 1970er Jahre Im Sommer1975 veroffentlichten Diffie und Hellman eine Idee zur asymmetrischen Verschlusselung oh-ne jedoch ein genaues Verfahren zu kennen

                Anfang der 1970er Jahre wurden von Ellis Cocks und Williamson ein dem spateren Ver-fahren von Diffie-Hellman ahnliches asymmetrisches Verfahren entwickelt welches aber inseiner wirtschaftlichen Bedeutung nicht erkannt und aus Geheimhaltungsgrunden nicht (wis-senschaftlich) publiziert und auch nicht zum Patent angemeldet wurde Alle drei waren Mitar-beiter des englischen Government Communications Headquarters

                Der Durchbruch gelang Ronald L Rivest Adi Shamir und Leonard M Adleman die 1977das RSA-Verfahren entwickelten Es gilt bis heute als sicheres Verfahren und hat auszligerdem dengroszligen Vorteil in beiden Richtungen eingesetzt werden zu konnen

                43 Einige Theoretische Grundlagen

                431 Kleiner Fermat (oder kleiner Fermatrsquoscher Satz)

                Fur beliebige Primzahlen p gilt

                n(pminus1) = 1 mod p fur alle n isin Z

                To do Wikipedia verlinken

                432 Euklidischer Algorithmus

                To do erganzen Erweiterter Euklidischer Algorithmus fehlerhaft

                Aus der Wikipedia (unter GNU Free Documentation License)

                Beschreibung durch PseudocodeIm Folgenden wird der moderne Euklidische Algorithmus sowohl in einer rekursiven als

                auch einer iterativen Variante beschrieben Dabei sind a und b jeweils die beiden Zahlen derengroszligter gemeinsamer Teiler berechnet werden soll

                Rekursive Variante

                49

                EUCLID(ab)

                1 wenn b = 0

                2 dann return a

                3 sonst return EUCLID(b a mod b)

                Iterative Variante

                EUCLID(ab)

                1 solange b = 0

                2 r = a mod b

                3 a = b

                4 b = r

                5 return a

                FunktionsweiseIn jedem Schritt des Algorithmus wird eine Division mit Rest ausgefuhrt riminus1 = qi+1 middot

                ri + ri+1 0 le ri+1 lt ri Die Division mit Rest hat die Eigenschaft dass ggT(riminus1 ri) =

                ggT(ri ri+1) giltIm letzten Schritt des Algorithmus rnminus1 = qn+1 middot rn + 0 ist rn+1 = 0 und es gilt deshalb

                ggT(rnminus1 rn) = ggT(rn 0) = rn

                Da im ersten Schritt riminus1 = a und ri = b war ist ggT(a b) = rn

                (Quelle httpdewikipediaorgwikiEuklidischer_Algorithmus)

                (Denn es gilt ggT(a b) = ggT(b r))

                Aus der Wikipedia (unter GNU Free Documentation License)

                Man kann diese Rekursion in folgende Abfolge von Schritten fur den erweiterten euklidi-

                schen Algorithmus fassen Erhalte rdquoardquo und rdquobrdquo als EingabeSetze rdquok=0rdquo r0 = a r1 = b s0 = 1 und s1 = 0WiederholeErhohe rdquokrdquo um einsBestimme den ganzzahligen Quotienten qk = rkminus1 div rkSetze rk+1 = rkminus1 minus qk middot rk und sk+1 = skminus1 minus qk middot skbis rk+1 = 0 giltGib den Rest rk = ggT(a b) und die Zahl sk mit ggT(a b) equiv sk middot a (mod b) zuruckJeder Schritt enthalt implizit auch einen Multiplikator tk = (rk minus sk middot a) div b wobei diese

                Division keinen Rest lasst Die Folge (tk)k kann auch explizit bestimmt werden es gelten t0 =

                0 t1 = 1 und tkminus1 equiv qk middottk+tk+1 Nach dem letzten Schritt ergibt sich nun ggT(a b) = sk middota+tk middotbDer Ubersicht halber werden beim handischen Rechnen auch noch die Hilfsfolgen (ak =

                rkminus1)k und (bk = rk)k sowie (uk = skminus1)k sowie (vk = tkminus1)k mitgefuhrt

                50

                Zur Berechnung des Inversen modulo einer Restklasse benotigt man die tk aber nicht und kannsie ignorieren

                Aus der Wikipedia (unter GNU Free Documentation License)

                Rekursive VarianteFur den erweiterten euklidischen Algorithmus existiert auch eine rekursive Variante die

                durch den folgenden Pseudocode gegeben istab zwei Zahlen fur die der erweiterte euklidische Algorithmus durchgefuhrt wirdrdquoextended euclidrdquo(ab)1 rdquorsquowennrdquorsquo b = 02 rdquorsquodann returnrdquorsquo (a10)3 (drsquosrsquotrsquo)larr rdquoextended euclidrdquo(b a mod b)4 (dst)larr (drsquotrsquosrsquo - floor(ab)trsquo)5 rdquorsquoreturnrdquorsquo (dst)

                (Quelle httpdewikipediaorgwikiErweiterter_euklidischer_Algorithmus)

                Wenn n mod m teilerfremd sind dann existiert so ein Exponent f so dass

                n f equiv 1 mod m

                ist

                Wenn m = m1 middotm2 ein Produkt von zwei verschiedenen Primzahlen ist dann ist fur alle n die zum teilerfremd sind

                n(m1minus1)middot(m2minus1) equiv 1 mod m

                Denn es ist nm1minus1 equiv 1 mod m1 und nm2minus1 equiv 1 mod m2 Dann ist n(m1minus1)middot(m2minus1) minus 1 durch m1und m2 teilbar Denn nach dem Chinesischen Restsatz gilt n(m1minus1)middot(m2minus1) equiv 1 mod m1 middot m2 undwenn eine Zahl durch m1 middot m2 teilbar ist so auch durch m1 und m2

                433 Beispiel

                In Magma

                p=17 q=23

                m=(p-1)(q-1)

                e=19

                F=IntegerRing(m)

                51

                d=(Fe)ˆ(-1)

                d=IntegerRing()d

                19315 div 16

                19315 -374 16

                n=pq

                K=IntegerRing(n)

                N=100

                C=(KN)ˆ(e) Verschlusseln

                C

                Cˆd

                10019 equiv 349 mod 349

                349352 equiv 100 mod 391

                10019middot315 = 100 mod 17

                10019middot315 = 100 mod 23

                10019middot315 equiv 100374middot16+1 mod 17 equiv 100 middot (10016)374︸ ︷︷ ︸=1

                mod 17

                To do Analog von Mathias kopieren

                To do Wiederholung einsortieren

                Wiederholung

                Nachricht n

                ne equiv c( mod m)

                Chiffre c

                cd equiv (ne)d = ndmiddote = n1+k(pminus1)(qminus1) = n middot (n(pminus1)(qminus1))k︸ ︷︷ ︸=1

                equiv n middot 1k = n mod m

                nminusrarr

                dm cminusrarr

                em n

                52

                aus (em) kann man (dm) nicht leicht bestimmen weil man die Zerlegung m = p middotq nicht kenntWer p q kennt kann aus den einen den anderen Schlussel berechnen Wer de kennt kann pqbestimmen

                Verschlusselung kann jeder ausfuhren offentlicher Schlussel (em) Entschlusselung bleibt demvorbehalten der das geheime d (oder auch pq) kennt

                schnelles Potenzieren Ist die Berechung von ne ck ausreichend schnell

                m 1000 Bit pq-150 Dezimalstellen

                ne hat sehr sehr viele Dezimalstellen

                Deshalb berechnet man erst modulo und potenziert dann mit e

                (n mod m)e (c mod m)d

                Beispiele n19 = n middot n middot middot n︸ ︷︷ ︸19 Multiplika-tionen

                oder man rechnet

                n n2 n4 n8 n16 4 Quadrierungen

                n16 middot n2 middot n = n19

                so auch bei n1025 = n n2 n1024 n middot n1024 wo nur 11 Multiplikationen gebraucht werden

                Pseudocode nex=1

                repeat

                if (e = 1 mod 2)x = x middot n(prime mod mprime)

                n = n2(prime mod mprime)

                e = ediv2

                until e==1

                k = (nprime)0 middot xprime

                x = k = ne

                53

                44 RSA Rivest Shamir Adleman

                Bei dem Versuch die Idee der Asymmetrischen Kryptografie zu wiederlegen wurde RSA entwi-ckelt

                RSA beruht auf der Schwierigkeit n = p middotq in seine Primfaktoren zu zerlegen Verschlusseln undEntschlusseln ist Potenzieren modulo n

                D E = id

                p = (pe)d mod n

                p = pemiddotd mod n

                e middot d = 1 mod (p minus 1) middot (q minus 1)

                E(e n) ist offentlich und D(d n) geheim Die Bestimmung von e d n aus p q ist leicht GenauerDie Bestimmung von e aus (d n) ist leicht die Bestimmung von d aus (e n) ist schwer weilFaktorisierung n = p middotq (vermutlich) schwierig ist ist Bestimmung von d aus (e n) auch schwerWer p und q aus n berechnen kann kann auch d bestimmen (Euklid)

                Wer e und d kennt kann p und q bestimmen (dazu waren Erlauterungen in der Vorlesung)

                441 Funktionsweise des RSA-Verfahrens

                (nach wwwcryptooldedownloadsCrypToolScript 1 3 04 depdf)Man kann die Einzelschritte zur Durchfuhrung des RSA-Verfahren folgendermaszligen beschrei-ben Schritt 1 bis 3 sind die Schlusselerzeugung Schritt 4 ist die Verschlusselung 5 die Ent-schlusselung

                1 Wahle zufallig 2 verschiedene Primzahlen p und q und berechne n = p middot q Der Wert nwird als RSA-Modul bezeichnet

                2 Wahle zufallig e isin 2 n minus 1 so dass gilt e ist teilerfremd zu J(n) = (p minus 1) middot (q minus 1)Zum Beispiel kann man e so wahlen dass gilt max(p q) lt e lt J(n) minus 1 Danach kannman p und q ldquowegwerfenrdquo

                3 Wahle d isin 1 n minus 1 mit e middot d = 1 mod J(n) dh d ist die multiplikative Inverse zu emodulo J(n) Danach kann man J(n) ldquowegwerfenrdquo

                bull (n e) ist der offentliche Schlussel Pbull (n d) ist der geheime Schlussel S (es ist nur d geheim zu halten)

                4 Verschlusselung des Klartextes (bzw seiner Blocke) M isin 1 n minus 1

                C = E((n e) M) = Me mod n

                54

                5 Entschlusselung des Chiffretextes (bzw seiner Blocke) C isin 1 n minus 1

                M = D((n d) C) = Cd mod n

                442 Beweis der Funktionsweise

                (nach wwwcryptooldedownloadsCrypToolScript 1 3 04 depdf)Fur Schlusselpaare (n e) und (n d) die die in den Schritten 1 bis 3 des RSA-Verfahrens festge-legten Eigenschaften besitzen muss fur alle M lt n gelten M equiv (Me)d mod n wobei (Me)d =

                Memiddotd Das heiszligt der oben angegebene Dechiffrieralgorithmus arbeitet korrekt Wir zeigen das in3 Schritten

                1 Im ersten Schritt zeigen wir Memiddotd equiv M mod p Dies ergibt sich aus den Voraussetzungenund dem Satz von Fermat Da n = p middot q und J(p middot q) = (p minus 1) middot (q minus 1) und da e undd so gewahlt sind dass e middot d equiv 1 mod J(n) gibt es eine ganze Zahl k so dass gilte middot d = 1 + k middot (p minus 1) middot (q minus 1)

                Memiddotd equiv M1+kmiddotJ(n) equiv M middot MkmiddotJ(n) equiv M middot Mkmiddot(pminus1)middot(qminus1) mod p

                equiv M middot (Mpminus1)kmiddot(qminus1) mod p

                (aufgrund des kleinen Fermat Mpminus1 equiv 1 mod p)

                equiv M middot (1)kmiddot(qminus1) mod p

                equiv M mod p

                Die Voraussetzung fur die Anwendung des kleinen Fermat war dass M und p teilerfremdsind Da das im allgemeinen nicht gilt mussen wir noch betrachten was ist wenn M undp nicht teilerfremd sind da p eine Primzahl ist muss dann notwendigerweise p ein Teilervon M sein Das heiszligt aber

                M equiv 0 mod p

                Wenn p die Zahl M teilt so teilt p erst recht Memiddotd Also ist auch

                Memiddotd equiv 0 mod p

                Da p sowohl M als auch Memiddotd teilt teilt es auch ihre Differenz (Memiddotd minus M) equiv 0 mod pUnd damit gilt auch in diesem Spezialfall unsere zu beweisende Behauptung

                2 Vollig analog beweist man Memiddotd equiv M mod q

                3 Nun fuhren wir die Behauptungen der ersten beiden Schritte zusammen fur n = p middot qum zu zeigen Memiddotd equiv M mod n fur alle M lt n Nach den ersten beiden Schritten gilt(Memiddotd minus M) equiv 0 mod p und (Memiddotd minus M) equiv 0 mod q also teilen p und q jeweils dieselbeZahl z = (Memiddotd minus M) Da p und q verschiedenen Primzahlen sind muss dann auch ihrProdukt diese Zahl z teilen Also gilt

                (Memiddotd minus M) equiv 0 mod p middot q

                55

                oderMemiddotd equiv M mod p middot q

                oderMemiddotd equiv M mod n

                45 Schwachen von RSA

                bull Wenn N Nachrichten aus einer kleinen Menge gewahlt werden ist RSA unsicher

                for Nprime do (Nprime)e = C1 if C1 = C then N = Nprime

                bull Wenn N und e zu klein sind ist RSA unsicher dass heiszligt wenn Ne als Zahl kleiner als nist so das nich modulo gekurzt wird so kann man einfach eradicc

                bull Angriff mit frei gewahlten Chiffretext angenommen man hat Zugriff auf die Verschlusse-lungsmaschine so dass man mit selber vorgebenen Cprime Nprime berechnen kann (Cprime minusrarr Nprime)

                Re = S mod n S d = R mod n Cprime = S middotC

                (Cprime)d = S d middotCd = R middot N︸︷︷︸Nrsquo

                mod n

                Nprime middot Rminus1 = N mod n

                N1 minusrarr C1

                N2 minusrarr C2

                rArr N1 middot N2 minusrarr C1 middotC2

                bull Jeder Benutzer braucht ein eigenes n dass heiszligt man muss fur jeden Benutzer die entspre-chenden Primzahlen suchen allerdings ist dies aufwendig

                bull RSA ist extrem langsam im Vergleich zu symmetrischen Verfahren openssl speed rsabzw speed aes-256

                46 Fuktionen in OpenSSL

                461 genrsa

                genrsa erzeugt Schlusselpaare fur RSASchlussellange num_bits frei wahlbar wobei es einen Bug bei kleinen Werten gibt (weniger als60 Bit) so kurze Schlussel aber auch nicht verwendet werden solltenOptionen

                usage genrsa [args] [numbits]

                -out file output the key to file

                -passout arg output file pass phrase source

                56

                -f4 use F4 (0x10001) for the E value

                -3 use 3 for the E value

                -des encrypt the generated key with DES in cbc mode

                -des3 encrypt the generated key with DES in ede cbc mode (168 bit key)

                -idea encrypt the generated key with IDEA in cbc mode

                -aes128 -aes192 -aes256 encrypt PEM output with cbc aes

                -engine e use engine e possibly a hardware device

                -rand filefile load the file (or the files in the

                directory) into the random number generator

                462 rsa

                rsa gibt den public-key zu gegebenen private-key aus Auszligerdem auch weitere Informationenwie verwendeter Modulus Mit rsa kann auch ein gegebener key neu verschlusselt abgespeichertwerden

                rsa [options] ltinfile gtoutfile

                where options are

                -in arg input file

                -out arg output file

                -pubin expect a public key in input file

                -pubout output a public key

                -passin arg input file pass phrase source

                -passout arg output file pass phrase source

                -text print the key in text

                -noout donrsquot print key out

                -modulus print the RSA key modulus

                -check verify key consistency

                -des encrypt PEM output with cbc des

                -des3 encrypt PEM output with ede cbc des using 168 bit key

                -idea encrypt PEM output with cbc idea

                -aes128 -aes192 -aes256 encrypt PEM output with cbc aes

                -inform arg input format - one of DER NET PEM

                -outform arg output format - one of DER NET PEM

                57

                -sgckey Use IIS SGC key format

                -engine e use engine e possibly a hardware device

                463 rsautl

                Mit rsautl konnen Dateien ver- oder entschlusselt und signiert oder verifiziert werden

                Usage rsautl [options]

                where options are

                -in file input file

                -out file output file

                -inkey file input key

                -pubin input is an RSA public

                -certin input is a certificate carrying an RSA public key

                -sign sign with private key

                -verify verify with public key

                -encrypt encrypt with public key

                -decrypt decrypt with private key

                -hexdump hex dump output

                -pkcs use PKCS1 v15 padding (default)

                -oaep use PKCS1 OAEP

                -ssl use SSL v2 padding

                -raw use no padding

                -keyform arg private key format - default PEM

                -passin arg pass phrase source

                -engine e use engine e possibly a hardware device

                464 PKCS

                spater noch ausfuhrlicher hier nur kurz die Verwendung bei RSA

                Padding beginnt mit 0002 endet mit 00 und dann kommt der Chiffretext

                58

                465 OAEP - Optimal Asymmetric Encryption Padding

                Normalerweise wird mit RSA nur ein Schlussel fur eine symmetrische Verschlusselung ver-schlusselt da RSA verglichen mit symmetrischen Algorithmen sehr langsam ist

                Bemerkung Vergleichen mit speed rsa und speed aes (siehe History 21012009)

                Ist die so festgelegte Lange des Klartextes erheblich kleiner als die des RSA-Schlussels so ist einAuffullen der restlichen Bits notig Die implizite Methode (beim Betrachten des Klartextes alsZahl) einfach 0en einzusetzen empfiehlt sich nicht da die Zusatzinformation die ein Angreiferso uber den Klartext bekommt das Decodieren des geheimen Schlussels vereinfacht

                Beim Padding soll diese Gefahr verringert werden Per default wird bei openssl PKCS benutztAllerdings ist die Verwendung von OAEP besser Beim OAEP ist im Gegensatz zum PKCSdie Lange des Klartextes nicht mehr sichtbar (man kann nur noch dass beginnende 00 Byteerkennen) Choosen Plaintext Attacke ist nicht mehr moglich

                Dabei wird essenziell die zu verschlusselnde Nachricht mit einem Hashwert eines Zufalls-Stringsper xor verknupft und so randomisiert Eine Modifikation des benutzten Hashwerts wird dannmit der Nachricht konkateniert und steht beim Entschlusseln wieder zur Verfugung

                1 Label hash Label =

                2 PS erzeugen (alles Nullen 128-1-h-h-1-mdashmmdash)

                3 DB =

                4 Seed wahlen Lange h (irgendwas seed = Hash(irgendwas))

                5 DBmaske = MGF(seed mdashDBmdash)

                6 mDB = DB oplus GBmask

                7 seedmaske = MGF(mDB mdashseedmdash)

                8 mseed = seed oplus seedmaske

                9 EM =

                10 RSA-Verschlusselung C equiv EMe mod n

                MGF Hash Eingabe x Lange l

                tc = Hash(x c)

                mdashcmdash = 4 Byte

                MGF(x l) = t0 t1 t2 t3 |MGF( l)| = l

                59

                Ruckgangig

                1 Entschlusseln

                2 Zerlegen 00 mseed mDB

                3 seedmaske = MGF(mDB mdashmseedmdash)

                4 seed = mseed oplus seedmaske

                5 DBmaske = MGF(seed mdashmDBmdash)

                6 DB = mDB oplus DBmaske

                7 Padding abtrennen

                PKCS1 v15

                Die fur den Modul verwendeten Primzahlen mussen die ersten beiden Bits gesetzt haben dasgarantiert nach Multiplikation der Primzahlen dass das Produkt im oberen Byte das obere Bitgesetzt hat und somit die feste voranstehende 0 uberdeckt

                466 Wie erkennt man an Ciphertexten den Verschlusselungsalgorithmus- DER ASN1

                Standards damit man (zB RSA) verschlusselte Texte erkennt

                DER- distingushed Encoding Rules

                ASN1- Abstract Syntax Notation

                openssl asn1parse -genstr INTEGER4711 -out intasn1 openssl asn1parse -in intasn1 -inform DER

                Integer werden in ASN1 als rsquo 02︸︷︷︸Tag

                lange Datenrsquo kodiert Integers brauchen 1 Byte mehr rsquoDatenrsquo

                damit Das Vorzeichen 00 enthalten ist Integer ist immer mit Vorzeichen

                Tag fur andere Typen

                Bool 01

                Int 02

                Octet String 04

                Bitstring 03 rsquolangersquo rsquoungenutzte bits am Endersquo rsquoByte des Bitstringrsquo [evt ungenutzte Bits]

                Text PRINTABLESTRING

                60

                utf8 UTF8String

                Text mit Zeichen (emailadresse) IA5STRING

                DatumZeit UTC

                mit Jahrhundert GENTIME

                nuscht (der leere Typ) NULL

                Mengentypen seq set

                Mann kann auch eigene Typen generierend EXPLICITAF oder so

                467 Umgehen mit den Schlusselkomponenten

                Ein vollstandiger RSA-Schlussel besteht aus einem Modul (modulus) n = p middot q offentlichemExponent e privatem Exponent d Primzahl 1 p Primzahl 2 q (haufig p gt q) Exponent 1 dpExponent 2 dq Koeffizient qi und kann so ausgegeben und gespeichert werden

                Bei der Version fur rsquoarmersquo werden nur n offentlicher Exponent e und geheimer Exponent dangegeben

                c equiv me mod n (3)

                m equiv cd mod n (4)

                Vorteil der vollstandigen Version Geschwindigkeitserhohung bei der Entschlusselung in Schritt(4)

                dp equiv d mod (p minus 1) d = k middot (p minus 1) + dp

                dq equiv d mod (q minus 1)qi middot q equiv 1 mod q

                m equiv cd mod (p middot q) berechnenm1 equiv cdp mod p 500 Operationen mit 1

                2 langem Modulm2 equiv cdq mod q 500 Operationen mit 1

                2 langem ModulInsgesamt 1000 Operationen mit 1

                4 der Lange

                apminus1 equiv 1 mod p wenn (a p) = 1teilerfremd1

                1kleiner Fermatscher Satz

                61

                m1 equiv cd mod pm2 equiv cd mod q

                h equiv (m1minusm2)middotqi mod p (darauf achten dass das minusm2 mod p ausgerechnet wird nicht mod q)

                m = m2 + h middot q

                1 m lt n2 m equiv cd mod p da m2 + h middot q equiv m2 + (m1 minus m2) middot qi middot q mod p equiv m2 + m1 minus m2 equiv m1 alsoequiv cd mod pm equiv cd mod q da m2 + h middot q equiv m2 mod q also equiv cd mod q

                x equiv y mod p und x equiv y mod q dann folgt x equiv y mod p middot qEuklidischer Algorithmus (p q)-teilerfremd dann p middot u + q middot v = 1 Chinesischer Restsatz

                47 Miller-Rabin Test

                Heute openssl dhparam und was Verbluffendes so dass man es nur mit der Phantasie einesInformatikers oder Mathematikers verstehen kann (Literatur Menezes Oorschot Handbook ofApplied Cryptography)

                Primzahlen Feststellen ob eine Zahl eine Primzahl ist durch Testen von Divisionen wird beigroszligen Zahlen sehr lang

                p middot q = n ausrechnen geht schnell Umkehrung n =middot ist moglicherweise schwer

                Uber 2214+ 1 weiss man dass es keine Primzahl ist2 kennt aber keinen der Faktoren Kriterium

                rdquokeine Primzahlldquo lasst sich auf folgende Art manchmal feststellenWenn (a n) = 1 so ist anminus1 equiv 1 mod nFermatTest Wenn fur (a n) = 1 anminus1 1 mod n so kann n keine Primzahl sein

                Primzahlen Test

                Wenn fur eine Zahl a mit (a n) = 1 der Fermat-Test nicht bestanden wird nennt man a einenZeugen fur Nichtprimalitat

                2Vierzehnte Fermatsche Zahl

                62

                Zeugen gibt es sehr viele nicht realistisch alle zu rdquobefragenldquo Ausserdem gibt es Zahlen diekeine Zeugen haben aber keine Primzahl sind

                Aus diophantischen Gleichungen folgt Es gibt ein Polynom mit ganzzahligen Koeffizienten f (n)mit der Eigenschaft Wenn f (n) gt 0hArr n ist PrimzahlAber das Polynom hat 26 Koeffizienten Fur Mathematiker ist das Problem erledigt da das Poly-nom existiert fur Informatiker ist es das nicht wirklich da die Berechnung ubermaszligig komplexist

                Die Nicht-Primzahlen ohne Zeugen heissen Carmichael-Zahlen Haben die Eigenschaft forallp(p|nrArrp minus 1|n minus 1)rArr CarmichaelZum Beispiel 561 hat Teiler 3 11 17 Der Test liefert 2|560 10|560 16|560

                Erweitern (n Primzahl) Wenn (a n) = 1 und anminus1 equiv 1 mod n und 2|n minus 1 (anminus1 equiv 1 mod na

                nminus12 equiv )

                Wenn x2 equiv 1 mod n was ist x mod n n|x2 minus 1 = (x minus 1)(x + 1) entweder n|x + 1 odern|x minus 1

                FermatTest+ Wenn fur (a n) = 1 anminus1 1 mod n oder falls anminus1 equiv 1 mod n und anminus1

                2 +1und a

                nminus12 minus1 so kann n keine Primzahl sein

                und 4|n minus 1 anminus1

                4 anminus1

                2 anminus1

                1 mod n Diese Folge ist entweder 1 1 1 oder minus1 1 1 oderlowastminus1 1

                Wenn (a n) = 1 und 2k|nminus 1 (k maximal) dann ist die Folge anminus12k a

                nminus12kminus1 a

                nminus12 anminus1 entweder

                1 1 oder lowastminus1 1 1 (lowast steht fur beliebige Folge)

                Probieren n = 81 n minus 1 = 80 durch 2er-Potenzen teilen kommt irgendwas mit 5 hinten rausAls Zeugen nehmen wir mal 2 Ausrechnen 25 210 220 240 280 und schauen ob diese Folgemodulo 81 einen der beiden Typen hat 32 1 mod 81

                FermatTestlowast (= Miller-Rabin-Test) Wenn fur (a n) = 1 2k|n minus 1 teilt und die Folge anminus12k a

                nminus12kminus1

                anminus1

                2 anminus1 modulo n nicht 1 1 und nicht lowastminus1 1 1 dann ist a ein Zeuge fur Nicht-primalitat

                Fur Miller-Rabin-Test gibt es keine zeugenlosen zusammengesetzten Zahlen es gibt unter denzu n teilerfremenden Zahlen mindestens 25 Zeugen3 (MenezesOorschot Kapitel 4 Fact 425Fact 448 Tabelle 43)

                Die fur Informatiker interessante Frage ist die Frage Wenn man eine Wahrscheinlichkeit kleiner2minus80 fur eine fehlerhaft durch Miller-Rabin nicht erkannte zusammengesetzte Zahl haben will

                3Anmerkung spater 34 sind Zeugen 1

                4 sind Lugner

                63

                muss man fur n (512 Bit) 6 Tests machen Je groszliger die Zahlen werden desto weniger Testsmuss man machen Fur 1024 3 Tests fur 2048 2 Tests Vorausgesetzt ist immer noch ein Testauf kleine Faktoren Dabei pruft man ob (n pi) = 1 fur pi lt B wobei pi kleine Primzahlen sindDas B wahlt man so dass dieser Test nicht langer dauert als ein Miller-Rabin-Test

                Wie wahlt man Primzahlkandidaten Generiere Zahl mit Zufallszahlengenerator schaue ob diedurch 2 oder so teilbar ist wahle dann die nachste Zahl

                openssl dhparam -dsaparams -text -noout 2048 schnellopenssl dhparam -text -noout 2048 langsam

                Safe Prime pminus12 hat einen groszligen Primzahlfaktor q dann getestet ob 2(k middot (q + 1)) Primzahl ist

                pminus12 ist Primzahl

                Wofur braucht man die Primzahlen Naturlich fur RSA und jetzt neu

                48 Diffie-Hellman-Schlusselaustausch

                Alice und Bob haben gemeinsame offentliche Informationen tauschen offentliche Informationenaus und verfugen danach beide uber einen gemeinsamen privaten Schlussel

                g = 2 (offentlich bekannt (Generator)) Primzahl p (offentlich bekannt)

                Erganzungen g g2 g3 gpminus1 mod p (g Generator dann alle verschieden)

                Bob Alice

                Eve

                x y

                g^y mod p

                g^x mod p

                64

                Bob wahlt zufallig 1 lt x lt pminus 1 und ruft Alice gx mod p zu Alice wahlt zufalig 1 lt y lt pminus 1und ruft gy mod p zu

                Bob berechnet (gy)x mod p und Alice berechnet (gx)y mod p Beide erhalten gxmiddoty mod p An-greifer Eve kennt nur gx mod p gy mod p fehlt gxmiddoty mod p

                Wenn Eve das diskrete Logarithmusproblem losen konnte also zu gx mod p und g mod pdas x ausrechnen konnte dann ware gxmiddoty mod p leicht zu berechnen Die besten Algorithmenfur das diskrete Logarithmusproblem mod p sind subexponentiell im groszligten Primfaktor vonp minus 1

                Falls (p minus 1) viele kleine Primfaktoren pi hat ist das diskrete logarithmus Problem leicht denndann lost man das Problem nicht a mod (pminus1) sonder jeweils a mod pi und setzt0 dass ganzedann mit dem Chinesischen Restsatz zusammen

                Sucht p so dass pminus12 auch eine Primzahl ist dazu wird zuerst eine Primzahl pprime gesucht und dann

                geguckt ob 2pprime + 1 auch Prim ist

                Openssl

                Variante DH (DSAparam) (-dsaparam)

                p-Primzahl 1536

                g-rsquoGeneratorrsquo nicht von (p minus 1) sondern von der Restklasse h

                160 Bit g g2 g3 gh alle verschieden mit h=160 Bit

                Dann sollen xy so gewahlt werden dass 1 lt x y lt h = 160 Bit

                Ein weiteres asymmetrisches Cryptosystem kann man darauf aufbauen Alle kennen g und pjeder generiert sich x (privater Schlussel) und gx mod p wird veroffentlichtAlice will Bob etwas verschlusselt schickenSie generiert ein k berechnet aus k und Bobs veroffentlichtem gx a = (gx)k mod p und ausdem allgemein bekanntem g gk mod pM sei die Nachricht ( mod p) die Alice verschicken will Sie berechnet a middot M mod p undsendet an Bob das Paar (gk mod p a middot M mod p)Bob berechnet (gk)x mod p = a und dividiert amiddotM

                a mod p und erhalt somit M

                Der Schlussel a darf nicht zweimal verwendet werden

                Man nennt (gk a) zeitweiliger bzw ephemeraler Diffie Hellmann Schlussel

                Nachteil die Nachrichtenlange wird verdoppelt

                65

                Das Verfahren ist unsicher wenn Alice die Zahl x schlecht wahlt x = 1 2 1 2 1 2 1 = x1 x2

                49 ElGamal-Cryptosystem

                (siehe auch TR 3111 vom BSI auf Seite 21)

                Auf Diffie-Hellmann aufbauendAlice offentlicher Schlussel ga (p g) privat aBob offentlicher Schlussel gb (p g) privat b

                Alice will an Bob schicken

                1 Zufallszahl k generieren

                2 Berechne mit Bobs Parametern gk mod p

                3 Berechne mit Bobs Parametern (gb)k mod p (DH-Schlussel)

                4 Berechne m middot (gb)k mod p

                5 Sende(gkm middot (gb)k

                )mod p

                Bob empfangt (x y)

                1 Berechne xb mod p (DH-Schlussel)

                2 y middot (xb)minus1 mod p = m mod p

                Alice baut also einen temporaren DH-Schlusselteil4 zu Bobs Parametern und sendet diesen unddie damit verschlusselte Nachricht m

                Nachteil Nachricht wird durch den Ephemeralschlussel doppelt so lang

                410 Wiederholung DH

                Generator gPrimzahl pga mod p Restklassen mod p = Korper(middot inverses)Dass p Primzahl ist ist eigentlich ZufallErzeugendes Element GOperation auf Elementen +

                a middotG = G + G + G + + G a-malEs muss schwer sein aus G und B = a middotG gegeben das a zu bestimmenG muss eine Ordnung n haben n middotG = 0 (Neutrales Element der Operation +)

                4Auch Ephemeralschlussel genannt

                66

                4101 Beispiel

                Alice Bob G+ nAlice denkt a denkt a middotGBob denkt b denkt b middotGBeide tauschen a middotG und b middotG aus und berechnen a middot b middotGa middotG ist leicht zu berechnen double and adda = a0 + a1 middot 2 + + ak middot 2k

                a middotG = a0 middotG + a1 middot 2 middotG + + ak middot 2k middotG(k minus 1)-mal rdquomiddot2ldquo und (k minus 1)-mal rdquo+ldquo

                411 was anderes

                Nimmt man nun G groszlige Gruppe mit n Elemente und der Addition +

                g-Generator

                g 2g 3g nG︸︷︷︸Nullelement

                Alice wahlt 1 lt x lt n bestimmt x middot g

                Bob wahlt 1 lt y lt n bestimmt y middot g

                Dann wieder K = (ab) middot g = K

                To do erganzen

                Problem des Diskreten Logarithmus in G gegeben ist G g Generator ist 0 c = a middot g in Ggesucht alogGc-diskreter Logarithmus in G

                Diese Variante funktioniert also mit allen rsquoKomplizierten Gruppenrsquo das fuhrt zu dem nachstenThema

                412 Elliptische Kurven

                Wo gibt es so etwas schon Elliptische Kurven Sind nicht weit verbreitet weil sie dem Mana-gement schwer zu erklaren sind

                67

                Aus der Wikipedia (unter GNU Free Documentation License)

                In der Zahlentheorie ist eine elliptische Kurve eine singularitatenfreie algebraische Kurve derOrdnung 3 in der projektiven Ebene

                Von besonderem Interesse zB fur die Faktorisierung naturlicher Zahlen sind aufgrundihrer einfachen Struktur elliptische Kurven der Form cy2 = x3 + ax + b mit c 0 und 4a3 +

                27b2 0 Einige moderne Verschlusselungsverfahren basieren auf solchen Kurven Der Nameleitet sich historisch davon ab dass diese Kurven durch elliptische Integrale parametrisiertwerden konnen

                Elliptische Kurven uber endlichen Korpern werden in der Kryptografie eingesetzt Dazuwird ausgenutzt dass eine Gerade (lineare Funktion) die zwei Schnittpunkte P und Q mit ei-ner Elliptischen Kurve hat diese auch in einem 3 Punkt schneidet Der Punkt der aus demletzteren durch Verkehren des Vorzeichens der Y-Koordinate (wenn die Kurve die oben ange-gebene Form hat) entsteht wird P + Q genannt Man kann zeigen dass diese Punktaddition(P und Q werden addiert das Ergebnis ist der Punkt P + Q) sowohl kommutativ als auch as-soziativ ist Erganzt man die Elliptische Kurve um einen weiteren Punkt 0 (genannt Punkt imUnendlichen) so bildet sie zusammen mit der (etwas erweiterten) Punktaddition eine abelschealgebraische Gruppe

                Sei nun P ein Punkt der Elliptischen Kurve Der Punkt P + P wird mit 2P bezeichnetentsprechend definiert man kP = P + + P als k-fache Addition des Punktes P Ist P nichtder 0-Punkt und ist die Ordnung der Elliptischen Kurve prim so kann auf diese Weise jederPunkt der Kurve erreicht werden (dh zu jedem Punkt Q auf der Kurve existiert eine naturlicheZahl k mit Q = kP) Die Aufgabe aus gegebenen Punkten PQ diesen Wert k zu ermittelnwird als Diskretes Logarithmus-Problem der Elliptischen Kurven (kurz ECDLP) bezeichnetEs wird angenommen dass das ECDLP (bei geeigneter Kurvenwahl) schwer ist dh nichteffizient gelost werden kann Damit bieten sich Elliptische Kurven an um auf ihnen asymme-trische Kryptosysteme zu realisieren (etwa einen Diffie-Hellman-Schlusselaustausch oder einElgamal-Kryptosystem)

                y2 = x3 + a middot x + b Skizze der Kurven S2Zu S2 Punkte auf der Kurve kann man addieren

                Die Rechenregeln gehen auch in einem Korper mod pBeispiel y2 equiv x3 + a middot x + b mod p Skizze S3

                Es gibt immer Punkte mit denen man rechnen kann Punkte sind geeignet die Addition funk-tioniert auch und hat die Anzahl N der Punkte einen groszligen Primzahlteiler dann haben wir auchKryptosystem mit G+ n Wenn groszliger Primzahlteiler exisitert1 N hat groszligen Primzahlteiler n2 Wahlen zufallig einen Punkt G als GeneratorDaraus erhalt man DH und El Gamal

                Zuerst eingefuhrt durch Victor Miller und Neal Koblitz um 1980 herum Damals war N schwer

                68

                bestimmbar Inzwischen gibt es bekannte Algorithmen (Schoof-Algorithmus)Diskretes Logarithmusproblem ist fur elliptische Kurven wirklich exponentiell (bis jetzt) EinBit mehr verdoppelt den Rechenaufwand (192-Bit-256 Bit bewegt sich in GroszligenordnungenRSA 2000-4000-Bit)

                Erganzung

                1Bei der Erforschung von Eliptischen Kurver stellte sich zuerst die Frag wie groszlig ist eigentlichdie Ordnung n der Gruppe Man wusste n sim p und man wusste sogar n minus p + 1 minus

                radicp lt n lt

                minusp + 1 +radic

                p

                2 Schnelle Algorithmen zur Berchnung der Ordnung

                3 ECDLP ist schwer wenn n einen groszligen Primfaktor hat

                To do sortieren

                Erganzung

                man hat p a bG n h

                K = y2 = x3 + ax + b

                p ist fur die Punktaddition (Formeln siehe enwikipediaorg wobei λ = (yQ minus yP) middotminus1

                (xa minus xp)︸ ︷︷ ︸mit GGT

                mod p)

                Anmerkung zum Wikipedia Artikel binary Case bedeutet man die Eliptischen Kurven auch inKorper mit 2k betrachten allerdings vieler solcher Falle patentiert

                G = Generatorpunkt mit G 2G 3G nG alle verschieden n kleinste Zahl so dass alle ver-schieden

                nG = 0

                bei der DSA-Parameter Form nimmt man weniger Grsquos

                Der nachste Parameter ist der cofactor h welches den Unterschied zwischen n und der Anzahlder Produkte auf der Kurve angibt

                Trick beim testen ob alle iG verschieden sind man guckt ob n eine Primzahl ist und ob nG = 0ist wenn ja ist dies das erste mal sonst ware n ja keine Primzahl Also sind alle vorherigen iG

                69

                verschieden

                Kurven finden besser Bestimmung der Punktanzahl ist schwer

                Fruher gab es kleine cofactoren h lt 16

                openssl ecparama -list_curves sind schon vorher erzeugt kann openssl nicht selber

                openssl ecparam -name secp160k1 -text -noout da die Kurve festgelegt ist gibt es nurein object zuruck

                openss ecparam -name secp160k1 -text -param_enc explicit -noout

                openss ecparam -name secp160k1 -text -param_enc explicit -noout -conv_form compressednichtkomprimiert gibt nur die x-Koordinate aus

                Bei der komprimierten Form kann mit der Kurve die andere eindeutig bestimmen (oder so)

                Darstellung als komprimierte Punkt ist auch wieder patentiert

                413 Elliptische Kurven Nachtrag

                GF(p) (Galois-Field) sind Kurven mod p mit p Primzahl erfullen Gleichungen der Form y2 =

                x3 + a middot x + b

                GF(2k) Korper mit 256 Elementen = 28

                In OpenSSL nur elliptische Kurven mod p patentfrei

                Kofaktor finden Wir haben Punktgruppe G es gibt einen Generatorpunkt gn middotG = 0 n ist die Ordnung

                cofactor︸ ︷︷ ︸klein

                lowast order︸︷︷︸primzahl

                = Anzahl der Punkte

                (cofactor soll klein sein order Primzahl) Anstelle Punkt auf der elliptischen Kurve als (x y) (x ymod p) abzuspeichern TrickWenn es ein Punkt ist gibt es zu x zwei y die quadratische Gleichung y2 = x3 +a middot x+b erfulleny1 =

                radicx3 + ax + b mod p

                y2 = minusradic

                x3 + ax + b mod peine der beiden Zahlen hat als letztes Bit immer 1 die andere eine 0 man nimmt daher nur noch(x LSB(y)) (x und kleinstes Bit von y)

                70

                414 Rucksack-Verschlusseln

                Kryptosystem das sich bei OpenSSL zu recht nicht findet Hat den Anschein als wurde es aufeinem NP-vollstandigen Problem beruhen Problem ist NP-vollstandig weil es ein allgemeinesRucksackproblem istSieht aber nur so aus ist aber nur polynomial weil es ein Transformiertes eines leichten Ruck-sackproblems ist

                Gegeben W Fassungsvermogen des Rucksacks w1w2 wk kleine GewichteGesucht W =

                sumeiwi mit ei isin 0 1

                Rucksack-Verschlusseln von MerkleHellmann Rucksack mit schnell wachsenden Gewichtenist leicht zu berechnendh wi gt

                sumjlti e jw j nachstes Gewicht ist immer schwerer

                4141 Beispiel

                Rucksack W = 51 = 31 + 15 + 3 + 2 wprimei s 2 3 7 15 31Grundidee Aus dem schnellen Rucksack einen langsamen machenM gt

                sumwi k mit (M k) = 1 k middot 2 k middot 3 k middot 31 mod M

                M = 61 ist Modul k = 17 ist privater Schlussel m = (1 1 0 1 1) ist unverschlusselte Nachricht31 51 58 11 39 ist offentlicher Schlussel 34 + 51 + 11 + 39 = 135 = 13rarr c ist verschlusselteNachrichtEmpfanger rechnet aus dem erhaltenen Gewicht (135) das richtige Gewicht wieder raus 135middotkminus1

                mod 61 = 51 und kann das Problem mit den schnellen Gewichten losen

                Zum BrechenMan transformiert 34 51 58 11 39 in eine Folge die schnell wachsend ist zB 1 3 5 11 29dh das transformierte System kann auf mehrere Probleme zuruckgefuhrt werden man brauchtnur eine passende Rucktransformation finden Adi Shamir hat dafur einen polynomiellen Algo-rithmus angegeben

                415 Merkle Puzzle

                Man generiert sich 1000000 Nachrichten rdquoDas ist Nachricht ni fur den Schlussel k jldquo ni zufalli-ge 20-Bit Zahl k j 128-Bit SchlusselVerschlusselungsverfahren DES diese 1000000 werden mit 20-Bit Schlusseln verschlusseltAlice schickt die 1000000 Nachrichten an Bob als offentlichen SchlusselBob will Alice eine Nachricht schicken Er sucht eine der Nachrichten aus dem offentlichen

                71

                Schlussel aus und macht eine Brute-Force Attacke auf diese Nachricht Er findet ni und kiBob verschlusselt mit dem ki seine Nachricht und sendet ni im Klartext mit

                Alice und Bob haben linearen Aufwand Eve quadratischen

                Von everything2comAlice and Bob agree on a symmetric algorithmAlice generates a large number (over a million at least) of messages of the form ldquoThis is myindex X and my puzzle is Yrdquo Each of the messages is encrypted with a 20-bit keyAssume there are 220 (about a million) messages it takes 220 operations to get the key and acomputer can perform 220 operations per second Bob takes 1 second to recover the key to amessage Eve takes 12 daysNow make that 230 (about a billion) messages Bob still only takes a second to get the key andit will take Eve 34 years

                Public Key Idee hier schon vorhanden

                416 Rabin-Verfahren und Wurzelziehen

                Aus der Wikipedia (unter GNU Free Documentation License)

                Das Rabin-Kryptosystem ist innerhalb der Kryptologie ein asymmetrisches Kryptosystem dasauf einem Faktorisierungsproblem beruht und mit RSA verwandt ist Es lasst sich prinzipiellauch zur Signatur verwenden In der Praxis findet das Verfahren allerdings wegen bestimmterAngriffsmoglichkeiten kaum Anwendung

                4161 Schlusselgenerierung

                Aus der Wikipedia (unter GNU Free Documentation License)

                Seien p und q zwei moglichst groszlige Primzahlen fur die eine bestimmte Kongruenzbedingunggelten muss Der offentliche Schlussel n wird durch Multiplikation der beiden Zahlen erzeugtalso n = p middot q Der geheime Schlussel ist das Paar (p q) Anders ausgedruckt Wer nur n kenntkann ver- aber nicht entschlusseln wer dagegen p und q kennt kann damit auch entschlusselnZum Erzeugen des offentlichen Schlussels mussen die Zahlen p und q bekannt sein Der offent-liche Schlussel lasst sich nur genau aus den beiden Primzahlen erzeugenWaren p und q keine Primzahlen so lieszlige sich das Verfahren ubrigens nicht anwendenSeien beispielhaft p = 7 q = 11 (in der praktischen Anwendung handelt es sich um sehr vielgroszligere Zahlen um die Entschlusselung durch Dritte so schwierig wie moglich zu machen)Daraus ergibt sich der offentliche Schlussel n = p middot q = 77

                72

                4162 Kongruenzbedingung

                Aus der Wikipedia (unter GNU Free Documentation License)

                Fur p und q muss die Kongruenzbedingung(

                pminus1p

                )= (p minus 1) und

                ( qminus1q

                )= (q minus 1)

                (wobei fur(

                nminus1n

                )= (n minus 1)

                nminus12 equiv (n minus 1) mod n = (n minus 1) gilt)

                oder einfacher ausgedrucktp equiv q equiv 3 mod 4gelten

                Allgemein gilt namlich fur die Primzahl r mit r equiv 3 mod 4 und die Zahl a mit a equivb2 mod ra

                (r+1)4 equiv

                radica mod r

                Diese Eigenschaft dient dazu spater die Entschlusselung zu erleichternWegen 7 equiv 11 equiv 3 mod 4 ist die Kongruenzbedingung fur das Beispiel erfullt

                n = p middot q Produkt von Primzahlen

                m soll verschlusselt werden c equiv m2 mod n (einfach Quadrieren weil Wurzelziehen schwer istwenn der Modul ein Produkt von 2 Primzahlen (p middot q) ist weil wer Wurzel ziehen kann kannauch Faktorisieren (n)

                Begrundung Es gibt 2 Losungen c = x2 equiv y2 mod n Wie findet man nun die Faktoren von nn teilt x2 minus y2 = (x minus y)(x + y) und x gt y und (x minus y) lt n und n hat nur 2 Primfaktoren daherx minus y = p und x + y = q Wurzelziehen ist leicht mod p mod q Gesucht Wurzel c mod pxp = c

                p+14 mod p und xq = c

                q+14 mod q

                x2p equiv c

                p+12 equiv c

                pminus12 middot c mod p

                Weil cpminus1 equiv 1 mod p ist (nach kleiner Fermat) die Wurzel daraus cpminus1

                2 equiv plusmn1 wegen c equiv m2

                mod n gilt (m2)pminus1

                2 equiv mpminus1 equiv 1(p) Stuck fehlt Ende des Wurzelziehens

                4163 Verschlusselung

                Aus der Wikipedia (unter GNU Free Documentation License)

                Sei nun P = 0 nminus1 der Klartextraum (er besteht also aus Zahlen) und m isin P der KlartextNun lasst sich der Geheimtext c durch c = m2 mod n bestimmen Dabei ist c der QuadratischeRest von zu der Quadratzahl m2 zum Modulo der Schlussel-Zahl n Im praktischen Einsatzbietet sich die Verwendung von Blockchiffre an

                In unserem Beispiel sei P = 0 76 der Klartextraum m = 20 der Klartext Der Ge-heimtext ist hierbei nun c = m2 mod n = 15

                73

                Dabei muss man beachten dass fur genau vier verschiedene m das c den Wert 15 aufweistnamlich fur m isin 13 20 57 64 Ahnliches gilt fur die meisten c

                4164 Entschlusselung

                Aus der Wikipedia (unter GNU Free Documentation License)

                Seien allgemein c und r bekannt gesucht wird m isin 0 n minus 1 mit m2 equiv c mod r Furzusammengesetzte r (beispielsweise unsere n) existiert kein effizientes Verfahren zur Bestim-mung von m Ansonsten wenn also r isin P (in unserem Fall p und q) dann lasst sich jedoch derchinesische Restsatz ausnutzen

                In unserem Fall sind nun die Quadratwurzelnmp =

                radicc mod p

                undmq =

                radicc mod q

                gesuchtWegen obiger Kongruenzbedingung gilt

                mp = c(p+1)

                4 mod pundmq = c

                (q+1)4 mod q

                In unserem Beispiel ergeben sich mp = 1 und mq = 9Mit dem erweiterten euklidischen Algorithmus werden nun yp und yq mit yp middot p+yq middotq = 1

                bestimmt In unserem Beispiel erhalten wir yp = minus3 und yq = 2Nun werden unter Ausnutzung des chinesischen Restsatzes die vier Quadratwurzeln +r

                minusr +s und minuss von c + nZ isin ZnZ berechnet (ZnZ steht hierbei wie ublich fur die Menge derRestklassen modulo n die vier Quadratwurzeln liegen in der Menge 0 n minus 1)

                r = (yp middot p middot mq + yq middot q middot mp) mod nminusr = n minus rs = (yp middot p middot mq minus yq middot q middot mp) mod nminuss = n minus s

                Eine dieser Quadratwurzeln mod n ist wieder der anfangliche Klartext m Im Beispielgilt m isin 64 20 13 57

                417 Angriffe auf asymmetrische Verschlusselungsverfahren

                Fall RSA

                74

                4171 1 Angriff Common modulus attack

                Idee Gleicher Modul fur verschiedene Leute hatte den Vorteil dass man sich nur die kleinenoffentlichen Exponenten e1 und e2 merken muss nicht mehr die groszligen Module hat aber Nach-teil (e1 e2) = 1 teilerfremd umiddote1+vmiddote2 = 1 (mit erweitertem Euklid) Sendet man eine Nachrichtm an zwei Alices berechnet also c1 = me1 mod n und c2 = me2 mod n dann kann man mitden Chiffren c1 und c2 auch ausrechnen cu

                1 middot cv2 = me1u middot me2u = me1u+e2v = m mod n Nachricht

                erhalten

                4172 2 Angriff kleiner geheimer Exponent d

                Wenn |d| lt |m|3 dann ist Faktorisieren moglich Sicherheitsrisiko geheimer Exponent muss im-

                mer moglichst groszlig sein aus groszligem offentlichen Exponenten |e| kann man erfahren dass dergeheime Exponent klein ist

                4173 3 Angriff Faktorisieren

                Wenn p ungefahr so groszlig wie q also p minus q = ∆ klein ist dann ist ( p+q2 + ∆

                2 ) (ungefahr Wurzel n+ was kleines = p) middot( p+q

                2 minus∆2 ) = p middot q Man weiszlig dass die eine Zahl uber Wurzel n liegt und die

                andere Zahl unter Wurzel n (Wurzel n + klein = p Wurzel n - klein = q)

                4174 Echt schlechte RSA-Schlussel

                n = 3middotq (1024 Bit) und offentlichen Exponenten bei TCTrustCenter abgegeben Damit kann manzeigen dass PGP als Signaturverfahren schlecht ist Schlussel schlecht gewahlt dadurch kannjeder die Kommunikation mitlesen da n sehr leicht zu Faktorisieren die Leute sie konntender Person mit dem schlechten Schlussel vertrauenswurdige Nachrichten schicken und laufenin die Falle dass ihre Nachrichten nun offentlich sind Anderer Fall Bewuszligt solche Schlusselvergeben um Nachrichten in einem kompletten Netzwerk lesen zu konnen

                n = Primzahl e middot d equiv 1 mod (n minus 1)

                Mit n als Primzahl geht normale Entschlusselung nicht

                n p q e dp dq qi dc equiv me mod nm1 equiv cdp mod pm2 equiv cdq mod qdp equiv d mod (p minus 1)

                75

                dq equiv d mod (q minus 1)

                m = m2 + (m1 minus m2) middot qi︸ ︷︷ ︸mod p

                middotq

                m equiv cd mod q und m equiv cd mod prArr cd

                Bundesamt fur Informationssicherheit sagt zur Verwendung von RSA p q mussen unabhangigvoneinander zufallig erzeugt werden und 0 5 lt | log2 p minus log2 q| lt 30

                4175 Schnelles Faktorisieren bei Fehler im System

                DFA - Differential Fault Attack System das entschlusselt aber sich an einer Stelle verrechnetmprime1 ist Rechenfehler statt wirkliches m bekommt man ein mprime = m2 + (mprime1 minus m2)qi lowast qbildet man nun m minus mprime 0 aber durch q teilbar dh bringt man das System dazu einen Fehlerzu machen und hat man die Originalnachricht GGT (m minus mprime n) = q schon hat man den Mo-dul faktorisiert hat funktioniert viele Chipkarten verrechneten sich unter Streszlig Es reicht dasmprime zu kennen m kann unbekannt bleiben denn man rechnet (mprimee minus c n) = q es reicht eineentschlusselte Nachricht zu haben

                Anderer Angriff auf ChipkartenDPA - Differential Power Analysis Stromverlauf ansehen Differenzen bilden und sequentiellanalysieren

                Angriff auf El Gamal Systemegeheimer Schlussel a offentlich g p ga Verschlusselte Nachricht zufalliges k (gk mmiddotgak)= c 1Angriff k gleich fur verschiedene Nachrichten oder k1 k2 in Abhangigkeit oder k k+1 k+2 fur verschiedene Nachrichten oder a middot k + b

                4176 Angriff mit gewahltem Chiffretext

                Normalerweise bei RSA m minusrarr c = me mod n

                cprime vorgegeben fuhrt zu Klartext mprime = (cprime)d mod nAnforderung Beliebiger Chiffretext auszliger cprime = c wahlbar zu dem man dann den Klartext erhalt

                Problem bei RSA

                1 r (zufallig gewahlt)rarr re mod n = s

                2 cprime = s middot c mod nVerschlusselungsmaschine liefert dann (cprime)d = sd middot cd = (re)d middot m = r middot m mod n = mprime

                76

                3 Letzter Schritt m = mprime = rminus1 mod n

                Das geht nur theoretisch in der Praxis geht das nicht weil Angreifer kann das r nicht steuernr middot m wird aber von der Verschlusselungsmaschine verworfen weil es bei zufalligem r keinkorrektes Padding hat

                Schwache des RSA Multiplikationseigenschaftm1 rarr c1 und m2 rarr c2 (m1 m2 gultige Klartexte)m1 middot m2 rarr c1 middot c2m1 middot m2 nicht als gultiger Klartext zugelassen

                5 Signaturmechanismen

                Wie erstellt man signierte Daten und versucht ein Aquivalent zu dem zu schaffen was man imtaglichen Leben durch Unterschriften schafftEigenschaften einer Signatur sollen nachgebildet werden Man weiszlig von wem ein Dokumentkommt sie ist an eine Person gebunden und kann von niemanden sonst nachgemacht werden undvom Inhaber nicht abgestritten werden Nachtragliche Anderungen an unterschriebenen Doku-menten sollen nicht mehr moglich sein (gibt es so im echten Leben nicht)

                51 Integritatsschutz und Hashfunktionen

                To do neu Hashfunktionen Definition einsortieren

                Hashfunktion Beliebige Daten werden auf Binarfolgen konstanter Lange abgebildet

                Def Eine Hashfunktion H ist eine Abbildung 0 1lowast rarr 0 1k auf Hashwerte der Lange k

                SHA-256 (SHA- Secure Hash Algorithmen) - Hashwerte der Lange 256 Bit

                1 Es gibt Kollisionen

                d1 d2 H(d1) = H(d2)

                2k Hashwerte aber potentiell abzahlbar viele Daten

                Wunsch

                Man soll diese Kollisionen nicht finden konnen und am besten es gibt sie nicht Hashfunktionendienen zum unterscheiden von Daten

                77

                H(d1) H(d2) dann ist d1 d2

                Dementsprechend groszlig muss das k sein so dass genugend viele Werte unterscheiden kann

                Anforderungen an Hashfunktionen

                Wunsch Kollisionsresitent (schwer Kollisionen zu konstruieren) man kann nicht zwei Doku-mente mit dem gleichen Hashwert konstruieren

                Wunsch Zweites Urbild resistent (schwer zweites Urbild zu konstruieren) man kann zu einemDokument nicht ein zweites mit dem gleichen Hashwert bestimmen

                Geburtstagsparadoxon Kollisionen entstehen zum Beispiel in Horerkreisen 23 Horer(innen)dann haben mit mehr als 50 Wahrscheinlichkeit zwei am gleichen Tag Geburtstag

                H Horer rarr Datum h 7rarr Geburtstag(h)

                h1 h2 H(h1) = H(h2)

                Bestimme die Wahrscheinlichkeit dass keine zwei am gleichen Tag Geburtstag haben

                1 minus g =365middot middot(365minusn+1)

                (365n) wobei n die Anzahl der Horer ist (Fur n = 23 ungefahr 50)

                radic365 20

                g radic

                Hashwerte

                Bei 2128 Hashwerte muss man mit Kollisionen rechnen ( Bsp 30 bei 19 Personen 19 radic

                365)

                Merke Das Geburtsatgs Paradox beschert uns Kolisionen bei 2k2 Hashwerten

                To do ende Neu

                Hashfunktionen Schon bekannt aus dem ersten Semester (Hashtabellen)

                Allgemeine Eigenschaften

                1 Komprimieren beliebig lange Werte auf n-bit Werte

                2 Einfach (und schnell) berechenbar

                Werte Fingerabdruck Prufwert Hashwert

                78

                Kollisionen h(x) (Hashfunktion) mit x1 x2 aber h(x1) = h(x2) x1 und x2 ist KollisionWahrscheinlichkeit fur Kollision fur zufallig gewahlte Werte sollte 1

                2n sein (Anforderung anHashfunktion)

                Wir verlangen dass die Variabilitat in der Eingabe sich auch in den Prufwerten widerspiegeltsprich Wenn die Eingabewerte gleichverteilt sind sind es auch die Ausgabewerte

                To do 20090422

                To do einsortieren

                Kollisionen rsquovermeidenrsquo durch Groszlige 160 Bit Prufwerte (280 fur Kollision (2100 mdash AES 128 mdashbzw 2112 2128 als Kollisionsschranken)

                Zusatzlich Voraussetzungen fur die Pruffunktion

                1 Kollisionsresistenz Es muss schwer sein zwei Nachrichten m1m2 zu finden so dassH(m1) = H(m2)

                (Es ist schwer Zwillinge zu konstruieren)

                2 Zwillingsresistenz Es muss schwer sein (also kryptografisch Aufwendig) zu einer Nach-richt m1 eine Nachricht m2 zu konstruieren so dass H(m1)FH(m2) ist

                (Wenn man eine Bruder hat dann ist es schwer eine zwillings Schwester dazu zu konstru-ieren)

                (aufwendiger als erstens)

                3 Urbildresistenz Es muss schwer sein zu einem beliebigen Prufwert h eine Nachricht zukonstruieren so dass H(m) = h ist

                4 Die Prufwerte mussen rsquozufalligrsquo aussehen Die Ausgabe von H genugt Anforderungen aneinen Zufallszahlengenerator (gewisse statistische Unauffalligkeit) also pseudozufallig

                Eigentlich musste man noch mehr Fordern namlich dass man keine zwei Nachrichten findet diesehr ahnliche Hashwerte haben und dass man zu einer gegeben Nachricht keine Nachricht miteinem ahnlichen Hashwert findet

                Beispiel H gute Pruffunktion

                H(m) =

                |m| n fix so Hprime(m) = 0||H(m)(H(m) rangehangen)|m| = n so ist Hprime(m) = 1||m( rangehangen)

                h ist die Lange der Prufwerte von H

                79

                Hprime ist kollisionsresistent wenn es H ist aber nicht urbildresistent

                To do sortieren

                openssl 097d (2004) Prufwertstandardverfahren ist MD5

                Hashfunktion enthalt eine rsquoKompressionsfunktionrsquo m1

                To do Bild-siehe Blatt - 20090422

                K(sm) = sprime

                K(sm) = K(sm2)

                K(s1m1) = K(s2m2)

                s1 und s2 als Ergebnisse einer Prufwertberechnung darstellen

                K(s1m11) = s1 K(s01m21) = s2

                K(s1m12) = s K(s2m22) = s

                der rechte Teil war 2004 schon bekannt es musste nur noch die linke seite gelost werden

                511 Schlussellose Hashfunktion (Prufsummen ohne Schlussel)

                h x minusrarr h(x)Ausschlieszliglich Prufwert Gute Auswahl garantiert dass man mit h(x) feststellen kann ob xverandert wurde

                xprime ist verandertes DokumentDatenBerechnung des Prufwerts liefert h(xprime) = hprime h(x) bei guter Hashfunktion Veranderung kannalso festgestellt werden

                80

                Zusatzlich verlangte Eigenschaften

                1 Kollisionsresistenz Es ist schwer Kollisionen zu erzeugen Dh es ist schwer x1 x2 mith(x1) = h(x2) zu findenHeute ublich n = 80 oder n = 100 280 oder 2100 in sim 280 Schritten Definitiv 256 istnicht schwer 264 ist nicht mehr so schwer

                2 Zwillingsresistenz Zweites-Urbild-Resistenz second preimage resistance Es ist schwereinen Zwilling zu erzeugen ist x1 mit h(x1) vorgegeben so ist es schwer einen Zwillingx2 zu erzeugen mit h(x1) = h(x2)(Anmerkung Finger weg von Binarcode fur x1 x2)

                3 Einwegeigenschaft Urbild-Resistenz Es ist schwer zu vorgegebenem h(x) ein Urbild xzu berechnen

                h1(x) ist eine gute Hashfunktion mit den schicken Eigenschaften 1 2 3 (n + 1 Bitlange)

                h2(x) =

                1 x wenn x die Lange n hat0 h1(x) sonst

                h2(x) ist kollisionsresistent (Zwillingsresistenz) (wenn h1 so ist) h2 ist aber nicht urbild-resistent 1 x hat als Urbild x

                2 ist die wichtigere Eigenschaft man kann notfalls noch ohne 1 auskommen Zum Beispielletztes Jahr MD5 - Hashfunktion x1 x2 waren konstruiert h(x1) = h(x2)x1 oplus x2 = 0 010 010 010 01 (1 jeweils im msb) Immer noch ein gewisser Schutz dazum Beispiel keine Kollision auf -Kleinbuchstaben oder 64 moglich

                Schlussellose Hashfunktionen sollten alle 3 Eigenschaften haben

                Fast-Kollision x1 x2 h(x1) oplus h(x2) hat wenig 1-Bits Manchmal zu vermeiden

                partielle Urbilder Gegeben h(x) dann ist es schwer x bis auf wenige Bits zu bestimmen

                SHA-1 theoretische Schwelle 280 praktisch 269 (16022005) 263 (19082005)

                Geburtstagsparadoxon 23 Personen die Wahrscheinlichkeit dafur dass 2 am gleichen Tagim Jahr Geburtstag haben ist groszliger als 1

                2

                h(x) =dd-mmMit k Personen x1 xk lassen sich k2 Geburtstagspaare bilden Mit n Tagen h1 hn im Jahrlassen sich n2 Geburtstagspaare bilden davon sind n gute ( (h hprime) mit h = hprime)

                81

                mit k2 Paaren in n2 Paaren suchen und einen von n treffenHashfunktion hat 160 Bit Ausgabe wir brauchen nach Geburtstagsparadoxon 280 Personen ummit hoher Wahrscheinlichkeit den gleichen Geburtstag h mit 160 Bit zu erhalten

                Allgemeines Konstruktionsprinzip x wird auf eine bestimmte Blocklange erweitert (pad-ding)

                1 Nullpadding (auffullen mit Nullbits falls erforderlich)

                2 1-Nullpadding (eine 1 und dann mit Nullbits bis zur Blocklange)

                3 1-Null-Langenpadding (eine 1 und Nullbits (falls erforderlich) und die Lange (msb first64 Bit oder 128 Bit)) Am besten geeignet da bei 1 oder 2 automatisch Kollisionen ent-stehen x (mind 1 bit kurzer als die Blocklange) und x 0

                xrarr b1 bk Blocke der Lange 512 Bit

                Haufig Verlauf in 3 Phasen in openssl init update final

                1 Initialisierung der Hashfunktion Innerer Zustand aus 32-Bit-Wortern H1H2H3H4H5initialisiert (mit Primzahlen π was-auch-immer)

                2 Update A BCD E aus H1 H5 Runden mit Transformationen mit Eingabe bi 48|60|120 H1 = H1 oplus A H2 = H2 oplus B

                3 Finalisierung Ggbf Padding 1 oder 2 mal das Update

                4 Ausgabe H1H2 H5

                Einfaches Beispiel

                82

                So lasst sich aus einem Kryptoalgorithmus ein Hashalgorithmus konstruieren In der Praxis wer-den andere Konstruktionen (Quirlfunktionen) verwendet MD5 SHA-1 SHA-2 (224 256 384512) Whirlpool ISO-

                In OpenSSL MD2 MDC2 MD4 MD5 RIPEMD-128 RIPEMD-160 SHA-0 SHA-1 Allegebrochen ausser RIPEMD-160 und SHA-1 (evt MD2) dh es sind m1 und m2 bekannt mitMD5(m1) =MD5(m2) und m1 m2

                512 Demonstration Falschung

                Ist die Hashfunktion rsquoschwachrsquo kann man Kollisionen sogar konstruieren

                Beispiel fur MD5 MD4 ist seit 10 Jahren schwach SHA-1 wird schwach

                Zwei Postscript-Dateien mit unterschiedlichem Inhalt aber gleichem MD5-Hash Prinzip Datei1

                Header

                if x1 == x2 then strangestring = T1 else strangestring = T2 end

                Rest

                echo strangestring

                Quelltext (B)(B)eq︸ ︷︷ ︸Bedingung

                [tot] [Def] ifelse

                83

                Datei 2

                Header

                if x2 == x2 then strangestring = T1 else strangestring = T2 end

                Rest

                echo strangestring

                (A)(B)eq︸ ︷︷ ︸Bedingung

                [Def] [tot]

                x1 und x2 unterscheiden sich nur sehr wenig und Header if x1 und

                Header if x2 sind je ein Nachrichtenblock mit dem gleichen Hashwert

                Sieht aus wie zweites Urbild-Angriff sind aber in der Tat zwei bose Zwillinge

                Quelle wwwcitsrubdeMD5Collisions

                Fazit Dokumente sind nicht mehr unterscheidbar

                Kollision besteht aus zwei Dokumenten d1 d2 mit dem Hashwert

                Bei MD5 kann man zwei rsquoDokumentersquo (Prafixe bis AB) konstruieren die den gleichen Has-hwert haben

                Man kann aber zu einem Dokument d0 (dem Original) noch nicht ein zweites dprime0 konstruierenso dass d0 dprime0 eine Kollision bilden

                Beispiel Ein SSL-Server-Zertifikat war (MD5) ununterscheidbar von einen SSL-ZertifizierungsstellenZertifikat womit man so viele (evt rsquobosersquo) SSL-Server-Zertifikate erstellen wie man wollte

                MD5 ist nicht kollisionsresistent

                MD5 ist noch 2 Urbild resistent

                52 Unterschied MD5 und SHA

                MD5 128bit Lange (Kollision 264)

                SHA-224 224bit Lange (Kollision 2112)

                SHA-256 256bit Lange (Kollision 2128)

                84

                mehr rotation lokale Unterschiede habe groszligere globale Unterschiede zur Folge bei SHA

                53 Secure Hash Standard SHA-2

                FIPS 180-2 US-Standard Nachfolger von FIPS 180 SHA-0 und SHA-1 sind die SHA-2-Algorithmen(noch nicht in OpenSSL) SHA-224 SHA-256︸ ︷︷ ︸

                32 Bit

                SHA-384 SHA-512︸ ︷︷ ︸64 Bit

                SHA-224 bzw SHA-384

                ist rsquoungefahrlsquo die linke Seite von SHA-256 bzw SHA-512

                Basisfunktionench (xampy)|(sim xampz) Auswahlfunktionpar x and y and z Paritatsfunktionmaj (xampy)|(xampz)|(yampz) Mehrheit

                Ausserdem Addition modulo Wortlange rot left und shift leftMessage M1M2 MN padding

                1 paddinglength auf 5121024 Bit

                51232 = 16 = 1024

                64

                2 Messageblock (16 Stuck) wird erweitertW0W1W2 W15︸ ︷︷ ︸

                Messageblock

                W79

                Wt = rot(Wtminus3) + rot(Wtminus8) + rot(Wtminus14) + rot(Wtminus16) fur t = 16 79rot(x) = rotl7(x) + rotl18(x) + shl3(x)

                3 8 temporare Variable a b c d e f g h mit Breite gleich Wortlange (32 oder 64 Bit) be-schreiben einen inneren Zustand der Funktion

                SHA-Maschine bekommt initialen Zustand H0 H7 Die ersten 32 Bit der gebrochenenAnteile der Quadratwurzeln der i Primzahl Fur SHA-256 und SHA-512 i = 1 8 furSHA-384 und SHA-224 i = 9 16

                85

                Am Anfang jeder Runde a = H0 b = H1 c = H2

                Jedes Wi erzeugt einen Schritt (kleine Zustandsanderung)

                T1 = h + rot(e) + ch(e f g) + Kt + Wt

                T2 = rot(a) + maj(a b c)

                h = g g = f f = e e = d + T1 d = c c = b b = a a = T1 + T2K0 K80 Schrittkonstanten Bruchteile der dritten Wurzeln der ersten 80 Primzahlen80 Schritte in einer Runde

                4 XOR-Operationen H0H1 H7 minusrarr H0 oplus aH1 oplus b H7 oplus hHi beschreiben den inneren Zustand nach Runde Hi am Anfang initialisiert

                5 Ausgabe ist H0 H7 am Ende

                To do ware auch interessant fur die Prufung

                Es wird eine neuer SHA-3 gesucht Voraussetzungen

                1 Nachrichtenexpansion muss komplexer werden

                2 Nachrichtenblocke mussen positionsabhangig werden (Skein tweakable

                3 innerer Zustand muss groszliger werden (2x Hashlange)

                531 Problem bei MD5 und SHA-0

                Beispiel 1 Innerer Zustand zwischen einzelnen Schritten hat Bits die die folgenden Bitsmehr oder weniger beeinflussen Damit sinkt die Komplexitat beim Brechen Besondere Bitsfuhren zur Reduktion der Anzahl der Gleichungen und erlauben eine schnelle Konstruktion vonspeziellen Zwillingen m1m2 mit MD5(m1) =MD5(m2) m1 oplus m2 = viele Nullen

                Parallel hashen rdquoKontostand -20073ldquo und rdquoKontostand +700ldquo Ab -2 bzw +7 entstehen un-terschiedliche innere Zustande Nachkommastellen bei dem zweiten String anpassen um dieUnterschiede auszugleichen

                86

                Aktuelle Angriffe erzeugen keinen zweiten Zwilling sondern rsquonurrsquo falsche Zwillinge Zu einemguten gibt es keinen schlechten Zwilling

                Beispiel 2 Es gibt zwei Zertifikate mit unterschiedlichen Inhalten und gleichem MD5-HashDas sind dann aber 2 schlechte Zertifikate MD5 ist also nicht kollisionsresistent aber momentanzwillingsresistent

                SHA-1 hat momentan eine Komplexitat von 263 anstelle von 280 fur Kollisionen

                mH(m) (H(m) aus vertrauenswurdiger Quelle) rArr m kann nicht unbemerkt verandert werdenManipulation Detection Codes () Das ist keine Prufung des Ursprungs Um zu prufen ob maus einer bestimmten Quelle stammt benutzt man MACs

                532 MACs (Message Authentication Codes) (Prufsummen mit Schlusseln)

                Sei k ein geheimer Schlussel den nur Alice und Bob kennen m ist die Nachricht BerechneHk(m) = h keyed Hash Die Hash-Prufwerte sind also Schlusselabhangig

                (m h) mit h aus vertrauenswurdiger Quelle

                bull Veranderungen sind erkennbar

                bull Nur mit Kenntnis von k kann man h berechnen also nur mit dem Schlussel kann man denPrufwert falschen

                Empfanger der k kennt kann n auf Integritat prufen Um sich vor Angreifern zu schutzen mussfur eine Prufung der Prufwert geschutzt werden

                Hk(mprime) = h

                (m1 h1)(m2 h2)

                rarr (m h) muss verhindert sein

                87

                Standardisiertes Verfahren fur Keyed hash auf der Basis von MDCs RFC 2104 in OpenSSL zufinden HMAC)

                H(k oplus auszligeres Padding H(k oplus inneres Padding m))︸ ︷︷ ︸512- oder 1024-Bit-Blocke

                k linksbundig aufgefullt mit Nullen inneres Padding = 0x36 0x36 auszligeres Padding = 0x5c0x5c Langenpadding am Ende des inneren H

                Berechnen Sie mit OpenSSL und dgst -c oder -hex den Hashwert der leeren Datei

                henrykgleam henryk $ openssl dgst -c -hex -md5 devnull

                MD5(devnull)= d41d8cd98f00b204e9800998ecf8427e

                henrykgleam henryk $ openssl dgst -c -hex -sha1 devnull

                SHA1(devnull)=

                da39a3ee5e6b4b0d3255bfef95601890afd80709

                openssl dgst -sha256 -hmac 1234567890 devnull

                HMAC-SHA256(devnull)= ba92e0bfa35d8a018831f3675f0b4314c8468d4d96e6981b85ba3390c23308fd

                HMAC

                To do vervollstandigen

                Mac mit Hashfunktion K- Schlussel H-Hashfunktion

                H(K oplus oPadH(

                0x565656︷ ︸︸ ︷K oplus iPad︸ ︷︷ ︸Bitlange H

                n))

                K n1 rarr Mac(n1K) = m1

                K nprime = n1||langenpadding ||n2

                (K nprime) rarr HInitialisiert mit m1(n2) = m2

                ISO-10118-32004

                88

                54 Whirlpool

                Basis fur eine Hashfunktion ausgehend von einer einzigen Verschlusselungsfunktion

                Aus der Wikipedia (unter GNU Free Documentation License)

                WHIRLPOOL ist eine kryptografische Hash-Funktion die von Vincent Rijmen und Paulo SL M Barreto entworfen wurde Sie wurde nach der Whirlpool-Galaxie im Sternbild der Jagd-hunde benannt

                Whirlpool funktioniert mit Daten von weniger als 2256 Bit Lange und gibt einen Hash-Wert von 512 Bit aus

                Die Autoren haben erklart dass Whirlpool nicht patentiert ist und es nie sein wird Whirl-pool darf kostenlos zu jedem Zweck verwendet werden Die Referenz-Implementation ist ge-meinfrei

                The WHIRLPOOL algorithm has undergone two revisions since its original 2000 specifi-cation In the first revision in 2001 the s-box was changed from a randomly generated one withgood cryptographic properties to one which has better cryptographic properties and is easier toimplement in hardware In the second revision (2003) the diffusion matrix was changed

                People incorporating WHIRLPOOL will most likely use the most recent revision ofWHIRLPOOL while there are no known security weaknesses in earlier versions of WHIRL-POOL the most recent revision has better hardware implementation efficiency characteristicsand is also likely to be more secure

                E

                +

                H

                H

                m

                AES-Variante

                i-1

                i-1

                i

                55 Zusammenfassung

                To do oben einsortieren

                89

                Manipulation Detection Codes MDCsHashfunktionen MD5SHA-1SHA-2Allgemeines Konstruktionsprinzip aus Langenpadding und Iterationen

                bull MACsKeyed Hash HMAC mit Hashfunktion aufgebaut aus prefix und suffix

                bull CBC-MAC Nachrichtenblocke m0m1 mk

                + +

                MACc c c

                K

                m

                m m

                0

                1

                1

                2

                k

                k+1

                Risiko Weil keine Langeninformationen dabei sind ist es anfallig gegen Einsetzen undAustauschen Wird gerne Verwendet bei Anwendungen die feste Langen haben zBChipkartenCBC-MAC-verbessert

                K

                DES

                1

                K2

                K3

                larrminus CBC-DES3-MAC

                Benutzt zB beim digitalen Tachograph

                Es gibt zwei Grundlegende technische Mechanismen Ohne Schlussel und mit Schlussel Nur mitSchlussel lasst sich spater der richtige MAC-Wert ausrechnen und bestimmen dass die Nachrichtnicht verandert wurde und vom richtigen Absender kommt

                90

                56 Digitale Signaturen

                To do einsortieren

                Definition

                s ist die Signatur zu einer Nachricht n mit einem Signaturverfahren S und einem Verifikations-verfahren V

                S N times D︸︷︷︸Signaturschlussel

                rarr s

                V N times E︸︷︷︸Verifikationsschlussel

                timess rarr ja nein

                V(n e S (n d)) = 1

                V(n e S (nprime d)) = 0 =( n eprime S (n d)) = 0

                RSA

                S (n d) =

                V(n s e) = E(e s)eqH(n)

                openssl dgst -sign keyrsa -hex nulltxt

                openssl -sign keyrsa -sha256 -out nullsig nulltxt

                openssl rsautl -in nullsig -encrypt -inkey keyrsa -raw -hexdump

                in Beta openssl sha256 -hex nulltxt

                Anstatt der Symmetrischen Verschlusselung wie bei MAC kann man auch asymetrische Verfah-ren verwenden

                1 h mit Namen (0D) in ASN1 Struktur 0001 FF FF 00 (ASN1-Struktur)

                2 Padding

                3 rsquoEntschlusselnrsquo

                4 rsquoVerschlusselnrsquo

                5 ASN1 Struktur Hash OID Wert rausziehen

                91

                6 vergleichen 0 1

                openssl hatte in den fruheren Versionen einen Fehler in der Signaturprufung

                langer RSA Schlussel

                exponent e klein (3)

                lange Signatur S

                S 3 = h

                wenn h sehr lang ist konnte man folgendes machen

                h= (0001FF00ASN1 rsquomullrsquo)

                man konnte den rsquoMullrsquo so verandern das h = s3 (also so lange verander bis h dritte Wurzel vons ist)

                Es wurde nicht uberpruft ob am Ende der ASN1-Struktur auch das Ende der Daten ist

                siehe Webseite RSA Zertifikate mit Exponenten 3

                To do alt

                Digitale Signaturen schutzen die Integritat und die Authentizitat Wir betrachten hier welche dieauf asymmetrischen Verfahren basieren Symmetrische gibt es werden aber in der Praxis nichtbenutzt Es gibt 2 Typen

                1 RSA

                2 DSA

                561 RSA

                m = p middot q (2048 Bit)Exponent e klein (64 Bit)Exponent d groszlig mit e middot d equiv 1 mod (p minus 1)(q minus 1)

                xrarr c = xe mod m (offentlich)cd equiv x mod m (geheim)xed equiv x

                92

                Man rechnet zuerst xrarr s = xd mod m Das kann nur derjenige der uber den privaten Schlusseld verfugt Aus s rechnet man se mod m = (xd)e mod m equiv xemiddote mod m = x Bei RSA konnenwir die Rolle vom privaten und offentlichen Algorithmus vertauschen so dass folgt Nur wer dkennt kann zu x ein s erstellen so dass se equiv x mod m ist

                Anwendung dafur Digitale Signatur Wir haben Nachricht M und erstellen daraus einen PrufwertH(M) mit einer Hashfunktion und rechnen

                H(M) = x minusrarr s = xd mod m

                Dann ist (M s) das digital signierte Dokument M (und s die Signatur)

                To do einsortieren neu

                Signatur mit Anhang (with appendix) (m sig)-Signierte Nachricht

                Ver(vm sig)

                Signatur mit Nachrichtruckgewinnung (with (partial) message recovery) (m1mprime2) = mprime so dassmprime2 ein Teil der Nachricht m = m1||m2 enthalt

                Ver(vm1mprime2) (partial recovery)

                Ver(vminusmprime) (complete recovery)

                In RSA

                PKCS1 ver 15 Signatur mit Appendix

                PKCS1 ver 21 (noch nicht in OpenSSL)

                To do ende einsortieren

                Prufung (M s) rarr H(M) = x Ist se mod m = x Nur wer das d hat kann das Paar (M s)

                erstellen und ist damit Inhaber des Dokuments

                562 Eigenschaften eines asymmetrischen Verschlusselungsverfahren

                Alice kennt den offentlichen Schlussel von Bob Bob kennt seinen geheimen Schlussel

                93

                Alice123 Bob Alice Bob123offB gehB gehA offA

                EoffB(m) = c rarr DgehB(c) = m rarr

                MS gehA

                (m s)

                rarr

                Voffa(m s) =

                0 ungultig1 gultig

                Mehrere Alices konnen an Bob schreiben Entschlusselung mit dem geheimen Schlussel vonBob Hier wird eine Nachricht so verschlusselt dass man die Nachricht aus c zuruckgewinnenkann

                Alice sendet an alle Bobs Hier wird ein Paar erzeugt dass in einen Verifikationsalgorithmusgestopft werden kann der dann ja oder nein sagt

                Es ist Zufall dass man mit RSA sowohl einen Verschlusselungsalgorithmus als auch einenSignaturalgorithmus erstellen kann Mit anderen geht das nicht

                Hatte man nicht die Urbildresistenz der Hashfunktion konnte man ein s nehmen und dazu aus-rechnen se mod m = x jetzt konnte man zu dem x ein Urbild M ausrechnen und bekame einPaar (M s) dass gultig signiert ist Dazu kommen in Wahrheit noch Padding und Objekt Identi-fier der angibt womit signiert wurde und Parameter

                30 = SEQUENCE06 = OID2B 0E 03 02 1A = SHA12A 86 48 86 F7 0D 01 01 01 = rsaEncryption05 = NULL Bezeichner fur die leere Menge hier bedeutet es keine Parameter04 = OCTET STRING02 = INTEGER03 = BIT STRINGSchema Tag Length Value

                Das ganze lasst sich mit openssl asn1parse erfahren (asn1 = Abstract Syntax Notation 1)Schlussel immer SEQUENCE SEQUENCE OBJECT PARAMETER BIT STRING bzw Se-quence aus OID und Bitstring Das erste Byte in einem Bitstring gehort nicht zum Bitstring dazusondern gibt die Nummer der von hinten ungenutzten Bits an

                OID-Liste httpwwwalvestrandno

                Mhminusrarr

                SHA-1

                H minusrarr

                Padding

                00 01 FF FF 00 b c b H c

                Identifier Oktetstring

                Padding nach PKCS1 v15

                ASN1 Objektidentifier fur SHA-1 (131432) wird als 2B 0E 03 02 1A codiert

                94

                xyabcd (Dot-Notation)darr

                bx middot 40 + yc babcdc1 Byte Byte (Oktett)

                12840113549127 als Ubungsaufgabe

                563 RSASSA-PSS-Padding

                SSA Signature Scheme with Appendix

                PSS Probabilistic Signature Scheme

                RFC 3447 (siehe figure 2)

                8 zero salt

                h

                0000 01 salt

                +MGF h

                maskiertes seed BC00 1024

                Bits

                zu 0

                setzen

                soviele dass die Eingabe

                kleiner als der Modul wird

                Eingabe fuumlr die Signatur

                M l(M) lt= 2^(64)-1 bei SHA-1

                20 Byte 20 Byte

                To do start einfugen

                MGF-Maskengenerierungsfunktion (beruht auf der Hash-funktion)

                95

                MGF rArr DBmask dann DB oplus DBmaskNullungminusminusminusminusminusminusrarr maskedDB

                Nullung-Nullung der oberen Bits so dass maskedDB kleiner als Modul ist

                Signieren (EMSA-PSS)+(RSA-Verschlusselung)

                Verifikation (RSA Op)

                1 RSA-Operation

                2 EM

                Prufung ob BC am Ende

                H abspalten und mit MGF DBmask erzeugen

                XOR mit Rest von EM

                DBprime = 0000︸︷︷︸Nullungsfehler

                0001 Salt

                00 Label mhash SaltHashminusminusminusminusrarr Hprime

                = H

                Jede Eingabe in die RSA-Operation ist pseudo zufallig (Jede Eingabe hat einen neuen Signa-turwert)

                Angenommen man wendet die RSA-Operation direkt auf m an

                mprime-Signatur mprime = md mod n

                m1m2

                m1 rarr mprime1 mod n = mprime1

                m2 rarr mprime2 mod n = mprime2

                Verifikation

                (m1m2) mod n rarr (m1 middot m2)d = md1md

                2 = mprime1 middot mprime2 mod n

                (rsquoMan kann mit zwei Signaturen eine andere erzeugenrsquo)

                96

                To do ansehen

                Unsicher zeitaufwendig kann leicht gebrochen werden

                m rarr mprime = md mod n

                re = rprime mod n

                chosen message m middot rprime rarr (m middot rprime)d mod n = md middot red mod n = mprime middot r mod n

                (mprime middot r) middot rminus1 mod m = mprime

                (sieht nach Zufallszahlen aus aber die kann man auf eine vorher gewahlte Nachricht zuruck-rechnen)

                To do ende einfugen

                Nachricht M mit |M| lt 264 minus 1 wird mit Hashfunktion h gehasht Davor kommen 8 Zerobytedanach ein Saltwert (Saltwert wird benotigt fur die Auswertung der Signatur und wird verstecktin der Signatur) Auf das Gesamte wird die Hashfunktion h erneut angewendet

                Verstecken des Saltwerts --0000 (rarr eventuell leer) 01 salt-- oplus mit einer Maske gebildetaus dem Hashwert und einer Maskengenerierungsfunktion

                An den Anfang der Eingabe fur die RSA-Signatur werden 0-Bits so gesetzt dass die Eingabefur die RSA-Signatur kleiner als der Modul ist Wenn m volle Bytelange hat wird das obersteBit gleich 0 gesetzt (RSA-Signatur ()d mod m mit m = p middot q) An das Ende der Eingabe fur dieRSA-Signatur wird BC angehangt

                Durch den Saltwert wird das Ergebnis zufallig und schwer vorhersagbar Wird leider nicht oftverwendet da die Maskengenerierungsfunktion Chipkarten teuer machen wurde

                Es existiert eine DIN Variante zum v15 PKCS1 DIN-RN-Padding00 02 Zufallsbytes(ohne 00) 00 Identifikator Oktettstring

                564 DSA

                Vergleich ElGamal und elliptische Kurven

                K-elliptische Kurve y2 = x3 + ax + b mod p

                97

                p-Primzahl ( 2 3)

                Punkte auf der Kurve bilden eine Gruppe E(k)

                P + Q = R k middotG isin E(k)

                G ein Punkt (Generator) mit groszliger Ordnung n

                1 middotG 2G 3G n︸︷︷︸sehr groszlig

                middotG = 0

                n ist eine Primzahl und G 2G nG = 0 ist die gesamte Gruppe E(k)

                Signaturschlussel t-zufallig aus 1 n minus 1 Verifikationsschlussel ist P = t middotG

                Standard FIPS 186-3 rarr finde den Fehler

                To do ende einfugen

                p g Generator gpminus1 equiv 1 mod p gpminus1

                x 1 mod p

                Geheimer Schlussel xoffentlicher Schlussel y = gx mod pk(gkm middot yk) = c

                Parallel bei elliptischen Kurven G geheim x offentlich Y = x middotG

                (k middotGm middot k middot Y)

                DSA auch bekannt als DSS FIPS-186

                Primzahl p (hat zB 1024 Bit im Standard variabel) so gewahlt dass pminus 1 einen Primteiler derLange 160 Bit enthalt q|p minus 1 mit |q| = 160 BitAusserdem Es gibt einen Generator g mit der Eigenschaft gq equiv 1 mod p Das findet man

                indem man einen h Generator in mod p auswahlt und g = hpminus1

                q hpminus1 equiv 1 mod p ausrechnet

                x geheimer Signaturschlussel mit 160 Bit gx mod p ist der offentliche Schlussel

                Signaturerstellung Nachricht M Hashwert h(M) = H ausrechnen Generiere Zufallszahl k mit160 Bit (k isin 1 n minus 1) und berechne

                To do neu

                k middotG = (x y) r = x mod n

                98

                s = hminus1 middot (h + tr) mod n

                (r s) ist die Signatur

                To do ende neu

                r = (gk mod p) mod q und s = (kminus1(H + x middot r) mod p) mod q r und s sind Exponenten furmod p werden aber nochmal mod q genommen um Platz zu sparen (r s) wird die Signaturwerden (s 0 mod q r 0 mod q)

                Signaturverifikation Berechne w = sminus1 mod qu1 = H middot w mod q u1 = H middot w + i middot qu2 = r middot w mod q

                Berechne

                gu1 middot yu2 equiv gHmiddotsminus1middot gxmiddotrmiddotsminus1

                equiv gHmiddotk(H+xmiddotr)minus1middot gxmiddotrk(H+xmiddotr)minus1

                equiv gHmiddotkmiddot(H+xmiddotr)minus1+xmiddotrmiddotk(H+xmiddotr)minus1

                equiv gkmiddot(H+xmiddotr)middot(H+xmiddotr)minus1

                equiv gk mod p

                Prufe also ob (gu1 middot yu2 mod p) mod qequiv r

                Die Signatur zu M ist (r s) mit r und s haben 160 Bit so dass man 320 Bit Signatur hat (kleinerals die 1024 Bit Signatur von RSA)

                Um den geheimen Schlussel zu bestimmen muss man den diskreten Logarithmus mod q be-rechnen und das gilt als schwer

                565 ECDSA - DSA mit Elliptischen Kurven

                K - elliptische Kurve mit Punkten mod pG - Generatorpunkt G hat Ordnung q [q middotG = 0] q Primzahlx - Restklasse mod q Y = x middotG

                r = [(k middot G)1] mod q (rarr 1 Koordinate mod q) s = kminus1(h + x middot r) mod q [u1 middot G + u2 middot Y]1

                mod qequiv r

                700 Bit fur alle Parameter

                99

                To do neu

                ECDS DSAGenerator

                G g gq = 1 mod pdA = [1 q minus 1]

                zufalligPA = dA middotG auf E pA = gdA mod p

                Signatur k isin [1 q minus 1] r = (gk mod p) mod qr = x mod q

                s = kminus1 middot (h + dA middot r) mod q

                h ist genauso lang wie q (gleiche Bitlange)

                h sind die linken Bits von H(n)

                (Bem RSA ist bei Elipt Kurven nicht einsetzbar deshalb ist DSA eine gute alternative)

                link draft-lochter-pkx-brainpool-ecc-03 - eine art RFC zu Brainpool

                openssl ecparam -name brainpoolP256r1 -param_enc explicit -noout

                E =(x y) y2 = x3 + Ax + B mod p

                Dann ist G = 04x (in einer Prufung ware interessant zu wissen was das fuhrende Bytebedeutet und welche Varianten es gibt)

                openssl ecparam -name brainpoolP256r1 -genkey

                -param_enc explicit -noout gt eckey

                (pub - offentlicher Punkt)

                openssl dgst -sha256 -sign eckey eckey gt ecsig

                xxd -p ecsig

                openssl asn1parse -i -in ecsig -inform DER

                Man erhalt die beiden Integers r und s

                (Bem bei Eliptischen Kurven ist die Bitlange kurzer da Algorithmen hohere komplexitat als so

                100

                haben)

                (Hausaufgabe erzeuge zwei Kurven (512Bit - Brainpool bzw 521 NIST) mit anderen Hash-funktionen (mdripemd whirlpool) Signatur (rs) )

                (Bem siehe Wikipedia El C DSA r=0 Abfrage weil sonst dA keine Rolle spielt s= 0 Abfrageweil man sonst mit minusz = r middot dA mod q den geheimen dA ausrechnen kann)

                [Spickzettel zur HA

                h-linke Bits des Hashwertes

                n1 = h middot sminus1 mod q

                n2 = r middot sminus1 mod q

                V = n1 middotG + n2PA = (x y) r = x mod q

                v = gn1 middot pn21 mod p r = v mod q

                (r rarr 0 1 jeweils)

                h middot sminus1 middotG + rsminus1PA = h(k(k + dAr)minus1 middotG + r(k(h + dAr)minus1)dAG = (hk + rkdA)(h + dAr)minus1G = V

                = k (h + rdA) middot (h + dAr)minus1︸ ︷︷ ︸=1

                G

                = k middotG

                ]

                Magma

                p=StringToInteger(rsquorsquo16)

                a=StringToInteger(rsquorsquo16)

                b=StringToInteger(rsquorsquo16)

                IntegerRing(p)

                E=EllipticCurve([KaKb])

                G=E[KStringToInteger(rsquo1Halfte Generatorrsquo16)

                101

                KStringToInteger(rsquo2Halfte Generatorrsquo16)]

                Jetzt kann man rechnen

                qG eq E0

                true

                mdashmdashndash

                qG

                (010)

                mdashmdashmdash

                Kq=IntegerRing(q)

                dA=1+Random(q-2)

                PA=dAG Prufung ob ungleich Null fehlt noch

                h=K12121212121212121212121212121

                k=1+Random(q-2)+1damit keine Null rauskommt

                X=kG

                x=X[1]

                r=(IntegerRing()x) mod q

                s= (Kqk)ˆ(-1) ((Kqh)+ r dA)

                rs

                Verifikation

                u1=h(Kqs)ˆ(-1)

                u2=r(Kqs)ˆ(-1)

                102

                Y=(IntegerRing() u1)G+( IntegerRing() u2) PA

                Y

                ((IntegerRing() Y[1]) mod q) eq r

                =rArr siehe Verzeichnis

                Prufen ob Openssl gut gerechnet hat

                OpenSSL

                wie erzeugt man den offentlichen Schlussel openssl ec -in eckey -pubout

                openssl ec -in ecpub -pubin -text -noout

                -pverify

                To do neu-ende

                To do neu-20090617

                Bem Attributes muss die leere Menge sein und darf nicht weggelassen werden

                SHA1 nur noch zur Unterscheidung benutzen

                57 Widerrufen von Zertifikaten

                siehe rfc5280 S53

                Erste Sperrliste

                Ist eine Liste in der die Nummern der gesperrten Zertifikate stehen

                Beispiel CA erstellen

                perl ˜optopenssl-100-beta2appsCApl -newca

                103

                Zertifikat fur den Nutzer erstellen

                perl ˜optopenssl-100-beta2appsCApl -newreq

                Signieren

                perl ˜optopenssl-100-beta2appsCApl -xsign gt aypem

                Man kann noch weitere Zertifikate erstellen allerdings wird dann der pem Key geloscht Mankann dann feststellen dass die Seriennummer nur um eins erhoht wird Man kann auch openssl ca -gencrl -out -cl1pem -crlhours 12benutzen und dabei die Seriennummer selber angeben

                openssl crl -text -in crl1pem -noout

                Zertifiziert wird nur der Teil zwischen Certificate Rev List bis No Revok Cert Da dieser Teilsehr klein ist ist es recht schwer Kollisionen mit SHA1 dafur zu konstruieren

                Dann gibt es noch Informationen wann es die nachsten Updates gibt (Last Update Next Update(optional)) Alte Sperrlisten bleiben aber Gultig die neuen gelten nur zusatzlich

                Zertifikat ungultig machen

                openssl ca -gencrl -out cr13pem -revoke demoCAcertsF8C85pem -crl_reason keyCompromise -crlhours 12

                aktualisieren

                openssl ca -gencrl -out cl4pem -crlhours 12

                Nun nachsehen mit

                openssl crl -text -in crl4pem -noout

                To do neu-ende

                104

                58 Was es noch so gibt

                581 blinde Signaturen

                Gut fur anonymes digitales Geld Normalfall Bank kriegt digitalen Scheck belastet das Kontound schickt einen von ihr signierten Scheck zuruck Problem Wenn derjenige der den Scheckspater einlosen will zur Bank geht kann diese den Scheck zum Aussteller zuruckverfolgen

                Mit anonymen Signaturen Aussteller erzeugt viele (zum Beispiel 1000) unterschiedliche Schecksmit je einer Zufallszahl und dem gleichen Betrag aber ohne Name Kontonummer etc Diese1000 sendet er verschlusselt an die Bank Die Bank sucht sich zufallig (das ist wichtig) 999davon aus und fordert fur diese den Schlussel an Die Bank entschlusselt diese Schecks unduberpruft ob uberall der gleiche Betrag drinsteht Wenn ja dann ist davon auszugehen dass auchder auf den gleichen Betrag lauft Das Konto wird entsprechend belastet und der Scheck wirdblind (also ohne hineinzusehen) signiert und dem Aussteller zuruckgeschickt Der packt denScheck aus (wobei die Signatur gultig bleibt) und hat jetzt einen von der Bank signierten digita-len Geldschein den die Bank nicht mehr zuruckverfolgen kann

                582 anonyme Signaturen

                Beispiel Elektronische Wahlen wo man nicht mochte dass man weiszlig wer es unterschriebenhat

                6 Zertifikate

                To do neu-20090520

                m rarr Signatur und Verifikation

                mprime rarr Signatur und Verifikation

                Vertrauen in den offentlichen Schlussel

                Schutzen den Schlussel durch Prufwert den Prufwert Schutzen wir durch eine Signatur Vertrau-en eines Schlussel ubertragt sich an einen anderen Das ganze scheint sich im Kreis zu drehen

                Aber es handelt sich um einen Graph (Der Graph muss nicht transitiv sein - A vertraut BB vertraut C aber A vertraut nicht unbedingt C) Zb Baum mit Wurzel (PKI) dann gibt es

                105

                vertrauens-Normen die den Ebenen eines Baumes entsprechen Die andere Variante ist das PGPWeb of Trust bei dem der Baum ungeordneter ist und eine Art Vertrauensbereiche hat

                Dass eine Zertifizierungsstruktur funktioniert braucht es klare Regeln fur den Umgang mit Zer-tifikate

                Standards

                ANSI X509

                X500

                openssl internet Profil

                RFC 5280 (alt 3280 2459)

                Definition Zertifikat bindet (durch Signatur) einen offentlichen Schlussel an einen Namen(Subjekt)

                (siehe rfc5280 S16 - Certificate= SEQUENCE und TBSCertificate) (in TBSCert er-scheint rsquosignaturersquo recht fruh damit schon mit dem Hash-Algorithmus begonnen werden kannaber warum steht in Certificate dann nochmal signature -Bessere Ordnung)

                Zertifikat bei CA-cert runterladen und dann mit openssl ansehen

                openssl x509 -in class3crt -text -noout

                openssl asn1parse -i -in class3crt

                Zur ausgabe des ersten (siehe auch rfc5280)

                Version es gibt momentan 3 Versionen

                Serial Number ist ein Integer kann so groszlig sein das man nicht mehr in den Hash-Block mehrkommt (bis 20 Byte geht)

                Bundesnetzagenturde 15549pdf sagen dass Serien Nummern mindesten 20 Bit Entropie ent-halten sollen damit SHA-1 bis 2010 benutzt werden kann (rsquoQualifizierte Signaturrsquo)

                To do siehe 606 Gultigkeit

                validity Wird oft als Gultigkeitszeitraum ubersetzt was aber nicht ganz richtig ist da nur ange-geben wird wann das Zertifikat nicht gultig ist Besser ware rsquonicht Gewahrleistungszeitraumrsquo

                106

                Die validity gibt (nach dem Standard) den Zeitraum an in der die CA gewahrleistet aussagenuber den Zustand des Zertifikats zu geben (Gultig ODER nicht Gultig - deshalb muss das Zer-tifikat also nicht unbedingt gultig sein)

                To do neu-ende

                To do neu-20090527

                Bemerkung In der Objectstxt findet die Object-Identifier die OpenSSL kennt

                To do neu-20090527-ende

                Signatur Anwendung eines Schlussels Ob der Signaturersteller eine bestimmte Person ist istdamit nicht klar Immer gleichzeitig Authentizitat des Schlussels prufen

                Dazu gibt es zwei Moglichkeiten

                1 Anarchie = Web of Trust (Beispiel PGP)

                2 Vertrauenswurdige dritte Instanz Certification Authority CA bzw ZDA (Zertifizierungs-diensteanbieter) Stellt ein Zertifikat aus das ist ein elektronisches Dokument welcheseine Identitat einem Schlussel zuordnet

                Zertifikat (Name Schlussel ) und Signatur

                Problem Im Zertifikat steht Name Schlussel usw und daran hangt eine Signatur Gegeben Nut-zer Alice mit Zertifikat daruber gibt es die CA1 die ihre Signatur zertifiziert CA1 hat selber einZertifikat mit einem Namen Schlussel usw und daran hangt wieder eine Signatur Das Problemverschiebt sich immer weiter nach oben Man bekommt eine Zertifikatshierarchie und benotigteinen aufgeblahten Riesenbaum mit einer Weltwurzel Im taglichen Leben haben sich 3-stufigeZertifikatshierarchien bewart Root signiert seine eigene Signatur Vertrauen in Authentizitat derNutzerschlussel ist fur alle Nutzer gleich Es bestimmt sich ausschlieszliglich durch die Authenti-zitat des Schlussels des Root CA Das Vertrauen in die Root CA verteilt sich auf die Nutzer

                603 X509

                X509 mittlerweile bei ISO RFC 3280 X509 Certificate and Certificate Revocation List (CRL)Profile Abschnitt 4

                Version X509v3 Version 1 enhalt keine ErweiterungenSerial Number In der Regel 20 Byte muss immer eindeutig sein

                107

                Signaturverfahren fur das Zertifikat muss am Anfang (im ersten Block) stehen damit das Has-hen schon begonnen werden kannHerausgeber Name(eindeutig) C=Country O=Organisation CN=Common Name SN=Surname

                Validity Gultigkeitszeitraum der Zeitraum indem die CA Gultigkeitsinformationen uber dasZertifikat bereitstellen willwirdmussInhaber Name (eindeutig im Bereich der CA) zur Person also stabile Daten SeriennummerVersicherungsnummer etcSchlusselinformationenErweiterungenDarunter die Signatur

                In RFC 3280 steht dass nach dem 31 Dezember 2003 alle Zertifikate UTF-8 kodiert seinmussen

                604 Erweiterungen

                Man kann bei Erweiterungen festlegen ob diese Critical oder nicht sind Critical ist sowas wieeine Vorschrift nicht Critical ist sowas wie eine Information Kritische Erweiterungen mussenimmer ausgewertet werden wenn ein Programm sie nicht versteht darf es das Zertifikat nichtverarbeiten

                To do neu

                Per default auf false ist auszligerdem optionales Argument Wenn nicht critical dann ist es nur eineInformation Also critical muss man lesen und verstehen nicht critical sollte man lesen wennman sie versteht sollte man sich daran halten

                To do neu ende

                Basic Constraints

                To do neu

                Sagt ob es Zertifizierungsinstanz ist oder eine Endnutzer Instanz ist und in welcher Ebene essich befindet

                To do Diagramm basteln

                108

                Ein interessantes Beispiel (goyacrt) findet man bei der Rechnerbetriebsgruppe

                To do neu-ende

                CA Siginalisiert ob es ein CA-Zertifikat ist (TRUE) oder nicht (FALSE) Dh ob das Zertifikatberechtigt ist weitere Unterzertifikate auszustellen

                To do neu

                Per default false es musste also nicht jedesmal CA FALSE angegeben werden

                To do neu-ende

                PATHLEN Beschrankt die Pfadlange Pathlen=0 heisst dass das Zertifikat zwar Nutzerzertifika-te ausstellen kann aber keine weiteren CA-Zertifikate Ist immer als Critical markiert

                Subject Key Identifier und Authority Key Identifier Nicht kritisch Beschreiben die ver-wendeten Schlussel uber Hash-Werte zum Beispiel SHA-1 uber den Schlussel

                Key Usage Kritisch (sollte kritisch sein zb bei GOYA nicht) Ist ein Bitstring der die Ver-wendung des Schlussels angibt Fur eine CA also zum Beispiel nur KeyCertSign NonRepu-diation ist eigentlich fur die Dokumentsignatur (content commitment) DigitalSignature ist furAuthentisierung oder allgemeine Signaturmechanismen Die beiden moglichst exklusiv setzen

                To do neu

                Nicht bei Endnutzerzertifikaten notig

                To do siehe rfc5280 - KeyUsage -HA lesen

                Merkmale

                (0) DigitaleSignatur zur Authentifizierung (hat keine Auswirkungen auf spatere Zeitraume)(werden zu dem aktuellen Zeitpunkt gepruft)

                (1) (ab X509v4) Inhaltsbindung[contentCommitment] (zb Nichtabstreitbarkeit ) (jetzt noch[nonRepudiation]) (werden zu dem Zeitpunkt zu dem sie erstellt worden sind gepruft)

                (0) und (1) sind Endnutzerinformationen

                nur ent-verschlusseln Schlussel zum verschlusseln von Zertifikaten geignet

                109

                keyCertSign==TRUE - wenn man nur Zertifikate damit signieren mochte (brauch man bei CAZertifikaten eigentlich sollte nur eines der Bits gesetzt sein) ansonsten sollte digitalSignaturegesetzt werden

                Key usage zB A0=10100000 (Erste und dritte gesetzt) oder zB 88=10001000 (erstes undfunftes gesetzt)

                authority information Nicht kritisch Feld in dem Daten des Herausgebers abgerufen werdenkonnen

                Benutzt das OCSP-Online Certificate Status Protocol (gibt eine URI an wo man die Informatio-nen erhalten kann - spater mehr)

                X509v3 Certificate Policies ASN1 Strucktur siehe rfc5280 S 33

                System von Regeln fur die Ausgabe von Zertifikaten sowie den Betrieb der ZertifizierungstelleNutzer kann sich uber die Hirarchie der CA informieren (wichtig fur den Vertrauensaufbau)

                CPS - Certificate Policy Statement und dann zwei moglichkeiten cPSuri (uri wo die Informationzu finden ist) oder userNotice (Freitext)

                Bsp httpnasacanasagovnasacphtml dort findet man eine CPS

                Wenn der Regelsatz dem CA Zertifikat zugeordnet ist (Bindung zB durch Root) ist es besserals wenn es nur dem EndNutzer Zertifikat zugordnet ist (Bindung nur durch die daruberliegendeCA)

                Authority Key Identifier Kurzinformationen mit der man einen Schlussel identifizieren kannFur Endnutzer ist der Authority Key Identifier ein Bezeichner mit dem das zugohrige CA-Zertifikat zu finden ist Kann enthalten

                KeyIdentifier - Schlussel ID

                GeneralNames - Herausgeber Seriennummer

                CertificateSerialNumber

                Subject Key Identifier - SKI Schlussel ID hilft bei der Unterscheidung sollte eine moglichsteindeutige Nummer sein da aber nicht genau festgelegt wird ist die SKI nicht fur Uberprufungengeeignet

                110

                Subject Alternative Name IP Adresse URI Email Adresse (hat das rsquoatrsquo Zeichen welchesin kein Datentyp passt weshalb sie hierher (oder in den Issuer Alt Name) gehort soll alsrfc8224Name gespeichert werden (da dieser nicht groszlig klein sensitiv ist))

                To do neu-ende

                605 Erzeugung

                To do neu

                Bei OpenSSL gibt es zwei moglichkeiten mit Perl Script

                perl ˜optopensslappsCApl -newca

                openssl x509 -text -nout -in cacertpem

                openssl req -text -nout -in careqpem

                Diese Requests folgen dem Standard PKCS 10 - rfc2986

                openssl ans1parse -in careqpem

                Attributes [0] - Contextabhangiges Tag (nur an diesem Ort gultig) Codiert als A0 denn Con-textabhangige tags fangen mit 10 an im Gegensatz zu Universaltags die mit 00 anfangen(Beispiel fur Contextabhangige Tags siehe auch bei AuhtorityKeyIdentifier)

                Im Request ist Set of Atritbute NICHT optional (aber kann leer sein)

                To do neu-ende

                Wie kommen wir eigentlich zu Zertifikaten Zertifikate kommen von einer CA also muss manzuerst ein CA-Zertifikat erstellen

                Request Ich mochte ein Zertifikat haben PKCS10RFC2986openssl req

                openssl req -new -x509 erzeugt gleich ein Zertifikat

                openssl req -new -newkey rsa1500 -days 40 -out userreq ein neuer Schlussel undein Request Der Request enthalt die Informationen des Antragsstellers den offentlichen Schlusselein Challenge-Passwort (von der CA festgelegt) und eine Signatur uber diese Daten

                111

                openssl x509 -req -CA -CAkey -out -days 40

                -in userreq -CAcreateserial -out userx509

                -extensions usr_cert -extfile opensslcnf wichtig um v3-Zertifikate zu erzeu-gen

                606 Gultigkeit

                Der rsquoGultigkeitszeitraumlsquo (Validity) im Zertifikat ist der Zeitraum uber den sich die ausstellendeInstanz verpflichtet etwas uber die Gultigkeit des Zertifikats auszusagen

                CRL Certificate Revocation List

                OCSP Online Certificate Status Protocol

                Sperrlistenformat auch in RFC 3280 Abschnitt 5 als X509-Variante festgelegt

                OCSP version 1 RFC 2560

                To do neu

                Man kann dass conf bearbeiten

                Ubungsaufgabe ein Zertifikatsrequest mit eigen Daten erstellen und zu zertifizieren

                To do einsortieren

                Die CA schmeiszligt eventuell Daten des Request raus

                To do neu-ende

                To do neu-20090624

                Sperrlisten Enthalten

                Version

                Signatur

                112

                Herausgeber

                LastNext Update

                Sperrlisten Nummer (sollte monoton wachsen)

                Liste der gesperten Zertifikate(jeder Eintrag enthalt ein Integer eine Zeit und evt CRLEntryExtension(CRLReason-Code siehe rfc5280 531))

                Bemerkungen

                Sperrlisten sind im DER-Format ( openssl -inform DER)

                (Erweiterungen enthalten immer OID Octet-String)

                Zu CRLEntryExtension CRLReason Code (6) (certificateHold-schwebend gesperrt) und (8)(removeFromCRL-kannwurde wieder entsperrt werden) sind besonders und sind eher nur furAuthosierung sinnvoll

                Sperrlisten nehmen in der Praxis erhebliche groszligen ein

                CRLEntryExtension wird von der Bundesnetzagentur nicht benutzt

                RFC5280 532 sperrdatum (revocation date) darf nicht vor dem Zeitraum der vorherigen CRLliegen sonst ist es in der vorherigen Liste Gultig (ansehen)

                Aufbau des Pfad zum Vertrauensanker (RFC 5280 S72) Das beschriebene Prufverfahren istnicht normativ vorgeschrieben es reicht wenn die Funktion gleich ist

                httpwwwbundesnetzagenturdemediaarchive1343pps

                Kettenmodel benutzt den Erstellungszeitpunkt (nicht Gewahrleistungs-Beginn) (Folie3)

                httpwwwbundesnetzagenturdeenid85f55115e236d80fc18329992037142d0FAQ

                Antwortss4_wphtml

                To do neu-ende

                To do 20090701-fehlt

                113

                61 Praktische Ausschlachtung von kryptografischen Algorithmen mitSMIME und PKCS7

                Root-Zertifikat erzeugenopenssl genrsa 1200 gt cakeypem

                openssl req -x509 -new -key cakeypem -config opensslcnf gt cacert (selbst-signiertes neues root Zertifikat mit eigenem Config Script)

                Root-Zertifikat anschauenopenssl x509 -in cacert -text -noout

                Nutzer der eigenen CA erstellenopenssl req -new -config opensslcnf -out usercert Erstellt mehrere Dateienauch privkeypem

                Zertifikat erstellenopenssl x509 -req -in userreq -CA cacert -CAkey cakeypem -CAcreateserial

                -out usercert -extfile opensslcnf -extensions usr_cert (Zertifikat fur usermit Extenstions Version 3 statt Version 1)

                Senden einer signierten Nachricht (Nachricht in Neutxt)openssl smime -sign -signer usercert -in Neutxt -inkey privkeypem

                -out neusmime -text

                Erzeugt Datei neusmime mit Nachricht und Signature -text erzeugt den Eintrag fur den Con-tent Type vor der Originalnachricht in neusmime

                Umwandeln der SMIME Nachricht in PKCS7 Nachrichtopenssl smime -pk7out -in neusmime -out neupk7

                Das gesamte (ohne Inhalt der Nachricht eigentlich nur die Signatur) SMIME Dokument wirdin eine PKCS7 Struktur eingebunden

                Anschauen mitopenssl asn1parse -i -in neupk7

                Zertifikate ausgeben mitopenssl smime pkcs7 -in neupk7 -print_certs -noout

                Zertifikate anschauen mitopenssl smime pkcs7 -in neupk7 -print_certs -noout -txt

                Verifizierenopenssl smime -verify -in neusmime -CAfile cacert

                Verschlusseln

                114

                openssl smime -encrypt -in Neutxt -out neusmime -text usercer

                Nachricht ohne Signatur verschlusselt

                Entschlusselnopenssl smime -decrypt -in neusmime -text -recip usercer

                -inkey privkeypem

                Fur die Einbindung in Browseropenssl pkcs12 -export -name Annie -inkey privkeypem

                -in usercert -out userp12

                Um auch das CA Zertifikat mit einzubindenopenssl pkcs12 -export -name Annie -inkey privkeypem

                -in usercert -out userp12 [-certfile cacert -CAfile cacert -chain]

                Private Schlussel auspacken openssl pkcs8

                62 PKCS

                PKCS Public Key Cryptography Standards

                1 RSA3 Diffie-Hellman5 Cryptography mit Passworten6 Zertifikate7 Cryptographic Message Syntax8 private Schlussel9 Attributtypen10 Zertifikatsrequest11 Cryptographic Token12 Personal Information Exchange13 Elliptische Kurven15 Chipkarten Token Formate

                621 PKCS7 15 November 93 RFC 3852

                To do neu-20090708

                CMS

                Email (SMIME)

                115

                XML Signaturen XMLDSIG XMLENC

                Dokument rarr signiertes Dokument

                openssl genpkey -algorithm rsa -pkeyopt rsa_keygen_bits300mdash openssl -chek -text -noout

                zu kleine Werte (iexcl256) fur den Schlussel werden nicht akzeptiert (Wert ist immer noch etwasklein) Aber die Ausgabe ist nicht ganz korrekt

                openssl genpkey -algorithm rsa -pkeyopt rsa_keygen_pubexp1

                ist leider moglich

                63 CMS(Cryptographic Message Syntax)

                rfc3852

                SignedData

                bull Version

                bull Hash Algorithmus

                bull gekapselter Inhalt

                bull Certifikat Liste

                bull Widerrufungsliste (Sperrinformationen)

                bull

                bull Signer Infos (Signaturen davon kann es mehrere geben elektronische Signatur nach demSignaturgesetz Signer Info enthalt selber noch einmal einen Signaturblock - der als Digi-tale Signatur aufgefasst werden kann)

                ndash Versionndash Idndash Attributesndash Algondash sig Valuendash

                bull Signer Id

                bull Signed Attributes (zB Zeit Ort Message Digest) Die Signatur dieses Blockes wird er-stellt indem der Hash Wert (nur des Blockes) signiert wird Wenn es signed Attributesgibt sind also auszligerdem Hash Wert des Dokuments und Inhaltstyp(Contenttype) im Si-gned Attributes enthalten und erst dann wird der Signed Attributes Block signiert Es wirdjeweils er Hash-Algorithmus verwendet der oben genannt wird

                116

                Auszligerdem Signing Certificate

                bull

                Frage ist wo wird der Wert Signiert der sagt welcher Hash-Algorithmus verwendet wird Wennnicht konnte man eventuell den Algorithmus austauschen

                Man konnte den Hash-Algorithmus als SignedAttribute einfugen

                To do neu-ende

                CMS (Cryptographic Message Syntax) Beschreibung des Formates mit dem man Krypto-nachrichten erstellen kann

                Kryptographische Nachricht Struktur vorne Bezeichner hinten Daten Daten = irgendwasspannend Welche Typen gibt es eigentlich

                Signed-data Content-Type Was jetzt kommt sind signierte Daten Liste der unterstuetzen Has-hfunktion dann gekapselter Inhalt dann eine Liste von Zertifikaten (optional) optionalSperrlisten dann Signaturbloecke (SignerInfo)

                SignedData = SEQUENCE

                Versionsnummer

                Liste der unterstutzten Hashfunktionen

                Ursprungliche Nachricht selbst

                Liste von Zertifikaten Optional

                Sperrlisten Optional

                Signer Infos

                SignedInfo = SEQUENCE

                Versionsnummer

                Signer Identifier (Wer der Signierer eigentlich gewesen sein soll)

                Hashfunktionen die bei der Signatur verwendet wird

                Signierte Attribute

                Verwendete Signaturalgorithmus

                Signaturwert

                Unsignierte Attribute

                SignerInfo = SEQUENCE

                Versionsnummer

                Signer Identifier (Wer der Signierer eigentlich gewesen sein soll)

                Bezeichner des Hashalgorithmus mit dem die endgultige Signatur erstellt wird

                Signierte Attribute Optional

                117

                Signatur Algorithmus

                Signature SignatureValue

                Unsigned Attributes Optional

                SignerIdentifier = SEQUENCE

                issuerAndSerialNumber

                subjectKeyIdentifier (Eindeutiger Hinweis wer der Aussteller ist)

                SignerInfo Signaturblock der eine Datenstruktur fuer eine Signatur bereitstellt Steht drin Ver-sionsnummer SignerIdentifier verwendeter Hash-Algorithmus dann signierte Attributeverwendeter Signaturalgorithmus Signaturwert unsignierte Attribute

                SignerIdentifier Aussteller und Seriennummer oder Schluesselidentifier (subjectKeyIdenti-fier)

                Signierte Attribute Sammlung von Attributen die signiert sind Was dabei sein sollte erstesAttribut Content-Type wenn die signierten Daten nicht nur Rohdaten sind sondern gekap-selte Daten eine s bestimmten Typs Ein weiteres nuetzliches Attribut Message-DigestDann Signing-Time

                Content-Type Object-Identifier der einen bestimmten Typ impliziert

                Message-Digest Hash der aus den Daten ausgerechnet wird Als Octet-String

                Signing-Time Zeit von der behauptet wird dass die Signatur zu dieser Zeit geleistet wurde

                Signatur Es werden die signierten Attribute signiert dort ist auch der Hash des Dokumentsals messageDigest enthalten Wenn keine signedAttributes existieren wird das Dokumentdirekt gehasht

                Weitere sinnvolle signierte Attribute

                Commitment-Type Was bedeutet die Signatur zum Beispiel virtuelle Poststelle Eingangs-stempel Auslieferung Einschreiben Urheberschaft gelesen Zeitstempel (spezielleSignatur eines authentischen Zeitservers) ist eine Information dass das Dokument vor-her existiert hat

                Signing Certificate Beschreibt mit welchem Schluessel zu welchem Zertifikat ist unterschrie-ben wordenwelches Zertifikat moechte der Signierer zur Ueberpruefung verwendet ha-ben Austausch des Zertifikats fuehrt zu anderer Urheberschaft ist ein realer AngriffVerhindert die Urheberschaft auszutauschen (rfc2634 S 46) Folge mit Zertifikats HashIssuerSerial(Herausgeber und Seriennummer) (leider ist da SHA1 als Algorithmus festge-legt)

                in rfc5035

                Folge mit Hash-Algorithmus (optional default ist aber SHA256) Zertifikat Hash IssuerSerial (Nun Hash als Octet String)

                Da der Wert des Hash Algorithmus optional ist ist diese Variante ruckwartskompatibel

                118

                Signing Location Ort an dem die Signatur geleistet wurde

                Weitere nuetzliche unsignierte Attribute

                Zeitstempel ist eine Information wann die Signatur existiert hat Hash uber die Signatur TimeServer davon Signatur

                not after Information fur die Signatur

                Countersignature Zweite Signatur (Gegenzeichnung) Signaturblock uber eine andere Signa-tur

                (Mitsignatur Bestatigung eines signierten Dokuments wichtiges Feld fur Mehrfachsigna-turen)

                Hashwert des signature Feldes (3 Hash Wert) nicht alle in einander gekappselt sonderansammlung von Signaturen

                Archiv Zeitstempel neuer Hash-Algorithmus signiert Dokument alle Signaturen alle Attri-bute (signiert unsigniert)

                Damit kann mann folgendes machen

                2001 2009 2010

                RS A512 S HA1 S HA256 S HA512

                Dok S ignatur t1 t2cc at1TTYY^^bb at2 at3

                Fur XML XML-DSIC XML-ENC

                7 Wichtige Neuerungen bei den Versionsanderungen

                bull Von 098 zu 099 Verbesserungen bei den Extensions von Certificate Revocation Lists

                bull Von 097h zu 098 UTF8-Support fur das ca-Kommando

                bull SHA1 ist nun default-Hash-Algorithmus statt MD5

                bull Patentierte Algorithmen RC5 und MD2 mussen beim Kompilieren extra angegeben wer-den

                bull Neue FIPS 180-2 Algorithmen SHA-224-256-384-512 wurden implementiert

                119

                bull Neuer Parameter -selfsign fur das ca-Kommando

                bull IPv6 Support bei den Zertifikatserweiterungen

                bull Ausweitung der Eliptischen Kurven Bibliothek

                8 OpenSSL hintergehen

                81 die eine Primzahl ganz klein erzeugen

                bull Offnen einer Datei in genrsa cryptorsarsa_genc

                bull Andern den Teil ldquo generate p and q rdquo so daszlig die eine Primzahl 10bit lang ist(bitsp=10 )

                bull Wir erzeugen einen neuen rsa key openssl genrsa -out rsaweakpem 2048und erstellen hierdurch eine Primzahl mit 10 bit die andere zufallig (also so in etwa2038bit)

                bull Wir schauen uns den key an openssl rsa -in rsaweakpem -text -nooutund sehen die eine Primzahl ist 35879 die andere hat 2046 bit Lange Das kann manlecker faktorisieren

                bull Offnen cryptobnbn_primeh die Zahl kommt durch den kleinen Primzahltest durchdieser geht nur bis ca 17000

                82 beide Primzahlen nah beieinander

                bull Und wieder in rsa_genc (Zeile 136 in der do-while-Schleife hinter degenerate)

                bull BN_copy(rsa-gtq rsa-gtp) wir setzen q gleich pBA_add_word(rsa-gtq 20) wir addieren 20 auf q

                for(i=1 BN_is_prime_ex(rsa-gtq 5 ctx NULL) i++)

                BN_add_word(rsa-gtq 2)

                wir erhoehen q bis zur naechsten Primzahl

                bull hierdurch erzeugen wir zwei Primzahlen die sich enorm ahnlich sind (wieder mit obigenKommandos) Der Angreifer kennt in diesem Fall den Exponenten damit ist das Verfahrenvollig unsicher

                83 Vorschrift des BSI

                01 le |log10 p minus log10q| also p gt10radic

                2 lowast qDas kann man aber mit q =10

                radic2 lowast p im Quellcode umgehen

                120

                84 Programmierung Zufallszahlenerzeugung und andere nette features

                Die ldquocallbackrdquo Funktion gibt den Fortschritt bei Suche nach p und q als Punkt (Fermat Primzah-lentest) und Plus (Miller-Rabin-Test) aus

                DatentypStruktur zum Speichern der auftretenden groszligen Zahlen Binarfeld BIGNUMp ist unsigned char

                p = BN_bn2hex((RSA )pub_rsa)-gtn) Zum Ausgeben eines BIGNUMs

                ((pub_rsa)-gtn)d[] einzelne Teile im Datenblock eines BIGNUMs editieren

                Zufallszahlen findet man in cryptorandrandh rand_libc randc

                Diese beiden Kombinationen vor entsprechenden Programmen i2d oder d2i intern to data datato internpub_rsa = d2i_RSAPublickey(NULL ampstr len) (lange von str) Transfor-miert Binardaten Zeichenkette in interne public Key Datenstruktur mit ASN1

                S(buf) gibt Speicherplatz frei uberschreibt ihn vorher noch einmal mit Zufallsbytes

                9 Zusammenfassung

                bull Symmetrische Verschlusselungsverfahren

                ndash DES

                64 Bit Blockchiffre

                16 Runden Feistelnetzwerk mit 48 Bit Rundenschlusseln

                56 Bit Schlussellange plus 8 Paritatsbits

                XOR Transformationsfunktion mit S-Boxenndash IDEA

                64 Bit Blockchiffre

                8 Runden Feistelnetzwerk mit je 6 middot 16 Bit Rundenschlusseln

                128 Bit Schlussellange

                XOR ADD modulo 216 MULT modulo 216 + 1ndash Blowfish

                64 Bit Blockchiffre

                16 Runden Feistelnetzwerk

                32-448 Bit Schlussellange

                XOR Transformationsfunktion mit XOR CONCAT und viel Schlusselmaterialndash AES

                121

                128 192 256 Bit Blockchiffre

                10 12 14 Runden Feistelnetzwerk

                128 192 256 Bit Schlussellange

                Substitution ShiftRow MixColumn KeyAddition

                ndash RC4

                Stromchiffre

                10 12 14 Runden Feistelnetzwerk

                variabele Schlussellange bis 2048 Bit

                ndash RC5

                wahlbare Blockchiffre (openssl 32 Bit)

                wahlbare Runden Feistelnetzwerk (openssl 12)

                wahlbare Schlussellange (openssl 128 Bit)

                ndash GOST

                64 Bit Blockchiffre

                32 Runden Feistelnetzwerk

                256 Bit Schlussellange

                ADD ROT 8 S-Boxen

                bull Asymmetrische Verschlusselungsverfahren

                ndash RSA (Verschlusseln und Signieren)

                ndash Diffie-Hellmann Schlusselaustausch

                ndash ElGamal Crypto-System (basierend auf DH)

                ndash Rucksackverschlusseln (gebrochen)

                ndash Merkle Puzzle (viele Nachrichten)

                ndash Rabin Verfahren

                Zur Prufung erster Teil mit OpenSSL spielen zweiter Teil Konzepte eine Woche vor derPrufung evt fragen was dran kommen wird Prufungstermine 20072005 oder 04102005oder nach Vereinbarung

                10 Mathematische Techniken

                101 Multiplikatives Inverses

                (nach wwwtzide˜hsLehreU9 mathD1pdf)

                122

                1011 Behauptung

                Seien a b isin Z zwei teilerfremde ganze Zahlen dh ggT (a b) = 1 Dann existiert ein aprime isin Z mitaprime middot a equiv 1 mod b

                1012 Beweis

                Betrachte die Menge ak mod b|k isin N k ge 1 Da ggT (a b) = 1 gilt folgt dass ggT (ak b) = 1fur alle k isin N mit k ge 1 Denn da a teilerfremd zu b ist so gilt dies auch fur alle Potenzenvon a Daher ist die betrachtete Menge eine Untermenge der endlichen Menge x mod b|x isinZ ggT (x b) = 1 und daher selbst endlich Also kann existiert k1 k2 mit ak1 equiv ak2 mod bNehmen wir an k1 lt k2 und setzen n = k2 minus k1 dann gilt ak1 middot an = ak2 equiv ak1 mod bDaher folgern wir an equiv 1 mod b d h anminus1 middot a equiv 1 mod b Also setzen wir aprime = anminus1 und dieBehauptung ist erfullt

                102 Kleiner Fermatscher Satz

                1021 Behauptung

                Aus der Wikipedia (unter GNU Free Documentation License)

                Der kleine fermatsche Satz kurz der kleine Fermat ist ein Lehrsatz in der Zahlentheorie Ermacht eine Aussage uber die Eigenschaften von Primzahlen und wurde aufgestellt im 17 Jahr-hundert von Pierre de Fermat Dieser Satz beschreibt eine allgemein gultige Kongruenz

                ap equiv a mod p

                wobei a eine ganze Zahl und p eine Primzahl ist (die weitere Symbolik wird im Artikel Kon-gruenz beschrieben) Falls a kein Vielfaches von p ist kann man das Resultat in die haufigbenutzte Form

                apminus1 equiv 1 mod p

                bringen

                1022 Beweis

                Der Beweis beruht auf der Tatsache dass wenn zwei Zahlen a und b zueinander inkongruent(modulo einer festen Zahl n) sind auch die beiden Produkte x middot a und x middot b inkongruent modulon sind fur x gt 0 und ggT (x n) = 1

                Denn

                123

                sei a b mod n n eine Primzahl a b naturliche Zahlen Angenommen

                a middot x equiv b middot x mod n

                fur eine naturliche Zahl x mit ggT (x n) = 1 Dann gibt es eine naturliche Zahl k so dass

                a middot x minus b middot x = k middot n

                x middot (a minus b) = k middot n

                x = n middot (k(a minus b))

                Da n eine Primzahl und x eine naturliche Zahl ist ist k(a minus b) entweder eine naturliche Zahlminus1n oder 1n Die letzten beiden Falle widersprechen der Annahme dass a b mod n dererste Fall widerspricht der Annahme dass ggT (x n) = 1 Damit ist die Annahme falsch und esgilt fur x so dass ggT (x n) = 1

                a middot x b middot x mod n

                Aus der Wikipedia (unter GNU Free Documentation License)

                Im folgenden betrachtet man zum einen die Menge A aller Reste mod p - also alle naturlichenZahlen kleiner als p und zum anderen die Menge B die diese Reste multipliziert mit a enthaltZwei beliebige Zahlen aus A sind zueinander inkongruent modulo p Aus dem oberen Satzfolgt dass damit auch zwei beliebige Zahlen aus B zueinander inkongruent sind Dadurchergibt sich dass das Produkt uber alle Zahlen aus A kongruent zum Produkt aller Zahlen aus Bist

                1 middot 2 middot 3 middot middot middot middot middot (p minus 1) equiv (1 middot a) middot (2 middot a) middot middot middot middot middot ((p minus 1) middot a) mod p

                alsoW equiv W middot apminus1 mod p

                wobei W das Produkt 1 middot2 middot3 middot middot(pminus1) ist Da es in Restklassenkorpern stets ein multiplikativesInverses gibt kann man diese W dividieren und man erhalt

                apminus1 equiv 1 mod p

                1023 Verallgemeinerung

                Man kann den kleinen fermatschen Satz zum Satz von Euler verallgemeinern Fur zwei teiler-fremde Zahlen n und a gilt

                aϕ(n) equiv 1 mod n

                wobei ϕ(n) die Eulersche Phi-Funktion bezeichnet Diese hat als Ergebnis die Anzahl der Zah-len zwischen 1 und nminus1 welche teilerfremd zu n sind Ist n eine Primzahl so ist ϕ(n) = nminus1 sodass man Fermats kleinen Satz als Spezialfall erhalt Mit Hilfe des kleinen fermatschen Satzesentwickelte Fermat den fermatschen Primzahltest

                124

                1024 Praktische Anwendung auf Primzahlen

                (p - a a lt p a 0)Wenn gilt apminus1 1 mod p ist dann kann p keine Primzahl sein (Umkehrung muss nicht

                gelten) Wenn man mit a beiweisen kann das p keine Primzahl sein kann dann nennen wir aKanditat (Es gibt aber sogenannte Carmichaelzahlen die kein Kandidat ist)

                To do nacharbeiten Carmichaelzahlen

                Wenn (p minus 1) gerade ist pminus12 = k eine Ganzzahl

                Ist a2k equiv 1 mod p(ak)2 equiv p(ak minus 1)(ak + 1) equiv 0 mod pAlso wenn p eine Primzahl ist dann ist entweder ak equiv 1 mod p oder ak equiv 1 mod pDaraus folgt wenn ak 1 mod p und ak minus1 mod p dann ist p keine PrimzahlSomit gilt auch wenn k gerade ist und a

                k2 1 und a

                k2 minus1 dann ist p keine Primzahl

                Betrachten p minus 1 = 2t middot r (r ungerade) Sei a lt p und p - aIn ar a2r a22middotr a2t middotr = apminus1 (Reste mod p)Wenn die Folge nicht mit 1 endet ist p keine Primzahl Wenn vor der ersten 1 in der Folge

                keine 1 steht ist p keine PrimzahlWir nennen a einen Zeugen wenn man mit a beweisen kann das p keine Primzahl istJede Zahl p die keine Primzahl ist hat mindestens 3

                4 aller Zahlen a (mit ggT(a p) = 1) alsZeugen (Jeder Kandidat ist ein Zeuge)

                Damit ergibt sich der Rabin-Miller-Test Wahle zufallig ein a lt p und teste ob a ein Zeugeist Mit hoher (beliebig genauer) Wahrscheinlichkeit ist p Primzahl

                Bei groszligen Zahlen werden die Zeugen mehr

                openssl genrsa -out keyrsa 800

                Generating RSA private key 800 bit long modulus

                +++++++

                +++++++

                e is 65537 (0x10001)

                Generiert den Schlussel und speichert in rsquokeyrsarsquo Punkte Bedeutet keine kleine PrimzahlRabin-Miller Test schlagt fehl Plus ist ein erfolgreicher Rabin Miller Test bei groszligeren Zahlenbrauch man weniger Tests da es mehr Zeugen gibt

                []

                103 Chinesischer Restklassensatz

                (nach wwwtzide˜hsLehreU9 mathD1pdf)

                125

                1031 Behauptung

                Seien m1m2 mr paarweise teilerfremde ganze Zahlen d h ggT (mim j) = 1 fur alle i j(i j isin 1 2 r) und sei M = m1 middotm2 middotmr Dann existiert fur jede Liste a1 ar mit 0 le ai lt

                mi fur 1 le i le r genau ein x isin Z mit 0 le x lt M welches effizient berechnet werden kann undfur das gilt

                x equiv a1 mod m1

                x equiv a2 mod m2

                x equiv ar mod mr

                Bemerkung Es ist leicht einzusehen dass jedes xprime isin Z mit xprime = x + k middot M fur ein k isin Z d hxprime equiv x mod M genau dasselbe Gleichungssystem lost wie x Der Beweis wird zeigen dass furein gegebenes x nur xprime von dieser Form dasselbe Gleichungssystem losen konnen

                1032 Beweis

                Zunachst beweisen wir die Existenz und setzen dazu Mi = Mmi daher gilt ggT (Mimi) = 1Aus diesem Grund existiert auch ein multiplikatives Inverses Ni isin Z mit Mi middot Ni equiv 1 mod mi

                (vgl multiplikative Inverse) Zu beachten ist jedoch dass fur alle j isin 1 r mit i j stetsMi middot Ni equiv 0 mod m j gilt Nun definieren wir x via

                x equivrsum

                i=1

                ai middot Mi middot Ni mod M

                Fur jedes i existiert ein v isin Z so dass x sich folgendermaszligen darstellen lasst

                x = Mi middot Ni middot ai + v middot mi

                Dies gilt da jedes M j mit j i mi als Faktor enthalt Offensich erfullt x also die obigen Glei-chungen x ist das einzige mit 0 le x lt M welches fur die gegebene Liste a1 a2 ar alleGleichungen lost denn falls xprime und xprimeprime zwei verschiedene Losungen sind so gilt xprime minus xprimeprime equiv 0mod mi fur alle i isin 1 r d h xprimeminus xprimeprime ist ein Vielfaches aller mi und damit auch von M da nachVoraussetzung ggT (mim j) = 1 fur alle i j isin 1 r mit i j erfullt ist Somit folgt xprime equiv xprimeprime

                mod M d h 0 le xprime xprimeprime lt M kann nicht auftreten und der Beweis ist abgeschlossen

                126

                104 Square and multiply

                Der folgende rekursive Algorithmus berechnet xn fur naturliche Zahlen x und n indem sukzes-sive der Exponent reduziert wird

                bull Falls n = 1 xn = x

                bull Sonst falls n gerade xn = (x2)n2

                bull Sonst xn = x middot (x2)(nminus1)2

                Damit kann xn in O(ln(n)) Rechenschritten (quadrieren und multiplizieren) berechnet werdenindem in jedem Schritt des Algorithmus der Exponent halbiert wird und hochstens vier Berech-nungen ausgefuhrt werden

                105 Montgomery Reduktion (Moduloberechnung ohne Division)

                Heute was ganz verrucktes Modulo-Multiplikation ohne Division

                Problem bei RSA und anderen Algorithmenm Modul gegeben und g Zahl gegeben und man rechnet aus ga mod mAufwand der Berechnung mit Square and Multiply Groszlige des Exponenten in Bits Multiplika-tionen + gleichviele ModulooperationenBerechnung von x middot y mod m = x middot y minus (x middot y div m) lowast mDivision aufwendig Daher Methode dies ohne Division bzw mit einer schmerzfreien Divisiondurch eine Zweierpotenz zu tun Dafur Kosten von Hin- und RucktransformationenHier Skizze 1xrarr X = x middot r mod myrarr Y = y middot r mod mX lowast Y = X middot Y middot rminus1 = x middot y middot r mod m

                Wir berechnen t0 equiv minusmminus1 mod r (Preprocessing)

                1 x minusrarr X = x middot r mod m

                2 y minusrarr Y = y middot r mod m

                3 X lowast Y = X middot Y middot rminus1 mod m= x middot r middot y middot r middot rminus1 = x middot y middot r mod m

                Zur Bestimmung von X lowast Y t1 = X middot Y echte Multiplikationt2 = t1 middot t0 mod r Multiplikation untent3 = (t1 + t2 middot m) div r Multiplikation obent3 = X lowast Y oder (t3 minus m) = X lowast Y

                127

                1 t3 ist durch r teilbar

                2 t3 equiv X middot Y middot rminus1 mod m

                3 0 le t3 le 2m

                Zu 1 t1 + t2 middot mequiv t1 + t1 middot t0 middot m mod requiv t1 + t1 middot m middot (minusm)minus1 mod requiv t1 minus t1 equiv 0 mod r

                Zu 2 (t1+t2middotm)r = t3 mod m

                (t1 middot t2 middot m) middot rminus1 mod mequiv t1 middot rminus1 + t2 middot rminus1 middot mequiv X middot Y middot rminus1 mod m

                Beispiel 5 lowast 3 =

                t1 = 15t2 = 15 middot 23 mod r = 45t3 = 15 + 45 middot 13 = 6

                Zu 3t1 le (m minus 1)2

                t2 middot m lt r middot mt1 + t2 middot m lt 2 middot r middot m

                t3 lt 2 middot m

                t3 equiv X middot Y middot rminus1 mod mx lowast r2 = X = x middot r mod mX lowast 1 = x mod m

                Beispiel m = 13 r = 100 t0 = 23

                r mod m r = 9 mod 13r2 = 3 mod 13

                Ziel 6 middot 5 mod 13

                6 lowast 3 = 25 lowast 3 = 6

                128

                2 lowast 6 =

                t1 =

                t2 =

                t3 = xx

                x lowast 1 =

                Wenn eine Division langer als 1 5 Multiplikationen dauert dann lohnt sich das Verfahren DerErfinder heisst ubrigens Peter L Montgomery (Montgomery Reduktion) wwwmiinformatikuni-frankfurtdeteachingws0001krypto algomontgomerypdf

                Montgomery-Multiplikation

                To do siehe Mathematischer Anhangzusammenfugen

                Die Reduktion modulo m erfordert eine Division aber Divisionen sind rsquoteuerrsquo

                Dies kann man aber wie folgt vereinfachen

                Um die Division zu vermeiden rsquotransformiertrsquo man die Zahlen

                Sei gesucht das Produkt x middot y mod m

                x minusrarr X y minusrarr Y x middot y minusrarr X lowast Y

                R = (zweierPotenz) gt m und die Division durch R muss einfach sein

                X = x middot R mod m

                X lowast Y = X middot Y middot Rminus1 mod m (wobei die modulo Reduktion nun nicht mehr jedes mal ausgefuhrtwerden muss sonder nur am Anfang und am Ende der rsquoTransformationrsquo)

                1 Berechne mprime = minusmminus1 mod R

                (minusmR) = 1 rArr XGCD mprime middot m = minus1 mod R

                2 t = X middot Y (echte Multiplikation)

                3 t1 = t middotmprime mod R (echte Multiplikation und oben abschneiden also eine leichtere moduloReduktion da R eine zweier Potenz ist) (dabei gilt t2 lt m2 + R middot m)

                4 t2 = t + t1 middot m (echte Multiplikation und eine Addition) (dabei gilt t3 lt(m+R)middotR

                R = 2m)

                5 t3 = t2divR (also rsquounten abschneidenrsquo)

                6 Wenn t3 gt m dann t3 = t3 minus m

                129

                Nun ist t3 = X lowast Y Dafur muss t3 lt m sein oder in Schritt 6 t3 lt 2m sein

                Wir mussten also prufen

                1 t3 lt m

                2 Division in 5 rsquogeht aufrsquo

                t2 ist durch r teilbar

                t2 mod R equiv (t + t1 middot m) equiv t + (t middot mprime) middot m mod R equiv t + t(minus1) mod R equiv 0 mod R

                3 t3 = X lowast Y

                t3 middot R mod m equiv t2R middot R mod m equiv t2 equiv t + t1 middot m equiv t mod m equiv X middot Y mod m

                Wir haben also den folgenden Aufwand

                1 rsquoTransformationrsquo

                2 rsquoRechnungrsquo

                3 Zuruck rsquotransformierenrsquo

                x lowast R2 = x middot R2 middot Rminus1 mod m = x middot R = X mod m

                X lowast 1 = X middot 1 middot Rminus1 equiv x middot R middot Rminus1 equiv x mod m

                Man benotigt also zwei zusatzliche Operationen zur transformation Dafur kommt die Operationrsquorsquo ohne Divisionen aus

                Beispiel m = 17

                R = 100

                7 middot 11 mod 17

                x lowast y mod mdarr darr

                X Y= =

                (x middot R) mod m lowast (y middot R) mod m

                m1 = minusmminus1 mod 100

                suche also ein m1 mit m1 middot 17 = minus1 mod 100

                m1 = 47

                130

                To do Bsp Magma Quelltext siehe Homepage

                Bem dazu Wenn R groszlig genug ist kann man die Subtraktion von m weglassen

                Mathematischer Hintergrund (Zm+ middot)simminusrarr (Zm+ lowast) Was ist das Einselement und das

                Inverse

                106 Nochwas

                vielleicht

                zur Prufung Zwei Teile (ein theoretischer ein praktischer) Ein openssl-Kommando das in derVL nicht behandelt wurde wird drankommen (zum Beispiel speed ca etc) Theoretischer Teil

                1 symmetrische Verfahren (was sind symmetrische Verfahren wodurch charakterisiert)

                2 Integritatsschutz (wie kann man Integritatsschutz gewahrleisten)

                3 asymmetrische verfahren (siehe 1)

                4 Signatur (was sind Signaturen wofur verwendet man sie was ist ˜konzept was ist sicherwas ist unsicher)

                5 Vertrauensstruktur (zum Beispiel PGP)

                6 Client-Server-Authentisierung (SSL-Protokoll Kerberos)

                7 Sicherheitsparameter (wo sind die welchen Einfluszlig auf die Sicherheit haben sie)

                8 X509 (elektronische Identitat)

                9 RFC-Security (3280 3279 3446 )

                Mathematische Verfahren

                1 Square and Multiply Double and Add

                2 Euklidischer Algorithmus

                3 RSA DH

                4 DSA

                5 AES

                6 das eine oder andere symmetrische Verfahren Strom-Blockchiffre

                7 Elliptische Kurven eher nicht reicht zu wissen dass man mit Addition in EK das gleicheerreichen kann wie mit Multiplikation im Restklassenkorper

                8 kleiner Fermat eher nicht

                131

                9 Montgomery-Multiplikation vielleicht auch nicht sollte aber bekannt sein

                Fur MD5- AES- etc Grundfunktionen reicht evt wissen wo man nachschauen muss

                Dann nachweisen dass man mit Openssl spielen kann

                1 Verschlusseln mit DES3DESBFAES

                2 Prufsummenberechnung

                3 Konfigurationsfile

                4 RSA-Verschlusselung

                5 098 ndash 097 (dynamisch)

                6 Zertifikat

                7 DSA-Verschlusselung

                8 Passworter (passwd) und Salt

                9 E-Mail-Nachricht erstellen und sichern (SMIME-Anwendung)

                Zum Punkt Ich mochte eine 1 haben was muss ich dafur tun Was haben sie ausserhalb derVorlesung schonmal gelesen Was fehlte ihnen an der Vorlesung was fanden sie doof

                132

                • 1 Einfuumlhrung
                  • 11 Verschluumlsselung
                  • 12 Beispiel rot13
                  • 13 Block-Chiffre
                  • 14 Strom-Chiffre
                  • 15 Angriffstypen
                    • 151 Differentielle Kryptoanalysis
                      • 16 Base64
                        • 2 OpenSSL
                        • 3 Symmetrische Verschluumlsselungsverfahren
                          • 31 Feistel-Chiffren
                          • 32 DES - Data Encryption Standard
                            • 321 Schluumlsselauswahl
                            • 322 Funktionsweise
                            • 323 Schwachstellen und Unsinnigkeiten
                            • 324 spezielle Optionen bei openssl
                            • 325 DESECB - Electronic Code Book
                            • 326 DESCBC - Cipher Block Chaining
                            • 327 DESOFB - Output Feed Back
                            • 328 DESCFB - Cipher Feed Back
                            • 329 CTR Mode CCM
                            • 3210 TEA-Algorithmus
                            • 3211 DES-X
                              • 33 IDEA International Data Encryption Algorithm
                                • 331 Schluumlsselauswahl
                                • 332 Funktionsweise
                                • 333 Pseudocode-multiplikation
                                • 334 Schwachstellen
                                  • 34 Blowfish
                                    • 341 Initialisierung
                                    • 342 Verschluumlsselung
                                      • 35 AES Advanced Encryption Standard
                                        • 351 Wiederholung-Byteoperation
                                        • 352 Uumlberblick
                                        • 353 mathematische Grundlagen
                                          • 36 RC4 Rons Cipher 4
                                            • 361 Geschichte
                                            • 362 Beschreibung
                                            • 363 Der Pseudo-Zufalls-Algorithmus
                                            • 364 Der Schluumlsselerzeugungs-Algorithmus
                                            • 365 Implementation
                                            • 366 Sicherheit
                                            • 367 Fluhrer Mantin und Shamir Angriff
                                              • 37 RC5 Rons Cipher 5
                                                • 371 Verschluumlsselung
                                                • 372 Schluumlsselexpansion
                                                  • 38 GOST 28147-89 Gosudarstvennyi Standard Soyuza SSR nicht in OpenSSL
                                                  • 39 FazitWie koumlnnte bei einen Symmetrischen Algorithmus die Sicherheit erhoumlhen
                                                    • 4 Asymmetrische Verschluumlsselungsverfahren
                                                      • 41 Einfuumlhrung
                                                        • 411 Beispiel
                                                          • 42 Geschichte
                                                          • 43 Einige Theoretische Grundlagen
                                                            • 431 Kleiner Fermat (oder kleiner Fermatscher Satz)
                                                            • 432 Euklidischer Algorithmus
                                                            • 433 Beispiel
                                                              • 44 RSA Rivest Shamir Adleman
                                                                • 441 Funktionsweise des RSA-Verfahrens
                                                                • 442 Beweis der Funktionsweise
                                                                  • 45 Schwaumlchen von RSA
                                                                  • 46 Fuktionen in OpenSSL
                                                                    • 461 genrsa
                                                                    • 462 rsa
                                                                    • 463 rsautl
                                                                    • 464 PKCS
                                                                    • 465 OAEP - Optimal Asymmetric Encryption Padding
                                                                    • 466 Wie erkennt man an Ciphertexten den Verschluumlsselungsalgorithmus- DER ASN1
                                                                    • 467 Umgehen mit den Schluumlsselkomponenten
                                                                      • 47 Miller-Rabin Test
                                                                      • 48 Diffie-Hellman-Schluumlsselaustausch
                                                                      • 49 ElGamal-Cryptosystem
                                                                      • 410 Wiederholung DH
                                                                        • 4101 Beispiel
                                                                          • 411 was anderes
                                                                          • 412 Elliptische Kurven
                                                                          • 413 Elliptische Kurven Nachtrag
                                                                          • 414 Rucksack-Verschluumlsseln
                                                                            • 4141 Beispiel
                                                                              • 415 Merkle Puzzle
                                                                              • 416 Rabin-Verfahren und Wurzelziehen
                                                                                • 4161 Schluumlsselgenerierung
                                                                                • 4162 Kongruenzbedingung
                                                                                • 4163 Verschluumlsselung
                                                                                • 4164 Entschluumlsselung
                                                                                  • 417 Angriffe auf asymmetrische Verschluumlsselungsverfahren
                                                                                    • 4171 1 Angriff Common modulus attack
                                                                                    • 4172 2 Angriff kleiner geheimer Exponent d
                                                                                    • 4173 3 Angriff Faktorisieren
                                                                                    • 4174 Echt schlechte RSA-Schluumlssel
                                                                                    • 4175 Schnelles Faktorisieren bei Fehler im System
                                                                                    • 4176 Angriff mit gewaumlhltem Chiffretext
                                                                                        • 5 Signaturmechanismen
                                                                                          • 51 Integritaumltsschutz und Hashfunktionen
                                                                                            • 511 Schluumlssellose Hashfunktion (Pruumlfsummen ohne Schluumlssel)
                                                                                            • 512 Demonstration Faumllschung
                                                                                              • 52 Unterschied MD5 und SHA
                                                                                              • 53 Secure Hash Standard SHA-2
                                                                                                • 531 Problem bei MD5 und SHA-0
                                                                                                • 532 MACs (Message Authentication Codes) (Pruumlfsummen mit Schluumlsseln)
                                                                                                  • 54 Whirlpool
                                                                                                  • 55 Zusammenfassung
                                                                                                  • 56 Digitale Signaturen
                                                                                                    • 561 RSA
                                                                                                    • 562 Eigenschaften eines asymmetrischen Verschluumlsselungsverfahren
                                                                                                    • 563 RSASSA-PSS-Padding
                                                                                                    • 564 DSA
                                                                                                    • 565 ECDSA - DSA mit Elliptischen Kurven
                                                                                                      • 57 Widerrufen von Zertifikaten
                                                                                                      • 58 Was es noch so gibt
                                                                                                        • 581 blinde Signaturen
                                                                                                        • 582 anonyme Signaturen
                                                                                                            • 6 Zertifikate
                                                                                                              • 603 X509
                                                                                                                • 604 Erweiterungen
                                                                                                                • 605 Erzeugung
                                                                                                                • 606 Guumlltigkeit
                                                                                                                  • 61 Praktische Ausschlachtung von kryptografischen Algorithmen mit SMIME und PKCS7
                                                                                                                  • 62 PKCS
                                                                                                                    • 621 PKCS7 15 November 93 RFC 3852
                                                                                                                      • 63 CMS(Cryptographic Message Syntax)
                                                                                                                        • 7 Wichtige Neuerungen bei den Versionsaumlnderungen
                                                                                                                        • 8 OpenSSL hintergehen
                                                                                                                          • 81 die eine Primzahl ganz klein erzeugen
                                                                                                                          • 82 beide Primzahlen nah beieinander
                                                                                                                          • 83 Vorschrift des BSI
                                                                                                                          • 84 Programmierung Zufallszahlenerzeugung und andere nette features
                                                                                                                            • 9 Zusammenfassung
                                                                                                                            • 10 Mathematische Techniken
                                                                                                                              • 101 Multiplikatives Inverses
                                                                                                                                • 1011 Behauptung
                                                                                                                                • 1012 Beweis
                                                                                                                                  • 102 Kleiner Fermatscher Satz
                                                                                                                                    • 1021 Behauptung
                                                                                                                                    • 1022 Beweis
                                                                                                                                    • 1023 Verallgemeinerung
                                                                                                                                    • 1024 Praktische Anwendung auf Primzahlen
                                                                                                                                      • 103 Chinesischer Restklassensatz
                                                                                                                                        • 1031 Behauptung
                                                                                                                                        • 1032 Beweis
                                                                                                                                          • 104 Square and multiply
                                                                                                                                          • 105 Montgomery Reduktion (Moduloberechnung ohne Division)
                                                                                                                                          • 106 Nochwas

                  1 Klartextbits breit auf Chiffre verteilen und Schlusselbits uberall einbringen um die Si-cherheit zu erhohen bzw einen anderen Algorithmus verwenden um dies zu erreichen

                  2 Algorithmus skalieren Lange des Schlussels mehr Runden

                  3 Schwachen zusatzlichen Schutz bietet doppeltes verschlusseln zum BeispielAlgorithmus hat 64-Bit Sicherheit (Brute Force Angriff Aufwand von 264) doppelt ver-schlusselt hat er 65-Bit Sicherheit wegen

                  rdquomeet in the middle Angriffldquo Ist known plain text attack m ist der Klartext k der Schlusselfur den ersten Algorithmus n der daraus resultierende ldquoZwischentextrdquo l der Schlussel furden zweiten Algorithmus und c die endgultige verschlusselte Nachricht Der Angreiferinist ein m und das dazu gehorige c bekannt Sie erzeugt sich nun alle Werte die k an-nehmen kann und alle Werte die l annehmen kann und berechnet zu jedem ki sowie zujedem li ein ni als E(kim) bzw D(li c) Damit muss sie 2 lowast 264 Paare von Schlusselnund ldquoZwischentextenrdquo erzeugen und speichern In der Menge der ni gibt es nun (da beideVerschlusselungen eindeutig sind) genau zwei - eines als Entschlusselung von c eines alsVerschlusselung von m - die ubereinstimmen Deren Schlussel sind diejenigen die auchbei der Erzeugung von c verwendet wurden Das Auffinden dieses Paares kann durch ge-schickte Speicherung der ni ki und li zum Beispiel in einer Hashtabelle in logarithmischerZeit bewerkstelligt werdenDaher Sicherheit des Algorithmus ist mindestens so stark wie jeder einzelne Algorithmusaber moglicherweise nicht viel besser

                  4 Dreifach verschlusseln und Kombination von AlgorithmenDer Meet-in-the-middle attack schlagt hier fehl da der Speicher- und Rechenaufwandnun quadratisch mit dem Werteraum der Schlussel wachst Bei der Verwendung einesschwachen Algorithmus der anderweitig gebrochen werden kann wird die Kombinationjedoch wieder anfallig fur meet-in-the-middle

                  5 Block-Chiffre + Strom-Chiffre kombinierenStrom-Chiffre sehr langer Schlussel c = p oplus k k zufallig gewahlt (moglichst echter phy-sikalischer Zufall) zwei Folgen CK rarr in Block-Chiffrerarr Blockweise C2 = E(S 1K)C1 = E(S 2C)Eine Strom-Chiffre und zwei Block-Chiffren Brechen dieser Kombination = Aufwandaddiert sich aber doppelte Ausgabelange

                  151 Differentielle Kryptoanalysis

                  man wahle Klartexte P1 P2 mit ganz bestimmten Unterschied P1 oplus P2 = D Bei der Ver-schlusselung ergibt sich dann fur die Chiffretexte C1C2 mit bestimmten Dprime = C1 oplus C2 das ineinen bestimmetn Zusammenhang zu D steht

                  Bleiben die Schlussel immer gleich so kann man sich langsam mit D1 Dn an den Klartextranprobieren ()

                  9

                  16 Base64

                  Aus der Wikipedia (unter GNU Free Documentation License)

                  Base64 [] beschreibt ein Verfahren zur Kodierung von 8-Bit-Binardaten (z B ausfuhrbareProgramme ZIP-Dateien) in eine Zeichenfolge die nur aus wenigen Codepage-unabhangigenASCII-Zeichen besteht Im Zusammenhang mit OpenPGP wird noch eine Prufsumme (CRC-24) angehangt und es als Radix-64 bezeichnet

                  Es findet im Internet-Standard MIME (Multipurpose Internet Mail Extensions) Anwen-dung und wird damit hauptsachlich zum Versenden von E-Mail-Anhangen verwendet Notigist dies um den problemlosen Transport von beliebigen Binardaten zu gewahrleisten da SMTPin seiner ursprunglichen Fassung nur fur den Versand von 7-Bit ASCII-Zeichen ausgelegt war

                  Zur Kodierung werden die Zeichen A-Z a-z 0-9 + und verwendet sowie = am EndeDa diese Zeichen auch in EBCDIC vorkommen (wenn auch an anderen Code-Positionen) istdamit auch ein Datenaustausch zwischen nicht-ASCII-Plattformen moglich

                  Zur Kodierung werden jeweils drei Byte des Bytestroms (=24 bit) in vier 6-bit-Blockeaufgeteilt Jeder dieser 6-bit-Blocke bildet eine Zahl zwischen 0 und 63 Diese Zahlen werdenan Hand der nachfolgenden Umsetzungstabelle in ldquodruckbare ASCII-Zeichenrdquo umgewandeltund ausgegeben Nach jeweils 76 ausgegebenen Zeichen wird spatestens ein Zeilenumbrucheingefugt welcher jedoch ansonsten fur die Kodierung nicht von Belang ist

                  Falls die Gesamtanzahl der Eingabebytes nicht durch drei teilbar ist wird der zu kodieren-de Text am Ende mit Fullbytes aufgefullt Um dem Dekodierer mitzuteilen wie viele Fullbytesangefugt wurden werden die 6-Bit-Blocke die vollstandig aus Fullbytes entstanden sind mitrsquo=rsquo kodiert Somit konnen am Ende einer Base64-kodierten Datei 0 1 oder 2 rsquo=rsquo-Zeichenauftreten

                  Die angesprochene Transitionstabelle ist eine alphabetisch bzw numerisch aufsteigende Anord-nung zuerst der Groszligbuchstaben dann der Kleinbuchstaben schlieszliglich der Ziffern und am Endeder beiden Zeichen rsquo+rsquo und rsquorsquo in dieser Reihenfolge

                  2 OpenSSL

                  Optionen fur openssl ciphername oder openssl enc -ciphername

                  OPTIONS

                  -in filename

                  the input filename standard input by default

                  -out filename

                  the output filename standard output by default

                  10

                  -pass arg

                  the password source

                  -salt

                  use a salt in the key derivation routines

                  -nosalt

                  donrsquot use a salt in the key derivation routines

                  -e

                  encrypt the input data this is the default

                  -d

                  decrypt the input data

                  -a

                  base64 process the data This means that if encryption is

                  taking place the data is base64 encoded after encryption

                  If decryption is set then the input data is base64 decoded

                  before being decrypted

                  -A

                  if the -a option is set then base64 process the data on

                  one line

                  -k password

                  the password to derive the key from This is for

                  compatibility with previous versions of OpenSSL Superseded

                  by the -pass argument

                  -kfile filename

                  read the password to derive the key from the first line

                  of filename This is for compatibility with previous

                  versions of OpenSSL Superseded by the -pass argument

                  -S salt

                  the actual salt to use this must be represented as a

                  string comprised only of hex digits

                  -K key

                  the actual key to use this must be represented as a string

                  comprised only of hex digits If only the key is specified

                  the IV must additionally specified using the -iv option

                  11

                  When both a key and a password are specified the key given

                  with the -K option will be used and the IV generated from

                  the password will be taken It probably does not make much

                  sense to specify both key and password

                  -iv IV

                  the actual IV to use this must be represented as a string

                  comprised only of hex digits When only the key is specified

                  using the -K option the IV must explicitly be defined When

                  a password is being specified using one of the other options

                  the IV is generated from this password

                  -p

                  print out the key and IV used

                  -P

                  print out the key and IV used then immediately exit donrsquot

                  do any encryption or decryption

                  -bufsize number

                  set the buffer size for IO

                  -nopad

                  disable standard block padding

                  -debug

                  3 Symmetrische Verschlusselungsverfahren

                  31 Feistel-Chiffren

                  Aus der Wikipedia (unter GNU Free Documentation License)

                  Feistel-Chiffre (auch als Feistelnetzwerk bezeichnet) ist eine Block-Chiffre Ein Mitarbeitervon IBM Horst Feistel gilt als der Erfinder dieser Chiffre Er arbeitete mit anderen am sogProjekt rdquoLuciferldquo dessen Ziel es war eine effiziente Verschlusselungstechnologie zu entwi-ckeln Die Feistel-Chiffre war spater dann die Grundlage fur den DES-Algorithmus

                  Viele moderne symmetrische Verschlusselungsalgorithmen basieren auf Feistelnetzwer-ken Dies ruhrt ua auch daher dass die Struktur von sehr vielen Kryptografen analysiert undfur gut befunden wurde

                  12

                  Wie es der Name rdquoBlock-Chiffreldquo schon nahe legt wird der Klartext zuerst in einzelneBlocke zerlegt Die Groszlige dieser Blocke kann frei gewahlt werden ublich sind oftmals Vielfa-che von 64 Bit

                  Jeder dieser Blocke wird danach in zwei gleichgroszlige Halften (L0 und R0) geteilt und inmehreren Runden mit verschiedenen Schlusseln verschlusselt Nach den Runden werden dieHalften wieder zusammen gesetzt

                  Innerhalb der i-ten Runde (i ist die Nummer der aktuellen Runde und reicht von 1 bis n)wird folgende Formel angewendet

                  Li = Riminus1

                  Ri = Liminus1 oplus f (Riminus1Ki)

                  Dabei bildet f die sog Runden- oder Transformationsfunktion und Ki ist der jeweilige Runden-schlussel Der verschlusselte Text am Ende der Runden ist die Zusammenfuhrung von (LnRn)

                  Feistelnetzwerke ermoglichen eine Entschlusselung ohne dass die Umkehrfunktion von fbenotigt wird Will man einen Geheimtext dechiffrieren wendet man die obige Formel leichtmodifiziert an

                  Riminus1 = Li

                  Liminus1 = Ri oplus f (Riminus1Ki)

                  13

                  (Quelle httpenwikipediaorgwikiImageFeistelpng)

                  32 DES - Data Encryption Standard

                  DES ist eine 64 Bit Block-Chiffre mit einer festgelegten Schlussellange von 56 Bit Die Funk-tionsweise entspricht einem 16-Runden Feistel-Netzwerk DES ist der erste Verschlusselungs-Algorithmus der weite Verbreitung fand und dessen Spezifikation offentlich zuganglich ist Erwurde in den 70er Jahren entwickelt und ist im amerikanischen Standard FIPS 46-2 beschrieben

                  14

                  321 Schlusselauswahl

                  Zunachst steht nominal ein 64-Bit Schlussel zur Verfugung Von diesem ist jedoch je ein Bit proByte als Paritatsbit deklariert so dass 56 Bit effektives Schlusselmaterial ubrigbleiben Diese 56Bit werden in 2 mal 28 Bit aufgeteilt die in jeder der 16 Runden um 1 oder 2 Bit rotiert werdeninsgesamt um 28 Bit so dass am Ende wieder das Original vorliegt Aus der Konkatenation derbeiden Halften wird in jeder Runde ein 48-Bit Rundenschlussel ausgewahlt

                  (Quelle httpenwikipediaorgwikiImageDES-key-schedulepng)

                  15

                  322 Funktionsweise

                  Die so gewonnenen Rundenschlussel ki werden fur die Runden der Feistelchiffre genutzt E(k1 k2 k16m) =

                  cE(k16 k15 k1 c) = mD(k1 k2 k16 c) = E(k16 k15 k1 c) = mJeder 64 Bit Eingabe-Block wird in zwei 32 Bit Blocke (L und R) aufgeteilt und weiterverarbei-tet L und R werden in jeder Runde durch eine festgelegte Permutation E auf 48 Bit ausgedehntanschlieszligend mit dem Rundenschlussel verknupft mittels einer weiteren rundenspezifischenPermutation S wieder auf 32 Bit komprimiert und dann schlieszliglich noch einer weiteren festge-legten Permutation P unterzogenLi = Riminus1Ri = Liminus1 oplus f (Riminus1Ki) wobei f (Riminus1Ki) = P(S (E(Riminus1) oplus Ki))

                  rechts Feistelstruktur (Quelle httpenwikipediaorgwikiImageDES-main-networkpng)

                  links F Funktion (Quelle httpenwikipediaorgwikiImageDES-f-functionpng)

                  16

                  (Quelle httpdewikipediaorgwikiBildDES_resizepng)

                  323 Schwachstellen und Unsinnigkeiten

                  bull Die Anfangliche Permutation der Klartexteingabe sollte Softwareimplementation erschwe-ren Per Hardware ist diese sehr einfach universell verwendbare Rechner hatten in den70er Jahren jedoch noch Probleme mit so etwas

                  bull Das Paritatsbit ist eine Schwachstelle da es - soweit es gesetzt ist - ein Durchmustern desSpeichers nach dem Schlussel erlaubt Gesucht wird dann nach dem relativ ungewohn-lichen Auftreten von 8 nahe bei einander liegenden Byte bei denen je das letzte Bit dieParitat angibt

                  17

                  bull Mit heutigen Rechnern ist es moglich einen 56-Bit Schlussel mittels brute force zu knackenDie Lange des Schlussels ist bei DES aber auf diesen Wert festgelegt

                  bull Es wird vermutet dass die ldquomagischenrdquo S-Permutationen uber deren Qualitat nichts be-wiesen ist eine Hintertur darstellen da die NSA hierbei ihre Finger im Spiel hatte Eskonnte jedoch nie bewiesen werden

                  324 spezielle Optionen bei openssl

                  bull Option -nopad Schaltet Auffullung der letzten Bits zu Block von 64 Bits aus Auch wenndie Nachricht genau in 64 Bit Blocken einteilbar ist wird ein 64 Bit Padding Block an-gehangtDer Block besteht aus x mal der Zahl x So lasst er sich beim Entschlusseln wieder entfer-nen

                  bull Option -nosalt Schaltet die Voranstellung des salt-Werts ausDer salt-Wert verlangert die Nachricht um insgesamt 16 Bytes Salted__ gefolgt von 8Bytes salt-WertAus Passwort und salt-Wert wird der Key fur die eigentliche Verschlusselung erzeugt Da-mit wird verhindert dass Schlussel wegen Mehrfachverwendung von Passwortern leich-ter zu brechen sind Gleiche Passworter beim Aufruf der Verschlusselung mit OpenSSLfuhren durch den zufalligen salt-Wert zu verschiedenen Keys bei der Verschlusselung

                  bull Neben des gibt es auch des-ede und des-ede3 Diese bieten einen gewissen Schutzgegen Bruteforce-AngriffeTDES (Triple DES) DES3 DES-EDE (Encrypt Decrypt Encrypt) mit effektiv 168 Bit

                  E3DES(k1 k2 k3m) = EDES(k3DDES(k2 EDES(k1m)))

                  In OpenSSL arbeitet des-ede mit zwei Schlusseln

                  E(K1)D(K2) E(K1)

                  Um in OpenSSL 3 Schlussel angeben zu konnen muss man des-ede3 verwenden Ver-wendet man bei des-ede zweimal oder bei des-ede3 dreimal den selben Schlusselerhalt man eine einfache DES-Verschlusselung So kann man Abwartskompatibilitat er-reichen

                  bull In OpenSSL konnen DES Verschlusselungen mit folgenden Befehlen aufgerufen werden

                  ndash -desndash -des-cbcndash -des-cfbndash -des-ecbndash -des-edendash -des-ede-cbc

                  18

                  ndash -des-ede-cfbndash -des-ede-ofbndash -des-ede3ndash -des-ede3-cbcndash -des-ede3-cfbndash -des-ede3-ofbndash -des-ofbndash -des3ndash -desxndash -desx-cbc

                  OpenSSL des-ecb -salt fur den Schlusseleintrag aus Passphrasepassphrase = 12345prime +prime S alt minusWert rarr K

                  12345srarr

                  264 Moglichkeiten

                  Damit man keine Tabelle generieren kann die aus den schwachen Schlussel besteht denn fur12345 gibt es 264 Moglichkeiten aufgrund des salts

                  (PC12345)(PC1234)

                  P- (Klartext) bekanntS- (Saltwert) bekanntC- (Chiffretext) unbekanntwelcher Schlussel wurde verwendet

                  112123

                  1234

                  rarr K

                  s1 s2 s3c1 c1 c1c12 c12 c12c123 c123 c123c1234 c1234 c1234

                  Dazu kommt aber spater noch mehr

                  19

                  325 DESECB - Electronic Code Book

                  Die Eingabe wird in Blocke aufgeteilt und jeder Block fur sich verschlusselt Dieses Verfahrenist potentiell unsicher weil in der Abfolge der Blocke eine Struktur enthalten ist die der Algo-rithmus nicht verbirgt Ein Fehler beim Ver- oder Entschlusseln eines Blockes fuhrt allerdingsauch nur zu einem einzigen verlorenen Block

                  To do Initialisierungsvektor

                  (Quelle httpenwikipediaorgwikiImageEcb_encryptionpng)

                  (Quelle httpenwikipediaorgwikiImageEcb_decryptionpng)

                  BemReicht fur einen Block dann wird auch kein Initialisierungsvektor benotigt

                  20

                  Man kann fur den Initialisierungsvektor auch einen vorher vereinbarten Wert (zB Unix Sekun-den) wahlen

                  Aus der Wikipedia (unter GNU Free Documentation License)

                  Die 64-bit Klartextblocke werden nacheinander und getrennt voneinander kontextfrei ver-schlusselt Dies ist die einfachste Anwendungsmoglichkeit eines Block-Chiffre

                  326 DESCBC - Cipher Block Chaining

                  Aus der Wikipedia (unter GNU Free Documentation License)

                  Vor der Verschlusselung eines Klartextblockes wird der bereits verschlusselte vorhergehendeBlock hinzuaddiert Auf den ersten Klartextblock der ja keinen Vorganger besitzt wird stattdessen ein Initialisierungsvektor der geheim gehalten werden muss addiert Dadurch entstehteine Verkettung (engl chain) der Blocke Trotz dieser Verkettung ist die CBC-Verschlusselung

                  rdquoselbstkorrigierendldquo FehlerManipulationen in einem Block wirken sich bei der Entschlusse-lung nur auf den fehlerhaftenmanipulierten und den nachsten Block ausMan kann relativ einfach beliebige Blocke des Geheimtextes einzeln entschlusseln da zusatz-lich zum Schlussel nur der vorhergehende (verschlusselte) Block benotigt wird

                  Fehler im c breiten sich nicht aus beim Entschlusseln Ein Initialisierungsvektor IV fur erstenBlock wird benotigt

                  bull Klartext oplus Cipher und dann Encryption

                  bull Vorteil Muster im Klartext werden zerstort

                  bull Nachteil Fehler im Ciphertext eines Blocks verandern Bits an genau der Stelle im folgen-den Block (aber nur in diesem spatere Blocke sind nicht betroffen) so kann gezielt eineStelle im Block angegriffen werden (siehe Skizze)

                  To do Skizze zur Fehlerausbreitung erlautern

                  21

                  m1 mlowast2 mlowast3

                  IV oplus

                  oplus

                  oplus

                  oplus

                  DES

                  DES

                  DES

                  DES

                  c1

                  DDc2

                  DDc3

                  DDc4

                  EE

                  Vergleich DESECB und DESCBC

                  Zum Vergleich bietet es sich an ein Bild (Abbildung 1) mit DES im ECB- und im CBC-Moduszu verschlusseln Deutlich zu erkennen ist dass die Struktur im ECB-Modus (Abbildung 2)erhalten bleibt wahrend sie bei CBC (Abbildung 3) vollkommen zerstort wird

                  Abbildung 1 Bild im Klartext (24 Bit RGB mit 182 times 183 Pixeln)

                  Abbildung 2 Bild aus Abbildung 1 ECB-verschlusselt

                  22

                  Abbildung 3 Bild aus Abbildung 1 CBC-verschlusselt

                  327 DESOFB - Output Feed Back

                  Aus der Wikipedia (unter GNU Free Documentation License)

                  In diesem Modus werden die Klartextblocke nicht direkt mit DES verschlusselt sondern DESerzeugt einen pseudozufalligen Bitstrom der dann ohne Ubertrag (vgl XOR) auf den Klartextaddiert wird Dazu muss DES mit einem kontinuierlichen Eingabestrom gefuttert werden AlsEingabe von DES dient hier ein Schieberegister dass zunachst mit einem Initialisierungsvektorgeladen wird Anschlieszligend wird immer ein Teil der Ausgabe von DES in dieses Registerhineingeschoben und so als Eingabe wiederverwendet (daher output feedback)

                  bull Output der Encrpytion als Input fur Encryption erzeugt Pseudozufallsstrom oplus Klartext

                  bull Vorteil Beliebige Blockgroszligen moglich wie Stromchiffre verwendbar

                  bull Nachteil Durchsatz verringert sich auf neue Blockgroszlige pro erzeugtem Block kann abervorberechnet werden

                  bull Vorteil Ein Bit Fehler fuhrt zu nur einem invertierten Bit nach der Entschlusselung

                  bull Nachteil Keine Selbstsynchronisierung moglich wenn Bits komplett verloren gehen

                  23

                  (Quelle httpdewikipediaorgwikiBildOfb_encryptionpng)

                  (Quelle httpdewikipediaorgwikiBildOfb_decryptionpng)

                  328 DESCFB - Cipher Feed Back

                  Aus der Wikipedia (unter GNU Free Documentation License)

                  Identisch mit OFB aber statt die Ausgabe des DES wieder als Eingabe zu verwenden wirdder Kryptotextstrom als Eingabe wiederverwendet

                  bull Cipher als Input fur Encryption erzeugt Pseudozufallsstrom oplus Klartext

                  24

                  bull Vorteil Beliebige Blockgroszligen moglich wie Stromchiffre verwendbar

                  bull Nachteil Durchsatz verringert sich auf neue Blockgroszlige pro erzeugtem Block

                  (Quelle httpdewikipediaorgwikiBildCfb_encryptionpng)

                  (Quelle httpdewikipediaorgwikiBildCfb_decryptionpng)

                  329 CTR Mode CCM

                  Dieser Modus spielt fur DES keine Rolle Ist auch nicht in OpenSSL implementiert Aber die-se Betriebsart ist fur 128 Bit Verschlusselungen ist zum Beispiel vom BSI als sicher eingestuftworden rsquoDie Betriebsart der Zukunftrsquo

                  Wird zum Beispiel fur W-LAN Verschlusselung verwendet

                  25

                  Eingabe sind Klartext mit einen Zahler

                  ctr0 rarr Block rarr oplusT rarr c0ctr1 rarr Block rarr oplusp1 rarr c1ctr2 rarr Block rarr oplusp2 rarr c2ctr3 rarr Block rarr oplusp3 rarr c3

                  ctrn rarr Block rarr opluspn rarr cn

                  Standardisiert als rsquoSP 800-38crsquo

                  (N A P) mit N Zufallswerten A Assoziierte Daten P Klartext produziert Blocke B0 B1 Br

                  httpcsrcnistgovpublicationsnistpubs800-38CSP800-38C_updated-July20_

                  2007pdf

                  To do algorithmus uberarbeiten ubersetzen

                  1 Apply the formatting function to (N A P) to produce the blocks B0 B1 Br

                  2 Set Y0 = CIPHK(B0)

                  3 For i = 1 to r do Yi = CIPHK(Bi oplus Yiminus1)

                  4 Set T = MS BTlen(Yr)

                  5 Apply the counter generation function to generate the counter blocks Ctr0Ctr1 Ctrmwhere m = dPlen128e

                  6 For j = 0 to m do S j = CIPHK(Ctr j)

                  7 Set S = S 1||S 2|| ||S m

                  8 Return C =(P oplus MS BPlen(S )

                  )||(T oplus MS BTlen(S 0)

                  )

                  T stellt einen Prufwert dar

                  3210 TEA-Algorithmus

                  To do uberarbeiten

                  26

                  Nicht in OpenSSL implementiert Universitarer Algorithmus

                  (Quelle httpdewikipediaorgwikiBildTEA_InfoBox_Diagrampng)

                  Man sieht die Feistel Idee allerdings die grunen Quadrate sind Additionen modulo 64 Bit

                  To do erlautern Pfeilspitzen

                  Es gibt ein Extended TEA struktur recht ahnlich aber beim Algorithmus an der Stelle

                  Byte 0 28 minus 1 | 28ii

                  b middot k = (b middot k mod (28 + 1)) mod 28 Es gibt auch eine Inverseb middot K rarr c rarr c middot kprime = b

                  geht nur bei 22 + 1 24 + 1 28 + 1 216 + 1

                  27

                  3211 DES-X

                  In OpenSSL desx KK1K2

                  EncK(m oplus K2) oplus K1 = DES minus X(m)

                  c1 oplus c2 = EncK(m1 oplus K2) oplus EncK(m2 oplus K2)

                  Ist unsymetrisch Hat sich nicht so ganz durchgesetzt

                  33 IDEA International Data Encryption Algorithm

                  IDEA gilt als sehr sicher ist schneller als DES bei Hardwareimplementation tauchte zuerst alsPES auf Unterschied PES und IPES ist die untere XOR-Vertauschung (siehe Wikipedia Skiz-ze) die es im PES nicht gab War nur zur privaten Nutzung frei ansonsten patentiert weshalber nicht so verbreitet war IDEA verschlusselt 64-Bit Eingabe-Blocke in 64-Bit Ausgabe-Blockeund verwendet dabei einen 128-Bit Schlussel Der Algorithmus basiert im wesentlichen auf 8identischen Runden die den Runden einer Feistel-Chiffre ahnlich sind und einer abschlieszligendenTransformation der Ausgabe In jeder Runde werden 6 16-Bit Subschlussel in der Ausgaben-Transformation weitere 4 davon verwendet Samtliche Subschlussel werden aus dem Original-schlussel berechnet Die 64 Bit Eingabe jeder Runde werden dabei als 4 16-Bit-Blocke verar-beitet Der Algorithmus benutzt verschiedene algebraische Operationen

                  bull Polynomaddition mod 2 XOR (blau-verbraucht wenig Strom)

                  bull Addition mod 216 ADD (grun-verbraucht wenig Strom etwas Zeit - Uberlauf wirdignoriert)

                  bull Multiplikation mod 216︸︷︷︸prim

                  +1 MULT (rot-viel Strom)

                  Aus der Wikipedia (unter GNU Free Documentation License)

                  Der IDEA-Algorithmus (International Data Encryption Algorithm) wurde 1990 als ein Ge-meinschaftsprojekt zwischen der ETH Zurich von James L Massey und Xueija Lai und derAscom Systec AG entwickelt IDEA ist ein symmetrischer Algorithmus und gehort zu denBlockchiffren Der Algorithmus benutzt einen 128-Bit langen Schlussel (DES nur 64 Bit da-von sind 8 Bits fur den Paritats-Check vorgesehen so dass die eigentliche Schlussellange nur56 Bits betragt)

                  Bei der Verschlusselung wird der Klartext in 64 Bit groszlige Blocke unterteilt und derSchlussel in Teilstucke zu je 16 Bit zerlegt Die Verschlusselung geschieht durch Kombina-

                  28

                  tion der logischen Operation XOR der Addition modulo 216 und der Multiplikation modulo216+1 Die Kombination dieser drei Operationen aus unterschiedlichen algebraischen Gruppensoll ein hohes Maszlig an Sicherheit gewahrleisten

                  Das Verfahren ist dazu optimiert Angriffen durch differentielle Kryptoanalyse zu wider-stehen

                  Es gibt bei IDEA leider eine ganze Reihe von schwachen Schlusseln die sich in zweiKlassen einteilen lassen Die erste Klasse umfasst 232 schwache Schlussel Sie sind insofernschwach als man sie mit gewahltem Klartext nachweisen kann Danach ist ein Brute ForceAngriff selbst fur Privatpersonen mit alteren PCs machbar Die zweite Klasse umfasst sogar265 schwache Schlussel Bei diesen Schlusseln kann man mit nur 20 gewahlten Klartexten72 Bit des Schlussels ermitteln Die restlichen 56 Bit muss man mit Brute Force ermittelnAllerdings liegt die Wahrscheinlichkeit dafur einen schwachen Schlussel zu erwischen bei einszu 263 oder eins zu 9 Trillionen

                  Weil die Ascom Systec AG an der Entwicklung des Algorithmus beteiligt war halt siedie Patente fur IDEA In Europa verfallt der Patentschutz am 16052011 In den USA wirdder Algorithmus bereits ein Jahr fruher kostenlos nutzbar sein Da das Patent in der Schweizerteilt wurde greift das Patent auch in Deutschland unabhangig davon dass in DeutschlandSoftwarepatente nicht legal sind

                  Der Algorithmus beruht wesentlich darauf dass 216 + 1 eine Primzahl ist Deshalb lasst sichIDEA nicht auf andere Blocklaengen adaptieren

                  331 Schlusselauswahl

                  Aus den 128 Bit des ursprunglichen Schlussels werden in insgesamt 52 16-Bit Teilschlussel er-zeugt Dabei werden aus dem aktuellen Schlusselwert (initial der ursprungliche 128-Bit Schlussel)8 der Teilschlussel durch aufteilen gewonnen Dann wird der aktuelle Schlussel subsequent um25 Bit nach links rotiert und so je ein neuer aktueller Schlussel erzeugt der wieder zu Teil-schlusseln aufgeteilt wird - solange bis alle Teilschlussel belegt sind Es werden 6 middot 16-Bit ineiner Runde verbraucht in 8 Runden also 48 Teilschlussel Hinzu kommen 4 Teilschlussel dienach der letzten Runde fur weitere Operation verwendet werden Insgesamt werden also 52Teilschlussel mit je 16-Bit aus 128-Bit Rohschlussel erzeugt und auch verbraucht rarr 832-BitSchlusselmaterial

                  332 Funktionsweise

                  In jeder Runde r finden folgende Transformationen statt

                  1 X1 = X1 MULT Kr1 X4 = X4 MULT Kr

                  4 X2 = X2 ADD Kr2 X3 = X3 ADD Kr

                  3

                  2 t0 = Kr5 MULT (X1 XOR X3) t1 = Kr

                  6 MULT (t0 ADD (X2 XOR X4)) t2 = t0 ADD t1

                  29

                  3 X1 = X1 XOR t1 X4 = X4 XOR t2 a = X2 XOR t2 X2 = X3 XOR t1 X3 = a

                  Dabei sind X1 bis Xi die 16-Bit Blocke die aus der 64 Bit Eingabe gewonnen wurden Kri ist der

                  Teilschlussel mit der Nummer r middot 6 + i Die abschlieszligende Transformation ergibt sich wie folgtY1 = X1 MULT K9

                  1 Y4 = X4 MULT K94 Y2 = X3 ADD K9

                  2 Y3 = X2 ADD K93

                  Dabei sind die Yi 4 16-Bit Worter die die Ausgabe darstellen

                  (Quelle httpdewikipediaorgwikiBildInternational_Data_Encryption_Algorithm_InfoBox_Diagrampng)

                  bull In OpenSSL konnen IDEA Verschlusselungen mit folgenden Befehlen aufgerufen wer-den

                  ndash -ideandash -idea-cbcndash -idea-cfbndash -idea-ecbndash -idea-ofb

                  333 Pseudocode-multiplikation

                  To do als Pseudocode machen

                  30

                  if(a==0)return ((216 +1)-b) mod 216

                  if(a==0)return ((216 + 1)-a) mod 216

                  if(a middot b) mod 216 gt (a middot b) div 216 return (a middot b) mod 216 minus (a middot b) div 216

                  if(a middot b) mod 216 le (a middot b) div 216 return (216 + 1) + (a middot b) mod 216 minus (a middot b) div 216

                  wenn a==0 rArr a = 216 equiv minus1 mod 216

                  334 Schwachstellen

                  Bei schlechter implementation konnen die XOR-Berechnungen am Stromverbrauch erkanntwerden Es konnen Ruckschlusse auf bestimmte Werte (insbesondere Null) gemacht werdenNach 218 Testrechnungen kann der Klartext bestimmt werdenSolche Angriffe nennt man Seiten Kanal Atacken in diesem Fall ist der Stromverbrauch derSeitenkanal (Zeitverbrauch spielt beim Idea keine Rolle)Bei guter Implementation gilt aber der Algorithmus als sicher

                  To do Skizze Stromverbrauch

                  34 Blowfish

                  Blowfish ist eine sehr schnelle 64-Bit 16-Runden Block-Chiffre die 1993 von Bruce Schneiererfunden wurde Die Lange der Schlussel ist variabel zwischen 32 und 448 Bit Als Teilschlusselwerden aus dem Ausgangsschlussel eine P-Box mit 18 mal 32 Bit und 4 S-Boxen mit 256 mal32 Bit generiert (P1 P18) (S 1 S 4)

                  Blowfisch Algorithmus von Bruc Schreier ist vollig Patentfrei dies hat sehr zu seiner Verbrei-tung beigetragen

                  31

                  F

                  F

                  14 weitere Runden

                  (Quelle httpdewikipediaorgwikiBildBlowfish_structure_(de)svg)

                  P1 P18 die XOR auf den Klartext kommen

                  Schlussel-P1 P18 und

                  -S-Boxen

                  32

                  (Quelle httpenwikipediaorgwikiImageBlowfishFFunctionsvg)

                  S ist 256 32 Bit WerterArr 4 middot 256 middot 32 Werte rArr kann man sich nicht merken also wird P1 P18 S 1 S 4 werdenals Hexadezimalwerte von π gewahlt

                  (K)n oplus (P1 P18)

                  Der so initialisierte Algorithmus wird auf den Klartext 0 0︸ ︷︷ ︸64

                  angewendet Das Ergebnis ersetzt

                  (P1 P2) Der so initialisierte Algorithmus wird auf den Klartext 0 0︸ ︷︷ ︸

                  64

                  angewendet Das Ergebnis

                  ersetzt (Pi Pi+1) Der so initialisierte Algorithmus wird auf den Klartext 0 0︸ ︷︷ ︸64

                  angewendet

                  Das Ergebnis ersetzt (S 1 S 2)

                  Auf kosten eines sehr aufwendigen Schlusselmanagment wird ein schneller Algorithmus er-reicht Fur Prozessoren mit wenig Speicher unpraktisch

                  341 Initialisierung

                  Teilschlusselmanagement Sehr viele Teilschlussel werden aus wenig Schlusselmaterial gene-riert

                  1 P und S werden mit einer Hexadezimal-Expansion von Pi initialisiert

                  2 Der Schlussel als Sequenz von 32-Bit-Werten wird mittels XOR auf die P-Box addiertwobei er eventuell ldquowiederholtrdquo wird um die ganze Lange der Box abzudecken P1 oplus K1P2 oplus K2 P18 oplus K18

                  3 Sowohl die P-Box als auch die S-Boxen werden verschlusselt

                  33

                  bull Verschlussle mit Blowfish den Nullstring rarr 64-Bit Ausgabe = 2 32-Bit = neueP1 P2

                  bull Verschlussle mit Blowfish (Pi Pi+1) die Ausgabe verwende als (Pi+2 Pi+3) Wieder-hole diesen Schritt fur i von 1 bis zum Ende der P-Boxbull Anschlieszligend S 10 S 11 rarr S 12 S 13 Im gleichen Verfahren wie bei der P-Box

                  werden die S-Boxen verschlusselt

                  Insgesamt ist so ein langer Vorlauf notig bevor die eigentliche Verschlusselung der Daten be-ginnt

                  342 Verschlusselung

                  In jeder Runde r (insgesamt 16 Runden) wird folgendes Verfahren angewendet

                  1 Der 64-Bit Eingabeblock wird in zwei 32-Bit-Halften L und R zerlegt

                  2 L = L oplus Pr R = R oplus f (L)f (L) ist dabei folgendermaszligen charakterisiert Zunachst wird das Argument L als Konka-tenation von 4 8-Bit Vektoren a b c und d aufgefasst die als naturliche Zahlen zwischen0 und 255 verwendet werden

                  f (a b c d) = ((S 1a + S 2b mod 232 oplus S 3c) + S 4d mod 232

                  3 L und R werden vertauscht konkateniert und als Eingabe fur die nachste Runde verwen-det

                  Nach der letzten Runde wird noch R = R oplus P17 und L = L oplus P18 durchgefuhrt

                  Aus der Wikipedia (unter GNU Free Documentation License)

                  Blowfish ist ein sehr schneller und nicht patentierter Algorithmus der besonders auf 32-Bit-Prozessoren eine exzellente Performance bietet Ein weiterer Vorteil ist seine variableSchlussellange von 32 bis zu 448 Bit Die Blockgroszlige betragt 64 Bit

                  bull In OpenSSL konnen Blowfish Verschlusselungen mit folgenden Befehlen aufgerufen wer-den

                  ndash -bfndash -bf-cbcndash -bf-cfbndash -bf-ecbndash -bf-ofbndash -blowfish

                  34

                  35 AES Advanced Encryption Standard

                  351 Wiederholung-Byteoperation

                  Wir hatten folgende Byteoperationen kennengelernt

                  bull Multiplikation mod 256 bzw mod 257 ohne 0

                  bull Addition mod 256

                  bull XOR-Addition (oplus)

                  Die Operationen werden in der dementsprechenden Basisdarstellung modulo 256 durchgefuhrt

                  352 Uberblick

                  AES wurde im Standard FIPS 197 festgeschrieben

                  Aus der Wikipedia (unter GNU Free Documentation License)

                  AES ist eine Block-Chiffre dessen Blocklange und Schlussellange unabhangig voneinanderdie Werte 128 192 oder 256 Bit erhalten kann Jeder Block wird zunachst in eine zweidimen-sionale Tabelle mit vier Zeilen geschrieben dessen Zellen ein Byte groszlig sind Die Anzahl derSpalten variiert somit je nach Blockgroszlige von 4 (128 Bit) bis 8 (256 Bit) Zum Beispiel fur 16Byte werden die Bytes wie folgt eingetragen

                  1 5 9 132 6 10 143 7 11 154 8 12 16

                  Jeder Block wird nun nacheinander bestimmten Transformationen unterzogen Aber anstattjeden Block einmal mit dem Schlussel zu verschlusseln wendet AES verschiedene Teile desSchlussels nacheinander auf den Klartext-Block an Die Anzahl dieser Runden (r) variiertund ist von Schlussellange (k) und Blockgroszlige (b) abhangig Je nach Blocklange b undSchlussellange k wird die Anzahl der Runden bestimmt (10 12 oder 14)

                  r b=128 b=192 b=256k=128 10 12 14k=192 12 12 14k=256 14 14 14

                  S-BoxenEine Substitutionsbox (S-Box) dient als Basis fur eine monoalphabetische Verschlusselung

                  35

                  Sie ist meist als Array implementiert und gibt an welches Byte wie getauscht wird DieS-Box in AES basiert auf einem mathematischen Zusammenhang und ist somit fest imAlgorithmus implementiert Doch dies ist kein Schwachpunkt da die S-Box lediglich zur Ver-mischung der Bytes in Kombination mit weiteren Operationen und dem Schlussel genutzt wird

                  Ablauf

                  bull Schlusselexpansion (nach Fips-197 S23 Kapitel 52)

                  Der Schlussel rsquokeyrsquo wird auf den Anfang des expandierten Schlussels rsquowrsquo ubernommen(i lt Nk) Danach berechnet sich w[i] wie folgt

                  w[i] =

                  w[i minus 1] i mod Nk 0S ubWord(RotWord(w[i minus 1])) oplus Rcon i mod Nk = 0S ubWord(w[i minus 1]) Nk gt 6i (mod N)k = 4

                  (1)

                  w[i] = w[i] oplus w[i minus Nk] (2)

                  Der zugehorige Quelltext (Fips-197 entnommen)

                  KeyExpansion(byte key[4Nk] word w[Nb(Nr+1)] Nk)

                  begin

                  word temp

                  i = 0

                  while (i lt Nk)

                  w[i] = word(key[4i] key[4i+1] key[4i+2] key[4i+3])

                  i = i+1

                  end while

                  i = Nk

                  while (i lt Nb (Nr+1)]

                  temp = w[i-1]

                  if (i mod Nk = 0)

                  temp = SubWord(RotWord(temp)) xor Rcon[iNk]

                  else if (Nk gt 6 and i mod Nk = 4)

                  temp = SubWord(temp)

                  end if

                  w[i] = w[i-Nk] xor temp

                  i = i + 1

                  end while

                  end

                  36

                  Fur Beispiele siehe Fips-197 Appendix A1

                  bull Vorrunde

                  ndash KeyAddition (XOR-des Rundenschlussels)

                  bull Verschlusselungsrunden

                  ndash Substitution - Jedes Byte b wird ersetzt durch bprime = 1b wie bei Polynommultiplikati-

                  on Weiter wird jedes Byte als ein 8-dimensionaler Vektor aufgefasst und folgendeOperation angewendet

                  b1b2

                  b8

                  =

                  1 0 0 0 1 1 1 11 1 0 0 0 1 1 11 1 1 0 0 0 1 11 1 1 1 0 0 0 11 1 1 1 1 0 0 00 1 1 1 1 1 0 00 0 1 1 1 1 0 00 0 0 1 1 1 1 0

                  middot

                  b1b2

                  b8

                  +

                  c1c2

                  c8

                  ndash ShiftRow - Erste Zeil wird nicht verschoben die zweite Zeil um eins die dritteZeile um zwei die vierte um drei (siehe Wikipedia)

                  ndash MixColumn - Zu jeder Spalten

                  b1b2b3b4

                  des Blocks wird folgende Polynommultiplika-

                  tion durchgefuhrt

                  (b1x3 + b2x3 + b3x + b4) middot (03X3 + 04X2 + 01X + 02) mod (X4 + 1)

                  und die Koeffizienten in gleicher Weise wieder in die jeweilige Spalte eingetragenWobei (X4 + 1) das Inverse (0BX3 + 0DX2 + 09X + DE) hat

                  ndash KeyAddition

                  bull Schlussrunde

                  ndash Substitutionndash ShiftRowndash KeyAddition

                  Fur die Entschlusselung gehe die oben angegebene Reihenfolge ruckwarts durch Beachtedabei dass ShiftRow und Subst vertauschbar sind Bei ShiftRow wird in umgekehrter Weiseverschoben Ebenso sind KeyAdd und MultColumn vertauschbar wenn der Rundenschlusselmodifiziert wird (B(X) lowast (S (X) oplus K(X)) = S (X) lowast B(X) oplus B(X) lowast K(X) also ist der modifiziertSchlussel B(X) lowast K(X)) Die Entschlusselung entspricht also der Verschlusselung mit modifi-zierten Schlusseln

                  37

                  353 mathematische Grundlagen

                  Speziell der Schritt Mix-Column beinhaltet einige interessante mathematische Uberlegungen Ersoll zu einer moglichst effektiven Vermischung der 32 Bit in jeder Spalte fuhren die die Suchevon dem unverschlusselten Text ahnlichen Mustern im verschlusselten Text erschwert Dabeiwerden arithmetische Operationen aus zwei algebraischen Gruppen angewandt

                  1 Die Gruppe der Bytes F82 Jedes Byte b7b6b0 wird als ein Polynom b7 middot X7 + b6 middot X6 +

                  b0 middot X0 angesehen Diese Polynome konnen addiert und multipliziert werden Damitdabei der Werteraum des Byte nicht verlassen wird finden diese Operationen modulom(X) = X8 + X4 + X3 + X +1 statt m ist dabei irreduzibel es gilt also ggT (b(X)m(X)) = 1fur jedes Byte b Somit ist F2[X]m(X) ein Korper und die Multiplikation ist abgeschlos-sen Es gilt fur jedes Paar von Bytes b c eindeutig b middot c = d rarr dc = b Multiplikationenkonnen also eindeutig ruckgangig gemacht werden so dass eine Entschlusselung moglichistBei Zahlen die groszliger als m(X) sind werden also durch die modulo Operation die Koeffi-zienten von x4 x3 x1 x0 verandertBeispiel in Magma

                  Q = IntegerRing(2)

                  Pltxgt = PolynomialRing(Q)

                  f=xˆ7+1

                  g=xˆ3+xˆ2+x+1

                  fg

                  fg mod(xˆ8 +xˆ4+xˆ3+x+1)

                  IsPrime(xˆ8 +xˆ4+xˆ3+x+1)

                  Ausgabe

                  xˆ10 + xˆ9 + xˆ8 + xˆ7 + xˆ3 + xˆ2 + x + 1

                  xˆ7 + xˆ6 + xˆ3 + xˆ2 + x

                  true

                  2 Die Gruppe der Worter F4256 Die 4 Bytes einer Spalte w3w2w1w0 werden wieder als Po-

                  lynom aufgefasst w3 middot X3 + w2 middot X2 + w1 middot X + w0 Diese konnen wieder multipliziertund addiert werden wobei die arithmetischen Operationen auf den jeweiligen Bytes in F8

                  2stattfinden Die Operationen in F4

                  256 werden modulo M(X) = X4 + 1 ausgefuhrt M(X) istzwar nicht irreduzibel aber da der Algorithmus nur eine beschrankte Gruppe von Operan-den verwendet bleiben auch hier alle Operationen invertierbar

                  Mix-Column multipliziert (in F4256) nun jede Spalte mit c(X) = 3 middot X3 + X2 + X + 2 Die so

                  beschriebene lineare Funktion erreicht beweisbar eine groszlige Diffusion der Eingabe

                  38

                  bull In OpenSSL konnen AES Verschlusselungen mit folgenden Befehlen aufgerufen werden

                  ndash -aes-128-cbcndash -aes-128-cfbndash -aes-128-ecbndash -aes-128-ofbndash -aes-192-cbcndash -aes-192-cfbndash -aes-192-ecbndash -aes-192-ofbndash -aes-256-cbcndash -aes-256-cfbndash -aes-256-ecbndash -aes-256-ofbndash -aes128ndash -aes192ndash -aes256

                  36 RC4 Ronrsquos Cipher 4

                  Geheimes Chiffreverfahren mit Strom-Chiffre von Ron Rivest 1987 Entstehungsjahr 1994 imNetz aufgetaucht 1999 tauchte im Internet ein Draft ARCFOUR (ARC4) auf der die gleichenErgebnisse lieferte

                  Byte orientiert zwei Bytes m k dann wird berechnetm oplus k = cDer Algorithmus basiert auf S-Boxen (Permutationen)

                  mdashmdashSkizze Seite 2b ganz oben

                  PRG (Pseudo Random Generator)mdashmdashweitere Skizze

                  Initialisierung K = L Bytes als Schlussel s[i] = i (identische Permutation)L = 1255 fur RC4 mit 40-Bit L = 5 mit 64-Bit L = 8 mit 128-Bit L = 16j = 0 fur i = 0255rarr j = ( j + s[i] + K[ j mod L]) mod 256

                  Problem K-Masterkeyrarr salted key Initialwert (frei bekannt) HashInitial(K) = Kaktuell rarr RC4

                  39

                  Anfangsstucke von PRG RC4 sind nicht rdquorichtig zufalligldquo verraten viel uber KaktuellRegel fur RC4 Die ersten 256-Byte wegschmeiszligen

                  Aus der Wikipedia (unter GNU Free Documentation License)

                  RC4 (Ronrsquos Cipher 4) ist ein fur Software optimierter Stromchiffrierer welcher zur Ver-schlusselung von Daten eingesetzt wird Er wurde 1987 von Ronald L Rivest fur RSA DataSecurity Inc (heute RSA Security) entwickelt

                  Der Algorithmus war sieben Jahre lang geheim (ldquosecurity by obscurityrdquo) bis 1994 derQuellcode anonym veroffentlicht wurde

                  RC4 hat im Gegensatz zu DES eine variable Schlussellange Die Schlussellange kann biszu 2048 Bit betragen RC4 verschlusselt immer ein Byte auf einmal

                  Er besteht aus einer so genannten S-Box die sich wahrend der Verschlusselung fortlau-fend andert Diese wird durch ein Passwort initialisiert das fur jede Verschlusselung einmaligsein muss Jedes Klartextzeichen wird XOR mit einem bestimmten vom Paszligwort abhangi-gen Zeichen aus der S-BOX verknupft Theoretisch sind somit ca 2 hoch 1700 verschiedeneZustande moglich

                  Der Algorithmus ist sehr kompakt und funf- bis zehnmal schneller als der weitverbreite-te DES Deshalb findet der RC4 Algorithmus in einigen Echtzeit-Systemen Anwendung wiebeispielsweise Mobilfunk (Cellular Digital Packet Data) SSH (Secure Shell) WLAN (Wire-less LAN) oder den Dateiverschlusselungs-Programmen SecurePC und Cryptext Die Verar-beitungsgeschwindigkeit des DES ist jedoch selbst in kleinsten Mikrokontrollern meist ausrei-chend Der Schlussel beim DES und anderen Blockchiffren wie dem AES (CBC-Mode) kannim Gegensatz zum RC4 auch mehrfach verwendet werden Vergleichbare Stromchiffren wieSEAL sind vergleichbar schnell und gelten als sicher

                  Aus der Wikipedia (unter GNU Free Documentation License)

                  ubersetzt aus dem Englischen nach httpenwikipediaorgwikiRC4RC4 (oder ARCFOUR) ist die am weitesten verbreitete Stromchiffre und wird in vielen be-kannten Protokollen beispielsweise SSL oder WEP verwendet Trotzdem entspricht RC4 nichtmehr dem heutigen Sicherheitsstandard und manche Verwendungsweisen von RC4 fuhren zusehr unsicheren Kryptosystemen (zB WEP) Daher wird es nicht fur die Verwendung in neuenSystemen empfohlen Allerdings gibt es auch RC4-basierte Systeme die sicher genug fur denpraktischen Gebrauch sind

                  361 Geschichte

                  Aus der Wikipedia (unter GNU Free Documentation License)

                  ubersetzt aus dem Englischen nach httpenwikipediaorgwikiRC4RC4 wurde 1987 von Ron Rivest von RSA Security erfunden Offiziell bedeutet die Abkurzung

                  40

                  ldquoRivest Cipher 4rdquo alternativ wird sie aber als ldquoRonrsquos Coderdquo verstanden (s auch die anderenRC-Algorithmen) Zunachst war RC4 ein Betriebsgeheimnis jedoch wurde im September1994 eine Beschreibung anonym auf der ldquoCypherpunksrdquo Mailingiste gepostet Es wurde baldin die scicrypt newsgroup weitergepostet und von dort auf viele Internet-Seiten verbreitetNachdem der Algorithmus nun bekannt ist ist er kein Betriebsgeheimnis mehr Der NameldquoRC4rdquo unterliegt jedoch weiterhin dem Markenschutz Zur Zeit sieht es so aus als seien ldquoinof-fiziellerdquo Implementationen zwar legal konnen aber nicht den Namen ldquoRC4rdquo verwenden Umdieses Problem zu umgehen wird RC4 oft als ldquoARCFOURrdquo bezeichnet RC4 wird inzwischenin einigen weit verbreiteten Verschlusselungsprotokollen und Standards unter anderem WEPund WPA fur WLAN Karten und SSL verwendet

                  362 Beschreibung

                  Aus der Wikipedia (unter GNU Free Documentation License)

                  ubersetzt aus dem Englischen nach httpenwikipediaorgwikiRC4RC4 generiert einen pseudo-zufalligen Bitstrom (einen ldquoSchlusselstromrdquo) der bei der Ver-schlusselung mit dem Klartext mittels XOR verknupft wird Die Entschlusselung funktioniertgenauso Um den Schlusselstrom zu generieren benutzt die Chiffre einen internen Zustand deraus zwei Teilen besteht

                  1 eine Permutation aller 256 moglichen Bytes (wird im Folgenden als S bezeichnet)

                  2 zwei 8-Bit Index-Zeiger (mit i und j bezeichnet)

                  Die Permutation wird mit einem Schlussel von variabler Lange ublicherweise zwischen 40und 256 Bit initialisiert wobei der Schlusselerzeugungs-Algorithmus verwendet wird An-schlieszligend wird der Bit Strom durch den Pseudo-Zufalls-Algorithmus generiert

                  363 Der Pseudo-Zufalls-Algorithmus

                  Aus der Wikipedia (unter GNU Free Documentation License)

                  ubersetzt aus dem Englischen nach httpenwikipediaorgwikiRC4In jeder Iteration wird der Zustand verandert und ein Byte des Schlusselstroms ausgegebenDabei wird i inkrementiert der Wert von S an der Stelle i auf j addiert S [i] und S [ j] vertauschtund der Wert von S an der Stelle S [i]+S [ j] mod 256 ausgegeben Jeder Wert von S wird dabeimindestens einmal alle 256 Iterationen vertauscht In Pseudocode lasst sich der Algorithmusfolgendermaszligen darstellen

                  i = 0

                  j = 0

                  41

                  while GeneratingOutput

                  i = (i + 1) mod 256

                  j = (j + S[i]) mod 256

                  swap (S[i] S[j])

                  output (S[(S[i] + S[j]) mod 256])

                  (Wobei i offentlich ist und j geheim ist)

                  i j

                  0 1 2 S[i]+S[j] i j 253 254 255

                  S

                  S[i] S[j]

                  S[i]+S[j]K

                  (Quelle httpdewikipediaorgwikiBildRC4svg)

                  364 Der Schlusselerzeugungs-Algorithmus

                  Aus der Wikipedia (unter GNU Free Documentation License)

                  ubersetzt aus dem Englischen nach httpenwikipediaorgwikiRC4Der Schlusselerzeugungs-Algorithmus wird benutzt um die Permutation in S zu initialisierenl wird als die Zahl der Bytes des Schlussels definiert und kann zwischen 1 und 255 liegenublicherweise liegt l zwischen 5 und 32 so dass eine Schlussellange von 40 bis 128 Bit zu-stande kommt Zunachst wird S mit der Identitatspermutation initialisiert Anschlieszligend wirdS in 256 Iterationen mit einem Algorithmus der dem Pseudo-Zufalls-Algorithmus ahnelt aberzusatzlich die Schlusselbits hineinmischt weiterverarbeitet Der folgende Pseudocode drucktdies aus

                  for i from 0 to 255

                  S[i] = i

                  j = 0

                  for i from 0 to 255

                  42

                  j = (j + S[i] + key[i mod l]) mod 256

                  swap(S[i]S[j])

                  365 Implementation

                  Aus der Wikipedia (unter GNU Free Documentation License)

                  ubersetzt aus dem Englischen nach httpenwikipediaorgwikiRC4Viele Stromchiffren basieren auf ldquolinear feedback shift registersrdquo und sind damit sehr effizientin Hardware aber weniger effizient in Software implementierbar RC4 hat dieses Manko nichtund kommt zudem ausschlieszliglich mit 8-Bit Operationen aus Damit ist RC4 ideal fur Software-Implementationen

                  366 Sicherheit

                  Aus der Wikipedia (unter GNU Free Documentation License)

                  ubersetzt aus dem Englischen nach httpenwikipediaorgwikiRC4RC4 verfehlt die ublichen Standards fur sichere Chiffren an mehreren Stellen und wird somitnicht zur Verwendung in neuen Anwendungen empfohlen Der von RC4 generierte Schlussel-strom tendiert dazu bestimmte Sequenzen von Bytes haufiger zu enthalten als andere undist somit nicht wirklich zufallig Der beste Angriff der auf diesem Sachverhalt beruht wur-de von Fluhrer und McGrew entdeckt und kann aus einem Gigabyte verschlusseltem Textden Schlusselstrom berechnen Zudem verwendet RC4 keine ldquononcerdquo einen fur jeden Klar-text neu generierten Zusatzschlussel Eine solche ldquononcerdquo wird im allgemeinen als zentralesSicherheitskriterium betrachtet da so gewahrleistet ist dass eine zweimal nacheinander ver-schlusselte Nachricht zwei verschiedene verschluesselte Texte erzeugt Naturlich kann einesolche ldquononcerdquo im Nachhinein aufgesetzt werden indem als RC4-Schlussel nicht der eigentli-che Benutzerschlussel sondern beispielsweise ein Hashwert des Schlussels mit einer nonce ver-wendet wird Die einfachere Methode den Schlussel nur mit der nonce zu konkatenieren dievon einigen Anwendungen genutzt wird fuhrt aufgrund des schwachen Schlusselerzeugungs-Algorithmus wieder zu neuen Problemen

                  To do anmerkungen zu k=1-Angriffsmoglichkeiten

                  43

                  367 Fluhrer Mantin und Shamir Angriff

                  Aus der Wikipedia (unter GNU Free Documentation License)

                  ubersetzt aus dem Englischen nach httpenwikipediaorgwikiRC42001 wurde eine erstaunliche Entdeckung gemacht Die statistische Verteilung der ersten paarBytes des Schlusselstroms ist uber alle RC4-Schlussel stark nicht-zufallig und enthalt Infor-mationen uber den Schlussel selbst Falls die nonce lediglich mit dem Schlussel konkateniertwurde (oder gar keine nonce verwendet wurde) kann der Schlussel durch die Analyse einergroszligen Zahl verschlusselter Nachrichten herausgefunden werden Mit Hilfe dieses Sachver-haltes und einiger damit zusammenhangender Effekte wurde dann die WEP-Verschlusselung(ldquowireless equivalent privacyrdquo) die in 80211 WLAN-Netzen verwendet wird gebrochen Diesfuhrte zu einer Suche nach einem Ersatz fur WEP und letztlich zu den Bemuhungen um 80211isowie zu WPA

                  Der geschilderte Angriff kann naturlich umgangen werden wenn die ersten (ca 256) Bytes desSchlusselstroms verworfen werden

                  bull In OpenSSL konnen RC4 Verschlusselungen mit folgenden Befehlen aufgerufen werden

                  ndash -rc4ndash -rc4-40

                  37 RC5 Ronrsquos Cipher 5

                  Die zentrale Neuerung des RC5-Algorithmus sind datenabhangige Rotationen bei denen einZwischenergebnis um eine Zahl von Bytes rotiert wird die weder fest vorgegeben noch vomSchlussel bestimmt sondern aus einem Teil des Klartextes berechnet ist Diese Operation wirdfolgendermaszligen notiert a ltltlt b bedeutet dass a um b Bits nach links rotiert wird Ein weitererinteressanter Aspekt ist die universelle Parametrisierbarkeit des Algorithmus Sowohl die Langeder Worter w als auch die Zahl der Runden r und die Lange des Schlussels b sind wahlbar sodass der Algorithmus offen ist fur zukunftige Bedurfnisse die weitere Operation + wird nun alsAddition modulo 2w definiert In openssl ist RC5 mit den Parameters w = 32 r = 12 b = 16 im-plementiert Samtliche Algorithmen gehen im folgenden von einer little-endian Byte-Anordnungaus Der Algorithmus besteht aus einem Verschlusselungs- und einem Schlusselexpansions-Teil

                  371 Verschlusselung

                  Gegeben ein auf t = 2(r + 1) Worter expandierter Schlussel S und ein aus zwei Wortern A undB bestehender Eingabeblock gibt folgender Pseudocode den Verschlusselungs-Algorithmus an

                  44

                  A = A + S[0]

                  b = B + S[1]

                  for i = 1 to r do

                  A = ((A XOR B) ltltlt B) + S[2i]

                  B = ((B XOR A) ltltlt A) + S[2i + 1]

                  Die Entschlusselung lauft dementsprechend folgendermaszligen ab

                  for i = r downto 1 do

                  B = ((B - S[2i + 1]) gtgtgt A) XOR A

                  A = ((A - S[2i]) gtgtgt B) XOR B

                  A = A - S[0]

                  B = B - S[1]

                  372 Schlusselexpansion

                  Zunachst wird S mit einer Kombination aus e und ϕ (dem goldenen Schnitt) initialisiert und derSchlussel in ein Array L kopiert das wortweise indiziert wird Anschlieszligend wird mit folgendemAlgorithmus der Schlussel in S hinein gemischt

                  i = j = 0

                  A = B = 0

                  do 3 max(t 8bw) times

                  A = S[i] = (S[i] + A + B) ltltlt 3

                  B = L[j] = (L[j] + A + B) ltltlt (A + B)

                  i = (i+1) mod t

                  j = (j+1) mod (8bw)

                  38 GOST 28147-89 Gosudarstvennyi Standard Soyuza SSR nicht inOpenSSL

                  GOST ist das russische Normungsinstitut vergleichbar mit DIN oder ANSI

                  (siehe auch httpenwikipediaorgwikiGOST_(block_cipher))

                  Gost-Chiffre ist eine relativ simple Feistel-Chiffre auf 64 Bit mit 32 Runden 256 Bit Schlussellangeund 8 S-Boxen von zusammen 512 Bit die - da sie geheim gehalten werden konnen - alsSchlusselerweiterung gelten konnen Die Rundenfunktion besteht aus der Addition eines 32-Bit-Substrings des Schlussels der Anwendung der S-Boxen (parallel da jede S-Box 4 Bit alsEin- und Ausgabe hat) und einer 11-Bit-Rotation Die Sicherheit des Algorithmus beruht auf

                  45

                  der Verwendung sehr langer Schlussel geheimer S-Boxen und der gegenuber DES verdoppeltenRundenzahl In jeder einzelnen Runde wird jedoch ein geringerer Durchmischungseffekt erreichtals bei DES-Runden

                  Geheimer Algorithmus S-Boxen auch geheim

                  (Quelle httpenwikipediaorgwikiImageGOSTDiagrampng)

                  46

                  Feistel Chiffre

                  Addition Substitution Rotation

                  Die S-Boxen sind Gruppenschlussel die extra zugewiesen werden16 4 Bit Werte werden Permutiert 32 RundenSchlusselmaterial 32 die 256 Bit werden jeweils in 8 32 Bit Unterschlussel eingeteilt wobei dieSchlussel wie folgt verwendet werden1234567123456712345677654321

                  (Dann einmal S-Box einmal rotieren und dann Feistelschritt)

                  Die Sicherheit steckt in den 32 Runden Der Algorithmus wurde bisher nicht geknackt

                  39 FazitWie konnte bei einen Symmetrischen Algorithmus die Sicherheiterhohen

                  (Das ware zB fur eine Interessante Frage fur eine Klausur)

                  bull komplexes Schlusselmanagment

                  bull viele Runden

                  bull komplexe vermischung pro Runde (AES)

                  4 Asymmetrische Verschlusselungsverfahren

                  41 Einfuhrung

                  AliceBob Chris Dave Eve

                  Alice BobkA kA

                  Enck1(M) = C minusrarr M = Deck2

                  Verschlusselungsverfahren kA kB EncDecAus kA kann kB nicht bestimmt werden dann kann kA sogar offentlich sein Ziel ist es dass je-

                  47

                  der verschlusseln kann aber nur einer kann (in realistischer Zeit) entschlusseln Solche Verfah-ren mit offentlichen Schlussel werden auch asymmetrisch genannt Mit groszligen Aufwand kannnaturlich der Schlussel immer noch bestimmt werden Man wahlt einen Text mprime Verschlusseltihn (Enck(mprime) = cprime) und probiert dann solange alle k durch bis man Deck(cprime) = mprime erhalt

                  Das kB kann aber immer bestimmt werden

                  for k_B =00000 to FFFF

                  M_0 C_0 sind gegeben

                  Dec_k_B(C_0) = M_0

                  Wichtig ist nur das dies nicht in rsquovernunftigerrsquo Zeit gemacht werden kann

                  To do text sortieren

                  Klartext minusrarr E(K) ChiffretextKlartext D(Kprime)larrminus ChiffretextE(K p) = c und zu jedem KexistKprime mit D(Kprime c) = p und K wird offentlich gemachtDie Berechnung von Kprime aus K ist schwer Bruteforce ist nicht ausgeschlossen die Bestimmungvon K aus Kprime ist leicht

                  leichtEnckA DeckB (kA kB)minusErzeugung

                  schweraus kA allein kB erzeugen

                  411 Beispiel

                  Bob mochte von Alice verschlusselte Nachrichten lesen Bob uberlegt sich ein asymmetrischesVerfahren wahlt Kprime berechnet K und veroffentlicht KAlice nimmt K berechnet E(K p) = c und sendet c an BobBob berechnet aus c mit Kprime das ursprungliche p

                  42 Geschichte

                  Whitfield Diffie New Directions in Cryptographie Idee wurde auch schon mal von Ralf Merkelveroffentlich Britische Geheimdienst hatt vorher die Idee auch schon mal

                  48

                  Aus der Wikipedia (unter GNU Free Documentation License)

                  Asymmetrische Verfahren sind ein relativ neues Gebiet der Kryptografie Eine wichtige Vorar-beit fur die asymmetrischen Verfahren sind die Arbeiten von Whitfield Diffie Martin Hellmanund Ralph Merkle zum geheimen Schlusselaustausch Anfang der 1970er Jahre Im Sommer1975 veroffentlichten Diffie und Hellman eine Idee zur asymmetrischen Verschlusselung oh-ne jedoch ein genaues Verfahren zu kennen

                  Anfang der 1970er Jahre wurden von Ellis Cocks und Williamson ein dem spateren Ver-fahren von Diffie-Hellman ahnliches asymmetrisches Verfahren entwickelt welches aber inseiner wirtschaftlichen Bedeutung nicht erkannt und aus Geheimhaltungsgrunden nicht (wis-senschaftlich) publiziert und auch nicht zum Patent angemeldet wurde Alle drei waren Mitar-beiter des englischen Government Communications Headquarters

                  Der Durchbruch gelang Ronald L Rivest Adi Shamir und Leonard M Adleman die 1977das RSA-Verfahren entwickelten Es gilt bis heute als sicheres Verfahren und hat auszligerdem dengroszligen Vorteil in beiden Richtungen eingesetzt werden zu konnen

                  43 Einige Theoretische Grundlagen

                  431 Kleiner Fermat (oder kleiner Fermatrsquoscher Satz)

                  Fur beliebige Primzahlen p gilt

                  n(pminus1) = 1 mod p fur alle n isin Z

                  To do Wikipedia verlinken

                  432 Euklidischer Algorithmus

                  To do erganzen Erweiterter Euklidischer Algorithmus fehlerhaft

                  Aus der Wikipedia (unter GNU Free Documentation License)

                  Beschreibung durch PseudocodeIm Folgenden wird der moderne Euklidische Algorithmus sowohl in einer rekursiven als

                  auch einer iterativen Variante beschrieben Dabei sind a und b jeweils die beiden Zahlen derengroszligter gemeinsamer Teiler berechnet werden soll

                  Rekursive Variante

                  49

                  EUCLID(ab)

                  1 wenn b = 0

                  2 dann return a

                  3 sonst return EUCLID(b a mod b)

                  Iterative Variante

                  EUCLID(ab)

                  1 solange b = 0

                  2 r = a mod b

                  3 a = b

                  4 b = r

                  5 return a

                  FunktionsweiseIn jedem Schritt des Algorithmus wird eine Division mit Rest ausgefuhrt riminus1 = qi+1 middot

                  ri + ri+1 0 le ri+1 lt ri Die Division mit Rest hat die Eigenschaft dass ggT(riminus1 ri) =

                  ggT(ri ri+1) giltIm letzten Schritt des Algorithmus rnminus1 = qn+1 middot rn + 0 ist rn+1 = 0 und es gilt deshalb

                  ggT(rnminus1 rn) = ggT(rn 0) = rn

                  Da im ersten Schritt riminus1 = a und ri = b war ist ggT(a b) = rn

                  (Quelle httpdewikipediaorgwikiEuklidischer_Algorithmus)

                  (Denn es gilt ggT(a b) = ggT(b r))

                  Aus der Wikipedia (unter GNU Free Documentation License)

                  Man kann diese Rekursion in folgende Abfolge von Schritten fur den erweiterten euklidi-

                  schen Algorithmus fassen Erhalte rdquoardquo und rdquobrdquo als EingabeSetze rdquok=0rdquo r0 = a r1 = b s0 = 1 und s1 = 0WiederholeErhohe rdquokrdquo um einsBestimme den ganzzahligen Quotienten qk = rkminus1 div rkSetze rk+1 = rkminus1 minus qk middot rk und sk+1 = skminus1 minus qk middot skbis rk+1 = 0 giltGib den Rest rk = ggT(a b) und die Zahl sk mit ggT(a b) equiv sk middot a (mod b) zuruckJeder Schritt enthalt implizit auch einen Multiplikator tk = (rk minus sk middot a) div b wobei diese

                  Division keinen Rest lasst Die Folge (tk)k kann auch explizit bestimmt werden es gelten t0 =

                  0 t1 = 1 und tkminus1 equiv qk middottk+tk+1 Nach dem letzten Schritt ergibt sich nun ggT(a b) = sk middota+tk middotbDer Ubersicht halber werden beim handischen Rechnen auch noch die Hilfsfolgen (ak =

                  rkminus1)k und (bk = rk)k sowie (uk = skminus1)k sowie (vk = tkminus1)k mitgefuhrt

                  50

                  Zur Berechnung des Inversen modulo einer Restklasse benotigt man die tk aber nicht und kannsie ignorieren

                  Aus der Wikipedia (unter GNU Free Documentation License)

                  Rekursive VarianteFur den erweiterten euklidischen Algorithmus existiert auch eine rekursive Variante die

                  durch den folgenden Pseudocode gegeben istab zwei Zahlen fur die der erweiterte euklidische Algorithmus durchgefuhrt wirdrdquoextended euclidrdquo(ab)1 rdquorsquowennrdquorsquo b = 02 rdquorsquodann returnrdquorsquo (a10)3 (drsquosrsquotrsquo)larr rdquoextended euclidrdquo(b a mod b)4 (dst)larr (drsquotrsquosrsquo - floor(ab)trsquo)5 rdquorsquoreturnrdquorsquo (dst)

                  (Quelle httpdewikipediaorgwikiErweiterter_euklidischer_Algorithmus)

                  Wenn n mod m teilerfremd sind dann existiert so ein Exponent f so dass

                  n f equiv 1 mod m

                  ist

                  Wenn m = m1 middotm2 ein Produkt von zwei verschiedenen Primzahlen ist dann ist fur alle n die zum teilerfremd sind

                  n(m1minus1)middot(m2minus1) equiv 1 mod m

                  Denn es ist nm1minus1 equiv 1 mod m1 und nm2minus1 equiv 1 mod m2 Dann ist n(m1minus1)middot(m2minus1) minus 1 durch m1und m2 teilbar Denn nach dem Chinesischen Restsatz gilt n(m1minus1)middot(m2minus1) equiv 1 mod m1 middot m2 undwenn eine Zahl durch m1 middot m2 teilbar ist so auch durch m1 und m2

                  433 Beispiel

                  In Magma

                  p=17 q=23

                  m=(p-1)(q-1)

                  e=19

                  F=IntegerRing(m)

                  51

                  d=(Fe)ˆ(-1)

                  d=IntegerRing()d

                  19315 div 16

                  19315 -374 16

                  n=pq

                  K=IntegerRing(n)

                  N=100

                  C=(KN)ˆ(e) Verschlusseln

                  C

                  Cˆd

                  10019 equiv 349 mod 349

                  349352 equiv 100 mod 391

                  10019middot315 = 100 mod 17

                  10019middot315 = 100 mod 23

                  10019middot315 equiv 100374middot16+1 mod 17 equiv 100 middot (10016)374︸ ︷︷ ︸=1

                  mod 17

                  To do Analog von Mathias kopieren

                  To do Wiederholung einsortieren

                  Wiederholung

                  Nachricht n

                  ne equiv c( mod m)

                  Chiffre c

                  cd equiv (ne)d = ndmiddote = n1+k(pminus1)(qminus1) = n middot (n(pminus1)(qminus1))k︸ ︷︷ ︸=1

                  equiv n middot 1k = n mod m

                  nminusrarr

                  dm cminusrarr

                  em n

                  52

                  aus (em) kann man (dm) nicht leicht bestimmen weil man die Zerlegung m = p middotq nicht kenntWer p q kennt kann aus den einen den anderen Schlussel berechnen Wer de kennt kann pqbestimmen

                  Verschlusselung kann jeder ausfuhren offentlicher Schlussel (em) Entschlusselung bleibt demvorbehalten der das geheime d (oder auch pq) kennt

                  schnelles Potenzieren Ist die Berechung von ne ck ausreichend schnell

                  m 1000 Bit pq-150 Dezimalstellen

                  ne hat sehr sehr viele Dezimalstellen

                  Deshalb berechnet man erst modulo und potenziert dann mit e

                  (n mod m)e (c mod m)d

                  Beispiele n19 = n middot n middot middot n︸ ︷︷ ︸19 Multiplika-tionen

                  oder man rechnet

                  n n2 n4 n8 n16 4 Quadrierungen

                  n16 middot n2 middot n = n19

                  so auch bei n1025 = n n2 n1024 n middot n1024 wo nur 11 Multiplikationen gebraucht werden

                  Pseudocode nex=1

                  repeat

                  if (e = 1 mod 2)x = x middot n(prime mod mprime)

                  n = n2(prime mod mprime)

                  e = ediv2

                  until e==1

                  k = (nprime)0 middot xprime

                  x = k = ne

                  53

                  44 RSA Rivest Shamir Adleman

                  Bei dem Versuch die Idee der Asymmetrischen Kryptografie zu wiederlegen wurde RSA entwi-ckelt

                  RSA beruht auf der Schwierigkeit n = p middotq in seine Primfaktoren zu zerlegen Verschlusseln undEntschlusseln ist Potenzieren modulo n

                  D E = id

                  p = (pe)d mod n

                  p = pemiddotd mod n

                  e middot d = 1 mod (p minus 1) middot (q minus 1)

                  E(e n) ist offentlich und D(d n) geheim Die Bestimmung von e d n aus p q ist leicht GenauerDie Bestimmung von e aus (d n) ist leicht die Bestimmung von d aus (e n) ist schwer weilFaktorisierung n = p middotq (vermutlich) schwierig ist ist Bestimmung von d aus (e n) auch schwerWer p und q aus n berechnen kann kann auch d bestimmen (Euklid)

                  Wer e und d kennt kann p und q bestimmen (dazu waren Erlauterungen in der Vorlesung)

                  441 Funktionsweise des RSA-Verfahrens

                  (nach wwwcryptooldedownloadsCrypToolScript 1 3 04 depdf)Man kann die Einzelschritte zur Durchfuhrung des RSA-Verfahren folgendermaszligen beschrei-ben Schritt 1 bis 3 sind die Schlusselerzeugung Schritt 4 ist die Verschlusselung 5 die Ent-schlusselung

                  1 Wahle zufallig 2 verschiedene Primzahlen p und q und berechne n = p middot q Der Wert nwird als RSA-Modul bezeichnet

                  2 Wahle zufallig e isin 2 n minus 1 so dass gilt e ist teilerfremd zu J(n) = (p minus 1) middot (q minus 1)Zum Beispiel kann man e so wahlen dass gilt max(p q) lt e lt J(n) minus 1 Danach kannman p und q ldquowegwerfenrdquo

                  3 Wahle d isin 1 n minus 1 mit e middot d = 1 mod J(n) dh d ist die multiplikative Inverse zu emodulo J(n) Danach kann man J(n) ldquowegwerfenrdquo

                  bull (n e) ist der offentliche Schlussel Pbull (n d) ist der geheime Schlussel S (es ist nur d geheim zu halten)

                  4 Verschlusselung des Klartextes (bzw seiner Blocke) M isin 1 n minus 1

                  C = E((n e) M) = Me mod n

                  54

                  5 Entschlusselung des Chiffretextes (bzw seiner Blocke) C isin 1 n minus 1

                  M = D((n d) C) = Cd mod n

                  442 Beweis der Funktionsweise

                  (nach wwwcryptooldedownloadsCrypToolScript 1 3 04 depdf)Fur Schlusselpaare (n e) und (n d) die die in den Schritten 1 bis 3 des RSA-Verfahrens festge-legten Eigenschaften besitzen muss fur alle M lt n gelten M equiv (Me)d mod n wobei (Me)d =

                  Memiddotd Das heiszligt der oben angegebene Dechiffrieralgorithmus arbeitet korrekt Wir zeigen das in3 Schritten

                  1 Im ersten Schritt zeigen wir Memiddotd equiv M mod p Dies ergibt sich aus den Voraussetzungenund dem Satz von Fermat Da n = p middot q und J(p middot q) = (p minus 1) middot (q minus 1) und da e undd so gewahlt sind dass e middot d equiv 1 mod J(n) gibt es eine ganze Zahl k so dass gilte middot d = 1 + k middot (p minus 1) middot (q minus 1)

                  Memiddotd equiv M1+kmiddotJ(n) equiv M middot MkmiddotJ(n) equiv M middot Mkmiddot(pminus1)middot(qminus1) mod p

                  equiv M middot (Mpminus1)kmiddot(qminus1) mod p

                  (aufgrund des kleinen Fermat Mpminus1 equiv 1 mod p)

                  equiv M middot (1)kmiddot(qminus1) mod p

                  equiv M mod p

                  Die Voraussetzung fur die Anwendung des kleinen Fermat war dass M und p teilerfremdsind Da das im allgemeinen nicht gilt mussen wir noch betrachten was ist wenn M undp nicht teilerfremd sind da p eine Primzahl ist muss dann notwendigerweise p ein Teilervon M sein Das heiszligt aber

                  M equiv 0 mod p

                  Wenn p die Zahl M teilt so teilt p erst recht Memiddotd Also ist auch

                  Memiddotd equiv 0 mod p

                  Da p sowohl M als auch Memiddotd teilt teilt es auch ihre Differenz (Memiddotd minus M) equiv 0 mod pUnd damit gilt auch in diesem Spezialfall unsere zu beweisende Behauptung

                  2 Vollig analog beweist man Memiddotd equiv M mod q

                  3 Nun fuhren wir die Behauptungen der ersten beiden Schritte zusammen fur n = p middot qum zu zeigen Memiddotd equiv M mod n fur alle M lt n Nach den ersten beiden Schritten gilt(Memiddotd minus M) equiv 0 mod p und (Memiddotd minus M) equiv 0 mod q also teilen p und q jeweils dieselbeZahl z = (Memiddotd minus M) Da p und q verschiedenen Primzahlen sind muss dann auch ihrProdukt diese Zahl z teilen Also gilt

                  (Memiddotd minus M) equiv 0 mod p middot q

                  55

                  oderMemiddotd equiv M mod p middot q

                  oderMemiddotd equiv M mod n

                  45 Schwachen von RSA

                  bull Wenn N Nachrichten aus einer kleinen Menge gewahlt werden ist RSA unsicher

                  for Nprime do (Nprime)e = C1 if C1 = C then N = Nprime

                  bull Wenn N und e zu klein sind ist RSA unsicher dass heiszligt wenn Ne als Zahl kleiner als nist so das nich modulo gekurzt wird so kann man einfach eradicc

                  bull Angriff mit frei gewahlten Chiffretext angenommen man hat Zugriff auf die Verschlusse-lungsmaschine so dass man mit selber vorgebenen Cprime Nprime berechnen kann (Cprime minusrarr Nprime)

                  Re = S mod n S d = R mod n Cprime = S middotC

                  (Cprime)d = S d middotCd = R middot N︸︷︷︸Nrsquo

                  mod n

                  Nprime middot Rminus1 = N mod n

                  N1 minusrarr C1

                  N2 minusrarr C2

                  rArr N1 middot N2 minusrarr C1 middotC2

                  bull Jeder Benutzer braucht ein eigenes n dass heiszligt man muss fur jeden Benutzer die entspre-chenden Primzahlen suchen allerdings ist dies aufwendig

                  bull RSA ist extrem langsam im Vergleich zu symmetrischen Verfahren openssl speed rsabzw speed aes-256

                  46 Fuktionen in OpenSSL

                  461 genrsa

                  genrsa erzeugt Schlusselpaare fur RSASchlussellange num_bits frei wahlbar wobei es einen Bug bei kleinen Werten gibt (weniger als60 Bit) so kurze Schlussel aber auch nicht verwendet werden solltenOptionen

                  usage genrsa [args] [numbits]

                  -out file output the key to file

                  -passout arg output file pass phrase source

                  56

                  -f4 use F4 (0x10001) for the E value

                  -3 use 3 for the E value

                  -des encrypt the generated key with DES in cbc mode

                  -des3 encrypt the generated key with DES in ede cbc mode (168 bit key)

                  -idea encrypt the generated key with IDEA in cbc mode

                  -aes128 -aes192 -aes256 encrypt PEM output with cbc aes

                  -engine e use engine e possibly a hardware device

                  -rand filefile load the file (or the files in the

                  directory) into the random number generator

                  462 rsa

                  rsa gibt den public-key zu gegebenen private-key aus Auszligerdem auch weitere Informationenwie verwendeter Modulus Mit rsa kann auch ein gegebener key neu verschlusselt abgespeichertwerden

                  rsa [options] ltinfile gtoutfile

                  where options are

                  -in arg input file

                  -out arg output file

                  -pubin expect a public key in input file

                  -pubout output a public key

                  -passin arg input file pass phrase source

                  -passout arg output file pass phrase source

                  -text print the key in text

                  -noout donrsquot print key out

                  -modulus print the RSA key modulus

                  -check verify key consistency

                  -des encrypt PEM output with cbc des

                  -des3 encrypt PEM output with ede cbc des using 168 bit key

                  -idea encrypt PEM output with cbc idea

                  -aes128 -aes192 -aes256 encrypt PEM output with cbc aes

                  -inform arg input format - one of DER NET PEM

                  -outform arg output format - one of DER NET PEM

                  57

                  -sgckey Use IIS SGC key format

                  -engine e use engine e possibly a hardware device

                  463 rsautl

                  Mit rsautl konnen Dateien ver- oder entschlusselt und signiert oder verifiziert werden

                  Usage rsautl [options]

                  where options are

                  -in file input file

                  -out file output file

                  -inkey file input key

                  -pubin input is an RSA public

                  -certin input is a certificate carrying an RSA public key

                  -sign sign with private key

                  -verify verify with public key

                  -encrypt encrypt with public key

                  -decrypt decrypt with private key

                  -hexdump hex dump output

                  -pkcs use PKCS1 v15 padding (default)

                  -oaep use PKCS1 OAEP

                  -ssl use SSL v2 padding

                  -raw use no padding

                  -keyform arg private key format - default PEM

                  -passin arg pass phrase source

                  -engine e use engine e possibly a hardware device

                  464 PKCS

                  spater noch ausfuhrlicher hier nur kurz die Verwendung bei RSA

                  Padding beginnt mit 0002 endet mit 00 und dann kommt der Chiffretext

                  58

                  465 OAEP - Optimal Asymmetric Encryption Padding

                  Normalerweise wird mit RSA nur ein Schlussel fur eine symmetrische Verschlusselung ver-schlusselt da RSA verglichen mit symmetrischen Algorithmen sehr langsam ist

                  Bemerkung Vergleichen mit speed rsa und speed aes (siehe History 21012009)

                  Ist die so festgelegte Lange des Klartextes erheblich kleiner als die des RSA-Schlussels so ist einAuffullen der restlichen Bits notig Die implizite Methode (beim Betrachten des Klartextes alsZahl) einfach 0en einzusetzen empfiehlt sich nicht da die Zusatzinformation die ein Angreiferso uber den Klartext bekommt das Decodieren des geheimen Schlussels vereinfacht

                  Beim Padding soll diese Gefahr verringert werden Per default wird bei openssl PKCS benutztAllerdings ist die Verwendung von OAEP besser Beim OAEP ist im Gegensatz zum PKCSdie Lange des Klartextes nicht mehr sichtbar (man kann nur noch dass beginnende 00 Byteerkennen) Choosen Plaintext Attacke ist nicht mehr moglich

                  Dabei wird essenziell die zu verschlusselnde Nachricht mit einem Hashwert eines Zufalls-Stringsper xor verknupft und so randomisiert Eine Modifikation des benutzten Hashwerts wird dannmit der Nachricht konkateniert und steht beim Entschlusseln wieder zur Verfugung

                  1 Label hash Label =

                  2 PS erzeugen (alles Nullen 128-1-h-h-1-mdashmmdash)

                  3 DB =

                  4 Seed wahlen Lange h (irgendwas seed = Hash(irgendwas))

                  5 DBmaske = MGF(seed mdashDBmdash)

                  6 mDB = DB oplus GBmask

                  7 seedmaske = MGF(mDB mdashseedmdash)

                  8 mseed = seed oplus seedmaske

                  9 EM =

                  10 RSA-Verschlusselung C equiv EMe mod n

                  MGF Hash Eingabe x Lange l

                  tc = Hash(x c)

                  mdashcmdash = 4 Byte

                  MGF(x l) = t0 t1 t2 t3 |MGF( l)| = l

                  59

                  Ruckgangig

                  1 Entschlusseln

                  2 Zerlegen 00 mseed mDB

                  3 seedmaske = MGF(mDB mdashmseedmdash)

                  4 seed = mseed oplus seedmaske

                  5 DBmaske = MGF(seed mdashmDBmdash)

                  6 DB = mDB oplus DBmaske

                  7 Padding abtrennen

                  PKCS1 v15

                  Die fur den Modul verwendeten Primzahlen mussen die ersten beiden Bits gesetzt haben dasgarantiert nach Multiplikation der Primzahlen dass das Produkt im oberen Byte das obere Bitgesetzt hat und somit die feste voranstehende 0 uberdeckt

                  466 Wie erkennt man an Ciphertexten den Verschlusselungsalgorithmus- DER ASN1

                  Standards damit man (zB RSA) verschlusselte Texte erkennt

                  DER- distingushed Encoding Rules

                  ASN1- Abstract Syntax Notation

                  openssl asn1parse -genstr INTEGER4711 -out intasn1 openssl asn1parse -in intasn1 -inform DER

                  Integer werden in ASN1 als rsquo 02︸︷︷︸Tag

                  lange Datenrsquo kodiert Integers brauchen 1 Byte mehr rsquoDatenrsquo

                  damit Das Vorzeichen 00 enthalten ist Integer ist immer mit Vorzeichen

                  Tag fur andere Typen

                  Bool 01

                  Int 02

                  Octet String 04

                  Bitstring 03 rsquolangersquo rsquoungenutzte bits am Endersquo rsquoByte des Bitstringrsquo [evt ungenutzte Bits]

                  Text PRINTABLESTRING

                  60

                  utf8 UTF8String

                  Text mit Zeichen (emailadresse) IA5STRING

                  DatumZeit UTC

                  mit Jahrhundert GENTIME

                  nuscht (der leere Typ) NULL

                  Mengentypen seq set

                  Mann kann auch eigene Typen generierend EXPLICITAF oder so

                  467 Umgehen mit den Schlusselkomponenten

                  Ein vollstandiger RSA-Schlussel besteht aus einem Modul (modulus) n = p middot q offentlichemExponent e privatem Exponent d Primzahl 1 p Primzahl 2 q (haufig p gt q) Exponent 1 dpExponent 2 dq Koeffizient qi und kann so ausgegeben und gespeichert werden

                  Bei der Version fur rsquoarmersquo werden nur n offentlicher Exponent e und geheimer Exponent dangegeben

                  c equiv me mod n (3)

                  m equiv cd mod n (4)

                  Vorteil der vollstandigen Version Geschwindigkeitserhohung bei der Entschlusselung in Schritt(4)

                  dp equiv d mod (p minus 1) d = k middot (p minus 1) + dp

                  dq equiv d mod (q minus 1)qi middot q equiv 1 mod q

                  m equiv cd mod (p middot q) berechnenm1 equiv cdp mod p 500 Operationen mit 1

                  2 langem Modulm2 equiv cdq mod q 500 Operationen mit 1

                  2 langem ModulInsgesamt 1000 Operationen mit 1

                  4 der Lange

                  apminus1 equiv 1 mod p wenn (a p) = 1teilerfremd1

                  1kleiner Fermatscher Satz

                  61

                  m1 equiv cd mod pm2 equiv cd mod q

                  h equiv (m1minusm2)middotqi mod p (darauf achten dass das minusm2 mod p ausgerechnet wird nicht mod q)

                  m = m2 + h middot q

                  1 m lt n2 m equiv cd mod p da m2 + h middot q equiv m2 + (m1 minus m2) middot qi middot q mod p equiv m2 + m1 minus m2 equiv m1 alsoequiv cd mod pm equiv cd mod q da m2 + h middot q equiv m2 mod q also equiv cd mod q

                  x equiv y mod p und x equiv y mod q dann folgt x equiv y mod p middot qEuklidischer Algorithmus (p q)-teilerfremd dann p middot u + q middot v = 1 Chinesischer Restsatz

                  47 Miller-Rabin Test

                  Heute openssl dhparam und was Verbluffendes so dass man es nur mit der Phantasie einesInformatikers oder Mathematikers verstehen kann (Literatur Menezes Oorschot Handbook ofApplied Cryptography)

                  Primzahlen Feststellen ob eine Zahl eine Primzahl ist durch Testen von Divisionen wird beigroszligen Zahlen sehr lang

                  p middot q = n ausrechnen geht schnell Umkehrung n =middot ist moglicherweise schwer

                  Uber 2214+ 1 weiss man dass es keine Primzahl ist2 kennt aber keinen der Faktoren Kriterium

                  rdquokeine Primzahlldquo lasst sich auf folgende Art manchmal feststellenWenn (a n) = 1 so ist anminus1 equiv 1 mod nFermatTest Wenn fur (a n) = 1 anminus1 1 mod n so kann n keine Primzahl sein

                  Primzahlen Test

                  Wenn fur eine Zahl a mit (a n) = 1 der Fermat-Test nicht bestanden wird nennt man a einenZeugen fur Nichtprimalitat

                  2Vierzehnte Fermatsche Zahl

                  62

                  Zeugen gibt es sehr viele nicht realistisch alle zu rdquobefragenldquo Ausserdem gibt es Zahlen diekeine Zeugen haben aber keine Primzahl sind

                  Aus diophantischen Gleichungen folgt Es gibt ein Polynom mit ganzzahligen Koeffizienten f (n)mit der Eigenschaft Wenn f (n) gt 0hArr n ist PrimzahlAber das Polynom hat 26 Koeffizienten Fur Mathematiker ist das Problem erledigt da das Poly-nom existiert fur Informatiker ist es das nicht wirklich da die Berechnung ubermaszligig komplexist

                  Die Nicht-Primzahlen ohne Zeugen heissen Carmichael-Zahlen Haben die Eigenschaft forallp(p|nrArrp minus 1|n minus 1)rArr CarmichaelZum Beispiel 561 hat Teiler 3 11 17 Der Test liefert 2|560 10|560 16|560

                  Erweitern (n Primzahl) Wenn (a n) = 1 und anminus1 equiv 1 mod n und 2|n minus 1 (anminus1 equiv 1 mod na

                  nminus12 equiv )

                  Wenn x2 equiv 1 mod n was ist x mod n n|x2 minus 1 = (x minus 1)(x + 1) entweder n|x + 1 odern|x minus 1

                  FermatTest+ Wenn fur (a n) = 1 anminus1 1 mod n oder falls anminus1 equiv 1 mod n und anminus1

                  2 +1und a

                  nminus12 minus1 so kann n keine Primzahl sein

                  und 4|n minus 1 anminus1

                  4 anminus1

                  2 anminus1

                  1 mod n Diese Folge ist entweder 1 1 1 oder minus1 1 1 oderlowastminus1 1

                  Wenn (a n) = 1 und 2k|nminus 1 (k maximal) dann ist die Folge anminus12k a

                  nminus12kminus1 a

                  nminus12 anminus1 entweder

                  1 1 oder lowastminus1 1 1 (lowast steht fur beliebige Folge)

                  Probieren n = 81 n minus 1 = 80 durch 2er-Potenzen teilen kommt irgendwas mit 5 hinten rausAls Zeugen nehmen wir mal 2 Ausrechnen 25 210 220 240 280 und schauen ob diese Folgemodulo 81 einen der beiden Typen hat 32 1 mod 81

                  FermatTestlowast (= Miller-Rabin-Test) Wenn fur (a n) = 1 2k|n minus 1 teilt und die Folge anminus12k a

                  nminus12kminus1

                  anminus1

                  2 anminus1 modulo n nicht 1 1 und nicht lowastminus1 1 1 dann ist a ein Zeuge fur Nicht-primalitat

                  Fur Miller-Rabin-Test gibt es keine zeugenlosen zusammengesetzten Zahlen es gibt unter denzu n teilerfremenden Zahlen mindestens 25 Zeugen3 (MenezesOorschot Kapitel 4 Fact 425Fact 448 Tabelle 43)

                  Die fur Informatiker interessante Frage ist die Frage Wenn man eine Wahrscheinlichkeit kleiner2minus80 fur eine fehlerhaft durch Miller-Rabin nicht erkannte zusammengesetzte Zahl haben will

                  3Anmerkung spater 34 sind Zeugen 1

                  4 sind Lugner

                  63

                  muss man fur n (512 Bit) 6 Tests machen Je groszliger die Zahlen werden desto weniger Testsmuss man machen Fur 1024 3 Tests fur 2048 2 Tests Vorausgesetzt ist immer noch ein Testauf kleine Faktoren Dabei pruft man ob (n pi) = 1 fur pi lt B wobei pi kleine Primzahlen sindDas B wahlt man so dass dieser Test nicht langer dauert als ein Miller-Rabin-Test

                  Wie wahlt man Primzahlkandidaten Generiere Zahl mit Zufallszahlengenerator schaue ob diedurch 2 oder so teilbar ist wahle dann die nachste Zahl

                  openssl dhparam -dsaparams -text -noout 2048 schnellopenssl dhparam -text -noout 2048 langsam

                  Safe Prime pminus12 hat einen groszligen Primzahlfaktor q dann getestet ob 2(k middot (q + 1)) Primzahl ist

                  pminus12 ist Primzahl

                  Wofur braucht man die Primzahlen Naturlich fur RSA und jetzt neu

                  48 Diffie-Hellman-Schlusselaustausch

                  Alice und Bob haben gemeinsame offentliche Informationen tauschen offentliche Informationenaus und verfugen danach beide uber einen gemeinsamen privaten Schlussel

                  g = 2 (offentlich bekannt (Generator)) Primzahl p (offentlich bekannt)

                  Erganzungen g g2 g3 gpminus1 mod p (g Generator dann alle verschieden)

                  Bob Alice

                  Eve

                  x y

                  g^y mod p

                  g^x mod p

                  64

                  Bob wahlt zufallig 1 lt x lt pminus 1 und ruft Alice gx mod p zu Alice wahlt zufalig 1 lt y lt pminus 1und ruft gy mod p zu

                  Bob berechnet (gy)x mod p und Alice berechnet (gx)y mod p Beide erhalten gxmiddoty mod p An-greifer Eve kennt nur gx mod p gy mod p fehlt gxmiddoty mod p

                  Wenn Eve das diskrete Logarithmusproblem losen konnte also zu gx mod p und g mod pdas x ausrechnen konnte dann ware gxmiddoty mod p leicht zu berechnen Die besten Algorithmenfur das diskrete Logarithmusproblem mod p sind subexponentiell im groszligten Primfaktor vonp minus 1

                  Falls (p minus 1) viele kleine Primfaktoren pi hat ist das diskrete logarithmus Problem leicht denndann lost man das Problem nicht a mod (pminus1) sonder jeweils a mod pi und setzt0 dass ganzedann mit dem Chinesischen Restsatz zusammen

                  Sucht p so dass pminus12 auch eine Primzahl ist dazu wird zuerst eine Primzahl pprime gesucht und dann

                  geguckt ob 2pprime + 1 auch Prim ist

                  Openssl

                  Variante DH (DSAparam) (-dsaparam)

                  p-Primzahl 1536

                  g-rsquoGeneratorrsquo nicht von (p minus 1) sondern von der Restklasse h

                  160 Bit g g2 g3 gh alle verschieden mit h=160 Bit

                  Dann sollen xy so gewahlt werden dass 1 lt x y lt h = 160 Bit

                  Ein weiteres asymmetrisches Cryptosystem kann man darauf aufbauen Alle kennen g und pjeder generiert sich x (privater Schlussel) und gx mod p wird veroffentlichtAlice will Bob etwas verschlusselt schickenSie generiert ein k berechnet aus k und Bobs veroffentlichtem gx a = (gx)k mod p und ausdem allgemein bekanntem g gk mod pM sei die Nachricht ( mod p) die Alice verschicken will Sie berechnet a middot M mod p undsendet an Bob das Paar (gk mod p a middot M mod p)Bob berechnet (gk)x mod p = a und dividiert amiddotM

                  a mod p und erhalt somit M

                  Der Schlussel a darf nicht zweimal verwendet werden

                  Man nennt (gk a) zeitweiliger bzw ephemeraler Diffie Hellmann Schlussel

                  Nachteil die Nachrichtenlange wird verdoppelt

                  65

                  Das Verfahren ist unsicher wenn Alice die Zahl x schlecht wahlt x = 1 2 1 2 1 2 1 = x1 x2

                  49 ElGamal-Cryptosystem

                  (siehe auch TR 3111 vom BSI auf Seite 21)

                  Auf Diffie-Hellmann aufbauendAlice offentlicher Schlussel ga (p g) privat aBob offentlicher Schlussel gb (p g) privat b

                  Alice will an Bob schicken

                  1 Zufallszahl k generieren

                  2 Berechne mit Bobs Parametern gk mod p

                  3 Berechne mit Bobs Parametern (gb)k mod p (DH-Schlussel)

                  4 Berechne m middot (gb)k mod p

                  5 Sende(gkm middot (gb)k

                  )mod p

                  Bob empfangt (x y)

                  1 Berechne xb mod p (DH-Schlussel)

                  2 y middot (xb)minus1 mod p = m mod p

                  Alice baut also einen temporaren DH-Schlusselteil4 zu Bobs Parametern und sendet diesen unddie damit verschlusselte Nachricht m

                  Nachteil Nachricht wird durch den Ephemeralschlussel doppelt so lang

                  410 Wiederholung DH

                  Generator gPrimzahl pga mod p Restklassen mod p = Korper(middot inverses)Dass p Primzahl ist ist eigentlich ZufallErzeugendes Element GOperation auf Elementen +

                  a middotG = G + G + G + + G a-malEs muss schwer sein aus G und B = a middotG gegeben das a zu bestimmenG muss eine Ordnung n haben n middotG = 0 (Neutrales Element der Operation +)

                  4Auch Ephemeralschlussel genannt

                  66

                  4101 Beispiel

                  Alice Bob G+ nAlice denkt a denkt a middotGBob denkt b denkt b middotGBeide tauschen a middotG und b middotG aus und berechnen a middot b middotGa middotG ist leicht zu berechnen double and adda = a0 + a1 middot 2 + + ak middot 2k

                  a middotG = a0 middotG + a1 middot 2 middotG + + ak middot 2k middotG(k minus 1)-mal rdquomiddot2ldquo und (k minus 1)-mal rdquo+ldquo

                  411 was anderes

                  Nimmt man nun G groszlige Gruppe mit n Elemente und der Addition +

                  g-Generator

                  g 2g 3g nG︸︷︷︸Nullelement

                  Alice wahlt 1 lt x lt n bestimmt x middot g

                  Bob wahlt 1 lt y lt n bestimmt y middot g

                  Dann wieder K = (ab) middot g = K

                  To do erganzen

                  Problem des Diskreten Logarithmus in G gegeben ist G g Generator ist 0 c = a middot g in Ggesucht alogGc-diskreter Logarithmus in G

                  Diese Variante funktioniert also mit allen rsquoKomplizierten Gruppenrsquo das fuhrt zu dem nachstenThema

                  412 Elliptische Kurven

                  Wo gibt es so etwas schon Elliptische Kurven Sind nicht weit verbreitet weil sie dem Mana-gement schwer zu erklaren sind

                  67

                  Aus der Wikipedia (unter GNU Free Documentation License)

                  In der Zahlentheorie ist eine elliptische Kurve eine singularitatenfreie algebraische Kurve derOrdnung 3 in der projektiven Ebene

                  Von besonderem Interesse zB fur die Faktorisierung naturlicher Zahlen sind aufgrundihrer einfachen Struktur elliptische Kurven der Form cy2 = x3 + ax + b mit c 0 und 4a3 +

                  27b2 0 Einige moderne Verschlusselungsverfahren basieren auf solchen Kurven Der Nameleitet sich historisch davon ab dass diese Kurven durch elliptische Integrale parametrisiertwerden konnen

                  Elliptische Kurven uber endlichen Korpern werden in der Kryptografie eingesetzt Dazuwird ausgenutzt dass eine Gerade (lineare Funktion) die zwei Schnittpunkte P und Q mit ei-ner Elliptischen Kurve hat diese auch in einem 3 Punkt schneidet Der Punkt der aus demletzteren durch Verkehren des Vorzeichens der Y-Koordinate (wenn die Kurve die oben ange-gebene Form hat) entsteht wird P + Q genannt Man kann zeigen dass diese Punktaddition(P und Q werden addiert das Ergebnis ist der Punkt P + Q) sowohl kommutativ als auch as-soziativ ist Erganzt man die Elliptische Kurve um einen weiteren Punkt 0 (genannt Punkt imUnendlichen) so bildet sie zusammen mit der (etwas erweiterten) Punktaddition eine abelschealgebraische Gruppe

                  Sei nun P ein Punkt der Elliptischen Kurve Der Punkt P + P wird mit 2P bezeichnetentsprechend definiert man kP = P + + P als k-fache Addition des Punktes P Ist P nichtder 0-Punkt und ist die Ordnung der Elliptischen Kurve prim so kann auf diese Weise jederPunkt der Kurve erreicht werden (dh zu jedem Punkt Q auf der Kurve existiert eine naturlicheZahl k mit Q = kP) Die Aufgabe aus gegebenen Punkten PQ diesen Wert k zu ermittelnwird als Diskretes Logarithmus-Problem der Elliptischen Kurven (kurz ECDLP) bezeichnetEs wird angenommen dass das ECDLP (bei geeigneter Kurvenwahl) schwer ist dh nichteffizient gelost werden kann Damit bieten sich Elliptische Kurven an um auf ihnen asymme-trische Kryptosysteme zu realisieren (etwa einen Diffie-Hellman-Schlusselaustausch oder einElgamal-Kryptosystem)

                  y2 = x3 + a middot x + b Skizze der Kurven S2Zu S2 Punkte auf der Kurve kann man addieren

                  Die Rechenregeln gehen auch in einem Korper mod pBeispiel y2 equiv x3 + a middot x + b mod p Skizze S3

                  Es gibt immer Punkte mit denen man rechnen kann Punkte sind geeignet die Addition funk-tioniert auch und hat die Anzahl N der Punkte einen groszligen Primzahlteiler dann haben wir auchKryptosystem mit G+ n Wenn groszliger Primzahlteiler exisitert1 N hat groszligen Primzahlteiler n2 Wahlen zufallig einen Punkt G als GeneratorDaraus erhalt man DH und El Gamal

                  Zuerst eingefuhrt durch Victor Miller und Neal Koblitz um 1980 herum Damals war N schwer

                  68

                  bestimmbar Inzwischen gibt es bekannte Algorithmen (Schoof-Algorithmus)Diskretes Logarithmusproblem ist fur elliptische Kurven wirklich exponentiell (bis jetzt) EinBit mehr verdoppelt den Rechenaufwand (192-Bit-256 Bit bewegt sich in GroszligenordnungenRSA 2000-4000-Bit)

                  Erganzung

                  1Bei der Erforschung von Eliptischen Kurver stellte sich zuerst die Frag wie groszlig ist eigentlichdie Ordnung n der Gruppe Man wusste n sim p und man wusste sogar n minus p + 1 minus

                  radicp lt n lt

                  minusp + 1 +radic

                  p

                  2 Schnelle Algorithmen zur Berchnung der Ordnung

                  3 ECDLP ist schwer wenn n einen groszligen Primfaktor hat

                  To do sortieren

                  Erganzung

                  man hat p a bG n h

                  K = y2 = x3 + ax + b

                  p ist fur die Punktaddition (Formeln siehe enwikipediaorg wobei λ = (yQ minus yP) middotminus1

                  (xa minus xp)︸ ︷︷ ︸mit GGT

                  mod p)

                  Anmerkung zum Wikipedia Artikel binary Case bedeutet man die Eliptischen Kurven auch inKorper mit 2k betrachten allerdings vieler solcher Falle patentiert

                  G = Generatorpunkt mit G 2G 3G nG alle verschieden n kleinste Zahl so dass alle ver-schieden

                  nG = 0

                  bei der DSA-Parameter Form nimmt man weniger Grsquos

                  Der nachste Parameter ist der cofactor h welches den Unterschied zwischen n und der Anzahlder Produkte auf der Kurve angibt

                  Trick beim testen ob alle iG verschieden sind man guckt ob n eine Primzahl ist und ob nG = 0ist wenn ja ist dies das erste mal sonst ware n ja keine Primzahl Also sind alle vorherigen iG

                  69

                  verschieden

                  Kurven finden besser Bestimmung der Punktanzahl ist schwer

                  Fruher gab es kleine cofactoren h lt 16

                  openssl ecparama -list_curves sind schon vorher erzeugt kann openssl nicht selber

                  openssl ecparam -name secp160k1 -text -noout da die Kurve festgelegt ist gibt es nurein object zuruck

                  openss ecparam -name secp160k1 -text -param_enc explicit -noout

                  openss ecparam -name secp160k1 -text -param_enc explicit -noout -conv_form compressednichtkomprimiert gibt nur die x-Koordinate aus

                  Bei der komprimierten Form kann mit der Kurve die andere eindeutig bestimmen (oder so)

                  Darstellung als komprimierte Punkt ist auch wieder patentiert

                  413 Elliptische Kurven Nachtrag

                  GF(p) (Galois-Field) sind Kurven mod p mit p Primzahl erfullen Gleichungen der Form y2 =

                  x3 + a middot x + b

                  GF(2k) Korper mit 256 Elementen = 28

                  In OpenSSL nur elliptische Kurven mod p patentfrei

                  Kofaktor finden Wir haben Punktgruppe G es gibt einen Generatorpunkt gn middotG = 0 n ist die Ordnung

                  cofactor︸ ︷︷ ︸klein

                  lowast order︸︷︷︸primzahl

                  = Anzahl der Punkte

                  (cofactor soll klein sein order Primzahl) Anstelle Punkt auf der elliptischen Kurve als (x y) (x ymod p) abzuspeichern TrickWenn es ein Punkt ist gibt es zu x zwei y die quadratische Gleichung y2 = x3 +a middot x+b erfulleny1 =

                  radicx3 + ax + b mod p

                  y2 = minusradic

                  x3 + ax + b mod peine der beiden Zahlen hat als letztes Bit immer 1 die andere eine 0 man nimmt daher nur noch(x LSB(y)) (x und kleinstes Bit von y)

                  70

                  414 Rucksack-Verschlusseln

                  Kryptosystem das sich bei OpenSSL zu recht nicht findet Hat den Anschein als wurde es aufeinem NP-vollstandigen Problem beruhen Problem ist NP-vollstandig weil es ein allgemeinesRucksackproblem istSieht aber nur so aus ist aber nur polynomial weil es ein Transformiertes eines leichten Ruck-sackproblems ist

                  Gegeben W Fassungsvermogen des Rucksacks w1w2 wk kleine GewichteGesucht W =

                  sumeiwi mit ei isin 0 1

                  Rucksack-Verschlusseln von MerkleHellmann Rucksack mit schnell wachsenden Gewichtenist leicht zu berechnendh wi gt

                  sumjlti e jw j nachstes Gewicht ist immer schwerer

                  4141 Beispiel

                  Rucksack W = 51 = 31 + 15 + 3 + 2 wprimei s 2 3 7 15 31Grundidee Aus dem schnellen Rucksack einen langsamen machenM gt

                  sumwi k mit (M k) = 1 k middot 2 k middot 3 k middot 31 mod M

                  M = 61 ist Modul k = 17 ist privater Schlussel m = (1 1 0 1 1) ist unverschlusselte Nachricht31 51 58 11 39 ist offentlicher Schlussel 34 + 51 + 11 + 39 = 135 = 13rarr c ist verschlusselteNachrichtEmpfanger rechnet aus dem erhaltenen Gewicht (135) das richtige Gewicht wieder raus 135middotkminus1

                  mod 61 = 51 und kann das Problem mit den schnellen Gewichten losen

                  Zum BrechenMan transformiert 34 51 58 11 39 in eine Folge die schnell wachsend ist zB 1 3 5 11 29dh das transformierte System kann auf mehrere Probleme zuruckgefuhrt werden man brauchtnur eine passende Rucktransformation finden Adi Shamir hat dafur einen polynomiellen Algo-rithmus angegeben

                  415 Merkle Puzzle

                  Man generiert sich 1000000 Nachrichten rdquoDas ist Nachricht ni fur den Schlussel k jldquo ni zufalli-ge 20-Bit Zahl k j 128-Bit SchlusselVerschlusselungsverfahren DES diese 1000000 werden mit 20-Bit Schlusseln verschlusseltAlice schickt die 1000000 Nachrichten an Bob als offentlichen SchlusselBob will Alice eine Nachricht schicken Er sucht eine der Nachrichten aus dem offentlichen

                  71

                  Schlussel aus und macht eine Brute-Force Attacke auf diese Nachricht Er findet ni und kiBob verschlusselt mit dem ki seine Nachricht und sendet ni im Klartext mit

                  Alice und Bob haben linearen Aufwand Eve quadratischen

                  Von everything2comAlice and Bob agree on a symmetric algorithmAlice generates a large number (over a million at least) of messages of the form ldquoThis is myindex X and my puzzle is Yrdquo Each of the messages is encrypted with a 20-bit keyAssume there are 220 (about a million) messages it takes 220 operations to get the key and acomputer can perform 220 operations per second Bob takes 1 second to recover the key to amessage Eve takes 12 daysNow make that 230 (about a billion) messages Bob still only takes a second to get the key andit will take Eve 34 years

                  Public Key Idee hier schon vorhanden

                  416 Rabin-Verfahren und Wurzelziehen

                  Aus der Wikipedia (unter GNU Free Documentation License)

                  Das Rabin-Kryptosystem ist innerhalb der Kryptologie ein asymmetrisches Kryptosystem dasauf einem Faktorisierungsproblem beruht und mit RSA verwandt ist Es lasst sich prinzipiellauch zur Signatur verwenden In der Praxis findet das Verfahren allerdings wegen bestimmterAngriffsmoglichkeiten kaum Anwendung

                  4161 Schlusselgenerierung

                  Aus der Wikipedia (unter GNU Free Documentation License)

                  Seien p und q zwei moglichst groszlige Primzahlen fur die eine bestimmte Kongruenzbedingunggelten muss Der offentliche Schlussel n wird durch Multiplikation der beiden Zahlen erzeugtalso n = p middot q Der geheime Schlussel ist das Paar (p q) Anders ausgedruckt Wer nur n kenntkann ver- aber nicht entschlusseln wer dagegen p und q kennt kann damit auch entschlusselnZum Erzeugen des offentlichen Schlussels mussen die Zahlen p und q bekannt sein Der offent-liche Schlussel lasst sich nur genau aus den beiden Primzahlen erzeugenWaren p und q keine Primzahlen so lieszlige sich das Verfahren ubrigens nicht anwendenSeien beispielhaft p = 7 q = 11 (in der praktischen Anwendung handelt es sich um sehr vielgroszligere Zahlen um die Entschlusselung durch Dritte so schwierig wie moglich zu machen)Daraus ergibt sich der offentliche Schlussel n = p middot q = 77

                  72

                  4162 Kongruenzbedingung

                  Aus der Wikipedia (unter GNU Free Documentation License)

                  Fur p und q muss die Kongruenzbedingung(

                  pminus1p

                  )= (p minus 1) und

                  ( qminus1q

                  )= (q minus 1)

                  (wobei fur(

                  nminus1n

                  )= (n minus 1)

                  nminus12 equiv (n minus 1) mod n = (n minus 1) gilt)

                  oder einfacher ausgedrucktp equiv q equiv 3 mod 4gelten

                  Allgemein gilt namlich fur die Primzahl r mit r equiv 3 mod 4 und die Zahl a mit a equivb2 mod ra

                  (r+1)4 equiv

                  radica mod r

                  Diese Eigenschaft dient dazu spater die Entschlusselung zu erleichternWegen 7 equiv 11 equiv 3 mod 4 ist die Kongruenzbedingung fur das Beispiel erfullt

                  n = p middot q Produkt von Primzahlen

                  m soll verschlusselt werden c equiv m2 mod n (einfach Quadrieren weil Wurzelziehen schwer istwenn der Modul ein Produkt von 2 Primzahlen (p middot q) ist weil wer Wurzel ziehen kann kannauch Faktorisieren (n)

                  Begrundung Es gibt 2 Losungen c = x2 equiv y2 mod n Wie findet man nun die Faktoren von nn teilt x2 minus y2 = (x minus y)(x + y) und x gt y und (x minus y) lt n und n hat nur 2 Primfaktoren daherx minus y = p und x + y = q Wurzelziehen ist leicht mod p mod q Gesucht Wurzel c mod pxp = c

                  p+14 mod p und xq = c

                  q+14 mod q

                  x2p equiv c

                  p+12 equiv c

                  pminus12 middot c mod p

                  Weil cpminus1 equiv 1 mod p ist (nach kleiner Fermat) die Wurzel daraus cpminus1

                  2 equiv plusmn1 wegen c equiv m2

                  mod n gilt (m2)pminus1

                  2 equiv mpminus1 equiv 1(p) Stuck fehlt Ende des Wurzelziehens

                  4163 Verschlusselung

                  Aus der Wikipedia (unter GNU Free Documentation License)

                  Sei nun P = 0 nminus1 der Klartextraum (er besteht also aus Zahlen) und m isin P der KlartextNun lasst sich der Geheimtext c durch c = m2 mod n bestimmen Dabei ist c der QuadratischeRest von zu der Quadratzahl m2 zum Modulo der Schlussel-Zahl n Im praktischen Einsatzbietet sich die Verwendung von Blockchiffre an

                  In unserem Beispiel sei P = 0 76 der Klartextraum m = 20 der Klartext Der Ge-heimtext ist hierbei nun c = m2 mod n = 15

                  73

                  Dabei muss man beachten dass fur genau vier verschiedene m das c den Wert 15 aufweistnamlich fur m isin 13 20 57 64 Ahnliches gilt fur die meisten c

                  4164 Entschlusselung

                  Aus der Wikipedia (unter GNU Free Documentation License)

                  Seien allgemein c und r bekannt gesucht wird m isin 0 n minus 1 mit m2 equiv c mod r Furzusammengesetzte r (beispielsweise unsere n) existiert kein effizientes Verfahren zur Bestim-mung von m Ansonsten wenn also r isin P (in unserem Fall p und q) dann lasst sich jedoch derchinesische Restsatz ausnutzen

                  In unserem Fall sind nun die Quadratwurzelnmp =

                  radicc mod p

                  undmq =

                  radicc mod q

                  gesuchtWegen obiger Kongruenzbedingung gilt

                  mp = c(p+1)

                  4 mod pundmq = c

                  (q+1)4 mod q

                  In unserem Beispiel ergeben sich mp = 1 und mq = 9Mit dem erweiterten euklidischen Algorithmus werden nun yp und yq mit yp middot p+yq middotq = 1

                  bestimmt In unserem Beispiel erhalten wir yp = minus3 und yq = 2Nun werden unter Ausnutzung des chinesischen Restsatzes die vier Quadratwurzeln +r

                  minusr +s und minuss von c + nZ isin ZnZ berechnet (ZnZ steht hierbei wie ublich fur die Menge derRestklassen modulo n die vier Quadratwurzeln liegen in der Menge 0 n minus 1)

                  r = (yp middot p middot mq + yq middot q middot mp) mod nminusr = n minus rs = (yp middot p middot mq minus yq middot q middot mp) mod nminuss = n minus s

                  Eine dieser Quadratwurzeln mod n ist wieder der anfangliche Klartext m Im Beispielgilt m isin 64 20 13 57

                  417 Angriffe auf asymmetrische Verschlusselungsverfahren

                  Fall RSA

                  74

                  4171 1 Angriff Common modulus attack

                  Idee Gleicher Modul fur verschiedene Leute hatte den Vorteil dass man sich nur die kleinenoffentlichen Exponenten e1 und e2 merken muss nicht mehr die groszligen Module hat aber Nach-teil (e1 e2) = 1 teilerfremd umiddote1+vmiddote2 = 1 (mit erweitertem Euklid) Sendet man eine Nachrichtm an zwei Alices berechnet also c1 = me1 mod n und c2 = me2 mod n dann kann man mitden Chiffren c1 und c2 auch ausrechnen cu

                  1 middot cv2 = me1u middot me2u = me1u+e2v = m mod n Nachricht

                  erhalten

                  4172 2 Angriff kleiner geheimer Exponent d

                  Wenn |d| lt |m|3 dann ist Faktorisieren moglich Sicherheitsrisiko geheimer Exponent muss im-

                  mer moglichst groszlig sein aus groszligem offentlichen Exponenten |e| kann man erfahren dass dergeheime Exponent klein ist

                  4173 3 Angriff Faktorisieren

                  Wenn p ungefahr so groszlig wie q also p minus q = ∆ klein ist dann ist ( p+q2 + ∆

                  2 ) (ungefahr Wurzel n+ was kleines = p) middot( p+q

                  2 minus∆2 ) = p middot q Man weiszlig dass die eine Zahl uber Wurzel n liegt und die

                  andere Zahl unter Wurzel n (Wurzel n + klein = p Wurzel n - klein = q)

                  4174 Echt schlechte RSA-Schlussel

                  n = 3middotq (1024 Bit) und offentlichen Exponenten bei TCTrustCenter abgegeben Damit kann manzeigen dass PGP als Signaturverfahren schlecht ist Schlussel schlecht gewahlt dadurch kannjeder die Kommunikation mitlesen da n sehr leicht zu Faktorisieren die Leute sie konntender Person mit dem schlechten Schlussel vertrauenswurdige Nachrichten schicken und laufenin die Falle dass ihre Nachrichten nun offentlich sind Anderer Fall Bewuszligt solche Schlusselvergeben um Nachrichten in einem kompletten Netzwerk lesen zu konnen

                  n = Primzahl e middot d equiv 1 mod (n minus 1)

                  Mit n als Primzahl geht normale Entschlusselung nicht

                  n p q e dp dq qi dc equiv me mod nm1 equiv cdp mod pm2 equiv cdq mod qdp equiv d mod (p minus 1)

                  75

                  dq equiv d mod (q minus 1)

                  m = m2 + (m1 minus m2) middot qi︸ ︷︷ ︸mod p

                  middotq

                  m equiv cd mod q und m equiv cd mod prArr cd

                  Bundesamt fur Informationssicherheit sagt zur Verwendung von RSA p q mussen unabhangigvoneinander zufallig erzeugt werden und 0 5 lt | log2 p minus log2 q| lt 30

                  4175 Schnelles Faktorisieren bei Fehler im System

                  DFA - Differential Fault Attack System das entschlusselt aber sich an einer Stelle verrechnetmprime1 ist Rechenfehler statt wirkliches m bekommt man ein mprime = m2 + (mprime1 minus m2)qi lowast qbildet man nun m minus mprime 0 aber durch q teilbar dh bringt man das System dazu einen Fehlerzu machen und hat man die Originalnachricht GGT (m minus mprime n) = q schon hat man den Mo-dul faktorisiert hat funktioniert viele Chipkarten verrechneten sich unter Streszlig Es reicht dasmprime zu kennen m kann unbekannt bleiben denn man rechnet (mprimee minus c n) = q es reicht eineentschlusselte Nachricht zu haben

                  Anderer Angriff auf ChipkartenDPA - Differential Power Analysis Stromverlauf ansehen Differenzen bilden und sequentiellanalysieren

                  Angriff auf El Gamal Systemegeheimer Schlussel a offentlich g p ga Verschlusselte Nachricht zufalliges k (gk mmiddotgak)= c 1Angriff k gleich fur verschiedene Nachrichten oder k1 k2 in Abhangigkeit oder k k+1 k+2 fur verschiedene Nachrichten oder a middot k + b

                  4176 Angriff mit gewahltem Chiffretext

                  Normalerweise bei RSA m minusrarr c = me mod n

                  cprime vorgegeben fuhrt zu Klartext mprime = (cprime)d mod nAnforderung Beliebiger Chiffretext auszliger cprime = c wahlbar zu dem man dann den Klartext erhalt

                  Problem bei RSA

                  1 r (zufallig gewahlt)rarr re mod n = s

                  2 cprime = s middot c mod nVerschlusselungsmaschine liefert dann (cprime)d = sd middot cd = (re)d middot m = r middot m mod n = mprime

                  76

                  3 Letzter Schritt m = mprime = rminus1 mod n

                  Das geht nur theoretisch in der Praxis geht das nicht weil Angreifer kann das r nicht steuernr middot m wird aber von der Verschlusselungsmaschine verworfen weil es bei zufalligem r keinkorrektes Padding hat

                  Schwache des RSA Multiplikationseigenschaftm1 rarr c1 und m2 rarr c2 (m1 m2 gultige Klartexte)m1 middot m2 rarr c1 middot c2m1 middot m2 nicht als gultiger Klartext zugelassen

                  5 Signaturmechanismen

                  Wie erstellt man signierte Daten und versucht ein Aquivalent zu dem zu schaffen was man imtaglichen Leben durch Unterschriften schafftEigenschaften einer Signatur sollen nachgebildet werden Man weiszlig von wem ein Dokumentkommt sie ist an eine Person gebunden und kann von niemanden sonst nachgemacht werden undvom Inhaber nicht abgestritten werden Nachtragliche Anderungen an unterschriebenen Doku-menten sollen nicht mehr moglich sein (gibt es so im echten Leben nicht)

                  51 Integritatsschutz und Hashfunktionen

                  To do neu Hashfunktionen Definition einsortieren

                  Hashfunktion Beliebige Daten werden auf Binarfolgen konstanter Lange abgebildet

                  Def Eine Hashfunktion H ist eine Abbildung 0 1lowast rarr 0 1k auf Hashwerte der Lange k

                  SHA-256 (SHA- Secure Hash Algorithmen) - Hashwerte der Lange 256 Bit

                  1 Es gibt Kollisionen

                  d1 d2 H(d1) = H(d2)

                  2k Hashwerte aber potentiell abzahlbar viele Daten

                  Wunsch

                  Man soll diese Kollisionen nicht finden konnen und am besten es gibt sie nicht Hashfunktionendienen zum unterscheiden von Daten

                  77

                  H(d1) H(d2) dann ist d1 d2

                  Dementsprechend groszlig muss das k sein so dass genugend viele Werte unterscheiden kann

                  Anforderungen an Hashfunktionen

                  Wunsch Kollisionsresitent (schwer Kollisionen zu konstruieren) man kann nicht zwei Doku-mente mit dem gleichen Hashwert konstruieren

                  Wunsch Zweites Urbild resistent (schwer zweites Urbild zu konstruieren) man kann zu einemDokument nicht ein zweites mit dem gleichen Hashwert bestimmen

                  Geburtstagsparadoxon Kollisionen entstehen zum Beispiel in Horerkreisen 23 Horer(innen)dann haben mit mehr als 50 Wahrscheinlichkeit zwei am gleichen Tag Geburtstag

                  H Horer rarr Datum h 7rarr Geburtstag(h)

                  h1 h2 H(h1) = H(h2)

                  Bestimme die Wahrscheinlichkeit dass keine zwei am gleichen Tag Geburtstag haben

                  1 minus g =365middot middot(365minusn+1)

                  (365n) wobei n die Anzahl der Horer ist (Fur n = 23 ungefahr 50)

                  radic365 20

                  g radic

                  Hashwerte

                  Bei 2128 Hashwerte muss man mit Kollisionen rechnen ( Bsp 30 bei 19 Personen 19 radic

                  365)

                  Merke Das Geburtsatgs Paradox beschert uns Kolisionen bei 2k2 Hashwerten

                  To do ende Neu

                  Hashfunktionen Schon bekannt aus dem ersten Semester (Hashtabellen)

                  Allgemeine Eigenschaften

                  1 Komprimieren beliebig lange Werte auf n-bit Werte

                  2 Einfach (und schnell) berechenbar

                  Werte Fingerabdruck Prufwert Hashwert

                  78

                  Kollisionen h(x) (Hashfunktion) mit x1 x2 aber h(x1) = h(x2) x1 und x2 ist KollisionWahrscheinlichkeit fur Kollision fur zufallig gewahlte Werte sollte 1

                  2n sein (Anforderung anHashfunktion)

                  Wir verlangen dass die Variabilitat in der Eingabe sich auch in den Prufwerten widerspiegeltsprich Wenn die Eingabewerte gleichverteilt sind sind es auch die Ausgabewerte

                  To do 20090422

                  To do einsortieren

                  Kollisionen rsquovermeidenrsquo durch Groszlige 160 Bit Prufwerte (280 fur Kollision (2100 mdash AES 128 mdashbzw 2112 2128 als Kollisionsschranken)

                  Zusatzlich Voraussetzungen fur die Pruffunktion

                  1 Kollisionsresistenz Es muss schwer sein zwei Nachrichten m1m2 zu finden so dassH(m1) = H(m2)

                  (Es ist schwer Zwillinge zu konstruieren)

                  2 Zwillingsresistenz Es muss schwer sein (also kryptografisch Aufwendig) zu einer Nach-richt m1 eine Nachricht m2 zu konstruieren so dass H(m1)FH(m2) ist

                  (Wenn man eine Bruder hat dann ist es schwer eine zwillings Schwester dazu zu konstru-ieren)

                  (aufwendiger als erstens)

                  3 Urbildresistenz Es muss schwer sein zu einem beliebigen Prufwert h eine Nachricht zukonstruieren so dass H(m) = h ist

                  4 Die Prufwerte mussen rsquozufalligrsquo aussehen Die Ausgabe von H genugt Anforderungen aneinen Zufallszahlengenerator (gewisse statistische Unauffalligkeit) also pseudozufallig

                  Eigentlich musste man noch mehr Fordern namlich dass man keine zwei Nachrichten findet diesehr ahnliche Hashwerte haben und dass man zu einer gegeben Nachricht keine Nachricht miteinem ahnlichen Hashwert findet

                  Beispiel H gute Pruffunktion

                  H(m) =

                  |m| n fix so Hprime(m) = 0||H(m)(H(m) rangehangen)|m| = n so ist Hprime(m) = 1||m( rangehangen)

                  h ist die Lange der Prufwerte von H

                  79

                  Hprime ist kollisionsresistent wenn es H ist aber nicht urbildresistent

                  To do sortieren

                  openssl 097d (2004) Prufwertstandardverfahren ist MD5

                  Hashfunktion enthalt eine rsquoKompressionsfunktionrsquo m1

                  To do Bild-siehe Blatt - 20090422

                  K(sm) = sprime

                  K(sm) = K(sm2)

                  K(s1m1) = K(s2m2)

                  s1 und s2 als Ergebnisse einer Prufwertberechnung darstellen

                  K(s1m11) = s1 K(s01m21) = s2

                  K(s1m12) = s K(s2m22) = s

                  der rechte Teil war 2004 schon bekannt es musste nur noch die linke seite gelost werden

                  511 Schlussellose Hashfunktion (Prufsummen ohne Schlussel)

                  h x minusrarr h(x)Ausschlieszliglich Prufwert Gute Auswahl garantiert dass man mit h(x) feststellen kann ob xverandert wurde

                  xprime ist verandertes DokumentDatenBerechnung des Prufwerts liefert h(xprime) = hprime h(x) bei guter Hashfunktion Veranderung kannalso festgestellt werden

                  80

                  Zusatzlich verlangte Eigenschaften

                  1 Kollisionsresistenz Es ist schwer Kollisionen zu erzeugen Dh es ist schwer x1 x2 mith(x1) = h(x2) zu findenHeute ublich n = 80 oder n = 100 280 oder 2100 in sim 280 Schritten Definitiv 256 istnicht schwer 264 ist nicht mehr so schwer

                  2 Zwillingsresistenz Zweites-Urbild-Resistenz second preimage resistance Es ist schwereinen Zwilling zu erzeugen ist x1 mit h(x1) vorgegeben so ist es schwer einen Zwillingx2 zu erzeugen mit h(x1) = h(x2)(Anmerkung Finger weg von Binarcode fur x1 x2)

                  3 Einwegeigenschaft Urbild-Resistenz Es ist schwer zu vorgegebenem h(x) ein Urbild xzu berechnen

                  h1(x) ist eine gute Hashfunktion mit den schicken Eigenschaften 1 2 3 (n + 1 Bitlange)

                  h2(x) =

                  1 x wenn x die Lange n hat0 h1(x) sonst

                  h2(x) ist kollisionsresistent (Zwillingsresistenz) (wenn h1 so ist) h2 ist aber nicht urbild-resistent 1 x hat als Urbild x

                  2 ist die wichtigere Eigenschaft man kann notfalls noch ohne 1 auskommen Zum Beispielletztes Jahr MD5 - Hashfunktion x1 x2 waren konstruiert h(x1) = h(x2)x1 oplus x2 = 0 010 010 010 01 (1 jeweils im msb) Immer noch ein gewisser Schutz dazum Beispiel keine Kollision auf -Kleinbuchstaben oder 64 moglich

                  Schlussellose Hashfunktionen sollten alle 3 Eigenschaften haben

                  Fast-Kollision x1 x2 h(x1) oplus h(x2) hat wenig 1-Bits Manchmal zu vermeiden

                  partielle Urbilder Gegeben h(x) dann ist es schwer x bis auf wenige Bits zu bestimmen

                  SHA-1 theoretische Schwelle 280 praktisch 269 (16022005) 263 (19082005)

                  Geburtstagsparadoxon 23 Personen die Wahrscheinlichkeit dafur dass 2 am gleichen Tagim Jahr Geburtstag haben ist groszliger als 1

                  2

                  h(x) =dd-mmMit k Personen x1 xk lassen sich k2 Geburtstagspaare bilden Mit n Tagen h1 hn im Jahrlassen sich n2 Geburtstagspaare bilden davon sind n gute ( (h hprime) mit h = hprime)

                  81

                  mit k2 Paaren in n2 Paaren suchen und einen von n treffenHashfunktion hat 160 Bit Ausgabe wir brauchen nach Geburtstagsparadoxon 280 Personen ummit hoher Wahrscheinlichkeit den gleichen Geburtstag h mit 160 Bit zu erhalten

                  Allgemeines Konstruktionsprinzip x wird auf eine bestimmte Blocklange erweitert (pad-ding)

                  1 Nullpadding (auffullen mit Nullbits falls erforderlich)

                  2 1-Nullpadding (eine 1 und dann mit Nullbits bis zur Blocklange)

                  3 1-Null-Langenpadding (eine 1 und Nullbits (falls erforderlich) und die Lange (msb first64 Bit oder 128 Bit)) Am besten geeignet da bei 1 oder 2 automatisch Kollisionen ent-stehen x (mind 1 bit kurzer als die Blocklange) und x 0

                  xrarr b1 bk Blocke der Lange 512 Bit

                  Haufig Verlauf in 3 Phasen in openssl init update final

                  1 Initialisierung der Hashfunktion Innerer Zustand aus 32-Bit-Wortern H1H2H3H4H5initialisiert (mit Primzahlen π was-auch-immer)

                  2 Update A BCD E aus H1 H5 Runden mit Transformationen mit Eingabe bi 48|60|120 H1 = H1 oplus A H2 = H2 oplus B

                  3 Finalisierung Ggbf Padding 1 oder 2 mal das Update

                  4 Ausgabe H1H2 H5

                  Einfaches Beispiel

                  82

                  So lasst sich aus einem Kryptoalgorithmus ein Hashalgorithmus konstruieren In der Praxis wer-den andere Konstruktionen (Quirlfunktionen) verwendet MD5 SHA-1 SHA-2 (224 256 384512) Whirlpool ISO-

                  In OpenSSL MD2 MDC2 MD4 MD5 RIPEMD-128 RIPEMD-160 SHA-0 SHA-1 Allegebrochen ausser RIPEMD-160 und SHA-1 (evt MD2) dh es sind m1 und m2 bekannt mitMD5(m1) =MD5(m2) und m1 m2

                  512 Demonstration Falschung

                  Ist die Hashfunktion rsquoschwachrsquo kann man Kollisionen sogar konstruieren

                  Beispiel fur MD5 MD4 ist seit 10 Jahren schwach SHA-1 wird schwach

                  Zwei Postscript-Dateien mit unterschiedlichem Inhalt aber gleichem MD5-Hash Prinzip Datei1

                  Header

                  if x1 == x2 then strangestring = T1 else strangestring = T2 end

                  Rest

                  echo strangestring

                  Quelltext (B)(B)eq︸ ︷︷ ︸Bedingung

                  [tot] [Def] ifelse

                  83

                  Datei 2

                  Header

                  if x2 == x2 then strangestring = T1 else strangestring = T2 end

                  Rest

                  echo strangestring

                  (A)(B)eq︸ ︷︷ ︸Bedingung

                  [Def] [tot]

                  x1 und x2 unterscheiden sich nur sehr wenig und Header if x1 und

                  Header if x2 sind je ein Nachrichtenblock mit dem gleichen Hashwert

                  Sieht aus wie zweites Urbild-Angriff sind aber in der Tat zwei bose Zwillinge

                  Quelle wwwcitsrubdeMD5Collisions

                  Fazit Dokumente sind nicht mehr unterscheidbar

                  Kollision besteht aus zwei Dokumenten d1 d2 mit dem Hashwert

                  Bei MD5 kann man zwei rsquoDokumentersquo (Prafixe bis AB) konstruieren die den gleichen Has-hwert haben

                  Man kann aber zu einem Dokument d0 (dem Original) noch nicht ein zweites dprime0 konstruierenso dass d0 dprime0 eine Kollision bilden

                  Beispiel Ein SSL-Server-Zertifikat war (MD5) ununterscheidbar von einen SSL-ZertifizierungsstellenZertifikat womit man so viele (evt rsquobosersquo) SSL-Server-Zertifikate erstellen wie man wollte

                  MD5 ist nicht kollisionsresistent

                  MD5 ist noch 2 Urbild resistent

                  52 Unterschied MD5 und SHA

                  MD5 128bit Lange (Kollision 264)

                  SHA-224 224bit Lange (Kollision 2112)

                  SHA-256 256bit Lange (Kollision 2128)

                  84

                  mehr rotation lokale Unterschiede habe groszligere globale Unterschiede zur Folge bei SHA

                  53 Secure Hash Standard SHA-2

                  FIPS 180-2 US-Standard Nachfolger von FIPS 180 SHA-0 und SHA-1 sind die SHA-2-Algorithmen(noch nicht in OpenSSL) SHA-224 SHA-256︸ ︷︷ ︸

                  32 Bit

                  SHA-384 SHA-512︸ ︷︷ ︸64 Bit

                  SHA-224 bzw SHA-384

                  ist rsquoungefahrlsquo die linke Seite von SHA-256 bzw SHA-512

                  Basisfunktionench (xampy)|(sim xampz) Auswahlfunktionpar x and y and z Paritatsfunktionmaj (xampy)|(xampz)|(yampz) Mehrheit

                  Ausserdem Addition modulo Wortlange rot left und shift leftMessage M1M2 MN padding

                  1 paddinglength auf 5121024 Bit

                  51232 = 16 = 1024

                  64

                  2 Messageblock (16 Stuck) wird erweitertW0W1W2 W15︸ ︷︷ ︸

                  Messageblock

                  W79

                  Wt = rot(Wtminus3) + rot(Wtminus8) + rot(Wtminus14) + rot(Wtminus16) fur t = 16 79rot(x) = rotl7(x) + rotl18(x) + shl3(x)

                  3 8 temporare Variable a b c d e f g h mit Breite gleich Wortlange (32 oder 64 Bit) be-schreiben einen inneren Zustand der Funktion

                  SHA-Maschine bekommt initialen Zustand H0 H7 Die ersten 32 Bit der gebrochenenAnteile der Quadratwurzeln der i Primzahl Fur SHA-256 und SHA-512 i = 1 8 furSHA-384 und SHA-224 i = 9 16

                  85

                  Am Anfang jeder Runde a = H0 b = H1 c = H2

                  Jedes Wi erzeugt einen Schritt (kleine Zustandsanderung)

                  T1 = h + rot(e) + ch(e f g) + Kt + Wt

                  T2 = rot(a) + maj(a b c)

                  h = g g = f f = e e = d + T1 d = c c = b b = a a = T1 + T2K0 K80 Schrittkonstanten Bruchteile der dritten Wurzeln der ersten 80 Primzahlen80 Schritte in einer Runde

                  4 XOR-Operationen H0H1 H7 minusrarr H0 oplus aH1 oplus b H7 oplus hHi beschreiben den inneren Zustand nach Runde Hi am Anfang initialisiert

                  5 Ausgabe ist H0 H7 am Ende

                  To do ware auch interessant fur die Prufung

                  Es wird eine neuer SHA-3 gesucht Voraussetzungen

                  1 Nachrichtenexpansion muss komplexer werden

                  2 Nachrichtenblocke mussen positionsabhangig werden (Skein tweakable

                  3 innerer Zustand muss groszliger werden (2x Hashlange)

                  531 Problem bei MD5 und SHA-0

                  Beispiel 1 Innerer Zustand zwischen einzelnen Schritten hat Bits die die folgenden Bitsmehr oder weniger beeinflussen Damit sinkt die Komplexitat beim Brechen Besondere Bitsfuhren zur Reduktion der Anzahl der Gleichungen und erlauben eine schnelle Konstruktion vonspeziellen Zwillingen m1m2 mit MD5(m1) =MD5(m2) m1 oplus m2 = viele Nullen

                  Parallel hashen rdquoKontostand -20073ldquo und rdquoKontostand +700ldquo Ab -2 bzw +7 entstehen un-terschiedliche innere Zustande Nachkommastellen bei dem zweiten String anpassen um dieUnterschiede auszugleichen

                  86

                  Aktuelle Angriffe erzeugen keinen zweiten Zwilling sondern rsquonurrsquo falsche Zwillinge Zu einemguten gibt es keinen schlechten Zwilling

                  Beispiel 2 Es gibt zwei Zertifikate mit unterschiedlichen Inhalten und gleichem MD5-HashDas sind dann aber 2 schlechte Zertifikate MD5 ist also nicht kollisionsresistent aber momentanzwillingsresistent

                  SHA-1 hat momentan eine Komplexitat von 263 anstelle von 280 fur Kollisionen

                  mH(m) (H(m) aus vertrauenswurdiger Quelle) rArr m kann nicht unbemerkt verandert werdenManipulation Detection Codes () Das ist keine Prufung des Ursprungs Um zu prufen ob maus einer bestimmten Quelle stammt benutzt man MACs

                  532 MACs (Message Authentication Codes) (Prufsummen mit Schlusseln)

                  Sei k ein geheimer Schlussel den nur Alice und Bob kennen m ist die Nachricht BerechneHk(m) = h keyed Hash Die Hash-Prufwerte sind also Schlusselabhangig

                  (m h) mit h aus vertrauenswurdiger Quelle

                  bull Veranderungen sind erkennbar

                  bull Nur mit Kenntnis von k kann man h berechnen also nur mit dem Schlussel kann man denPrufwert falschen

                  Empfanger der k kennt kann n auf Integritat prufen Um sich vor Angreifern zu schutzen mussfur eine Prufung der Prufwert geschutzt werden

                  Hk(mprime) = h

                  (m1 h1)(m2 h2)

                  rarr (m h) muss verhindert sein

                  87

                  Standardisiertes Verfahren fur Keyed hash auf der Basis von MDCs RFC 2104 in OpenSSL zufinden HMAC)

                  H(k oplus auszligeres Padding H(k oplus inneres Padding m))︸ ︷︷ ︸512- oder 1024-Bit-Blocke

                  k linksbundig aufgefullt mit Nullen inneres Padding = 0x36 0x36 auszligeres Padding = 0x5c0x5c Langenpadding am Ende des inneren H

                  Berechnen Sie mit OpenSSL und dgst -c oder -hex den Hashwert der leeren Datei

                  henrykgleam henryk $ openssl dgst -c -hex -md5 devnull

                  MD5(devnull)= d41d8cd98f00b204e9800998ecf8427e

                  henrykgleam henryk $ openssl dgst -c -hex -sha1 devnull

                  SHA1(devnull)=

                  da39a3ee5e6b4b0d3255bfef95601890afd80709

                  openssl dgst -sha256 -hmac 1234567890 devnull

                  HMAC-SHA256(devnull)= ba92e0bfa35d8a018831f3675f0b4314c8468d4d96e6981b85ba3390c23308fd

                  HMAC

                  To do vervollstandigen

                  Mac mit Hashfunktion K- Schlussel H-Hashfunktion

                  H(K oplus oPadH(

                  0x565656︷ ︸︸ ︷K oplus iPad︸ ︷︷ ︸Bitlange H

                  n))

                  K n1 rarr Mac(n1K) = m1

                  K nprime = n1||langenpadding ||n2

                  (K nprime) rarr HInitialisiert mit m1(n2) = m2

                  ISO-10118-32004

                  88

                  54 Whirlpool

                  Basis fur eine Hashfunktion ausgehend von einer einzigen Verschlusselungsfunktion

                  Aus der Wikipedia (unter GNU Free Documentation License)

                  WHIRLPOOL ist eine kryptografische Hash-Funktion die von Vincent Rijmen und Paulo SL M Barreto entworfen wurde Sie wurde nach der Whirlpool-Galaxie im Sternbild der Jagd-hunde benannt

                  Whirlpool funktioniert mit Daten von weniger als 2256 Bit Lange und gibt einen Hash-Wert von 512 Bit aus

                  Die Autoren haben erklart dass Whirlpool nicht patentiert ist und es nie sein wird Whirl-pool darf kostenlos zu jedem Zweck verwendet werden Die Referenz-Implementation ist ge-meinfrei

                  The WHIRLPOOL algorithm has undergone two revisions since its original 2000 specifi-cation In the first revision in 2001 the s-box was changed from a randomly generated one withgood cryptographic properties to one which has better cryptographic properties and is easier toimplement in hardware In the second revision (2003) the diffusion matrix was changed

                  People incorporating WHIRLPOOL will most likely use the most recent revision ofWHIRLPOOL while there are no known security weaknesses in earlier versions of WHIRL-POOL the most recent revision has better hardware implementation efficiency characteristicsand is also likely to be more secure

                  E

                  +

                  H

                  H

                  m

                  AES-Variante

                  i-1

                  i-1

                  i

                  55 Zusammenfassung

                  To do oben einsortieren

                  89

                  Manipulation Detection Codes MDCsHashfunktionen MD5SHA-1SHA-2Allgemeines Konstruktionsprinzip aus Langenpadding und Iterationen

                  bull MACsKeyed Hash HMAC mit Hashfunktion aufgebaut aus prefix und suffix

                  bull CBC-MAC Nachrichtenblocke m0m1 mk

                  + +

                  MACc c c

                  K

                  m

                  m m

                  0

                  1

                  1

                  2

                  k

                  k+1

                  Risiko Weil keine Langeninformationen dabei sind ist es anfallig gegen Einsetzen undAustauschen Wird gerne Verwendet bei Anwendungen die feste Langen haben zBChipkartenCBC-MAC-verbessert

                  K

                  DES

                  1

                  K2

                  K3

                  larrminus CBC-DES3-MAC

                  Benutzt zB beim digitalen Tachograph

                  Es gibt zwei Grundlegende technische Mechanismen Ohne Schlussel und mit Schlussel Nur mitSchlussel lasst sich spater der richtige MAC-Wert ausrechnen und bestimmen dass die Nachrichtnicht verandert wurde und vom richtigen Absender kommt

                  90

                  56 Digitale Signaturen

                  To do einsortieren

                  Definition

                  s ist die Signatur zu einer Nachricht n mit einem Signaturverfahren S und einem Verifikations-verfahren V

                  S N times D︸︷︷︸Signaturschlussel

                  rarr s

                  V N times E︸︷︷︸Verifikationsschlussel

                  timess rarr ja nein

                  V(n e S (n d)) = 1

                  V(n e S (nprime d)) = 0 =( n eprime S (n d)) = 0

                  RSA

                  S (n d) =

                  V(n s e) = E(e s)eqH(n)

                  openssl dgst -sign keyrsa -hex nulltxt

                  openssl -sign keyrsa -sha256 -out nullsig nulltxt

                  openssl rsautl -in nullsig -encrypt -inkey keyrsa -raw -hexdump

                  in Beta openssl sha256 -hex nulltxt

                  Anstatt der Symmetrischen Verschlusselung wie bei MAC kann man auch asymetrische Verfah-ren verwenden

                  1 h mit Namen (0D) in ASN1 Struktur 0001 FF FF 00 (ASN1-Struktur)

                  2 Padding

                  3 rsquoEntschlusselnrsquo

                  4 rsquoVerschlusselnrsquo

                  5 ASN1 Struktur Hash OID Wert rausziehen

                  91

                  6 vergleichen 0 1

                  openssl hatte in den fruheren Versionen einen Fehler in der Signaturprufung

                  langer RSA Schlussel

                  exponent e klein (3)

                  lange Signatur S

                  S 3 = h

                  wenn h sehr lang ist konnte man folgendes machen

                  h= (0001FF00ASN1 rsquomullrsquo)

                  man konnte den rsquoMullrsquo so verandern das h = s3 (also so lange verander bis h dritte Wurzel vons ist)

                  Es wurde nicht uberpruft ob am Ende der ASN1-Struktur auch das Ende der Daten ist

                  siehe Webseite RSA Zertifikate mit Exponenten 3

                  To do alt

                  Digitale Signaturen schutzen die Integritat und die Authentizitat Wir betrachten hier welche dieauf asymmetrischen Verfahren basieren Symmetrische gibt es werden aber in der Praxis nichtbenutzt Es gibt 2 Typen

                  1 RSA

                  2 DSA

                  561 RSA

                  m = p middot q (2048 Bit)Exponent e klein (64 Bit)Exponent d groszlig mit e middot d equiv 1 mod (p minus 1)(q minus 1)

                  xrarr c = xe mod m (offentlich)cd equiv x mod m (geheim)xed equiv x

                  92

                  Man rechnet zuerst xrarr s = xd mod m Das kann nur derjenige der uber den privaten Schlusseld verfugt Aus s rechnet man se mod m = (xd)e mod m equiv xemiddote mod m = x Bei RSA konnenwir die Rolle vom privaten und offentlichen Algorithmus vertauschen so dass folgt Nur wer dkennt kann zu x ein s erstellen so dass se equiv x mod m ist

                  Anwendung dafur Digitale Signatur Wir haben Nachricht M und erstellen daraus einen PrufwertH(M) mit einer Hashfunktion und rechnen

                  H(M) = x minusrarr s = xd mod m

                  Dann ist (M s) das digital signierte Dokument M (und s die Signatur)

                  To do einsortieren neu

                  Signatur mit Anhang (with appendix) (m sig)-Signierte Nachricht

                  Ver(vm sig)

                  Signatur mit Nachrichtruckgewinnung (with (partial) message recovery) (m1mprime2) = mprime so dassmprime2 ein Teil der Nachricht m = m1||m2 enthalt

                  Ver(vm1mprime2) (partial recovery)

                  Ver(vminusmprime) (complete recovery)

                  In RSA

                  PKCS1 ver 15 Signatur mit Appendix

                  PKCS1 ver 21 (noch nicht in OpenSSL)

                  To do ende einsortieren

                  Prufung (M s) rarr H(M) = x Ist se mod m = x Nur wer das d hat kann das Paar (M s)

                  erstellen und ist damit Inhaber des Dokuments

                  562 Eigenschaften eines asymmetrischen Verschlusselungsverfahren

                  Alice kennt den offentlichen Schlussel von Bob Bob kennt seinen geheimen Schlussel

                  93

                  Alice123 Bob Alice Bob123offB gehB gehA offA

                  EoffB(m) = c rarr DgehB(c) = m rarr

                  MS gehA

                  (m s)

                  rarr

                  Voffa(m s) =

                  0 ungultig1 gultig

                  Mehrere Alices konnen an Bob schreiben Entschlusselung mit dem geheimen Schlussel vonBob Hier wird eine Nachricht so verschlusselt dass man die Nachricht aus c zuruckgewinnenkann

                  Alice sendet an alle Bobs Hier wird ein Paar erzeugt dass in einen Verifikationsalgorithmusgestopft werden kann der dann ja oder nein sagt

                  Es ist Zufall dass man mit RSA sowohl einen Verschlusselungsalgorithmus als auch einenSignaturalgorithmus erstellen kann Mit anderen geht das nicht

                  Hatte man nicht die Urbildresistenz der Hashfunktion konnte man ein s nehmen und dazu aus-rechnen se mod m = x jetzt konnte man zu dem x ein Urbild M ausrechnen und bekame einPaar (M s) dass gultig signiert ist Dazu kommen in Wahrheit noch Padding und Objekt Identi-fier der angibt womit signiert wurde und Parameter

                  30 = SEQUENCE06 = OID2B 0E 03 02 1A = SHA12A 86 48 86 F7 0D 01 01 01 = rsaEncryption05 = NULL Bezeichner fur die leere Menge hier bedeutet es keine Parameter04 = OCTET STRING02 = INTEGER03 = BIT STRINGSchema Tag Length Value

                  Das ganze lasst sich mit openssl asn1parse erfahren (asn1 = Abstract Syntax Notation 1)Schlussel immer SEQUENCE SEQUENCE OBJECT PARAMETER BIT STRING bzw Se-quence aus OID und Bitstring Das erste Byte in einem Bitstring gehort nicht zum Bitstring dazusondern gibt die Nummer der von hinten ungenutzten Bits an

                  OID-Liste httpwwwalvestrandno

                  Mhminusrarr

                  SHA-1

                  H minusrarr

                  Padding

                  00 01 FF FF 00 b c b H c

                  Identifier Oktetstring

                  Padding nach PKCS1 v15

                  ASN1 Objektidentifier fur SHA-1 (131432) wird als 2B 0E 03 02 1A codiert

                  94

                  xyabcd (Dot-Notation)darr

                  bx middot 40 + yc babcdc1 Byte Byte (Oktett)

                  12840113549127 als Ubungsaufgabe

                  563 RSASSA-PSS-Padding

                  SSA Signature Scheme with Appendix

                  PSS Probabilistic Signature Scheme

                  RFC 3447 (siehe figure 2)

                  8 zero salt

                  h

                  0000 01 salt

                  +MGF h

                  maskiertes seed BC00 1024

                  Bits

                  zu 0

                  setzen

                  soviele dass die Eingabe

                  kleiner als der Modul wird

                  Eingabe fuumlr die Signatur

                  M l(M) lt= 2^(64)-1 bei SHA-1

                  20 Byte 20 Byte

                  To do start einfugen

                  MGF-Maskengenerierungsfunktion (beruht auf der Hash-funktion)

                  95

                  MGF rArr DBmask dann DB oplus DBmaskNullungminusminusminusminusminusminusrarr maskedDB

                  Nullung-Nullung der oberen Bits so dass maskedDB kleiner als Modul ist

                  Signieren (EMSA-PSS)+(RSA-Verschlusselung)

                  Verifikation (RSA Op)

                  1 RSA-Operation

                  2 EM

                  Prufung ob BC am Ende

                  H abspalten und mit MGF DBmask erzeugen

                  XOR mit Rest von EM

                  DBprime = 0000︸︷︷︸Nullungsfehler

                  0001 Salt

                  00 Label mhash SaltHashminusminusminusminusrarr Hprime

                  = H

                  Jede Eingabe in die RSA-Operation ist pseudo zufallig (Jede Eingabe hat einen neuen Signa-turwert)

                  Angenommen man wendet die RSA-Operation direkt auf m an

                  mprime-Signatur mprime = md mod n

                  m1m2

                  m1 rarr mprime1 mod n = mprime1

                  m2 rarr mprime2 mod n = mprime2

                  Verifikation

                  (m1m2) mod n rarr (m1 middot m2)d = md1md

                  2 = mprime1 middot mprime2 mod n

                  (rsquoMan kann mit zwei Signaturen eine andere erzeugenrsquo)

                  96

                  To do ansehen

                  Unsicher zeitaufwendig kann leicht gebrochen werden

                  m rarr mprime = md mod n

                  re = rprime mod n

                  chosen message m middot rprime rarr (m middot rprime)d mod n = md middot red mod n = mprime middot r mod n

                  (mprime middot r) middot rminus1 mod m = mprime

                  (sieht nach Zufallszahlen aus aber die kann man auf eine vorher gewahlte Nachricht zuruck-rechnen)

                  To do ende einfugen

                  Nachricht M mit |M| lt 264 minus 1 wird mit Hashfunktion h gehasht Davor kommen 8 Zerobytedanach ein Saltwert (Saltwert wird benotigt fur die Auswertung der Signatur und wird verstecktin der Signatur) Auf das Gesamte wird die Hashfunktion h erneut angewendet

                  Verstecken des Saltwerts --0000 (rarr eventuell leer) 01 salt-- oplus mit einer Maske gebildetaus dem Hashwert und einer Maskengenerierungsfunktion

                  An den Anfang der Eingabe fur die RSA-Signatur werden 0-Bits so gesetzt dass die Eingabefur die RSA-Signatur kleiner als der Modul ist Wenn m volle Bytelange hat wird das obersteBit gleich 0 gesetzt (RSA-Signatur ()d mod m mit m = p middot q) An das Ende der Eingabe fur dieRSA-Signatur wird BC angehangt

                  Durch den Saltwert wird das Ergebnis zufallig und schwer vorhersagbar Wird leider nicht oftverwendet da die Maskengenerierungsfunktion Chipkarten teuer machen wurde

                  Es existiert eine DIN Variante zum v15 PKCS1 DIN-RN-Padding00 02 Zufallsbytes(ohne 00) 00 Identifikator Oktettstring

                  564 DSA

                  Vergleich ElGamal und elliptische Kurven

                  K-elliptische Kurve y2 = x3 + ax + b mod p

                  97

                  p-Primzahl ( 2 3)

                  Punkte auf der Kurve bilden eine Gruppe E(k)

                  P + Q = R k middotG isin E(k)

                  G ein Punkt (Generator) mit groszliger Ordnung n

                  1 middotG 2G 3G n︸︷︷︸sehr groszlig

                  middotG = 0

                  n ist eine Primzahl und G 2G nG = 0 ist die gesamte Gruppe E(k)

                  Signaturschlussel t-zufallig aus 1 n minus 1 Verifikationsschlussel ist P = t middotG

                  Standard FIPS 186-3 rarr finde den Fehler

                  To do ende einfugen

                  p g Generator gpminus1 equiv 1 mod p gpminus1

                  x 1 mod p

                  Geheimer Schlussel xoffentlicher Schlussel y = gx mod pk(gkm middot yk) = c

                  Parallel bei elliptischen Kurven G geheim x offentlich Y = x middotG

                  (k middotGm middot k middot Y)

                  DSA auch bekannt als DSS FIPS-186

                  Primzahl p (hat zB 1024 Bit im Standard variabel) so gewahlt dass pminus 1 einen Primteiler derLange 160 Bit enthalt q|p minus 1 mit |q| = 160 BitAusserdem Es gibt einen Generator g mit der Eigenschaft gq equiv 1 mod p Das findet man

                  indem man einen h Generator in mod p auswahlt und g = hpminus1

                  q hpminus1 equiv 1 mod p ausrechnet

                  x geheimer Signaturschlussel mit 160 Bit gx mod p ist der offentliche Schlussel

                  Signaturerstellung Nachricht M Hashwert h(M) = H ausrechnen Generiere Zufallszahl k mit160 Bit (k isin 1 n minus 1) und berechne

                  To do neu

                  k middotG = (x y) r = x mod n

                  98

                  s = hminus1 middot (h + tr) mod n

                  (r s) ist die Signatur

                  To do ende neu

                  r = (gk mod p) mod q und s = (kminus1(H + x middot r) mod p) mod q r und s sind Exponenten furmod p werden aber nochmal mod q genommen um Platz zu sparen (r s) wird die Signaturwerden (s 0 mod q r 0 mod q)

                  Signaturverifikation Berechne w = sminus1 mod qu1 = H middot w mod q u1 = H middot w + i middot qu2 = r middot w mod q

                  Berechne

                  gu1 middot yu2 equiv gHmiddotsminus1middot gxmiddotrmiddotsminus1

                  equiv gHmiddotk(H+xmiddotr)minus1middot gxmiddotrk(H+xmiddotr)minus1

                  equiv gHmiddotkmiddot(H+xmiddotr)minus1+xmiddotrmiddotk(H+xmiddotr)minus1

                  equiv gkmiddot(H+xmiddotr)middot(H+xmiddotr)minus1

                  equiv gk mod p

                  Prufe also ob (gu1 middot yu2 mod p) mod qequiv r

                  Die Signatur zu M ist (r s) mit r und s haben 160 Bit so dass man 320 Bit Signatur hat (kleinerals die 1024 Bit Signatur von RSA)

                  Um den geheimen Schlussel zu bestimmen muss man den diskreten Logarithmus mod q be-rechnen und das gilt als schwer

                  565 ECDSA - DSA mit Elliptischen Kurven

                  K - elliptische Kurve mit Punkten mod pG - Generatorpunkt G hat Ordnung q [q middotG = 0] q Primzahlx - Restklasse mod q Y = x middotG

                  r = [(k middot G)1] mod q (rarr 1 Koordinate mod q) s = kminus1(h + x middot r) mod q [u1 middot G + u2 middot Y]1

                  mod qequiv r

                  700 Bit fur alle Parameter

                  99

                  To do neu

                  ECDS DSAGenerator

                  G g gq = 1 mod pdA = [1 q minus 1]

                  zufalligPA = dA middotG auf E pA = gdA mod p

                  Signatur k isin [1 q minus 1] r = (gk mod p) mod qr = x mod q

                  s = kminus1 middot (h + dA middot r) mod q

                  h ist genauso lang wie q (gleiche Bitlange)

                  h sind die linken Bits von H(n)

                  (Bem RSA ist bei Elipt Kurven nicht einsetzbar deshalb ist DSA eine gute alternative)

                  link draft-lochter-pkx-brainpool-ecc-03 - eine art RFC zu Brainpool

                  openssl ecparam -name brainpoolP256r1 -param_enc explicit -noout

                  E =(x y) y2 = x3 + Ax + B mod p

                  Dann ist G = 04x (in einer Prufung ware interessant zu wissen was das fuhrende Bytebedeutet und welche Varianten es gibt)

                  openssl ecparam -name brainpoolP256r1 -genkey

                  -param_enc explicit -noout gt eckey

                  (pub - offentlicher Punkt)

                  openssl dgst -sha256 -sign eckey eckey gt ecsig

                  xxd -p ecsig

                  openssl asn1parse -i -in ecsig -inform DER

                  Man erhalt die beiden Integers r und s

                  (Bem bei Eliptischen Kurven ist die Bitlange kurzer da Algorithmen hohere komplexitat als so

                  100

                  haben)

                  (Hausaufgabe erzeuge zwei Kurven (512Bit - Brainpool bzw 521 NIST) mit anderen Hash-funktionen (mdripemd whirlpool) Signatur (rs) )

                  (Bem siehe Wikipedia El C DSA r=0 Abfrage weil sonst dA keine Rolle spielt s= 0 Abfrageweil man sonst mit minusz = r middot dA mod q den geheimen dA ausrechnen kann)

                  [Spickzettel zur HA

                  h-linke Bits des Hashwertes

                  n1 = h middot sminus1 mod q

                  n2 = r middot sminus1 mod q

                  V = n1 middotG + n2PA = (x y) r = x mod q

                  v = gn1 middot pn21 mod p r = v mod q

                  (r rarr 0 1 jeweils)

                  h middot sminus1 middotG + rsminus1PA = h(k(k + dAr)minus1 middotG + r(k(h + dAr)minus1)dAG = (hk + rkdA)(h + dAr)minus1G = V

                  = k (h + rdA) middot (h + dAr)minus1︸ ︷︷ ︸=1

                  G

                  = k middotG

                  ]

                  Magma

                  p=StringToInteger(rsquorsquo16)

                  a=StringToInteger(rsquorsquo16)

                  b=StringToInteger(rsquorsquo16)

                  IntegerRing(p)

                  E=EllipticCurve([KaKb])

                  G=E[KStringToInteger(rsquo1Halfte Generatorrsquo16)

                  101

                  KStringToInteger(rsquo2Halfte Generatorrsquo16)]

                  Jetzt kann man rechnen

                  qG eq E0

                  true

                  mdashmdashndash

                  qG

                  (010)

                  mdashmdashmdash

                  Kq=IntegerRing(q)

                  dA=1+Random(q-2)

                  PA=dAG Prufung ob ungleich Null fehlt noch

                  h=K12121212121212121212121212121

                  k=1+Random(q-2)+1damit keine Null rauskommt

                  X=kG

                  x=X[1]

                  r=(IntegerRing()x) mod q

                  s= (Kqk)ˆ(-1) ((Kqh)+ r dA)

                  rs

                  Verifikation

                  u1=h(Kqs)ˆ(-1)

                  u2=r(Kqs)ˆ(-1)

                  102

                  Y=(IntegerRing() u1)G+( IntegerRing() u2) PA

                  Y

                  ((IntegerRing() Y[1]) mod q) eq r

                  =rArr siehe Verzeichnis

                  Prufen ob Openssl gut gerechnet hat

                  OpenSSL

                  wie erzeugt man den offentlichen Schlussel openssl ec -in eckey -pubout

                  openssl ec -in ecpub -pubin -text -noout

                  -pverify

                  To do neu-ende

                  To do neu-20090617

                  Bem Attributes muss die leere Menge sein und darf nicht weggelassen werden

                  SHA1 nur noch zur Unterscheidung benutzen

                  57 Widerrufen von Zertifikaten

                  siehe rfc5280 S53

                  Erste Sperrliste

                  Ist eine Liste in der die Nummern der gesperrten Zertifikate stehen

                  Beispiel CA erstellen

                  perl ˜optopenssl-100-beta2appsCApl -newca

                  103

                  Zertifikat fur den Nutzer erstellen

                  perl ˜optopenssl-100-beta2appsCApl -newreq

                  Signieren

                  perl ˜optopenssl-100-beta2appsCApl -xsign gt aypem

                  Man kann noch weitere Zertifikate erstellen allerdings wird dann der pem Key geloscht Mankann dann feststellen dass die Seriennummer nur um eins erhoht wird Man kann auch openssl ca -gencrl -out -cl1pem -crlhours 12benutzen und dabei die Seriennummer selber angeben

                  openssl crl -text -in crl1pem -noout

                  Zertifiziert wird nur der Teil zwischen Certificate Rev List bis No Revok Cert Da dieser Teilsehr klein ist ist es recht schwer Kollisionen mit SHA1 dafur zu konstruieren

                  Dann gibt es noch Informationen wann es die nachsten Updates gibt (Last Update Next Update(optional)) Alte Sperrlisten bleiben aber Gultig die neuen gelten nur zusatzlich

                  Zertifikat ungultig machen

                  openssl ca -gencrl -out cr13pem -revoke demoCAcertsF8C85pem -crl_reason keyCompromise -crlhours 12

                  aktualisieren

                  openssl ca -gencrl -out cl4pem -crlhours 12

                  Nun nachsehen mit

                  openssl crl -text -in crl4pem -noout

                  To do neu-ende

                  104

                  58 Was es noch so gibt

                  581 blinde Signaturen

                  Gut fur anonymes digitales Geld Normalfall Bank kriegt digitalen Scheck belastet das Kontound schickt einen von ihr signierten Scheck zuruck Problem Wenn derjenige der den Scheckspater einlosen will zur Bank geht kann diese den Scheck zum Aussteller zuruckverfolgen

                  Mit anonymen Signaturen Aussteller erzeugt viele (zum Beispiel 1000) unterschiedliche Schecksmit je einer Zufallszahl und dem gleichen Betrag aber ohne Name Kontonummer etc Diese1000 sendet er verschlusselt an die Bank Die Bank sucht sich zufallig (das ist wichtig) 999davon aus und fordert fur diese den Schlussel an Die Bank entschlusselt diese Schecks unduberpruft ob uberall der gleiche Betrag drinsteht Wenn ja dann ist davon auszugehen dass auchder auf den gleichen Betrag lauft Das Konto wird entsprechend belastet und der Scheck wirdblind (also ohne hineinzusehen) signiert und dem Aussteller zuruckgeschickt Der packt denScheck aus (wobei die Signatur gultig bleibt) und hat jetzt einen von der Bank signierten digita-len Geldschein den die Bank nicht mehr zuruckverfolgen kann

                  582 anonyme Signaturen

                  Beispiel Elektronische Wahlen wo man nicht mochte dass man weiszlig wer es unterschriebenhat

                  6 Zertifikate

                  To do neu-20090520

                  m rarr Signatur und Verifikation

                  mprime rarr Signatur und Verifikation

                  Vertrauen in den offentlichen Schlussel

                  Schutzen den Schlussel durch Prufwert den Prufwert Schutzen wir durch eine Signatur Vertrau-en eines Schlussel ubertragt sich an einen anderen Das ganze scheint sich im Kreis zu drehen

                  Aber es handelt sich um einen Graph (Der Graph muss nicht transitiv sein - A vertraut BB vertraut C aber A vertraut nicht unbedingt C) Zb Baum mit Wurzel (PKI) dann gibt es

                  105

                  vertrauens-Normen die den Ebenen eines Baumes entsprechen Die andere Variante ist das PGPWeb of Trust bei dem der Baum ungeordneter ist und eine Art Vertrauensbereiche hat

                  Dass eine Zertifizierungsstruktur funktioniert braucht es klare Regeln fur den Umgang mit Zer-tifikate

                  Standards

                  ANSI X509

                  X500

                  openssl internet Profil

                  RFC 5280 (alt 3280 2459)

                  Definition Zertifikat bindet (durch Signatur) einen offentlichen Schlussel an einen Namen(Subjekt)

                  (siehe rfc5280 S16 - Certificate= SEQUENCE und TBSCertificate) (in TBSCert er-scheint rsquosignaturersquo recht fruh damit schon mit dem Hash-Algorithmus begonnen werden kannaber warum steht in Certificate dann nochmal signature -Bessere Ordnung)

                  Zertifikat bei CA-cert runterladen und dann mit openssl ansehen

                  openssl x509 -in class3crt -text -noout

                  openssl asn1parse -i -in class3crt

                  Zur ausgabe des ersten (siehe auch rfc5280)

                  Version es gibt momentan 3 Versionen

                  Serial Number ist ein Integer kann so groszlig sein das man nicht mehr in den Hash-Block mehrkommt (bis 20 Byte geht)

                  Bundesnetzagenturde 15549pdf sagen dass Serien Nummern mindesten 20 Bit Entropie ent-halten sollen damit SHA-1 bis 2010 benutzt werden kann (rsquoQualifizierte Signaturrsquo)

                  To do siehe 606 Gultigkeit

                  validity Wird oft als Gultigkeitszeitraum ubersetzt was aber nicht ganz richtig ist da nur ange-geben wird wann das Zertifikat nicht gultig ist Besser ware rsquonicht Gewahrleistungszeitraumrsquo

                  106

                  Die validity gibt (nach dem Standard) den Zeitraum an in der die CA gewahrleistet aussagenuber den Zustand des Zertifikats zu geben (Gultig ODER nicht Gultig - deshalb muss das Zer-tifikat also nicht unbedingt gultig sein)

                  To do neu-ende

                  To do neu-20090527

                  Bemerkung In der Objectstxt findet die Object-Identifier die OpenSSL kennt

                  To do neu-20090527-ende

                  Signatur Anwendung eines Schlussels Ob der Signaturersteller eine bestimmte Person ist istdamit nicht klar Immer gleichzeitig Authentizitat des Schlussels prufen

                  Dazu gibt es zwei Moglichkeiten

                  1 Anarchie = Web of Trust (Beispiel PGP)

                  2 Vertrauenswurdige dritte Instanz Certification Authority CA bzw ZDA (Zertifizierungs-diensteanbieter) Stellt ein Zertifikat aus das ist ein elektronisches Dokument welcheseine Identitat einem Schlussel zuordnet

                  Zertifikat (Name Schlussel ) und Signatur

                  Problem Im Zertifikat steht Name Schlussel usw und daran hangt eine Signatur Gegeben Nut-zer Alice mit Zertifikat daruber gibt es die CA1 die ihre Signatur zertifiziert CA1 hat selber einZertifikat mit einem Namen Schlussel usw und daran hangt wieder eine Signatur Das Problemverschiebt sich immer weiter nach oben Man bekommt eine Zertifikatshierarchie und benotigteinen aufgeblahten Riesenbaum mit einer Weltwurzel Im taglichen Leben haben sich 3-stufigeZertifikatshierarchien bewart Root signiert seine eigene Signatur Vertrauen in Authentizitat derNutzerschlussel ist fur alle Nutzer gleich Es bestimmt sich ausschlieszliglich durch die Authenti-zitat des Schlussels des Root CA Das Vertrauen in die Root CA verteilt sich auf die Nutzer

                  603 X509

                  X509 mittlerweile bei ISO RFC 3280 X509 Certificate and Certificate Revocation List (CRL)Profile Abschnitt 4

                  Version X509v3 Version 1 enhalt keine ErweiterungenSerial Number In der Regel 20 Byte muss immer eindeutig sein

                  107

                  Signaturverfahren fur das Zertifikat muss am Anfang (im ersten Block) stehen damit das Has-hen schon begonnen werden kannHerausgeber Name(eindeutig) C=Country O=Organisation CN=Common Name SN=Surname

                  Validity Gultigkeitszeitraum der Zeitraum indem die CA Gultigkeitsinformationen uber dasZertifikat bereitstellen willwirdmussInhaber Name (eindeutig im Bereich der CA) zur Person also stabile Daten SeriennummerVersicherungsnummer etcSchlusselinformationenErweiterungenDarunter die Signatur

                  In RFC 3280 steht dass nach dem 31 Dezember 2003 alle Zertifikate UTF-8 kodiert seinmussen

                  604 Erweiterungen

                  Man kann bei Erweiterungen festlegen ob diese Critical oder nicht sind Critical ist sowas wieeine Vorschrift nicht Critical ist sowas wie eine Information Kritische Erweiterungen mussenimmer ausgewertet werden wenn ein Programm sie nicht versteht darf es das Zertifikat nichtverarbeiten

                  To do neu

                  Per default auf false ist auszligerdem optionales Argument Wenn nicht critical dann ist es nur eineInformation Also critical muss man lesen und verstehen nicht critical sollte man lesen wennman sie versteht sollte man sich daran halten

                  To do neu ende

                  Basic Constraints

                  To do neu

                  Sagt ob es Zertifizierungsinstanz ist oder eine Endnutzer Instanz ist und in welcher Ebene essich befindet

                  To do Diagramm basteln

                  108

                  Ein interessantes Beispiel (goyacrt) findet man bei der Rechnerbetriebsgruppe

                  To do neu-ende

                  CA Siginalisiert ob es ein CA-Zertifikat ist (TRUE) oder nicht (FALSE) Dh ob das Zertifikatberechtigt ist weitere Unterzertifikate auszustellen

                  To do neu

                  Per default false es musste also nicht jedesmal CA FALSE angegeben werden

                  To do neu-ende

                  PATHLEN Beschrankt die Pfadlange Pathlen=0 heisst dass das Zertifikat zwar Nutzerzertifika-te ausstellen kann aber keine weiteren CA-Zertifikate Ist immer als Critical markiert

                  Subject Key Identifier und Authority Key Identifier Nicht kritisch Beschreiben die ver-wendeten Schlussel uber Hash-Werte zum Beispiel SHA-1 uber den Schlussel

                  Key Usage Kritisch (sollte kritisch sein zb bei GOYA nicht) Ist ein Bitstring der die Ver-wendung des Schlussels angibt Fur eine CA also zum Beispiel nur KeyCertSign NonRepu-diation ist eigentlich fur die Dokumentsignatur (content commitment) DigitalSignature ist furAuthentisierung oder allgemeine Signaturmechanismen Die beiden moglichst exklusiv setzen

                  To do neu

                  Nicht bei Endnutzerzertifikaten notig

                  To do siehe rfc5280 - KeyUsage -HA lesen

                  Merkmale

                  (0) DigitaleSignatur zur Authentifizierung (hat keine Auswirkungen auf spatere Zeitraume)(werden zu dem aktuellen Zeitpunkt gepruft)

                  (1) (ab X509v4) Inhaltsbindung[contentCommitment] (zb Nichtabstreitbarkeit ) (jetzt noch[nonRepudiation]) (werden zu dem Zeitpunkt zu dem sie erstellt worden sind gepruft)

                  (0) und (1) sind Endnutzerinformationen

                  nur ent-verschlusseln Schlussel zum verschlusseln von Zertifikaten geignet

                  109

                  keyCertSign==TRUE - wenn man nur Zertifikate damit signieren mochte (brauch man bei CAZertifikaten eigentlich sollte nur eines der Bits gesetzt sein) ansonsten sollte digitalSignaturegesetzt werden

                  Key usage zB A0=10100000 (Erste und dritte gesetzt) oder zB 88=10001000 (erstes undfunftes gesetzt)

                  authority information Nicht kritisch Feld in dem Daten des Herausgebers abgerufen werdenkonnen

                  Benutzt das OCSP-Online Certificate Status Protocol (gibt eine URI an wo man die Informatio-nen erhalten kann - spater mehr)

                  X509v3 Certificate Policies ASN1 Strucktur siehe rfc5280 S 33

                  System von Regeln fur die Ausgabe von Zertifikaten sowie den Betrieb der ZertifizierungstelleNutzer kann sich uber die Hirarchie der CA informieren (wichtig fur den Vertrauensaufbau)

                  CPS - Certificate Policy Statement und dann zwei moglichkeiten cPSuri (uri wo die Informationzu finden ist) oder userNotice (Freitext)

                  Bsp httpnasacanasagovnasacphtml dort findet man eine CPS

                  Wenn der Regelsatz dem CA Zertifikat zugeordnet ist (Bindung zB durch Root) ist es besserals wenn es nur dem EndNutzer Zertifikat zugordnet ist (Bindung nur durch die daruberliegendeCA)

                  Authority Key Identifier Kurzinformationen mit der man einen Schlussel identifizieren kannFur Endnutzer ist der Authority Key Identifier ein Bezeichner mit dem das zugohrige CA-Zertifikat zu finden ist Kann enthalten

                  KeyIdentifier - Schlussel ID

                  GeneralNames - Herausgeber Seriennummer

                  CertificateSerialNumber

                  Subject Key Identifier - SKI Schlussel ID hilft bei der Unterscheidung sollte eine moglichsteindeutige Nummer sein da aber nicht genau festgelegt wird ist die SKI nicht fur Uberprufungengeeignet

                  110

                  Subject Alternative Name IP Adresse URI Email Adresse (hat das rsquoatrsquo Zeichen welchesin kein Datentyp passt weshalb sie hierher (oder in den Issuer Alt Name) gehort soll alsrfc8224Name gespeichert werden (da dieser nicht groszlig klein sensitiv ist))

                  To do neu-ende

                  605 Erzeugung

                  To do neu

                  Bei OpenSSL gibt es zwei moglichkeiten mit Perl Script

                  perl ˜optopensslappsCApl -newca

                  openssl x509 -text -nout -in cacertpem

                  openssl req -text -nout -in careqpem

                  Diese Requests folgen dem Standard PKCS 10 - rfc2986

                  openssl ans1parse -in careqpem

                  Attributes [0] - Contextabhangiges Tag (nur an diesem Ort gultig) Codiert als A0 denn Con-textabhangige tags fangen mit 10 an im Gegensatz zu Universaltags die mit 00 anfangen(Beispiel fur Contextabhangige Tags siehe auch bei AuhtorityKeyIdentifier)

                  Im Request ist Set of Atritbute NICHT optional (aber kann leer sein)

                  To do neu-ende

                  Wie kommen wir eigentlich zu Zertifikaten Zertifikate kommen von einer CA also muss manzuerst ein CA-Zertifikat erstellen

                  Request Ich mochte ein Zertifikat haben PKCS10RFC2986openssl req

                  openssl req -new -x509 erzeugt gleich ein Zertifikat

                  openssl req -new -newkey rsa1500 -days 40 -out userreq ein neuer Schlussel undein Request Der Request enthalt die Informationen des Antragsstellers den offentlichen Schlusselein Challenge-Passwort (von der CA festgelegt) und eine Signatur uber diese Daten

                  111

                  openssl x509 -req -CA -CAkey -out -days 40

                  -in userreq -CAcreateserial -out userx509

                  -extensions usr_cert -extfile opensslcnf wichtig um v3-Zertifikate zu erzeu-gen

                  606 Gultigkeit

                  Der rsquoGultigkeitszeitraumlsquo (Validity) im Zertifikat ist der Zeitraum uber den sich die ausstellendeInstanz verpflichtet etwas uber die Gultigkeit des Zertifikats auszusagen

                  CRL Certificate Revocation List

                  OCSP Online Certificate Status Protocol

                  Sperrlistenformat auch in RFC 3280 Abschnitt 5 als X509-Variante festgelegt

                  OCSP version 1 RFC 2560

                  To do neu

                  Man kann dass conf bearbeiten

                  Ubungsaufgabe ein Zertifikatsrequest mit eigen Daten erstellen und zu zertifizieren

                  To do einsortieren

                  Die CA schmeiszligt eventuell Daten des Request raus

                  To do neu-ende

                  To do neu-20090624

                  Sperrlisten Enthalten

                  Version

                  Signatur

                  112

                  Herausgeber

                  LastNext Update

                  Sperrlisten Nummer (sollte monoton wachsen)

                  Liste der gesperten Zertifikate(jeder Eintrag enthalt ein Integer eine Zeit und evt CRLEntryExtension(CRLReason-Code siehe rfc5280 531))

                  Bemerkungen

                  Sperrlisten sind im DER-Format ( openssl -inform DER)

                  (Erweiterungen enthalten immer OID Octet-String)

                  Zu CRLEntryExtension CRLReason Code (6) (certificateHold-schwebend gesperrt) und (8)(removeFromCRL-kannwurde wieder entsperrt werden) sind besonders und sind eher nur furAuthosierung sinnvoll

                  Sperrlisten nehmen in der Praxis erhebliche groszligen ein

                  CRLEntryExtension wird von der Bundesnetzagentur nicht benutzt

                  RFC5280 532 sperrdatum (revocation date) darf nicht vor dem Zeitraum der vorherigen CRLliegen sonst ist es in der vorherigen Liste Gultig (ansehen)

                  Aufbau des Pfad zum Vertrauensanker (RFC 5280 S72) Das beschriebene Prufverfahren istnicht normativ vorgeschrieben es reicht wenn die Funktion gleich ist

                  httpwwwbundesnetzagenturdemediaarchive1343pps

                  Kettenmodel benutzt den Erstellungszeitpunkt (nicht Gewahrleistungs-Beginn) (Folie3)

                  httpwwwbundesnetzagenturdeenid85f55115e236d80fc18329992037142d0FAQ

                  Antwortss4_wphtml

                  To do neu-ende

                  To do 20090701-fehlt

                  113

                  61 Praktische Ausschlachtung von kryptografischen Algorithmen mitSMIME und PKCS7

                  Root-Zertifikat erzeugenopenssl genrsa 1200 gt cakeypem

                  openssl req -x509 -new -key cakeypem -config opensslcnf gt cacert (selbst-signiertes neues root Zertifikat mit eigenem Config Script)

                  Root-Zertifikat anschauenopenssl x509 -in cacert -text -noout

                  Nutzer der eigenen CA erstellenopenssl req -new -config opensslcnf -out usercert Erstellt mehrere Dateienauch privkeypem

                  Zertifikat erstellenopenssl x509 -req -in userreq -CA cacert -CAkey cakeypem -CAcreateserial

                  -out usercert -extfile opensslcnf -extensions usr_cert (Zertifikat fur usermit Extenstions Version 3 statt Version 1)

                  Senden einer signierten Nachricht (Nachricht in Neutxt)openssl smime -sign -signer usercert -in Neutxt -inkey privkeypem

                  -out neusmime -text

                  Erzeugt Datei neusmime mit Nachricht und Signature -text erzeugt den Eintrag fur den Con-tent Type vor der Originalnachricht in neusmime

                  Umwandeln der SMIME Nachricht in PKCS7 Nachrichtopenssl smime -pk7out -in neusmime -out neupk7

                  Das gesamte (ohne Inhalt der Nachricht eigentlich nur die Signatur) SMIME Dokument wirdin eine PKCS7 Struktur eingebunden

                  Anschauen mitopenssl asn1parse -i -in neupk7

                  Zertifikate ausgeben mitopenssl smime pkcs7 -in neupk7 -print_certs -noout

                  Zertifikate anschauen mitopenssl smime pkcs7 -in neupk7 -print_certs -noout -txt

                  Verifizierenopenssl smime -verify -in neusmime -CAfile cacert

                  Verschlusseln

                  114

                  openssl smime -encrypt -in Neutxt -out neusmime -text usercer

                  Nachricht ohne Signatur verschlusselt

                  Entschlusselnopenssl smime -decrypt -in neusmime -text -recip usercer

                  -inkey privkeypem

                  Fur die Einbindung in Browseropenssl pkcs12 -export -name Annie -inkey privkeypem

                  -in usercert -out userp12

                  Um auch das CA Zertifikat mit einzubindenopenssl pkcs12 -export -name Annie -inkey privkeypem

                  -in usercert -out userp12 [-certfile cacert -CAfile cacert -chain]

                  Private Schlussel auspacken openssl pkcs8

                  62 PKCS

                  PKCS Public Key Cryptography Standards

                  1 RSA3 Diffie-Hellman5 Cryptography mit Passworten6 Zertifikate7 Cryptographic Message Syntax8 private Schlussel9 Attributtypen10 Zertifikatsrequest11 Cryptographic Token12 Personal Information Exchange13 Elliptische Kurven15 Chipkarten Token Formate

                  621 PKCS7 15 November 93 RFC 3852

                  To do neu-20090708

                  CMS

                  Email (SMIME)

                  115

                  XML Signaturen XMLDSIG XMLENC

                  Dokument rarr signiertes Dokument

                  openssl genpkey -algorithm rsa -pkeyopt rsa_keygen_bits300mdash openssl -chek -text -noout

                  zu kleine Werte (iexcl256) fur den Schlussel werden nicht akzeptiert (Wert ist immer noch etwasklein) Aber die Ausgabe ist nicht ganz korrekt

                  openssl genpkey -algorithm rsa -pkeyopt rsa_keygen_pubexp1

                  ist leider moglich

                  63 CMS(Cryptographic Message Syntax)

                  rfc3852

                  SignedData

                  bull Version

                  bull Hash Algorithmus

                  bull gekapselter Inhalt

                  bull Certifikat Liste

                  bull Widerrufungsliste (Sperrinformationen)

                  bull

                  bull Signer Infos (Signaturen davon kann es mehrere geben elektronische Signatur nach demSignaturgesetz Signer Info enthalt selber noch einmal einen Signaturblock - der als Digi-tale Signatur aufgefasst werden kann)

                  ndash Versionndash Idndash Attributesndash Algondash sig Valuendash

                  bull Signer Id

                  bull Signed Attributes (zB Zeit Ort Message Digest) Die Signatur dieses Blockes wird er-stellt indem der Hash Wert (nur des Blockes) signiert wird Wenn es signed Attributesgibt sind also auszligerdem Hash Wert des Dokuments und Inhaltstyp(Contenttype) im Si-gned Attributes enthalten und erst dann wird der Signed Attributes Block signiert Es wirdjeweils er Hash-Algorithmus verwendet der oben genannt wird

                  116

                  Auszligerdem Signing Certificate

                  bull

                  Frage ist wo wird der Wert Signiert der sagt welcher Hash-Algorithmus verwendet wird Wennnicht konnte man eventuell den Algorithmus austauschen

                  Man konnte den Hash-Algorithmus als SignedAttribute einfugen

                  To do neu-ende

                  CMS (Cryptographic Message Syntax) Beschreibung des Formates mit dem man Krypto-nachrichten erstellen kann

                  Kryptographische Nachricht Struktur vorne Bezeichner hinten Daten Daten = irgendwasspannend Welche Typen gibt es eigentlich

                  Signed-data Content-Type Was jetzt kommt sind signierte Daten Liste der unterstuetzen Has-hfunktion dann gekapselter Inhalt dann eine Liste von Zertifikaten (optional) optionalSperrlisten dann Signaturbloecke (SignerInfo)

                  SignedData = SEQUENCE

                  Versionsnummer

                  Liste der unterstutzten Hashfunktionen

                  Ursprungliche Nachricht selbst

                  Liste von Zertifikaten Optional

                  Sperrlisten Optional

                  Signer Infos

                  SignedInfo = SEQUENCE

                  Versionsnummer

                  Signer Identifier (Wer der Signierer eigentlich gewesen sein soll)

                  Hashfunktionen die bei der Signatur verwendet wird

                  Signierte Attribute

                  Verwendete Signaturalgorithmus

                  Signaturwert

                  Unsignierte Attribute

                  SignerInfo = SEQUENCE

                  Versionsnummer

                  Signer Identifier (Wer der Signierer eigentlich gewesen sein soll)

                  Bezeichner des Hashalgorithmus mit dem die endgultige Signatur erstellt wird

                  Signierte Attribute Optional

                  117

                  Signatur Algorithmus

                  Signature SignatureValue

                  Unsigned Attributes Optional

                  SignerIdentifier = SEQUENCE

                  issuerAndSerialNumber

                  subjectKeyIdentifier (Eindeutiger Hinweis wer der Aussteller ist)

                  SignerInfo Signaturblock der eine Datenstruktur fuer eine Signatur bereitstellt Steht drin Ver-sionsnummer SignerIdentifier verwendeter Hash-Algorithmus dann signierte Attributeverwendeter Signaturalgorithmus Signaturwert unsignierte Attribute

                  SignerIdentifier Aussteller und Seriennummer oder Schluesselidentifier (subjectKeyIdenti-fier)

                  Signierte Attribute Sammlung von Attributen die signiert sind Was dabei sein sollte erstesAttribut Content-Type wenn die signierten Daten nicht nur Rohdaten sind sondern gekap-selte Daten eine s bestimmten Typs Ein weiteres nuetzliches Attribut Message-DigestDann Signing-Time

                  Content-Type Object-Identifier der einen bestimmten Typ impliziert

                  Message-Digest Hash der aus den Daten ausgerechnet wird Als Octet-String

                  Signing-Time Zeit von der behauptet wird dass die Signatur zu dieser Zeit geleistet wurde

                  Signatur Es werden die signierten Attribute signiert dort ist auch der Hash des Dokumentsals messageDigest enthalten Wenn keine signedAttributes existieren wird das Dokumentdirekt gehasht

                  Weitere sinnvolle signierte Attribute

                  Commitment-Type Was bedeutet die Signatur zum Beispiel virtuelle Poststelle Eingangs-stempel Auslieferung Einschreiben Urheberschaft gelesen Zeitstempel (spezielleSignatur eines authentischen Zeitservers) ist eine Information dass das Dokument vor-her existiert hat

                  Signing Certificate Beschreibt mit welchem Schluessel zu welchem Zertifikat ist unterschrie-ben wordenwelches Zertifikat moechte der Signierer zur Ueberpruefung verwendet ha-ben Austausch des Zertifikats fuehrt zu anderer Urheberschaft ist ein realer AngriffVerhindert die Urheberschaft auszutauschen (rfc2634 S 46) Folge mit Zertifikats HashIssuerSerial(Herausgeber und Seriennummer) (leider ist da SHA1 als Algorithmus festge-legt)

                  in rfc5035

                  Folge mit Hash-Algorithmus (optional default ist aber SHA256) Zertifikat Hash IssuerSerial (Nun Hash als Octet String)

                  Da der Wert des Hash Algorithmus optional ist ist diese Variante ruckwartskompatibel

                  118

                  Signing Location Ort an dem die Signatur geleistet wurde

                  Weitere nuetzliche unsignierte Attribute

                  Zeitstempel ist eine Information wann die Signatur existiert hat Hash uber die Signatur TimeServer davon Signatur

                  not after Information fur die Signatur

                  Countersignature Zweite Signatur (Gegenzeichnung) Signaturblock uber eine andere Signa-tur

                  (Mitsignatur Bestatigung eines signierten Dokuments wichtiges Feld fur Mehrfachsigna-turen)

                  Hashwert des signature Feldes (3 Hash Wert) nicht alle in einander gekappselt sonderansammlung von Signaturen

                  Archiv Zeitstempel neuer Hash-Algorithmus signiert Dokument alle Signaturen alle Attri-bute (signiert unsigniert)

                  Damit kann mann folgendes machen

                  2001 2009 2010

                  RS A512 S HA1 S HA256 S HA512

                  Dok S ignatur t1 t2cc at1TTYY^^bb at2 at3

                  Fur XML XML-DSIC XML-ENC

                  7 Wichtige Neuerungen bei den Versionsanderungen

                  bull Von 098 zu 099 Verbesserungen bei den Extensions von Certificate Revocation Lists

                  bull Von 097h zu 098 UTF8-Support fur das ca-Kommando

                  bull SHA1 ist nun default-Hash-Algorithmus statt MD5

                  bull Patentierte Algorithmen RC5 und MD2 mussen beim Kompilieren extra angegeben wer-den

                  bull Neue FIPS 180-2 Algorithmen SHA-224-256-384-512 wurden implementiert

                  119

                  bull Neuer Parameter -selfsign fur das ca-Kommando

                  bull IPv6 Support bei den Zertifikatserweiterungen

                  bull Ausweitung der Eliptischen Kurven Bibliothek

                  8 OpenSSL hintergehen

                  81 die eine Primzahl ganz klein erzeugen

                  bull Offnen einer Datei in genrsa cryptorsarsa_genc

                  bull Andern den Teil ldquo generate p and q rdquo so daszlig die eine Primzahl 10bit lang ist(bitsp=10 )

                  bull Wir erzeugen einen neuen rsa key openssl genrsa -out rsaweakpem 2048und erstellen hierdurch eine Primzahl mit 10 bit die andere zufallig (also so in etwa2038bit)

                  bull Wir schauen uns den key an openssl rsa -in rsaweakpem -text -nooutund sehen die eine Primzahl ist 35879 die andere hat 2046 bit Lange Das kann manlecker faktorisieren

                  bull Offnen cryptobnbn_primeh die Zahl kommt durch den kleinen Primzahltest durchdieser geht nur bis ca 17000

                  82 beide Primzahlen nah beieinander

                  bull Und wieder in rsa_genc (Zeile 136 in der do-while-Schleife hinter degenerate)

                  bull BN_copy(rsa-gtq rsa-gtp) wir setzen q gleich pBA_add_word(rsa-gtq 20) wir addieren 20 auf q

                  for(i=1 BN_is_prime_ex(rsa-gtq 5 ctx NULL) i++)

                  BN_add_word(rsa-gtq 2)

                  wir erhoehen q bis zur naechsten Primzahl

                  bull hierdurch erzeugen wir zwei Primzahlen die sich enorm ahnlich sind (wieder mit obigenKommandos) Der Angreifer kennt in diesem Fall den Exponenten damit ist das Verfahrenvollig unsicher

                  83 Vorschrift des BSI

                  01 le |log10 p minus log10q| also p gt10radic

                  2 lowast qDas kann man aber mit q =10

                  radic2 lowast p im Quellcode umgehen

                  120

                  84 Programmierung Zufallszahlenerzeugung und andere nette features

                  Die ldquocallbackrdquo Funktion gibt den Fortschritt bei Suche nach p und q als Punkt (Fermat Primzah-lentest) und Plus (Miller-Rabin-Test) aus

                  DatentypStruktur zum Speichern der auftretenden groszligen Zahlen Binarfeld BIGNUMp ist unsigned char

                  p = BN_bn2hex((RSA )pub_rsa)-gtn) Zum Ausgeben eines BIGNUMs

                  ((pub_rsa)-gtn)d[] einzelne Teile im Datenblock eines BIGNUMs editieren

                  Zufallszahlen findet man in cryptorandrandh rand_libc randc

                  Diese beiden Kombinationen vor entsprechenden Programmen i2d oder d2i intern to data datato internpub_rsa = d2i_RSAPublickey(NULL ampstr len) (lange von str) Transfor-miert Binardaten Zeichenkette in interne public Key Datenstruktur mit ASN1

                  S(buf) gibt Speicherplatz frei uberschreibt ihn vorher noch einmal mit Zufallsbytes

                  9 Zusammenfassung

                  bull Symmetrische Verschlusselungsverfahren

                  ndash DES

                  64 Bit Blockchiffre

                  16 Runden Feistelnetzwerk mit 48 Bit Rundenschlusseln

                  56 Bit Schlussellange plus 8 Paritatsbits

                  XOR Transformationsfunktion mit S-Boxenndash IDEA

                  64 Bit Blockchiffre

                  8 Runden Feistelnetzwerk mit je 6 middot 16 Bit Rundenschlusseln

                  128 Bit Schlussellange

                  XOR ADD modulo 216 MULT modulo 216 + 1ndash Blowfish

                  64 Bit Blockchiffre

                  16 Runden Feistelnetzwerk

                  32-448 Bit Schlussellange

                  XOR Transformationsfunktion mit XOR CONCAT und viel Schlusselmaterialndash AES

                  121

                  128 192 256 Bit Blockchiffre

                  10 12 14 Runden Feistelnetzwerk

                  128 192 256 Bit Schlussellange

                  Substitution ShiftRow MixColumn KeyAddition

                  ndash RC4

                  Stromchiffre

                  10 12 14 Runden Feistelnetzwerk

                  variabele Schlussellange bis 2048 Bit

                  ndash RC5

                  wahlbare Blockchiffre (openssl 32 Bit)

                  wahlbare Runden Feistelnetzwerk (openssl 12)

                  wahlbare Schlussellange (openssl 128 Bit)

                  ndash GOST

                  64 Bit Blockchiffre

                  32 Runden Feistelnetzwerk

                  256 Bit Schlussellange

                  ADD ROT 8 S-Boxen

                  bull Asymmetrische Verschlusselungsverfahren

                  ndash RSA (Verschlusseln und Signieren)

                  ndash Diffie-Hellmann Schlusselaustausch

                  ndash ElGamal Crypto-System (basierend auf DH)

                  ndash Rucksackverschlusseln (gebrochen)

                  ndash Merkle Puzzle (viele Nachrichten)

                  ndash Rabin Verfahren

                  Zur Prufung erster Teil mit OpenSSL spielen zweiter Teil Konzepte eine Woche vor derPrufung evt fragen was dran kommen wird Prufungstermine 20072005 oder 04102005oder nach Vereinbarung

                  10 Mathematische Techniken

                  101 Multiplikatives Inverses

                  (nach wwwtzide˜hsLehreU9 mathD1pdf)

                  122

                  1011 Behauptung

                  Seien a b isin Z zwei teilerfremde ganze Zahlen dh ggT (a b) = 1 Dann existiert ein aprime isin Z mitaprime middot a equiv 1 mod b

                  1012 Beweis

                  Betrachte die Menge ak mod b|k isin N k ge 1 Da ggT (a b) = 1 gilt folgt dass ggT (ak b) = 1fur alle k isin N mit k ge 1 Denn da a teilerfremd zu b ist so gilt dies auch fur alle Potenzenvon a Daher ist die betrachtete Menge eine Untermenge der endlichen Menge x mod b|x isinZ ggT (x b) = 1 und daher selbst endlich Also kann existiert k1 k2 mit ak1 equiv ak2 mod bNehmen wir an k1 lt k2 und setzen n = k2 minus k1 dann gilt ak1 middot an = ak2 equiv ak1 mod bDaher folgern wir an equiv 1 mod b d h anminus1 middot a equiv 1 mod b Also setzen wir aprime = anminus1 und dieBehauptung ist erfullt

                  102 Kleiner Fermatscher Satz

                  1021 Behauptung

                  Aus der Wikipedia (unter GNU Free Documentation License)

                  Der kleine fermatsche Satz kurz der kleine Fermat ist ein Lehrsatz in der Zahlentheorie Ermacht eine Aussage uber die Eigenschaften von Primzahlen und wurde aufgestellt im 17 Jahr-hundert von Pierre de Fermat Dieser Satz beschreibt eine allgemein gultige Kongruenz

                  ap equiv a mod p

                  wobei a eine ganze Zahl und p eine Primzahl ist (die weitere Symbolik wird im Artikel Kon-gruenz beschrieben) Falls a kein Vielfaches von p ist kann man das Resultat in die haufigbenutzte Form

                  apminus1 equiv 1 mod p

                  bringen

                  1022 Beweis

                  Der Beweis beruht auf der Tatsache dass wenn zwei Zahlen a und b zueinander inkongruent(modulo einer festen Zahl n) sind auch die beiden Produkte x middot a und x middot b inkongruent modulon sind fur x gt 0 und ggT (x n) = 1

                  Denn

                  123

                  sei a b mod n n eine Primzahl a b naturliche Zahlen Angenommen

                  a middot x equiv b middot x mod n

                  fur eine naturliche Zahl x mit ggT (x n) = 1 Dann gibt es eine naturliche Zahl k so dass

                  a middot x minus b middot x = k middot n

                  x middot (a minus b) = k middot n

                  x = n middot (k(a minus b))

                  Da n eine Primzahl und x eine naturliche Zahl ist ist k(a minus b) entweder eine naturliche Zahlminus1n oder 1n Die letzten beiden Falle widersprechen der Annahme dass a b mod n dererste Fall widerspricht der Annahme dass ggT (x n) = 1 Damit ist die Annahme falsch und esgilt fur x so dass ggT (x n) = 1

                  a middot x b middot x mod n

                  Aus der Wikipedia (unter GNU Free Documentation License)

                  Im folgenden betrachtet man zum einen die Menge A aller Reste mod p - also alle naturlichenZahlen kleiner als p und zum anderen die Menge B die diese Reste multipliziert mit a enthaltZwei beliebige Zahlen aus A sind zueinander inkongruent modulo p Aus dem oberen Satzfolgt dass damit auch zwei beliebige Zahlen aus B zueinander inkongruent sind Dadurchergibt sich dass das Produkt uber alle Zahlen aus A kongruent zum Produkt aller Zahlen aus Bist

                  1 middot 2 middot 3 middot middot middot middot middot (p minus 1) equiv (1 middot a) middot (2 middot a) middot middot middot middot middot ((p minus 1) middot a) mod p

                  alsoW equiv W middot apminus1 mod p

                  wobei W das Produkt 1 middot2 middot3 middot middot(pminus1) ist Da es in Restklassenkorpern stets ein multiplikativesInverses gibt kann man diese W dividieren und man erhalt

                  apminus1 equiv 1 mod p

                  1023 Verallgemeinerung

                  Man kann den kleinen fermatschen Satz zum Satz von Euler verallgemeinern Fur zwei teiler-fremde Zahlen n und a gilt

                  aϕ(n) equiv 1 mod n

                  wobei ϕ(n) die Eulersche Phi-Funktion bezeichnet Diese hat als Ergebnis die Anzahl der Zah-len zwischen 1 und nminus1 welche teilerfremd zu n sind Ist n eine Primzahl so ist ϕ(n) = nminus1 sodass man Fermats kleinen Satz als Spezialfall erhalt Mit Hilfe des kleinen fermatschen Satzesentwickelte Fermat den fermatschen Primzahltest

                  124

                  1024 Praktische Anwendung auf Primzahlen

                  (p - a a lt p a 0)Wenn gilt apminus1 1 mod p ist dann kann p keine Primzahl sein (Umkehrung muss nicht

                  gelten) Wenn man mit a beiweisen kann das p keine Primzahl sein kann dann nennen wir aKanditat (Es gibt aber sogenannte Carmichaelzahlen die kein Kandidat ist)

                  To do nacharbeiten Carmichaelzahlen

                  Wenn (p minus 1) gerade ist pminus12 = k eine Ganzzahl

                  Ist a2k equiv 1 mod p(ak)2 equiv p(ak minus 1)(ak + 1) equiv 0 mod pAlso wenn p eine Primzahl ist dann ist entweder ak equiv 1 mod p oder ak equiv 1 mod pDaraus folgt wenn ak 1 mod p und ak minus1 mod p dann ist p keine PrimzahlSomit gilt auch wenn k gerade ist und a

                  k2 1 und a

                  k2 minus1 dann ist p keine Primzahl

                  Betrachten p minus 1 = 2t middot r (r ungerade) Sei a lt p und p - aIn ar a2r a22middotr a2t middotr = apminus1 (Reste mod p)Wenn die Folge nicht mit 1 endet ist p keine Primzahl Wenn vor der ersten 1 in der Folge

                  keine 1 steht ist p keine PrimzahlWir nennen a einen Zeugen wenn man mit a beweisen kann das p keine Primzahl istJede Zahl p die keine Primzahl ist hat mindestens 3

                  4 aller Zahlen a (mit ggT(a p) = 1) alsZeugen (Jeder Kandidat ist ein Zeuge)

                  Damit ergibt sich der Rabin-Miller-Test Wahle zufallig ein a lt p und teste ob a ein Zeugeist Mit hoher (beliebig genauer) Wahrscheinlichkeit ist p Primzahl

                  Bei groszligen Zahlen werden die Zeugen mehr

                  openssl genrsa -out keyrsa 800

                  Generating RSA private key 800 bit long modulus

                  +++++++

                  +++++++

                  e is 65537 (0x10001)

                  Generiert den Schlussel und speichert in rsquokeyrsarsquo Punkte Bedeutet keine kleine PrimzahlRabin-Miller Test schlagt fehl Plus ist ein erfolgreicher Rabin Miller Test bei groszligeren Zahlenbrauch man weniger Tests da es mehr Zeugen gibt

                  []

                  103 Chinesischer Restklassensatz

                  (nach wwwtzide˜hsLehreU9 mathD1pdf)

                  125

                  1031 Behauptung

                  Seien m1m2 mr paarweise teilerfremde ganze Zahlen d h ggT (mim j) = 1 fur alle i j(i j isin 1 2 r) und sei M = m1 middotm2 middotmr Dann existiert fur jede Liste a1 ar mit 0 le ai lt

                  mi fur 1 le i le r genau ein x isin Z mit 0 le x lt M welches effizient berechnet werden kann undfur das gilt

                  x equiv a1 mod m1

                  x equiv a2 mod m2

                  x equiv ar mod mr

                  Bemerkung Es ist leicht einzusehen dass jedes xprime isin Z mit xprime = x + k middot M fur ein k isin Z d hxprime equiv x mod M genau dasselbe Gleichungssystem lost wie x Der Beweis wird zeigen dass furein gegebenes x nur xprime von dieser Form dasselbe Gleichungssystem losen konnen

                  1032 Beweis

                  Zunachst beweisen wir die Existenz und setzen dazu Mi = Mmi daher gilt ggT (Mimi) = 1Aus diesem Grund existiert auch ein multiplikatives Inverses Ni isin Z mit Mi middot Ni equiv 1 mod mi

                  (vgl multiplikative Inverse) Zu beachten ist jedoch dass fur alle j isin 1 r mit i j stetsMi middot Ni equiv 0 mod m j gilt Nun definieren wir x via

                  x equivrsum

                  i=1

                  ai middot Mi middot Ni mod M

                  Fur jedes i existiert ein v isin Z so dass x sich folgendermaszligen darstellen lasst

                  x = Mi middot Ni middot ai + v middot mi

                  Dies gilt da jedes M j mit j i mi als Faktor enthalt Offensich erfullt x also die obigen Glei-chungen x ist das einzige mit 0 le x lt M welches fur die gegebene Liste a1 a2 ar alleGleichungen lost denn falls xprime und xprimeprime zwei verschiedene Losungen sind so gilt xprime minus xprimeprime equiv 0mod mi fur alle i isin 1 r d h xprimeminus xprimeprime ist ein Vielfaches aller mi und damit auch von M da nachVoraussetzung ggT (mim j) = 1 fur alle i j isin 1 r mit i j erfullt ist Somit folgt xprime equiv xprimeprime

                  mod M d h 0 le xprime xprimeprime lt M kann nicht auftreten und der Beweis ist abgeschlossen

                  126

                  104 Square and multiply

                  Der folgende rekursive Algorithmus berechnet xn fur naturliche Zahlen x und n indem sukzes-sive der Exponent reduziert wird

                  bull Falls n = 1 xn = x

                  bull Sonst falls n gerade xn = (x2)n2

                  bull Sonst xn = x middot (x2)(nminus1)2

                  Damit kann xn in O(ln(n)) Rechenschritten (quadrieren und multiplizieren) berechnet werdenindem in jedem Schritt des Algorithmus der Exponent halbiert wird und hochstens vier Berech-nungen ausgefuhrt werden

                  105 Montgomery Reduktion (Moduloberechnung ohne Division)

                  Heute was ganz verrucktes Modulo-Multiplikation ohne Division

                  Problem bei RSA und anderen Algorithmenm Modul gegeben und g Zahl gegeben und man rechnet aus ga mod mAufwand der Berechnung mit Square and Multiply Groszlige des Exponenten in Bits Multiplika-tionen + gleichviele ModulooperationenBerechnung von x middot y mod m = x middot y minus (x middot y div m) lowast mDivision aufwendig Daher Methode dies ohne Division bzw mit einer schmerzfreien Divisiondurch eine Zweierpotenz zu tun Dafur Kosten von Hin- und RucktransformationenHier Skizze 1xrarr X = x middot r mod myrarr Y = y middot r mod mX lowast Y = X middot Y middot rminus1 = x middot y middot r mod m

                  Wir berechnen t0 equiv minusmminus1 mod r (Preprocessing)

                  1 x minusrarr X = x middot r mod m

                  2 y minusrarr Y = y middot r mod m

                  3 X lowast Y = X middot Y middot rminus1 mod m= x middot r middot y middot r middot rminus1 = x middot y middot r mod m

                  Zur Bestimmung von X lowast Y t1 = X middot Y echte Multiplikationt2 = t1 middot t0 mod r Multiplikation untent3 = (t1 + t2 middot m) div r Multiplikation obent3 = X lowast Y oder (t3 minus m) = X lowast Y

                  127

                  1 t3 ist durch r teilbar

                  2 t3 equiv X middot Y middot rminus1 mod m

                  3 0 le t3 le 2m

                  Zu 1 t1 + t2 middot mequiv t1 + t1 middot t0 middot m mod requiv t1 + t1 middot m middot (minusm)minus1 mod requiv t1 minus t1 equiv 0 mod r

                  Zu 2 (t1+t2middotm)r = t3 mod m

                  (t1 middot t2 middot m) middot rminus1 mod mequiv t1 middot rminus1 + t2 middot rminus1 middot mequiv X middot Y middot rminus1 mod m

                  Beispiel 5 lowast 3 =

                  t1 = 15t2 = 15 middot 23 mod r = 45t3 = 15 + 45 middot 13 = 6

                  Zu 3t1 le (m minus 1)2

                  t2 middot m lt r middot mt1 + t2 middot m lt 2 middot r middot m

                  t3 lt 2 middot m

                  t3 equiv X middot Y middot rminus1 mod mx lowast r2 = X = x middot r mod mX lowast 1 = x mod m

                  Beispiel m = 13 r = 100 t0 = 23

                  r mod m r = 9 mod 13r2 = 3 mod 13

                  Ziel 6 middot 5 mod 13

                  6 lowast 3 = 25 lowast 3 = 6

                  128

                  2 lowast 6 =

                  t1 =

                  t2 =

                  t3 = xx

                  x lowast 1 =

                  Wenn eine Division langer als 1 5 Multiplikationen dauert dann lohnt sich das Verfahren DerErfinder heisst ubrigens Peter L Montgomery (Montgomery Reduktion) wwwmiinformatikuni-frankfurtdeteachingws0001krypto algomontgomerypdf

                  Montgomery-Multiplikation

                  To do siehe Mathematischer Anhangzusammenfugen

                  Die Reduktion modulo m erfordert eine Division aber Divisionen sind rsquoteuerrsquo

                  Dies kann man aber wie folgt vereinfachen

                  Um die Division zu vermeiden rsquotransformiertrsquo man die Zahlen

                  Sei gesucht das Produkt x middot y mod m

                  x minusrarr X y minusrarr Y x middot y minusrarr X lowast Y

                  R = (zweierPotenz) gt m und die Division durch R muss einfach sein

                  X = x middot R mod m

                  X lowast Y = X middot Y middot Rminus1 mod m (wobei die modulo Reduktion nun nicht mehr jedes mal ausgefuhrtwerden muss sonder nur am Anfang und am Ende der rsquoTransformationrsquo)

                  1 Berechne mprime = minusmminus1 mod R

                  (minusmR) = 1 rArr XGCD mprime middot m = minus1 mod R

                  2 t = X middot Y (echte Multiplikation)

                  3 t1 = t middotmprime mod R (echte Multiplikation und oben abschneiden also eine leichtere moduloReduktion da R eine zweier Potenz ist) (dabei gilt t2 lt m2 + R middot m)

                  4 t2 = t + t1 middot m (echte Multiplikation und eine Addition) (dabei gilt t3 lt(m+R)middotR

                  R = 2m)

                  5 t3 = t2divR (also rsquounten abschneidenrsquo)

                  6 Wenn t3 gt m dann t3 = t3 minus m

                  129

                  Nun ist t3 = X lowast Y Dafur muss t3 lt m sein oder in Schritt 6 t3 lt 2m sein

                  Wir mussten also prufen

                  1 t3 lt m

                  2 Division in 5 rsquogeht aufrsquo

                  t2 ist durch r teilbar

                  t2 mod R equiv (t + t1 middot m) equiv t + (t middot mprime) middot m mod R equiv t + t(minus1) mod R equiv 0 mod R

                  3 t3 = X lowast Y

                  t3 middot R mod m equiv t2R middot R mod m equiv t2 equiv t + t1 middot m equiv t mod m equiv X middot Y mod m

                  Wir haben also den folgenden Aufwand

                  1 rsquoTransformationrsquo

                  2 rsquoRechnungrsquo

                  3 Zuruck rsquotransformierenrsquo

                  x lowast R2 = x middot R2 middot Rminus1 mod m = x middot R = X mod m

                  X lowast 1 = X middot 1 middot Rminus1 equiv x middot R middot Rminus1 equiv x mod m

                  Man benotigt also zwei zusatzliche Operationen zur transformation Dafur kommt die Operationrsquorsquo ohne Divisionen aus

                  Beispiel m = 17

                  R = 100

                  7 middot 11 mod 17

                  x lowast y mod mdarr darr

                  X Y= =

                  (x middot R) mod m lowast (y middot R) mod m

                  m1 = minusmminus1 mod 100

                  suche also ein m1 mit m1 middot 17 = minus1 mod 100

                  m1 = 47

                  130

                  To do Bsp Magma Quelltext siehe Homepage

                  Bem dazu Wenn R groszlig genug ist kann man die Subtraktion von m weglassen

                  Mathematischer Hintergrund (Zm+ middot)simminusrarr (Zm+ lowast) Was ist das Einselement und das

                  Inverse

                  106 Nochwas

                  vielleicht

                  zur Prufung Zwei Teile (ein theoretischer ein praktischer) Ein openssl-Kommando das in derVL nicht behandelt wurde wird drankommen (zum Beispiel speed ca etc) Theoretischer Teil

                  1 symmetrische Verfahren (was sind symmetrische Verfahren wodurch charakterisiert)

                  2 Integritatsschutz (wie kann man Integritatsschutz gewahrleisten)

                  3 asymmetrische verfahren (siehe 1)

                  4 Signatur (was sind Signaturen wofur verwendet man sie was ist ˜konzept was ist sicherwas ist unsicher)

                  5 Vertrauensstruktur (zum Beispiel PGP)

                  6 Client-Server-Authentisierung (SSL-Protokoll Kerberos)

                  7 Sicherheitsparameter (wo sind die welchen Einfluszlig auf die Sicherheit haben sie)

                  8 X509 (elektronische Identitat)

                  9 RFC-Security (3280 3279 3446 )

                  Mathematische Verfahren

                  1 Square and Multiply Double and Add

                  2 Euklidischer Algorithmus

                  3 RSA DH

                  4 DSA

                  5 AES

                  6 das eine oder andere symmetrische Verfahren Strom-Blockchiffre

                  7 Elliptische Kurven eher nicht reicht zu wissen dass man mit Addition in EK das gleicheerreichen kann wie mit Multiplikation im Restklassenkorper

                  8 kleiner Fermat eher nicht

                  131

                  9 Montgomery-Multiplikation vielleicht auch nicht sollte aber bekannt sein

                  Fur MD5- AES- etc Grundfunktionen reicht evt wissen wo man nachschauen muss

                  Dann nachweisen dass man mit Openssl spielen kann

                  1 Verschlusseln mit DES3DESBFAES

                  2 Prufsummenberechnung

                  3 Konfigurationsfile

                  4 RSA-Verschlusselung

                  5 098 ndash 097 (dynamisch)

                  6 Zertifikat

                  7 DSA-Verschlusselung

                  8 Passworter (passwd) und Salt

                  9 E-Mail-Nachricht erstellen und sichern (SMIME-Anwendung)

                  Zum Punkt Ich mochte eine 1 haben was muss ich dafur tun Was haben sie ausserhalb derVorlesung schonmal gelesen Was fehlte ihnen an der Vorlesung was fanden sie doof

                  132

                  • 1 Einfuumlhrung
                    • 11 Verschluumlsselung
                    • 12 Beispiel rot13
                    • 13 Block-Chiffre
                    • 14 Strom-Chiffre
                    • 15 Angriffstypen
                      • 151 Differentielle Kryptoanalysis
                        • 16 Base64
                          • 2 OpenSSL
                          • 3 Symmetrische Verschluumlsselungsverfahren
                            • 31 Feistel-Chiffren
                            • 32 DES - Data Encryption Standard
                              • 321 Schluumlsselauswahl
                              • 322 Funktionsweise
                              • 323 Schwachstellen und Unsinnigkeiten
                              • 324 spezielle Optionen bei openssl
                              • 325 DESECB - Electronic Code Book
                              • 326 DESCBC - Cipher Block Chaining
                              • 327 DESOFB - Output Feed Back
                              • 328 DESCFB - Cipher Feed Back
                              • 329 CTR Mode CCM
                              • 3210 TEA-Algorithmus
                              • 3211 DES-X
                                • 33 IDEA International Data Encryption Algorithm
                                  • 331 Schluumlsselauswahl
                                  • 332 Funktionsweise
                                  • 333 Pseudocode-multiplikation
                                  • 334 Schwachstellen
                                    • 34 Blowfish
                                      • 341 Initialisierung
                                      • 342 Verschluumlsselung
                                        • 35 AES Advanced Encryption Standard
                                          • 351 Wiederholung-Byteoperation
                                          • 352 Uumlberblick
                                          • 353 mathematische Grundlagen
                                            • 36 RC4 Rons Cipher 4
                                              • 361 Geschichte
                                              • 362 Beschreibung
                                              • 363 Der Pseudo-Zufalls-Algorithmus
                                              • 364 Der Schluumlsselerzeugungs-Algorithmus
                                              • 365 Implementation
                                              • 366 Sicherheit
                                              • 367 Fluhrer Mantin und Shamir Angriff
                                                • 37 RC5 Rons Cipher 5
                                                  • 371 Verschluumlsselung
                                                  • 372 Schluumlsselexpansion
                                                    • 38 GOST 28147-89 Gosudarstvennyi Standard Soyuza SSR nicht in OpenSSL
                                                    • 39 FazitWie koumlnnte bei einen Symmetrischen Algorithmus die Sicherheit erhoumlhen
                                                      • 4 Asymmetrische Verschluumlsselungsverfahren
                                                        • 41 Einfuumlhrung
                                                          • 411 Beispiel
                                                            • 42 Geschichte
                                                            • 43 Einige Theoretische Grundlagen
                                                              • 431 Kleiner Fermat (oder kleiner Fermatscher Satz)
                                                              • 432 Euklidischer Algorithmus
                                                              • 433 Beispiel
                                                                • 44 RSA Rivest Shamir Adleman
                                                                  • 441 Funktionsweise des RSA-Verfahrens
                                                                  • 442 Beweis der Funktionsweise
                                                                    • 45 Schwaumlchen von RSA
                                                                    • 46 Fuktionen in OpenSSL
                                                                      • 461 genrsa
                                                                      • 462 rsa
                                                                      • 463 rsautl
                                                                      • 464 PKCS
                                                                      • 465 OAEP - Optimal Asymmetric Encryption Padding
                                                                      • 466 Wie erkennt man an Ciphertexten den Verschluumlsselungsalgorithmus- DER ASN1
                                                                      • 467 Umgehen mit den Schluumlsselkomponenten
                                                                        • 47 Miller-Rabin Test
                                                                        • 48 Diffie-Hellman-Schluumlsselaustausch
                                                                        • 49 ElGamal-Cryptosystem
                                                                        • 410 Wiederholung DH
                                                                          • 4101 Beispiel
                                                                            • 411 was anderes
                                                                            • 412 Elliptische Kurven
                                                                            • 413 Elliptische Kurven Nachtrag
                                                                            • 414 Rucksack-Verschluumlsseln
                                                                              • 4141 Beispiel
                                                                                • 415 Merkle Puzzle
                                                                                • 416 Rabin-Verfahren und Wurzelziehen
                                                                                  • 4161 Schluumlsselgenerierung
                                                                                  • 4162 Kongruenzbedingung
                                                                                  • 4163 Verschluumlsselung
                                                                                  • 4164 Entschluumlsselung
                                                                                    • 417 Angriffe auf asymmetrische Verschluumlsselungsverfahren
                                                                                      • 4171 1 Angriff Common modulus attack
                                                                                      • 4172 2 Angriff kleiner geheimer Exponent d
                                                                                      • 4173 3 Angriff Faktorisieren
                                                                                      • 4174 Echt schlechte RSA-Schluumlssel
                                                                                      • 4175 Schnelles Faktorisieren bei Fehler im System
                                                                                      • 4176 Angriff mit gewaumlhltem Chiffretext
                                                                                          • 5 Signaturmechanismen
                                                                                            • 51 Integritaumltsschutz und Hashfunktionen
                                                                                              • 511 Schluumlssellose Hashfunktion (Pruumlfsummen ohne Schluumlssel)
                                                                                              • 512 Demonstration Faumllschung
                                                                                                • 52 Unterschied MD5 und SHA
                                                                                                • 53 Secure Hash Standard SHA-2
                                                                                                  • 531 Problem bei MD5 und SHA-0
                                                                                                  • 532 MACs (Message Authentication Codes) (Pruumlfsummen mit Schluumlsseln)
                                                                                                    • 54 Whirlpool
                                                                                                    • 55 Zusammenfassung
                                                                                                    • 56 Digitale Signaturen
                                                                                                      • 561 RSA
                                                                                                      • 562 Eigenschaften eines asymmetrischen Verschluumlsselungsverfahren
                                                                                                      • 563 RSASSA-PSS-Padding
                                                                                                      • 564 DSA
                                                                                                      • 565 ECDSA - DSA mit Elliptischen Kurven
                                                                                                        • 57 Widerrufen von Zertifikaten
                                                                                                        • 58 Was es noch so gibt
                                                                                                          • 581 blinde Signaturen
                                                                                                          • 582 anonyme Signaturen
                                                                                                              • 6 Zertifikate
                                                                                                                • 603 X509
                                                                                                                  • 604 Erweiterungen
                                                                                                                  • 605 Erzeugung
                                                                                                                  • 606 Guumlltigkeit
                                                                                                                    • 61 Praktische Ausschlachtung von kryptografischen Algorithmen mit SMIME und PKCS7
                                                                                                                    • 62 PKCS
                                                                                                                      • 621 PKCS7 15 November 93 RFC 3852
                                                                                                                        • 63 CMS(Cryptographic Message Syntax)
                                                                                                                          • 7 Wichtige Neuerungen bei den Versionsaumlnderungen
                                                                                                                          • 8 OpenSSL hintergehen
                                                                                                                            • 81 die eine Primzahl ganz klein erzeugen
                                                                                                                            • 82 beide Primzahlen nah beieinander
                                                                                                                            • 83 Vorschrift des BSI
                                                                                                                            • 84 Programmierung Zufallszahlenerzeugung und andere nette features
                                                                                                                              • 9 Zusammenfassung
                                                                                                                              • 10 Mathematische Techniken
                                                                                                                                • 101 Multiplikatives Inverses
                                                                                                                                  • 1011 Behauptung
                                                                                                                                  • 1012 Beweis
                                                                                                                                    • 102 Kleiner Fermatscher Satz
                                                                                                                                      • 1021 Behauptung
                                                                                                                                      • 1022 Beweis
                                                                                                                                      • 1023 Verallgemeinerung
                                                                                                                                      • 1024 Praktische Anwendung auf Primzahlen
                                                                                                                                        • 103 Chinesischer Restklassensatz
                                                                                                                                          • 1031 Behauptung
                                                                                                                                          • 1032 Beweis
                                                                                                                                            • 104 Square and multiply
                                                                                                                                            • 105 Montgomery Reduktion (Moduloberechnung ohne Division)
                                                                                                                                            • 106 Nochwas

                    16 Base64

                    Aus der Wikipedia (unter GNU Free Documentation License)

                    Base64 [] beschreibt ein Verfahren zur Kodierung von 8-Bit-Binardaten (z B ausfuhrbareProgramme ZIP-Dateien) in eine Zeichenfolge die nur aus wenigen Codepage-unabhangigenASCII-Zeichen besteht Im Zusammenhang mit OpenPGP wird noch eine Prufsumme (CRC-24) angehangt und es als Radix-64 bezeichnet

                    Es findet im Internet-Standard MIME (Multipurpose Internet Mail Extensions) Anwen-dung und wird damit hauptsachlich zum Versenden von E-Mail-Anhangen verwendet Notigist dies um den problemlosen Transport von beliebigen Binardaten zu gewahrleisten da SMTPin seiner ursprunglichen Fassung nur fur den Versand von 7-Bit ASCII-Zeichen ausgelegt war

                    Zur Kodierung werden die Zeichen A-Z a-z 0-9 + und verwendet sowie = am EndeDa diese Zeichen auch in EBCDIC vorkommen (wenn auch an anderen Code-Positionen) istdamit auch ein Datenaustausch zwischen nicht-ASCII-Plattformen moglich

                    Zur Kodierung werden jeweils drei Byte des Bytestroms (=24 bit) in vier 6-bit-Blockeaufgeteilt Jeder dieser 6-bit-Blocke bildet eine Zahl zwischen 0 und 63 Diese Zahlen werdenan Hand der nachfolgenden Umsetzungstabelle in ldquodruckbare ASCII-Zeichenrdquo umgewandeltund ausgegeben Nach jeweils 76 ausgegebenen Zeichen wird spatestens ein Zeilenumbrucheingefugt welcher jedoch ansonsten fur die Kodierung nicht von Belang ist

                    Falls die Gesamtanzahl der Eingabebytes nicht durch drei teilbar ist wird der zu kodieren-de Text am Ende mit Fullbytes aufgefullt Um dem Dekodierer mitzuteilen wie viele Fullbytesangefugt wurden werden die 6-Bit-Blocke die vollstandig aus Fullbytes entstanden sind mitrsquo=rsquo kodiert Somit konnen am Ende einer Base64-kodierten Datei 0 1 oder 2 rsquo=rsquo-Zeichenauftreten

                    Die angesprochene Transitionstabelle ist eine alphabetisch bzw numerisch aufsteigende Anord-nung zuerst der Groszligbuchstaben dann der Kleinbuchstaben schlieszliglich der Ziffern und am Endeder beiden Zeichen rsquo+rsquo und rsquorsquo in dieser Reihenfolge

                    2 OpenSSL

                    Optionen fur openssl ciphername oder openssl enc -ciphername

                    OPTIONS

                    -in filename

                    the input filename standard input by default

                    -out filename

                    the output filename standard output by default

                    10

                    -pass arg

                    the password source

                    -salt

                    use a salt in the key derivation routines

                    -nosalt

                    donrsquot use a salt in the key derivation routines

                    -e

                    encrypt the input data this is the default

                    -d

                    decrypt the input data

                    -a

                    base64 process the data This means that if encryption is

                    taking place the data is base64 encoded after encryption

                    If decryption is set then the input data is base64 decoded

                    before being decrypted

                    -A

                    if the -a option is set then base64 process the data on

                    one line

                    -k password

                    the password to derive the key from This is for

                    compatibility with previous versions of OpenSSL Superseded

                    by the -pass argument

                    -kfile filename

                    read the password to derive the key from the first line

                    of filename This is for compatibility with previous

                    versions of OpenSSL Superseded by the -pass argument

                    -S salt

                    the actual salt to use this must be represented as a

                    string comprised only of hex digits

                    -K key

                    the actual key to use this must be represented as a string

                    comprised only of hex digits If only the key is specified

                    the IV must additionally specified using the -iv option

                    11

                    When both a key and a password are specified the key given

                    with the -K option will be used and the IV generated from

                    the password will be taken It probably does not make much

                    sense to specify both key and password

                    -iv IV

                    the actual IV to use this must be represented as a string

                    comprised only of hex digits When only the key is specified

                    using the -K option the IV must explicitly be defined When

                    a password is being specified using one of the other options

                    the IV is generated from this password

                    -p

                    print out the key and IV used

                    -P

                    print out the key and IV used then immediately exit donrsquot

                    do any encryption or decryption

                    -bufsize number

                    set the buffer size for IO

                    -nopad

                    disable standard block padding

                    -debug

                    3 Symmetrische Verschlusselungsverfahren

                    31 Feistel-Chiffren

                    Aus der Wikipedia (unter GNU Free Documentation License)

                    Feistel-Chiffre (auch als Feistelnetzwerk bezeichnet) ist eine Block-Chiffre Ein Mitarbeitervon IBM Horst Feistel gilt als der Erfinder dieser Chiffre Er arbeitete mit anderen am sogProjekt rdquoLuciferldquo dessen Ziel es war eine effiziente Verschlusselungstechnologie zu entwi-ckeln Die Feistel-Chiffre war spater dann die Grundlage fur den DES-Algorithmus

                    Viele moderne symmetrische Verschlusselungsalgorithmen basieren auf Feistelnetzwer-ken Dies ruhrt ua auch daher dass die Struktur von sehr vielen Kryptografen analysiert undfur gut befunden wurde

                    12

                    Wie es der Name rdquoBlock-Chiffreldquo schon nahe legt wird der Klartext zuerst in einzelneBlocke zerlegt Die Groszlige dieser Blocke kann frei gewahlt werden ublich sind oftmals Vielfa-che von 64 Bit

                    Jeder dieser Blocke wird danach in zwei gleichgroszlige Halften (L0 und R0) geteilt und inmehreren Runden mit verschiedenen Schlusseln verschlusselt Nach den Runden werden dieHalften wieder zusammen gesetzt

                    Innerhalb der i-ten Runde (i ist die Nummer der aktuellen Runde und reicht von 1 bis n)wird folgende Formel angewendet

                    Li = Riminus1

                    Ri = Liminus1 oplus f (Riminus1Ki)

                    Dabei bildet f die sog Runden- oder Transformationsfunktion und Ki ist der jeweilige Runden-schlussel Der verschlusselte Text am Ende der Runden ist die Zusammenfuhrung von (LnRn)

                    Feistelnetzwerke ermoglichen eine Entschlusselung ohne dass die Umkehrfunktion von fbenotigt wird Will man einen Geheimtext dechiffrieren wendet man die obige Formel leichtmodifiziert an

                    Riminus1 = Li

                    Liminus1 = Ri oplus f (Riminus1Ki)

                    13

                    (Quelle httpenwikipediaorgwikiImageFeistelpng)

                    32 DES - Data Encryption Standard

                    DES ist eine 64 Bit Block-Chiffre mit einer festgelegten Schlussellange von 56 Bit Die Funk-tionsweise entspricht einem 16-Runden Feistel-Netzwerk DES ist der erste Verschlusselungs-Algorithmus der weite Verbreitung fand und dessen Spezifikation offentlich zuganglich ist Erwurde in den 70er Jahren entwickelt und ist im amerikanischen Standard FIPS 46-2 beschrieben

                    14

                    321 Schlusselauswahl

                    Zunachst steht nominal ein 64-Bit Schlussel zur Verfugung Von diesem ist jedoch je ein Bit proByte als Paritatsbit deklariert so dass 56 Bit effektives Schlusselmaterial ubrigbleiben Diese 56Bit werden in 2 mal 28 Bit aufgeteilt die in jeder der 16 Runden um 1 oder 2 Bit rotiert werdeninsgesamt um 28 Bit so dass am Ende wieder das Original vorliegt Aus der Konkatenation derbeiden Halften wird in jeder Runde ein 48-Bit Rundenschlussel ausgewahlt

                    (Quelle httpenwikipediaorgwikiImageDES-key-schedulepng)

                    15

                    322 Funktionsweise

                    Die so gewonnenen Rundenschlussel ki werden fur die Runden der Feistelchiffre genutzt E(k1 k2 k16m) =

                    cE(k16 k15 k1 c) = mD(k1 k2 k16 c) = E(k16 k15 k1 c) = mJeder 64 Bit Eingabe-Block wird in zwei 32 Bit Blocke (L und R) aufgeteilt und weiterverarbei-tet L und R werden in jeder Runde durch eine festgelegte Permutation E auf 48 Bit ausgedehntanschlieszligend mit dem Rundenschlussel verknupft mittels einer weiteren rundenspezifischenPermutation S wieder auf 32 Bit komprimiert und dann schlieszliglich noch einer weiteren festge-legten Permutation P unterzogenLi = Riminus1Ri = Liminus1 oplus f (Riminus1Ki) wobei f (Riminus1Ki) = P(S (E(Riminus1) oplus Ki))

                    rechts Feistelstruktur (Quelle httpenwikipediaorgwikiImageDES-main-networkpng)

                    links F Funktion (Quelle httpenwikipediaorgwikiImageDES-f-functionpng)

                    16

                    (Quelle httpdewikipediaorgwikiBildDES_resizepng)

                    323 Schwachstellen und Unsinnigkeiten

                    bull Die Anfangliche Permutation der Klartexteingabe sollte Softwareimplementation erschwe-ren Per Hardware ist diese sehr einfach universell verwendbare Rechner hatten in den70er Jahren jedoch noch Probleme mit so etwas

                    bull Das Paritatsbit ist eine Schwachstelle da es - soweit es gesetzt ist - ein Durchmustern desSpeichers nach dem Schlussel erlaubt Gesucht wird dann nach dem relativ ungewohn-lichen Auftreten von 8 nahe bei einander liegenden Byte bei denen je das letzte Bit dieParitat angibt

                    17

                    bull Mit heutigen Rechnern ist es moglich einen 56-Bit Schlussel mittels brute force zu knackenDie Lange des Schlussels ist bei DES aber auf diesen Wert festgelegt

                    bull Es wird vermutet dass die ldquomagischenrdquo S-Permutationen uber deren Qualitat nichts be-wiesen ist eine Hintertur darstellen da die NSA hierbei ihre Finger im Spiel hatte Eskonnte jedoch nie bewiesen werden

                    324 spezielle Optionen bei openssl

                    bull Option -nopad Schaltet Auffullung der letzten Bits zu Block von 64 Bits aus Auch wenndie Nachricht genau in 64 Bit Blocken einteilbar ist wird ein 64 Bit Padding Block an-gehangtDer Block besteht aus x mal der Zahl x So lasst er sich beim Entschlusseln wieder entfer-nen

                    bull Option -nosalt Schaltet die Voranstellung des salt-Werts ausDer salt-Wert verlangert die Nachricht um insgesamt 16 Bytes Salted__ gefolgt von 8Bytes salt-WertAus Passwort und salt-Wert wird der Key fur die eigentliche Verschlusselung erzeugt Da-mit wird verhindert dass Schlussel wegen Mehrfachverwendung von Passwortern leich-ter zu brechen sind Gleiche Passworter beim Aufruf der Verschlusselung mit OpenSSLfuhren durch den zufalligen salt-Wert zu verschiedenen Keys bei der Verschlusselung

                    bull Neben des gibt es auch des-ede und des-ede3 Diese bieten einen gewissen Schutzgegen Bruteforce-AngriffeTDES (Triple DES) DES3 DES-EDE (Encrypt Decrypt Encrypt) mit effektiv 168 Bit

                    E3DES(k1 k2 k3m) = EDES(k3DDES(k2 EDES(k1m)))

                    In OpenSSL arbeitet des-ede mit zwei Schlusseln

                    E(K1)D(K2) E(K1)

                    Um in OpenSSL 3 Schlussel angeben zu konnen muss man des-ede3 verwenden Ver-wendet man bei des-ede zweimal oder bei des-ede3 dreimal den selben Schlusselerhalt man eine einfache DES-Verschlusselung So kann man Abwartskompatibilitat er-reichen

                    bull In OpenSSL konnen DES Verschlusselungen mit folgenden Befehlen aufgerufen werden

                    ndash -desndash -des-cbcndash -des-cfbndash -des-ecbndash -des-edendash -des-ede-cbc

                    18

                    ndash -des-ede-cfbndash -des-ede-ofbndash -des-ede3ndash -des-ede3-cbcndash -des-ede3-cfbndash -des-ede3-ofbndash -des-ofbndash -des3ndash -desxndash -desx-cbc

                    OpenSSL des-ecb -salt fur den Schlusseleintrag aus Passphrasepassphrase = 12345prime +prime S alt minusWert rarr K

                    12345srarr

                    264 Moglichkeiten

                    Damit man keine Tabelle generieren kann die aus den schwachen Schlussel besteht denn fur12345 gibt es 264 Moglichkeiten aufgrund des salts

                    (PC12345)(PC1234)

                    P- (Klartext) bekanntS- (Saltwert) bekanntC- (Chiffretext) unbekanntwelcher Schlussel wurde verwendet

                    112123

                    1234

                    rarr K

                    s1 s2 s3c1 c1 c1c12 c12 c12c123 c123 c123c1234 c1234 c1234

                    Dazu kommt aber spater noch mehr

                    19

                    325 DESECB - Electronic Code Book

                    Die Eingabe wird in Blocke aufgeteilt und jeder Block fur sich verschlusselt Dieses Verfahrenist potentiell unsicher weil in der Abfolge der Blocke eine Struktur enthalten ist die der Algo-rithmus nicht verbirgt Ein Fehler beim Ver- oder Entschlusseln eines Blockes fuhrt allerdingsauch nur zu einem einzigen verlorenen Block

                    To do Initialisierungsvektor

                    (Quelle httpenwikipediaorgwikiImageEcb_encryptionpng)

                    (Quelle httpenwikipediaorgwikiImageEcb_decryptionpng)

                    BemReicht fur einen Block dann wird auch kein Initialisierungsvektor benotigt

                    20

                    Man kann fur den Initialisierungsvektor auch einen vorher vereinbarten Wert (zB Unix Sekun-den) wahlen

                    Aus der Wikipedia (unter GNU Free Documentation License)

                    Die 64-bit Klartextblocke werden nacheinander und getrennt voneinander kontextfrei ver-schlusselt Dies ist die einfachste Anwendungsmoglichkeit eines Block-Chiffre

                    326 DESCBC - Cipher Block Chaining

                    Aus der Wikipedia (unter GNU Free Documentation License)

                    Vor der Verschlusselung eines Klartextblockes wird der bereits verschlusselte vorhergehendeBlock hinzuaddiert Auf den ersten Klartextblock der ja keinen Vorganger besitzt wird stattdessen ein Initialisierungsvektor der geheim gehalten werden muss addiert Dadurch entstehteine Verkettung (engl chain) der Blocke Trotz dieser Verkettung ist die CBC-Verschlusselung

                    rdquoselbstkorrigierendldquo FehlerManipulationen in einem Block wirken sich bei der Entschlusse-lung nur auf den fehlerhaftenmanipulierten und den nachsten Block ausMan kann relativ einfach beliebige Blocke des Geheimtextes einzeln entschlusseln da zusatz-lich zum Schlussel nur der vorhergehende (verschlusselte) Block benotigt wird

                    Fehler im c breiten sich nicht aus beim Entschlusseln Ein Initialisierungsvektor IV fur erstenBlock wird benotigt

                    bull Klartext oplus Cipher und dann Encryption

                    bull Vorteil Muster im Klartext werden zerstort

                    bull Nachteil Fehler im Ciphertext eines Blocks verandern Bits an genau der Stelle im folgen-den Block (aber nur in diesem spatere Blocke sind nicht betroffen) so kann gezielt eineStelle im Block angegriffen werden (siehe Skizze)

                    To do Skizze zur Fehlerausbreitung erlautern

                    21

                    m1 mlowast2 mlowast3

                    IV oplus

                    oplus

                    oplus

                    oplus

                    DES

                    DES

                    DES

                    DES

                    c1

                    DDc2

                    DDc3

                    DDc4

                    EE

                    Vergleich DESECB und DESCBC

                    Zum Vergleich bietet es sich an ein Bild (Abbildung 1) mit DES im ECB- und im CBC-Moduszu verschlusseln Deutlich zu erkennen ist dass die Struktur im ECB-Modus (Abbildung 2)erhalten bleibt wahrend sie bei CBC (Abbildung 3) vollkommen zerstort wird

                    Abbildung 1 Bild im Klartext (24 Bit RGB mit 182 times 183 Pixeln)

                    Abbildung 2 Bild aus Abbildung 1 ECB-verschlusselt

                    22

                    Abbildung 3 Bild aus Abbildung 1 CBC-verschlusselt

                    327 DESOFB - Output Feed Back

                    Aus der Wikipedia (unter GNU Free Documentation License)

                    In diesem Modus werden die Klartextblocke nicht direkt mit DES verschlusselt sondern DESerzeugt einen pseudozufalligen Bitstrom der dann ohne Ubertrag (vgl XOR) auf den Klartextaddiert wird Dazu muss DES mit einem kontinuierlichen Eingabestrom gefuttert werden AlsEingabe von DES dient hier ein Schieberegister dass zunachst mit einem Initialisierungsvektorgeladen wird Anschlieszligend wird immer ein Teil der Ausgabe von DES in dieses Registerhineingeschoben und so als Eingabe wiederverwendet (daher output feedback)

                    bull Output der Encrpytion als Input fur Encryption erzeugt Pseudozufallsstrom oplus Klartext

                    bull Vorteil Beliebige Blockgroszligen moglich wie Stromchiffre verwendbar

                    bull Nachteil Durchsatz verringert sich auf neue Blockgroszlige pro erzeugtem Block kann abervorberechnet werden

                    bull Vorteil Ein Bit Fehler fuhrt zu nur einem invertierten Bit nach der Entschlusselung

                    bull Nachteil Keine Selbstsynchronisierung moglich wenn Bits komplett verloren gehen

                    23

                    (Quelle httpdewikipediaorgwikiBildOfb_encryptionpng)

                    (Quelle httpdewikipediaorgwikiBildOfb_decryptionpng)

                    328 DESCFB - Cipher Feed Back

                    Aus der Wikipedia (unter GNU Free Documentation License)

                    Identisch mit OFB aber statt die Ausgabe des DES wieder als Eingabe zu verwenden wirdder Kryptotextstrom als Eingabe wiederverwendet

                    bull Cipher als Input fur Encryption erzeugt Pseudozufallsstrom oplus Klartext

                    24

                    bull Vorteil Beliebige Blockgroszligen moglich wie Stromchiffre verwendbar

                    bull Nachteil Durchsatz verringert sich auf neue Blockgroszlige pro erzeugtem Block

                    (Quelle httpdewikipediaorgwikiBildCfb_encryptionpng)

                    (Quelle httpdewikipediaorgwikiBildCfb_decryptionpng)

                    329 CTR Mode CCM

                    Dieser Modus spielt fur DES keine Rolle Ist auch nicht in OpenSSL implementiert Aber die-se Betriebsart ist fur 128 Bit Verschlusselungen ist zum Beispiel vom BSI als sicher eingestuftworden rsquoDie Betriebsart der Zukunftrsquo

                    Wird zum Beispiel fur W-LAN Verschlusselung verwendet

                    25

                    Eingabe sind Klartext mit einen Zahler

                    ctr0 rarr Block rarr oplusT rarr c0ctr1 rarr Block rarr oplusp1 rarr c1ctr2 rarr Block rarr oplusp2 rarr c2ctr3 rarr Block rarr oplusp3 rarr c3

                    ctrn rarr Block rarr opluspn rarr cn

                    Standardisiert als rsquoSP 800-38crsquo

                    (N A P) mit N Zufallswerten A Assoziierte Daten P Klartext produziert Blocke B0 B1 Br

                    httpcsrcnistgovpublicationsnistpubs800-38CSP800-38C_updated-July20_

                    2007pdf

                    To do algorithmus uberarbeiten ubersetzen

                    1 Apply the formatting function to (N A P) to produce the blocks B0 B1 Br

                    2 Set Y0 = CIPHK(B0)

                    3 For i = 1 to r do Yi = CIPHK(Bi oplus Yiminus1)

                    4 Set T = MS BTlen(Yr)

                    5 Apply the counter generation function to generate the counter blocks Ctr0Ctr1 Ctrmwhere m = dPlen128e

                    6 For j = 0 to m do S j = CIPHK(Ctr j)

                    7 Set S = S 1||S 2|| ||S m

                    8 Return C =(P oplus MS BPlen(S )

                    )||(T oplus MS BTlen(S 0)

                    )

                    T stellt einen Prufwert dar

                    3210 TEA-Algorithmus

                    To do uberarbeiten

                    26

                    Nicht in OpenSSL implementiert Universitarer Algorithmus

                    (Quelle httpdewikipediaorgwikiBildTEA_InfoBox_Diagrampng)

                    Man sieht die Feistel Idee allerdings die grunen Quadrate sind Additionen modulo 64 Bit

                    To do erlautern Pfeilspitzen

                    Es gibt ein Extended TEA struktur recht ahnlich aber beim Algorithmus an der Stelle

                    Byte 0 28 minus 1 | 28ii

                    b middot k = (b middot k mod (28 + 1)) mod 28 Es gibt auch eine Inverseb middot K rarr c rarr c middot kprime = b

                    geht nur bei 22 + 1 24 + 1 28 + 1 216 + 1

                    27

                    3211 DES-X

                    In OpenSSL desx KK1K2

                    EncK(m oplus K2) oplus K1 = DES minus X(m)

                    c1 oplus c2 = EncK(m1 oplus K2) oplus EncK(m2 oplus K2)

                    Ist unsymetrisch Hat sich nicht so ganz durchgesetzt

                    33 IDEA International Data Encryption Algorithm

                    IDEA gilt als sehr sicher ist schneller als DES bei Hardwareimplementation tauchte zuerst alsPES auf Unterschied PES und IPES ist die untere XOR-Vertauschung (siehe Wikipedia Skiz-ze) die es im PES nicht gab War nur zur privaten Nutzung frei ansonsten patentiert weshalber nicht so verbreitet war IDEA verschlusselt 64-Bit Eingabe-Blocke in 64-Bit Ausgabe-Blockeund verwendet dabei einen 128-Bit Schlussel Der Algorithmus basiert im wesentlichen auf 8identischen Runden die den Runden einer Feistel-Chiffre ahnlich sind und einer abschlieszligendenTransformation der Ausgabe In jeder Runde werden 6 16-Bit Subschlussel in der Ausgaben-Transformation weitere 4 davon verwendet Samtliche Subschlussel werden aus dem Original-schlussel berechnet Die 64 Bit Eingabe jeder Runde werden dabei als 4 16-Bit-Blocke verar-beitet Der Algorithmus benutzt verschiedene algebraische Operationen

                    bull Polynomaddition mod 2 XOR (blau-verbraucht wenig Strom)

                    bull Addition mod 216 ADD (grun-verbraucht wenig Strom etwas Zeit - Uberlauf wirdignoriert)

                    bull Multiplikation mod 216︸︷︷︸prim

                    +1 MULT (rot-viel Strom)

                    Aus der Wikipedia (unter GNU Free Documentation License)

                    Der IDEA-Algorithmus (International Data Encryption Algorithm) wurde 1990 als ein Ge-meinschaftsprojekt zwischen der ETH Zurich von James L Massey und Xueija Lai und derAscom Systec AG entwickelt IDEA ist ein symmetrischer Algorithmus und gehort zu denBlockchiffren Der Algorithmus benutzt einen 128-Bit langen Schlussel (DES nur 64 Bit da-von sind 8 Bits fur den Paritats-Check vorgesehen so dass die eigentliche Schlussellange nur56 Bits betragt)

                    Bei der Verschlusselung wird der Klartext in 64 Bit groszlige Blocke unterteilt und derSchlussel in Teilstucke zu je 16 Bit zerlegt Die Verschlusselung geschieht durch Kombina-

                    28

                    tion der logischen Operation XOR der Addition modulo 216 und der Multiplikation modulo216+1 Die Kombination dieser drei Operationen aus unterschiedlichen algebraischen Gruppensoll ein hohes Maszlig an Sicherheit gewahrleisten

                    Das Verfahren ist dazu optimiert Angriffen durch differentielle Kryptoanalyse zu wider-stehen

                    Es gibt bei IDEA leider eine ganze Reihe von schwachen Schlusseln die sich in zweiKlassen einteilen lassen Die erste Klasse umfasst 232 schwache Schlussel Sie sind insofernschwach als man sie mit gewahltem Klartext nachweisen kann Danach ist ein Brute ForceAngriff selbst fur Privatpersonen mit alteren PCs machbar Die zweite Klasse umfasst sogar265 schwache Schlussel Bei diesen Schlusseln kann man mit nur 20 gewahlten Klartexten72 Bit des Schlussels ermitteln Die restlichen 56 Bit muss man mit Brute Force ermittelnAllerdings liegt die Wahrscheinlichkeit dafur einen schwachen Schlussel zu erwischen bei einszu 263 oder eins zu 9 Trillionen

                    Weil die Ascom Systec AG an der Entwicklung des Algorithmus beteiligt war halt siedie Patente fur IDEA In Europa verfallt der Patentschutz am 16052011 In den USA wirdder Algorithmus bereits ein Jahr fruher kostenlos nutzbar sein Da das Patent in der Schweizerteilt wurde greift das Patent auch in Deutschland unabhangig davon dass in DeutschlandSoftwarepatente nicht legal sind

                    Der Algorithmus beruht wesentlich darauf dass 216 + 1 eine Primzahl ist Deshalb lasst sichIDEA nicht auf andere Blocklaengen adaptieren

                    331 Schlusselauswahl

                    Aus den 128 Bit des ursprunglichen Schlussels werden in insgesamt 52 16-Bit Teilschlussel er-zeugt Dabei werden aus dem aktuellen Schlusselwert (initial der ursprungliche 128-Bit Schlussel)8 der Teilschlussel durch aufteilen gewonnen Dann wird der aktuelle Schlussel subsequent um25 Bit nach links rotiert und so je ein neuer aktueller Schlussel erzeugt der wieder zu Teil-schlusseln aufgeteilt wird - solange bis alle Teilschlussel belegt sind Es werden 6 middot 16-Bit ineiner Runde verbraucht in 8 Runden also 48 Teilschlussel Hinzu kommen 4 Teilschlussel dienach der letzten Runde fur weitere Operation verwendet werden Insgesamt werden also 52Teilschlussel mit je 16-Bit aus 128-Bit Rohschlussel erzeugt und auch verbraucht rarr 832-BitSchlusselmaterial

                    332 Funktionsweise

                    In jeder Runde r finden folgende Transformationen statt

                    1 X1 = X1 MULT Kr1 X4 = X4 MULT Kr

                    4 X2 = X2 ADD Kr2 X3 = X3 ADD Kr

                    3

                    2 t0 = Kr5 MULT (X1 XOR X3) t1 = Kr

                    6 MULT (t0 ADD (X2 XOR X4)) t2 = t0 ADD t1

                    29

                    3 X1 = X1 XOR t1 X4 = X4 XOR t2 a = X2 XOR t2 X2 = X3 XOR t1 X3 = a

                    Dabei sind X1 bis Xi die 16-Bit Blocke die aus der 64 Bit Eingabe gewonnen wurden Kri ist der

                    Teilschlussel mit der Nummer r middot 6 + i Die abschlieszligende Transformation ergibt sich wie folgtY1 = X1 MULT K9

                    1 Y4 = X4 MULT K94 Y2 = X3 ADD K9

                    2 Y3 = X2 ADD K93

                    Dabei sind die Yi 4 16-Bit Worter die die Ausgabe darstellen

                    (Quelle httpdewikipediaorgwikiBildInternational_Data_Encryption_Algorithm_InfoBox_Diagrampng)

                    bull In OpenSSL konnen IDEA Verschlusselungen mit folgenden Befehlen aufgerufen wer-den

                    ndash -ideandash -idea-cbcndash -idea-cfbndash -idea-ecbndash -idea-ofb

                    333 Pseudocode-multiplikation

                    To do als Pseudocode machen

                    30

                    if(a==0)return ((216 +1)-b) mod 216

                    if(a==0)return ((216 + 1)-a) mod 216

                    if(a middot b) mod 216 gt (a middot b) div 216 return (a middot b) mod 216 minus (a middot b) div 216

                    if(a middot b) mod 216 le (a middot b) div 216 return (216 + 1) + (a middot b) mod 216 minus (a middot b) div 216

                    wenn a==0 rArr a = 216 equiv minus1 mod 216

                    334 Schwachstellen

                    Bei schlechter implementation konnen die XOR-Berechnungen am Stromverbrauch erkanntwerden Es konnen Ruckschlusse auf bestimmte Werte (insbesondere Null) gemacht werdenNach 218 Testrechnungen kann der Klartext bestimmt werdenSolche Angriffe nennt man Seiten Kanal Atacken in diesem Fall ist der Stromverbrauch derSeitenkanal (Zeitverbrauch spielt beim Idea keine Rolle)Bei guter Implementation gilt aber der Algorithmus als sicher

                    To do Skizze Stromverbrauch

                    34 Blowfish

                    Blowfish ist eine sehr schnelle 64-Bit 16-Runden Block-Chiffre die 1993 von Bruce Schneiererfunden wurde Die Lange der Schlussel ist variabel zwischen 32 und 448 Bit Als Teilschlusselwerden aus dem Ausgangsschlussel eine P-Box mit 18 mal 32 Bit und 4 S-Boxen mit 256 mal32 Bit generiert (P1 P18) (S 1 S 4)

                    Blowfisch Algorithmus von Bruc Schreier ist vollig Patentfrei dies hat sehr zu seiner Verbrei-tung beigetragen

                    31

                    F

                    F

                    14 weitere Runden

                    (Quelle httpdewikipediaorgwikiBildBlowfish_structure_(de)svg)

                    P1 P18 die XOR auf den Klartext kommen

                    Schlussel-P1 P18 und

                    -S-Boxen

                    32

                    (Quelle httpenwikipediaorgwikiImageBlowfishFFunctionsvg)

                    S ist 256 32 Bit WerterArr 4 middot 256 middot 32 Werte rArr kann man sich nicht merken also wird P1 P18 S 1 S 4 werdenals Hexadezimalwerte von π gewahlt

                    (K)n oplus (P1 P18)

                    Der so initialisierte Algorithmus wird auf den Klartext 0 0︸ ︷︷ ︸64

                    angewendet Das Ergebnis ersetzt

                    (P1 P2) Der so initialisierte Algorithmus wird auf den Klartext 0 0︸ ︷︷ ︸

                    64

                    angewendet Das Ergebnis

                    ersetzt (Pi Pi+1) Der so initialisierte Algorithmus wird auf den Klartext 0 0︸ ︷︷ ︸64

                    angewendet

                    Das Ergebnis ersetzt (S 1 S 2)

                    Auf kosten eines sehr aufwendigen Schlusselmanagment wird ein schneller Algorithmus er-reicht Fur Prozessoren mit wenig Speicher unpraktisch

                    341 Initialisierung

                    Teilschlusselmanagement Sehr viele Teilschlussel werden aus wenig Schlusselmaterial gene-riert

                    1 P und S werden mit einer Hexadezimal-Expansion von Pi initialisiert

                    2 Der Schlussel als Sequenz von 32-Bit-Werten wird mittels XOR auf die P-Box addiertwobei er eventuell ldquowiederholtrdquo wird um die ganze Lange der Box abzudecken P1 oplus K1P2 oplus K2 P18 oplus K18

                    3 Sowohl die P-Box als auch die S-Boxen werden verschlusselt

                    33

                    bull Verschlussle mit Blowfish den Nullstring rarr 64-Bit Ausgabe = 2 32-Bit = neueP1 P2

                    bull Verschlussle mit Blowfish (Pi Pi+1) die Ausgabe verwende als (Pi+2 Pi+3) Wieder-hole diesen Schritt fur i von 1 bis zum Ende der P-Boxbull Anschlieszligend S 10 S 11 rarr S 12 S 13 Im gleichen Verfahren wie bei der P-Box

                    werden die S-Boxen verschlusselt

                    Insgesamt ist so ein langer Vorlauf notig bevor die eigentliche Verschlusselung der Daten be-ginnt

                    342 Verschlusselung

                    In jeder Runde r (insgesamt 16 Runden) wird folgendes Verfahren angewendet

                    1 Der 64-Bit Eingabeblock wird in zwei 32-Bit-Halften L und R zerlegt

                    2 L = L oplus Pr R = R oplus f (L)f (L) ist dabei folgendermaszligen charakterisiert Zunachst wird das Argument L als Konka-tenation von 4 8-Bit Vektoren a b c und d aufgefasst die als naturliche Zahlen zwischen0 und 255 verwendet werden

                    f (a b c d) = ((S 1a + S 2b mod 232 oplus S 3c) + S 4d mod 232

                    3 L und R werden vertauscht konkateniert und als Eingabe fur die nachste Runde verwen-det

                    Nach der letzten Runde wird noch R = R oplus P17 und L = L oplus P18 durchgefuhrt

                    Aus der Wikipedia (unter GNU Free Documentation License)

                    Blowfish ist ein sehr schneller und nicht patentierter Algorithmus der besonders auf 32-Bit-Prozessoren eine exzellente Performance bietet Ein weiterer Vorteil ist seine variableSchlussellange von 32 bis zu 448 Bit Die Blockgroszlige betragt 64 Bit

                    bull In OpenSSL konnen Blowfish Verschlusselungen mit folgenden Befehlen aufgerufen wer-den

                    ndash -bfndash -bf-cbcndash -bf-cfbndash -bf-ecbndash -bf-ofbndash -blowfish

                    34

                    35 AES Advanced Encryption Standard

                    351 Wiederholung-Byteoperation

                    Wir hatten folgende Byteoperationen kennengelernt

                    bull Multiplikation mod 256 bzw mod 257 ohne 0

                    bull Addition mod 256

                    bull XOR-Addition (oplus)

                    Die Operationen werden in der dementsprechenden Basisdarstellung modulo 256 durchgefuhrt

                    352 Uberblick

                    AES wurde im Standard FIPS 197 festgeschrieben

                    Aus der Wikipedia (unter GNU Free Documentation License)

                    AES ist eine Block-Chiffre dessen Blocklange und Schlussellange unabhangig voneinanderdie Werte 128 192 oder 256 Bit erhalten kann Jeder Block wird zunachst in eine zweidimen-sionale Tabelle mit vier Zeilen geschrieben dessen Zellen ein Byte groszlig sind Die Anzahl derSpalten variiert somit je nach Blockgroszlige von 4 (128 Bit) bis 8 (256 Bit) Zum Beispiel fur 16Byte werden die Bytes wie folgt eingetragen

                    1 5 9 132 6 10 143 7 11 154 8 12 16

                    Jeder Block wird nun nacheinander bestimmten Transformationen unterzogen Aber anstattjeden Block einmal mit dem Schlussel zu verschlusseln wendet AES verschiedene Teile desSchlussels nacheinander auf den Klartext-Block an Die Anzahl dieser Runden (r) variiertund ist von Schlussellange (k) und Blockgroszlige (b) abhangig Je nach Blocklange b undSchlussellange k wird die Anzahl der Runden bestimmt (10 12 oder 14)

                    r b=128 b=192 b=256k=128 10 12 14k=192 12 12 14k=256 14 14 14

                    S-BoxenEine Substitutionsbox (S-Box) dient als Basis fur eine monoalphabetische Verschlusselung

                    35

                    Sie ist meist als Array implementiert und gibt an welches Byte wie getauscht wird DieS-Box in AES basiert auf einem mathematischen Zusammenhang und ist somit fest imAlgorithmus implementiert Doch dies ist kein Schwachpunkt da die S-Box lediglich zur Ver-mischung der Bytes in Kombination mit weiteren Operationen und dem Schlussel genutzt wird

                    Ablauf

                    bull Schlusselexpansion (nach Fips-197 S23 Kapitel 52)

                    Der Schlussel rsquokeyrsquo wird auf den Anfang des expandierten Schlussels rsquowrsquo ubernommen(i lt Nk) Danach berechnet sich w[i] wie folgt

                    w[i] =

                    w[i minus 1] i mod Nk 0S ubWord(RotWord(w[i minus 1])) oplus Rcon i mod Nk = 0S ubWord(w[i minus 1]) Nk gt 6i (mod N)k = 4

                    (1)

                    w[i] = w[i] oplus w[i minus Nk] (2)

                    Der zugehorige Quelltext (Fips-197 entnommen)

                    KeyExpansion(byte key[4Nk] word w[Nb(Nr+1)] Nk)

                    begin

                    word temp

                    i = 0

                    while (i lt Nk)

                    w[i] = word(key[4i] key[4i+1] key[4i+2] key[4i+3])

                    i = i+1

                    end while

                    i = Nk

                    while (i lt Nb (Nr+1)]

                    temp = w[i-1]

                    if (i mod Nk = 0)

                    temp = SubWord(RotWord(temp)) xor Rcon[iNk]

                    else if (Nk gt 6 and i mod Nk = 4)

                    temp = SubWord(temp)

                    end if

                    w[i] = w[i-Nk] xor temp

                    i = i + 1

                    end while

                    end

                    36

                    Fur Beispiele siehe Fips-197 Appendix A1

                    bull Vorrunde

                    ndash KeyAddition (XOR-des Rundenschlussels)

                    bull Verschlusselungsrunden

                    ndash Substitution - Jedes Byte b wird ersetzt durch bprime = 1b wie bei Polynommultiplikati-

                    on Weiter wird jedes Byte als ein 8-dimensionaler Vektor aufgefasst und folgendeOperation angewendet

                    b1b2

                    b8

                    =

                    1 0 0 0 1 1 1 11 1 0 0 0 1 1 11 1 1 0 0 0 1 11 1 1 1 0 0 0 11 1 1 1 1 0 0 00 1 1 1 1 1 0 00 0 1 1 1 1 0 00 0 0 1 1 1 1 0

                    middot

                    b1b2

                    b8

                    +

                    c1c2

                    c8

                    ndash ShiftRow - Erste Zeil wird nicht verschoben die zweite Zeil um eins die dritteZeile um zwei die vierte um drei (siehe Wikipedia)

                    ndash MixColumn - Zu jeder Spalten

                    b1b2b3b4

                    des Blocks wird folgende Polynommultiplika-

                    tion durchgefuhrt

                    (b1x3 + b2x3 + b3x + b4) middot (03X3 + 04X2 + 01X + 02) mod (X4 + 1)

                    und die Koeffizienten in gleicher Weise wieder in die jeweilige Spalte eingetragenWobei (X4 + 1) das Inverse (0BX3 + 0DX2 + 09X + DE) hat

                    ndash KeyAddition

                    bull Schlussrunde

                    ndash Substitutionndash ShiftRowndash KeyAddition

                    Fur die Entschlusselung gehe die oben angegebene Reihenfolge ruckwarts durch Beachtedabei dass ShiftRow und Subst vertauschbar sind Bei ShiftRow wird in umgekehrter Weiseverschoben Ebenso sind KeyAdd und MultColumn vertauschbar wenn der Rundenschlusselmodifiziert wird (B(X) lowast (S (X) oplus K(X)) = S (X) lowast B(X) oplus B(X) lowast K(X) also ist der modifiziertSchlussel B(X) lowast K(X)) Die Entschlusselung entspricht also der Verschlusselung mit modifi-zierten Schlusseln

                    37

                    353 mathematische Grundlagen

                    Speziell der Schritt Mix-Column beinhaltet einige interessante mathematische Uberlegungen Ersoll zu einer moglichst effektiven Vermischung der 32 Bit in jeder Spalte fuhren die die Suchevon dem unverschlusselten Text ahnlichen Mustern im verschlusselten Text erschwert Dabeiwerden arithmetische Operationen aus zwei algebraischen Gruppen angewandt

                    1 Die Gruppe der Bytes F82 Jedes Byte b7b6b0 wird als ein Polynom b7 middot X7 + b6 middot X6 +

                    b0 middot X0 angesehen Diese Polynome konnen addiert und multipliziert werden Damitdabei der Werteraum des Byte nicht verlassen wird finden diese Operationen modulom(X) = X8 + X4 + X3 + X +1 statt m ist dabei irreduzibel es gilt also ggT (b(X)m(X)) = 1fur jedes Byte b Somit ist F2[X]m(X) ein Korper und die Multiplikation ist abgeschlos-sen Es gilt fur jedes Paar von Bytes b c eindeutig b middot c = d rarr dc = b Multiplikationenkonnen also eindeutig ruckgangig gemacht werden so dass eine Entschlusselung moglichistBei Zahlen die groszliger als m(X) sind werden also durch die modulo Operation die Koeffi-zienten von x4 x3 x1 x0 verandertBeispiel in Magma

                    Q = IntegerRing(2)

                    Pltxgt = PolynomialRing(Q)

                    f=xˆ7+1

                    g=xˆ3+xˆ2+x+1

                    fg

                    fg mod(xˆ8 +xˆ4+xˆ3+x+1)

                    IsPrime(xˆ8 +xˆ4+xˆ3+x+1)

                    Ausgabe

                    xˆ10 + xˆ9 + xˆ8 + xˆ7 + xˆ3 + xˆ2 + x + 1

                    xˆ7 + xˆ6 + xˆ3 + xˆ2 + x

                    true

                    2 Die Gruppe der Worter F4256 Die 4 Bytes einer Spalte w3w2w1w0 werden wieder als Po-

                    lynom aufgefasst w3 middot X3 + w2 middot X2 + w1 middot X + w0 Diese konnen wieder multipliziertund addiert werden wobei die arithmetischen Operationen auf den jeweiligen Bytes in F8

                    2stattfinden Die Operationen in F4

                    256 werden modulo M(X) = X4 + 1 ausgefuhrt M(X) istzwar nicht irreduzibel aber da der Algorithmus nur eine beschrankte Gruppe von Operan-den verwendet bleiben auch hier alle Operationen invertierbar

                    Mix-Column multipliziert (in F4256) nun jede Spalte mit c(X) = 3 middot X3 + X2 + X + 2 Die so

                    beschriebene lineare Funktion erreicht beweisbar eine groszlige Diffusion der Eingabe

                    38

                    bull In OpenSSL konnen AES Verschlusselungen mit folgenden Befehlen aufgerufen werden

                    ndash -aes-128-cbcndash -aes-128-cfbndash -aes-128-ecbndash -aes-128-ofbndash -aes-192-cbcndash -aes-192-cfbndash -aes-192-ecbndash -aes-192-ofbndash -aes-256-cbcndash -aes-256-cfbndash -aes-256-ecbndash -aes-256-ofbndash -aes128ndash -aes192ndash -aes256

                    36 RC4 Ronrsquos Cipher 4

                    Geheimes Chiffreverfahren mit Strom-Chiffre von Ron Rivest 1987 Entstehungsjahr 1994 imNetz aufgetaucht 1999 tauchte im Internet ein Draft ARCFOUR (ARC4) auf der die gleichenErgebnisse lieferte

                    Byte orientiert zwei Bytes m k dann wird berechnetm oplus k = cDer Algorithmus basiert auf S-Boxen (Permutationen)

                    mdashmdashSkizze Seite 2b ganz oben

                    PRG (Pseudo Random Generator)mdashmdashweitere Skizze

                    Initialisierung K = L Bytes als Schlussel s[i] = i (identische Permutation)L = 1255 fur RC4 mit 40-Bit L = 5 mit 64-Bit L = 8 mit 128-Bit L = 16j = 0 fur i = 0255rarr j = ( j + s[i] + K[ j mod L]) mod 256

                    Problem K-Masterkeyrarr salted key Initialwert (frei bekannt) HashInitial(K) = Kaktuell rarr RC4

                    39

                    Anfangsstucke von PRG RC4 sind nicht rdquorichtig zufalligldquo verraten viel uber KaktuellRegel fur RC4 Die ersten 256-Byte wegschmeiszligen

                    Aus der Wikipedia (unter GNU Free Documentation License)

                    RC4 (Ronrsquos Cipher 4) ist ein fur Software optimierter Stromchiffrierer welcher zur Ver-schlusselung von Daten eingesetzt wird Er wurde 1987 von Ronald L Rivest fur RSA DataSecurity Inc (heute RSA Security) entwickelt

                    Der Algorithmus war sieben Jahre lang geheim (ldquosecurity by obscurityrdquo) bis 1994 derQuellcode anonym veroffentlicht wurde

                    RC4 hat im Gegensatz zu DES eine variable Schlussellange Die Schlussellange kann biszu 2048 Bit betragen RC4 verschlusselt immer ein Byte auf einmal

                    Er besteht aus einer so genannten S-Box die sich wahrend der Verschlusselung fortlau-fend andert Diese wird durch ein Passwort initialisiert das fur jede Verschlusselung einmaligsein muss Jedes Klartextzeichen wird XOR mit einem bestimmten vom Paszligwort abhangi-gen Zeichen aus der S-BOX verknupft Theoretisch sind somit ca 2 hoch 1700 verschiedeneZustande moglich

                    Der Algorithmus ist sehr kompakt und funf- bis zehnmal schneller als der weitverbreite-te DES Deshalb findet der RC4 Algorithmus in einigen Echtzeit-Systemen Anwendung wiebeispielsweise Mobilfunk (Cellular Digital Packet Data) SSH (Secure Shell) WLAN (Wire-less LAN) oder den Dateiverschlusselungs-Programmen SecurePC und Cryptext Die Verar-beitungsgeschwindigkeit des DES ist jedoch selbst in kleinsten Mikrokontrollern meist ausrei-chend Der Schlussel beim DES und anderen Blockchiffren wie dem AES (CBC-Mode) kannim Gegensatz zum RC4 auch mehrfach verwendet werden Vergleichbare Stromchiffren wieSEAL sind vergleichbar schnell und gelten als sicher

                    Aus der Wikipedia (unter GNU Free Documentation License)

                    ubersetzt aus dem Englischen nach httpenwikipediaorgwikiRC4RC4 (oder ARCFOUR) ist die am weitesten verbreitete Stromchiffre und wird in vielen be-kannten Protokollen beispielsweise SSL oder WEP verwendet Trotzdem entspricht RC4 nichtmehr dem heutigen Sicherheitsstandard und manche Verwendungsweisen von RC4 fuhren zusehr unsicheren Kryptosystemen (zB WEP) Daher wird es nicht fur die Verwendung in neuenSystemen empfohlen Allerdings gibt es auch RC4-basierte Systeme die sicher genug fur denpraktischen Gebrauch sind

                    361 Geschichte

                    Aus der Wikipedia (unter GNU Free Documentation License)

                    ubersetzt aus dem Englischen nach httpenwikipediaorgwikiRC4RC4 wurde 1987 von Ron Rivest von RSA Security erfunden Offiziell bedeutet die Abkurzung

                    40

                    ldquoRivest Cipher 4rdquo alternativ wird sie aber als ldquoRonrsquos Coderdquo verstanden (s auch die anderenRC-Algorithmen) Zunachst war RC4 ein Betriebsgeheimnis jedoch wurde im September1994 eine Beschreibung anonym auf der ldquoCypherpunksrdquo Mailingiste gepostet Es wurde baldin die scicrypt newsgroup weitergepostet und von dort auf viele Internet-Seiten verbreitetNachdem der Algorithmus nun bekannt ist ist er kein Betriebsgeheimnis mehr Der NameldquoRC4rdquo unterliegt jedoch weiterhin dem Markenschutz Zur Zeit sieht es so aus als seien ldquoinof-fiziellerdquo Implementationen zwar legal konnen aber nicht den Namen ldquoRC4rdquo verwenden Umdieses Problem zu umgehen wird RC4 oft als ldquoARCFOURrdquo bezeichnet RC4 wird inzwischenin einigen weit verbreiteten Verschlusselungsprotokollen und Standards unter anderem WEPund WPA fur WLAN Karten und SSL verwendet

                    362 Beschreibung

                    Aus der Wikipedia (unter GNU Free Documentation License)

                    ubersetzt aus dem Englischen nach httpenwikipediaorgwikiRC4RC4 generiert einen pseudo-zufalligen Bitstrom (einen ldquoSchlusselstromrdquo) der bei der Ver-schlusselung mit dem Klartext mittels XOR verknupft wird Die Entschlusselung funktioniertgenauso Um den Schlusselstrom zu generieren benutzt die Chiffre einen internen Zustand deraus zwei Teilen besteht

                    1 eine Permutation aller 256 moglichen Bytes (wird im Folgenden als S bezeichnet)

                    2 zwei 8-Bit Index-Zeiger (mit i und j bezeichnet)

                    Die Permutation wird mit einem Schlussel von variabler Lange ublicherweise zwischen 40und 256 Bit initialisiert wobei der Schlusselerzeugungs-Algorithmus verwendet wird An-schlieszligend wird der Bit Strom durch den Pseudo-Zufalls-Algorithmus generiert

                    363 Der Pseudo-Zufalls-Algorithmus

                    Aus der Wikipedia (unter GNU Free Documentation License)

                    ubersetzt aus dem Englischen nach httpenwikipediaorgwikiRC4In jeder Iteration wird der Zustand verandert und ein Byte des Schlusselstroms ausgegebenDabei wird i inkrementiert der Wert von S an der Stelle i auf j addiert S [i] und S [ j] vertauschtund der Wert von S an der Stelle S [i]+S [ j] mod 256 ausgegeben Jeder Wert von S wird dabeimindestens einmal alle 256 Iterationen vertauscht In Pseudocode lasst sich der Algorithmusfolgendermaszligen darstellen

                    i = 0

                    j = 0

                    41

                    while GeneratingOutput

                    i = (i + 1) mod 256

                    j = (j + S[i]) mod 256

                    swap (S[i] S[j])

                    output (S[(S[i] + S[j]) mod 256])

                    (Wobei i offentlich ist und j geheim ist)

                    i j

                    0 1 2 S[i]+S[j] i j 253 254 255

                    S

                    S[i] S[j]

                    S[i]+S[j]K

                    (Quelle httpdewikipediaorgwikiBildRC4svg)

                    364 Der Schlusselerzeugungs-Algorithmus

                    Aus der Wikipedia (unter GNU Free Documentation License)

                    ubersetzt aus dem Englischen nach httpenwikipediaorgwikiRC4Der Schlusselerzeugungs-Algorithmus wird benutzt um die Permutation in S zu initialisierenl wird als die Zahl der Bytes des Schlussels definiert und kann zwischen 1 und 255 liegenublicherweise liegt l zwischen 5 und 32 so dass eine Schlussellange von 40 bis 128 Bit zu-stande kommt Zunachst wird S mit der Identitatspermutation initialisiert Anschlieszligend wirdS in 256 Iterationen mit einem Algorithmus der dem Pseudo-Zufalls-Algorithmus ahnelt aberzusatzlich die Schlusselbits hineinmischt weiterverarbeitet Der folgende Pseudocode drucktdies aus

                    for i from 0 to 255

                    S[i] = i

                    j = 0

                    for i from 0 to 255

                    42

                    j = (j + S[i] + key[i mod l]) mod 256

                    swap(S[i]S[j])

                    365 Implementation

                    Aus der Wikipedia (unter GNU Free Documentation License)

                    ubersetzt aus dem Englischen nach httpenwikipediaorgwikiRC4Viele Stromchiffren basieren auf ldquolinear feedback shift registersrdquo und sind damit sehr effizientin Hardware aber weniger effizient in Software implementierbar RC4 hat dieses Manko nichtund kommt zudem ausschlieszliglich mit 8-Bit Operationen aus Damit ist RC4 ideal fur Software-Implementationen

                    366 Sicherheit

                    Aus der Wikipedia (unter GNU Free Documentation License)

                    ubersetzt aus dem Englischen nach httpenwikipediaorgwikiRC4RC4 verfehlt die ublichen Standards fur sichere Chiffren an mehreren Stellen und wird somitnicht zur Verwendung in neuen Anwendungen empfohlen Der von RC4 generierte Schlussel-strom tendiert dazu bestimmte Sequenzen von Bytes haufiger zu enthalten als andere undist somit nicht wirklich zufallig Der beste Angriff der auf diesem Sachverhalt beruht wur-de von Fluhrer und McGrew entdeckt und kann aus einem Gigabyte verschlusseltem Textden Schlusselstrom berechnen Zudem verwendet RC4 keine ldquononcerdquo einen fur jeden Klar-text neu generierten Zusatzschlussel Eine solche ldquononcerdquo wird im allgemeinen als zentralesSicherheitskriterium betrachtet da so gewahrleistet ist dass eine zweimal nacheinander ver-schlusselte Nachricht zwei verschiedene verschluesselte Texte erzeugt Naturlich kann einesolche ldquononcerdquo im Nachhinein aufgesetzt werden indem als RC4-Schlussel nicht der eigentli-che Benutzerschlussel sondern beispielsweise ein Hashwert des Schlussels mit einer nonce ver-wendet wird Die einfachere Methode den Schlussel nur mit der nonce zu konkatenieren dievon einigen Anwendungen genutzt wird fuhrt aufgrund des schwachen Schlusselerzeugungs-Algorithmus wieder zu neuen Problemen

                    To do anmerkungen zu k=1-Angriffsmoglichkeiten

                    43

                    367 Fluhrer Mantin und Shamir Angriff

                    Aus der Wikipedia (unter GNU Free Documentation License)

                    ubersetzt aus dem Englischen nach httpenwikipediaorgwikiRC42001 wurde eine erstaunliche Entdeckung gemacht Die statistische Verteilung der ersten paarBytes des Schlusselstroms ist uber alle RC4-Schlussel stark nicht-zufallig und enthalt Infor-mationen uber den Schlussel selbst Falls die nonce lediglich mit dem Schlussel konkateniertwurde (oder gar keine nonce verwendet wurde) kann der Schlussel durch die Analyse einergroszligen Zahl verschlusselter Nachrichten herausgefunden werden Mit Hilfe dieses Sachver-haltes und einiger damit zusammenhangender Effekte wurde dann die WEP-Verschlusselung(ldquowireless equivalent privacyrdquo) die in 80211 WLAN-Netzen verwendet wird gebrochen Diesfuhrte zu einer Suche nach einem Ersatz fur WEP und letztlich zu den Bemuhungen um 80211isowie zu WPA

                    Der geschilderte Angriff kann naturlich umgangen werden wenn die ersten (ca 256) Bytes desSchlusselstroms verworfen werden

                    bull In OpenSSL konnen RC4 Verschlusselungen mit folgenden Befehlen aufgerufen werden

                    ndash -rc4ndash -rc4-40

                    37 RC5 Ronrsquos Cipher 5

                    Die zentrale Neuerung des RC5-Algorithmus sind datenabhangige Rotationen bei denen einZwischenergebnis um eine Zahl von Bytes rotiert wird die weder fest vorgegeben noch vomSchlussel bestimmt sondern aus einem Teil des Klartextes berechnet ist Diese Operation wirdfolgendermaszligen notiert a ltltlt b bedeutet dass a um b Bits nach links rotiert wird Ein weitererinteressanter Aspekt ist die universelle Parametrisierbarkeit des Algorithmus Sowohl die Langeder Worter w als auch die Zahl der Runden r und die Lange des Schlussels b sind wahlbar sodass der Algorithmus offen ist fur zukunftige Bedurfnisse die weitere Operation + wird nun alsAddition modulo 2w definiert In openssl ist RC5 mit den Parameters w = 32 r = 12 b = 16 im-plementiert Samtliche Algorithmen gehen im folgenden von einer little-endian Byte-Anordnungaus Der Algorithmus besteht aus einem Verschlusselungs- und einem Schlusselexpansions-Teil

                    371 Verschlusselung

                    Gegeben ein auf t = 2(r + 1) Worter expandierter Schlussel S und ein aus zwei Wortern A undB bestehender Eingabeblock gibt folgender Pseudocode den Verschlusselungs-Algorithmus an

                    44

                    A = A + S[0]

                    b = B + S[1]

                    for i = 1 to r do

                    A = ((A XOR B) ltltlt B) + S[2i]

                    B = ((B XOR A) ltltlt A) + S[2i + 1]

                    Die Entschlusselung lauft dementsprechend folgendermaszligen ab

                    for i = r downto 1 do

                    B = ((B - S[2i + 1]) gtgtgt A) XOR A

                    A = ((A - S[2i]) gtgtgt B) XOR B

                    A = A - S[0]

                    B = B - S[1]

                    372 Schlusselexpansion

                    Zunachst wird S mit einer Kombination aus e und ϕ (dem goldenen Schnitt) initialisiert und derSchlussel in ein Array L kopiert das wortweise indiziert wird Anschlieszligend wird mit folgendemAlgorithmus der Schlussel in S hinein gemischt

                    i = j = 0

                    A = B = 0

                    do 3 max(t 8bw) times

                    A = S[i] = (S[i] + A + B) ltltlt 3

                    B = L[j] = (L[j] + A + B) ltltlt (A + B)

                    i = (i+1) mod t

                    j = (j+1) mod (8bw)

                    38 GOST 28147-89 Gosudarstvennyi Standard Soyuza SSR nicht inOpenSSL

                    GOST ist das russische Normungsinstitut vergleichbar mit DIN oder ANSI

                    (siehe auch httpenwikipediaorgwikiGOST_(block_cipher))

                    Gost-Chiffre ist eine relativ simple Feistel-Chiffre auf 64 Bit mit 32 Runden 256 Bit Schlussellangeund 8 S-Boxen von zusammen 512 Bit die - da sie geheim gehalten werden konnen - alsSchlusselerweiterung gelten konnen Die Rundenfunktion besteht aus der Addition eines 32-Bit-Substrings des Schlussels der Anwendung der S-Boxen (parallel da jede S-Box 4 Bit alsEin- und Ausgabe hat) und einer 11-Bit-Rotation Die Sicherheit des Algorithmus beruht auf

                    45

                    der Verwendung sehr langer Schlussel geheimer S-Boxen und der gegenuber DES verdoppeltenRundenzahl In jeder einzelnen Runde wird jedoch ein geringerer Durchmischungseffekt erreichtals bei DES-Runden

                    Geheimer Algorithmus S-Boxen auch geheim

                    (Quelle httpenwikipediaorgwikiImageGOSTDiagrampng)

                    46

                    Feistel Chiffre

                    Addition Substitution Rotation

                    Die S-Boxen sind Gruppenschlussel die extra zugewiesen werden16 4 Bit Werte werden Permutiert 32 RundenSchlusselmaterial 32 die 256 Bit werden jeweils in 8 32 Bit Unterschlussel eingeteilt wobei dieSchlussel wie folgt verwendet werden1234567123456712345677654321

                    (Dann einmal S-Box einmal rotieren und dann Feistelschritt)

                    Die Sicherheit steckt in den 32 Runden Der Algorithmus wurde bisher nicht geknackt

                    39 FazitWie konnte bei einen Symmetrischen Algorithmus die Sicherheiterhohen

                    (Das ware zB fur eine Interessante Frage fur eine Klausur)

                    bull komplexes Schlusselmanagment

                    bull viele Runden

                    bull komplexe vermischung pro Runde (AES)

                    4 Asymmetrische Verschlusselungsverfahren

                    41 Einfuhrung

                    AliceBob Chris Dave Eve

                    Alice BobkA kA

                    Enck1(M) = C minusrarr M = Deck2

                    Verschlusselungsverfahren kA kB EncDecAus kA kann kB nicht bestimmt werden dann kann kA sogar offentlich sein Ziel ist es dass je-

                    47

                    der verschlusseln kann aber nur einer kann (in realistischer Zeit) entschlusseln Solche Verfah-ren mit offentlichen Schlussel werden auch asymmetrisch genannt Mit groszligen Aufwand kannnaturlich der Schlussel immer noch bestimmt werden Man wahlt einen Text mprime Verschlusseltihn (Enck(mprime) = cprime) und probiert dann solange alle k durch bis man Deck(cprime) = mprime erhalt

                    Das kB kann aber immer bestimmt werden

                    for k_B =00000 to FFFF

                    M_0 C_0 sind gegeben

                    Dec_k_B(C_0) = M_0

                    Wichtig ist nur das dies nicht in rsquovernunftigerrsquo Zeit gemacht werden kann

                    To do text sortieren

                    Klartext minusrarr E(K) ChiffretextKlartext D(Kprime)larrminus ChiffretextE(K p) = c und zu jedem KexistKprime mit D(Kprime c) = p und K wird offentlich gemachtDie Berechnung von Kprime aus K ist schwer Bruteforce ist nicht ausgeschlossen die Bestimmungvon K aus Kprime ist leicht

                    leichtEnckA DeckB (kA kB)minusErzeugung

                    schweraus kA allein kB erzeugen

                    411 Beispiel

                    Bob mochte von Alice verschlusselte Nachrichten lesen Bob uberlegt sich ein asymmetrischesVerfahren wahlt Kprime berechnet K und veroffentlicht KAlice nimmt K berechnet E(K p) = c und sendet c an BobBob berechnet aus c mit Kprime das ursprungliche p

                    42 Geschichte

                    Whitfield Diffie New Directions in Cryptographie Idee wurde auch schon mal von Ralf Merkelveroffentlich Britische Geheimdienst hatt vorher die Idee auch schon mal

                    48

                    Aus der Wikipedia (unter GNU Free Documentation License)

                    Asymmetrische Verfahren sind ein relativ neues Gebiet der Kryptografie Eine wichtige Vorar-beit fur die asymmetrischen Verfahren sind die Arbeiten von Whitfield Diffie Martin Hellmanund Ralph Merkle zum geheimen Schlusselaustausch Anfang der 1970er Jahre Im Sommer1975 veroffentlichten Diffie und Hellman eine Idee zur asymmetrischen Verschlusselung oh-ne jedoch ein genaues Verfahren zu kennen

                    Anfang der 1970er Jahre wurden von Ellis Cocks und Williamson ein dem spateren Ver-fahren von Diffie-Hellman ahnliches asymmetrisches Verfahren entwickelt welches aber inseiner wirtschaftlichen Bedeutung nicht erkannt und aus Geheimhaltungsgrunden nicht (wis-senschaftlich) publiziert und auch nicht zum Patent angemeldet wurde Alle drei waren Mitar-beiter des englischen Government Communications Headquarters

                    Der Durchbruch gelang Ronald L Rivest Adi Shamir und Leonard M Adleman die 1977das RSA-Verfahren entwickelten Es gilt bis heute als sicheres Verfahren und hat auszligerdem dengroszligen Vorteil in beiden Richtungen eingesetzt werden zu konnen

                    43 Einige Theoretische Grundlagen

                    431 Kleiner Fermat (oder kleiner Fermatrsquoscher Satz)

                    Fur beliebige Primzahlen p gilt

                    n(pminus1) = 1 mod p fur alle n isin Z

                    To do Wikipedia verlinken

                    432 Euklidischer Algorithmus

                    To do erganzen Erweiterter Euklidischer Algorithmus fehlerhaft

                    Aus der Wikipedia (unter GNU Free Documentation License)

                    Beschreibung durch PseudocodeIm Folgenden wird der moderne Euklidische Algorithmus sowohl in einer rekursiven als

                    auch einer iterativen Variante beschrieben Dabei sind a und b jeweils die beiden Zahlen derengroszligter gemeinsamer Teiler berechnet werden soll

                    Rekursive Variante

                    49

                    EUCLID(ab)

                    1 wenn b = 0

                    2 dann return a

                    3 sonst return EUCLID(b a mod b)

                    Iterative Variante

                    EUCLID(ab)

                    1 solange b = 0

                    2 r = a mod b

                    3 a = b

                    4 b = r

                    5 return a

                    FunktionsweiseIn jedem Schritt des Algorithmus wird eine Division mit Rest ausgefuhrt riminus1 = qi+1 middot

                    ri + ri+1 0 le ri+1 lt ri Die Division mit Rest hat die Eigenschaft dass ggT(riminus1 ri) =

                    ggT(ri ri+1) giltIm letzten Schritt des Algorithmus rnminus1 = qn+1 middot rn + 0 ist rn+1 = 0 und es gilt deshalb

                    ggT(rnminus1 rn) = ggT(rn 0) = rn

                    Da im ersten Schritt riminus1 = a und ri = b war ist ggT(a b) = rn

                    (Quelle httpdewikipediaorgwikiEuklidischer_Algorithmus)

                    (Denn es gilt ggT(a b) = ggT(b r))

                    Aus der Wikipedia (unter GNU Free Documentation License)

                    Man kann diese Rekursion in folgende Abfolge von Schritten fur den erweiterten euklidi-

                    schen Algorithmus fassen Erhalte rdquoardquo und rdquobrdquo als EingabeSetze rdquok=0rdquo r0 = a r1 = b s0 = 1 und s1 = 0WiederholeErhohe rdquokrdquo um einsBestimme den ganzzahligen Quotienten qk = rkminus1 div rkSetze rk+1 = rkminus1 minus qk middot rk und sk+1 = skminus1 minus qk middot skbis rk+1 = 0 giltGib den Rest rk = ggT(a b) und die Zahl sk mit ggT(a b) equiv sk middot a (mod b) zuruckJeder Schritt enthalt implizit auch einen Multiplikator tk = (rk minus sk middot a) div b wobei diese

                    Division keinen Rest lasst Die Folge (tk)k kann auch explizit bestimmt werden es gelten t0 =

                    0 t1 = 1 und tkminus1 equiv qk middottk+tk+1 Nach dem letzten Schritt ergibt sich nun ggT(a b) = sk middota+tk middotbDer Ubersicht halber werden beim handischen Rechnen auch noch die Hilfsfolgen (ak =

                    rkminus1)k und (bk = rk)k sowie (uk = skminus1)k sowie (vk = tkminus1)k mitgefuhrt

                    50

                    Zur Berechnung des Inversen modulo einer Restklasse benotigt man die tk aber nicht und kannsie ignorieren

                    Aus der Wikipedia (unter GNU Free Documentation License)

                    Rekursive VarianteFur den erweiterten euklidischen Algorithmus existiert auch eine rekursive Variante die

                    durch den folgenden Pseudocode gegeben istab zwei Zahlen fur die der erweiterte euklidische Algorithmus durchgefuhrt wirdrdquoextended euclidrdquo(ab)1 rdquorsquowennrdquorsquo b = 02 rdquorsquodann returnrdquorsquo (a10)3 (drsquosrsquotrsquo)larr rdquoextended euclidrdquo(b a mod b)4 (dst)larr (drsquotrsquosrsquo - floor(ab)trsquo)5 rdquorsquoreturnrdquorsquo (dst)

                    (Quelle httpdewikipediaorgwikiErweiterter_euklidischer_Algorithmus)

                    Wenn n mod m teilerfremd sind dann existiert so ein Exponent f so dass

                    n f equiv 1 mod m

                    ist

                    Wenn m = m1 middotm2 ein Produkt von zwei verschiedenen Primzahlen ist dann ist fur alle n die zum teilerfremd sind

                    n(m1minus1)middot(m2minus1) equiv 1 mod m

                    Denn es ist nm1minus1 equiv 1 mod m1 und nm2minus1 equiv 1 mod m2 Dann ist n(m1minus1)middot(m2minus1) minus 1 durch m1und m2 teilbar Denn nach dem Chinesischen Restsatz gilt n(m1minus1)middot(m2minus1) equiv 1 mod m1 middot m2 undwenn eine Zahl durch m1 middot m2 teilbar ist so auch durch m1 und m2

                    433 Beispiel

                    In Magma

                    p=17 q=23

                    m=(p-1)(q-1)

                    e=19

                    F=IntegerRing(m)

                    51

                    d=(Fe)ˆ(-1)

                    d=IntegerRing()d

                    19315 div 16

                    19315 -374 16

                    n=pq

                    K=IntegerRing(n)

                    N=100

                    C=(KN)ˆ(e) Verschlusseln

                    C

                    Cˆd

                    10019 equiv 349 mod 349

                    349352 equiv 100 mod 391

                    10019middot315 = 100 mod 17

                    10019middot315 = 100 mod 23

                    10019middot315 equiv 100374middot16+1 mod 17 equiv 100 middot (10016)374︸ ︷︷ ︸=1

                    mod 17

                    To do Analog von Mathias kopieren

                    To do Wiederholung einsortieren

                    Wiederholung

                    Nachricht n

                    ne equiv c( mod m)

                    Chiffre c

                    cd equiv (ne)d = ndmiddote = n1+k(pminus1)(qminus1) = n middot (n(pminus1)(qminus1))k︸ ︷︷ ︸=1

                    equiv n middot 1k = n mod m

                    nminusrarr

                    dm cminusrarr

                    em n

                    52

                    aus (em) kann man (dm) nicht leicht bestimmen weil man die Zerlegung m = p middotq nicht kenntWer p q kennt kann aus den einen den anderen Schlussel berechnen Wer de kennt kann pqbestimmen

                    Verschlusselung kann jeder ausfuhren offentlicher Schlussel (em) Entschlusselung bleibt demvorbehalten der das geheime d (oder auch pq) kennt

                    schnelles Potenzieren Ist die Berechung von ne ck ausreichend schnell

                    m 1000 Bit pq-150 Dezimalstellen

                    ne hat sehr sehr viele Dezimalstellen

                    Deshalb berechnet man erst modulo und potenziert dann mit e

                    (n mod m)e (c mod m)d

                    Beispiele n19 = n middot n middot middot n︸ ︷︷ ︸19 Multiplika-tionen

                    oder man rechnet

                    n n2 n4 n8 n16 4 Quadrierungen

                    n16 middot n2 middot n = n19

                    so auch bei n1025 = n n2 n1024 n middot n1024 wo nur 11 Multiplikationen gebraucht werden

                    Pseudocode nex=1

                    repeat

                    if (e = 1 mod 2)x = x middot n(prime mod mprime)

                    n = n2(prime mod mprime)

                    e = ediv2

                    until e==1

                    k = (nprime)0 middot xprime

                    x = k = ne

                    53

                    44 RSA Rivest Shamir Adleman

                    Bei dem Versuch die Idee der Asymmetrischen Kryptografie zu wiederlegen wurde RSA entwi-ckelt

                    RSA beruht auf der Schwierigkeit n = p middotq in seine Primfaktoren zu zerlegen Verschlusseln undEntschlusseln ist Potenzieren modulo n

                    D E = id

                    p = (pe)d mod n

                    p = pemiddotd mod n

                    e middot d = 1 mod (p minus 1) middot (q minus 1)

                    E(e n) ist offentlich und D(d n) geheim Die Bestimmung von e d n aus p q ist leicht GenauerDie Bestimmung von e aus (d n) ist leicht die Bestimmung von d aus (e n) ist schwer weilFaktorisierung n = p middotq (vermutlich) schwierig ist ist Bestimmung von d aus (e n) auch schwerWer p und q aus n berechnen kann kann auch d bestimmen (Euklid)

                    Wer e und d kennt kann p und q bestimmen (dazu waren Erlauterungen in der Vorlesung)

                    441 Funktionsweise des RSA-Verfahrens

                    (nach wwwcryptooldedownloadsCrypToolScript 1 3 04 depdf)Man kann die Einzelschritte zur Durchfuhrung des RSA-Verfahren folgendermaszligen beschrei-ben Schritt 1 bis 3 sind die Schlusselerzeugung Schritt 4 ist die Verschlusselung 5 die Ent-schlusselung

                    1 Wahle zufallig 2 verschiedene Primzahlen p und q und berechne n = p middot q Der Wert nwird als RSA-Modul bezeichnet

                    2 Wahle zufallig e isin 2 n minus 1 so dass gilt e ist teilerfremd zu J(n) = (p minus 1) middot (q minus 1)Zum Beispiel kann man e so wahlen dass gilt max(p q) lt e lt J(n) minus 1 Danach kannman p und q ldquowegwerfenrdquo

                    3 Wahle d isin 1 n minus 1 mit e middot d = 1 mod J(n) dh d ist die multiplikative Inverse zu emodulo J(n) Danach kann man J(n) ldquowegwerfenrdquo

                    bull (n e) ist der offentliche Schlussel Pbull (n d) ist der geheime Schlussel S (es ist nur d geheim zu halten)

                    4 Verschlusselung des Klartextes (bzw seiner Blocke) M isin 1 n minus 1

                    C = E((n e) M) = Me mod n

                    54

                    5 Entschlusselung des Chiffretextes (bzw seiner Blocke) C isin 1 n minus 1

                    M = D((n d) C) = Cd mod n

                    442 Beweis der Funktionsweise

                    (nach wwwcryptooldedownloadsCrypToolScript 1 3 04 depdf)Fur Schlusselpaare (n e) und (n d) die die in den Schritten 1 bis 3 des RSA-Verfahrens festge-legten Eigenschaften besitzen muss fur alle M lt n gelten M equiv (Me)d mod n wobei (Me)d =

                    Memiddotd Das heiszligt der oben angegebene Dechiffrieralgorithmus arbeitet korrekt Wir zeigen das in3 Schritten

                    1 Im ersten Schritt zeigen wir Memiddotd equiv M mod p Dies ergibt sich aus den Voraussetzungenund dem Satz von Fermat Da n = p middot q und J(p middot q) = (p minus 1) middot (q minus 1) und da e undd so gewahlt sind dass e middot d equiv 1 mod J(n) gibt es eine ganze Zahl k so dass gilte middot d = 1 + k middot (p minus 1) middot (q minus 1)

                    Memiddotd equiv M1+kmiddotJ(n) equiv M middot MkmiddotJ(n) equiv M middot Mkmiddot(pminus1)middot(qminus1) mod p

                    equiv M middot (Mpminus1)kmiddot(qminus1) mod p

                    (aufgrund des kleinen Fermat Mpminus1 equiv 1 mod p)

                    equiv M middot (1)kmiddot(qminus1) mod p

                    equiv M mod p

                    Die Voraussetzung fur die Anwendung des kleinen Fermat war dass M und p teilerfremdsind Da das im allgemeinen nicht gilt mussen wir noch betrachten was ist wenn M undp nicht teilerfremd sind da p eine Primzahl ist muss dann notwendigerweise p ein Teilervon M sein Das heiszligt aber

                    M equiv 0 mod p

                    Wenn p die Zahl M teilt so teilt p erst recht Memiddotd Also ist auch

                    Memiddotd equiv 0 mod p

                    Da p sowohl M als auch Memiddotd teilt teilt es auch ihre Differenz (Memiddotd minus M) equiv 0 mod pUnd damit gilt auch in diesem Spezialfall unsere zu beweisende Behauptung

                    2 Vollig analog beweist man Memiddotd equiv M mod q

                    3 Nun fuhren wir die Behauptungen der ersten beiden Schritte zusammen fur n = p middot qum zu zeigen Memiddotd equiv M mod n fur alle M lt n Nach den ersten beiden Schritten gilt(Memiddotd minus M) equiv 0 mod p und (Memiddotd minus M) equiv 0 mod q also teilen p und q jeweils dieselbeZahl z = (Memiddotd minus M) Da p und q verschiedenen Primzahlen sind muss dann auch ihrProdukt diese Zahl z teilen Also gilt

                    (Memiddotd minus M) equiv 0 mod p middot q

                    55

                    oderMemiddotd equiv M mod p middot q

                    oderMemiddotd equiv M mod n

                    45 Schwachen von RSA

                    bull Wenn N Nachrichten aus einer kleinen Menge gewahlt werden ist RSA unsicher

                    for Nprime do (Nprime)e = C1 if C1 = C then N = Nprime

                    bull Wenn N und e zu klein sind ist RSA unsicher dass heiszligt wenn Ne als Zahl kleiner als nist so das nich modulo gekurzt wird so kann man einfach eradicc

                    bull Angriff mit frei gewahlten Chiffretext angenommen man hat Zugriff auf die Verschlusse-lungsmaschine so dass man mit selber vorgebenen Cprime Nprime berechnen kann (Cprime minusrarr Nprime)

                    Re = S mod n S d = R mod n Cprime = S middotC

                    (Cprime)d = S d middotCd = R middot N︸︷︷︸Nrsquo

                    mod n

                    Nprime middot Rminus1 = N mod n

                    N1 minusrarr C1

                    N2 minusrarr C2

                    rArr N1 middot N2 minusrarr C1 middotC2

                    bull Jeder Benutzer braucht ein eigenes n dass heiszligt man muss fur jeden Benutzer die entspre-chenden Primzahlen suchen allerdings ist dies aufwendig

                    bull RSA ist extrem langsam im Vergleich zu symmetrischen Verfahren openssl speed rsabzw speed aes-256

                    46 Fuktionen in OpenSSL

                    461 genrsa

                    genrsa erzeugt Schlusselpaare fur RSASchlussellange num_bits frei wahlbar wobei es einen Bug bei kleinen Werten gibt (weniger als60 Bit) so kurze Schlussel aber auch nicht verwendet werden solltenOptionen

                    usage genrsa [args] [numbits]

                    -out file output the key to file

                    -passout arg output file pass phrase source

                    56

                    -f4 use F4 (0x10001) for the E value

                    -3 use 3 for the E value

                    -des encrypt the generated key with DES in cbc mode

                    -des3 encrypt the generated key with DES in ede cbc mode (168 bit key)

                    -idea encrypt the generated key with IDEA in cbc mode

                    -aes128 -aes192 -aes256 encrypt PEM output with cbc aes

                    -engine e use engine e possibly a hardware device

                    -rand filefile load the file (or the files in the

                    directory) into the random number generator

                    462 rsa

                    rsa gibt den public-key zu gegebenen private-key aus Auszligerdem auch weitere Informationenwie verwendeter Modulus Mit rsa kann auch ein gegebener key neu verschlusselt abgespeichertwerden

                    rsa [options] ltinfile gtoutfile

                    where options are

                    -in arg input file

                    -out arg output file

                    -pubin expect a public key in input file

                    -pubout output a public key

                    -passin arg input file pass phrase source

                    -passout arg output file pass phrase source

                    -text print the key in text

                    -noout donrsquot print key out

                    -modulus print the RSA key modulus

                    -check verify key consistency

                    -des encrypt PEM output with cbc des

                    -des3 encrypt PEM output with ede cbc des using 168 bit key

                    -idea encrypt PEM output with cbc idea

                    -aes128 -aes192 -aes256 encrypt PEM output with cbc aes

                    -inform arg input format - one of DER NET PEM

                    -outform arg output format - one of DER NET PEM

                    57

                    -sgckey Use IIS SGC key format

                    -engine e use engine e possibly a hardware device

                    463 rsautl

                    Mit rsautl konnen Dateien ver- oder entschlusselt und signiert oder verifiziert werden

                    Usage rsautl [options]

                    where options are

                    -in file input file

                    -out file output file

                    -inkey file input key

                    -pubin input is an RSA public

                    -certin input is a certificate carrying an RSA public key

                    -sign sign with private key

                    -verify verify with public key

                    -encrypt encrypt with public key

                    -decrypt decrypt with private key

                    -hexdump hex dump output

                    -pkcs use PKCS1 v15 padding (default)

                    -oaep use PKCS1 OAEP

                    -ssl use SSL v2 padding

                    -raw use no padding

                    -keyform arg private key format - default PEM

                    -passin arg pass phrase source

                    -engine e use engine e possibly a hardware device

                    464 PKCS

                    spater noch ausfuhrlicher hier nur kurz die Verwendung bei RSA

                    Padding beginnt mit 0002 endet mit 00 und dann kommt der Chiffretext

                    58

                    465 OAEP - Optimal Asymmetric Encryption Padding

                    Normalerweise wird mit RSA nur ein Schlussel fur eine symmetrische Verschlusselung ver-schlusselt da RSA verglichen mit symmetrischen Algorithmen sehr langsam ist

                    Bemerkung Vergleichen mit speed rsa und speed aes (siehe History 21012009)

                    Ist die so festgelegte Lange des Klartextes erheblich kleiner als die des RSA-Schlussels so ist einAuffullen der restlichen Bits notig Die implizite Methode (beim Betrachten des Klartextes alsZahl) einfach 0en einzusetzen empfiehlt sich nicht da die Zusatzinformation die ein Angreiferso uber den Klartext bekommt das Decodieren des geheimen Schlussels vereinfacht

                    Beim Padding soll diese Gefahr verringert werden Per default wird bei openssl PKCS benutztAllerdings ist die Verwendung von OAEP besser Beim OAEP ist im Gegensatz zum PKCSdie Lange des Klartextes nicht mehr sichtbar (man kann nur noch dass beginnende 00 Byteerkennen) Choosen Plaintext Attacke ist nicht mehr moglich

                    Dabei wird essenziell die zu verschlusselnde Nachricht mit einem Hashwert eines Zufalls-Stringsper xor verknupft und so randomisiert Eine Modifikation des benutzten Hashwerts wird dannmit der Nachricht konkateniert und steht beim Entschlusseln wieder zur Verfugung

                    1 Label hash Label =

                    2 PS erzeugen (alles Nullen 128-1-h-h-1-mdashmmdash)

                    3 DB =

                    4 Seed wahlen Lange h (irgendwas seed = Hash(irgendwas))

                    5 DBmaske = MGF(seed mdashDBmdash)

                    6 mDB = DB oplus GBmask

                    7 seedmaske = MGF(mDB mdashseedmdash)

                    8 mseed = seed oplus seedmaske

                    9 EM =

                    10 RSA-Verschlusselung C equiv EMe mod n

                    MGF Hash Eingabe x Lange l

                    tc = Hash(x c)

                    mdashcmdash = 4 Byte

                    MGF(x l) = t0 t1 t2 t3 |MGF( l)| = l

                    59

                    Ruckgangig

                    1 Entschlusseln

                    2 Zerlegen 00 mseed mDB

                    3 seedmaske = MGF(mDB mdashmseedmdash)

                    4 seed = mseed oplus seedmaske

                    5 DBmaske = MGF(seed mdashmDBmdash)

                    6 DB = mDB oplus DBmaske

                    7 Padding abtrennen

                    PKCS1 v15

                    Die fur den Modul verwendeten Primzahlen mussen die ersten beiden Bits gesetzt haben dasgarantiert nach Multiplikation der Primzahlen dass das Produkt im oberen Byte das obere Bitgesetzt hat und somit die feste voranstehende 0 uberdeckt

                    466 Wie erkennt man an Ciphertexten den Verschlusselungsalgorithmus- DER ASN1

                    Standards damit man (zB RSA) verschlusselte Texte erkennt

                    DER- distingushed Encoding Rules

                    ASN1- Abstract Syntax Notation

                    openssl asn1parse -genstr INTEGER4711 -out intasn1 openssl asn1parse -in intasn1 -inform DER

                    Integer werden in ASN1 als rsquo 02︸︷︷︸Tag

                    lange Datenrsquo kodiert Integers brauchen 1 Byte mehr rsquoDatenrsquo

                    damit Das Vorzeichen 00 enthalten ist Integer ist immer mit Vorzeichen

                    Tag fur andere Typen

                    Bool 01

                    Int 02

                    Octet String 04

                    Bitstring 03 rsquolangersquo rsquoungenutzte bits am Endersquo rsquoByte des Bitstringrsquo [evt ungenutzte Bits]

                    Text PRINTABLESTRING

                    60

                    utf8 UTF8String

                    Text mit Zeichen (emailadresse) IA5STRING

                    DatumZeit UTC

                    mit Jahrhundert GENTIME

                    nuscht (der leere Typ) NULL

                    Mengentypen seq set

                    Mann kann auch eigene Typen generierend EXPLICITAF oder so

                    467 Umgehen mit den Schlusselkomponenten

                    Ein vollstandiger RSA-Schlussel besteht aus einem Modul (modulus) n = p middot q offentlichemExponent e privatem Exponent d Primzahl 1 p Primzahl 2 q (haufig p gt q) Exponent 1 dpExponent 2 dq Koeffizient qi und kann so ausgegeben und gespeichert werden

                    Bei der Version fur rsquoarmersquo werden nur n offentlicher Exponent e und geheimer Exponent dangegeben

                    c equiv me mod n (3)

                    m equiv cd mod n (4)

                    Vorteil der vollstandigen Version Geschwindigkeitserhohung bei der Entschlusselung in Schritt(4)

                    dp equiv d mod (p minus 1) d = k middot (p minus 1) + dp

                    dq equiv d mod (q minus 1)qi middot q equiv 1 mod q

                    m equiv cd mod (p middot q) berechnenm1 equiv cdp mod p 500 Operationen mit 1

                    2 langem Modulm2 equiv cdq mod q 500 Operationen mit 1

                    2 langem ModulInsgesamt 1000 Operationen mit 1

                    4 der Lange

                    apminus1 equiv 1 mod p wenn (a p) = 1teilerfremd1

                    1kleiner Fermatscher Satz

                    61

                    m1 equiv cd mod pm2 equiv cd mod q

                    h equiv (m1minusm2)middotqi mod p (darauf achten dass das minusm2 mod p ausgerechnet wird nicht mod q)

                    m = m2 + h middot q

                    1 m lt n2 m equiv cd mod p da m2 + h middot q equiv m2 + (m1 minus m2) middot qi middot q mod p equiv m2 + m1 minus m2 equiv m1 alsoequiv cd mod pm equiv cd mod q da m2 + h middot q equiv m2 mod q also equiv cd mod q

                    x equiv y mod p und x equiv y mod q dann folgt x equiv y mod p middot qEuklidischer Algorithmus (p q)-teilerfremd dann p middot u + q middot v = 1 Chinesischer Restsatz

                    47 Miller-Rabin Test

                    Heute openssl dhparam und was Verbluffendes so dass man es nur mit der Phantasie einesInformatikers oder Mathematikers verstehen kann (Literatur Menezes Oorschot Handbook ofApplied Cryptography)

                    Primzahlen Feststellen ob eine Zahl eine Primzahl ist durch Testen von Divisionen wird beigroszligen Zahlen sehr lang

                    p middot q = n ausrechnen geht schnell Umkehrung n =middot ist moglicherweise schwer

                    Uber 2214+ 1 weiss man dass es keine Primzahl ist2 kennt aber keinen der Faktoren Kriterium

                    rdquokeine Primzahlldquo lasst sich auf folgende Art manchmal feststellenWenn (a n) = 1 so ist anminus1 equiv 1 mod nFermatTest Wenn fur (a n) = 1 anminus1 1 mod n so kann n keine Primzahl sein

                    Primzahlen Test

                    Wenn fur eine Zahl a mit (a n) = 1 der Fermat-Test nicht bestanden wird nennt man a einenZeugen fur Nichtprimalitat

                    2Vierzehnte Fermatsche Zahl

                    62

                    Zeugen gibt es sehr viele nicht realistisch alle zu rdquobefragenldquo Ausserdem gibt es Zahlen diekeine Zeugen haben aber keine Primzahl sind

                    Aus diophantischen Gleichungen folgt Es gibt ein Polynom mit ganzzahligen Koeffizienten f (n)mit der Eigenschaft Wenn f (n) gt 0hArr n ist PrimzahlAber das Polynom hat 26 Koeffizienten Fur Mathematiker ist das Problem erledigt da das Poly-nom existiert fur Informatiker ist es das nicht wirklich da die Berechnung ubermaszligig komplexist

                    Die Nicht-Primzahlen ohne Zeugen heissen Carmichael-Zahlen Haben die Eigenschaft forallp(p|nrArrp minus 1|n minus 1)rArr CarmichaelZum Beispiel 561 hat Teiler 3 11 17 Der Test liefert 2|560 10|560 16|560

                    Erweitern (n Primzahl) Wenn (a n) = 1 und anminus1 equiv 1 mod n und 2|n minus 1 (anminus1 equiv 1 mod na

                    nminus12 equiv )

                    Wenn x2 equiv 1 mod n was ist x mod n n|x2 minus 1 = (x minus 1)(x + 1) entweder n|x + 1 odern|x minus 1

                    FermatTest+ Wenn fur (a n) = 1 anminus1 1 mod n oder falls anminus1 equiv 1 mod n und anminus1

                    2 +1und a

                    nminus12 minus1 so kann n keine Primzahl sein

                    und 4|n minus 1 anminus1

                    4 anminus1

                    2 anminus1

                    1 mod n Diese Folge ist entweder 1 1 1 oder minus1 1 1 oderlowastminus1 1

                    Wenn (a n) = 1 und 2k|nminus 1 (k maximal) dann ist die Folge anminus12k a

                    nminus12kminus1 a

                    nminus12 anminus1 entweder

                    1 1 oder lowastminus1 1 1 (lowast steht fur beliebige Folge)

                    Probieren n = 81 n minus 1 = 80 durch 2er-Potenzen teilen kommt irgendwas mit 5 hinten rausAls Zeugen nehmen wir mal 2 Ausrechnen 25 210 220 240 280 und schauen ob diese Folgemodulo 81 einen der beiden Typen hat 32 1 mod 81

                    FermatTestlowast (= Miller-Rabin-Test) Wenn fur (a n) = 1 2k|n minus 1 teilt und die Folge anminus12k a

                    nminus12kminus1

                    anminus1

                    2 anminus1 modulo n nicht 1 1 und nicht lowastminus1 1 1 dann ist a ein Zeuge fur Nicht-primalitat

                    Fur Miller-Rabin-Test gibt es keine zeugenlosen zusammengesetzten Zahlen es gibt unter denzu n teilerfremenden Zahlen mindestens 25 Zeugen3 (MenezesOorschot Kapitel 4 Fact 425Fact 448 Tabelle 43)

                    Die fur Informatiker interessante Frage ist die Frage Wenn man eine Wahrscheinlichkeit kleiner2minus80 fur eine fehlerhaft durch Miller-Rabin nicht erkannte zusammengesetzte Zahl haben will

                    3Anmerkung spater 34 sind Zeugen 1

                    4 sind Lugner

                    63

                    muss man fur n (512 Bit) 6 Tests machen Je groszliger die Zahlen werden desto weniger Testsmuss man machen Fur 1024 3 Tests fur 2048 2 Tests Vorausgesetzt ist immer noch ein Testauf kleine Faktoren Dabei pruft man ob (n pi) = 1 fur pi lt B wobei pi kleine Primzahlen sindDas B wahlt man so dass dieser Test nicht langer dauert als ein Miller-Rabin-Test

                    Wie wahlt man Primzahlkandidaten Generiere Zahl mit Zufallszahlengenerator schaue ob diedurch 2 oder so teilbar ist wahle dann die nachste Zahl

                    openssl dhparam -dsaparams -text -noout 2048 schnellopenssl dhparam -text -noout 2048 langsam

                    Safe Prime pminus12 hat einen groszligen Primzahlfaktor q dann getestet ob 2(k middot (q + 1)) Primzahl ist

                    pminus12 ist Primzahl

                    Wofur braucht man die Primzahlen Naturlich fur RSA und jetzt neu

                    48 Diffie-Hellman-Schlusselaustausch

                    Alice und Bob haben gemeinsame offentliche Informationen tauschen offentliche Informationenaus und verfugen danach beide uber einen gemeinsamen privaten Schlussel

                    g = 2 (offentlich bekannt (Generator)) Primzahl p (offentlich bekannt)

                    Erganzungen g g2 g3 gpminus1 mod p (g Generator dann alle verschieden)

                    Bob Alice

                    Eve

                    x y

                    g^y mod p

                    g^x mod p

                    64

                    Bob wahlt zufallig 1 lt x lt pminus 1 und ruft Alice gx mod p zu Alice wahlt zufalig 1 lt y lt pminus 1und ruft gy mod p zu

                    Bob berechnet (gy)x mod p und Alice berechnet (gx)y mod p Beide erhalten gxmiddoty mod p An-greifer Eve kennt nur gx mod p gy mod p fehlt gxmiddoty mod p

                    Wenn Eve das diskrete Logarithmusproblem losen konnte also zu gx mod p und g mod pdas x ausrechnen konnte dann ware gxmiddoty mod p leicht zu berechnen Die besten Algorithmenfur das diskrete Logarithmusproblem mod p sind subexponentiell im groszligten Primfaktor vonp minus 1

                    Falls (p minus 1) viele kleine Primfaktoren pi hat ist das diskrete logarithmus Problem leicht denndann lost man das Problem nicht a mod (pminus1) sonder jeweils a mod pi und setzt0 dass ganzedann mit dem Chinesischen Restsatz zusammen

                    Sucht p so dass pminus12 auch eine Primzahl ist dazu wird zuerst eine Primzahl pprime gesucht und dann

                    geguckt ob 2pprime + 1 auch Prim ist

                    Openssl

                    Variante DH (DSAparam) (-dsaparam)

                    p-Primzahl 1536

                    g-rsquoGeneratorrsquo nicht von (p minus 1) sondern von der Restklasse h

                    160 Bit g g2 g3 gh alle verschieden mit h=160 Bit

                    Dann sollen xy so gewahlt werden dass 1 lt x y lt h = 160 Bit

                    Ein weiteres asymmetrisches Cryptosystem kann man darauf aufbauen Alle kennen g und pjeder generiert sich x (privater Schlussel) und gx mod p wird veroffentlichtAlice will Bob etwas verschlusselt schickenSie generiert ein k berechnet aus k und Bobs veroffentlichtem gx a = (gx)k mod p und ausdem allgemein bekanntem g gk mod pM sei die Nachricht ( mod p) die Alice verschicken will Sie berechnet a middot M mod p undsendet an Bob das Paar (gk mod p a middot M mod p)Bob berechnet (gk)x mod p = a und dividiert amiddotM

                    a mod p und erhalt somit M

                    Der Schlussel a darf nicht zweimal verwendet werden

                    Man nennt (gk a) zeitweiliger bzw ephemeraler Diffie Hellmann Schlussel

                    Nachteil die Nachrichtenlange wird verdoppelt

                    65

                    Das Verfahren ist unsicher wenn Alice die Zahl x schlecht wahlt x = 1 2 1 2 1 2 1 = x1 x2

                    49 ElGamal-Cryptosystem

                    (siehe auch TR 3111 vom BSI auf Seite 21)

                    Auf Diffie-Hellmann aufbauendAlice offentlicher Schlussel ga (p g) privat aBob offentlicher Schlussel gb (p g) privat b

                    Alice will an Bob schicken

                    1 Zufallszahl k generieren

                    2 Berechne mit Bobs Parametern gk mod p

                    3 Berechne mit Bobs Parametern (gb)k mod p (DH-Schlussel)

                    4 Berechne m middot (gb)k mod p

                    5 Sende(gkm middot (gb)k

                    )mod p

                    Bob empfangt (x y)

                    1 Berechne xb mod p (DH-Schlussel)

                    2 y middot (xb)minus1 mod p = m mod p

                    Alice baut also einen temporaren DH-Schlusselteil4 zu Bobs Parametern und sendet diesen unddie damit verschlusselte Nachricht m

                    Nachteil Nachricht wird durch den Ephemeralschlussel doppelt so lang

                    410 Wiederholung DH

                    Generator gPrimzahl pga mod p Restklassen mod p = Korper(middot inverses)Dass p Primzahl ist ist eigentlich ZufallErzeugendes Element GOperation auf Elementen +

                    a middotG = G + G + G + + G a-malEs muss schwer sein aus G und B = a middotG gegeben das a zu bestimmenG muss eine Ordnung n haben n middotG = 0 (Neutrales Element der Operation +)

                    4Auch Ephemeralschlussel genannt

                    66

                    4101 Beispiel

                    Alice Bob G+ nAlice denkt a denkt a middotGBob denkt b denkt b middotGBeide tauschen a middotG und b middotG aus und berechnen a middot b middotGa middotG ist leicht zu berechnen double and adda = a0 + a1 middot 2 + + ak middot 2k

                    a middotG = a0 middotG + a1 middot 2 middotG + + ak middot 2k middotG(k minus 1)-mal rdquomiddot2ldquo und (k minus 1)-mal rdquo+ldquo

                    411 was anderes

                    Nimmt man nun G groszlige Gruppe mit n Elemente und der Addition +

                    g-Generator

                    g 2g 3g nG︸︷︷︸Nullelement

                    Alice wahlt 1 lt x lt n bestimmt x middot g

                    Bob wahlt 1 lt y lt n bestimmt y middot g

                    Dann wieder K = (ab) middot g = K

                    To do erganzen

                    Problem des Diskreten Logarithmus in G gegeben ist G g Generator ist 0 c = a middot g in Ggesucht alogGc-diskreter Logarithmus in G

                    Diese Variante funktioniert also mit allen rsquoKomplizierten Gruppenrsquo das fuhrt zu dem nachstenThema

                    412 Elliptische Kurven

                    Wo gibt es so etwas schon Elliptische Kurven Sind nicht weit verbreitet weil sie dem Mana-gement schwer zu erklaren sind

                    67

                    Aus der Wikipedia (unter GNU Free Documentation License)

                    In der Zahlentheorie ist eine elliptische Kurve eine singularitatenfreie algebraische Kurve derOrdnung 3 in der projektiven Ebene

                    Von besonderem Interesse zB fur die Faktorisierung naturlicher Zahlen sind aufgrundihrer einfachen Struktur elliptische Kurven der Form cy2 = x3 + ax + b mit c 0 und 4a3 +

                    27b2 0 Einige moderne Verschlusselungsverfahren basieren auf solchen Kurven Der Nameleitet sich historisch davon ab dass diese Kurven durch elliptische Integrale parametrisiertwerden konnen

                    Elliptische Kurven uber endlichen Korpern werden in der Kryptografie eingesetzt Dazuwird ausgenutzt dass eine Gerade (lineare Funktion) die zwei Schnittpunkte P und Q mit ei-ner Elliptischen Kurve hat diese auch in einem 3 Punkt schneidet Der Punkt der aus demletzteren durch Verkehren des Vorzeichens der Y-Koordinate (wenn die Kurve die oben ange-gebene Form hat) entsteht wird P + Q genannt Man kann zeigen dass diese Punktaddition(P und Q werden addiert das Ergebnis ist der Punkt P + Q) sowohl kommutativ als auch as-soziativ ist Erganzt man die Elliptische Kurve um einen weiteren Punkt 0 (genannt Punkt imUnendlichen) so bildet sie zusammen mit der (etwas erweiterten) Punktaddition eine abelschealgebraische Gruppe

                    Sei nun P ein Punkt der Elliptischen Kurve Der Punkt P + P wird mit 2P bezeichnetentsprechend definiert man kP = P + + P als k-fache Addition des Punktes P Ist P nichtder 0-Punkt und ist die Ordnung der Elliptischen Kurve prim so kann auf diese Weise jederPunkt der Kurve erreicht werden (dh zu jedem Punkt Q auf der Kurve existiert eine naturlicheZahl k mit Q = kP) Die Aufgabe aus gegebenen Punkten PQ diesen Wert k zu ermittelnwird als Diskretes Logarithmus-Problem der Elliptischen Kurven (kurz ECDLP) bezeichnetEs wird angenommen dass das ECDLP (bei geeigneter Kurvenwahl) schwer ist dh nichteffizient gelost werden kann Damit bieten sich Elliptische Kurven an um auf ihnen asymme-trische Kryptosysteme zu realisieren (etwa einen Diffie-Hellman-Schlusselaustausch oder einElgamal-Kryptosystem)

                    y2 = x3 + a middot x + b Skizze der Kurven S2Zu S2 Punkte auf der Kurve kann man addieren

                    Die Rechenregeln gehen auch in einem Korper mod pBeispiel y2 equiv x3 + a middot x + b mod p Skizze S3

                    Es gibt immer Punkte mit denen man rechnen kann Punkte sind geeignet die Addition funk-tioniert auch und hat die Anzahl N der Punkte einen groszligen Primzahlteiler dann haben wir auchKryptosystem mit G+ n Wenn groszliger Primzahlteiler exisitert1 N hat groszligen Primzahlteiler n2 Wahlen zufallig einen Punkt G als GeneratorDaraus erhalt man DH und El Gamal

                    Zuerst eingefuhrt durch Victor Miller und Neal Koblitz um 1980 herum Damals war N schwer

                    68

                    bestimmbar Inzwischen gibt es bekannte Algorithmen (Schoof-Algorithmus)Diskretes Logarithmusproblem ist fur elliptische Kurven wirklich exponentiell (bis jetzt) EinBit mehr verdoppelt den Rechenaufwand (192-Bit-256 Bit bewegt sich in GroszligenordnungenRSA 2000-4000-Bit)

                    Erganzung

                    1Bei der Erforschung von Eliptischen Kurver stellte sich zuerst die Frag wie groszlig ist eigentlichdie Ordnung n der Gruppe Man wusste n sim p und man wusste sogar n minus p + 1 minus

                    radicp lt n lt

                    minusp + 1 +radic

                    p

                    2 Schnelle Algorithmen zur Berchnung der Ordnung

                    3 ECDLP ist schwer wenn n einen groszligen Primfaktor hat

                    To do sortieren

                    Erganzung

                    man hat p a bG n h

                    K = y2 = x3 + ax + b

                    p ist fur die Punktaddition (Formeln siehe enwikipediaorg wobei λ = (yQ minus yP) middotminus1

                    (xa minus xp)︸ ︷︷ ︸mit GGT

                    mod p)

                    Anmerkung zum Wikipedia Artikel binary Case bedeutet man die Eliptischen Kurven auch inKorper mit 2k betrachten allerdings vieler solcher Falle patentiert

                    G = Generatorpunkt mit G 2G 3G nG alle verschieden n kleinste Zahl so dass alle ver-schieden

                    nG = 0

                    bei der DSA-Parameter Form nimmt man weniger Grsquos

                    Der nachste Parameter ist der cofactor h welches den Unterschied zwischen n und der Anzahlder Produkte auf der Kurve angibt

                    Trick beim testen ob alle iG verschieden sind man guckt ob n eine Primzahl ist und ob nG = 0ist wenn ja ist dies das erste mal sonst ware n ja keine Primzahl Also sind alle vorherigen iG

                    69

                    verschieden

                    Kurven finden besser Bestimmung der Punktanzahl ist schwer

                    Fruher gab es kleine cofactoren h lt 16

                    openssl ecparama -list_curves sind schon vorher erzeugt kann openssl nicht selber

                    openssl ecparam -name secp160k1 -text -noout da die Kurve festgelegt ist gibt es nurein object zuruck

                    openss ecparam -name secp160k1 -text -param_enc explicit -noout

                    openss ecparam -name secp160k1 -text -param_enc explicit -noout -conv_form compressednichtkomprimiert gibt nur die x-Koordinate aus

                    Bei der komprimierten Form kann mit der Kurve die andere eindeutig bestimmen (oder so)

                    Darstellung als komprimierte Punkt ist auch wieder patentiert

                    413 Elliptische Kurven Nachtrag

                    GF(p) (Galois-Field) sind Kurven mod p mit p Primzahl erfullen Gleichungen der Form y2 =

                    x3 + a middot x + b

                    GF(2k) Korper mit 256 Elementen = 28

                    In OpenSSL nur elliptische Kurven mod p patentfrei

                    Kofaktor finden Wir haben Punktgruppe G es gibt einen Generatorpunkt gn middotG = 0 n ist die Ordnung

                    cofactor︸ ︷︷ ︸klein

                    lowast order︸︷︷︸primzahl

                    = Anzahl der Punkte

                    (cofactor soll klein sein order Primzahl) Anstelle Punkt auf der elliptischen Kurve als (x y) (x ymod p) abzuspeichern TrickWenn es ein Punkt ist gibt es zu x zwei y die quadratische Gleichung y2 = x3 +a middot x+b erfulleny1 =

                    radicx3 + ax + b mod p

                    y2 = minusradic

                    x3 + ax + b mod peine der beiden Zahlen hat als letztes Bit immer 1 die andere eine 0 man nimmt daher nur noch(x LSB(y)) (x und kleinstes Bit von y)

                    70

                    414 Rucksack-Verschlusseln

                    Kryptosystem das sich bei OpenSSL zu recht nicht findet Hat den Anschein als wurde es aufeinem NP-vollstandigen Problem beruhen Problem ist NP-vollstandig weil es ein allgemeinesRucksackproblem istSieht aber nur so aus ist aber nur polynomial weil es ein Transformiertes eines leichten Ruck-sackproblems ist

                    Gegeben W Fassungsvermogen des Rucksacks w1w2 wk kleine GewichteGesucht W =

                    sumeiwi mit ei isin 0 1

                    Rucksack-Verschlusseln von MerkleHellmann Rucksack mit schnell wachsenden Gewichtenist leicht zu berechnendh wi gt

                    sumjlti e jw j nachstes Gewicht ist immer schwerer

                    4141 Beispiel

                    Rucksack W = 51 = 31 + 15 + 3 + 2 wprimei s 2 3 7 15 31Grundidee Aus dem schnellen Rucksack einen langsamen machenM gt

                    sumwi k mit (M k) = 1 k middot 2 k middot 3 k middot 31 mod M

                    M = 61 ist Modul k = 17 ist privater Schlussel m = (1 1 0 1 1) ist unverschlusselte Nachricht31 51 58 11 39 ist offentlicher Schlussel 34 + 51 + 11 + 39 = 135 = 13rarr c ist verschlusselteNachrichtEmpfanger rechnet aus dem erhaltenen Gewicht (135) das richtige Gewicht wieder raus 135middotkminus1

                    mod 61 = 51 und kann das Problem mit den schnellen Gewichten losen

                    Zum BrechenMan transformiert 34 51 58 11 39 in eine Folge die schnell wachsend ist zB 1 3 5 11 29dh das transformierte System kann auf mehrere Probleme zuruckgefuhrt werden man brauchtnur eine passende Rucktransformation finden Adi Shamir hat dafur einen polynomiellen Algo-rithmus angegeben

                    415 Merkle Puzzle

                    Man generiert sich 1000000 Nachrichten rdquoDas ist Nachricht ni fur den Schlussel k jldquo ni zufalli-ge 20-Bit Zahl k j 128-Bit SchlusselVerschlusselungsverfahren DES diese 1000000 werden mit 20-Bit Schlusseln verschlusseltAlice schickt die 1000000 Nachrichten an Bob als offentlichen SchlusselBob will Alice eine Nachricht schicken Er sucht eine der Nachrichten aus dem offentlichen

                    71

                    Schlussel aus und macht eine Brute-Force Attacke auf diese Nachricht Er findet ni und kiBob verschlusselt mit dem ki seine Nachricht und sendet ni im Klartext mit

                    Alice und Bob haben linearen Aufwand Eve quadratischen

                    Von everything2comAlice and Bob agree on a symmetric algorithmAlice generates a large number (over a million at least) of messages of the form ldquoThis is myindex X and my puzzle is Yrdquo Each of the messages is encrypted with a 20-bit keyAssume there are 220 (about a million) messages it takes 220 operations to get the key and acomputer can perform 220 operations per second Bob takes 1 second to recover the key to amessage Eve takes 12 daysNow make that 230 (about a billion) messages Bob still only takes a second to get the key andit will take Eve 34 years

                    Public Key Idee hier schon vorhanden

                    416 Rabin-Verfahren und Wurzelziehen

                    Aus der Wikipedia (unter GNU Free Documentation License)

                    Das Rabin-Kryptosystem ist innerhalb der Kryptologie ein asymmetrisches Kryptosystem dasauf einem Faktorisierungsproblem beruht und mit RSA verwandt ist Es lasst sich prinzipiellauch zur Signatur verwenden In der Praxis findet das Verfahren allerdings wegen bestimmterAngriffsmoglichkeiten kaum Anwendung

                    4161 Schlusselgenerierung

                    Aus der Wikipedia (unter GNU Free Documentation License)

                    Seien p und q zwei moglichst groszlige Primzahlen fur die eine bestimmte Kongruenzbedingunggelten muss Der offentliche Schlussel n wird durch Multiplikation der beiden Zahlen erzeugtalso n = p middot q Der geheime Schlussel ist das Paar (p q) Anders ausgedruckt Wer nur n kenntkann ver- aber nicht entschlusseln wer dagegen p und q kennt kann damit auch entschlusselnZum Erzeugen des offentlichen Schlussels mussen die Zahlen p und q bekannt sein Der offent-liche Schlussel lasst sich nur genau aus den beiden Primzahlen erzeugenWaren p und q keine Primzahlen so lieszlige sich das Verfahren ubrigens nicht anwendenSeien beispielhaft p = 7 q = 11 (in der praktischen Anwendung handelt es sich um sehr vielgroszligere Zahlen um die Entschlusselung durch Dritte so schwierig wie moglich zu machen)Daraus ergibt sich der offentliche Schlussel n = p middot q = 77

                    72

                    4162 Kongruenzbedingung

                    Aus der Wikipedia (unter GNU Free Documentation License)

                    Fur p und q muss die Kongruenzbedingung(

                    pminus1p

                    )= (p minus 1) und

                    ( qminus1q

                    )= (q minus 1)

                    (wobei fur(

                    nminus1n

                    )= (n minus 1)

                    nminus12 equiv (n minus 1) mod n = (n minus 1) gilt)

                    oder einfacher ausgedrucktp equiv q equiv 3 mod 4gelten

                    Allgemein gilt namlich fur die Primzahl r mit r equiv 3 mod 4 und die Zahl a mit a equivb2 mod ra

                    (r+1)4 equiv

                    radica mod r

                    Diese Eigenschaft dient dazu spater die Entschlusselung zu erleichternWegen 7 equiv 11 equiv 3 mod 4 ist die Kongruenzbedingung fur das Beispiel erfullt

                    n = p middot q Produkt von Primzahlen

                    m soll verschlusselt werden c equiv m2 mod n (einfach Quadrieren weil Wurzelziehen schwer istwenn der Modul ein Produkt von 2 Primzahlen (p middot q) ist weil wer Wurzel ziehen kann kannauch Faktorisieren (n)

                    Begrundung Es gibt 2 Losungen c = x2 equiv y2 mod n Wie findet man nun die Faktoren von nn teilt x2 minus y2 = (x minus y)(x + y) und x gt y und (x minus y) lt n und n hat nur 2 Primfaktoren daherx minus y = p und x + y = q Wurzelziehen ist leicht mod p mod q Gesucht Wurzel c mod pxp = c

                    p+14 mod p und xq = c

                    q+14 mod q

                    x2p equiv c

                    p+12 equiv c

                    pminus12 middot c mod p

                    Weil cpminus1 equiv 1 mod p ist (nach kleiner Fermat) die Wurzel daraus cpminus1

                    2 equiv plusmn1 wegen c equiv m2

                    mod n gilt (m2)pminus1

                    2 equiv mpminus1 equiv 1(p) Stuck fehlt Ende des Wurzelziehens

                    4163 Verschlusselung

                    Aus der Wikipedia (unter GNU Free Documentation License)

                    Sei nun P = 0 nminus1 der Klartextraum (er besteht also aus Zahlen) und m isin P der KlartextNun lasst sich der Geheimtext c durch c = m2 mod n bestimmen Dabei ist c der QuadratischeRest von zu der Quadratzahl m2 zum Modulo der Schlussel-Zahl n Im praktischen Einsatzbietet sich die Verwendung von Blockchiffre an

                    In unserem Beispiel sei P = 0 76 der Klartextraum m = 20 der Klartext Der Ge-heimtext ist hierbei nun c = m2 mod n = 15

                    73

                    Dabei muss man beachten dass fur genau vier verschiedene m das c den Wert 15 aufweistnamlich fur m isin 13 20 57 64 Ahnliches gilt fur die meisten c

                    4164 Entschlusselung

                    Aus der Wikipedia (unter GNU Free Documentation License)

                    Seien allgemein c und r bekannt gesucht wird m isin 0 n minus 1 mit m2 equiv c mod r Furzusammengesetzte r (beispielsweise unsere n) existiert kein effizientes Verfahren zur Bestim-mung von m Ansonsten wenn also r isin P (in unserem Fall p und q) dann lasst sich jedoch derchinesische Restsatz ausnutzen

                    In unserem Fall sind nun die Quadratwurzelnmp =

                    radicc mod p

                    undmq =

                    radicc mod q

                    gesuchtWegen obiger Kongruenzbedingung gilt

                    mp = c(p+1)

                    4 mod pundmq = c

                    (q+1)4 mod q

                    In unserem Beispiel ergeben sich mp = 1 und mq = 9Mit dem erweiterten euklidischen Algorithmus werden nun yp und yq mit yp middot p+yq middotq = 1

                    bestimmt In unserem Beispiel erhalten wir yp = minus3 und yq = 2Nun werden unter Ausnutzung des chinesischen Restsatzes die vier Quadratwurzeln +r

                    minusr +s und minuss von c + nZ isin ZnZ berechnet (ZnZ steht hierbei wie ublich fur die Menge derRestklassen modulo n die vier Quadratwurzeln liegen in der Menge 0 n minus 1)

                    r = (yp middot p middot mq + yq middot q middot mp) mod nminusr = n minus rs = (yp middot p middot mq minus yq middot q middot mp) mod nminuss = n minus s

                    Eine dieser Quadratwurzeln mod n ist wieder der anfangliche Klartext m Im Beispielgilt m isin 64 20 13 57

                    417 Angriffe auf asymmetrische Verschlusselungsverfahren

                    Fall RSA

                    74

                    4171 1 Angriff Common modulus attack

                    Idee Gleicher Modul fur verschiedene Leute hatte den Vorteil dass man sich nur die kleinenoffentlichen Exponenten e1 und e2 merken muss nicht mehr die groszligen Module hat aber Nach-teil (e1 e2) = 1 teilerfremd umiddote1+vmiddote2 = 1 (mit erweitertem Euklid) Sendet man eine Nachrichtm an zwei Alices berechnet also c1 = me1 mod n und c2 = me2 mod n dann kann man mitden Chiffren c1 und c2 auch ausrechnen cu

                    1 middot cv2 = me1u middot me2u = me1u+e2v = m mod n Nachricht

                    erhalten

                    4172 2 Angriff kleiner geheimer Exponent d

                    Wenn |d| lt |m|3 dann ist Faktorisieren moglich Sicherheitsrisiko geheimer Exponent muss im-

                    mer moglichst groszlig sein aus groszligem offentlichen Exponenten |e| kann man erfahren dass dergeheime Exponent klein ist

                    4173 3 Angriff Faktorisieren

                    Wenn p ungefahr so groszlig wie q also p minus q = ∆ klein ist dann ist ( p+q2 + ∆

                    2 ) (ungefahr Wurzel n+ was kleines = p) middot( p+q

                    2 minus∆2 ) = p middot q Man weiszlig dass die eine Zahl uber Wurzel n liegt und die

                    andere Zahl unter Wurzel n (Wurzel n + klein = p Wurzel n - klein = q)

                    4174 Echt schlechte RSA-Schlussel

                    n = 3middotq (1024 Bit) und offentlichen Exponenten bei TCTrustCenter abgegeben Damit kann manzeigen dass PGP als Signaturverfahren schlecht ist Schlussel schlecht gewahlt dadurch kannjeder die Kommunikation mitlesen da n sehr leicht zu Faktorisieren die Leute sie konntender Person mit dem schlechten Schlussel vertrauenswurdige Nachrichten schicken und laufenin die Falle dass ihre Nachrichten nun offentlich sind Anderer Fall Bewuszligt solche Schlusselvergeben um Nachrichten in einem kompletten Netzwerk lesen zu konnen

                    n = Primzahl e middot d equiv 1 mod (n minus 1)

                    Mit n als Primzahl geht normale Entschlusselung nicht

                    n p q e dp dq qi dc equiv me mod nm1 equiv cdp mod pm2 equiv cdq mod qdp equiv d mod (p minus 1)

                    75

                    dq equiv d mod (q minus 1)

                    m = m2 + (m1 minus m2) middot qi︸ ︷︷ ︸mod p

                    middotq

                    m equiv cd mod q und m equiv cd mod prArr cd

                    Bundesamt fur Informationssicherheit sagt zur Verwendung von RSA p q mussen unabhangigvoneinander zufallig erzeugt werden und 0 5 lt | log2 p minus log2 q| lt 30

                    4175 Schnelles Faktorisieren bei Fehler im System

                    DFA - Differential Fault Attack System das entschlusselt aber sich an einer Stelle verrechnetmprime1 ist Rechenfehler statt wirkliches m bekommt man ein mprime = m2 + (mprime1 minus m2)qi lowast qbildet man nun m minus mprime 0 aber durch q teilbar dh bringt man das System dazu einen Fehlerzu machen und hat man die Originalnachricht GGT (m minus mprime n) = q schon hat man den Mo-dul faktorisiert hat funktioniert viele Chipkarten verrechneten sich unter Streszlig Es reicht dasmprime zu kennen m kann unbekannt bleiben denn man rechnet (mprimee minus c n) = q es reicht eineentschlusselte Nachricht zu haben

                    Anderer Angriff auf ChipkartenDPA - Differential Power Analysis Stromverlauf ansehen Differenzen bilden und sequentiellanalysieren

                    Angriff auf El Gamal Systemegeheimer Schlussel a offentlich g p ga Verschlusselte Nachricht zufalliges k (gk mmiddotgak)= c 1Angriff k gleich fur verschiedene Nachrichten oder k1 k2 in Abhangigkeit oder k k+1 k+2 fur verschiedene Nachrichten oder a middot k + b

                    4176 Angriff mit gewahltem Chiffretext

                    Normalerweise bei RSA m minusrarr c = me mod n

                    cprime vorgegeben fuhrt zu Klartext mprime = (cprime)d mod nAnforderung Beliebiger Chiffretext auszliger cprime = c wahlbar zu dem man dann den Klartext erhalt

                    Problem bei RSA

                    1 r (zufallig gewahlt)rarr re mod n = s

                    2 cprime = s middot c mod nVerschlusselungsmaschine liefert dann (cprime)d = sd middot cd = (re)d middot m = r middot m mod n = mprime

                    76

                    3 Letzter Schritt m = mprime = rminus1 mod n

                    Das geht nur theoretisch in der Praxis geht das nicht weil Angreifer kann das r nicht steuernr middot m wird aber von der Verschlusselungsmaschine verworfen weil es bei zufalligem r keinkorrektes Padding hat

                    Schwache des RSA Multiplikationseigenschaftm1 rarr c1 und m2 rarr c2 (m1 m2 gultige Klartexte)m1 middot m2 rarr c1 middot c2m1 middot m2 nicht als gultiger Klartext zugelassen

                    5 Signaturmechanismen

                    Wie erstellt man signierte Daten und versucht ein Aquivalent zu dem zu schaffen was man imtaglichen Leben durch Unterschriften schafftEigenschaften einer Signatur sollen nachgebildet werden Man weiszlig von wem ein Dokumentkommt sie ist an eine Person gebunden und kann von niemanden sonst nachgemacht werden undvom Inhaber nicht abgestritten werden Nachtragliche Anderungen an unterschriebenen Doku-menten sollen nicht mehr moglich sein (gibt es so im echten Leben nicht)

                    51 Integritatsschutz und Hashfunktionen

                    To do neu Hashfunktionen Definition einsortieren

                    Hashfunktion Beliebige Daten werden auf Binarfolgen konstanter Lange abgebildet

                    Def Eine Hashfunktion H ist eine Abbildung 0 1lowast rarr 0 1k auf Hashwerte der Lange k

                    SHA-256 (SHA- Secure Hash Algorithmen) - Hashwerte der Lange 256 Bit

                    1 Es gibt Kollisionen

                    d1 d2 H(d1) = H(d2)

                    2k Hashwerte aber potentiell abzahlbar viele Daten

                    Wunsch

                    Man soll diese Kollisionen nicht finden konnen und am besten es gibt sie nicht Hashfunktionendienen zum unterscheiden von Daten

                    77

                    H(d1) H(d2) dann ist d1 d2

                    Dementsprechend groszlig muss das k sein so dass genugend viele Werte unterscheiden kann

                    Anforderungen an Hashfunktionen

                    Wunsch Kollisionsresitent (schwer Kollisionen zu konstruieren) man kann nicht zwei Doku-mente mit dem gleichen Hashwert konstruieren

                    Wunsch Zweites Urbild resistent (schwer zweites Urbild zu konstruieren) man kann zu einemDokument nicht ein zweites mit dem gleichen Hashwert bestimmen

                    Geburtstagsparadoxon Kollisionen entstehen zum Beispiel in Horerkreisen 23 Horer(innen)dann haben mit mehr als 50 Wahrscheinlichkeit zwei am gleichen Tag Geburtstag

                    H Horer rarr Datum h 7rarr Geburtstag(h)

                    h1 h2 H(h1) = H(h2)

                    Bestimme die Wahrscheinlichkeit dass keine zwei am gleichen Tag Geburtstag haben

                    1 minus g =365middot middot(365minusn+1)

                    (365n) wobei n die Anzahl der Horer ist (Fur n = 23 ungefahr 50)

                    radic365 20

                    g radic

                    Hashwerte

                    Bei 2128 Hashwerte muss man mit Kollisionen rechnen ( Bsp 30 bei 19 Personen 19 radic

                    365)

                    Merke Das Geburtsatgs Paradox beschert uns Kolisionen bei 2k2 Hashwerten

                    To do ende Neu

                    Hashfunktionen Schon bekannt aus dem ersten Semester (Hashtabellen)

                    Allgemeine Eigenschaften

                    1 Komprimieren beliebig lange Werte auf n-bit Werte

                    2 Einfach (und schnell) berechenbar

                    Werte Fingerabdruck Prufwert Hashwert

                    78

                    Kollisionen h(x) (Hashfunktion) mit x1 x2 aber h(x1) = h(x2) x1 und x2 ist KollisionWahrscheinlichkeit fur Kollision fur zufallig gewahlte Werte sollte 1

                    2n sein (Anforderung anHashfunktion)

                    Wir verlangen dass die Variabilitat in der Eingabe sich auch in den Prufwerten widerspiegeltsprich Wenn die Eingabewerte gleichverteilt sind sind es auch die Ausgabewerte

                    To do 20090422

                    To do einsortieren

                    Kollisionen rsquovermeidenrsquo durch Groszlige 160 Bit Prufwerte (280 fur Kollision (2100 mdash AES 128 mdashbzw 2112 2128 als Kollisionsschranken)

                    Zusatzlich Voraussetzungen fur die Pruffunktion

                    1 Kollisionsresistenz Es muss schwer sein zwei Nachrichten m1m2 zu finden so dassH(m1) = H(m2)

                    (Es ist schwer Zwillinge zu konstruieren)

                    2 Zwillingsresistenz Es muss schwer sein (also kryptografisch Aufwendig) zu einer Nach-richt m1 eine Nachricht m2 zu konstruieren so dass H(m1)FH(m2) ist

                    (Wenn man eine Bruder hat dann ist es schwer eine zwillings Schwester dazu zu konstru-ieren)

                    (aufwendiger als erstens)

                    3 Urbildresistenz Es muss schwer sein zu einem beliebigen Prufwert h eine Nachricht zukonstruieren so dass H(m) = h ist

                    4 Die Prufwerte mussen rsquozufalligrsquo aussehen Die Ausgabe von H genugt Anforderungen aneinen Zufallszahlengenerator (gewisse statistische Unauffalligkeit) also pseudozufallig

                    Eigentlich musste man noch mehr Fordern namlich dass man keine zwei Nachrichten findet diesehr ahnliche Hashwerte haben und dass man zu einer gegeben Nachricht keine Nachricht miteinem ahnlichen Hashwert findet

                    Beispiel H gute Pruffunktion

                    H(m) =

                    |m| n fix so Hprime(m) = 0||H(m)(H(m) rangehangen)|m| = n so ist Hprime(m) = 1||m( rangehangen)

                    h ist die Lange der Prufwerte von H

                    79

                    Hprime ist kollisionsresistent wenn es H ist aber nicht urbildresistent

                    To do sortieren

                    openssl 097d (2004) Prufwertstandardverfahren ist MD5

                    Hashfunktion enthalt eine rsquoKompressionsfunktionrsquo m1

                    To do Bild-siehe Blatt - 20090422

                    K(sm) = sprime

                    K(sm) = K(sm2)

                    K(s1m1) = K(s2m2)

                    s1 und s2 als Ergebnisse einer Prufwertberechnung darstellen

                    K(s1m11) = s1 K(s01m21) = s2

                    K(s1m12) = s K(s2m22) = s

                    der rechte Teil war 2004 schon bekannt es musste nur noch die linke seite gelost werden

                    511 Schlussellose Hashfunktion (Prufsummen ohne Schlussel)

                    h x minusrarr h(x)Ausschlieszliglich Prufwert Gute Auswahl garantiert dass man mit h(x) feststellen kann ob xverandert wurde

                    xprime ist verandertes DokumentDatenBerechnung des Prufwerts liefert h(xprime) = hprime h(x) bei guter Hashfunktion Veranderung kannalso festgestellt werden

                    80

                    Zusatzlich verlangte Eigenschaften

                    1 Kollisionsresistenz Es ist schwer Kollisionen zu erzeugen Dh es ist schwer x1 x2 mith(x1) = h(x2) zu findenHeute ublich n = 80 oder n = 100 280 oder 2100 in sim 280 Schritten Definitiv 256 istnicht schwer 264 ist nicht mehr so schwer

                    2 Zwillingsresistenz Zweites-Urbild-Resistenz second preimage resistance Es ist schwereinen Zwilling zu erzeugen ist x1 mit h(x1) vorgegeben so ist es schwer einen Zwillingx2 zu erzeugen mit h(x1) = h(x2)(Anmerkung Finger weg von Binarcode fur x1 x2)

                    3 Einwegeigenschaft Urbild-Resistenz Es ist schwer zu vorgegebenem h(x) ein Urbild xzu berechnen

                    h1(x) ist eine gute Hashfunktion mit den schicken Eigenschaften 1 2 3 (n + 1 Bitlange)

                    h2(x) =

                    1 x wenn x die Lange n hat0 h1(x) sonst

                    h2(x) ist kollisionsresistent (Zwillingsresistenz) (wenn h1 so ist) h2 ist aber nicht urbild-resistent 1 x hat als Urbild x

                    2 ist die wichtigere Eigenschaft man kann notfalls noch ohne 1 auskommen Zum Beispielletztes Jahr MD5 - Hashfunktion x1 x2 waren konstruiert h(x1) = h(x2)x1 oplus x2 = 0 010 010 010 01 (1 jeweils im msb) Immer noch ein gewisser Schutz dazum Beispiel keine Kollision auf -Kleinbuchstaben oder 64 moglich

                    Schlussellose Hashfunktionen sollten alle 3 Eigenschaften haben

                    Fast-Kollision x1 x2 h(x1) oplus h(x2) hat wenig 1-Bits Manchmal zu vermeiden

                    partielle Urbilder Gegeben h(x) dann ist es schwer x bis auf wenige Bits zu bestimmen

                    SHA-1 theoretische Schwelle 280 praktisch 269 (16022005) 263 (19082005)

                    Geburtstagsparadoxon 23 Personen die Wahrscheinlichkeit dafur dass 2 am gleichen Tagim Jahr Geburtstag haben ist groszliger als 1

                    2

                    h(x) =dd-mmMit k Personen x1 xk lassen sich k2 Geburtstagspaare bilden Mit n Tagen h1 hn im Jahrlassen sich n2 Geburtstagspaare bilden davon sind n gute ( (h hprime) mit h = hprime)

                    81

                    mit k2 Paaren in n2 Paaren suchen und einen von n treffenHashfunktion hat 160 Bit Ausgabe wir brauchen nach Geburtstagsparadoxon 280 Personen ummit hoher Wahrscheinlichkeit den gleichen Geburtstag h mit 160 Bit zu erhalten

                    Allgemeines Konstruktionsprinzip x wird auf eine bestimmte Blocklange erweitert (pad-ding)

                    1 Nullpadding (auffullen mit Nullbits falls erforderlich)

                    2 1-Nullpadding (eine 1 und dann mit Nullbits bis zur Blocklange)

                    3 1-Null-Langenpadding (eine 1 und Nullbits (falls erforderlich) und die Lange (msb first64 Bit oder 128 Bit)) Am besten geeignet da bei 1 oder 2 automatisch Kollisionen ent-stehen x (mind 1 bit kurzer als die Blocklange) und x 0

                    xrarr b1 bk Blocke der Lange 512 Bit

                    Haufig Verlauf in 3 Phasen in openssl init update final

                    1 Initialisierung der Hashfunktion Innerer Zustand aus 32-Bit-Wortern H1H2H3H4H5initialisiert (mit Primzahlen π was-auch-immer)

                    2 Update A BCD E aus H1 H5 Runden mit Transformationen mit Eingabe bi 48|60|120 H1 = H1 oplus A H2 = H2 oplus B

                    3 Finalisierung Ggbf Padding 1 oder 2 mal das Update

                    4 Ausgabe H1H2 H5

                    Einfaches Beispiel

                    82

                    So lasst sich aus einem Kryptoalgorithmus ein Hashalgorithmus konstruieren In der Praxis wer-den andere Konstruktionen (Quirlfunktionen) verwendet MD5 SHA-1 SHA-2 (224 256 384512) Whirlpool ISO-

                    In OpenSSL MD2 MDC2 MD4 MD5 RIPEMD-128 RIPEMD-160 SHA-0 SHA-1 Allegebrochen ausser RIPEMD-160 und SHA-1 (evt MD2) dh es sind m1 und m2 bekannt mitMD5(m1) =MD5(m2) und m1 m2

                    512 Demonstration Falschung

                    Ist die Hashfunktion rsquoschwachrsquo kann man Kollisionen sogar konstruieren

                    Beispiel fur MD5 MD4 ist seit 10 Jahren schwach SHA-1 wird schwach

                    Zwei Postscript-Dateien mit unterschiedlichem Inhalt aber gleichem MD5-Hash Prinzip Datei1

                    Header

                    if x1 == x2 then strangestring = T1 else strangestring = T2 end

                    Rest

                    echo strangestring

                    Quelltext (B)(B)eq︸ ︷︷ ︸Bedingung

                    [tot] [Def] ifelse

                    83

                    Datei 2

                    Header

                    if x2 == x2 then strangestring = T1 else strangestring = T2 end

                    Rest

                    echo strangestring

                    (A)(B)eq︸ ︷︷ ︸Bedingung

                    [Def] [tot]

                    x1 und x2 unterscheiden sich nur sehr wenig und Header if x1 und

                    Header if x2 sind je ein Nachrichtenblock mit dem gleichen Hashwert

                    Sieht aus wie zweites Urbild-Angriff sind aber in der Tat zwei bose Zwillinge

                    Quelle wwwcitsrubdeMD5Collisions

                    Fazit Dokumente sind nicht mehr unterscheidbar

                    Kollision besteht aus zwei Dokumenten d1 d2 mit dem Hashwert

                    Bei MD5 kann man zwei rsquoDokumentersquo (Prafixe bis AB) konstruieren die den gleichen Has-hwert haben

                    Man kann aber zu einem Dokument d0 (dem Original) noch nicht ein zweites dprime0 konstruierenso dass d0 dprime0 eine Kollision bilden

                    Beispiel Ein SSL-Server-Zertifikat war (MD5) ununterscheidbar von einen SSL-ZertifizierungsstellenZertifikat womit man so viele (evt rsquobosersquo) SSL-Server-Zertifikate erstellen wie man wollte

                    MD5 ist nicht kollisionsresistent

                    MD5 ist noch 2 Urbild resistent

                    52 Unterschied MD5 und SHA

                    MD5 128bit Lange (Kollision 264)

                    SHA-224 224bit Lange (Kollision 2112)

                    SHA-256 256bit Lange (Kollision 2128)

                    84

                    mehr rotation lokale Unterschiede habe groszligere globale Unterschiede zur Folge bei SHA

                    53 Secure Hash Standard SHA-2

                    FIPS 180-2 US-Standard Nachfolger von FIPS 180 SHA-0 und SHA-1 sind die SHA-2-Algorithmen(noch nicht in OpenSSL) SHA-224 SHA-256︸ ︷︷ ︸

                    32 Bit

                    SHA-384 SHA-512︸ ︷︷ ︸64 Bit

                    SHA-224 bzw SHA-384

                    ist rsquoungefahrlsquo die linke Seite von SHA-256 bzw SHA-512

                    Basisfunktionench (xampy)|(sim xampz) Auswahlfunktionpar x and y and z Paritatsfunktionmaj (xampy)|(xampz)|(yampz) Mehrheit

                    Ausserdem Addition modulo Wortlange rot left und shift leftMessage M1M2 MN padding

                    1 paddinglength auf 5121024 Bit

                    51232 = 16 = 1024

                    64

                    2 Messageblock (16 Stuck) wird erweitertW0W1W2 W15︸ ︷︷ ︸

                    Messageblock

                    W79

                    Wt = rot(Wtminus3) + rot(Wtminus8) + rot(Wtminus14) + rot(Wtminus16) fur t = 16 79rot(x) = rotl7(x) + rotl18(x) + shl3(x)

                    3 8 temporare Variable a b c d e f g h mit Breite gleich Wortlange (32 oder 64 Bit) be-schreiben einen inneren Zustand der Funktion

                    SHA-Maschine bekommt initialen Zustand H0 H7 Die ersten 32 Bit der gebrochenenAnteile der Quadratwurzeln der i Primzahl Fur SHA-256 und SHA-512 i = 1 8 furSHA-384 und SHA-224 i = 9 16

                    85

                    Am Anfang jeder Runde a = H0 b = H1 c = H2

                    Jedes Wi erzeugt einen Schritt (kleine Zustandsanderung)

                    T1 = h + rot(e) + ch(e f g) + Kt + Wt

                    T2 = rot(a) + maj(a b c)

                    h = g g = f f = e e = d + T1 d = c c = b b = a a = T1 + T2K0 K80 Schrittkonstanten Bruchteile der dritten Wurzeln der ersten 80 Primzahlen80 Schritte in einer Runde

                    4 XOR-Operationen H0H1 H7 minusrarr H0 oplus aH1 oplus b H7 oplus hHi beschreiben den inneren Zustand nach Runde Hi am Anfang initialisiert

                    5 Ausgabe ist H0 H7 am Ende

                    To do ware auch interessant fur die Prufung

                    Es wird eine neuer SHA-3 gesucht Voraussetzungen

                    1 Nachrichtenexpansion muss komplexer werden

                    2 Nachrichtenblocke mussen positionsabhangig werden (Skein tweakable

                    3 innerer Zustand muss groszliger werden (2x Hashlange)

                    531 Problem bei MD5 und SHA-0

                    Beispiel 1 Innerer Zustand zwischen einzelnen Schritten hat Bits die die folgenden Bitsmehr oder weniger beeinflussen Damit sinkt die Komplexitat beim Brechen Besondere Bitsfuhren zur Reduktion der Anzahl der Gleichungen und erlauben eine schnelle Konstruktion vonspeziellen Zwillingen m1m2 mit MD5(m1) =MD5(m2) m1 oplus m2 = viele Nullen

                    Parallel hashen rdquoKontostand -20073ldquo und rdquoKontostand +700ldquo Ab -2 bzw +7 entstehen un-terschiedliche innere Zustande Nachkommastellen bei dem zweiten String anpassen um dieUnterschiede auszugleichen

                    86

                    Aktuelle Angriffe erzeugen keinen zweiten Zwilling sondern rsquonurrsquo falsche Zwillinge Zu einemguten gibt es keinen schlechten Zwilling

                    Beispiel 2 Es gibt zwei Zertifikate mit unterschiedlichen Inhalten und gleichem MD5-HashDas sind dann aber 2 schlechte Zertifikate MD5 ist also nicht kollisionsresistent aber momentanzwillingsresistent

                    SHA-1 hat momentan eine Komplexitat von 263 anstelle von 280 fur Kollisionen

                    mH(m) (H(m) aus vertrauenswurdiger Quelle) rArr m kann nicht unbemerkt verandert werdenManipulation Detection Codes () Das ist keine Prufung des Ursprungs Um zu prufen ob maus einer bestimmten Quelle stammt benutzt man MACs

                    532 MACs (Message Authentication Codes) (Prufsummen mit Schlusseln)

                    Sei k ein geheimer Schlussel den nur Alice und Bob kennen m ist die Nachricht BerechneHk(m) = h keyed Hash Die Hash-Prufwerte sind also Schlusselabhangig

                    (m h) mit h aus vertrauenswurdiger Quelle

                    bull Veranderungen sind erkennbar

                    bull Nur mit Kenntnis von k kann man h berechnen also nur mit dem Schlussel kann man denPrufwert falschen

                    Empfanger der k kennt kann n auf Integritat prufen Um sich vor Angreifern zu schutzen mussfur eine Prufung der Prufwert geschutzt werden

                    Hk(mprime) = h

                    (m1 h1)(m2 h2)

                    rarr (m h) muss verhindert sein

                    87

                    Standardisiertes Verfahren fur Keyed hash auf der Basis von MDCs RFC 2104 in OpenSSL zufinden HMAC)

                    H(k oplus auszligeres Padding H(k oplus inneres Padding m))︸ ︷︷ ︸512- oder 1024-Bit-Blocke

                    k linksbundig aufgefullt mit Nullen inneres Padding = 0x36 0x36 auszligeres Padding = 0x5c0x5c Langenpadding am Ende des inneren H

                    Berechnen Sie mit OpenSSL und dgst -c oder -hex den Hashwert der leeren Datei

                    henrykgleam henryk $ openssl dgst -c -hex -md5 devnull

                    MD5(devnull)= d41d8cd98f00b204e9800998ecf8427e

                    henrykgleam henryk $ openssl dgst -c -hex -sha1 devnull

                    SHA1(devnull)=

                    da39a3ee5e6b4b0d3255bfef95601890afd80709

                    openssl dgst -sha256 -hmac 1234567890 devnull

                    HMAC-SHA256(devnull)= ba92e0bfa35d8a018831f3675f0b4314c8468d4d96e6981b85ba3390c23308fd

                    HMAC

                    To do vervollstandigen

                    Mac mit Hashfunktion K- Schlussel H-Hashfunktion

                    H(K oplus oPadH(

                    0x565656︷ ︸︸ ︷K oplus iPad︸ ︷︷ ︸Bitlange H

                    n))

                    K n1 rarr Mac(n1K) = m1

                    K nprime = n1||langenpadding ||n2

                    (K nprime) rarr HInitialisiert mit m1(n2) = m2

                    ISO-10118-32004

                    88

                    54 Whirlpool

                    Basis fur eine Hashfunktion ausgehend von einer einzigen Verschlusselungsfunktion

                    Aus der Wikipedia (unter GNU Free Documentation License)

                    WHIRLPOOL ist eine kryptografische Hash-Funktion die von Vincent Rijmen und Paulo SL M Barreto entworfen wurde Sie wurde nach der Whirlpool-Galaxie im Sternbild der Jagd-hunde benannt

                    Whirlpool funktioniert mit Daten von weniger als 2256 Bit Lange und gibt einen Hash-Wert von 512 Bit aus

                    Die Autoren haben erklart dass Whirlpool nicht patentiert ist und es nie sein wird Whirl-pool darf kostenlos zu jedem Zweck verwendet werden Die Referenz-Implementation ist ge-meinfrei

                    The WHIRLPOOL algorithm has undergone two revisions since its original 2000 specifi-cation In the first revision in 2001 the s-box was changed from a randomly generated one withgood cryptographic properties to one which has better cryptographic properties and is easier toimplement in hardware In the second revision (2003) the diffusion matrix was changed

                    People incorporating WHIRLPOOL will most likely use the most recent revision ofWHIRLPOOL while there are no known security weaknesses in earlier versions of WHIRL-POOL the most recent revision has better hardware implementation efficiency characteristicsand is also likely to be more secure

                    E

                    +

                    H

                    H

                    m

                    AES-Variante

                    i-1

                    i-1

                    i

                    55 Zusammenfassung

                    To do oben einsortieren

                    89

                    Manipulation Detection Codes MDCsHashfunktionen MD5SHA-1SHA-2Allgemeines Konstruktionsprinzip aus Langenpadding und Iterationen

                    bull MACsKeyed Hash HMAC mit Hashfunktion aufgebaut aus prefix und suffix

                    bull CBC-MAC Nachrichtenblocke m0m1 mk

                    + +

                    MACc c c

                    K

                    m

                    m m

                    0

                    1

                    1

                    2

                    k

                    k+1

                    Risiko Weil keine Langeninformationen dabei sind ist es anfallig gegen Einsetzen undAustauschen Wird gerne Verwendet bei Anwendungen die feste Langen haben zBChipkartenCBC-MAC-verbessert

                    K

                    DES

                    1

                    K2

                    K3

                    larrminus CBC-DES3-MAC

                    Benutzt zB beim digitalen Tachograph

                    Es gibt zwei Grundlegende technische Mechanismen Ohne Schlussel und mit Schlussel Nur mitSchlussel lasst sich spater der richtige MAC-Wert ausrechnen und bestimmen dass die Nachrichtnicht verandert wurde und vom richtigen Absender kommt

                    90

                    56 Digitale Signaturen

                    To do einsortieren

                    Definition

                    s ist die Signatur zu einer Nachricht n mit einem Signaturverfahren S und einem Verifikations-verfahren V

                    S N times D︸︷︷︸Signaturschlussel

                    rarr s

                    V N times E︸︷︷︸Verifikationsschlussel

                    timess rarr ja nein

                    V(n e S (n d)) = 1

                    V(n e S (nprime d)) = 0 =( n eprime S (n d)) = 0

                    RSA

                    S (n d) =

                    V(n s e) = E(e s)eqH(n)

                    openssl dgst -sign keyrsa -hex nulltxt

                    openssl -sign keyrsa -sha256 -out nullsig nulltxt

                    openssl rsautl -in nullsig -encrypt -inkey keyrsa -raw -hexdump

                    in Beta openssl sha256 -hex nulltxt

                    Anstatt der Symmetrischen Verschlusselung wie bei MAC kann man auch asymetrische Verfah-ren verwenden

                    1 h mit Namen (0D) in ASN1 Struktur 0001 FF FF 00 (ASN1-Struktur)

                    2 Padding

                    3 rsquoEntschlusselnrsquo

                    4 rsquoVerschlusselnrsquo

                    5 ASN1 Struktur Hash OID Wert rausziehen

                    91

                    6 vergleichen 0 1

                    openssl hatte in den fruheren Versionen einen Fehler in der Signaturprufung

                    langer RSA Schlussel

                    exponent e klein (3)

                    lange Signatur S

                    S 3 = h

                    wenn h sehr lang ist konnte man folgendes machen

                    h= (0001FF00ASN1 rsquomullrsquo)

                    man konnte den rsquoMullrsquo so verandern das h = s3 (also so lange verander bis h dritte Wurzel vons ist)

                    Es wurde nicht uberpruft ob am Ende der ASN1-Struktur auch das Ende der Daten ist

                    siehe Webseite RSA Zertifikate mit Exponenten 3

                    To do alt

                    Digitale Signaturen schutzen die Integritat und die Authentizitat Wir betrachten hier welche dieauf asymmetrischen Verfahren basieren Symmetrische gibt es werden aber in der Praxis nichtbenutzt Es gibt 2 Typen

                    1 RSA

                    2 DSA

                    561 RSA

                    m = p middot q (2048 Bit)Exponent e klein (64 Bit)Exponent d groszlig mit e middot d equiv 1 mod (p minus 1)(q minus 1)

                    xrarr c = xe mod m (offentlich)cd equiv x mod m (geheim)xed equiv x

                    92

                    Man rechnet zuerst xrarr s = xd mod m Das kann nur derjenige der uber den privaten Schlusseld verfugt Aus s rechnet man se mod m = (xd)e mod m equiv xemiddote mod m = x Bei RSA konnenwir die Rolle vom privaten und offentlichen Algorithmus vertauschen so dass folgt Nur wer dkennt kann zu x ein s erstellen so dass se equiv x mod m ist

                    Anwendung dafur Digitale Signatur Wir haben Nachricht M und erstellen daraus einen PrufwertH(M) mit einer Hashfunktion und rechnen

                    H(M) = x minusrarr s = xd mod m

                    Dann ist (M s) das digital signierte Dokument M (und s die Signatur)

                    To do einsortieren neu

                    Signatur mit Anhang (with appendix) (m sig)-Signierte Nachricht

                    Ver(vm sig)

                    Signatur mit Nachrichtruckgewinnung (with (partial) message recovery) (m1mprime2) = mprime so dassmprime2 ein Teil der Nachricht m = m1||m2 enthalt

                    Ver(vm1mprime2) (partial recovery)

                    Ver(vminusmprime) (complete recovery)

                    In RSA

                    PKCS1 ver 15 Signatur mit Appendix

                    PKCS1 ver 21 (noch nicht in OpenSSL)

                    To do ende einsortieren

                    Prufung (M s) rarr H(M) = x Ist se mod m = x Nur wer das d hat kann das Paar (M s)

                    erstellen und ist damit Inhaber des Dokuments

                    562 Eigenschaften eines asymmetrischen Verschlusselungsverfahren

                    Alice kennt den offentlichen Schlussel von Bob Bob kennt seinen geheimen Schlussel

                    93

                    Alice123 Bob Alice Bob123offB gehB gehA offA

                    EoffB(m) = c rarr DgehB(c) = m rarr

                    MS gehA

                    (m s)

                    rarr

                    Voffa(m s) =

                    0 ungultig1 gultig

                    Mehrere Alices konnen an Bob schreiben Entschlusselung mit dem geheimen Schlussel vonBob Hier wird eine Nachricht so verschlusselt dass man die Nachricht aus c zuruckgewinnenkann

                    Alice sendet an alle Bobs Hier wird ein Paar erzeugt dass in einen Verifikationsalgorithmusgestopft werden kann der dann ja oder nein sagt

                    Es ist Zufall dass man mit RSA sowohl einen Verschlusselungsalgorithmus als auch einenSignaturalgorithmus erstellen kann Mit anderen geht das nicht

                    Hatte man nicht die Urbildresistenz der Hashfunktion konnte man ein s nehmen und dazu aus-rechnen se mod m = x jetzt konnte man zu dem x ein Urbild M ausrechnen und bekame einPaar (M s) dass gultig signiert ist Dazu kommen in Wahrheit noch Padding und Objekt Identi-fier der angibt womit signiert wurde und Parameter

                    30 = SEQUENCE06 = OID2B 0E 03 02 1A = SHA12A 86 48 86 F7 0D 01 01 01 = rsaEncryption05 = NULL Bezeichner fur die leere Menge hier bedeutet es keine Parameter04 = OCTET STRING02 = INTEGER03 = BIT STRINGSchema Tag Length Value

                    Das ganze lasst sich mit openssl asn1parse erfahren (asn1 = Abstract Syntax Notation 1)Schlussel immer SEQUENCE SEQUENCE OBJECT PARAMETER BIT STRING bzw Se-quence aus OID und Bitstring Das erste Byte in einem Bitstring gehort nicht zum Bitstring dazusondern gibt die Nummer der von hinten ungenutzten Bits an

                    OID-Liste httpwwwalvestrandno

                    Mhminusrarr

                    SHA-1

                    H minusrarr

                    Padding

                    00 01 FF FF 00 b c b H c

                    Identifier Oktetstring

                    Padding nach PKCS1 v15

                    ASN1 Objektidentifier fur SHA-1 (131432) wird als 2B 0E 03 02 1A codiert

                    94

                    xyabcd (Dot-Notation)darr

                    bx middot 40 + yc babcdc1 Byte Byte (Oktett)

                    12840113549127 als Ubungsaufgabe

                    563 RSASSA-PSS-Padding

                    SSA Signature Scheme with Appendix

                    PSS Probabilistic Signature Scheme

                    RFC 3447 (siehe figure 2)

                    8 zero salt

                    h

                    0000 01 salt

                    +MGF h

                    maskiertes seed BC00 1024

                    Bits

                    zu 0

                    setzen

                    soviele dass die Eingabe

                    kleiner als der Modul wird

                    Eingabe fuumlr die Signatur

                    M l(M) lt= 2^(64)-1 bei SHA-1

                    20 Byte 20 Byte

                    To do start einfugen

                    MGF-Maskengenerierungsfunktion (beruht auf der Hash-funktion)

                    95

                    MGF rArr DBmask dann DB oplus DBmaskNullungminusminusminusminusminusminusrarr maskedDB

                    Nullung-Nullung der oberen Bits so dass maskedDB kleiner als Modul ist

                    Signieren (EMSA-PSS)+(RSA-Verschlusselung)

                    Verifikation (RSA Op)

                    1 RSA-Operation

                    2 EM

                    Prufung ob BC am Ende

                    H abspalten und mit MGF DBmask erzeugen

                    XOR mit Rest von EM

                    DBprime = 0000︸︷︷︸Nullungsfehler

                    0001 Salt

                    00 Label mhash SaltHashminusminusminusminusrarr Hprime

                    = H

                    Jede Eingabe in die RSA-Operation ist pseudo zufallig (Jede Eingabe hat einen neuen Signa-turwert)

                    Angenommen man wendet die RSA-Operation direkt auf m an

                    mprime-Signatur mprime = md mod n

                    m1m2

                    m1 rarr mprime1 mod n = mprime1

                    m2 rarr mprime2 mod n = mprime2

                    Verifikation

                    (m1m2) mod n rarr (m1 middot m2)d = md1md

                    2 = mprime1 middot mprime2 mod n

                    (rsquoMan kann mit zwei Signaturen eine andere erzeugenrsquo)

                    96

                    To do ansehen

                    Unsicher zeitaufwendig kann leicht gebrochen werden

                    m rarr mprime = md mod n

                    re = rprime mod n

                    chosen message m middot rprime rarr (m middot rprime)d mod n = md middot red mod n = mprime middot r mod n

                    (mprime middot r) middot rminus1 mod m = mprime

                    (sieht nach Zufallszahlen aus aber die kann man auf eine vorher gewahlte Nachricht zuruck-rechnen)

                    To do ende einfugen

                    Nachricht M mit |M| lt 264 minus 1 wird mit Hashfunktion h gehasht Davor kommen 8 Zerobytedanach ein Saltwert (Saltwert wird benotigt fur die Auswertung der Signatur und wird verstecktin der Signatur) Auf das Gesamte wird die Hashfunktion h erneut angewendet

                    Verstecken des Saltwerts --0000 (rarr eventuell leer) 01 salt-- oplus mit einer Maske gebildetaus dem Hashwert und einer Maskengenerierungsfunktion

                    An den Anfang der Eingabe fur die RSA-Signatur werden 0-Bits so gesetzt dass die Eingabefur die RSA-Signatur kleiner als der Modul ist Wenn m volle Bytelange hat wird das obersteBit gleich 0 gesetzt (RSA-Signatur ()d mod m mit m = p middot q) An das Ende der Eingabe fur dieRSA-Signatur wird BC angehangt

                    Durch den Saltwert wird das Ergebnis zufallig und schwer vorhersagbar Wird leider nicht oftverwendet da die Maskengenerierungsfunktion Chipkarten teuer machen wurde

                    Es existiert eine DIN Variante zum v15 PKCS1 DIN-RN-Padding00 02 Zufallsbytes(ohne 00) 00 Identifikator Oktettstring

                    564 DSA

                    Vergleich ElGamal und elliptische Kurven

                    K-elliptische Kurve y2 = x3 + ax + b mod p

                    97

                    p-Primzahl ( 2 3)

                    Punkte auf der Kurve bilden eine Gruppe E(k)

                    P + Q = R k middotG isin E(k)

                    G ein Punkt (Generator) mit groszliger Ordnung n

                    1 middotG 2G 3G n︸︷︷︸sehr groszlig

                    middotG = 0

                    n ist eine Primzahl und G 2G nG = 0 ist die gesamte Gruppe E(k)

                    Signaturschlussel t-zufallig aus 1 n minus 1 Verifikationsschlussel ist P = t middotG

                    Standard FIPS 186-3 rarr finde den Fehler

                    To do ende einfugen

                    p g Generator gpminus1 equiv 1 mod p gpminus1

                    x 1 mod p

                    Geheimer Schlussel xoffentlicher Schlussel y = gx mod pk(gkm middot yk) = c

                    Parallel bei elliptischen Kurven G geheim x offentlich Y = x middotG

                    (k middotGm middot k middot Y)

                    DSA auch bekannt als DSS FIPS-186

                    Primzahl p (hat zB 1024 Bit im Standard variabel) so gewahlt dass pminus 1 einen Primteiler derLange 160 Bit enthalt q|p minus 1 mit |q| = 160 BitAusserdem Es gibt einen Generator g mit der Eigenschaft gq equiv 1 mod p Das findet man

                    indem man einen h Generator in mod p auswahlt und g = hpminus1

                    q hpminus1 equiv 1 mod p ausrechnet

                    x geheimer Signaturschlussel mit 160 Bit gx mod p ist der offentliche Schlussel

                    Signaturerstellung Nachricht M Hashwert h(M) = H ausrechnen Generiere Zufallszahl k mit160 Bit (k isin 1 n minus 1) und berechne

                    To do neu

                    k middotG = (x y) r = x mod n

                    98

                    s = hminus1 middot (h + tr) mod n

                    (r s) ist die Signatur

                    To do ende neu

                    r = (gk mod p) mod q und s = (kminus1(H + x middot r) mod p) mod q r und s sind Exponenten furmod p werden aber nochmal mod q genommen um Platz zu sparen (r s) wird die Signaturwerden (s 0 mod q r 0 mod q)

                    Signaturverifikation Berechne w = sminus1 mod qu1 = H middot w mod q u1 = H middot w + i middot qu2 = r middot w mod q

                    Berechne

                    gu1 middot yu2 equiv gHmiddotsminus1middot gxmiddotrmiddotsminus1

                    equiv gHmiddotk(H+xmiddotr)minus1middot gxmiddotrk(H+xmiddotr)minus1

                    equiv gHmiddotkmiddot(H+xmiddotr)minus1+xmiddotrmiddotk(H+xmiddotr)minus1

                    equiv gkmiddot(H+xmiddotr)middot(H+xmiddotr)minus1

                    equiv gk mod p

                    Prufe also ob (gu1 middot yu2 mod p) mod qequiv r

                    Die Signatur zu M ist (r s) mit r und s haben 160 Bit so dass man 320 Bit Signatur hat (kleinerals die 1024 Bit Signatur von RSA)

                    Um den geheimen Schlussel zu bestimmen muss man den diskreten Logarithmus mod q be-rechnen und das gilt als schwer

                    565 ECDSA - DSA mit Elliptischen Kurven

                    K - elliptische Kurve mit Punkten mod pG - Generatorpunkt G hat Ordnung q [q middotG = 0] q Primzahlx - Restklasse mod q Y = x middotG

                    r = [(k middot G)1] mod q (rarr 1 Koordinate mod q) s = kminus1(h + x middot r) mod q [u1 middot G + u2 middot Y]1

                    mod qequiv r

                    700 Bit fur alle Parameter

                    99

                    To do neu

                    ECDS DSAGenerator

                    G g gq = 1 mod pdA = [1 q minus 1]

                    zufalligPA = dA middotG auf E pA = gdA mod p

                    Signatur k isin [1 q minus 1] r = (gk mod p) mod qr = x mod q

                    s = kminus1 middot (h + dA middot r) mod q

                    h ist genauso lang wie q (gleiche Bitlange)

                    h sind die linken Bits von H(n)

                    (Bem RSA ist bei Elipt Kurven nicht einsetzbar deshalb ist DSA eine gute alternative)

                    link draft-lochter-pkx-brainpool-ecc-03 - eine art RFC zu Brainpool

                    openssl ecparam -name brainpoolP256r1 -param_enc explicit -noout

                    E =(x y) y2 = x3 + Ax + B mod p

                    Dann ist G = 04x (in einer Prufung ware interessant zu wissen was das fuhrende Bytebedeutet und welche Varianten es gibt)

                    openssl ecparam -name brainpoolP256r1 -genkey

                    -param_enc explicit -noout gt eckey

                    (pub - offentlicher Punkt)

                    openssl dgst -sha256 -sign eckey eckey gt ecsig

                    xxd -p ecsig

                    openssl asn1parse -i -in ecsig -inform DER

                    Man erhalt die beiden Integers r und s

                    (Bem bei Eliptischen Kurven ist die Bitlange kurzer da Algorithmen hohere komplexitat als so

                    100

                    haben)

                    (Hausaufgabe erzeuge zwei Kurven (512Bit - Brainpool bzw 521 NIST) mit anderen Hash-funktionen (mdripemd whirlpool) Signatur (rs) )

                    (Bem siehe Wikipedia El C DSA r=0 Abfrage weil sonst dA keine Rolle spielt s= 0 Abfrageweil man sonst mit minusz = r middot dA mod q den geheimen dA ausrechnen kann)

                    [Spickzettel zur HA

                    h-linke Bits des Hashwertes

                    n1 = h middot sminus1 mod q

                    n2 = r middot sminus1 mod q

                    V = n1 middotG + n2PA = (x y) r = x mod q

                    v = gn1 middot pn21 mod p r = v mod q

                    (r rarr 0 1 jeweils)

                    h middot sminus1 middotG + rsminus1PA = h(k(k + dAr)minus1 middotG + r(k(h + dAr)minus1)dAG = (hk + rkdA)(h + dAr)minus1G = V

                    = k (h + rdA) middot (h + dAr)minus1︸ ︷︷ ︸=1

                    G

                    = k middotG

                    ]

                    Magma

                    p=StringToInteger(rsquorsquo16)

                    a=StringToInteger(rsquorsquo16)

                    b=StringToInteger(rsquorsquo16)

                    IntegerRing(p)

                    E=EllipticCurve([KaKb])

                    G=E[KStringToInteger(rsquo1Halfte Generatorrsquo16)

                    101

                    KStringToInteger(rsquo2Halfte Generatorrsquo16)]

                    Jetzt kann man rechnen

                    qG eq E0

                    true

                    mdashmdashndash

                    qG

                    (010)

                    mdashmdashmdash

                    Kq=IntegerRing(q)

                    dA=1+Random(q-2)

                    PA=dAG Prufung ob ungleich Null fehlt noch

                    h=K12121212121212121212121212121

                    k=1+Random(q-2)+1damit keine Null rauskommt

                    X=kG

                    x=X[1]

                    r=(IntegerRing()x) mod q

                    s= (Kqk)ˆ(-1) ((Kqh)+ r dA)

                    rs

                    Verifikation

                    u1=h(Kqs)ˆ(-1)

                    u2=r(Kqs)ˆ(-1)

                    102

                    Y=(IntegerRing() u1)G+( IntegerRing() u2) PA

                    Y

                    ((IntegerRing() Y[1]) mod q) eq r

                    =rArr siehe Verzeichnis

                    Prufen ob Openssl gut gerechnet hat

                    OpenSSL

                    wie erzeugt man den offentlichen Schlussel openssl ec -in eckey -pubout

                    openssl ec -in ecpub -pubin -text -noout

                    -pverify

                    To do neu-ende

                    To do neu-20090617

                    Bem Attributes muss die leere Menge sein und darf nicht weggelassen werden

                    SHA1 nur noch zur Unterscheidung benutzen

                    57 Widerrufen von Zertifikaten

                    siehe rfc5280 S53

                    Erste Sperrliste

                    Ist eine Liste in der die Nummern der gesperrten Zertifikate stehen

                    Beispiel CA erstellen

                    perl ˜optopenssl-100-beta2appsCApl -newca

                    103

                    Zertifikat fur den Nutzer erstellen

                    perl ˜optopenssl-100-beta2appsCApl -newreq

                    Signieren

                    perl ˜optopenssl-100-beta2appsCApl -xsign gt aypem

                    Man kann noch weitere Zertifikate erstellen allerdings wird dann der pem Key geloscht Mankann dann feststellen dass die Seriennummer nur um eins erhoht wird Man kann auch openssl ca -gencrl -out -cl1pem -crlhours 12benutzen und dabei die Seriennummer selber angeben

                    openssl crl -text -in crl1pem -noout

                    Zertifiziert wird nur der Teil zwischen Certificate Rev List bis No Revok Cert Da dieser Teilsehr klein ist ist es recht schwer Kollisionen mit SHA1 dafur zu konstruieren

                    Dann gibt es noch Informationen wann es die nachsten Updates gibt (Last Update Next Update(optional)) Alte Sperrlisten bleiben aber Gultig die neuen gelten nur zusatzlich

                    Zertifikat ungultig machen

                    openssl ca -gencrl -out cr13pem -revoke demoCAcertsF8C85pem -crl_reason keyCompromise -crlhours 12

                    aktualisieren

                    openssl ca -gencrl -out cl4pem -crlhours 12

                    Nun nachsehen mit

                    openssl crl -text -in crl4pem -noout

                    To do neu-ende

                    104

                    58 Was es noch so gibt

                    581 blinde Signaturen

                    Gut fur anonymes digitales Geld Normalfall Bank kriegt digitalen Scheck belastet das Kontound schickt einen von ihr signierten Scheck zuruck Problem Wenn derjenige der den Scheckspater einlosen will zur Bank geht kann diese den Scheck zum Aussteller zuruckverfolgen

                    Mit anonymen Signaturen Aussteller erzeugt viele (zum Beispiel 1000) unterschiedliche Schecksmit je einer Zufallszahl und dem gleichen Betrag aber ohne Name Kontonummer etc Diese1000 sendet er verschlusselt an die Bank Die Bank sucht sich zufallig (das ist wichtig) 999davon aus und fordert fur diese den Schlussel an Die Bank entschlusselt diese Schecks unduberpruft ob uberall der gleiche Betrag drinsteht Wenn ja dann ist davon auszugehen dass auchder auf den gleichen Betrag lauft Das Konto wird entsprechend belastet und der Scheck wirdblind (also ohne hineinzusehen) signiert und dem Aussteller zuruckgeschickt Der packt denScheck aus (wobei die Signatur gultig bleibt) und hat jetzt einen von der Bank signierten digita-len Geldschein den die Bank nicht mehr zuruckverfolgen kann

                    582 anonyme Signaturen

                    Beispiel Elektronische Wahlen wo man nicht mochte dass man weiszlig wer es unterschriebenhat

                    6 Zertifikate

                    To do neu-20090520

                    m rarr Signatur und Verifikation

                    mprime rarr Signatur und Verifikation

                    Vertrauen in den offentlichen Schlussel

                    Schutzen den Schlussel durch Prufwert den Prufwert Schutzen wir durch eine Signatur Vertrau-en eines Schlussel ubertragt sich an einen anderen Das ganze scheint sich im Kreis zu drehen

                    Aber es handelt sich um einen Graph (Der Graph muss nicht transitiv sein - A vertraut BB vertraut C aber A vertraut nicht unbedingt C) Zb Baum mit Wurzel (PKI) dann gibt es

                    105

                    vertrauens-Normen die den Ebenen eines Baumes entsprechen Die andere Variante ist das PGPWeb of Trust bei dem der Baum ungeordneter ist und eine Art Vertrauensbereiche hat

                    Dass eine Zertifizierungsstruktur funktioniert braucht es klare Regeln fur den Umgang mit Zer-tifikate

                    Standards

                    ANSI X509

                    X500

                    openssl internet Profil

                    RFC 5280 (alt 3280 2459)

                    Definition Zertifikat bindet (durch Signatur) einen offentlichen Schlussel an einen Namen(Subjekt)

                    (siehe rfc5280 S16 - Certificate= SEQUENCE und TBSCertificate) (in TBSCert er-scheint rsquosignaturersquo recht fruh damit schon mit dem Hash-Algorithmus begonnen werden kannaber warum steht in Certificate dann nochmal signature -Bessere Ordnung)

                    Zertifikat bei CA-cert runterladen und dann mit openssl ansehen

                    openssl x509 -in class3crt -text -noout

                    openssl asn1parse -i -in class3crt

                    Zur ausgabe des ersten (siehe auch rfc5280)

                    Version es gibt momentan 3 Versionen

                    Serial Number ist ein Integer kann so groszlig sein das man nicht mehr in den Hash-Block mehrkommt (bis 20 Byte geht)

                    Bundesnetzagenturde 15549pdf sagen dass Serien Nummern mindesten 20 Bit Entropie ent-halten sollen damit SHA-1 bis 2010 benutzt werden kann (rsquoQualifizierte Signaturrsquo)

                    To do siehe 606 Gultigkeit

                    validity Wird oft als Gultigkeitszeitraum ubersetzt was aber nicht ganz richtig ist da nur ange-geben wird wann das Zertifikat nicht gultig ist Besser ware rsquonicht Gewahrleistungszeitraumrsquo

                    106

                    Die validity gibt (nach dem Standard) den Zeitraum an in der die CA gewahrleistet aussagenuber den Zustand des Zertifikats zu geben (Gultig ODER nicht Gultig - deshalb muss das Zer-tifikat also nicht unbedingt gultig sein)

                    To do neu-ende

                    To do neu-20090527

                    Bemerkung In der Objectstxt findet die Object-Identifier die OpenSSL kennt

                    To do neu-20090527-ende

                    Signatur Anwendung eines Schlussels Ob der Signaturersteller eine bestimmte Person ist istdamit nicht klar Immer gleichzeitig Authentizitat des Schlussels prufen

                    Dazu gibt es zwei Moglichkeiten

                    1 Anarchie = Web of Trust (Beispiel PGP)

                    2 Vertrauenswurdige dritte Instanz Certification Authority CA bzw ZDA (Zertifizierungs-diensteanbieter) Stellt ein Zertifikat aus das ist ein elektronisches Dokument welcheseine Identitat einem Schlussel zuordnet

                    Zertifikat (Name Schlussel ) und Signatur

                    Problem Im Zertifikat steht Name Schlussel usw und daran hangt eine Signatur Gegeben Nut-zer Alice mit Zertifikat daruber gibt es die CA1 die ihre Signatur zertifiziert CA1 hat selber einZertifikat mit einem Namen Schlussel usw und daran hangt wieder eine Signatur Das Problemverschiebt sich immer weiter nach oben Man bekommt eine Zertifikatshierarchie und benotigteinen aufgeblahten Riesenbaum mit einer Weltwurzel Im taglichen Leben haben sich 3-stufigeZertifikatshierarchien bewart Root signiert seine eigene Signatur Vertrauen in Authentizitat derNutzerschlussel ist fur alle Nutzer gleich Es bestimmt sich ausschlieszliglich durch die Authenti-zitat des Schlussels des Root CA Das Vertrauen in die Root CA verteilt sich auf die Nutzer

                    603 X509

                    X509 mittlerweile bei ISO RFC 3280 X509 Certificate and Certificate Revocation List (CRL)Profile Abschnitt 4

                    Version X509v3 Version 1 enhalt keine ErweiterungenSerial Number In der Regel 20 Byte muss immer eindeutig sein

                    107

                    Signaturverfahren fur das Zertifikat muss am Anfang (im ersten Block) stehen damit das Has-hen schon begonnen werden kannHerausgeber Name(eindeutig) C=Country O=Organisation CN=Common Name SN=Surname

                    Validity Gultigkeitszeitraum der Zeitraum indem die CA Gultigkeitsinformationen uber dasZertifikat bereitstellen willwirdmussInhaber Name (eindeutig im Bereich der CA) zur Person also stabile Daten SeriennummerVersicherungsnummer etcSchlusselinformationenErweiterungenDarunter die Signatur

                    In RFC 3280 steht dass nach dem 31 Dezember 2003 alle Zertifikate UTF-8 kodiert seinmussen

                    604 Erweiterungen

                    Man kann bei Erweiterungen festlegen ob diese Critical oder nicht sind Critical ist sowas wieeine Vorschrift nicht Critical ist sowas wie eine Information Kritische Erweiterungen mussenimmer ausgewertet werden wenn ein Programm sie nicht versteht darf es das Zertifikat nichtverarbeiten

                    To do neu

                    Per default auf false ist auszligerdem optionales Argument Wenn nicht critical dann ist es nur eineInformation Also critical muss man lesen und verstehen nicht critical sollte man lesen wennman sie versteht sollte man sich daran halten

                    To do neu ende

                    Basic Constraints

                    To do neu

                    Sagt ob es Zertifizierungsinstanz ist oder eine Endnutzer Instanz ist und in welcher Ebene essich befindet

                    To do Diagramm basteln

                    108

                    Ein interessantes Beispiel (goyacrt) findet man bei der Rechnerbetriebsgruppe

                    To do neu-ende

                    CA Siginalisiert ob es ein CA-Zertifikat ist (TRUE) oder nicht (FALSE) Dh ob das Zertifikatberechtigt ist weitere Unterzertifikate auszustellen

                    To do neu

                    Per default false es musste also nicht jedesmal CA FALSE angegeben werden

                    To do neu-ende

                    PATHLEN Beschrankt die Pfadlange Pathlen=0 heisst dass das Zertifikat zwar Nutzerzertifika-te ausstellen kann aber keine weiteren CA-Zertifikate Ist immer als Critical markiert

                    Subject Key Identifier und Authority Key Identifier Nicht kritisch Beschreiben die ver-wendeten Schlussel uber Hash-Werte zum Beispiel SHA-1 uber den Schlussel

                    Key Usage Kritisch (sollte kritisch sein zb bei GOYA nicht) Ist ein Bitstring der die Ver-wendung des Schlussels angibt Fur eine CA also zum Beispiel nur KeyCertSign NonRepu-diation ist eigentlich fur die Dokumentsignatur (content commitment) DigitalSignature ist furAuthentisierung oder allgemeine Signaturmechanismen Die beiden moglichst exklusiv setzen

                    To do neu

                    Nicht bei Endnutzerzertifikaten notig

                    To do siehe rfc5280 - KeyUsage -HA lesen

                    Merkmale

                    (0) DigitaleSignatur zur Authentifizierung (hat keine Auswirkungen auf spatere Zeitraume)(werden zu dem aktuellen Zeitpunkt gepruft)

                    (1) (ab X509v4) Inhaltsbindung[contentCommitment] (zb Nichtabstreitbarkeit ) (jetzt noch[nonRepudiation]) (werden zu dem Zeitpunkt zu dem sie erstellt worden sind gepruft)

                    (0) und (1) sind Endnutzerinformationen

                    nur ent-verschlusseln Schlussel zum verschlusseln von Zertifikaten geignet

                    109

                    keyCertSign==TRUE - wenn man nur Zertifikate damit signieren mochte (brauch man bei CAZertifikaten eigentlich sollte nur eines der Bits gesetzt sein) ansonsten sollte digitalSignaturegesetzt werden

                    Key usage zB A0=10100000 (Erste und dritte gesetzt) oder zB 88=10001000 (erstes undfunftes gesetzt)

                    authority information Nicht kritisch Feld in dem Daten des Herausgebers abgerufen werdenkonnen

                    Benutzt das OCSP-Online Certificate Status Protocol (gibt eine URI an wo man die Informatio-nen erhalten kann - spater mehr)

                    X509v3 Certificate Policies ASN1 Strucktur siehe rfc5280 S 33

                    System von Regeln fur die Ausgabe von Zertifikaten sowie den Betrieb der ZertifizierungstelleNutzer kann sich uber die Hirarchie der CA informieren (wichtig fur den Vertrauensaufbau)

                    CPS - Certificate Policy Statement und dann zwei moglichkeiten cPSuri (uri wo die Informationzu finden ist) oder userNotice (Freitext)

                    Bsp httpnasacanasagovnasacphtml dort findet man eine CPS

                    Wenn der Regelsatz dem CA Zertifikat zugeordnet ist (Bindung zB durch Root) ist es besserals wenn es nur dem EndNutzer Zertifikat zugordnet ist (Bindung nur durch die daruberliegendeCA)

                    Authority Key Identifier Kurzinformationen mit der man einen Schlussel identifizieren kannFur Endnutzer ist der Authority Key Identifier ein Bezeichner mit dem das zugohrige CA-Zertifikat zu finden ist Kann enthalten

                    KeyIdentifier - Schlussel ID

                    GeneralNames - Herausgeber Seriennummer

                    CertificateSerialNumber

                    Subject Key Identifier - SKI Schlussel ID hilft bei der Unterscheidung sollte eine moglichsteindeutige Nummer sein da aber nicht genau festgelegt wird ist die SKI nicht fur Uberprufungengeeignet

                    110

                    Subject Alternative Name IP Adresse URI Email Adresse (hat das rsquoatrsquo Zeichen welchesin kein Datentyp passt weshalb sie hierher (oder in den Issuer Alt Name) gehort soll alsrfc8224Name gespeichert werden (da dieser nicht groszlig klein sensitiv ist))

                    To do neu-ende

                    605 Erzeugung

                    To do neu

                    Bei OpenSSL gibt es zwei moglichkeiten mit Perl Script

                    perl ˜optopensslappsCApl -newca

                    openssl x509 -text -nout -in cacertpem

                    openssl req -text -nout -in careqpem

                    Diese Requests folgen dem Standard PKCS 10 - rfc2986

                    openssl ans1parse -in careqpem

                    Attributes [0] - Contextabhangiges Tag (nur an diesem Ort gultig) Codiert als A0 denn Con-textabhangige tags fangen mit 10 an im Gegensatz zu Universaltags die mit 00 anfangen(Beispiel fur Contextabhangige Tags siehe auch bei AuhtorityKeyIdentifier)

                    Im Request ist Set of Atritbute NICHT optional (aber kann leer sein)

                    To do neu-ende

                    Wie kommen wir eigentlich zu Zertifikaten Zertifikate kommen von einer CA also muss manzuerst ein CA-Zertifikat erstellen

                    Request Ich mochte ein Zertifikat haben PKCS10RFC2986openssl req

                    openssl req -new -x509 erzeugt gleich ein Zertifikat

                    openssl req -new -newkey rsa1500 -days 40 -out userreq ein neuer Schlussel undein Request Der Request enthalt die Informationen des Antragsstellers den offentlichen Schlusselein Challenge-Passwort (von der CA festgelegt) und eine Signatur uber diese Daten

                    111

                    openssl x509 -req -CA -CAkey -out -days 40

                    -in userreq -CAcreateserial -out userx509

                    -extensions usr_cert -extfile opensslcnf wichtig um v3-Zertifikate zu erzeu-gen

                    606 Gultigkeit

                    Der rsquoGultigkeitszeitraumlsquo (Validity) im Zertifikat ist der Zeitraum uber den sich die ausstellendeInstanz verpflichtet etwas uber die Gultigkeit des Zertifikats auszusagen

                    CRL Certificate Revocation List

                    OCSP Online Certificate Status Protocol

                    Sperrlistenformat auch in RFC 3280 Abschnitt 5 als X509-Variante festgelegt

                    OCSP version 1 RFC 2560

                    To do neu

                    Man kann dass conf bearbeiten

                    Ubungsaufgabe ein Zertifikatsrequest mit eigen Daten erstellen und zu zertifizieren

                    To do einsortieren

                    Die CA schmeiszligt eventuell Daten des Request raus

                    To do neu-ende

                    To do neu-20090624

                    Sperrlisten Enthalten

                    Version

                    Signatur

                    112

                    Herausgeber

                    LastNext Update

                    Sperrlisten Nummer (sollte monoton wachsen)

                    Liste der gesperten Zertifikate(jeder Eintrag enthalt ein Integer eine Zeit und evt CRLEntryExtension(CRLReason-Code siehe rfc5280 531))

                    Bemerkungen

                    Sperrlisten sind im DER-Format ( openssl -inform DER)

                    (Erweiterungen enthalten immer OID Octet-String)

                    Zu CRLEntryExtension CRLReason Code (6) (certificateHold-schwebend gesperrt) und (8)(removeFromCRL-kannwurde wieder entsperrt werden) sind besonders und sind eher nur furAuthosierung sinnvoll

                    Sperrlisten nehmen in der Praxis erhebliche groszligen ein

                    CRLEntryExtension wird von der Bundesnetzagentur nicht benutzt

                    RFC5280 532 sperrdatum (revocation date) darf nicht vor dem Zeitraum der vorherigen CRLliegen sonst ist es in der vorherigen Liste Gultig (ansehen)

                    Aufbau des Pfad zum Vertrauensanker (RFC 5280 S72) Das beschriebene Prufverfahren istnicht normativ vorgeschrieben es reicht wenn die Funktion gleich ist

                    httpwwwbundesnetzagenturdemediaarchive1343pps

                    Kettenmodel benutzt den Erstellungszeitpunkt (nicht Gewahrleistungs-Beginn) (Folie3)

                    httpwwwbundesnetzagenturdeenid85f55115e236d80fc18329992037142d0FAQ

                    Antwortss4_wphtml

                    To do neu-ende

                    To do 20090701-fehlt

                    113

                    61 Praktische Ausschlachtung von kryptografischen Algorithmen mitSMIME und PKCS7

                    Root-Zertifikat erzeugenopenssl genrsa 1200 gt cakeypem

                    openssl req -x509 -new -key cakeypem -config opensslcnf gt cacert (selbst-signiertes neues root Zertifikat mit eigenem Config Script)

                    Root-Zertifikat anschauenopenssl x509 -in cacert -text -noout

                    Nutzer der eigenen CA erstellenopenssl req -new -config opensslcnf -out usercert Erstellt mehrere Dateienauch privkeypem

                    Zertifikat erstellenopenssl x509 -req -in userreq -CA cacert -CAkey cakeypem -CAcreateserial

                    -out usercert -extfile opensslcnf -extensions usr_cert (Zertifikat fur usermit Extenstions Version 3 statt Version 1)

                    Senden einer signierten Nachricht (Nachricht in Neutxt)openssl smime -sign -signer usercert -in Neutxt -inkey privkeypem

                    -out neusmime -text

                    Erzeugt Datei neusmime mit Nachricht und Signature -text erzeugt den Eintrag fur den Con-tent Type vor der Originalnachricht in neusmime

                    Umwandeln der SMIME Nachricht in PKCS7 Nachrichtopenssl smime -pk7out -in neusmime -out neupk7

                    Das gesamte (ohne Inhalt der Nachricht eigentlich nur die Signatur) SMIME Dokument wirdin eine PKCS7 Struktur eingebunden

                    Anschauen mitopenssl asn1parse -i -in neupk7

                    Zertifikate ausgeben mitopenssl smime pkcs7 -in neupk7 -print_certs -noout

                    Zertifikate anschauen mitopenssl smime pkcs7 -in neupk7 -print_certs -noout -txt

                    Verifizierenopenssl smime -verify -in neusmime -CAfile cacert

                    Verschlusseln

                    114

                    openssl smime -encrypt -in Neutxt -out neusmime -text usercer

                    Nachricht ohne Signatur verschlusselt

                    Entschlusselnopenssl smime -decrypt -in neusmime -text -recip usercer

                    -inkey privkeypem

                    Fur die Einbindung in Browseropenssl pkcs12 -export -name Annie -inkey privkeypem

                    -in usercert -out userp12

                    Um auch das CA Zertifikat mit einzubindenopenssl pkcs12 -export -name Annie -inkey privkeypem

                    -in usercert -out userp12 [-certfile cacert -CAfile cacert -chain]

                    Private Schlussel auspacken openssl pkcs8

                    62 PKCS

                    PKCS Public Key Cryptography Standards

                    1 RSA3 Diffie-Hellman5 Cryptography mit Passworten6 Zertifikate7 Cryptographic Message Syntax8 private Schlussel9 Attributtypen10 Zertifikatsrequest11 Cryptographic Token12 Personal Information Exchange13 Elliptische Kurven15 Chipkarten Token Formate

                    621 PKCS7 15 November 93 RFC 3852

                    To do neu-20090708

                    CMS

                    Email (SMIME)

                    115

                    XML Signaturen XMLDSIG XMLENC

                    Dokument rarr signiertes Dokument

                    openssl genpkey -algorithm rsa -pkeyopt rsa_keygen_bits300mdash openssl -chek -text -noout

                    zu kleine Werte (iexcl256) fur den Schlussel werden nicht akzeptiert (Wert ist immer noch etwasklein) Aber die Ausgabe ist nicht ganz korrekt

                    openssl genpkey -algorithm rsa -pkeyopt rsa_keygen_pubexp1

                    ist leider moglich

                    63 CMS(Cryptographic Message Syntax)

                    rfc3852

                    SignedData

                    bull Version

                    bull Hash Algorithmus

                    bull gekapselter Inhalt

                    bull Certifikat Liste

                    bull Widerrufungsliste (Sperrinformationen)

                    bull

                    bull Signer Infos (Signaturen davon kann es mehrere geben elektronische Signatur nach demSignaturgesetz Signer Info enthalt selber noch einmal einen Signaturblock - der als Digi-tale Signatur aufgefasst werden kann)

                    ndash Versionndash Idndash Attributesndash Algondash sig Valuendash

                    bull Signer Id

                    bull Signed Attributes (zB Zeit Ort Message Digest) Die Signatur dieses Blockes wird er-stellt indem der Hash Wert (nur des Blockes) signiert wird Wenn es signed Attributesgibt sind also auszligerdem Hash Wert des Dokuments und Inhaltstyp(Contenttype) im Si-gned Attributes enthalten und erst dann wird der Signed Attributes Block signiert Es wirdjeweils er Hash-Algorithmus verwendet der oben genannt wird

                    116

                    Auszligerdem Signing Certificate

                    bull

                    Frage ist wo wird der Wert Signiert der sagt welcher Hash-Algorithmus verwendet wird Wennnicht konnte man eventuell den Algorithmus austauschen

                    Man konnte den Hash-Algorithmus als SignedAttribute einfugen

                    To do neu-ende

                    CMS (Cryptographic Message Syntax) Beschreibung des Formates mit dem man Krypto-nachrichten erstellen kann

                    Kryptographische Nachricht Struktur vorne Bezeichner hinten Daten Daten = irgendwasspannend Welche Typen gibt es eigentlich

                    Signed-data Content-Type Was jetzt kommt sind signierte Daten Liste der unterstuetzen Has-hfunktion dann gekapselter Inhalt dann eine Liste von Zertifikaten (optional) optionalSperrlisten dann Signaturbloecke (SignerInfo)

                    SignedData = SEQUENCE

                    Versionsnummer

                    Liste der unterstutzten Hashfunktionen

                    Ursprungliche Nachricht selbst

                    Liste von Zertifikaten Optional

                    Sperrlisten Optional

                    Signer Infos

                    SignedInfo = SEQUENCE

                    Versionsnummer

                    Signer Identifier (Wer der Signierer eigentlich gewesen sein soll)

                    Hashfunktionen die bei der Signatur verwendet wird

                    Signierte Attribute

                    Verwendete Signaturalgorithmus

                    Signaturwert

                    Unsignierte Attribute

                    SignerInfo = SEQUENCE

                    Versionsnummer

                    Signer Identifier (Wer der Signierer eigentlich gewesen sein soll)

                    Bezeichner des Hashalgorithmus mit dem die endgultige Signatur erstellt wird

                    Signierte Attribute Optional

                    117

                    Signatur Algorithmus

                    Signature SignatureValue

                    Unsigned Attributes Optional

                    SignerIdentifier = SEQUENCE

                    issuerAndSerialNumber

                    subjectKeyIdentifier (Eindeutiger Hinweis wer der Aussteller ist)

                    SignerInfo Signaturblock der eine Datenstruktur fuer eine Signatur bereitstellt Steht drin Ver-sionsnummer SignerIdentifier verwendeter Hash-Algorithmus dann signierte Attributeverwendeter Signaturalgorithmus Signaturwert unsignierte Attribute

                    SignerIdentifier Aussteller und Seriennummer oder Schluesselidentifier (subjectKeyIdenti-fier)

                    Signierte Attribute Sammlung von Attributen die signiert sind Was dabei sein sollte erstesAttribut Content-Type wenn die signierten Daten nicht nur Rohdaten sind sondern gekap-selte Daten eine s bestimmten Typs Ein weiteres nuetzliches Attribut Message-DigestDann Signing-Time

                    Content-Type Object-Identifier der einen bestimmten Typ impliziert

                    Message-Digest Hash der aus den Daten ausgerechnet wird Als Octet-String

                    Signing-Time Zeit von der behauptet wird dass die Signatur zu dieser Zeit geleistet wurde

                    Signatur Es werden die signierten Attribute signiert dort ist auch der Hash des Dokumentsals messageDigest enthalten Wenn keine signedAttributes existieren wird das Dokumentdirekt gehasht

                    Weitere sinnvolle signierte Attribute

                    Commitment-Type Was bedeutet die Signatur zum Beispiel virtuelle Poststelle Eingangs-stempel Auslieferung Einschreiben Urheberschaft gelesen Zeitstempel (spezielleSignatur eines authentischen Zeitservers) ist eine Information dass das Dokument vor-her existiert hat

                    Signing Certificate Beschreibt mit welchem Schluessel zu welchem Zertifikat ist unterschrie-ben wordenwelches Zertifikat moechte der Signierer zur Ueberpruefung verwendet ha-ben Austausch des Zertifikats fuehrt zu anderer Urheberschaft ist ein realer AngriffVerhindert die Urheberschaft auszutauschen (rfc2634 S 46) Folge mit Zertifikats HashIssuerSerial(Herausgeber und Seriennummer) (leider ist da SHA1 als Algorithmus festge-legt)

                    in rfc5035

                    Folge mit Hash-Algorithmus (optional default ist aber SHA256) Zertifikat Hash IssuerSerial (Nun Hash als Octet String)

                    Da der Wert des Hash Algorithmus optional ist ist diese Variante ruckwartskompatibel

                    118

                    Signing Location Ort an dem die Signatur geleistet wurde

                    Weitere nuetzliche unsignierte Attribute

                    Zeitstempel ist eine Information wann die Signatur existiert hat Hash uber die Signatur TimeServer davon Signatur

                    not after Information fur die Signatur

                    Countersignature Zweite Signatur (Gegenzeichnung) Signaturblock uber eine andere Signa-tur

                    (Mitsignatur Bestatigung eines signierten Dokuments wichtiges Feld fur Mehrfachsigna-turen)

                    Hashwert des signature Feldes (3 Hash Wert) nicht alle in einander gekappselt sonderansammlung von Signaturen

                    Archiv Zeitstempel neuer Hash-Algorithmus signiert Dokument alle Signaturen alle Attri-bute (signiert unsigniert)

                    Damit kann mann folgendes machen

                    2001 2009 2010

                    RS A512 S HA1 S HA256 S HA512

                    Dok S ignatur t1 t2cc at1TTYY^^bb at2 at3

                    Fur XML XML-DSIC XML-ENC

                    7 Wichtige Neuerungen bei den Versionsanderungen

                    bull Von 098 zu 099 Verbesserungen bei den Extensions von Certificate Revocation Lists

                    bull Von 097h zu 098 UTF8-Support fur das ca-Kommando

                    bull SHA1 ist nun default-Hash-Algorithmus statt MD5

                    bull Patentierte Algorithmen RC5 und MD2 mussen beim Kompilieren extra angegeben wer-den

                    bull Neue FIPS 180-2 Algorithmen SHA-224-256-384-512 wurden implementiert

                    119

                    bull Neuer Parameter -selfsign fur das ca-Kommando

                    bull IPv6 Support bei den Zertifikatserweiterungen

                    bull Ausweitung der Eliptischen Kurven Bibliothek

                    8 OpenSSL hintergehen

                    81 die eine Primzahl ganz klein erzeugen

                    bull Offnen einer Datei in genrsa cryptorsarsa_genc

                    bull Andern den Teil ldquo generate p and q rdquo so daszlig die eine Primzahl 10bit lang ist(bitsp=10 )

                    bull Wir erzeugen einen neuen rsa key openssl genrsa -out rsaweakpem 2048und erstellen hierdurch eine Primzahl mit 10 bit die andere zufallig (also so in etwa2038bit)

                    bull Wir schauen uns den key an openssl rsa -in rsaweakpem -text -nooutund sehen die eine Primzahl ist 35879 die andere hat 2046 bit Lange Das kann manlecker faktorisieren

                    bull Offnen cryptobnbn_primeh die Zahl kommt durch den kleinen Primzahltest durchdieser geht nur bis ca 17000

                    82 beide Primzahlen nah beieinander

                    bull Und wieder in rsa_genc (Zeile 136 in der do-while-Schleife hinter degenerate)

                    bull BN_copy(rsa-gtq rsa-gtp) wir setzen q gleich pBA_add_word(rsa-gtq 20) wir addieren 20 auf q

                    for(i=1 BN_is_prime_ex(rsa-gtq 5 ctx NULL) i++)

                    BN_add_word(rsa-gtq 2)

                    wir erhoehen q bis zur naechsten Primzahl

                    bull hierdurch erzeugen wir zwei Primzahlen die sich enorm ahnlich sind (wieder mit obigenKommandos) Der Angreifer kennt in diesem Fall den Exponenten damit ist das Verfahrenvollig unsicher

                    83 Vorschrift des BSI

                    01 le |log10 p minus log10q| also p gt10radic

                    2 lowast qDas kann man aber mit q =10

                    radic2 lowast p im Quellcode umgehen

                    120

                    84 Programmierung Zufallszahlenerzeugung und andere nette features

                    Die ldquocallbackrdquo Funktion gibt den Fortschritt bei Suche nach p und q als Punkt (Fermat Primzah-lentest) und Plus (Miller-Rabin-Test) aus

                    DatentypStruktur zum Speichern der auftretenden groszligen Zahlen Binarfeld BIGNUMp ist unsigned char

                    p = BN_bn2hex((RSA )pub_rsa)-gtn) Zum Ausgeben eines BIGNUMs

                    ((pub_rsa)-gtn)d[] einzelne Teile im Datenblock eines BIGNUMs editieren

                    Zufallszahlen findet man in cryptorandrandh rand_libc randc

                    Diese beiden Kombinationen vor entsprechenden Programmen i2d oder d2i intern to data datato internpub_rsa = d2i_RSAPublickey(NULL ampstr len) (lange von str) Transfor-miert Binardaten Zeichenkette in interne public Key Datenstruktur mit ASN1

                    S(buf) gibt Speicherplatz frei uberschreibt ihn vorher noch einmal mit Zufallsbytes

                    9 Zusammenfassung

                    bull Symmetrische Verschlusselungsverfahren

                    ndash DES

                    64 Bit Blockchiffre

                    16 Runden Feistelnetzwerk mit 48 Bit Rundenschlusseln

                    56 Bit Schlussellange plus 8 Paritatsbits

                    XOR Transformationsfunktion mit S-Boxenndash IDEA

                    64 Bit Blockchiffre

                    8 Runden Feistelnetzwerk mit je 6 middot 16 Bit Rundenschlusseln

                    128 Bit Schlussellange

                    XOR ADD modulo 216 MULT modulo 216 + 1ndash Blowfish

                    64 Bit Blockchiffre

                    16 Runden Feistelnetzwerk

                    32-448 Bit Schlussellange

                    XOR Transformationsfunktion mit XOR CONCAT und viel Schlusselmaterialndash AES

                    121

                    128 192 256 Bit Blockchiffre

                    10 12 14 Runden Feistelnetzwerk

                    128 192 256 Bit Schlussellange

                    Substitution ShiftRow MixColumn KeyAddition

                    ndash RC4

                    Stromchiffre

                    10 12 14 Runden Feistelnetzwerk

                    variabele Schlussellange bis 2048 Bit

                    ndash RC5

                    wahlbare Blockchiffre (openssl 32 Bit)

                    wahlbare Runden Feistelnetzwerk (openssl 12)

                    wahlbare Schlussellange (openssl 128 Bit)

                    ndash GOST

                    64 Bit Blockchiffre

                    32 Runden Feistelnetzwerk

                    256 Bit Schlussellange

                    ADD ROT 8 S-Boxen

                    bull Asymmetrische Verschlusselungsverfahren

                    ndash RSA (Verschlusseln und Signieren)

                    ndash Diffie-Hellmann Schlusselaustausch

                    ndash ElGamal Crypto-System (basierend auf DH)

                    ndash Rucksackverschlusseln (gebrochen)

                    ndash Merkle Puzzle (viele Nachrichten)

                    ndash Rabin Verfahren

                    Zur Prufung erster Teil mit OpenSSL spielen zweiter Teil Konzepte eine Woche vor derPrufung evt fragen was dran kommen wird Prufungstermine 20072005 oder 04102005oder nach Vereinbarung

                    10 Mathematische Techniken

                    101 Multiplikatives Inverses

                    (nach wwwtzide˜hsLehreU9 mathD1pdf)

                    122

                    1011 Behauptung

                    Seien a b isin Z zwei teilerfremde ganze Zahlen dh ggT (a b) = 1 Dann existiert ein aprime isin Z mitaprime middot a equiv 1 mod b

                    1012 Beweis

                    Betrachte die Menge ak mod b|k isin N k ge 1 Da ggT (a b) = 1 gilt folgt dass ggT (ak b) = 1fur alle k isin N mit k ge 1 Denn da a teilerfremd zu b ist so gilt dies auch fur alle Potenzenvon a Daher ist die betrachtete Menge eine Untermenge der endlichen Menge x mod b|x isinZ ggT (x b) = 1 und daher selbst endlich Also kann existiert k1 k2 mit ak1 equiv ak2 mod bNehmen wir an k1 lt k2 und setzen n = k2 minus k1 dann gilt ak1 middot an = ak2 equiv ak1 mod bDaher folgern wir an equiv 1 mod b d h anminus1 middot a equiv 1 mod b Also setzen wir aprime = anminus1 und dieBehauptung ist erfullt

                    102 Kleiner Fermatscher Satz

                    1021 Behauptung

                    Aus der Wikipedia (unter GNU Free Documentation License)

                    Der kleine fermatsche Satz kurz der kleine Fermat ist ein Lehrsatz in der Zahlentheorie Ermacht eine Aussage uber die Eigenschaften von Primzahlen und wurde aufgestellt im 17 Jahr-hundert von Pierre de Fermat Dieser Satz beschreibt eine allgemein gultige Kongruenz

                    ap equiv a mod p

                    wobei a eine ganze Zahl und p eine Primzahl ist (die weitere Symbolik wird im Artikel Kon-gruenz beschrieben) Falls a kein Vielfaches von p ist kann man das Resultat in die haufigbenutzte Form

                    apminus1 equiv 1 mod p

                    bringen

                    1022 Beweis

                    Der Beweis beruht auf der Tatsache dass wenn zwei Zahlen a und b zueinander inkongruent(modulo einer festen Zahl n) sind auch die beiden Produkte x middot a und x middot b inkongruent modulon sind fur x gt 0 und ggT (x n) = 1

                    Denn

                    123

                    sei a b mod n n eine Primzahl a b naturliche Zahlen Angenommen

                    a middot x equiv b middot x mod n

                    fur eine naturliche Zahl x mit ggT (x n) = 1 Dann gibt es eine naturliche Zahl k so dass

                    a middot x minus b middot x = k middot n

                    x middot (a minus b) = k middot n

                    x = n middot (k(a minus b))

                    Da n eine Primzahl und x eine naturliche Zahl ist ist k(a minus b) entweder eine naturliche Zahlminus1n oder 1n Die letzten beiden Falle widersprechen der Annahme dass a b mod n dererste Fall widerspricht der Annahme dass ggT (x n) = 1 Damit ist die Annahme falsch und esgilt fur x so dass ggT (x n) = 1

                    a middot x b middot x mod n

                    Aus der Wikipedia (unter GNU Free Documentation License)

                    Im folgenden betrachtet man zum einen die Menge A aller Reste mod p - also alle naturlichenZahlen kleiner als p und zum anderen die Menge B die diese Reste multipliziert mit a enthaltZwei beliebige Zahlen aus A sind zueinander inkongruent modulo p Aus dem oberen Satzfolgt dass damit auch zwei beliebige Zahlen aus B zueinander inkongruent sind Dadurchergibt sich dass das Produkt uber alle Zahlen aus A kongruent zum Produkt aller Zahlen aus Bist

                    1 middot 2 middot 3 middot middot middot middot middot (p minus 1) equiv (1 middot a) middot (2 middot a) middot middot middot middot middot ((p minus 1) middot a) mod p

                    alsoW equiv W middot apminus1 mod p

                    wobei W das Produkt 1 middot2 middot3 middot middot(pminus1) ist Da es in Restklassenkorpern stets ein multiplikativesInverses gibt kann man diese W dividieren und man erhalt

                    apminus1 equiv 1 mod p

                    1023 Verallgemeinerung

                    Man kann den kleinen fermatschen Satz zum Satz von Euler verallgemeinern Fur zwei teiler-fremde Zahlen n und a gilt

                    aϕ(n) equiv 1 mod n

                    wobei ϕ(n) die Eulersche Phi-Funktion bezeichnet Diese hat als Ergebnis die Anzahl der Zah-len zwischen 1 und nminus1 welche teilerfremd zu n sind Ist n eine Primzahl so ist ϕ(n) = nminus1 sodass man Fermats kleinen Satz als Spezialfall erhalt Mit Hilfe des kleinen fermatschen Satzesentwickelte Fermat den fermatschen Primzahltest

                    124

                    1024 Praktische Anwendung auf Primzahlen

                    (p - a a lt p a 0)Wenn gilt apminus1 1 mod p ist dann kann p keine Primzahl sein (Umkehrung muss nicht

                    gelten) Wenn man mit a beiweisen kann das p keine Primzahl sein kann dann nennen wir aKanditat (Es gibt aber sogenannte Carmichaelzahlen die kein Kandidat ist)

                    To do nacharbeiten Carmichaelzahlen

                    Wenn (p minus 1) gerade ist pminus12 = k eine Ganzzahl

                    Ist a2k equiv 1 mod p(ak)2 equiv p(ak minus 1)(ak + 1) equiv 0 mod pAlso wenn p eine Primzahl ist dann ist entweder ak equiv 1 mod p oder ak equiv 1 mod pDaraus folgt wenn ak 1 mod p und ak minus1 mod p dann ist p keine PrimzahlSomit gilt auch wenn k gerade ist und a

                    k2 1 und a

                    k2 minus1 dann ist p keine Primzahl

                    Betrachten p minus 1 = 2t middot r (r ungerade) Sei a lt p und p - aIn ar a2r a22middotr a2t middotr = apminus1 (Reste mod p)Wenn die Folge nicht mit 1 endet ist p keine Primzahl Wenn vor der ersten 1 in der Folge

                    keine 1 steht ist p keine PrimzahlWir nennen a einen Zeugen wenn man mit a beweisen kann das p keine Primzahl istJede Zahl p die keine Primzahl ist hat mindestens 3

                    4 aller Zahlen a (mit ggT(a p) = 1) alsZeugen (Jeder Kandidat ist ein Zeuge)

                    Damit ergibt sich der Rabin-Miller-Test Wahle zufallig ein a lt p und teste ob a ein Zeugeist Mit hoher (beliebig genauer) Wahrscheinlichkeit ist p Primzahl

                    Bei groszligen Zahlen werden die Zeugen mehr

                    openssl genrsa -out keyrsa 800

                    Generating RSA private key 800 bit long modulus

                    +++++++

                    +++++++

                    e is 65537 (0x10001)

                    Generiert den Schlussel und speichert in rsquokeyrsarsquo Punkte Bedeutet keine kleine PrimzahlRabin-Miller Test schlagt fehl Plus ist ein erfolgreicher Rabin Miller Test bei groszligeren Zahlenbrauch man weniger Tests da es mehr Zeugen gibt

                    []

                    103 Chinesischer Restklassensatz

                    (nach wwwtzide˜hsLehreU9 mathD1pdf)

                    125

                    1031 Behauptung

                    Seien m1m2 mr paarweise teilerfremde ganze Zahlen d h ggT (mim j) = 1 fur alle i j(i j isin 1 2 r) und sei M = m1 middotm2 middotmr Dann existiert fur jede Liste a1 ar mit 0 le ai lt

                    mi fur 1 le i le r genau ein x isin Z mit 0 le x lt M welches effizient berechnet werden kann undfur das gilt

                    x equiv a1 mod m1

                    x equiv a2 mod m2

                    x equiv ar mod mr

                    Bemerkung Es ist leicht einzusehen dass jedes xprime isin Z mit xprime = x + k middot M fur ein k isin Z d hxprime equiv x mod M genau dasselbe Gleichungssystem lost wie x Der Beweis wird zeigen dass furein gegebenes x nur xprime von dieser Form dasselbe Gleichungssystem losen konnen

                    1032 Beweis

                    Zunachst beweisen wir die Existenz und setzen dazu Mi = Mmi daher gilt ggT (Mimi) = 1Aus diesem Grund existiert auch ein multiplikatives Inverses Ni isin Z mit Mi middot Ni equiv 1 mod mi

                    (vgl multiplikative Inverse) Zu beachten ist jedoch dass fur alle j isin 1 r mit i j stetsMi middot Ni equiv 0 mod m j gilt Nun definieren wir x via

                    x equivrsum

                    i=1

                    ai middot Mi middot Ni mod M

                    Fur jedes i existiert ein v isin Z so dass x sich folgendermaszligen darstellen lasst

                    x = Mi middot Ni middot ai + v middot mi

                    Dies gilt da jedes M j mit j i mi als Faktor enthalt Offensich erfullt x also die obigen Glei-chungen x ist das einzige mit 0 le x lt M welches fur die gegebene Liste a1 a2 ar alleGleichungen lost denn falls xprime und xprimeprime zwei verschiedene Losungen sind so gilt xprime minus xprimeprime equiv 0mod mi fur alle i isin 1 r d h xprimeminus xprimeprime ist ein Vielfaches aller mi und damit auch von M da nachVoraussetzung ggT (mim j) = 1 fur alle i j isin 1 r mit i j erfullt ist Somit folgt xprime equiv xprimeprime

                    mod M d h 0 le xprime xprimeprime lt M kann nicht auftreten und der Beweis ist abgeschlossen

                    126

                    104 Square and multiply

                    Der folgende rekursive Algorithmus berechnet xn fur naturliche Zahlen x und n indem sukzes-sive der Exponent reduziert wird

                    bull Falls n = 1 xn = x

                    bull Sonst falls n gerade xn = (x2)n2

                    bull Sonst xn = x middot (x2)(nminus1)2

                    Damit kann xn in O(ln(n)) Rechenschritten (quadrieren und multiplizieren) berechnet werdenindem in jedem Schritt des Algorithmus der Exponent halbiert wird und hochstens vier Berech-nungen ausgefuhrt werden

                    105 Montgomery Reduktion (Moduloberechnung ohne Division)

                    Heute was ganz verrucktes Modulo-Multiplikation ohne Division

                    Problem bei RSA und anderen Algorithmenm Modul gegeben und g Zahl gegeben und man rechnet aus ga mod mAufwand der Berechnung mit Square and Multiply Groszlige des Exponenten in Bits Multiplika-tionen + gleichviele ModulooperationenBerechnung von x middot y mod m = x middot y minus (x middot y div m) lowast mDivision aufwendig Daher Methode dies ohne Division bzw mit einer schmerzfreien Divisiondurch eine Zweierpotenz zu tun Dafur Kosten von Hin- und RucktransformationenHier Skizze 1xrarr X = x middot r mod myrarr Y = y middot r mod mX lowast Y = X middot Y middot rminus1 = x middot y middot r mod m

                    Wir berechnen t0 equiv minusmminus1 mod r (Preprocessing)

                    1 x minusrarr X = x middot r mod m

                    2 y minusrarr Y = y middot r mod m

                    3 X lowast Y = X middot Y middot rminus1 mod m= x middot r middot y middot r middot rminus1 = x middot y middot r mod m

                    Zur Bestimmung von X lowast Y t1 = X middot Y echte Multiplikationt2 = t1 middot t0 mod r Multiplikation untent3 = (t1 + t2 middot m) div r Multiplikation obent3 = X lowast Y oder (t3 minus m) = X lowast Y

                    127

                    1 t3 ist durch r teilbar

                    2 t3 equiv X middot Y middot rminus1 mod m

                    3 0 le t3 le 2m

                    Zu 1 t1 + t2 middot mequiv t1 + t1 middot t0 middot m mod requiv t1 + t1 middot m middot (minusm)minus1 mod requiv t1 minus t1 equiv 0 mod r

                    Zu 2 (t1+t2middotm)r = t3 mod m

                    (t1 middot t2 middot m) middot rminus1 mod mequiv t1 middot rminus1 + t2 middot rminus1 middot mequiv X middot Y middot rminus1 mod m

                    Beispiel 5 lowast 3 =

                    t1 = 15t2 = 15 middot 23 mod r = 45t3 = 15 + 45 middot 13 = 6

                    Zu 3t1 le (m minus 1)2

                    t2 middot m lt r middot mt1 + t2 middot m lt 2 middot r middot m

                    t3 lt 2 middot m

                    t3 equiv X middot Y middot rminus1 mod mx lowast r2 = X = x middot r mod mX lowast 1 = x mod m

                    Beispiel m = 13 r = 100 t0 = 23

                    r mod m r = 9 mod 13r2 = 3 mod 13

                    Ziel 6 middot 5 mod 13

                    6 lowast 3 = 25 lowast 3 = 6

                    128

                    2 lowast 6 =

                    t1 =

                    t2 =

                    t3 = xx

                    x lowast 1 =

                    Wenn eine Division langer als 1 5 Multiplikationen dauert dann lohnt sich das Verfahren DerErfinder heisst ubrigens Peter L Montgomery (Montgomery Reduktion) wwwmiinformatikuni-frankfurtdeteachingws0001krypto algomontgomerypdf

                    Montgomery-Multiplikation

                    To do siehe Mathematischer Anhangzusammenfugen

                    Die Reduktion modulo m erfordert eine Division aber Divisionen sind rsquoteuerrsquo

                    Dies kann man aber wie folgt vereinfachen

                    Um die Division zu vermeiden rsquotransformiertrsquo man die Zahlen

                    Sei gesucht das Produkt x middot y mod m

                    x minusrarr X y minusrarr Y x middot y minusrarr X lowast Y

                    R = (zweierPotenz) gt m und die Division durch R muss einfach sein

                    X = x middot R mod m

                    X lowast Y = X middot Y middot Rminus1 mod m (wobei die modulo Reduktion nun nicht mehr jedes mal ausgefuhrtwerden muss sonder nur am Anfang und am Ende der rsquoTransformationrsquo)

                    1 Berechne mprime = minusmminus1 mod R

                    (minusmR) = 1 rArr XGCD mprime middot m = minus1 mod R

                    2 t = X middot Y (echte Multiplikation)

                    3 t1 = t middotmprime mod R (echte Multiplikation und oben abschneiden also eine leichtere moduloReduktion da R eine zweier Potenz ist) (dabei gilt t2 lt m2 + R middot m)

                    4 t2 = t + t1 middot m (echte Multiplikation und eine Addition) (dabei gilt t3 lt(m+R)middotR

                    R = 2m)

                    5 t3 = t2divR (also rsquounten abschneidenrsquo)

                    6 Wenn t3 gt m dann t3 = t3 minus m

                    129

                    Nun ist t3 = X lowast Y Dafur muss t3 lt m sein oder in Schritt 6 t3 lt 2m sein

                    Wir mussten also prufen

                    1 t3 lt m

                    2 Division in 5 rsquogeht aufrsquo

                    t2 ist durch r teilbar

                    t2 mod R equiv (t + t1 middot m) equiv t + (t middot mprime) middot m mod R equiv t + t(minus1) mod R equiv 0 mod R

                    3 t3 = X lowast Y

                    t3 middot R mod m equiv t2R middot R mod m equiv t2 equiv t + t1 middot m equiv t mod m equiv X middot Y mod m

                    Wir haben also den folgenden Aufwand

                    1 rsquoTransformationrsquo

                    2 rsquoRechnungrsquo

                    3 Zuruck rsquotransformierenrsquo

                    x lowast R2 = x middot R2 middot Rminus1 mod m = x middot R = X mod m

                    X lowast 1 = X middot 1 middot Rminus1 equiv x middot R middot Rminus1 equiv x mod m

                    Man benotigt also zwei zusatzliche Operationen zur transformation Dafur kommt die Operationrsquorsquo ohne Divisionen aus

                    Beispiel m = 17

                    R = 100

                    7 middot 11 mod 17

                    x lowast y mod mdarr darr

                    X Y= =

                    (x middot R) mod m lowast (y middot R) mod m

                    m1 = minusmminus1 mod 100

                    suche also ein m1 mit m1 middot 17 = minus1 mod 100

                    m1 = 47

                    130

                    To do Bsp Magma Quelltext siehe Homepage

                    Bem dazu Wenn R groszlig genug ist kann man die Subtraktion von m weglassen

                    Mathematischer Hintergrund (Zm+ middot)simminusrarr (Zm+ lowast) Was ist das Einselement und das

                    Inverse

                    106 Nochwas

                    vielleicht

                    zur Prufung Zwei Teile (ein theoretischer ein praktischer) Ein openssl-Kommando das in derVL nicht behandelt wurde wird drankommen (zum Beispiel speed ca etc) Theoretischer Teil

                    1 symmetrische Verfahren (was sind symmetrische Verfahren wodurch charakterisiert)

                    2 Integritatsschutz (wie kann man Integritatsschutz gewahrleisten)

                    3 asymmetrische verfahren (siehe 1)

                    4 Signatur (was sind Signaturen wofur verwendet man sie was ist ˜konzept was ist sicherwas ist unsicher)

                    5 Vertrauensstruktur (zum Beispiel PGP)

                    6 Client-Server-Authentisierung (SSL-Protokoll Kerberos)

                    7 Sicherheitsparameter (wo sind die welchen Einfluszlig auf die Sicherheit haben sie)

                    8 X509 (elektronische Identitat)

                    9 RFC-Security (3280 3279 3446 )

                    Mathematische Verfahren

                    1 Square and Multiply Double and Add

                    2 Euklidischer Algorithmus

                    3 RSA DH

                    4 DSA

                    5 AES

                    6 das eine oder andere symmetrische Verfahren Strom-Blockchiffre

                    7 Elliptische Kurven eher nicht reicht zu wissen dass man mit Addition in EK das gleicheerreichen kann wie mit Multiplikation im Restklassenkorper

                    8 kleiner Fermat eher nicht

                    131

                    9 Montgomery-Multiplikation vielleicht auch nicht sollte aber bekannt sein

                    Fur MD5- AES- etc Grundfunktionen reicht evt wissen wo man nachschauen muss

                    Dann nachweisen dass man mit Openssl spielen kann

                    1 Verschlusseln mit DES3DESBFAES

                    2 Prufsummenberechnung

                    3 Konfigurationsfile

                    4 RSA-Verschlusselung

                    5 098 ndash 097 (dynamisch)

                    6 Zertifikat

                    7 DSA-Verschlusselung

                    8 Passworter (passwd) und Salt

                    9 E-Mail-Nachricht erstellen und sichern (SMIME-Anwendung)

                    Zum Punkt Ich mochte eine 1 haben was muss ich dafur tun Was haben sie ausserhalb derVorlesung schonmal gelesen Was fehlte ihnen an der Vorlesung was fanden sie doof

                    132

                    • 1 Einfuumlhrung
                      • 11 Verschluumlsselung
                      • 12 Beispiel rot13
                      • 13 Block-Chiffre
                      • 14 Strom-Chiffre
                      • 15 Angriffstypen
                        • 151 Differentielle Kryptoanalysis
                          • 16 Base64
                            • 2 OpenSSL
                            • 3 Symmetrische Verschluumlsselungsverfahren
                              • 31 Feistel-Chiffren
                              • 32 DES - Data Encryption Standard
                                • 321 Schluumlsselauswahl
                                • 322 Funktionsweise
                                • 323 Schwachstellen und Unsinnigkeiten
                                • 324 spezielle Optionen bei openssl
                                • 325 DESECB - Electronic Code Book
                                • 326 DESCBC - Cipher Block Chaining
                                • 327 DESOFB - Output Feed Back
                                • 328 DESCFB - Cipher Feed Back
                                • 329 CTR Mode CCM
                                • 3210 TEA-Algorithmus
                                • 3211 DES-X
                                  • 33 IDEA International Data Encryption Algorithm
                                    • 331 Schluumlsselauswahl
                                    • 332 Funktionsweise
                                    • 333 Pseudocode-multiplikation
                                    • 334 Schwachstellen
                                      • 34 Blowfish
                                        • 341 Initialisierung
                                        • 342 Verschluumlsselung
                                          • 35 AES Advanced Encryption Standard
                                            • 351 Wiederholung-Byteoperation
                                            • 352 Uumlberblick
                                            • 353 mathematische Grundlagen
                                              • 36 RC4 Rons Cipher 4
                                                • 361 Geschichte
                                                • 362 Beschreibung
                                                • 363 Der Pseudo-Zufalls-Algorithmus
                                                • 364 Der Schluumlsselerzeugungs-Algorithmus
                                                • 365 Implementation
                                                • 366 Sicherheit
                                                • 367 Fluhrer Mantin und Shamir Angriff
                                                  • 37 RC5 Rons Cipher 5
                                                    • 371 Verschluumlsselung
                                                    • 372 Schluumlsselexpansion
                                                      • 38 GOST 28147-89 Gosudarstvennyi Standard Soyuza SSR nicht in OpenSSL
                                                      • 39 FazitWie koumlnnte bei einen Symmetrischen Algorithmus die Sicherheit erhoumlhen
                                                        • 4 Asymmetrische Verschluumlsselungsverfahren
                                                          • 41 Einfuumlhrung
                                                            • 411 Beispiel
                                                              • 42 Geschichte
                                                              • 43 Einige Theoretische Grundlagen
                                                                • 431 Kleiner Fermat (oder kleiner Fermatscher Satz)
                                                                • 432 Euklidischer Algorithmus
                                                                • 433 Beispiel
                                                                  • 44 RSA Rivest Shamir Adleman
                                                                    • 441 Funktionsweise des RSA-Verfahrens
                                                                    • 442 Beweis der Funktionsweise
                                                                      • 45 Schwaumlchen von RSA
                                                                      • 46 Fuktionen in OpenSSL
                                                                        • 461 genrsa
                                                                        • 462 rsa
                                                                        • 463 rsautl
                                                                        • 464 PKCS
                                                                        • 465 OAEP - Optimal Asymmetric Encryption Padding
                                                                        • 466 Wie erkennt man an Ciphertexten den Verschluumlsselungsalgorithmus- DER ASN1
                                                                        • 467 Umgehen mit den Schluumlsselkomponenten
                                                                          • 47 Miller-Rabin Test
                                                                          • 48 Diffie-Hellman-Schluumlsselaustausch
                                                                          • 49 ElGamal-Cryptosystem
                                                                          • 410 Wiederholung DH
                                                                            • 4101 Beispiel
                                                                              • 411 was anderes
                                                                              • 412 Elliptische Kurven
                                                                              • 413 Elliptische Kurven Nachtrag
                                                                              • 414 Rucksack-Verschluumlsseln
                                                                                • 4141 Beispiel
                                                                                  • 415 Merkle Puzzle
                                                                                  • 416 Rabin-Verfahren und Wurzelziehen
                                                                                    • 4161 Schluumlsselgenerierung
                                                                                    • 4162 Kongruenzbedingung
                                                                                    • 4163 Verschluumlsselung
                                                                                    • 4164 Entschluumlsselung
                                                                                      • 417 Angriffe auf asymmetrische Verschluumlsselungsverfahren
                                                                                        • 4171 1 Angriff Common modulus attack
                                                                                        • 4172 2 Angriff kleiner geheimer Exponent d
                                                                                        • 4173 3 Angriff Faktorisieren
                                                                                        • 4174 Echt schlechte RSA-Schluumlssel
                                                                                        • 4175 Schnelles Faktorisieren bei Fehler im System
                                                                                        • 4176 Angriff mit gewaumlhltem Chiffretext
                                                                                            • 5 Signaturmechanismen
                                                                                              • 51 Integritaumltsschutz und Hashfunktionen
                                                                                                • 511 Schluumlssellose Hashfunktion (Pruumlfsummen ohne Schluumlssel)
                                                                                                • 512 Demonstration Faumllschung
                                                                                                  • 52 Unterschied MD5 und SHA
                                                                                                  • 53 Secure Hash Standard SHA-2
                                                                                                    • 531 Problem bei MD5 und SHA-0
                                                                                                    • 532 MACs (Message Authentication Codes) (Pruumlfsummen mit Schluumlsseln)
                                                                                                      • 54 Whirlpool
                                                                                                      • 55 Zusammenfassung
                                                                                                      • 56 Digitale Signaturen
                                                                                                        • 561 RSA
                                                                                                        • 562 Eigenschaften eines asymmetrischen Verschluumlsselungsverfahren
                                                                                                        • 563 RSASSA-PSS-Padding
                                                                                                        • 564 DSA
                                                                                                        • 565 ECDSA - DSA mit Elliptischen Kurven
                                                                                                          • 57 Widerrufen von Zertifikaten
                                                                                                          • 58 Was es noch so gibt
                                                                                                            • 581 blinde Signaturen
                                                                                                            • 582 anonyme Signaturen
                                                                                                                • 6 Zertifikate
                                                                                                                  • 603 X509
                                                                                                                    • 604 Erweiterungen
                                                                                                                    • 605 Erzeugung
                                                                                                                    • 606 Guumlltigkeit
                                                                                                                      • 61 Praktische Ausschlachtung von kryptografischen Algorithmen mit SMIME und PKCS7
                                                                                                                      • 62 PKCS
                                                                                                                        • 621 PKCS7 15 November 93 RFC 3852
                                                                                                                          • 63 CMS(Cryptographic Message Syntax)
                                                                                                                            • 7 Wichtige Neuerungen bei den Versionsaumlnderungen
                                                                                                                            • 8 OpenSSL hintergehen
                                                                                                                              • 81 die eine Primzahl ganz klein erzeugen
                                                                                                                              • 82 beide Primzahlen nah beieinander
                                                                                                                              • 83 Vorschrift des BSI
                                                                                                                              • 84 Programmierung Zufallszahlenerzeugung und andere nette features
                                                                                                                                • 9 Zusammenfassung
                                                                                                                                • 10 Mathematische Techniken
                                                                                                                                  • 101 Multiplikatives Inverses
                                                                                                                                    • 1011 Behauptung
                                                                                                                                    • 1012 Beweis
                                                                                                                                      • 102 Kleiner Fermatscher Satz
                                                                                                                                        • 1021 Behauptung
                                                                                                                                        • 1022 Beweis
                                                                                                                                        • 1023 Verallgemeinerung
                                                                                                                                        • 1024 Praktische Anwendung auf Primzahlen
                                                                                                                                          • 103 Chinesischer Restklassensatz
                                                                                                                                            • 1031 Behauptung
                                                                                                                                            • 1032 Beweis
                                                                                                                                              • 104 Square and multiply
                                                                                                                                              • 105 Montgomery Reduktion (Moduloberechnung ohne Division)
                                                                                                                                              • 106 Nochwas

                      -pass arg

                      the password source

                      -salt

                      use a salt in the key derivation routines

                      -nosalt

                      donrsquot use a salt in the key derivation routines

                      -e

                      encrypt the input data this is the default

                      -d

                      decrypt the input data

                      -a

                      base64 process the data This means that if encryption is

                      taking place the data is base64 encoded after encryption

                      If decryption is set then the input data is base64 decoded

                      before being decrypted

                      -A

                      if the -a option is set then base64 process the data on

                      one line

                      -k password

                      the password to derive the key from This is for

                      compatibility with previous versions of OpenSSL Superseded

                      by the -pass argument

                      -kfile filename

                      read the password to derive the key from the first line

                      of filename This is for compatibility with previous

                      versions of OpenSSL Superseded by the -pass argument

                      -S salt

                      the actual salt to use this must be represented as a

                      string comprised only of hex digits

                      -K key

                      the actual key to use this must be represented as a string

                      comprised only of hex digits If only the key is specified

                      the IV must additionally specified using the -iv option

                      11

                      When both a key and a password are specified the key given

                      with the -K option will be used and the IV generated from

                      the password will be taken It probably does not make much

                      sense to specify both key and password

                      -iv IV

                      the actual IV to use this must be represented as a string

                      comprised only of hex digits When only the key is specified

                      using the -K option the IV must explicitly be defined When

                      a password is being specified using one of the other options

                      the IV is generated from this password

                      -p

                      print out the key and IV used

                      -P

                      print out the key and IV used then immediately exit donrsquot

                      do any encryption or decryption

                      -bufsize number

                      set the buffer size for IO

                      -nopad

                      disable standard block padding

                      -debug

                      3 Symmetrische Verschlusselungsverfahren

                      31 Feistel-Chiffren

                      Aus der Wikipedia (unter GNU Free Documentation License)

                      Feistel-Chiffre (auch als Feistelnetzwerk bezeichnet) ist eine Block-Chiffre Ein Mitarbeitervon IBM Horst Feistel gilt als der Erfinder dieser Chiffre Er arbeitete mit anderen am sogProjekt rdquoLuciferldquo dessen Ziel es war eine effiziente Verschlusselungstechnologie zu entwi-ckeln Die Feistel-Chiffre war spater dann die Grundlage fur den DES-Algorithmus

                      Viele moderne symmetrische Verschlusselungsalgorithmen basieren auf Feistelnetzwer-ken Dies ruhrt ua auch daher dass die Struktur von sehr vielen Kryptografen analysiert undfur gut befunden wurde

                      12

                      Wie es der Name rdquoBlock-Chiffreldquo schon nahe legt wird der Klartext zuerst in einzelneBlocke zerlegt Die Groszlige dieser Blocke kann frei gewahlt werden ublich sind oftmals Vielfa-che von 64 Bit

                      Jeder dieser Blocke wird danach in zwei gleichgroszlige Halften (L0 und R0) geteilt und inmehreren Runden mit verschiedenen Schlusseln verschlusselt Nach den Runden werden dieHalften wieder zusammen gesetzt

                      Innerhalb der i-ten Runde (i ist die Nummer der aktuellen Runde und reicht von 1 bis n)wird folgende Formel angewendet

                      Li = Riminus1

                      Ri = Liminus1 oplus f (Riminus1Ki)

                      Dabei bildet f die sog Runden- oder Transformationsfunktion und Ki ist der jeweilige Runden-schlussel Der verschlusselte Text am Ende der Runden ist die Zusammenfuhrung von (LnRn)

                      Feistelnetzwerke ermoglichen eine Entschlusselung ohne dass die Umkehrfunktion von fbenotigt wird Will man einen Geheimtext dechiffrieren wendet man die obige Formel leichtmodifiziert an

                      Riminus1 = Li

                      Liminus1 = Ri oplus f (Riminus1Ki)

                      13

                      (Quelle httpenwikipediaorgwikiImageFeistelpng)

                      32 DES - Data Encryption Standard

                      DES ist eine 64 Bit Block-Chiffre mit einer festgelegten Schlussellange von 56 Bit Die Funk-tionsweise entspricht einem 16-Runden Feistel-Netzwerk DES ist der erste Verschlusselungs-Algorithmus der weite Verbreitung fand und dessen Spezifikation offentlich zuganglich ist Erwurde in den 70er Jahren entwickelt und ist im amerikanischen Standard FIPS 46-2 beschrieben

                      14

                      321 Schlusselauswahl

                      Zunachst steht nominal ein 64-Bit Schlussel zur Verfugung Von diesem ist jedoch je ein Bit proByte als Paritatsbit deklariert so dass 56 Bit effektives Schlusselmaterial ubrigbleiben Diese 56Bit werden in 2 mal 28 Bit aufgeteilt die in jeder der 16 Runden um 1 oder 2 Bit rotiert werdeninsgesamt um 28 Bit so dass am Ende wieder das Original vorliegt Aus der Konkatenation derbeiden Halften wird in jeder Runde ein 48-Bit Rundenschlussel ausgewahlt

                      (Quelle httpenwikipediaorgwikiImageDES-key-schedulepng)

                      15

                      322 Funktionsweise

                      Die so gewonnenen Rundenschlussel ki werden fur die Runden der Feistelchiffre genutzt E(k1 k2 k16m) =

                      cE(k16 k15 k1 c) = mD(k1 k2 k16 c) = E(k16 k15 k1 c) = mJeder 64 Bit Eingabe-Block wird in zwei 32 Bit Blocke (L und R) aufgeteilt und weiterverarbei-tet L und R werden in jeder Runde durch eine festgelegte Permutation E auf 48 Bit ausgedehntanschlieszligend mit dem Rundenschlussel verknupft mittels einer weiteren rundenspezifischenPermutation S wieder auf 32 Bit komprimiert und dann schlieszliglich noch einer weiteren festge-legten Permutation P unterzogenLi = Riminus1Ri = Liminus1 oplus f (Riminus1Ki) wobei f (Riminus1Ki) = P(S (E(Riminus1) oplus Ki))

                      rechts Feistelstruktur (Quelle httpenwikipediaorgwikiImageDES-main-networkpng)

                      links F Funktion (Quelle httpenwikipediaorgwikiImageDES-f-functionpng)

                      16

                      (Quelle httpdewikipediaorgwikiBildDES_resizepng)

                      323 Schwachstellen und Unsinnigkeiten

                      bull Die Anfangliche Permutation der Klartexteingabe sollte Softwareimplementation erschwe-ren Per Hardware ist diese sehr einfach universell verwendbare Rechner hatten in den70er Jahren jedoch noch Probleme mit so etwas

                      bull Das Paritatsbit ist eine Schwachstelle da es - soweit es gesetzt ist - ein Durchmustern desSpeichers nach dem Schlussel erlaubt Gesucht wird dann nach dem relativ ungewohn-lichen Auftreten von 8 nahe bei einander liegenden Byte bei denen je das letzte Bit dieParitat angibt

                      17

                      bull Mit heutigen Rechnern ist es moglich einen 56-Bit Schlussel mittels brute force zu knackenDie Lange des Schlussels ist bei DES aber auf diesen Wert festgelegt

                      bull Es wird vermutet dass die ldquomagischenrdquo S-Permutationen uber deren Qualitat nichts be-wiesen ist eine Hintertur darstellen da die NSA hierbei ihre Finger im Spiel hatte Eskonnte jedoch nie bewiesen werden

                      324 spezielle Optionen bei openssl

                      bull Option -nopad Schaltet Auffullung der letzten Bits zu Block von 64 Bits aus Auch wenndie Nachricht genau in 64 Bit Blocken einteilbar ist wird ein 64 Bit Padding Block an-gehangtDer Block besteht aus x mal der Zahl x So lasst er sich beim Entschlusseln wieder entfer-nen

                      bull Option -nosalt Schaltet die Voranstellung des salt-Werts ausDer salt-Wert verlangert die Nachricht um insgesamt 16 Bytes Salted__ gefolgt von 8Bytes salt-WertAus Passwort und salt-Wert wird der Key fur die eigentliche Verschlusselung erzeugt Da-mit wird verhindert dass Schlussel wegen Mehrfachverwendung von Passwortern leich-ter zu brechen sind Gleiche Passworter beim Aufruf der Verschlusselung mit OpenSSLfuhren durch den zufalligen salt-Wert zu verschiedenen Keys bei der Verschlusselung

                      bull Neben des gibt es auch des-ede und des-ede3 Diese bieten einen gewissen Schutzgegen Bruteforce-AngriffeTDES (Triple DES) DES3 DES-EDE (Encrypt Decrypt Encrypt) mit effektiv 168 Bit

                      E3DES(k1 k2 k3m) = EDES(k3DDES(k2 EDES(k1m)))

                      In OpenSSL arbeitet des-ede mit zwei Schlusseln

                      E(K1)D(K2) E(K1)

                      Um in OpenSSL 3 Schlussel angeben zu konnen muss man des-ede3 verwenden Ver-wendet man bei des-ede zweimal oder bei des-ede3 dreimal den selben Schlusselerhalt man eine einfache DES-Verschlusselung So kann man Abwartskompatibilitat er-reichen

                      bull In OpenSSL konnen DES Verschlusselungen mit folgenden Befehlen aufgerufen werden

                      ndash -desndash -des-cbcndash -des-cfbndash -des-ecbndash -des-edendash -des-ede-cbc

                      18

                      ndash -des-ede-cfbndash -des-ede-ofbndash -des-ede3ndash -des-ede3-cbcndash -des-ede3-cfbndash -des-ede3-ofbndash -des-ofbndash -des3ndash -desxndash -desx-cbc

                      OpenSSL des-ecb -salt fur den Schlusseleintrag aus Passphrasepassphrase = 12345prime +prime S alt minusWert rarr K

                      12345srarr

                      264 Moglichkeiten

                      Damit man keine Tabelle generieren kann die aus den schwachen Schlussel besteht denn fur12345 gibt es 264 Moglichkeiten aufgrund des salts

                      (PC12345)(PC1234)

                      P- (Klartext) bekanntS- (Saltwert) bekanntC- (Chiffretext) unbekanntwelcher Schlussel wurde verwendet

                      112123

                      1234

                      rarr K

                      s1 s2 s3c1 c1 c1c12 c12 c12c123 c123 c123c1234 c1234 c1234

                      Dazu kommt aber spater noch mehr

                      19

                      325 DESECB - Electronic Code Book

                      Die Eingabe wird in Blocke aufgeteilt und jeder Block fur sich verschlusselt Dieses Verfahrenist potentiell unsicher weil in der Abfolge der Blocke eine Struktur enthalten ist die der Algo-rithmus nicht verbirgt Ein Fehler beim Ver- oder Entschlusseln eines Blockes fuhrt allerdingsauch nur zu einem einzigen verlorenen Block

                      To do Initialisierungsvektor

                      (Quelle httpenwikipediaorgwikiImageEcb_encryptionpng)

                      (Quelle httpenwikipediaorgwikiImageEcb_decryptionpng)

                      BemReicht fur einen Block dann wird auch kein Initialisierungsvektor benotigt

                      20

                      Man kann fur den Initialisierungsvektor auch einen vorher vereinbarten Wert (zB Unix Sekun-den) wahlen

                      Aus der Wikipedia (unter GNU Free Documentation License)

                      Die 64-bit Klartextblocke werden nacheinander und getrennt voneinander kontextfrei ver-schlusselt Dies ist die einfachste Anwendungsmoglichkeit eines Block-Chiffre

                      326 DESCBC - Cipher Block Chaining

                      Aus der Wikipedia (unter GNU Free Documentation License)

                      Vor der Verschlusselung eines Klartextblockes wird der bereits verschlusselte vorhergehendeBlock hinzuaddiert Auf den ersten Klartextblock der ja keinen Vorganger besitzt wird stattdessen ein Initialisierungsvektor der geheim gehalten werden muss addiert Dadurch entstehteine Verkettung (engl chain) der Blocke Trotz dieser Verkettung ist die CBC-Verschlusselung

                      rdquoselbstkorrigierendldquo FehlerManipulationen in einem Block wirken sich bei der Entschlusse-lung nur auf den fehlerhaftenmanipulierten und den nachsten Block ausMan kann relativ einfach beliebige Blocke des Geheimtextes einzeln entschlusseln da zusatz-lich zum Schlussel nur der vorhergehende (verschlusselte) Block benotigt wird

                      Fehler im c breiten sich nicht aus beim Entschlusseln Ein Initialisierungsvektor IV fur erstenBlock wird benotigt

                      bull Klartext oplus Cipher und dann Encryption

                      bull Vorteil Muster im Klartext werden zerstort

                      bull Nachteil Fehler im Ciphertext eines Blocks verandern Bits an genau der Stelle im folgen-den Block (aber nur in diesem spatere Blocke sind nicht betroffen) so kann gezielt eineStelle im Block angegriffen werden (siehe Skizze)

                      To do Skizze zur Fehlerausbreitung erlautern

                      21

                      m1 mlowast2 mlowast3

                      IV oplus

                      oplus

                      oplus

                      oplus

                      DES

                      DES

                      DES

                      DES

                      c1

                      DDc2

                      DDc3

                      DDc4

                      EE

                      Vergleich DESECB und DESCBC

                      Zum Vergleich bietet es sich an ein Bild (Abbildung 1) mit DES im ECB- und im CBC-Moduszu verschlusseln Deutlich zu erkennen ist dass die Struktur im ECB-Modus (Abbildung 2)erhalten bleibt wahrend sie bei CBC (Abbildung 3) vollkommen zerstort wird

                      Abbildung 1 Bild im Klartext (24 Bit RGB mit 182 times 183 Pixeln)

                      Abbildung 2 Bild aus Abbildung 1 ECB-verschlusselt

                      22

                      Abbildung 3 Bild aus Abbildung 1 CBC-verschlusselt

                      327 DESOFB - Output Feed Back

                      Aus der Wikipedia (unter GNU Free Documentation License)

                      In diesem Modus werden die Klartextblocke nicht direkt mit DES verschlusselt sondern DESerzeugt einen pseudozufalligen Bitstrom der dann ohne Ubertrag (vgl XOR) auf den Klartextaddiert wird Dazu muss DES mit einem kontinuierlichen Eingabestrom gefuttert werden AlsEingabe von DES dient hier ein Schieberegister dass zunachst mit einem Initialisierungsvektorgeladen wird Anschlieszligend wird immer ein Teil der Ausgabe von DES in dieses Registerhineingeschoben und so als Eingabe wiederverwendet (daher output feedback)

                      bull Output der Encrpytion als Input fur Encryption erzeugt Pseudozufallsstrom oplus Klartext

                      bull Vorteil Beliebige Blockgroszligen moglich wie Stromchiffre verwendbar

                      bull Nachteil Durchsatz verringert sich auf neue Blockgroszlige pro erzeugtem Block kann abervorberechnet werden

                      bull Vorteil Ein Bit Fehler fuhrt zu nur einem invertierten Bit nach der Entschlusselung

                      bull Nachteil Keine Selbstsynchronisierung moglich wenn Bits komplett verloren gehen

                      23

                      (Quelle httpdewikipediaorgwikiBildOfb_encryptionpng)

                      (Quelle httpdewikipediaorgwikiBildOfb_decryptionpng)

                      328 DESCFB - Cipher Feed Back

                      Aus der Wikipedia (unter GNU Free Documentation License)

                      Identisch mit OFB aber statt die Ausgabe des DES wieder als Eingabe zu verwenden wirdder Kryptotextstrom als Eingabe wiederverwendet

                      bull Cipher als Input fur Encryption erzeugt Pseudozufallsstrom oplus Klartext

                      24

                      bull Vorteil Beliebige Blockgroszligen moglich wie Stromchiffre verwendbar

                      bull Nachteil Durchsatz verringert sich auf neue Blockgroszlige pro erzeugtem Block

                      (Quelle httpdewikipediaorgwikiBildCfb_encryptionpng)

                      (Quelle httpdewikipediaorgwikiBildCfb_decryptionpng)

                      329 CTR Mode CCM

                      Dieser Modus spielt fur DES keine Rolle Ist auch nicht in OpenSSL implementiert Aber die-se Betriebsart ist fur 128 Bit Verschlusselungen ist zum Beispiel vom BSI als sicher eingestuftworden rsquoDie Betriebsart der Zukunftrsquo

                      Wird zum Beispiel fur W-LAN Verschlusselung verwendet

                      25

                      Eingabe sind Klartext mit einen Zahler

                      ctr0 rarr Block rarr oplusT rarr c0ctr1 rarr Block rarr oplusp1 rarr c1ctr2 rarr Block rarr oplusp2 rarr c2ctr3 rarr Block rarr oplusp3 rarr c3

                      ctrn rarr Block rarr opluspn rarr cn

                      Standardisiert als rsquoSP 800-38crsquo

                      (N A P) mit N Zufallswerten A Assoziierte Daten P Klartext produziert Blocke B0 B1 Br

                      httpcsrcnistgovpublicationsnistpubs800-38CSP800-38C_updated-July20_

                      2007pdf

                      To do algorithmus uberarbeiten ubersetzen

                      1 Apply the formatting function to (N A P) to produce the blocks B0 B1 Br

                      2 Set Y0 = CIPHK(B0)

                      3 For i = 1 to r do Yi = CIPHK(Bi oplus Yiminus1)

                      4 Set T = MS BTlen(Yr)

                      5 Apply the counter generation function to generate the counter blocks Ctr0Ctr1 Ctrmwhere m = dPlen128e

                      6 For j = 0 to m do S j = CIPHK(Ctr j)

                      7 Set S = S 1||S 2|| ||S m

                      8 Return C =(P oplus MS BPlen(S )

                      )||(T oplus MS BTlen(S 0)

                      )

                      T stellt einen Prufwert dar

                      3210 TEA-Algorithmus

                      To do uberarbeiten

                      26

                      Nicht in OpenSSL implementiert Universitarer Algorithmus

                      (Quelle httpdewikipediaorgwikiBildTEA_InfoBox_Diagrampng)

                      Man sieht die Feistel Idee allerdings die grunen Quadrate sind Additionen modulo 64 Bit

                      To do erlautern Pfeilspitzen

                      Es gibt ein Extended TEA struktur recht ahnlich aber beim Algorithmus an der Stelle

                      Byte 0 28 minus 1 | 28ii

                      b middot k = (b middot k mod (28 + 1)) mod 28 Es gibt auch eine Inverseb middot K rarr c rarr c middot kprime = b

                      geht nur bei 22 + 1 24 + 1 28 + 1 216 + 1

                      27

                      3211 DES-X

                      In OpenSSL desx KK1K2

                      EncK(m oplus K2) oplus K1 = DES minus X(m)

                      c1 oplus c2 = EncK(m1 oplus K2) oplus EncK(m2 oplus K2)

                      Ist unsymetrisch Hat sich nicht so ganz durchgesetzt

                      33 IDEA International Data Encryption Algorithm

                      IDEA gilt als sehr sicher ist schneller als DES bei Hardwareimplementation tauchte zuerst alsPES auf Unterschied PES und IPES ist die untere XOR-Vertauschung (siehe Wikipedia Skiz-ze) die es im PES nicht gab War nur zur privaten Nutzung frei ansonsten patentiert weshalber nicht so verbreitet war IDEA verschlusselt 64-Bit Eingabe-Blocke in 64-Bit Ausgabe-Blockeund verwendet dabei einen 128-Bit Schlussel Der Algorithmus basiert im wesentlichen auf 8identischen Runden die den Runden einer Feistel-Chiffre ahnlich sind und einer abschlieszligendenTransformation der Ausgabe In jeder Runde werden 6 16-Bit Subschlussel in der Ausgaben-Transformation weitere 4 davon verwendet Samtliche Subschlussel werden aus dem Original-schlussel berechnet Die 64 Bit Eingabe jeder Runde werden dabei als 4 16-Bit-Blocke verar-beitet Der Algorithmus benutzt verschiedene algebraische Operationen

                      bull Polynomaddition mod 2 XOR (blau-verbraucht wenig Strom)

                      bull Addition mod 216 ADD (grun-verbraucht wenig Strom etwas Zeit - Uberlauf wirdignoriert)

                      bull Multiplikation mod 216︸︷︷︸prim

                      +1 MULT (rot-viel Strom)

                      Aus der Wikipedia (unter GNU Free Documentation License)

                      Der IDEA-Algorithmus (International Data Encryption Algorithm) wurde 1990 als ein Ge-meinschaftsprojekt zwischen der ETH Zurich von James L Massey und Xueija Lai und derAscom Systec AG entwickelt IDEA ist ein symmetrischer Algorithmus und gehort zu denBlockchiffren Der Algorithmus benutzt einen 128-Bit langen Schlussel (DES nur 64 Bit da-von sind 8 Bits fur den Paritats-Check vorgesehen so dass die eigentliche Schlussellange nur56 Bits betragt)

                      Bei der Verschlusselung wird der Klartext in 64 Bit groszlige Blocke unterteilt und derSchlussel in Teilstucke zu je 16 Bit zerlegt Die Verschlusselung geschieht durch Kombina-

                      28

                      tion der logischen Operation XOR der Addition modulo 216 und der Multiplikation modulo216+1 Die Kombination dieser drei Operationen aus unterschiedlichen algebraischen Gruppensoll ein hohes Maszlig an Sicherheit gewahrleisten

                      Das Verfahren ist dazu optimiert Angriffen durch differentielle Kryptoanalyse zu wider-stehen

                      Es gibt bei IDEA leider eine ganze Reihe von schwachen Schlusseln die sich in zweiKlassen einteilen lassen Die erste Klasse umfasst 232 schwache Schlussel Sie sind insofernschwach als man sie mit gewahltem Klartext nachweisen kann Danach ist ein Brute ForceAngriff selbst fur Privatpersonen mit alteren PCs machbar Die zweite Klasse umfasst sogar265 schwache Schlussel Bei diesen Schlusseln kann man mit nur 20 gewahlten Klartexten72 Bit des Schlussels ermitteln Die restlichen 56 Bit muss man mit Brute Force ermittelnAllerdings liegt die Wahrscheinlichkeit dafur einen schwachen Schlussel zu erwischen bei einszu 263 oder eins zu 9 Trillionen

                      Weil die Ascom Systec AG an der Entwicklung des Algorithmus beteiligt war halt siedie Patente fur IDEA In Europa verfallt der Patentschutz am 16052011 In den USA wirdder Algorithmus bereits ein Jahr fruher kostenlos nutzbar sein Da das Patent in der Schweizerteilt wurde greift das Patent auch in Deutschland unabhangig davon dass in DeutschlandSoftwarepatente nicht legal sind

                      Der Algorithmus beruht wesentlich darauf dass 216 + 1 eine Primzahl ist Deshalb lasst sichIDEA nicht auf andere Blocklaengen adaptieren

                      331 Schlusselauswahl

                      Aus den 128 Bit des ursprunglichen Schlussels werden in insgesamt 52 16-Bit Teilschlussel er-zeugt Dabei werden aus dem aktuellen Schlusselwert (initial der ursprungliche 128-Bit Schlussel)8 der Teilschlussel durch aufteilen gewonnen Dann wird der aktuelle Schlussel subsequent um25 Bit nach links rotiert und so je ein neuer aktueller Schlussel erzeugt der wieder zu Teil-schlusseln aufgeteilt wird - solange bis alle Teilschlussel belegt sind Es werden 6 middot 16-Bit ineiner Runde verbraucht in 8 Runden also 48 Teilschlussel Hinzu kommen 4 Teilschlussel dienach der letzten Runde fur weitere Operation verwendet werden Insgesamt werden also 52Teilschlussel mit je 16-Bit aus 128-Bit Rohschlussel erzeugt und auch verbraucht rarr 832-BitSchlusselmaterial

                      332 Funktionsweise

                      In jeder Runde r finden folgende Transformationen statt

                      1 X1 = X1 MULT Kr1 X4 = X4 MULT Kr

                      4 X2 = X2 ADD Kr2 X3 = X3 ADD Kr

                      3

                      2 t0 = Kr5 MULT (X1 XOR X3) t1 = Kr

                      6 MULT (t0 ADD (X2 XOR X4)) t2 = t0 ADD t1

                      29

                      3 X1 = X1 XOR t1 X4 = X4 XOR t2 a = X2 XOR t2 X2 = X3 XOR t1 X3 = a

                      Dabei sind X1 bis Xi die 16-Bit Blocke die aus der 64 Bit Eingabe gewonnen wurden Kri ist der

                      Teilschlussel mit der Nummer r middot 6 + i Die abschlieszligende Transformation ergibt sich wie folgtY1 = X1 MULT K9

                      1 Y4 = X4 MULT K94 Y2 = X3 ADD K9

                      2 Y3 = X2 ADD K93

                      Dabei sind die Yi 4 16-Bit Worter die die Ausgabe darstellen

                      (Quelle httpdewikipediaorgwikiBildInternational_Data_Encryption_Algorithm_InfoBox_Diagrampng)

                      bull In OpenSSL konnen IDEA Verschlusselungen mit folgenden Befehlen aufgerufen wer-den

                      ndash -ideandash -idea-cbcndash -idea-cfbndash -idea-ecbndash -idea-ofb

                      333 Pseudocode-multiplikation

                      To do als Pseudocode machen

                      30

                      if(a==0)return ((216 +1)-b) mod 216

                      if(a==0)return ((216 + 1)-a) mod 216

                      if(a middot b) mod 216 gt (a middot b) div 216 return (a middot b) mod 216 minus (a middot b) div 216

                      if(a middot b) mod 216 le (a middot b) div 216 return (216 + 1) + (a middot b) mod 216 minus (a middot b) div 216

                      wenn a==0 rArr a = 216 equiv minus1 mod 216

                      334 Schwachstellen

                      Bei schlechter implementation konnen die XOR-Berechnungen am Stromverbrauch erkanntwerden Es konnen Ruckschlusse auf bestimmte Werte (insbesondere Null) gemacht werdenNach 218 Testrechnungen kann der Klartext bestimmt werdenSolche Angriffe nennt man Seiten Kanal Atacken in diesem Fall ist der Stromverbrauch derSeitenkanal (Zeitverbrauch spielt beim Idea keine Rolle)Bei guter Implementation gilt aber der Algorithmus als sicher

                      To do Skizze Stromverbrauch

                      34 Blowfish

                      Blowfish ist eine sehr schnelle 64-Bit 16-Runden Block-Chiffre die 1993 von Bruce Schneiererfunden wurde Die Lange der Schlussel ist variabel zwischen 32 und 448 Bit Als Teilschlusselwerden aus dem Ausgangsschlussel eine P-Box mit 18 mal 32 Bit und 4 S-Boxen mit 256 mal32 Bit generiert (P1 P18) (S 1 S 4)

                      Blowfisch Algorithmus von Bruc Schreier ist vollig Patentfrei dies hat sehr zu seiner Verbrei-tung beigetragen

                      31

                      F

                      F

                      14 weitere Runden

                      (Quelle httpdewikipediaorgwikiBildBlowfish_structure_(de)svg)

                      P1 P18 die XOR auf den Klartext kommen

                      Schlussel-P1 P18 und

                      -S-Boxen

                      32

                      (Quelle httpenwikipediaorgwikiImageBlowfishFFunctionsvg)

                      S ist 256 32 Bit WerterArr 4 middot 256 middot 32 Werte rArr kann man sich nicht merken also wird P1 P18 S 1 S 4 werdenals Hexadezimalwerte von π gewahlt

                      (K)n oplus (P1 P18)

                      Der so initialisierte Algorithmus wird auf den Klartext 0 0︸ ︷︷ ︸64

                      angewendet Das Ergebnis ersetzt

                      (P1 P2) Der so initialisierte Algorithmus wird auf den Klartext 0 0︸ ︷︷ ︸

                      64

                      angewendet Das Ergebnis

                      ersetzt (Pi Pi+1) Der so initialisierte Algorithmus wird auf den Klartext 0 0︸ ︷︷ ︸64

                      angewendet

                      Das Ergebnis ersetzt (S 1 S 2)

                      Auf kosten eines sehr aufwendigen Schlusselmanagment wird ein schneller Algorithmus er-reicht Fur Prozessoren mit wenig Speicher unpraktisch

                      341 Initialisierung

                      Teilschlusselmanagement Sehr viele Teilschlussel werden aus wenig Schlusselmaterial gene-riert

                      1 P und S werden mit einer Hexadezimal-Expansion von Pi initialisiert

                      2 Der Schlussel als Sequenz von 32-Bit-Werten wird mittels XOR auf die P-Box addiertwobei er eventuell ldquowiederholtrdquo wird um die ganze Lange der Box abzudecken P1 oplus K1P2 oplus K2 P18 oplus K18

                      3 Sowohl die P-Box als auch die S-Boxen werden verschlusselt

                      33

                      bull Verschlussle mit Blowfish den Nullstring rarr 64-Bit Ausgabe = 2 32-Bit = neueP1 P2

                      bull Verschlussle mit Blowfish (Pi Pi+1) die Ausgabe verwende als (Pi+2 Pi+3) Wieder-hole diesen Schritt fur i von 1 bis zum Ende der P-Boxbull Anschlieszligend S 10 S 11 rarr S 12 S 13 Im gleichen Verfahren wie bei der P-Box

                      werden die S-Boxen verschlusselt

                      Insgesamt ist so ein langer Vorlauf notig bevor die eigentliche Verschlusselung der Daten be-ginnt

                      342 Verschlusselung

                      In jeder Runde r (insgesamt 16 Runden) wird folgendes Verfahren angewendet

                      1 Der 64-Bit Eingabeblock wird in zwei 32-Bit-Halften L und R zerlegt

                      2 L = L oplus Pr R = R oplus f (L)f (L) ist dabei folgendermaszligen charakterisiert Zunachst wird das Argument L als Konka-tenation von 4 8-Bit Vektoren a b c und d aufgefasst die als naturliche Zahlen zwischen0 und 255 verwendet werden

                      f (a b c d) = ((S 1a + S 2b mod 232 oplus S 3c) + S 4d mod 232

                      3 L und R werden vertauscht konkateniert und als Eingabe fur die nachste Runde verwen-det

                      Nach der letzten Runde wird noch R = R oplus P17 und L = L oplus P18 durchgefuhrt

                      Aus der Wikipedia (unter GNU Free Documentation License)

                      Blowfish ist ein sehr schneller und nicht patentierter Algorithmus der besonders auf 32-Bit-Prozessoren eine exzellente Performance bietet Ein weiterer Vorteil ist seine variableSchlussellange von 32 bis zu 448 Bit Die Blockgroszlige betragt 64 Bit

                      bull In OpenSSL konnen Blowfish Verschlusselungen mit folgenden Befehlen aufgerufen wer-den

                      ndash -bfndash -bf-cbcndash -bf-cfbndash -bf-ecbndash -bf-ofbndash -blowfish

                      34

                      35 AES Advanced Encryption Standard

                      351 Wiederholung-Byteoperation

                      Wir hatten folgende Byteoperationen kennengelernt

                      bull Multiplikation mod 256 bzw mod 257 ohne 0

                      bull Addition mod 256

                      bull XOR-Addition (oplus)

                      Die Operationen werden in der dementsprechenden Basisdarstellung modulo 256 durchgefuhrt

                      352 Uberblick

                      AES wurde im Standard FIPS 197 festgeschrieben

                      Aus der Wikipedia (unter GNU Free Documentation License)

                      AES ist eine Block-Chiffre dessen Blocklange und Schlussellange unabhangig voneinanderdie Werte 128 192 oder 256 Bit erhalten kann Jeder Block wird zunachst in eine zweidimen-sionale Tabelle mit vier Zeilen geschrieben dessen Zellen ein Byte groszlig sind Die Anzahl derSpalten variiert somit je nach Blockgroszlige von 4 (128 Bit) bis 8 (256 Bit) Zum Beispiel fur 16Byte werden die Bytes wie folgt eingetragen

                      1 5 9 132 6 10 143 7 11 154 8 12 16

                      Jeder Block wird nun nacheinander bestimmten Transformationen unterzogen Aber anstattjeden Block einmal mit dem Schlussel zu verschlusseln wendet AES verschiedene Teile desSchlussels nacheinander auf den Klartext-Block an Die Anzahl dieser Runden (r) variiertund ist von Schlussellange (k) und Blockgroszlige (b) abhangig Je nach Blocklange b undSchlussellange k wird die Anzahl der Runden bestimmt (10 12 oder 14)

                      r b=128 b=192 b=256k=128 10 12 14k=192 12 12 14k=256 14 14 14

                      S-BoxenEine Substitutionsbox (S-Box) dient als Basis fur eine monoalphabetische Verschlusselung

                      35

                      Sie ist meist als Array implementiert und gibt an welches Byte wie getauscht wird DieS-Box in AES basiert auf einem mathematischen Zusammenhang und ist somit fest imAlgorithmus implementiert Doch dies ist kein Schwachpunkt da die S-Box lediglich zur Ver-mischung der Bytes in Kombination mit weiteren Operationen und dem Schlussel genutzt wird

                      Ablauf

                      bull Schlusselexpansion (nach Fips-197 S23 Kapitel 52)

                      Der Schlussel rsquokeyrsquo wird auf den Anfang des expandierten Schlussels rsquowrsquo ubernommen(i lt Nk) Danach berechnet sich w[i] wie folgt

                      w[i] =

                      w[i minus 1] i mod Nk 0S ubWord(RotWord(w[i minus 1])) oplus Rcon i mod Nk = 0S ubWord(w[i minus 1]) Nk gt 6i (mod N)k = 4

                      (1)

                      w[i] = w[i] oplus w[i minus Nk] (2)

                      Der zugehorige Quelltext (Fips-197 entnommen)

                      KeyExpansion(byte key[4Nk] word w[Nb(Nr+1)] Nk)

                      begin

                      word temp

                      i = 0

                      while (i lt Nk)

                      w[i] = word(key[4i] key[4i+1] key[4i+2] key[4i+3])

                      i = i+1

                      end while

                      i = Nk

                      while (i lt Nb (Nr+1)]

                      temp = w[i-1]

                      if (i mod Nk = 0)

                      temp = SubWord(RotWord(temp)) xor Rcon[iNk]

                      else if (Nk gt 6 and i mod Nk = 4)

                      temp = SubWord(temp)

                      end if

                      w[i] = w[i-Nk] xor temp

                      i = i + 1

                      end while

                      end

                      36

                      Fur Beispiele siehe Fips-197 Appendix A1

                      bull Vorrunde

                      ndash KeyAddition (XOR-des Rundenschlussels)

                      bull Verschlusselungsrunden

                      ndash Substitution - Jedes Byte b wird ersetzt durch bprime = 1b wie bei Polynommultiplikati-

                      on Weiter wird jedes Byte als ein 8-dimensionaler Vektor aufgefasst und folgendeOperation angewendet

                      b1b2

                      b8

                      =

                      1 0 0 0 1 1 1 11 1 0 0 0 1 1 11 1 1 0 0 0 1 11 1 1 1 0 0 0 11 1 1 1 1 0 0 00 1 1 1 1 1 0 00 0 1 1 1 1 0 00 0 0 1 1 1 1 0

                      middot

                      b1b2

                      b8

                      +

                      c1c2

                      c8

                      ndash ShiftRow - Erste Zeil wird nicht verschoben die zweite Zeil um eins die dritteZeile um zwei die vierte um drei (siehe Wikipedia)

                      ndash MixColumn - Zu jeder Spalten

                      b1b2b3b4

                      des Blocks wird folgende Polynommultiplika-

                      tion durchgefuhrt

                      (b1x3 + b2x3 + b3x + b4) middot (03X3 + 04X2 + 01X + 02) mod (X4 + 1)

                      und die Koeffizienten in gleicher Weise wieder in die jeweilige Spalte eingetragenWobei (X4 + 1) das Inverse (0BX3 + 0DX2 + 09X + DE) hat

                      ndash KeyAddition

                      bull Schlussrunde

                      ndash Substitutionndash ShiftRowndash KeyAddition

                      Fur die Entschlusselung gehe die oben angegebene Reihenfolge ruckwarts durch Beachtedabei dass ShiftRow und Subst vertauschbar sind Bei ShiftRow wird in umgekehrter Weiseverschoben Ebenso sind KeyAdd und MultColumn vertauschbar wenn der Rundenschlusselmodifiziert wird (B(X) lowast (S (X) oplus K(X)) = S (X) lowast B(X) oplus B(X) lowast K(X) also ist der modifiziertSchlussel B(X) lowast K(X)) Die Entschlusselung entspricht also der Verschlusselung mit modifi-zierten Schlusseln

                      37

                      353 mathematische Grundlagen

                      Speziell der Schritt Mix-Column beinhaltet einige interessante mathematische Uberlegungen Ersoll zu einer moglichst effektiven Vermischung der 32 Bit in jeder Spalte fuhren die die Suchevon dem unverschlusselten Text ahnlichen Mustern im verschlusselten Text erschwert Dabeiwerden arithmetische Operationen aus zwei algebraischen Gruppen angewandt

                      1 Die Gruppe der Bytes F82 Jedes Byte b7b6b0 wird als ein Polynom b7 middot X7 + b6 middot X6 +

                      b0 middot X0 angesehen Diese Polynome konnen addiert und multipliziert werden Damitdabei der Werteraum des Byte nicht verlassen wird finden diese Operationen modulom(X) = X8 + X4 + X3 + X +1 statt m ist dabei irreduzibel es gilt also ggT (b(X)m(X)) = 1fur jedes Byte b Somit ist F2[X]m(X) ein Korper und die Multiplikation ist abgeschlos-sen Es gilt fur jedes Paar von Bytes b c eindeutig b middot c = d rarr dc = b Multiplikationenkonnen also eindeutig ruckgangig gemacht werden so dass eine Entschlusselung moglichistBei Zahlen die groszliger als m(X) sind werden also durch die modulo Operation die Koeffi-zienten von x4 x3 x1 x0 verandertBeispiel in Magma

                      Q = IntegerRing(2)

                      Pltxgt = PolynomialRing(Q)

                      f=xˆ7+1

                      g=xˆ3+xˆ2+x+1

                      fg

                      fg mod(xˆ8 +xˆ4+xˆ3+x+1)

                      IsPrime(xˆ8 +xˆ4+xˆ3+x+1)

                      Ausgabe

                      xˆ10 + xˆ9 + xˆ8 + xˆ7 + xˆ3 + xˆ2 + x + 1

                      xˆ7 + xˆ6 + xˆ3 + xˆ2 + x

                      true

                      2 Die Gruppe der Worter F4256 Die 4 Bytes einer Spalte w3w2w1w0 werden wieder als Po-

                      lynom aufgefasst w3 middot X3 + w2 middot X2 + w1 middot X + w0 Diese konnen wieder multipliziertund addiert werden wobei die arithmetischen Operationen auf den jeweiligen Bytes in F8

                      2stattfinden Die Operationen in F4

                      256 werden modulo M(X) = X4 + 1 ausgefuhrt M(X) istzwar nicht irreduzibel aber da der Algorithmus nur eine beschrankte Gruppe von Operan-den verwendet bleiben auch hier alle Operationen invertierbar

                      Mix-Column multipliziert (in F4256) nun jede Spalte mit c(X) = 3 middot X3 + X2 + X + 2 Die so

                      beschriebene lineare Funktion erreicht beweisbar eine groszlige Diffusion der Eingabe

                      38

                      bull In OpenSSL konnen AES Verschlusselungen mit folgenden Befehlen aufgerufen werden

                      ndash -aes-128-cbcndash -aes-128-cfbndash -aes-128-ecbndash -aes-128-ofbndash -aes-192-cbcndash -aes-192-cfbndash -aes-192-ecbndash -aes-192-ofbndash -aes-256-cbcndash -aes-256-cfbndash -aes-256-ecbndash -aes-256-ofbndash -aes128ndash -aes192ndash -aes256

                      36 RC4 Ronrsquos Cipher 4

                      Geheimes Chiffreverfahren mit Strom-Chiffre von Ron Rivest 1987 Entstehungsjahr 1994 imNetz aufgetaucht 1999 tauchte im Internet ein Draft ARCFOUR (ARC4) auf der die gleichenErgebnisse lieferte

                      Byte orientiert zwei Bytes m k dann wird berechnetm oplus k = cDer Algorithmus basiert auf S-Boxen (Permutationen)

                      mdashmdashSkizze Seite 2b ganz oben

                      PRG (Pseudo Random Generator)mdashmdashweitere Skizze

                      Initialisierung K = L Bytes als Schlussel s[i] = i (identische Permutation)L = 1255 fur RC4 mit 40-Bit L = 5 mit 64-Bit L = 8 mit 128-Bit L = 16j = 0 fur i = 0255rarr j = ( j + s[i] + K[ j mod L]) mod 256

                      Problem K-Masterkeyrarr salted key Initialwert (frei bekannt) HashInitial(K) = Kaktuell rarr RC4

                      39

                      Anfangsstucke von PRG RC4 sind nicht rdquorichtig zufalligldquo verraten viel uber KaktuellRegel fur RC4 Die ersten 256-Byte wegschmeiszligen

                      Aus der Wikipedia (unter GNU Free Documentation License)

                      RC4 (Ronrsquos Cipher 4) ist ein fur Software optimierter Stromchiffrierer welcher zur Ver-schlusselung von Daten eingesetzt wird Er wurde 1987 von Ronald L Rivest fur RSA DataSecurity Inc (heute RSA Security) entwickelt

                      Der Algorithmus war sieben Jahre lang geheim (ldquosecurity by obscurityrdquo) bis 1994 derQuellcode anonym veroffentlicht wurde

                      RC4 hat im Gegensatz zu DES eine variable Schlussellange Die Schlussellange kann biszu 2048 Bit betragen RC4 verschlusselt immer ein Byte auf einmal

                      Er besteht aus einer so genannten S-Box die sich wahrend der Verschlusselung fortlau-fend andert Diese wird durch ein Passwort initialisiert das fur jede Verschlusselung einmaligsein muss Jedes Klartextzeichen wird XOR mit einem bestimmten vom Paszligwort abhangi-gen Zeichen aus der S-BOX verknupft Theoretisch sind somit ca 2 hoch 1700 verschiedeneZustande moglich

                      Der Algorithmus ist sehr kompakt und funf- bis zehnmal schneller als der weitverbreite-te DES Deshalb findet der RC4 Algorithmus in einigen Echtzeit-Systemen Anwendung wiebeispielsweise Mobilfunk (Cellular Digital Packet Data) SSH (Secure Shell) WLAN (Wire-less LAN) oder den Dateiverschlusselungs-Programmen SecurePC und Cryptext Die Verar-beitungsgeschwindigkeit des DES ist jedoch selbst in kleinsten Mikrokontrollern meist ausrei-chend Der Schlussel beim DES und anderen Blockchiffren wie dem AES (CBC-Mode) kannim Gegensatz zum RC4 auch mehrfach verwendet werden Vergleichbare Stromchiffren wieSEAL sind vergleichbar schnell und gelten als sicher

                      Aus der Wikipedia (unter GNU Free Documentation License)

                      ubersetzt aus dem Englischen nach httpenwikipediaorgwikiRC4RC4 (oder ARCFOUR) ist die am weitesten verbreitete Stromchiffre und wird in vielen be-kannten Protokollen beispielsweise SSL oder WEP verwendet Trotzdem entspricht RC4 nichtmehr dem heutigen Sicherheitsstandard und manche Verwendungsweisen von RC4 fuhren zusehr unsicheren Kryptosystemen (zB WEP) Daher wird es nicht fur die Verwendung in neuenSystemen empfohlen Allerdings gibt es auch RC4-basierte Systeme die sicher genug fur denpraktischen Gebrauch sind

                      361 Geschichte

                      Aus der Wikipedia (unter GNU Free Documentation License)

                      ubersetzt aus dem Englischen nach httpenwikipediaorgwikiRC4RC4 wurde 1987 von Ron Rivest von RSA Security erfunden Offiziell bedeutet die Abkurzung

                      40

                      ldquoRivest Cipher 4rdquo alternativ wird sie aber als ldquoRonrsquos Coderdquo verstanden (s auch die anderenRC-Algorithmen) Zunachst war RC4 ein Betriebsgeheimnis jedoch wurde im September1994 eine Beschreibung anonym auf der ldquoCypherpunksrdquo Mailingiste gepostet Es wurde baldin die scicrypt newsgroup weitergepostet und von dort auf viele Internet-Seiten verbreitetNachdem der Algorithmus nun bekannt ist ist er kein Betriebsgeheimnis mehr Der NameldquoRC4rdquo unterliegt jedoch weiterhin dem Markenschutz Zur Zeit sieht es so aus als seien ldquoinof-fiziellerdquo Implementationen zwar legal konnen aber nicht den Namen ldquoRC4rdquo verwenden Umdieses Problem zu umgehen wird RC4 oft als ldquoARCFOURrdquo bezeichnet RC4 wird inzwischenin einigen weit verbreiteten Verschlusselungsprotokollen und Standards unter anderem WEPund WPA fur WLAN Karten und SSL verwendet

                      362 Beschreibung

                      Aus der Wikipedia (unter GNU Free Documentation License)

                      ubersetzt aus dem Englischen nach httpenwikipediaorgwikiRC4RC4 generiert einen pseudo-zufalligen Bitstrom (einen ldquoSchlusselstromrdquo) der bei der Ver-schlusselung mit dem Klartext mittels XOR verknupft wird Die Entschlusselung funktioniertgenauso Um den Schlusselstrom zu generieren benutzt die Chiffre einen internen Zustand deraus zwei Teilen besteht

                      1 eine Permutation aller 256 moglichen Bytes (wird im Folgenden als S bezeichnet)

                      2 zwei 8-Bit Index-Zeiger (mit i und j bezeichnet)

                      Die Permutation wird mit einem Schlussel von variabler Lange ublicherweise zwischen 40und 256 Bit initialisiert wobei der Schlusselerzeugungs-Algorithmus verwendet wird An-schlieszligend wird der Bit Strom durch den Pseudo-Zufalls-Algorithmus generiert

                      363 Der Pseudo-Zufalls-Algorithmus

                      Aus der Wikipedia (unter GNU Free Documentation License)

                      ubersetzt aus dem Englischen nach httpenwikipediaorgwikiRC4In jeder Iteration wird der Zustand verandert und ein Byte des Schlusselstroms ausgegebenDabei wird i inkrementiert der Wert von S an der Stelle i auf j addiert S [i] und S [ j] vertauschtund der Wert von S an der Stelle S [i]+S [ j] mod 256 ausgegeben Jeder Wert von S wird dabeimindestens einmal alle 256 Iterationen vertauscht In Pseudocode lasst sich der Algorithmusfolgendermaszligen darstellen

                      i = 0

                      j = 0

                      41

                      while GeneratingOutput

                      i = (i + 1) mod 256

                      j = (j + S[i]) mod 256

                      swap (S[i] S[j])

                      output (S[(S[i] + S[j]) mod 256])

                      (Wobei i offentlich ist und j geheim ist)

                      i j

                      0 1 2 S[i]+S[j] i j 253 254 255

                      S

                      S[i] S[j]

                      S[i]+S[j]K

                      (Quelle httpdewikipediaorgwikiBildRC4svg)

                      364 Der Schlusselerzeugungs-Algorithmus

                      Aus der Wikipedia (unter GNU Free Documentation License)

                      ubersetzt aus dem Englischen nach httpenwikipediaorgwikiRC4Der Schlusselerzeugungs-Algorithmus wird benutzt um die Permutation in S zu initialisierenl wird als die Zahl der Bytes des Schlussels definiert und kann zwischen 1 und 255 liegenublicherweise liegt l zwischen 5 und 32 so dass eine Schlussellange von 40 bis 128 Bit zu-stande kommt Zunachst wird S mit der Identitatspermutation initialisiert Anschlieszligend wirdS in 256 Iterationen mit einem Algorithmus der dem Pseudo-Zufalls-Algorithmus ahnelt aberzusatzlich die Schlusselbits hineinmischt weiterverarbeitet Der folgende Pseudocode drucktdies aus

                      for i from 0 to 255

                      S[i] = i

                      j = 0

                      for i from 0 to 255

                      42

                      j = (j + S[i] + key[i mod l]) mod 256

                      swap(S[i]S[j])

                      365 Implementation

                      Aus der Wikipedia (unter GNU Free Documentation License)

                      ubersetzt aus dem Englischen nach httpenwikipediaorgwikiRC4Viele Stromchiffren basieren auf ldquolinear feedback shift registersrdquo und sind damit sehr effizientin Hardware aber weniger effizient in Software implementierbar RC4 hat dieses Manko nichtund kommt zudem ausschlieszliglich mit 8-Bit Operationen aus Damit ist RC4 ideal fur Software-Implementationen

                      366 Sicherheit

                      Aus der Wikipedia (unter GNU Free Documentation License)

                      ubersetzt aus dem Englischen nach httpenwikipediaorgwikiRC4RC4 verfehlt die ublichen Standards fur sichere Chiffren an mehreren Stellen und wird somitnicht zur Verwendung in neuen Anwendungen empfohlen Der von RC4 generierte Schlussel-strom tendiert dazu bestimmte Sequenzen von Bytes haufiger zu enthalten als andere undist somit nicht wirklich zufallig Der beste Angriff der auf diesem Sachverhalt beruht wur-de von Fluhrer und McGrew entdeckt und kann aus einem Gigabyte verschlusseltem Textden Schlusselstrom berechnen Zudem verwendet RC4 keine ldquononcerdquo einen fur jeden Klar-text neu generierten Zusatzschlussel Eine solche ldquononcerdquo wird im allgemeinen als zentralesSicherheitskriterium betrachtet da so gewahrleistet ist dass eine zweimal nacheinander ver-schlusselte Nachricht zwei verschiedene verschluesselte Texte erzeugt Naturlich kann einesolche ldquononcerdquo im Nachhinein aufgesetzt werden indem als RC4-Schlussel nicht der eigentli-che Benutzerschlussel sondern beispielsweise ein Hashwert des Schlussels mit einer nonce ver-wendet wird Die einfachere Methode den Schlussel nur mit der nonce zu konkatenieren dievon einigen Anwendungen genutzt wird fuhrt aufgrund des schwachen Schlusselerzeugungs-Algorithmus wieder zu neuen Problemen

                      To do anmerkungen zu k=1-Angriffsmoglichkeiten

                      43

                      367 Fluhrer Mantin und Shamir Angriff

                      Aus der Wikipedia (unter GNU Free Documentation License)

                      ubersetzt aus dem Englischen nach httpenwikipediaorgwikiRC42001 wurde eine erstaunliche Entdeckung gemacht Die statistische Verteilung der ersten paarBytes des Schlusselstroms ist uber alle RC4-Schlussel stark nicht-zufallig und enthalt Infor-mationen uber den Schlussel selbst Falls die nonce lediglich mit dem Schlussel konkateniertwurde (oder gar keine nonce verwendet wurde) kann der Schlussel durch die Analyse einergroszligen Zahl verschlusselter Nachrichten herausgefunden werden Mit Hilfe dieses Sachver-haltes und einiger damit zusammenhangender Effekte wurde dann die WEP-Verschlusselung(ldquowireless equivalent privacyrdquo) die in 80211 WLAN-Netzen verwendet wird gebrochen Diesfuhrte zu einer Suche nach einem Ersatz fur WEP und letztlich zu den Bemuhungen um 80211isowie zu WPA

                      Der geschilderte Angriff kann naturlich umgangen werden wenn die ersten (ca 256) Bytes desSchlusselstroms verworfen werden

                      bull In OpenSSL konnen RC4 Verschlusselungen mit folgenden Befehlen aufgerufen werden

                      ndash -rc4ndash -rc4-40

                      37 RC5 Ronrsquos Cipher 5

                      Die zentrale Neuerung des RC5-Algorithmus sind datenabhangige Rotationen bei denen einZwischenergebnis um eine Zahl von Bytes rotiert wird die weder fest vorgegeben noch vomSchlussel bestimmt sondern aus einem Teil des Klartextes berechnet ist Diese Operation wirdfolgendermaszligen notiert a ltltlt b bedeutet dass a um b Bits nach links rotiert wird Ein weitererinteressanter Aspekt ist die universelle Parametrisierbarkeit des Algorithmus Sowohl die Langeder Worter w als auch die Zahl der Runden r und die Lange des Schlussels b sind wahlbar sodass der Algorithmus offen ist fur zukunftige Bedurfnisse die weitere Operation + wird nun alsAddition modulo 2w definiert In openssl ist RC5 mit den Parameters w = 32 r = 12 b = 16 im-plementiert Samtliche Algorithmen gehen im folgenden von einer little-endian Byte-Anordnungaus Der Algorithmus besteht aus einem Verschlusselungs- und einem Schlusselexpansions-Teil

                      371 Verschlusselung

                      Gegeben ein auf t = 2(r + 1) Worter expandierter Schlussel S und ein aus zwei Wortern A undB bestehender Eingabeblock gibt folgender Pseudocode den Verschlusselungs-Algorithmus an

                      44

                      A = A + S[0]

                      b = B + S[1]

                      for i = 1 to r do

                      A = ((A XOR B) ltltlt B) + S[2i]

                      B = ((B XOR A) ltltlt A) + S[2i + 1]

                      Die Entschlusselung lauft dementsprechend folgendermaszligen ab

                      for i = r downto 1 do

                      B = ((B - S[2i + 1]) gtgtgt A) XOR A

                      A = ((A - S[2i]) gtgtgt B) XOR B

                      A = A - S[0]

                      B = B - S[1]

                      372 Schlusselexpansion

                      Zunachst wird S mit einer Kombination aus e und ϕ (dem goldenen Schnitt) initialisiert und derSchlussel in ein Array L kopiert das wortweise indiziert wird Anschlieszligend wird mit folgendemAlgorithmus der Schlussel in S hinein gemischt

                      i = j = 0

                      A = B = 0

                      do 3 max(t 8bw) times

                      A = S[i] = (S[i] + A + B) ltltlt 3

                      B = L[j] = (L[j] + A + B) ltltlt (A + B)

                      i = (i+1) mod t

                      j = (j+1) mod (8bw)

                      38 GOST 28147-89 Gosudarstvennyi Standard Soyuza SSR nicht inOpenSSL

                      GOST ist das russische Normungsinstitut vergleichbar mit DIN oder ANSI

                      (siehe auch httpenwikipediaorgwikiGOST_(block_cipher))

                      Gost-Chiffre ist eine relativ simple Feistel-Chiffre auf 64 Bit mit 32 Runden 256 Bit Schlussellangeund 8 S-Boxen von zusammen 512 Bit die - da sie geheim gehalten werden konnen - alsSchlusselerweiterung gelten konnen Die Rundenfunktion besteht aus der Addition eines 32-Bit-Substrings des Schlussels der Anwendung der S-Boxen (parallel da jede S-Box 4 Bit alsEin- und Ausgabe hat) und einer 11-Bit-Rotation Die Sicherheit des Algorithmus beruht auf

                      45

                      der Verwendung sehr langer Schlussel geheimer S-Boxen und der gegenuber DES verdoppeltenRundenzahl In jeder einzelnen Runde wird jedoch ein geringerer Durchmischungseffekt erreichtals bei DES-Runden

                      Geheimer Algorithmus S-Boxen auch geheim

                      (Quelle httpenwikipediaorgwikiImageGOSTDiagrampng)

                      46

                      Feistel Chiffre

                      Addition Substitution Rotation

                      Die S-Boxen sind Gruppenschlussel die extra zugewiesen werden16 4 Bit Werte werden Permutiert 32 RundenSchlusselmaterial 32 die 256 Bit werden jeweils in 8 32 Bit Unterschlussel eingeteilt wobei dieSchlussel wie folgt verwendet werden1234567123456712345677654321

                      (Dann einmal S-Box einmal rotieren und dann Feistelschritt)

                      Die Sicherheit steckt in den 32 Runden Der Algorithmus wurde bisher nicht geknackt

                      39 FazitWie konnte bei einen Symmetrischen Algorithmus die Sicherheiterhohen

                      (Das ware zB fur eine Interessante Frage fur eine Klausur)

                      bull komplexes Schlusselmanagment

                      bull viele Runden

                      bull komplexe vermischung pro Runde (AES)

                      4 Asymmetrische Verschlusselungsverfahren

                      41 Einfuhrung

                      AliceBob Chris Dave Eve

                      Alice BobkA kA

                      Enck1(M) = C minusrarr M = Deck2

                      Verschlusselungsverfahren kA kB EncDecAus kA kann kB nicht bestimmt werden dann kann kA sogar offentlich sein Ziel ist es dass je-

                      47

                      der verschlusseln kann aber nur einer kann (in realistischer Zeit) entschlusseln Solche Verfah-ren mit offentlichen Schlussel werden auch asymmetrisch genannt Mit groszligen Aufwand kannnaturlich der Schlussel immer noch bestimmt werden Man wahlt einen Text mprime Verschlusseltihn (Enck(mprime) = cprime) und probiert dann solange alle k durch bis man Deck(cprime) = mprime erhalt

                      Das kB kann aber immer bestimmt werden

                      for k_B =00000 to FFFF

                      M_0 C_0 sind gegeben

                      Dec_k_B(C_0) = M_0

                      Wichtig ist nur das dies nicht in rsquovernunftigerrsquo Zeit gemacht werden kann

                      To do text sortieren

                      Klartext minusrarr E(K) ChiffretextKlartext D(Kprime)larrminus ChiffretextE(K p) = c und zu jedem KexistKprime mit D(Kprime c) = p und K wird offentlich gemachtDie Berechnung von Kprime aus K ist schwer Bruteforce ist nicht ausgeschlossen die Bestimmungvon K aus Kprime ist leicht

                      leichtEnckA DeckB (kA kB)minusErzeugung

                      schweraus kA allein kB erzeugen

                      411 Beispiel

                      Bob mochte von Alice verschlusselte Nachrichten lesen Bob uberlegt sich ein asymmetrischesVerfahren wahlt Kprime berechnet K und veroffentlicht KAlice nimmt K berechnet E(K p) = c und sendet c an BobBob berechnet aus c mit Kprime das ursprungliche p

                      42 Geschichte

                      Whitfield Diffie New Directions in Cryptographie Idee wurde auch schon mal von Ralf Merkelveroffentlich Britische Geheimdienst hatt vorher die Idee auch schon mal

                      48

                      Aus der Wikipedia (unter GNU Free Documentation License)

                      Asymmetrische Verfahren sind ein relativ neues Gebiet der Kryptografie Eine wichtige Vorar-beit fur die asymmetrischen Verfahren sind die Arbeiten von Whitfield Diffie Martin Hellmanund Ralph Merkle zum geheimen Schlusselaustausch Anfang der 1970er Jahre Im Sommer1975 veroffentlichten Diffie und Hellman eine Idee zur asymmetrischen Verschlusselung oh-ne jedoch ein genaues Verfahren zu kennen

                      Anfang der 1970er Jahre wurden von Ellis Cocks und Williamson ein dem spateren Ver-fahren von Diffie-Hellman ahnliches asymmetrisches Verfahren entwickelt welches aber inseiner wirtschaftlichen Bedeutung nicht erkannt und aus Geheimhaltungsgrunden nicht (wis-senschaftlich) publiziert und auch nicht zum Patent angemeldet wurde Alle drei waren Mitar-beiter des englischen Government Communications Headquarters

                      Der Durchbruch gelang Ronald L Rivest Adi Shamir und Leonard M Adleman die 1977das RSA-Verfahren entwickelten Es gilt bis heute als sicheres Verfahren und hat auszligerdem dengroszligen Vorteil in beiden Richtungen eingesetzt werden zu konnen

                      43 Einige Theoretische Grundlagen

                      431 Kleiner Fermat (oder kleiner Fermatrsquoscher Satz)

                      Fur beliebige Primzahlen p gilt

                      n(pminus1) = 1 mod p fur alle n isin Z

                      To do Wikipedia verlinken

                      432 Euklidischer Algorithmus

                      To do erganzen Erweiterter Euklidischer Algorithmus fehlerhaft

                      Aus der Wikipedia (unter GNU Free Documentation License)

                      Beschreibung durch PseudocodeIm Folgenden wird der moderne Euklidische Algorithmus sowohl in einer rekursiven als

                      auch einer iterativen Variante beschrieben Dabei sind a und b jeweils die beiden Zahlen derengroszligter gemeinsamer Teiler berechnet werden soll

                      Rekursive Variante

                      49

                      EUCLID(ab)

                      1 wenn b = 0

                      2 dann return a

                      3 sonst return EUCLID(b a mod b)

                      Iterative Variante

                      EUCLID(ab)

                      1 solange b = 0

                      2 r = a mod b

                      3 a = b

                      4 b = r

                      5 return a

                      FunktionsweiseIn jedem Schritt des Algorithmus wird eine Division mit Rest ausgefuhrt riminus1 = qi+1 middot

                      ri + ri+1 0 le ri+1 lt ri Die Division mit Rest hat die Eigenschaft dass ggT(riminus1 ri) =

                      ggT(ri ri+1) giltIm letzten Schritt des Algorithmus rnminus1 = qn+1 middot rn + 0 ist rn+1 = 0 und es gilt deshalb

                      ggT(rnminus1 rn) = ggT(rn 0) = rn

                      Da im ersten Schritt riminus1 = a und ri = b war ist ggT(a b) = rn

                      (Quelle httpdewikipediaorgwikiEuklidischer_Algorithmus)

                      (Denn es gilt ggT(a b) = ggT(b r))

                      Aus der Wikipedia (unter GNU Free Documentation License)

                      Man kann diese Rekursion in folgende Abfolge von Schritten fur den erweiterten euklidi-

                      schen Algorithmus fassen Erhalte rdquoardquo und rdquobrdquo als EingabeSetze rdquok=0rdquo r0 = a r1 = b s0 = 1 und s1 = 0WiederholeErhohe rdquokrdquo um einsBestimme den ganzzahligen Quotienten qk = rkminus1 div rkSetze rk+1 = rkminus1 minus qk middot rk und sk+1 = skminus1 minus qk middot skbis rk+1 = 0 giltGib den Rest rk = ggT(a b) und die Zahl sk mit ggT(a b) equiv sk middot a (mod b) zuruckJeder Schritt enthalt implizit auch einen Multiplikator tk = (rk minus sk middot a) div b wobei diese

                      Division keinen Rest lasst Die Folge (tk)k kann auch explizit bestimmt werden es gelten t0 =

                      0 t1 = 1 und tkminus1 equiv qk middottk+tk+1 Nach dem letzten Schritt ergibt sich nun ggT(a b) = sk middota+tk middotbDer Ubersicht halber werden beim handischen Rechnen auch noch die Hilfsfolgen (ak =

                      rkminus1)k und (bk = rk)k sowie (uk = skminus1)k sowie (vk = tkminus1)k mitgefuhrt

                      50

                      Zur Berechnung des Inversen modulo einer Restklasse benotigt man die tk aber nicht und kannsie ignorieren

                      Aus der Wikipedia (unter GNU Free Documentation License)

                      Rekursive VarianteFur den erweiterten euklidischen Algorithmus existiert auch eine rekursive Variante die

                      durch den folgenden Pseudocode gegeben istab zwei Zahlen fur die der erweiterte euklidische Algorithmus durchgefuhrt wirdrdquoextended euclidrdquo(ab)1 rdquorsquowennrdquorsquo b = 02 rdquorsquodann returnrdquorsquo (a10)3 (drsquosrsquotrsquo)larr rdquoextended euclidrdquo(b a mod b)4 (dst)larr (drsquotrsquosrsquo - floor(ab)trsquo)5 rdquorsquoreturnrdquorsquo (dst)

                      (Quelle httpdewikipediaorgwikiErweiterter_euklidischer_Algorithmus)

                      Wenn n mod m teilerfremd sind dann existiert so ein Exponent f so dass

                      n f equiv 1 mod m

                      ist

                      Wenn m = m1 middotm2 ein Produkt von zwei verschiedenen Primzahlen ist dann ist fur alle n die zum teilerfremd sind

                      n(m1minus1)middot(m2minus1) equiv 1 mod m

                      Denn es ist nm1minus1 equiv 1 mod m1 und nm2minus1 equiv 1 mod m2 Dann ist n(m1minus1)middot(m2minus1) minus 1 durch m1und m2 teilbar Denn nach dem Chinesischen Restsatz gilt n(m1minus1)middot(m2minus1) equiv 1 mod m1 middot m2 undwenn eine Zahl durch m1 middot m2 teilbar ist so auch durch m1 und m2

                      433 Beispiel

                      In Magma

                      p=17 q=23

                      m=(p-1)(q-1)

                      e=19

                      F=IntegerRing(m)

                      51

                      d=(Fe)ˆ(-1)

                      d=IntegerRing()d

                      19315 div 16

                      19315 -374 16

                      n=pq

                      K=IntegerRing(n)

                      N=100

                      C=(KN)ˆ(e) Verschlusseln

                      C

                      Cˆd

                      10019 equiv 349 mod 349

                      349352 equiv 100 mod 391

                      10019middot315 = 100 mod 17

                      10019middot315 = 100 mod 23

                      10019middot315 equiv 100374middot16+1 mod 17 equiv 100 middot (10016)374︸ ︷︷ ︸=1

                      mod 17

                      To do Analog von Mathias kopieren

                      To do Wiederholung einsortieren

                      Wiederholung

                      Nachricht n

                      ne equiv c( mod m)

                      Chiffre c

                      cd equiv (ne)d = ndmiddote = n1+k(pminus1)(qminus1) = n middot (n(pminus1)(qminus1))k︸ ︷︷ ︸=1

                      equiv n middot 1k = n mod m

                      nminusrarr

                      dm cminusrarr

                      em n

                      52

                      aus (em) kann man (dm) nicht leicht bestimmen weil man die Zerlegung m = p middotq nicht kenntWer p q kennt kann aus den einen den anderen Schlussel berechnen Wer de kennt kann pqbestimmen

                      Verschlusselung kann jeder ausfuhren offentlicher Schlussel (em) Entschlusselung bleibt demvorbehalten der das geheime d (oder auch pq) kennt

                      schnelles Potenzieren Ist die Berechung von ne ck ausreichend schnell

                      m 1000 Bit pq-150 Dezimalstellen

                      ne hat sehr sehr viele Dezimalstellen

                      Deshalb berechnet man erst modulo und potenziert dann mit e

                      (n mod m)e (c mod m)d

                      Beispiele n19 = n middot n middot middot n︸ ︷︷ ︸19 Multiplika-tionen

                      oder man rechnet

                      n n2 n4 n8 n16 4 Quadrierungen

                      n16 middot n2 middot n = n19

                      so auch bei n1025 = n n2 n1024 n middot n1024 wo nur 11 Multiplikationen gebraucht werden

                      Pseudocode nex=1

                      repeat

                      if (e = 1 mod 2)x = x middot n(prime mod mprime)

                      n = n2(prime mod mprime)

                      e = ediv2

                      until e==1

                      k = (nprime)0 middot xprime

                      x = k = ne

                      53

                      44 RSA Rivest Shamir Adleman

                      Bei dem Versuch die Idee der Asymmetrischen Kryptografie zu wiederlegen wurde RSA entwi-ckelt

                      RSA beruht auf der Schwierigkeit n = p middotq in seine Primfaktoren zu zerlegen Verschlusseln undEntschlusseln ist Potenzieren modulo n

                      D E = id

                      p = (pe)d mod n

                      p = pemiddotd mod n

                      e middot d = 1 mod (p minus 1) middot (q minus 1)

                      E(e n) ist offentlich und D(d n) geheim Die Bestimmung von e d n aus p q ist leicht GenauerDie Bestimmung von e aus (d n) ist leicht die Bestimmung von d aus (e n) ist schwer weilFaktorisierung n = p middotq (vermutlich) schwierig ist ist Bestimmung von d aus (e n) auch schwerWer p und q aus n berechnen kann kann auch d bestimmen (Euklid)

                      Wer e und d kennt kann p und q bestimmen (dazu waren Erlauterungen in der Vorlesung)

                      441 Funktionsweise des RSA-Verfahrens

                      (nach wwwcryptooldedownloadsCrypToolScript 1 3 04 depdf)Man kann die Einzelschritte zur Durchfuhrung des RSA-Verfahren folgendermaszligen beschrei-ben Schritt 1 bis 3 sind die Schlusselerzeugung Schritt 4 ist die Verschlusselung 5 die Ent-schlusselung

                      1 Wahle zufallig 2 verschiedene Primzahlen p und q und berechne n = p middot q Der Wert nwird als RSA-Modul bezeichnet

                      2 Wahle zufallig e isin 2 n minus 1 so dass gilt e ist teilerfremd zu J(n) = (p minus 1) middot (q minus 1)Zum Beispiel kann man e so wahlen dass gilt max(p q) lt e lt J(n) minus 1 Danach kannman p und q ldquowegwerfenrdquo

                      3 Wahle d isin 1 n minus 1 mit e middot d = 1 mod J(n) dh d ist die multiplikative Inverse zu emodulo J(n) Danach kann man J(n) ldquowegwerfenrdquo

                      bull (n e) ist der offentliche Schlussel Pbull (n d) ist der geheime Schlussel S (es ist nur d geheim zu halten)

                      4 Verschlusselung des Klartextes (bzw seiner Blocke) M isin 1 n minus 1

                      C = E((n e) M) = Me mod n

                      54

                      5 Entschlusselung des Chiffretextes (bzw seiner Blocke) C isin 1 n minus 1

                      M = D((n d) C) = Cd mod n

                      442 Beweis der Funktionsweise

                      (nach wwwcryptooldedownloadsCrypToolScript 1 3 04 depdf)Fur Schlusselpaare (n e) und (n d) die die in den Schritten 1 bis 3 des RSA-Verfahrens festge-legten Eigenschaften besitzen muss fur alle M lt n gelten M equiv (Me)d mod n wobei (Me)d =

                      Memiddotd Das heiszligt der oben angegebene Dechiffrieralgorithmus arbeitet korrekt Wir zeigen das in3 Schritten

                      1 Im ersten Schritt zeigen wir Memiddotd equiv M mod p Dies ergibt sich aus den Voraussetzungenund dem Satz von Fermat Da n = p middot q und J(p middot q) = (p minus 1) middot (q minus 1) und da e undd so gewahlt sind dass e middot d equiv 1 mod J(n) gibt es eine ganze Zahl k so dass gilte middot d = 1 + k middot (p minus 1) middot (q minus 1)

                      Memiddotd equiv M1+kmiddotJ(n) equiv M middot MkmiddotJ(n) equiv M middot Mkmiddot(pminus1)middot(qminus1) mod p

                      equiv M middot (Mpminus1)kmiddot(qminus1) mod p

                      (aufgrund des kleinen Fermat Mpminus1 equiv 1 mod p)

                      equiv M middot (1)kmiddot(qminus1) mod p

                      equiv M mod p

                      Die Voraussetzung fur die Anwendung des kleinen Fermat war dass M und p teilerfremdsind Da das im allgemeinen nicht gilt mussen wir noch betrachten was ist wenn M undp nicht teilerfremd sind da p eine Primzahl ist muss dann notwendigerweise p ein Teilervon M sein Das heiszligt aber

                      M equiv 0 mod p

                      Wenn p die Zahl M teilt so teilt p erst recht Memiddotd Also ist auch

                      Memiddotd equiv 0 mod p

                      Da p sowohl M als auch Memiddotd teilt teilt es auch ihre Differenz (Memiddotd minus M) equiv 0 mod pUnd damit gilt auch in diesem Spezialfall unsere zu beweisende Behauptung

                      2 Vollig analog beweist man Memiddotd equiv M mod q

                      3 Nun fuhren wir die Behauptungen der ersten beiden Schritte zusammen fur n = p middot qum zu zeigen Memiddotd equiv M mod n fur alle M lt n Nach den ersten beiden Schritten gilt(Memiddotd minus M) equiv 0 mod p und (Memiddotd minus M) equiv 0 mod q also teilen p und q jeweils dieselbeZahl z = (Memiddotd minus M) Da p und q verschiedenen Primzahlen sind muss dann auch ihrProdukt diese Zahl z teilen Also gilt

                      (Memiddotd minus M) equiv 0 mod p middot q

                      55

                      oderMemiddotd equiv M mod p middot q

                      oderMemiddotd equiv M mod n

                      45 Schwachen von RSA

                      bull Wenn N Nachrichten aus einer kleinen Menge gewahlt werden ist RSA unsicher

                      for Nprime do (Nprime)e = C1 if C1 = C then N = Nprime

                      bull Wenn N und e zu klein sind ist RSA unsicher dass heiszligt wenn Ne als Zahl kleiner als nist so das nich modulo gekurzt wird so kann man einfach eradicc

                      bull Angriff mit frei gewahlten Chiffretext angenommen man hat Zugriff auf die Verschlusse-lungsmaschine so dass man mit selber vorgebenen Cprime Nprime berechnen kann (Cprime minusrarr Nprime)

                      Re = S mod n S d = R mod n Cprime = S middotC

                      (Cprime)d = S d middotCd = R middot N︸︷︷︸Nrsquo

                      mod n

                      Nprime middot Rminus1 = N mod n

                      N1 minusrarr C1

                      N2 minusrarr C2

                      rArr N1 middot N2 minusrarr C1 middotC2

                      bull Jeder Benutzer braucht ein eigenes n dass heiszligt man muss fur jeden Benutzer die entspre-chenden Primzahlen suchen allerdings ist dies aufwendig

                      bull RSA ist extrem langsam im Vergleich zu symmetrischen Verfahren openssl speed rsabzw speed aes-256

                      46 Fuktionen in OpenSSL

                      461 genrsa

                      genrsa erzeugt Schlusselpaare fur RSASchlussellange num_bits frei wahlbar wobei es einen Bug bei kleinen Werten gibt (weniger als60 Bit) so kurze Schlussel aber auch nicht verwendet werden solltenOptionen

                      usage genrsa [args] [numbits]

                      -out file output the key to file

                      -passout arg output file pass phrase source

                      56

                      -f4 use F4 (0x10001) for the E value

                      -3 use 3 for the E value

                      -des encrypt the generated key with DES in cbc mode

                      -des3 encrypt the generated key with DES in ede cbc mode (168 bit key)

                      -idea encrypt the generated key with IDEA in cbc mode

                      -aes128 -aes192 -aes256 encrypt PEM output with cbc aes

                      -engine e use engine e possibly a hardware device

                      -rand filefile load the file (or the files in the

                      directory) into the random number generator

                      462 rsa

                      rsa gibt den public-key zu gegebenen private-key aus Auszligerdem auch weitere Informationenwie verwendeter Modulus Mit rsa kann auch ein gegebener key neu verschlusselt abgespeichertwerden

                      rsa [options] ltinfile gtoutfile

                      where options are

                      -in arg input file

                      -out arg output file

                      -pubin expect a public key in input file

                      -pubout output a public key

                      -passin arg input file pass phrase source

                      -passout arg output file pass phrase source

                      -text print the key in text

                      -noout donrsquot print key out

                      -modulus print the RSA key modulus

                      -check verify key consistency

                      -des encrypt PEM output with cbc des

                      -des3 encrypt PEM output with ede cbc des using 168 bit key

                      -idea encrypt PEM output with cbc idea

                      -aes128 -aes192 -aes256 encrypt PEM output with cbc aes

                      -inform arg input format - one of DER NET PEM

                      -outform arg output format - one of DER NET PEM

                      57

                      -sgckey Use IIS SGC key format

                      -engine e use engine e possibly a hardware device

                      463 rsautl

                      Mit rsautl konnen Dateien ver- oder entschlusselt und signiert oder verifiziert werden

                      Usage rsautl [options]

                      where options are

                      -in file input file

                      -out file output file

                      -inkey file input key

                      -pubin input is an RSA public

                      -certin input is a certificate carrying an RSA public key

                      -sign sign with private key

                      -verify verify with public key

                      -encrypt encrypt with public key

                      -decrypt decrypt with private key

                      -hexdump hex dump output

                      -pkcs use PKCS1 v15 padding (default)

                      -oaep use PKCS1 OAEP

                      -ssl use SSL v2 padding

                      -raw use no padding

                      -keyform arg private key format - default PEM

                      -passin arg pass phrase source

                      -engine e use engine e possibly a hardware device

                      464 PKCS

                      spater noch ausfuhrlicher hier nur kurz die Verwendung bei RSA

                      Padding beginnt mit 0002 endet mit 00 und dann kommt der Chiffretext

                      58

                      465 OAEP - Optimal Asymmetric Encryption Padding

                      Normalerweise wird mit RSA nur ein Schlussel fur eine symmetrische Verschlusselung ver-schlusselt da RSA verglichen mit symmetrischen Algorithmen sehr langsam ist

                      Bemerkung Vergleichen mit speed rsa und speed aes (siehe History 21012009)

                      Ist die so festgelegte Lange des Klartextes erheblich kleiner als die des RSA-Schlussels so ist einAuffullen der restlichen Bits notig Die implizite Methode (beim Betrachten des Klartextes alsZahl) einfach 0en einzusetzen empfiehlt sich nicht da die Zusatzinformation die ein Angreiferso uber den Klartext bekommt das Decodieren des geheimen Schlussels vereinfacht

                      Beim Padding soll diese Gefahr verringert werden Per default wird bei openssl PKCS benutztAllerdings ist die Verwendung von OAEP besser Beim OAEP ist im Gegensatz zum PKCSdie Lange des Klartextes nicht mehr sichtbar (man kann nur noch dass beginnende 00 Byteerkennen) Choosen Plaintext Attacke ist nicht mehr moglich

                      Dabei wird essenziell die zu verschlusselnde Nachricht mit einem Hashwert eines Zufalls-Stringsper xor verknupft und so randomisiert Eine Modifikation des benutzten Hashwerts wird dannmit der Nachricht konkateniert und steht beim Entschlusseln wieder zur Verfugung

                      1 Label hash Label =

                      2 PS erzeugen (alles Nullen 128-1-h-h-1-mdashmmdash)

                      3 DB =

                      4 Seed wahlen Lange h (irgendwas seed = Hash(irgendwas))

                      5 DBmaske = MGF(seed mdashDBmdash)

                      6 mDB = DB oplus GBmask

                      7 seedmaske = MGF(mDB mdashseedmdash)

                      8 mseed = seed oplus seedmaske

                      9 EM =

                      10 RSA-Verschlusselung C equiv EMe mod n

                      MGF Hash Eingabe x Lange l

                      tc = Hash(x c)

                      mdashcmdash = 4 Byte

                      MGF(x l) = t0 t1 t2 t3 |MGF( l)| = l

                      59

                      Ruckgangig

                      1 Entschlusseln

                      2 Zerlegen 00 mseed mDB

                      3 seedmaske = MGF(mDB mdashmseedmdash)

                      4 seed = mseed oplus seedmaske

                      5 DBmaske = MGF(seed mdashmDBmdash)

                      6 DB = mDB oplus DBmaske

                      7 Padding abtrennen

                      PKCS1 v15

                      Die fur den Modul verwendeten Primzahlen mussen die ersten beiden Bits gesetzt haben dasgarantiert nach Multiplikation der Primzahlen dass das Produkt im oberen Byte das obere Bitgesetzt hat und somit die feste voranstehende 0 uberdeckt

                      466 Wie erkennt man an Ciphertexten den Verschlusselungsalgorithmus- DER ASN1

                      Standards damit man (zB RSA) verschlusselte Texte erkennt

                      DER- distingushed Encoding Rules

                      ASN1- Abstract Syntax Notation

                      openssl asn1parse -genstr INTEGER4711 -out intasn1 openssl asn1parse -in intasn1 -inform DER

                      Integer werden in ASN1 als rsquo 02︸︷︷︸Tag

                      lange Datenrsquo kodiert Integers brauchen 1 Byte mehr rsquoDatenrsquo

                      damit Das Vorzeichen 00 enthalten ist Integer ist immer mit Vorzeichen

                      Tag fur andere Typen

                      Bool 01

                      Int 02

                      Octet String 04

                      Bitstring 03 rsquolangersquo rsquoungenutzte bits am Endersquo rsquoByte des Bitstringrsquo [evt ungenutzte Bits]

                      Text PRINTABLESTRING

                      60

                      utf8 UTF8String

                      Text mit Zeichen (emailadresse) IA5STRING

                      DatumZeit UTC

                      mit Jahrhundert GENTIME

                      nuscht (der leere Typ) NULL

                      Mengentypen seq set

                      Mann kann auch eigene Typen generierend EXPLICITAF oder so

                      467 Umgehen mit den Schlusselkomponenten

                      Ein vollstandiger RSA-Schlussel besteht aus einem Modul (modulus) n = p middot q offentlichemExponent e privatem Exponent d Primzahl 1 p Primzahl 2 q (haufig p gt q) Exponent 1 dpExponent 2 dq Koeffizient qi und kann so ausgegeben und gespeichert werden

                      Bei der Version fur rsquoarmersquo werden nur n offentlicher Exponent e und geheimer Exponent dangegeben

                      c equiv me mod n (3)

                      m equiv cd mod n (4)

                      Vorteil der vollstandigen Version Geschwindigkeitserhohung bei der Entschlusselung in Schritt(4)

                      dp equiv d mod (p minus 1) d = k middot (p minus 1) + dp

                      dq equiv d mod (q minus 1)qi middot q equiv 1 mod q

                      m equiv cd mod (p middot q) berechnenm1 equiv cdp mod p 500 Operationen mit 1

                      2 langem Modulm2 equiv cdq mod q 500 Operationen mit 1

                      2 langem ModulInsgesamt 1000 Operationen mit 1

                      4 der Lange

                      apminus1 equiv 1 mod p wenn (a p) = 1teilerfremd1

                      1kleiner Fermatscher Satz

                      61

                      m1 equiv cd mod pm2 equiv cd mod q

                      h equiv (m1minusm2)middotqi mod p (darauf achten dass das minusm2 mod p ausgerechnet wird nicht mod q)

                      m = m2 + h middot q

                      1 m lt n2 m equiv cd mod p da m2 + h middot q equiv m2 + (m1 minus m2) middot qi middot q mod p equiv m2 + m1 minus m2 equiv m1 alsoequiv cd mod pm equiv cd mod q da m2 + h middot q equiv m2 mod q also equiv cd mod q

                      x equiv y mod p und x equiv y mod q dann folgt x equiv y mod p middot qEuklidischer Algorithmus (p q)-teilerfremd dann p middot u + q middot v = 1 Chinesischer Restsatz

                      47 Miller-Rabin Test

                      Heute openssl dhparam und was Verbluffendes so dass man es nur mit der Phantasie einesInformatikers oder Mathematikers verstehen kann (Literatur Menezes Oorschot Handbook ofApplied Cryptography)

                      Primzahlen Feststellen ob eine Zahl eine Primzahl ist durch Testen von Divisionen wird beigroszligen Zahlen sehr lang

                      p middot q = n ausrechnen geht schnell Umkehrung n =middot ist moglicherweise schwer

                      Uber 2214+ 1 weiss man dass es keine Primzahl ist2 kennt aber keinen der Faktoren Kriterium

                      rdquokeine Primzahlldquo lasst sich auf folgende Art manchmal feststellenWenn (a n) = 1 so ist anminus1 equiv 1 mod nFermatTest Wenn fur (a n) = 1 anminus1 1 mod n so kann n keine Primzahl sein

                      Primzahlen Test

                      Wenn fur eine Zahl a mit (a n) = 1 der Fermat-Test nicht bestanden wird nennt man a einenZeugen fur Nichtprimalitat

                      2Vierzehnte Fermatsche Zahl

                      62

                      Zeugen gibt es sehr viele nicht realistisch alle zu rdquobefragenldquo Ausserdem gibt es Zahlen diekeine Zeugen haben aber keine Primzahl sind

                      Aus diophantischen Gleichungen folgt Es gibt ein Polynom mit ganzzahligen Koeffizienten f (n)mit der Eigenschaft Wenn f (n) gt 0hArr n ist PrimzahlAber das Polynom hat 26 Koeffizienten Fur Mathematiker ist das Problem erledigt da das Poly-nom existiert fur Informatiker ist es das nicht wirklich da die Berechnung ubermaszligig komplexist

                      Die Nicht-Primzahlen ohne Zeugen heissen Carmichael-Zahlen Haben die Eigenschaft forallp(p|nrArrp minus 1|n minus 1)rArr CarmichaelZum Beispiel 561 hat Teiler 3 11 17 Der Test liefert 2|560 10|560 16|560

                      Erweitern (n Primzahl) Wenn (a n) = 1 und anminus1 equiv 1 mod n und 2|n minus 1 (anminus1 equiv 1 mod na

                      nminus12 equiv )

                      Wenn x2 equiv 1 mod n was ist x mod n n|x2 minus 1 = (x minus 1)(x + 1) entweder n|x + 1 odern|x minus 1

                      FermatTest+ Wenn fur (a n) = 1 anminus1 1 mod n oder falls anminus1 equiv 1 mod n und anminus1

                      2 +1und a

                      nminus12 minus1 so kann n keine Primzahl sein

                      und 4|n minus 1 anminus1

                      4 anminus1

                      2 anminus1

                      1 mod n Diese Folge ist entweder 1 1 1 oder minus1 1 1 oderlowastminus1 1

                      Wenn (a n) = 1 und 2k|nminus 1 (k maximal) dann ist die Folge anminus12k a

                      nminus12kminus1 a

                      nminus12 anminus1 entweder

                      1 1 oder lowastminus1 1 1 (lowast steht fur beliebige Folge)

                      Probieren n = 81 n minus 1 = 80 durch 2er-Potenzen teilen kommt irgendwas mit 5 hinten rausAls Zeugen nehmen wir mal 2 Ausrechnen 25 210 220 240 280 und schauen ob diese Folgemodulo 81 einen der beiden Typen hat 32 1 mod 81

                      FermatTestlowast (= Miller-Rabin-Test) Wenn fur (a n) = 1 2k|n minus 1 teilt und die Folge anminus12k a

                      nminus12kminus1

                      anminus1

                      2 anminus1 modulo n nicht 1 1 und nicht lowastminus1 1 1 dann ist a ein Zeuge fur Nicht-primalitat

                      Fur Miller-Rabin-Test gibt es keine zeugenlosen zusammengesetzten Zahlen es gibt unter denzu n teilerfremenden Zahlen mindestens 25 Zeugen3 (MenezesOorschot Kapitel 4 Fact 425Fact 448 Tabelle 43)

                      Die fur Informatiker interessante Frage ist die Frage Wenn man eine Wahrscheinlichkeit kleiner2minus80 fur eine fehlerhaft durch Miller-Rabin nicht erkannte zusammengesetzte Zahl haben will

                      3Anmerkung spater 34 sind Zeugen 1

                      4 sind Lugner

                      63

                      muss man fur n (512 Bit) 6 Tests machen Je groszliger die Zahlen werden desto weniger Testsmuss man machen Fur 1024 3 Tests fur 2048 2 Tests Vorausgesetzt ist immer noch ein Testauf kleine Faktoren Dabei pruft man ob (n pi) = 1 fur pi lt B wobei pi kleine Primzahlen sindDas B wahlt man so dass dieser Test nicht langer dauert als ein Miller-Rabin-Test

                      Wie wahlt man Primzahlkandidaten Generiere Zahl mit Zufallszahlengenerator schaue ob diedurch 2 oder so teilbar ist wahle dann die nachste Zahl

                      openssl dhparam -dsaparams -text -noout 2048 schnellopenssl dhparam -text -noout 2048 langsam

                      Safe Prime pminus12 hat einen groszligen Primzahlfaktor q dann getestet ob 2(k middot (q + 1)) Primzahl ist

                      pminus12 ist Primzahl

                      Wofur braucht man die Primzahlen Naturlich fur RSA und jetzt neu

                      48 Diffie-Hellman-Schlusselaustausch

                      Alice und Bob haben gemeinsame offentliche Informationen tauschen offentliche Informationenaus und verfugen danach beide uber einen gemeinsamen privaten Schlussel

                      g = 2 (offentlich bekannt (Generator)) Primzahl p (offentlich bekannt)

                      Erganzungen g g2 g3 gpminus1 mod p (g Generator dann alle verschieden)

                      Bob Alice

                      Eve

                      x y

                      g^y mod p

                      g^x mod p

                      64

                      Bob wahlt zufallig 1 lt x lt pminus 1 und ruft Alice gx mod p zu Alice wahlt zufalig 1 lt y lt pminus 1und ruft gy mod p zu

                      Bob berechnet (gy)x mod p und Alice berechnet (gx)y mod p Beide erhalten gxmiddoty mod p An-greifer Eve kennt nur gx mod p gy mod p fehlt gxmiddoty mod p

                      Wenn Eve das diskrete Logarithmusproblem losen konnte also zu gx mod p und g mod pdas x ausrechnen konnte dann ware gxmiddoty mod p leicht zu berechnen Die besten Algorithmenfur das diskrete Logarithmusproblem mod p sind subexponentiell im groszligten Primfaktor vonp minus 1

                      Falls (p minus 1) viele kleine Primfaktoren pi hat ist das diskrete logarithmus Problem leicht denndann lost man das Problem nicht a mod (pminus1) sonder jeweils a mod pi und setzt0 dass ganzedann mit dem Chinesischen Restsatz zusammen

                      Sucht p so dass pminus12 auch eine Primzahl ist dazu wird zuerst eine Primzahl pprime gesucht und dann

                      geguckt ob 2pprime + 1 auch Prim ist

                      Openssl

                      Variante DH (DSAparam) (-dsaparam)

                      p-Primzahl 1536

                      g-rsquoGeneratorrsquo nicht von (p minus 1) sondern von der Restklasse h

                      160 Bit g g2 g3 gh alle verschieden mit h=160 Bit

                      Dann sollen xy so gewahlt werden dass 1 lt x y lt h = 160 Bit

                      Ein weiteres asymmetrisches Cryptosystem kann man darauf aufbauen Alle kennen g und pjeder generiert sich x (privater Schlussel) und gx mod p wird veroffentlichtAlice will Bob etwas verschlusselt schickenSie generiert ein k berechnet aus k und Bobs veroffentlichtem gx a = (gx)k mod p und ausdem allgemein bekanntem g gk mod pM sei die Nachricht ( mod p) die Alice verschicken will Sie berechnet a middot M mod p undsendet an Bob das Paar (gk mod p a middot M mod p)Bob berechnet (gk)x mod p = a und dividiert amiddotM

                      a mod p und erhalt somit M

                      Der Schlussel a darf nicht zweimal verwendet werden

                      Man nennt (gk a) zeitweiliger bzw ephemeraler Diffie Hellmann Schlussel

                      Nachteil die Nachrichtenlange wird verdoppelt

                      65

                      Das Verfahren ist unsicher wenn Alice die Zahl x schlecht wahlt x = 1 2 1 2 1 2 1 = x1 x2

                      49 ElGamal-Cryptosystem

                      (siehe auch TR 3111 vom BSI auf Seite 21)

                      Auf Diffie-Hellmann aufbauendAlice offentlicher Schlussel ga (p g) privat aBob offentlicher Schlussel gb (p g) privat b

                      Alice will an Bob schicken

                      1 Zufallszahl k generieren

                      2 Berechne mit Bobs Parametern gk mod p

                      3 Berechne mit Bobs Parametern (gb)k mod p (DH-Schlussel)

                      4 Berechne m middot (gb)k mod p

                      5 Sende(gkm middot (gb)k

                      )mod p

                      Bob empfangt (x y)

                      1 Berechne xb mod p (DH-Schlussel)

                      2 y middot (xb)minus1 mod p = m mod p

                      Alice baut also einen temporaren DH-Schlusselteil4 zu Bobs Parametern und sendet diesen unddie damit verschlusselte Nachricht m

                      Nachteil Nachricht wird durch den Ephemeralschlussel doppelt so lang

                      410 Wiederholung DH

                      Generator gPrimzahl pga mod p Restklassen mod p = Korper(middot inverses)Dass p Primzahl ist ist eigentlich ZufallErzeugendes Element GOperation auf Elementen +

                      a middotG = G + G + G + + G a-malEs muss schwer sein aus G und B = a middotG gegeben das a zu bestimmenG muss eine Ordnung n haben n middotG = 0 (Neutrales Element der Operation +)

                      4Auch Ephemeralschlussel genannt

                      66

                      4101 Beispiel

                      Alice Bob G+ nAlice denkt a denkt a middotGBob denkt b denkt b middotGBeide tauschen a middotG und b middotG aus und berechnen a middot b middotGa middotG ist leicht zu berechnen double and adda = a0 + a1 middot 2 + + ak middot 2k

                      a middotG = a0 middotG + a1 middot 2 middotG + + ak middot 2k middotG(k minus 1)-mal rdquomiddot2ldquo und (k minus 1)-mal rdquo+ldquo

                      411 was anderes

                      Nimmt man nun G groszlige Gruppe mit n Elemente und der Addition +

                      g-Generator

                      g 2g 3g nG︸︷︷︸Nullelement

                      Alice wahlt 1 lt x lt n bestimmt x middot g

                      Bob wahlt 1 lt y lt n bestimmt y middot g

                      Dann wieder K = (ab) middot g = K

                      To do erganzen

                      Problem des Diskreten Logarithmus in G gegeben ist G g Generator ist 0 c = a middot g in Ggesucht alogGc-diskreter Logarithmus in G

                      Diese Variante funktioniert also mit allen rsquoKomplizierten Gruppenrsquo das fuhrt zu dem nachstenThema

                      412 Elliptische Kurven

                      Wo gibt es so etwas schon Elliptische Kurven Sind nicht weit verbreitet weil sie dem Mana-gement schwer zu erklaren sind

                      67

                      Aus der Wikipedia (unter GNU Free Documentation License)

                      In der Zahlentheorie ist eine elliptische Kurve eine singularitatenfreie algebraische Kurve derOrdnung 3 in der projektiven Ebene

                      Von besonderem Interesse zB fur die Faktorisierung naturlicher Zahlen sind aufgrundihrer einfachen Struktur elliptische Kurven der Form cy2 = x3 + ax + b mit c 0 und 4a3 +

                      27b2 0 Einige moderne Verschlusselungsverfahren basieren auf solchen Kurven Der Nameleitet sich historisch davon ab dass diese Kurven durch elliptische Integrale parametrisiertwerden konnen

                      Elliptische Kurven uber endlichen Korpern werden in der Kryptografie eingesetzt Dazuwird ausgenutzt dass eine Gerade (lineare Funktion) die zwei Schnittpunkte P und Q mit ei-ner Elliptischen Kurve hat diese auch in einem 3 Punkt schneidet Der Punkt der aus demletzteren durch Verkehren des Vorzeichens der Y-Koordinate (wenn die Kurve die oben ange-gebene Form hat) entsteht wird P + Q genannt Man kann zeigen dass diese Punktaddition(P und Q werden addiert das Ergebnis ist der Punkt P + Q) sowohl kommutativ als auch as-soziativ ist Erganzt man die Elliptische Kurve um einen weiteren Punkt 0 (genannt Punkt imUnendlichen) so bildet sie zusammen mit der (etwas erweiterten) Punktaddition eine abelschealgebraische Gruppe

                      Sei nun P ein Punkt der Elliptischen Kurve Der Punkt P + P wird mit 2P bezeichnetentsprechend definiert man kP = P + + P als k-fache Addition des Punktes P Ist P nichtder 0-Punkt und ist die Ordnung der Elliptischen Kurve prim so kann auf diese Weise jederPunkt der Kurve erreicht werden (dh zu jedem Punkt Q auf der Kurve existiert eine naturlicheZahl k mit Q = kP) Die Aufgabe aus gegebenen Punkten PQ diesen Wert k zu ermittelnwird als Diskretes Logarithmus-Problem der Elliptischen Kurven (kurz ECDLP) bezeichnetEs wird angenommen dass das ECDLP (bei geeigneter Kurvenwahl) schwer ist dh nichteffizient gelost werden kann Damit bieten sich Elliptische Kurven an um auf ihnen asymme-trische Kryptosysteme zu realisieren (etwa einen Diffie-Hellman-Schlusselaustausch oder einElgamal-Kryptosystem)

                      y2 = x3 + a middot x + b Skizze der Kurven S2Zu S2 Punkte auf der Kurve kann man addieren

                      Die Rechenregeln gehen auch in einem Korper mod pBeispiel y2 equiv x3 + a middot x + b mod p Skizze S3

                      Es gibt immer Punkte mit denen man rechnen kann Punkte sind geeignet die Addition funk-tioniert auch und hat die Anzahl N der Punkte einen groszligen Primzahlteiler dann haben wir auchKryptosystem mit G+ n Wenn groszliger Primzahlteiler exisitert1 N hat groszligen Primzahlteiler n2 Wahlen zufallig einen Punkt G als GeneratorDaraus erhalt man DH und El Gamal

                      Zuerst eingefuhrt durch Victor Miller und Neal Koblitz um 1980 herum Damals war N schwer

                      68

                      bestimmbar Inzwischen gibt es bekannte Algorithmen (Schoof-Algorithmus)Diskretes Logarithmusproblem ist fur elliptische Kurven wirklich exponentiell (bis jetzt) EinBit mehr verdoppelt den Rechenaufwand (192-Bit-256 Bit bewegt sich in GroszligenordnungenRSA 2000-4000-Bit)

                      Erganzung

                      1Bei der Erforschung von Eliptischen Kurver stellte sich zuerst die Frag wie groszlig ist eigentlichdie Ordnung n der Gruppe Man wusste n sim p und man wusste sogar n minus p + 1 minus

                      radicp lt n lt

                      minusp + 1 +radic

                      p

                      2 Schnelle Algorithmen zur Berchnung der Ordnung

                      3 ECDLP ist schwer wenn n einen groszligen Primfaktor hat

                      To do sortieren

                      Erganzung

                      man hat p a bG n h

                      K = y2 = x3 + ax + b

                      p ist fur die Punktaddition (Formeln siehe enwikipediaorg wobei λ = (yQ minus yP) middotminus1

                      (xa minus xp)︸ ︷︷ ︸mit GGT

                      mod p)

                      Anmerkung zum Wikipedia Artikel binary Case bedeutet man die Eliptischen Kurven auch inKorper mit 2k betrachten allerdings vieler solcher Falle patentiert

                      G = Generatorpunkt mit G 2G 3G nG alle verschieden n kleinste Zahl so dass alle ver-schieden

                      nG = 0

                      bei der DSA-Parameter Form nimmt man weniger Grsquos

                      Der nachste Parameter ist der cofactor h welches den Unterschied zwischen n und der Anzahlder Produkte auf der Kurve angibt

                      Trick beim testen ob alle iG verschieden sind man guckt ob n eine Primzahl ist und ob nG = 0ist wenn ja ist dies das erste mal sonst ware n ja keine Primzahl Also sind alle vorherigen iG

                      69

                      verschieden

                      Kurven finden besser Bestimmung der Punktanzahl ist schwer

                      Fruher gab es kleine cofactoren h lt 16

                      openssl ecparama -list_curves sind schon vorher erzeugt kann openssl nicht selber

                      openssl ecparam -name secp160k1 -text -noout da die Kurve festgelegt ist gibt es nurein object zuruck

                      openss ecparam -name secp160k1 -text -param_enc explicit -noout

                      openss ecparam -name secp160k1 -text -param_enc explicit -noout -conv_form compressednichtkomprimiert gibt nur die x-Koordinate aus

                      Bei der komprimierten Form kann mit der Kurve die andere eindeutig bestimmen (oder so)

                      Darstellung als komprimierte Punkt ist auch wieder patentiert

                      413 Elliptische Kurven Nachtrag

                      GF(p) (Galois-Field) sind Kurven mod p mit p Primzahl erfullen Gleichungen der Form y2 =

                      x3 + a middot x + b

                      GF(2k) Korper mit 256 Elementen = 28

                      In OpenSSL nur elliptische Kurven mod p patentfrei

                      Kofaktor finden Wir haben Punktgruppe G es gibt einen Generatorpunkt gn middotG = 0 n ist die Ordnung

                      cofactor︸ ︷︷ ︸klein

                      lowast order︸︷︷︸primzahl

                      = Anzahl der Punkte

                      (cofactor soll klein sein order Primzahl) Anstelle Punkt auf der elliptischen Kurve als (x y) (x ymod p) abzuspeichern TrickWenn es ein Punkt ist gibt es zu x zwei y die quadratische Gleichung y2 = x3 +a middot x+b erfulleny1 =

                      radicx3 + ax + b mod p

                      y2 = minusradic

                      x3 + ax + b mod peine der beiden Zahlen hat als letztes Bit immer 1 die andere eine 0 man nimmt daher nur noch(x LSB(y)) (x und kleinstes Bit von y)

                      70

                      414 Rucksack-Verschlusseln

                      Kryptosystem das sich bei OpenSSL zu recht nicht findet Hat den Anschein als wurde es aufeinem NP-vollstandigen Problem beruhen Problem ist NP-vollstandig weil es ein allgemeinesRucksackproblem istSieht aber nur so aus ist aber nur polynomial weil es ein Transformiertes eines leichten Ruck-sackproblems ist

                      Gegeben W Fassungsvermogen des Rucksacks w1w2 wk kleine GewichteGesucht W =

                      sumeiwi mit ei isin 0 1

                      Rucksack-Verschlusseln von MerkleHellmann Rucksack mit schnell wachsenden Gewichtenist leicht zu berechnendh wi gt

                      sumjlti e jw j nachstes Gewicht ist immer schwerer

                      4141 Beispiel

                      Rucksack W = 51 = 31 + 15 + 3 + 2 wprimei s 2 3 7 15 31Grundidee Aus dem schnellen Rucksack einen langsamen machenM gt

                      sumwi k mit (M k) = 1 k middot 2 k middot 3 k middot 31 mod M

                      M = 61 ist Modul k = 17 ist privater Schlussel m = (1 1 0 1 1) ist unverschlusselte Nachricht31 51 58 11 39 ist offentlicher Schlussel 34 + 51 + 11 + 39 = 135 = 13rarr c ist verschlusselteNachrichtEmpfanger rechnet aus dem erhaltenen Gewicht (135) das richtige Gewicht wieder raus 135middotkminus1

                      mod 61 = 51 und kann das Problem mit den schnellen Gewichten losen

                      Zum BrechenMan transformiert 34 51 58 11 39 in eine Folge die schnell wachsend ist zB 1 3 5 11 29dh das transformierte System kann auf mehrere Probleme zuruckgefuhrt werden man brauchtnur eine passende Rucktransformation finden Adi Shamir hat dafur einen polynomiellen Algo-rithmus angegeben

                      415 Merkle Puzzle

                      Man generiert sich 1000000 Nachrichten rdquoDas ist Nachricht ni fur den Schlussel k jldquo ni zufalli-ge 20-Bit Zahl k j 128-Bit SchlusselVerschlusselungsverfahren DES diese 1000000 werden mit 20-Bit Schlusseln verschlusseltAlice schickt die 1000000 Nachrichten an Bob als offentlichen SchlusselBob will Alice eine Nachricht schicken Er sucht eine der Nachrichten aus dem offentlichen

                      71

                      Schlussel aus und macht eine Brute-Force Attacke auf diese Nachricht Er findet ni und kiBob verschlusselt mit dem ki seine Nachricht und sendet ni im Klartext mit

                      Alice und Bob haben linearen Aufwand Eve quadratischen

                      Von everything2comAlice and Bob agree on a symmetric algorithmAlice generates a large number (over a million at least) of messages of the form ldquoThis is myindex X and my puzzle is Yrdquo Each of the messages is encrypted with a 20-bit keyAssume there are 220 (about a million) messages it takes 220 operations to get the key and acomputer can perform 220 operations per second Bob takes 1 second to recover the key to amessage Eve takes 12 daysNow make that 230 (about a billion) messages Bob still only takes a second to get the key andit will take Eve 34 years

                      Public Key Idee hier schon vorhanden

                      416 Rabin-Verfahren und Wurzelziehen

                      Aus der Wikipedia (unter GNU Free Documentation License)

                      Das Rabin-Kryptosystem ist innerhalb der Kryptologie ein asymmetrisches Kryptosystem dasauf einem Faktorisierungsproblem beruht und mit RSA verwandt ist Es lasst sich prinzipiellauch zur Signatur verwenden In der Praxis findet das Verfahren allerdings wegen bestimmterAngriffsmoglichkeiten kaum Anwendung

                      4161 Schlusselgenerierung

                      Aus der Wikipedia (unter GNU Free Documentation License)

                      Seien p und q zwei moglichst groszlige Primzahlen fur die eine bestimmte Kongruenzbedingunggelten muss Der offentliche Schlussel n wird durch Multiplikation der beiden Zahlen erzeugtalso n = p middot q Der geheime Schlussel ist das Paar (p q) Anders ausgedruckt Wer nur n kenntkann ver- aber nicht entschlusseln wer dagegen p und q kennt kann damit auch entschlusselnZum Erzeugen des offentlichen Schlussels mussen die Zahlen p und q bekannt sein Der offent-liche Schlussel lasst sich nur genau aus den beiden Primzahlen erzeugenWaren p und q keine Primzahlen so lieszlige sich das Verfahren ubrigens nicht anwendenSeien beispielhaft p = 7 q = 11 (in der praktischen Anwendung handelt es sich um sehr vielgroszligere Zahlen um die Entschlusselung durch Dritte so schwierig wie moglich zu machen)Daraus ergibt sich der offentliche Schlussel n = p middot q = 77

                      72

                      4162 Kongruenzbedingung

                      Aus der Wikipedia (unter GNU Free Documentation License)

                      Fur p und q muss die Kongruenzbedingung(

                      pminus1p

                      )= (p minus 1) und

                      ( qminus1q

                      )= (q minus 1)

                      (wobei fur(

                      nminus1n

                      )= (n minus 1)

                      nminus12 equiv (n minus 1) mod n = (n minus 1) gilt)

                      oder einfacher ausgedrucktp equiv q equiv 3 mod 4gelten

                      Allgemein gilt namlich fur die Primzahl r mit r equiv 3 mod 4 und die Zahl a mit a equivb2 mod ra

                      (r+1)4 equiv

                      radica mod r

                      Diese Eigenschaft dient dazu spater die Entschlusselung zu erleichternWegen 7 equiv 11 equiv 3 mod 4 ist die Kongruenzbedingung fur das Beispiel erfullt

                      n = p middot q Produkt von Primzahlen

                      m soll verschlusselt werden c equiv m2 mod n (einfach Quadrieren weil Wurzelziehen schwer istwenn der Modul ein Produkt von 2 Primzahlen (p middot q) ist weil wer Wurzel ziehen kann kannauch Faktorisieren (n)

                      Begrundung Es gibt 2 Losungen c = x2 equiv y2 mod n Wie findet man nun die Faktoren von nn teilt x2 minus y2 = (x minus y)(x + y) und x gt y und (x minus y) lt n und n hat nur 2 Primfaktoren daherx minus y = p und x + y = q Wurzelziehen ist leicht mod p mod q Gesucht Wurzel c mod pxp = c

                      p+14 mod p und xq = c

                      q+14 mod q

                      x2p equiv c

                      p+12 equiv c

                      pminus12 middot c mod p

                      Weil cpminus1 equiv 1 mod p ist (nach kleiner Fermat) die Wurzel daraus cpminus1

                      2 equiv plusmn1 wegen c equiv m2

                      mod n gilt (m2)pminus1

                      2 equiv mpminus1 equiv 1(p) Stuck fehlt Ende des Wurzelziehens

                      4163 Verschlusselung

                      Aus der Wikipedia (unter GNU Free Documentation License)

                      Sei nun P = 0 nminus1 der Klartextraum (er besteht also aus Zahlen) und m isin P der KlartextNun lasst sich der Geheimtext c durch c = m2 mod n bestimmen Dabei ist c der QuadratischeRest von zu der Quadratzahl m2 zum Modulo der Schlussel-Zahl n Im praktischen Einsatzbietet sich die Verwendung von Blockchiffre an

                      In unserem Beispiel sei P = 0 76 der Klartextraum m = 20 der Klartext Der Ge-heimtext ist hierbei nun c = m2 mod n = 15

                      73

                      Dabei muss man beachten dass fur genau vier verschiedene m das c den Wert 15 aufweistnamlich fur m isin 13 20 57 64 Ahnliches gilt fur die meisten c

                      4164 Entschlusselung

                      Aus der Wikipedia (unter GNU Free Documentation License)

                      Seien allgemein c und r bekannt gesucht wird m isin 0 n minus 1 mit m2 equiv c mod r Furzusammengesetzte r (beispielsweise unsere n) existiert kein effizientes Verfahren zur Bestim-mung von m Ansonsten wenn also r isin P (in unserem Fall p und q) dann lasst sich jedoch derchinesische Restsatz ausnutzen

                      In unserem Fall sind nun die Quadratwurzelnmp =

                      radicc mod p

                      undmq =

                      radicc mod q

                      gesuchtWegen obiger Kongruenzbedingung gilt

                      mp = c(p+1)

                      4 mod pundmq = c

                      (q+1)4 mod q

                      In unserem Beispiel ergeben sich mp = 1 und mq = 9Mit dem erweiterten euklidischen Algorithmus werden nun yp und yq mit yp middot p+yq middotq = 1

                      bestimmt In unserem Beispiel erhalten wir yp = minus3 und yq = 2Nun werden unter Ausnutzung des chinesischen Restsatzes die vier Quadratwurzeln +r

                      minusr +s und minuss von c + nZ isin ZnZ berechnet (ZnZ steht hierbei wie ublich fur die Menge derRestklassen modulo n die vier Quadratwurzeln liegen in der Menge 0 n minus 1)

                      r = (yp middot p middot mq + yq middot q middot mp) mod nminusr = n minus rs = (yp middot p middot mq minus yq middot q middot mp) mod nminuss = n minus s

                      Eine dieser Quadratwurzeln mod n ist wieder der anfangliche Klartext m Im Beispielgilt m isin 64 20 13 57

                      417 Angriffe auf asymmetrische Verschlusselungsverfahren

                      Fall RSA

                      74

                      4171 1 Angriff Common modulus attack

                      Idee Gleicher Modul fur verschiedene Leute hatte den Vorteil dass man sich nur die kleinenoffentlichen Exponenten e1 und e2 merken muss nicht mehr die groszligen Module hat aber Nach-teil (e1 e2) = 1 teilerfremd umiddote1+vmiddote2 = 1 (mit erweitertem Euklid) Sendet man eine Nachrichtm an zwei Alices berechnet also c1 = me1 mod n und c2 = me2 mod n dann kann man mitden Chiffren c1 und c2 auch ausrechnen cu

                      1 middot cv2 = me1u middot me2u = me1u+e2v = m mod n Nachricht

                      erhalten

                      4172 2 Angriff kleiner geheimer Exponent d

                      Wenn |d| lt |m|3 dann ist Faktorisieren moglich Sicherheitsrisiko geheimer Exponent muss im-

                      mer moglichst groszlig sein aus groszligem offentlichen Exponenten |e| kann man erfahren dass dergeheime Exponent klein ist

                      4173 3 Angriff Faktorisieren

                      Wenn p ungefahr so groszlig wie q also p minus q = ∆ klein ist dann ist ( p+q2 + ∆

                      2 ) (ungefahr Wurzel n+ was kleines = p) middot( p+q

                      2 minus∆2 ) = p middot q Man weiszlig dass die eine Zahl uber Wurzel n liegt und die

                      andere Zahl unter Wurzel n (Wurzel n + klein = p Wurzel n - klein = q)

                      4174 Echt schlechte RSA-Schlussel

                      n = 3middotq (1024 Bit) und offentlichen Exponenten bei TCTrustCenter abgegeben Damit kann manzeigen dass PGP als Signaturverfahren schlecht ist Schlussel schlecht gewahlt dadurch kannjeder die Kommunikation mitlesen da n sehr leicht zu Faktorisieren die Leute sie konntender Person mit dem schlechten Schlussel vertrauenswurdige Nachrichten schicken und laufenin die Falle dass ihre Nachrichten nun offentlich sind Anderer Fall Bewuszligt solche Schlusselvergeben um Nachrichten in einem kompletten Netzwerk lesen zu konnen

                      n = Primzahl e middot d equiv 1 mod (n minus 1)

                      Mit n als Primzahl geht normale Entschlusselung nicht

                      n p q e dp dq qi dc equiv me mod nm1 equiv cdp mod pm2 equiv cdq mod qdp equiv d mod (p minus 1)

                      75

                      dq equiv d mod (q minus 1)

                      m = m2 + (m1 minus m2) middot qi︸ ︷︷ ︸mod p

                      middotq

                      m equiv cd mod q und m equiv cd mod prArr cd

                      Bundesamt fur Informationssicherheit sagt zur Verwendung von RSA p q mussen unabhangigvoneinander zufallig erzeugt werden und 0 5 lt | log2 p minus log2 q| lt 30

                      4175 Schnelles Faktorisieren bei Fehler im System

                      DFA - Differential Fault Attack System das entschlusselt aber sich an einer Stelle verrechnetmprime1 ist Rechenfehler statt wirkliches m bekommt man ein mprime = m2 + (mprime1 minus m2)qi lowast qbildet man nun m minus mprime 0 aber durch q teilbar dh bringt man das System dazu einen Fehlerzu machen und hat man die Originalnachricht GGT (m minus mprime n) = q schon hat man den Mo-dul faktorisiert hat funktioniert viele Chipkarten verrechneten sich unter Streszlig Es reicht dasmprime zu kennen m kann unbekannt bleiben denn man rechnet (mprimee minus c n) = q es reicht eineentschlusselte Nachricht zu haben

                      Anderer Angriff auf ChipkartenDPA - Differential Power Analysis Stromverlauf ansehen Differenzen bilden und sequentiellanalysieren

                      Angriff auf El Gamal Systemegeheimer Schlussel a offentlich g p ga Verschlusselte Nachricht zufalliges k (gk mmiddotgak)= c 1Angriff k gleich fur verschiedene Nachrichten oder k1 k2 in Abhangigkeit oder k k+1 k+2 fur verschiedene Nachrichten oder a middot k + b

                      4176 Angriff mit gewahltem Chiffretext

                      Normalerweise bei RSA m minusrarr c = me mod n

                      cprime vorgegeben fuhrt zu Klartext mprime = (cprime)d mod nAnforderung Beliebiger Chiffretext auszliger cprime = c wahlbar zu dem man dann den Klartext erhalt

                      Problem bei RSA

                      1 r (zufallig gewahlt)rarr re mod n = s

                      2 cprime = s middot c mod nVerschlusselungsmaschine liefert dann (cprime)d = sd middot cd = (re)d middot m = r middot m mod n = mprime

                      76

                      3 Letzter Schritt m = mprime = rminus1 mod n

                      Das geht nur theoretisch in der Praxis geht das nicht weil Angreifer kann das r nicht steuernr middot m wird aber von der Verschlusselungsmaschine verworfen weil es bei zufalligem r keinkorrektes Padding hat

                      Schwache des RSA Multiplikationseigenschaftm1 rarr c1 und m2 rarr c2 (m1 m2 gultige Klartexte)m1 middot m2 rarr c1 middot c2m1 middot m2 nicht als gultiger Klartext zugelassen

                      5 Signaturmechanismen

                      Wie erstellt man signierte Daten und versucht ein Aquivalent zu dem zu schaffen was man imtaglichen Leben durch Unterschriften schafftEigenschaften einer Signatur sollen nachgebildet werden Man weiszlig von wem ein Dokumentkommt sie ist an eine Person gebunden und kann von niemanden sonst nachgemacht werden undvom Inhaber nicht abgestritten werden Nachtragliche Anderungen an unterschriebenen Doku-menten sollen nicht mehr moglich sein (gibt es so im echten Leben nicht)

                      51 Integritatsschutz und Hashfunktionen

                      To do neu Hashfunktionen Definition einsortieren

                      Hashfunktion Beliebige Daten werden auf Binarfolgen konstanter Lange abgebildet

                      Def Eine Hashfunktion H ist eine Abbildung 0 1lowast rarr 0 1k auf Hashwerte der Lange k

                      SHA-256 (SHA- Secure Hash Algorithmen) - Hashwerte der Lange 256 Bit

                      1 Es gibt Kollisionen

                      d1 d2 H(d1) = H(d2)

                      2k Hashwerte aber potentiell abzahlbar viele Daten

                      Wunsch

                      Man soll diese Kollisionen nicht finden konnen und am besten es gibt sie nicht Hashfunktionendienen zum unterscheiden von Daten

                      77

                      H(d1) H(d2) dann ist d1 d2

                      Dementsprechend groszlig muss das k sein so dass genugend viele Werte unterscheiden kann

                      Anforderungen an Hashfunktionen

                      Wunsch Kollisionsresitent (schwer Kollisionen zu konstruieren) man kann nicht zwei Doku-mente mit dem gleichen Hashwert konstruieren

                      Wunsch Zweites Urbild resistent (schwer zweites Urbild zu konstruieren) man kann zu einemDokument nicht ein zweites mit dem gleichen Hashwert bestimmen

                      Geburtstagsparadoxon Kollisionen entstehen zum Beispiel in Horerkreisen 23 Horer(innen)dann haben mit mehr als 50 Wahrscheinlichkeit zwei am gleichen Tag Geburtstag

                      H Horer rarr Datum h 7rarr Geburtstag(h)

                      h1 h2 H(h1) = H(h2)

                      Bestimme die Wahrscheinlichkeit dass keine zwei am gleichen Tag Geburtstag haben

                      1 minus g =365middot middot(365minusn+1)

                      (365n) wobei n die Anzahl der Horer ist (Fur n = 23 ungefahr 50)

                      radic365 20

                      g radic

                      Hashwerte

                      Bei 2128 Hashwerte muss man mit Kollisionen rechnen ( Bsp 30 bei 19 Personen 19 radic

                      365)

                      Merke Das Geburtsatgs Paradox beschert uns Kolisionen bei 2k2 Hashwerten

                      To do ende Neu

                      Hashfunktionen Schon bekannt aus dem ersten Semester (Hashtabellen)

                      Allgemeine Eigenschaften

                      1 Komprimieren beliebig lange Werte auf n-bit Werte

                      2 Einfach (und schnell) berechenbar

                      Werte Fingerabdruck Prufwert Hashwert

                      78

                      Kollisionen h(x) (Hashfunktion) mit x1 x2 aber h(x1) = h(x2) x1 und x2 ist KollisionWahrscheinlichkeit fur Kollision fur zufallig gewahlte Werte sollte 1

                      2n sein (Anforderung anHashfunktion)

                      Wir verlangen dass die Variabilitat in der Eingabe sich auch in den Prufwerten widerspiegeltsprich Wenn die Eingabewerte gleichverteilt sind sind es auch die Ausgabewerte

                      To do 20090422

                      To do einsortieren

                      Kollisionen rsquovermeidenrsquo durch Groszlige 160 Bit Prufwerte (280 fur Kollision (2100 mdash AES 128 mdashbzw 2112 2128 als Kollisionsschranken)

                      Zusatzlich Voraussetzungen fur die Pruffunktion

                      1 Kollisionsresistenz Es muss schwer sein zwei Nachrichten m1m2 zu finden so dassH(m1) = H(m2)

                      (Es ist schwer Zwillinge zu konstruieren)

                      2 Zwillingsresistenz Es muss schwer sein (also kryptografisch Aufwendig) zu einer Nach-richt m1 eine Nachricht m2 zu konstruieren so dass H(m1)FH(m2) ist

                      (Wenn man eine Bruder hat dann ist es schwer eine zwillings Schwester dazu zu konstru-ieren)

                      (aufwendiger als erstens)

                      3 Urbildresistenz Es muss schwer sein zu einem beliebigen Prufwert h eine Nachricht zukonstruieren so dass H(m) = h ist

                      4 Die Prufwerte mussen rsquozufalligrsquo aussehen Die Ausgabe von H genugt Anforderungen aneinen Zufallszahlengenerator (gewisse statistische Unauffalligkeit) also pseudozufallig

                      Eigentlich musste man noch mehr Fordern namlich dass man keine zwei Nachrichten findet diesehr ahnliche Hashwerte haben und dass man zu einer gegeben Nachricht keine Nachricht miteinem ahnlichen Hashwert findet

                      Beispiel H gute Pruffunktion

                      H(m) =

                      |m| n fix so Hprime(m) = 0||H(m)(H(m) rangehangen)|m| = n so ist Hprime(m) = 1||m( rangehangen)

                      h ist die Lange der Prufwerte von H

                      79

                      Hprime ist kollisionsresistent wenn es H ist aber nicht urbildresistent

                      To do sortieren

                      openssl 097d (2004) Prufwertstandardverfahren ist MD5

                      Hashfunktion enthalt eine rsquoKompressionsfunktionrsquo m1

                      To do Bild-siehe Blatt - 20090422

                      K(sm) = sprime

                      K(sm) = K(sm2)

                      K(s1m1) = K(s2m2)

                      s1 und s2 als Ergebnisse einer Prufwertberechnung darstellen

                      K(s1m11) = s1 K(s01m21) = s2

                      K(s1m12) = s K(s2m22) = s

                      der rechte Teil war 2004 schon bekannt es musste nur noch die linke seite gelost werden

                      511 Schlussellose Hashfunktion (Prufsummen ohne Schlussel)

                      h x minusrarr h(x)Ausschlieszliglich Prufwert Gute Auswahl garantiert dass man mit h(x) feststellen kann ob xverandert wurde

                      xprime ist verandertes DokumentDatenBerechnung des Prufwerts liefert h(xprime) = hprime h(x) bei guter Hashfunktion Veranderung kannalso festgestellt werden

                      80

                      Zusatzlich verlangte Eigenschaften

                      1 Kollisionsresistenz Es ist schwer Kollisionen zu erzeugen Dh es ist schwer x1 x2 mith(x1) = h(x2) zu findenHeute ublich n = 80 oder n = 100 280 oder 2100 in sim 280 Schritten Definitiv 256 istnicht schwer 264 ist nicht mehr so schwer

                      2 Zwillingsresistenz Zweites-Urbild-Resistenz second preimage resistance Es ist schwereinen Zwilling zu erzeugen ist x1 mit h(x1) vorgegeben so ist es schwer einen Zwillingx2 zu erzeugen mit h(x1) = h(x2)(Anmerkung Finger weg von Binarcode fur x1 x2)

                      3 Einwegeigenschaft Urbild-Resistenz Es ist schwer zu vorgegebenem h(x) ein Urbild xzu berechnen

                      h1(x) ist eine gute Hashfunktion mit den schicken Eigenschaften 1 2 3 (n + 1 Bitlange)

                      h2(x) =

                      1 x wenn x die Lange n hat0 h1(x) sonst

                      h2(x) ist kollisionsresistent (Zwillingsresistenz) (wenn h1 so ist) h2 ist aber nicht urbild-resistent 1 x hat als Urbild x

                      2 ist die wichtigere Eigenschaft man kann notfalls noch ohne 1 auskommen Zum Beispielletztes Jahr MD5 - Hashfunktion x1 x2 waren konstruiert h(x1) = h(x2)x1 oplus x2 = 0 010 010 010 01 (1 jeweils im msb) Immer noch ein gewisser Schutz dazum Beispiel keine Kollision auf -Kleinbuchstaben oder 64 moglich

                      Schlussellose Hashfunktionen sollten alle 3 Eigenschaften haben

                      Fast-Kollision x1 x2 h(x1) oplus h(x2) hat wenig 1-Bits Manchmal zu vermeiden

                      partielle Urbilder Gegeben h(x) dann ist es schwer x bis auf wenige Bits zu bestimmen

                      SHA-1 theoretische Schwelle 280 praktisch 269 (16022005) 263 (19082005)

                      Geburtstagsparadoxon 23 Personen die Wahrscheinlichkeit dafur dass 2 am gleichen Tagim Jahr Geburtstag haben ist groszliger als 1

                      2

                      h(x) =dd-mmMit k Personen x1 xk lassen sich k2 Geburtstagspaare bilden Mit n Tagen h1 hn im Jahrlassen sich n2 Geburtstagspaare bilden davon sind n gute ( (h hprime) mit h = hprime)

                      81

                      mit k2 Paaren in n2 Paaren suchen und einen von n treffenHashfunktion hat 160 Bit Ausgabe wir brauchen nach Geburtstagsparadoxon 280 Personen ummit hoher Wahrscheinlichkeit den gleichen Geburtstag h mit 160 Bit zu erhalten

                      Allgemeines Konstruktionsprinzip x wird auf eine bestimmte Blocklange erweitert (pad-ding)

                      1 Nullpadding (auffullen mit Nullbits falls erforderlich)

                      2 1-Nullpadding (eine 1 und dann mit Nullbits bis zur Blocklange)

                      3 1-Null-Langenpadding (eine 1 und Nullbits (falls erforderlich) und die Lange (msb first64 Bit oder 128 Bit)) Am besten geeignet da bei 1 oder 2 automatisch Kollisionen ent-stehen x (mind 1 bit kurzer als die Blocklange) und x 0

                      xrarr b1 bk Blocke der Lange 512 Bit

                      Haufig Verlauf in 3 Phasen in openssl init update final

                      1 Initialisierung der Hashfunktion Innerer Zustand aus 32-Bit-Wortern H1H2H3H4H5initialisiert (mit Primzahlen π was-auch-immer)

                      2 Update A BCD E aus H1 H5 Runden mit Transformationen mit Eingabe bi 48|60|120 H1 = H1 oplus A H2 = H2 oplus B

                      3 Finalisierung Ggbf Padding 1 oder 2 mal das Update

                      4 Ausgabe H1H2 H5

                      Einfaches Beispiel

                      82

                      So lasst sich aus einem Kryptoalgorithmus ein Hashalgorithmus konstruieren In der Praxis wer-den andere Konstruktionen (Quirlfunktionen) verwendet MD5 SHA-1 SHA-2 (224 256 384512) Whirlpool ISO-

                      In OpenSSL MD2 MDC2 MD4 MD5 RIPEMD-128 RIPEMD-160 SHA-0 SHA-1 Allegebrochen ausser RIPEMD-160 und SHA-1 (evt MD2) dh es sind m1 und m2 bekannt mitMD5(m1) =MD5(m2) und m1 m2

                      512 Demonstration Falschung

                      Ist die Hashfunktion rsquoschwachrsquo kann man Kollisionen sogar konstruieren

                      Beispiel fur MD5 MD4 ist seit 10 Jahren schwach SHA-1 wird schwach

                      Zwei Postscript-Dateien mit unterschiedlichem Inhalt aber gleichem MD5-Hash Prinzip Datei1

                      Header

                      if x1 == x2 then strangestring = T1 else strangestring = T2 end

                      Rest

                      echo strangestring

                      Quelltext (B)(B)eq︸ ︷︷ ︸Bedingung

                      [tot] [Def] ifelse

                      83

                      Datei 2

                      Header

                      if x2 == x2 then strangestring = T1 else strangestring = T2 end

                      Rest

                      echo strangestring

                      (A)(B)eq︸ ︷︷ ︸Bedingung

                      [Def] [tot]

                      x1 und x2 unterscheiden sich nur sehr wenig und Header if x1 und

                      Header if x2 sind je ein Nachrichtenblock mit dem gleichen Hashwert

                      Sieht aus wie zweites Urbild-Angriff sind aber in der Tat zwei bose Zwillinge

                      Quelle wwwcitsrubdeMD5Collisions

                      Fazit Dokumente sind nicht mehr unterscheidbar

                      Kollision besteht aus zwei Dokumenten d1 d2 mit dem Hashwert

                      Bei MD5 kann man zwei rsquoDokumentersquo (Prafixe bis AB) konstruieren die den gleichen Has-hwert haben

                      Man kann aber zu einem Dokument d0 (dem Original) noch nicht ein zweites dprime0 konstruierenso dass d0 dprime0 eine Kollision bilden

                      Beispiel Ein SSL-Server-Zertifikat war (MD5) ununterscheidbar von einen SSL-ZertifizierungsstellenZertifikat womit man so viele (evt rsquobosersquo) SSL-Server-Zertifikate erstellen wie man wollte

                      MD5 ist nicht kollisionsresistent

                      MD5 ist noch 2 Urbild resistent

                      52 Unterschied MD5 und SHA

                      MD5 128bit Lange (Kollision 264)

                      SHA-224 224bit Lange (Kollision 2112)

                      SHA-256 256bit Lange (Kollision 2128)

                      84

                      mehr rotation lokale Unterschiede habe groszligere globale Unterschiede zur Folge bei SHA

                      53 Secure Hash Standard SHA-2

                      FIPS 180-2 US-Standard Nachfolger von FIPS 180 SHA-0 und SHA-1 sind die SHA-2-Algorithmen(noch nicht in OpenSSL) SHA-224 SHA-256︸ ︷︷ ︸

                      32 Bit

                      SHA-384 SHA-512︸ ︷︷ ︸64 Bit

                      SHA-224 bzw SHA-384

                      ist rsquoungefahrlsquo die linke Seite von SHA-256 bzw SHA-512

                      Basisfunktionench (xampy)|(sim xampz) Auswahlfunktionpar x and y and z Paritatsfunktionmaj (xampy)|(xampz)|(yampz) Mehrheit

                      Ausserdem Addition modulo Wortlange rot left und shift leftMessage M1M2 MN padding

                      1 paddinglength auf 5121024 Bit

                      51232 = 16 = 1024

                      64

                      2 Messageblock (16 Stuck) wird erweitertW0W1W2 W15︸ ︷︷ ︸

                      Messageblock

                      W79

                      Wt = rot(Wtminus3) + rot(Wtminus8) + rot(Wtminus14) + rot(Wtminus16) fur t = 16 79rot(x) = rotl7(x) + rotl18(x) + shl3(x)

                      3 8 temporare Variable a b c d e f g h mit Breite gleich Wortlange (32 oder 64 Bit) be-schreiben einen inneren Zustand der Funktion

                      SHA-Maschine bekommt initialen Zustand H0 H7 Die ersten 32 Bit der gebrochenenAnteile der Quadratwurzeln der i Primzahl Fur SHA-256 und SHA-512 i = 1 8 furSHA-384 und SHA-224 i = 9 16

                      85

                      Am Anfang jeder Runde a = H0 b = H1 c = H2

                      Jedes Wi erzeugt einen Schritt (kleine Zustandsanderung)

                      T1 = h + rot(e) + ch(e f g) + Kt + Wt

                      T2 = rot(a) + maj(a b c)

                      h = g g = f f = e e = d + T1 d = c c = b b = a a = T1 + T2K0 K80 Schrittkonstanten Bruchteile der dritten Wurzeln der ersten 80 Primzahlen80 Schritte in einer Runde

                      4 XOR-Operationen H0H1 H7 minusrarr H0 oplus aH1 oplus b H7 oplus hHi beschreiben den inneren Zustand nach Runde Hi am Anfang initialisiert

                      5 Ausgabe ist H0 H7 am Ende

                      To do ware auch interessant fur die Prufung

                      Es wird eine neuer SHA-3 gesucht Voraussetzungen

                      1 Nachrichtenexpansion muss komplexer werden

                      2 Nachrichtenblocke mussen positionsabhangig werden (Skein tweakable

                      3 innerer Zustand muss groszliger werden (2x Hashlange)

                      531 Problem bei MD5 und SHA-0

                      Beispiel 1 Innerer Zustand zwischen einzelnen Schritten hat Bits die die folgenden Bitsmehr oder weniger beeinflussen Damit sinkt die Komplexitat beim Brechen Besondere Bitsfuhren zur Reduktion der Anzahl der Gleichungen und erlauben eine schnelle Konstruktion vonspeziellen Zwillingen m1m2 mit MD5(m1) =MD5(m2) m1 oplus m2 = viele Nullen

                      Parallel hashen rdquoKontostand -20073ldquo und rdquoKontostand +700ldquo Ab -2 bzw +7 entstehen un-terschiedliche innere Zustande Nachkommastellen bei dem zweiten String anpassen um dieUnterschiede auszugleichen

                      86

                      Aktuelle Angriffe erzeugen keinen zweiten Zwilling sondern rsquonurrsquo falsche Zwillinge Zu einemguten gibt es keinen schlechten Zwilling

                      Beispiel 2 Es gibt zwei Zertifikate mit unterschiedlichen Inhalten und gleichem MD5-HashDas sind dann aber 2 schlechte Zertifikate MD5 ist also nicht kollisionsresistent aber momentanzwillingsresistent

                      SHA-1 hat momentan eine Komplexitat von 263 anstelle von 280 fur Kollisionen

                      mH(m) (H(m) aus vertrauenswurdiger Quelle) rArr m kann nicht unbemerkt verandert werdenManipulation Detection Codes () Das ist keine Prufung des Ursprungs Um zu prufen ob maus einer bestimmten Quelle stammt benutzt man MACs

                      532 MACs (Message Authentication Codes) (Prufsummen mit Schlusseln)

                      Sei k ein geheimer Schlussel den nur Alice und Bob kennen m ist die Nachricht BerechneHk(m) = h keyed Hash Die Hash-Prufwerte sind also Schlusselabhangig

                      (m h) mit h aus vertrauenswurdiger Quelle

                      bull Veranderungen sind erkennbar

                      bull Nur mit Kenntnis von k kann man h berechnen also nur mit dem Schlussel kann man denPrufwert falschen

                      Empfanger der k kennt kann n auf Integritat prufen Um sich vor Angreifern zu schutzen mussfur eine Prufung der Prufwert geschutzt werden

                      Hk(mprime) = h

                      (m1 h1)(m2 h2)

                      rarr (m h) muss verhindert sein

                      87

                      Standardisiertes Verfahren fur Keyed hash auf der Basis von MDCs RFC 2104 in OpenSSL zufinden HMAC)

                      H(k oplus auszligeres Padding H(k oplus inneres Padding m))︸ ︷︷ ︸512- oder 1024-Bit-Blocke

                      k linksbundig aufgefullt mit Nullen inneres Padding = 0x36 0x36 auszligeres Padding = 0x5c0x5c Langenpadding am Ende des inneren H

                      Berechnen Sie mit OpenSSL und dgst -c oder -hex den Hashwert der leeren Datei

                      henrykgleam henryk $ openssl dgst -c -hex -md5 devnull

                      MD5(devnull)= d41d8cd98f00b204e9800998ecf8427e

                      henrykgleam henryk $ openssl dgst -c -hex -sha1 devnull

                      SHA1(devnull)=

                      da39a3ee5e6b4b0d3255bfef95601890afd80709

                      openssl dgst -sha256 -hmac 1234567890 devnull

                      HMAC-SHA256(devnull)= ba92e0bfa35d8a018831f3675f0b4314c8468d4d96e6981b85ba3390c23308fd

                      HMAC

                      To do vervollstandigen

                      Mac mit Hashfunktion K- Schlussel H-Hashfunktion

                      H(K oplus oPadH(

                      0x565656︷ ︸︸ ︷K oplus iPad︸ ︷︷ ︸Bitlange H

                      n))

                      K n1 rarr Mac(n1K) = m1

                      K nprime = n1||langenpadding ||n2

                      (K nprime) rarr HInitialisiert mit m1(n2) = m2

                      ISO-10118-32004

                      88

                      54 Whirlpool

                      Basis fur eine Hashfunktion ausgehend von einer einzigen Verschlusselungsfunktion

                      Aus der Wikipedia (unter GNU Free Documentation License)

                      WHIRLPOOL ist eine kryptografische Hash-Funktion die von Vincent Rijmen und Paulo SL M Barreto entworfen wurde Sie wurde nach der Whirlpool-Galaxie im Sternbild der Jagd-hunde benannt

                      Whirlpool funktioniert mit Daten von weniger als 2256 Bit Lange und gibt einen Hash-Wert von 512 Bit aus

                      Die Autoren haben erklart dass Whirlpool nicht patentiert ist und es nie sein wird Whirl-pool darf kostenlos zu jedem Zweck verwendet werden Die Referenz-Implementation ist ge-meinfrei

                      The WHIRLPOOL algorithm has undergone two revisions since its original 2000 specifi-cation In the first revision in 2001 the s-box was changed from a randomly generated one withgood cryptographic properties to one which has better cryptographic properties and is easier toimplement in hardware In the second revision (2003) the diffusion matrix was changed

                      People incorporating WHIRLPOOL will most likely use the most recent revision ofWHIRLPOOL while there are no known security weaknesses in earlier versions of WHIRL-POOL the most recent revision has better hardware implementation efficiency characteristicsand is also likely to be more secure

                      E

                      +

                      H

                      H

                      m

                      AES-Variante

                      i-1

                      i-1

                      i

                      55 Zusammenfassung

                      To do oben einsortieren

                      89

                      Manipulation Detection Codes MDCsHashfunktionen MD5SHA-1SHA-2Allgemeines Konstruktionsprinzip aus Langenpadding und Iterationen

                      bull MACsKeyed Hash HMAC mit Hashfunktion aufgebaut aus prefix und suffix

                      bull CBC-MAC Nachrichtenblocke m0m1 mk

                      + +

                      MACc c c

                      K

                      m

                      m m

                      0

                      1

                      1

                      2

                      k

                      k+1

                      Risiko Weil keine Langeninformationen dabei sind ist es anfallig gegen Einsetzen undAustauschen Wird gerne Verwendet bei Anwendungen die feste Langen haben zBChipkartenCBC-MAC-verbessert

                      K

                      DES

                      1

                      K2

                      K3

                      larrminus CBC-DES3-MAC

                      Benutzt zB beim digitalen Tachograph

                      Es gibt zwei Grundlegende technische Mechanismen Ohne Schlussel und mit Schlussel Nur mitSchlussel lasst sich spater der richtige MAC-Wert ausrechnen und bestimmen dass die Nachrichtnicht verandert wurde und vom richtigen Absender kommt

                      90

                      56 Digitale Signaturen

                      To do einsortieren

                      Definition

                      s ist die Signatur zu einer Nachricht n mit einem Signaturverfahren S und einem Verifikations-verfahren V

                      S N times D︸︷︷︸Signaturschlussel

                      rarr s

                      V N times E︸︷︷︸Verifikationsschlussel

                      timess rarr ja nein

                      V(n e S (n d)) = 1

                      V(n e S (nprime d)) = 0 =( n eprime S (n d)) = 0

                      RSA

                      S (n d) =

                      V(n s e) = E(e s)eqH(n)

                      openssl dgst -sign keyrsa -hex nulltxt

                      openssl -sign keyrsa -sha256 -out nullsig nulltxt

                      openssl rsautl -in nullsig -encrypt -inkey keyrsa -raw -hexdump

                      in Beta openssl sha256 -hex nulltxt

                      Anstatt der Symmetrischen Verschlusselung wie bei MAC kann man auch asymetrische Verfah-ren verwenden

                      1 h mit Namen (0D) in ASN1 Struktur 0001 FF FF 00 (ASN1-Struktur)

                      2 Padding

                      3 rsquoEntschlusselnrsquo

                      4 rsquoVerschlusselnrsquo

                      5 ASN1 Struktur Hash OID Wert rausziehen

                      91

                      6 vergleichen 0 1

                      openssl hatte in den fruheren Versionen einen Fehler in der Signaturprufung

                      langer RSA Schlussel

                      exponent e klein (3)

                      lange Signatur S

                      S 3 = h

                      wenn h sehr lang ist konnte man folgendes machen

                      h= (0001FF00ASN1 rsquomullrsquo)

                      man konnte den rsquoMullrsquo so verandern das h = s3 (also so lange verander bis h dritte Wurzel vons ist)

                      Es wurde nicht uberpruft ob am Ende der ASN1-Struktur auch das Ende der Daten ist

                      siehe Webseite RSA Zertifikate mit Exponenten 3

                      To do alt

                      Digitale Signaturen schutzen die Integritat und die Authentizitat Wir betrachten hier welche dieauf asymmetrischen Verfahren basieren Symmetrische gibt es werden aber in der Praxis nichtbenutzt Es gibt 2 Typen

                      1 RSA

                      2 DSA

                      561 RSA

                      m = p middot q (2048 Bit)Exponent e klein (64 Bit)Exponent d groszlig mit e middot d equiv 1 mod (p minus 1)(q minus 1)

                      xrarr c = xe mod m (offentlich)cd equiv x mod m (geheim)xed equiv x

                      92

                      Man rechnet zuerst xrarr s = xd mod m Das kann nur derjenige der uber den privaten Schlusseld verfugt Aus s rechnet man se mod m = (xd)e mod m equiv xemiddote mod m = x Bei RSA konnenwir die Rolle vom privaten und offentlichen Algorithmus vertauschen so dass folgt Nur wer dkennt kann zu x ein s erstellen so dass se equiv x mod m ist

                      Anwendung dafur Digitale Signatur Wir haben Nachricht M und erstellen daraus einen PrufwertH(M) mit einer Hashfunktion und rechnen

                      H(M) = x minusrarr s = xd mod m

                      Dann ist (M s) das digital signierte Dokument M (und s die Signatur)

                      To do einsortieren neu

                      Signatur mit Anhang (with appendix) (m sig)-Signierte Nachricht

                      Ver(vm sig)

                      Signatur mit Nachrichtruckgewinnung (with (partial) message recovery) (m1mprime2) = mprime so dassmprime2 ein Teil der Nachricht m = m1||m2 enthalt

                      Ver(vm1mprime2) (partial recovery)

                      Ver(vminusmprime) (complete recovery)

                      In RSA

                      PKCS1 ver 15 Signatur mit Appendix

                      PKCS1 ver 21 (noch nicht in OpenSSL)

                      To do ende einsortieren

                      Prufung (M s) rarr H(M) = x Ist se mod m = x Nur wer das d hat kann das Paar (M s)

                      erstellen und ist damit Inhaber des Dokuments

                      562 Eigenschaften eines asymmetrischen Verschlusselungsverfahren

                      Alice kennt den offentlichen Schlussel von Bob Bob kennt seinen geheimen Schlussel

                      93

                      Alice123 Bob Alice Bob123offB gehB gehA offA

                      EoffB(m) = c rarr DgehB(c) = m rarr

                      MS gehA

                      (m s)

                      rarr

                      Voffa(m s) =

                      0 ungultig1 gultig

                      Mehrere Alices konnen an Bob schreiben Entschlusselung mit dem geheimen Schlussel vonBob Hier wird eine Nachricht so verschlusselt dass man die Nachricht aus c zuruckgewinnenkann

                      Alice sendet an alle Bobs Hier wird ein Paar erzeugt dass in einen Verifikationsalgorithmusgestopft werden kann der dann ja oder nein sagt

                      Es ist Zufall dass man mit RSA sowohl einen Verschlusselungsalgorithmus als auch einenSignaturalgorithmus erstellen kann Mit anderen geht das nicht

                      Hatte man nicht die Urbildresistenz der Hashfunktion konnte man ein s nehmen und dazu aus-rechnen se mod m = x jetzt konnte man zu dem x ein Urbild M ausrechnen und bekame einPaar (M s) dass gultig signiert ist Dazu kommen in Wahrheit noch Padding und Objekt Identi-fier der angibt womit signiert wurde und Parameter

                      30 = SEQUENCE06 = OID2B 0E 03 02 1A = SHA12A 86 48 86 F7 0D 01 01 01 = rsaEncryption05 = NULL Bezeichner fur die leere Menge hier bedeutet es keine Parameter04 = OCTET STRING02 = INTEGER03 = BIT STRINGSchema Tag Length Value

                      Das ganze lasst sich mit openssl asn1parse erfahren (asn1 = Abstract Syntax Notation 1)Schlussel immer SEQUENCE SEQUENCE OBJECT PARAMETER BIT STRING bzw Se-quence aus OID und Bitstring Das erste Byte in einem Bitstring gehort nicht zum Bitstring dazusondern gibt die Nummer der von hinten ungenutzten Bits an

                      OID-Liste httpwwwalvestrandno

                      Mhminusrarr

                      SHA-1

                      H minusrarr

                      Padding

                      00 01 FF FF 00 b c b H c

                      Identifier Oktetstring

                      Padding nach PKCS1 v15

                      ASN1 Objektidentifier fur SHA-1 (131432) wird als 2B 0E 03 02 1A codiert

                      94

                      xyabcd (Dot-Notation)darr

                      bx middot 40 + yc babcdc1 Byte Byte (Oktett)

                      12840113549127 als Ubungsaufgabe

                      563 RSASSA-PSS-Padding

                      SSA Signature Scheme with Appendix

                      PSS Probabilistic Signature Scheme

                      RFC 3447 (siehe figure 2)

                      8 zero salt

                      h

                      0000 01 salt

                      +MGF h

                      maskiertes seed BC00 1024

                      Bits

                      zu 0

                      setzen

                      soviele dass die Eingabe

                      kleiner als der Modul wird

                      Eingabe fuumlr die Signatur

                      M l(M) lt= 2^(64)-1 bei SHA-1

                      20 Byte 20 Byte

                      To do start einfugen

                      MGF-Maskengenerierungsfunktion (beruht auf der Hash-funktion)

                      95

                      MGF rArr DBmask dann DB oplus DBmaskNullungminusminusminusminusminusminusrarr maskedDB

                      Nullung-Nullung der oberen Bits so dass maskedDB kleiner als Modul ist

                      Signieren (EMSA-PSS)+(RSA-Verschlusselung)

                      Verifikation (RSA Op)

                      1 RSA-Operation

                      2 EM

                      Prufung ob BC am Ende

                      H abspalten und mit MGF DBmask erzeugen

                      XOR mit Rest von EM

                      DBprime = 0000︸︷︷︸Nullungsfehler

                      0001 Salt

                      00 Label mhash SaltHashminusminusminusminusrarr Hprime

                      = H

                      Jede Eingabe in die RSA-Operation ist pseudo zufallig (Jede Eingabe hat einen neuen Signa-turwert)

                      Angenommen man wendet die RSA-Operation direkt auf m an

                      mprime-Signatur mprime = md mod n

                      m1m2

                      m1 rarr mprime1 mod n = mprime1

                      m2 rarr mprime2 mod n = mprime2

                      Verifikation

                      (m1m2) mod n rarr (m1 middot m2)d = md1md

                      2 = mprime1 middot mprime2 mod n

                      (rsquoMan kann mit zwei Signaturen eine andere erzeugenrsquo)

                      96

                      To do ansehen

                      Unsicher zeitaufwendig kann leicht gebrochen werden

                      m rarr mprime = md mod n

                      re = rprime mod n

                      chosen message m middot rprime rarr (m middot rprime)d mod n = md middot red mod n = mprime middot r mod n

                      (mprime middot r) middot rminus1 mod m = mprime

                      (sieht nach Zufallszahlen aus aber die kann man auf eine vorher gewahlte Nachricht zuruck-rechnen)

                      To do ende einfugen

                      Nachricht M mit |M| lt 264 minus 1 wird mit Hashfunktion h gehasht Davor kommen 8 Zerobytedanach ein Saltwert (Saltwert wird benotigt fur die Auswertung der Signatur und wird verstecktin der Signatur) Auf das Gesamte wird die Hashfunktion h erneut angewendet

                      Verstecken des Saltwerts --0000 (rarr eventuell leer) 01 salt-- oplus mit einer Maske gebildetaus dem Hashwert und einer Maskengenerierungsfunktion

                      An den Anfang der Eingabe fur die RSA-Signatur werden 0-Bits so gesetzt dass die Eingabefur die RSA-Signatur kleiner als der Modul ist Wenn m volle Bytelange hat wird das obersteBit gleich 0 gesetzt (RSA-Signatur ()d mod m mit m = p middot q) An das Ende der Eingabe fur dieRSA-Signatur wird BC angehangt

                      Durch den Saltwert wird das Ergebnis zufallig und schwer vorhersagbar Wird leider nicht oftverwendet da die Maskengenerierungsfunktion Chipkarten teuer machen wurde

                      Es existiert eine DIN Variante zum v15 PKCS1 DIN-RN-Padding00 02 Zufallsbytes(ohne 00) 00 Identifikator Oktettstring

                      564 DSA

                      Vergleich ElGamal und elliptische Kurven

                      K-elliptische Kurve y2 = x3 + ax + b mod p

                      97

                      p-Primzahl ( 2 3)

                      Punkte auf der Kurve bilden eine Gruppe E(k)

                      P + Q = R k middotG isin E(k)

                      G ein Punkt (Generator) mit groszliger Ordnung n

                      1 middotG 2G 3G n︸︷︷︸sehr groszlig

                      middotG = 0

                      n ist eine Primzahl und G 2G nG = 0 ist die gesamte Gruppe E(k)

                      Signaturschlussel t-zufallig aus 1 n minus 1 Verifikationsschlussel ist P = t middotG

                      Standard FIPS 186-3 rarr finde den Fehler

                      To do ende einfugen

                      p g Generator gpminus1 equiv 1 mod p gpminus1

                      x 1 mod p

                      Geheimer Schlussel xoffentlicher Schlussel y = gx mod pk(gkm middot yk) = c

                      Parallel bei elliptischen Kurven G geheim x offentlich Y = x middotG

                      (k middotGm middot k middot Y)

                      DSA auch bekannt als DSS FIPS-186

                      Primzahl p (hat zB 1024 Bit im Standard variabel) so gewahlt dass pminus 1 einen Primteiler derLange 160 Bit enthalt q|p minus 1 mit |q| = 160 BitAusserdem Es gibt einen Generator g mit der Eigenschaft gq equiv 1 mod p Das findet man

                      indem man einen h Generator in mod p auswahlt und g = hpminus1

                      q hpminus1 equiv 1 mod p ausrechnet

                      x geheimer Signaturschlussel mit 160 Bit gx mod p ist der offentliche Schlussel

                      Signaturerstellung Nachricht M Hashwert h(M) = H ausrechnen Generiere Zufallszahl k mit160 Bit (k isin 1 n minus 1) und berechne

                      To do neu

                      k middotG = (x y) r = x mod n

                      98

                      s = hminus1 middot (h + tr) mod n

                      (r s) ist die Signatur

                      To do ende neu

                      r = (gk mod p) mod q und s = (kminus1(H + x middot r) mod p) mod q r und s sind Exponenten furmod p werden aber nochmal mod q genommen um Platz zu sparen (r s) wird die Signaturwerden (s 0 mod q r 0 mod q)

                      Signaturverifikation Berechne w = sminus1 mod qu1 = H middot w mod q u1 = H middot w + i middot qu2 = r middot w mod q

                      Berechne

                      gu1 middot yu2 equiv gHmiddotsminus1middot gxmiddotrmiddotsminus1

                      equiv gHmiddotk(H+xmiddotr)minus1middot gxmiddotrk(H+xmiddotr)minus1

                      equiv gHmiddotkmiddot(H+xmiddotr)minus1+xmiddotrmiddotk(H+xmiddotr)minus1

                      equiv gkmiddot(H+xmiddotr)middot(H+xmiddotr)minus1

                      equiv gk mod p

                      Prufe also ob (gu1 middot yu2 mod p) mod qequiv r

                      Die Signatur zu M ist (r s) mit r und s haben 160 Bit so dass man 320 Bit Signatur hat (kleinerals die 1024 Bit Signatur von RSA)

                      Um den geheimen Schlussel zu bestimmen muss man den diskreten Logarithmus mod q be-rechnen und das gilt als schwer

                      565 ECDSA - DSA mit Elliptischen Kurven

                      K - elliptische Kurve mit Punkten mod pG - Generatorpunkt G hat Ordnung q [q middotG = 0] q Primzahlx - Restklasse mod q Y = x middotG

                      r = [(k middot G)1] mod q (rarr 1 Koordinate mod q) s = kminus1(h + x middot r) mod q [u1 middot G + u2 middot Y]1

                      mod qequiv r

                      700 Bit fur alle Parameter

                      99

                      To do neu

                      ECDS DSAGenerator

                      G g gq = 1 mod pdA = [1 q minus 1]

                      zufalligPA = dA middotG auf E pA = gdA mod p

                      Signatur k isin [1 q minus 1] r = (gk mod p) mod qr = x mod q

                      s = kminus1 middot (h + dA middot r) mod q

                      h ist genauso lang wie q (gleiche Bitlange)

                      h sind die linken Bits von H(n)

                      (Bem RSA ist bei Elipt Kurven nicht einsetzbar deshalb ist DSA eine gute alternative)

                      link draft-lochter-pkx-brainpool-ecc-03 - eine art RFC zu Brainpool

                      openssl ecparam -name brainpoolP256r1 -param_enc explicit -noout

                      E =(x y) y2 = x3 + Ax + B mod p

                      Dann ist G = 04x (in einer Prufung ware interessant zu wissen was das fuhrende Bytebedeutet und welche Varianten es gibt)

                      openssl ecparam -name brainpoolP256r1 -genkey

                      -param_enc explicit -noout gt eckey

                      (pub - offentlicher Punkt)

                      openssl dgst -sha256 -sign eckey eckey gt ecsig

                      xxd -p ecsig

                      openssl asn1parse -i -in ecsig -inform DER

                      Man erhalt die beiden Integers r und s

                      (Bem bei Eliptischen Kurven ist die Bitlange kurzer da Algorithmen hohere komplexitat als so

                      100

                      haben)

                      (Hausaufgabe erzeuge zwei Kurven (512Bit - Brainpool bzw 521 NIST) mit anderen Hash-funktionen (mdripemd whirlpool) Signatur (rs) )

                      (Bem siehe Wikipedia El C DSA r=0 Abfrage weil sonst dA keine Rolle spielt s= 0 Abfrageweil man sonst mit minusz = r middot dA mod q den geheimen dA ausrechnen kann)

                      [Spickzettel zur HA

                      h-linke Bits des Hashwertes

                      n1 = h middot sminus1 mod q

                      n2 = r middot sminus1 mod q

                      V = n1 middotG + n2PA = (x y) r = x mod q

                      v = gn1 middot pn21 mod p r = v mod q

                      (r rarr 0 1 jeweils)

                      h middot sminus1 middotG + rsminus1PA = h(k(k + dAr)minus1 middotG + r(k(h + dAr)minus1)dAG = (hk + rkdA)(h + dAr)minus1G = V

                      = k (h + rdA) middot (h + dAr)minus1︸ ︷︷ ︸=1

                      G

                      = k middotG

                      ]

                      Magma

                      p=StringToInteger(rsquorsquo16)

                      a=StringToInteger(rsquorsquo16)

                      b=StringToInteger(rsquorsquo16)

                      IntegerRing(p)

                      E=EllipticCurve([KaKb])

                      G=E[KStringToInteger(rsquo1Halfte Generatorrsquo16)

                      101

                      KStringToInteger(rsquo2Halfte Generatorrsquo16)]

                      Jetzt kann man rechnen

                      qG eq E0

                      true

                      mdashmdashndash

                      qG

                      (010)

                      mdashmdashmdash

                      Kq=IntegerRing(q)

                      dA=1+Random(q-2)

                      PA=dAG Prufung ob ungleich Null fehlt noch

                      h=K12121212121212121212121212121

                      k=1+Random(q-2)+1damit keine Null rauskommt

                      X=kG

                      x=X[1]

                      r=(IntegerRing()x) mod q

                      s= (Kqk)ˆ(-1) ((Kqh)+ r dA)

                      rs

                      Verifikation

                      u1=h(Kqs)ˆ(-1)

                      u2=r(Kqs)ˆ(-1)

                      102

                      Y=(IntegerRing() u1)G+( IntegerRing() u2) PA

                      Y

                      ((IntegerRing() Y[1]) mod q) eq r

                      =rArr siehe Verzeichnis

                      Prufen ob Openssl gut gerechnet hat

                      OpenSSL

                      wie erzeugt man den offentlichen Schlussel openssl ec -in eckey -pubout

                      openssl ec -in ecpub -pubin -text -noout

                      -pverify

                      To do neu-ende

                      To do neu-20090617

                      Bem Attributes muss die leere Menge sein und darf nicht weggelassen werden

                      SHA1 nur noch zur Unterscheidung benutzen

                      57 Widerrufen von Zertifikaten

                      siehe rfc5280 S53

                      Erste Sperrliste

                      Ist eine Liste in der die Nummern der gesperrten Zertifikate stehen

                      Beispiel CA erstellen

                      perl ˜optopenssl-100-beta2appsCApl -newca

                      103

                      Zertifikat fur den Nutzer erstellen

                      perl ˜optopenssl-100-beta2appsCApl -newreq

                      Signieren

                      perl ˜optopenssl-100-beta2appsCApl -xsign gt aypem

                      Man kann noch weitere Zertifikate erstellen allerdings wird dann der pem Key geloscht Mankann dann feststellen dass die Seriennummer nur um eins erhoht wird Man kann auch openssl ca -gencrl -out -cl1pem -crlhours 12benutzen und dabei die Seriennummer selber angeben

                      openssl crl -text -in crl1pem -noout

                      Zertifiziert wird nur der Teil zwischen Certificate Rev List bis No Revok Cert Da dieser Teilsehr klein ist ist es recht schwer Kollisionen mit SHA1 dafur zu konstruieren

                      Dann gibt es noch Informationen wann es die nachsten Updates gibt (Last Update Next Update(optional)) Alte Sperrlisten bleiben aber Gultig die neuen gelten nur zusatzlich

                      Zertifikat ungultig machen

                      openssl ca -gencrl -out cr13pem -revoke demoCAcertsF8C85pem -crl_reason keyCompromise -crlhours 12

                      aktualisieren

                      openssl ca -gencrl -out cl4pem -crlhours 12

                      Nun nachsehen mit

                      openssl crl -text -in crl4pem -noout

                      To do neu-ende

                      104

                      58 Was es noch so gibt

                      581 blinde Signaturen

                      Gut fur anonymes digitales Geld Normalfall Bank kriegt digitalen Scheck belastet das Kontound schickt einen von ihr signierten Scheck zuruck Problem Wenn derjenige der den Scheckspater einlosen will zur Bank geht kann diese den Scheck zum Aussteller zuruckverfolgen

                      Mit anonymen Signaturen Aussteller erzeugt viele (zum Beispiel 1000) unterschiedliche Schecksmit je einer Zufallszahl und dem gleichen Betrag aber ohne Name Kontonummer etc Diese1000 sendet er verschlusselt an die Bank Die Bank sucht sich zufallig (das ist wichtig) 999davon aus und fordert fur diese den Schlussel an Die Bank entschlusselt diese Schecks unduberpruft ob uberall der gleiche Betrag drinsteht Wenn ja dann ist davon auszugehen dass auchder auf den gleichen Betrag lauft Das Konto wird entsprechend belastet und der Scheck wirdblind (also ohne hineinzusehen) signiert und dem Aussteller zuruckgeschickt Der packt denScheck aus (wobei die Signatur gultig bleibt) und hat jetzt einen von der Bank signierten digita-len Geldschein den die Bank nicht mehr zuruckverfolgen kann

                      582 anonyme Signaturen

                      Beispiel Elektronische Wahlen wo man nicht mochte dass man weiszlig wer es unterschriebenhat

                      6 Zertifikate

                      To do neu-20090520

                      m rarr Signatur und Verifikation

                      mprime rarr Signatur und Verifikation

                      Vertrauen in den offentlichen Schlussel

                      Schutzen den Schlussel durch Prufwert den Prufwert Schutzen wir durch eine Signatur Vertrau-en eines Schlussel ubertragt sich an einen anderen Das ganze scheint sich im Kreis zu drehen

                      Aber es handelt sich um einen Graph (Der Graph muss nicht transitiv sein - A vertraut BB vertraut C aber A vertraut nicht unbedingt C) Zb Baum mit Wurzel (PKI) dann gibt es

                      105

                      vertrauens-Normen die den Ebenen eines Baumes entsprechen Die andere Variante ist das PGPWeb of Trust bei dem der Baum ungeordneter ist und eine Art Vertrauensbereiche hat

                      Dass eine Zertifizierungsstruktur funktioniert braucht es klare Regeln fur den Umgang mit Zer-tifikate

                      Standards

                      ANSI X509

                      X500

                      openssl internet Profil

                      RFC 5280 (alt 3280 2459)

                      Definition Zertifikat bindet (durch Signatur) einen offentlichen Schlussel an einen Namen(Subjekt)

                      (siehe rfc5280 S16 - Certificate= SEQUENCE und TBSCertificate) (in TBSCert er-scheint rsquosignaturersquo recht fruh damit schon mit dem Hash-Algorithmus begonnen werden kannaber warum steht in Certificate dann nochmal signature -Bessere Ordnung)

                      Zertifikat bei CA-cert runterladen und dann mit openssl ansehen

                      openssl x509 -in class3crt -text -noout

                      openssl asn1parse -i -in class3crt

                      Zur ausgabe des ersten (siehe auch rfc5280)

                      Version es gibt momentan 3 Versionen

                      Serial Number ist ein Integer kann so groszlig sein das man nicht mehr in den Hash-Block mehrkommt (bis 20 Byte geht)

                      Bundesnetzagenturde 15549pdf sagen dass Serien Nummern mindesten 20 Bit Entropie ent-halten sollen damit SHA-1 bis 2010 benutzt werden kann (rsquoQualifizierte Signaturrsquo)

                      To do siehe 606 Gultigkeit

                      validity Wird oft als Gultigkeitszeitraum ubersetzt was aber nicht ganz richtig ist da nur ange-geben wird wann das Zertifikat nicht gultig ist Besser ware rsquonicht Gewahrleistungszeitraumrsquo

                      106

                      Die validity gibt (nach dem Standard) den Zeitraum an in der die CA gewahrleistet aussagenuber den Zustand des Zertifikats zu geben (Gultig ODER nicht Gultig - deshalb muss das Zer-tifikat also nicht unbedingt gultig sein)

                      To do neu-ende

                      To do neu-20090527

                      Bemerkung In der Objectstxt findet die Object-Identifier die OpenSSL kennt

                      To do neu-20090527-ende

                      Signatur Anwendung eines Schlussels Ob der Signaturersteller eine bestimmte Person ist istdamit nicht klar Immer gleichzeitig Authentizitat des Schlussels prufen

                      Dazu gibt es zwei Moglichkeiten

                      1 Anarchie = Web of Trust (Beispiel PGP)

                      2 Vertrauenswurdige dritte Instanz Certification Authority CA bzw ZDA (Zertifizierungs-diensteanbieter) Stellt ein Zertifikat aus das ist ein elektronisches Dokument welcheseine Identitat einem Schlussel zuordnet

                      Zertifikat (Name Schlussel ) und Signatur

                      Problem Im Zertifikat steht Name Schlussel usw und daran hangt eine Signatur Gegeben Nut-zer Alice mit Zertifikat daruber gibt es die CA1 die ihre Signatur zertifiziert CA1 hat selber einZertifikat mit einem Namen Schlussel usw und daran hangt wieder eine Signatur Das Problemverschiebt sich immer weiter nach oben Man bekommt eine Zertifikatshierarchie und benotigteinen aufgeblahten Riesenbaum mit einer Weltwurzel Im taglichen Leben haben sich 3-stufigeZertifikatshierarchien bewart Root signiert seine eigene Signatur Vertrauen in Authentizitat derNutzerschlussel ist fur alle Nutzer gleich Es bestimmt sich ausschlieszliglich durch die Authenti-zitat des Schlussels des Root CA Das Vertrauen in die Root CA verteilt sich auf die Nutzer

                      603 X509

                      X509 mittlerweile bei ISO RFC 3280 X509 Certificate and Certificate Revocation List (CRL)Profile Abschnitt 4

                      Version X509v3 Version 1 enhalt keine ErweiterungenSerial Number In der Regel 20 Byte muss immer eindeutig sein

                      107

                      Signaturverfahren fur das Zertifikat muss am Anfang (im ersten Block) stehen damit das Has-hen schon begonnen werden kannHerausgeber Name(eindeutig) C=Country O=Organisation CN=Common Name SN=Surname

                      Validity Gultigkeitszeitraum der Zeitraum indem die CA Gultigkeitsinformationen uber dasZertifikat bereitstellen willwirdmussInhaber Name (eindeutig im Bereich der CA) zur Person also stabile Daten SeriennummerVersicherungsnummer etcSchlusselinformationenErweiterungenDarunter die Signatur

                      In RFC 3280 steht dass nach dem 31 Dezember 2003 alle Zertifikate UTF-8 kodiert seinmussen

                      604 Erweiterungen

                      Man kann bei Erweiterungen festlegen ob diese Critical oder nicht sind Critical ist sowas wieeine Vorschrift nicht Critical ist sowas wie eine Information Kritische Erweiterungen mussenimmer ausgewertet werden wenn ein Programm sie nicht versteht darf es das Zertifikat nichtverarbeiten

                      To do neu

                      Per default auf false ist auszligerdem optionales Argument Wenn nicht critical dann ist es nur eineInformation Also critical muss man lesen und verstehen nicht critical sollte man lesen wennman sie versteht sollte man sich daran halten

                      To do neu ende

                      Basic Constraints

                      To do neu

                      Sagt ob es Zertifizierungsinstanz ist oder eine Endnutzer Instanz ist und in welcher Ebene essich befindet

                      To do Diagramm basteln

                      108

                      Ein interessantes Beispiel (goyacrt) findet man bei der Rechnerbetriebsgruppe

                      To do neu-ende

                      CA Siginalisiert ob es ein CA-Zertifikat ist (TRUE) oder nicht (FALSE) Dh ob das Zertifikatberechtigt ist weitere Unterzertifikate auszustellen

                      To do neu

                      Per default false es musste also nicht jedesmal CA FALSE angegeben werden

                      To do neu-ende

                      PATHLEN Beschrankt die Pfadlange Pathlen=0 heisst dass das Zertifikat zwar Nutzerzertifika-te ausstellen kann aber keine weiteren CA-Zertifikate Ist immer als Critical markiert

                      Subject Key Identifier und Authority Key Identifier Nicht kritisch Beschreiben die ver-wendeten Schlussel uber Hash-Werte zum Beispiel SHA-1 uber den Schlussel

                      Key Usage Kritisch (sollte kritisch sein zb bei GOYA nicht) Ist ein Bitstring der die Ver-wendung des Schlussels angibt Fur eine CA also zum Beispiel nur KeyCertSign NonRepu-diation ist eigentlich fur die Dokumentsignatur (content commitment) DigitalSignature ist furAuthentisierung oder allgemeine Signaturmechanismen Die beiden moglichst exklusiv setzen

                      To do neu

                      Nicht bei Endnutzerzertifikaten notig

                      To do siehe rfc5280 - KeyUsage -HA lesen

                      Merkmale

                      (0) DigitaleSignatur zur Authentifizierung (hat keine Auswirkungen auf spatere Zeitraume)(werden zu dem aktuellen Zeitpunkt gepruft)

                      (1) (ab X509v4) Inhaltsbindung[contentCommitment] (zb Nichtabstreitbarkeit ) (jetzt noch[nonRepudiation]) (werden zu dem Zeitpunkt zu dem sie erstellt worden sind gepruft)

                      (0) und (1) sind Endnutzerinformationen

                      nur ent-verschlusseln Schlussel zum verschlusseln von Zertifikaten geignet

                      109

                      keyCertSign==TRUE - wenn man nur Zertifikate damit signieren mochte (brauch man bei CAZertifikaten eigentlich sollte nur eines der Bits gesetzt sein) ansonsten sollte digitalSignaturegesetzt werden

                      Key usage zB A0=10100000 (Erste und dritte gesetzt) oder zB 88=10001000 (erstes undfunftes gesetzt)

                      authority information Nicht kritisch Feld in dem Daten des Herausgebers abgerufen werdenkonnen

                      Benutzt das OCSP-Online Certificate Status Protocol (gibt eine URI an wo man die Informatio-nen erhalten kann - spater mehr)

                      X509v3 Certificate Policies ASN1 Strucktur siehe rfc5280 S 33

                      System von Regeln fur die Ausgabe von Zertifikaten sowie den Betrieb der ZertifizierungstelleNutzer kann sich uber die Hirarchie der CA informieren (wichtig fur den Vertrauensaufbau)

                      CPS - Certificate Policy Statement und dann zwei moglichkeiten cPSuri (uri wo die Informationzu finden ist) oder userNotice (Freitext)

                      Bsp httpnasacanasagovnasacphtml dort findet man eine CPS

                      Wenn der Regelsatz dem CA Zertifikat zugeordnet ist (Bindung zB durch Root) ist es besserals wenn es nur dem EndNutzer Zertifikat zugordnet ist (Bindung nur durch die daruberliegendeCA)

                      Authority Key Identifier Kurzinformationen mit der man einen Schlussel identifizieren kannFur Endnutzer ist der Authority Key Identifier ein Bezeichner mit dem das zugohrige CA-Zertifikat zu finden ist Kann enthalten

                      KeyIdentifier - Schlussel ID

                      GeneralNames - Herausgeber Seriennummer

                      CertificateSerialNumber

                      Subject Key Identifier - SKI Schlussel ID hilft bei der Unterscheidung sollte eine moglichsteindeutige Nummer sein da aber nicht genau festgelegt wird ist die SKI nicht fur Uberprufungengeeignet

                      110

                      Subject Alternative Name IP Adresse URI Email Adresse (hat das rsquoatrsquo Zeichen welchesin kein Datentyp passt weshalb sie hierher (oder in den Issuer Alt Name) gehort soll alsrfc8224Name gespeichert werden (da dieser nicht groszlig klein sensitiv ist))

                      To do neu-ende

                      605 Erzeugung

                      To do neu

                      Bei OpenSSL gibt es zwei moglichkeiten mit Perl Script

                      perl ˜optopensslappsCApl -newca

                      openssl x509 -text -nout -in cacertpem

                      openssl req -text -nout -in careqpem

                      Diese Requests folgen dem Standard PKCS 10 - rfc2986

                      openssl ans1parse -in careqpem

                      Attributes [0] - Contextabhangiges Tag (nur an diesem Ort gultig) Codiert als A0 denn Con-textabhangige tags fangen mit 10 an im Gegensatz zu Universaltags die mit 00 anfangen(Beispiel fur Contextabhangige Tags siehe auch bei AuhtorityKeyIdentifier)

                      Im Request ist Set of Atritbute NICHT optional (aber kann leer sein)

                      To do neu-ende

                      Wie kommen wir eigentlich zu Zertifikaten Zertifikate kommen von einer CA also muss manzuerst ein CA-Zertifikat erstellen

                      Request Ich mochte ein Zertifikat haben PKCS10RFC2986openssl req

                      openssl req -new -x509 erzeugt gleich ein Zertifikat

                      openssl req -new -newkey rsa1500 -days 40 -out userreq ein neuer Schlussel undein Request Der Request enthalt die Informationen des Antragsstellers den offentlichen Schlusselein Challenge-Passwort (von der CA festgelegt) und eine Signatur uber diese Daten

                      111

                      openssl x509 -req -CA -CAkey -out -days 40

                      -in userreq -CAcreateserial -out userx509

                      -extensions usr_cert -extfile opensslcnf wichtig um v3-Zertifikate zu erzeu-gen

                      606 Gultigkeit

                      Der rsquoGultigkeitszeitraumlsquo (Validity) im Zertifikat ist der Zeitraum uber den sich die ausstellendeInstanz verpflichtet etwas uber die Gultigkeit des Zertifikats auszusagen

                      CRL Certificate Revocation List

                      OCSP Online Certificate Status Protocol

                      Sperrlistenformat auch in RFC 3280 Abschnitt 5 als X509-Variante festgelegt

                      OCSP version 1 RFC 2560

                      To do neu

                      Man kann dass conf bearbeiten

                      Ubungsaufgabe ein Zertifikatsrequest mit eigen Daten erstellen und zu zertifizieren

                      To do einsortieren

                      Die CA schmeiszligt eventuell Daten des Request raus

                      To do neu-ende

                      To do neu-20090624

                      Sperrlisten Enthalten

                      Version

                      Signatur

                      112

                      Herausgeber

                      LastNext Update

                      Sperrlisten Nummer (sollte monoton wachsen)

                      Liste der gesperten Zertifikate(jeder Eintrag enthalt ein Integer eine Zeit und evt CRLEntryExtension(CRLReason-Code siehe rfc5280 531))

                      Bemerkungen

                      Sperrlisten sind im DER-Format ( openssl -inform DER)

                      (Erweiterungen enthalten immer OID Octet-String)

                      Zu CRLEntryExtension CRLReason Code (6) (certificateHold-schwebend gesperrt) und (8)(removeFromCRL-kannwurde wieder entsperrt werden) sind besonders und sind eher nur furAuthosierung sinnvoll

                      Sperrlisten nehmen in der Praxis erhebliche groszligen ein

                      CRLEntryExtension wird von der Bundesnetzagentur nicht benutzt

                      RFC5280 532 sperrdatum (revocation date) darf nicht vor dem Zeitraum der vorherigen CRLliegen sonst ist es in der vorherigen Liste Gultig (ansehen)

                      Aufbau des Pfad zum Vertrauensanker (RFC 5280 S72) Das beschriebene Prufverfahren istnicht normativ vorgeschrieben es reicht wenn die Funktion gleich ist

                      httpwwwbundesnetzagenturdemediaarchive1343pps

                      Kettenmodel benutzt den Erstellungszeitpunkt (nicht Gewahrleistungs-Beginn) (Folie3)

                      httpwwwbundesnetzagenturdeenid85f55115e236d80fc18329992037142d0FAQ

                      Antwortss4_wphtml

                      To do neu-ende

                      To do 20090701-fehlt

                      113

                      61 Praktische Ausschlachtung von kryptografischen Algorithmen mitSMIME und PKCS7

                      Root-Zertifikat erzeugenopenssl genrsa 1200 gt cakeypem

                      openssl req -x509 -new -key cakeypem -config opensslcnf gt cacert (selbst-signiertes neues root Zertifikat mit eigenem Config Script)

                      Root-Zertifikat anschauenopenssl x509 -in cacert -text -noout

                      Nutzer der eigenen CA erstellenopenssl req -new -config opensslcnf -out usercert Erstellt mehrere Dateienauch privkeypem

                      Zertifikat erstellenopenssl x509 -req -in userreq -CA cacert -CAkey cakeypem -CAcreateserial

                      -out usercert -extfile opensslcnf -extensions usr_cert (Zertifikat fur usermit Extenstions Version 3 statt Version 1)

                      Senden einer signierten Nachricht (Nachricht in Neutxt)openssl smime -sign -signer usercert -in Neutxt -inkey privkeypem

                      -out neusmime -text

                      Erzeugt Datei neusmime mit Nachricht und Signature -text erzeugt den Eintrag fur den Con-tent Type vor der Originalnachricht in neusmime

                      Umwandeln der SMIME Nachricht in PKCS7 Nachrichtopenssl smime -pk7out -in neusmime -out neupk7

                      Das gesamte (ohne Inhalt der Nachricht eigentlich nur die Signatur) SMIME Dokument wirdin eine PKCS7 Struktur eingebunden

                      Anschauen mitopenssl asn1parse -i -in neupk7

                      Zertifikate ausgeben mitopenssl smime pkcs7 -in neupk7 -print_certs -noout

                      Zertifikate anschauen mitopenssl smime pkcs7 -in neupk7 -print_certs -noout -txt

                      Verifizierenopenssl smime -verify -in neusmime -CAfile cacert

                      Verschlusseln

                      114

                      openssl smime -encrypt -in Neutxt -out neusmime -text usercer

                      Nachricht ohne Signatur verschlusselt

                      Entschlusselnopenssl smime -decrypt -in neusmime -text -recip usercer

                      -inkey privkeypem

                      Fur die Einbindung in Browseropenssl pkcs12 -export -name Annie -inkey privkeypem

                      -in usercert -out userp12

                      Um auch das CA Zertifikat mit einzubindenopenssl pkcs12 -export -name Annie -inkey privkeypem

                      -in usercert -out userp12 [-certfile cacert -CAfile cacert -chain]

                      Private Schlussel auspacken openssl pkcs8

                      62 PKCS

                      PKCS Public Key Cryptography Standards

                      1 RSA3 Diffie-Hellman5 Cryptography mit Passworten6 Zertifikate7 Cryptographic Message Syntax8 private Schlussel9 Attributtypen10 Zertifikatsrequest11 Cryptographic Token12 Personal Information Exchange13 Elliptische Kurven15 Chipkarten Token Formate

                      621 PKCS7 15 November 93 RFC 3852

                      To do neu-20090708

                      CMS

                      Email (SMIME)

                      115

                      XML Signaturen XMLDSIG XMLENC

                      Dokument rarr signiertes Dokument

                      openssl genpkey -algorithm rsa -pkeyopt rsa_keygen_bits300mdash openssl -chek -text -noout

                      zu kleine Werte (iexcl256) fur den Schlussel werden nicht akzeptiert (Wert ist immer noch etwasklein) Aber die Ausgabe ist nicht ganz korrekt

                      openssl genpkey -algorithm rsa -pkeyopt rsa_keygen_pubexp1

                      ist leider moglich

                      63 CMS(Cryptographic Message Syntax)

                      rfc3852

                      SignedData

                      bull Version

                      bull Hash Algorithmus

                      bull gekapselter Inhalt

                      bull Certifikat Liste

                      bull Widerrufungsliste (Sperrinformationen)

                      bull

                      bull Signer Infos (Signaturen davon kann es mehrere geben elektronische Signatur nach demSignaturgesetz Signer Info enthalt selber noch einmal einen Signaturblock - der als Digi-tale Signatur aufgefasst werden kann)

                      ndash Versionndash Idndash Attributesndash Algondash sig Valuendash

                      bull Signer Id

                      bull Signed Attributes (zB Zeit Ort Message Digest) Die Signatur dieses Blockes wird er-stellt indem der Hash Wert (nur des Blockes) signiert wird Wenn es signed Attributesgibt sind also auszligerdem Hash Wert des Dokuments und Inhaltstyp(Contenttype) im Si-gned Attributes enthalten und erst dann wird der Signed Attributes Block signiert Es wirdjeweils er Hash-Algorithmus verwendet der oben genannt wird

                      116

                      Auszligerdem Signing Certificate

                      bull

                      Frage ist wo wird der Wert Signiert der sagt welcher Hash-Algorithmus verwendet wird Wennnicht konnte man eventuell den Algorithmus austauschen

                      Man konnte den Hash-Algorithmus als SignedAttribute einfugen

                      To do neu-ende

                      CMS (Cryptographic Message Syntax) Beschreibung des Formates mit dem man Krypto-nachrichten erstellen kann

                      Kryptographische Nachricht Struktur vorne Bezeichner hinten Daten Daten = irgendwasspannend Welche Typen gibt es eigentlich

                      Signed-data Content-Type Was jetzt kommt sind signierte Daten Liste der unterstuetzen Has-hfunktion dann gekapselter Inhalt dann eine Liste von Zertifikaten (optional) optionalSperrlisten dann Signaturbloecke (SignerInfo)

                      SignedData = SEQUENCE

                      Versionsnummer

                      Liste der unterstutzten Hashfunktionen

                      Ursprungliche Nachricht selbst

                      Liste von Zertifikaten Optional

                      Sperrlisten Optional

                      Signer Infos

                      SignedInfo = SEQUENCE

                      Versionsnummer

                      Signer Identifier (Wer der Signierer eigentlich gewesen sein soll)

                      Hashfunktionen die bei der Signatur verwendet wird

                      Signierte Attribute

                      Verwendete Signaturalgorithmus

                      Signaturwert

                      Unsignierte Attribute

                      SignerInfo = SEQUENCE

                      Versionsnummer

                      Signer Identifier (Wer der Signierer eigentlich gewesen sein soll)

                      Bezeichner des Hashalgorithmus mit dem die endgultige Signatur erstellt wird

                      Signierte Attribute Optional

                      117

                      Signatur Algorithmus

                      Signature SignatureValue

                      Unsigned Attributes Optional

                      SignerIdentifier = SEQUENCE

                      issuerAndSerialNumber

                      subjectKeyIdentifier (Eindeutiger Hinweis wer der Aussteller ist)

                      SignerInfo Signaturblock der eine Datenstruktur fuer eine Signatur bereitstellt Steht drin Ver-sionsnummer SignerIdentifier verwendeter Hash-Algorithmus dann signierte Attributeverwendeter Signaturalgorithmus Signaturwert unsignierte Attribute

                      SignerIdentifier Aussteller und Seriennummer oder Schluesselidentifier (subjectKeyIdenti-fier)

                      Signierte Attribute Sammlung von Attributen die signiert sind Was dabei sein sollte erstesAttribut Content-Type wenn die signierten Daten nicht nur Rohdaten sind sondern gekap-selte Daten eine s bestimmten Typs Ein weiteres nuetzliches Attribut Message-DigestDann Signing-Time

                      Content-Type Object-Identifier der einen bestimmten Typ impliziert

                      Message-Digest Hash der aus den Daten ausgerechnet wird Als Octet-String

                      Signing-Time Zeit von der behauptet wird dass die Signatur zu dieser Zeit geleistet wurde

                      Signatur Es werden die signierten Attribute signiert dort ist auch der Hash des Dokumentsals messageDigest enthalten Wenn keine signedAttributes existieren wird das Dokumentdirekt gehasht

                      Weitere sinnvolle signierte Attribute

                      Commitment-Type Was bedeutet die Signatur zum Beispiel virtuelle Poststelle Eingangs-stempel Auslieferung Einschreiben Urheberschaft gelesen Zeitstempel (spezielleSignatur eines authentischen Zeitservers) ist eine Information dass das Dokument vor-her existiert hat

                      Signing Certificate Beschreibt mit welchem Schluessel zu welchem Zertifikat ist unterschrie-ben wordenwelches Zertifikat moechte der Signierer zur Ueberpruefung verwendet ha-ben Austausch des Zertifikats fuehrt zu anderer Urheberschaft ist ein realer AngriffVerhindert die Urheberschaft auszutauschen (rfc2634 S 46) Folge mit Zertifikats HashIssuerSerial(Herausgeber und Seriennummer) (leider ist da SHA1 als Algorithmus festge-legt)

                      in rfc5035

                      Folge mit Hash-Algorithmus (optional default ist aber SHA256) Zertifikat Hash IssuerSerial (Nun Hash als Octet String)

                      Da der Wert des Hash Algorithmus optional ist ist diese Variante ruckwartskompatibel

                      118

                      Signing Location Ort an dem die Signatur geleistet wurde

                      Weitere nuetzliche unsignierte Attribute

                      Zeitstempel ist eine Information wann die Signatur existiert hat Hash uber die Signatur TimeServer davon Signatur

                      not after Information fur die Signatur

                      Countersignature Zweite Signatur (Gegenzeichnung) Signaturblock uber eine andere Signa-tur

                      (Mitsignatur Bestatigung eines signierten Dokuments wichtiges Feld fur Mehrfachsigna-turen)

                      Hashwert des signature Feldes (3 Hash Wert) nicht alle in einander gekappselt sonderansammlung von Signaturen

                      Archiv Zeitstempel neuer Hash-Algorithmus signiert Dokument alle Signaturen alle Attri-bute (signiert unsigniert)

                      Damit kann mann folgendes machen

                      2001 2009 2010

                      RS A512 S HA1 S HA256 S HA512

                      Dok S ignatur t1 t2cc at1TTYY^^bb at2 at3

                      Fur XML XML-DSIC XML-ENC

                      7 Wichtige Neuerungen bei den Versionsanderungen

                      bull Von 098 zu 099 Verbesserungen bei den Extensions von Certificate Revocation Lists

                      bull Von 097h zu 098 UTF8-Support fur das ca-Kommando

                      bull SHA1 ist nun default-Hash-Algorithmus statt MD5

                      bull Patentierte Algorithmen RC5 und MD2 mussen beim Kompilieren extra angegeben wer-den

                      bull Neue FIPS 180-2 Algorithmen SHA-224-256-384-512 wurden implementiert

                      119

                      bull Neuer Parameter -selfsign fur das ca-Kommando

                      bull IPv6 Support bei den Zertifikatserweiterungen

                      bull Ausweitung der Eliptischen Kurven Bibliothek

                      8 OpenSSL hintergehen

                      81 die eine Primzahl ganz klein erzeugen

                      bull Offnen einer Datei in genrsa cryptorsarsa_genc

                      bull Andern den Teil ldquo generate p and q rdquo so daszlig die eine Primzahl 10bit lang ist(bitsp=10 )

                      bull Wir erzeugen einen neuen rsa key openssl genrsa -out rsaweakpem 2048und erstellen hierdurch eine Primzahl mit 10 bit die andere zufallig (also so in etwa2038bit)

                      bull Wir schauen uns den key an openssl rsa -in rsaweakpem -text -nooutund sehen die eine Primzahl ist 35879 die andere hat 2046 bit Lange Das kann manlecker faktorisieren

                      bull Offnen cryptobnbn_primeh die Zahl kommt durch den kleinen Primzahltest durchdieser geht nur bis ca 17000

                      82 beide Primzahlen nah beieinander

                      bull Und wieder in rsa_genc (Zeile 136 in der do-while-Schleife hinter degenerate)

                      bull BN_copy(rsa-gtq rsa-gtp) wir setzen q gleich pBA_add_word(rsa-gtq 20) wir addieren 20 auf q

                      for(i=1 BN_is_prime_ex(rsa-gtq 5 ctx NULL) i++)

                      BN_add_word(rsa-gtq 2)

                      wir erhoehen q bis zur naechsten Primzahl

                      bull hierdurch erzeugen wir zwei Primzahlen die sich enorm ahnlich sind (wieder mit obigenKommandos) Der Angreifer kennt in diesem Fall den Exponenten damit ist das Verfahrenvollig unsicher

                      83 Vorschrift des BSI

                      01 le |log10 p minus log10q| also p gt10radic

                      2 lowast qDas kann man aber mit q =10

                      radic2 lowast p im Quellcode umgehen

                      120

                      84 Programmierung Zufallszahlenerzeugung und andere nette features

                      Die ldquocallbackrdquo Funktion gibt den Fortschritt bei Suche nach p und q als Punkt (Fermat Primzah-lentest) und Plus (Miller-Rabin-Test) aus

                      DatentypStruktur zum Speichern der auftretenden groszligen Zahlen Binarfeld BIGNUMp ist unsigned char

                      p = BN_bn2hex((RSA )pub_rsa)-gtn) Zum Ausgeben eines BIGNUMs

                      ((pub_rsa)-gtn)d[] einzelne Teile im Datenblock eines BIGNUMs editieren

                      Zufallszahlen findet man in cryptorandrandh rand_libc randc

                      Diese beiden Kombinationen vor entsprechenden Programmen i2d oder d2i intern to data datato internpub_rsa = d2i_RSAPublickey(NULL ampstr len) (lange von str) Transfor-miert Binardaten Zeichenkette in interne public Key Datenstruktur mit ASN1

                      S(buf) gibt Speicherplatz frei uberschreibt ihn vorher noch einmal mit Zufallsbytes

                      9 Zusammenfassung

                      bull Symmetrische Verschlusselungsverfahren

                      ndash DES

                      64 Bit Blockchiffre

                      16 Runden Feistelnetzwerk mit 48 Bit Rundenschlusseln

                      56 Bit Schlussellange plus 8 Paritatsbits

                      XOR Transformationsfunktion mit S-Boxenndash IDEA

                      64 Bit Blockchiffre

                      8 Runden Feistelnetzwerk mit je 6 middot 16 Bit Rundenschlusseln

                      128 Bit Schlussellange

                      XOR ADD modulo 216 MULT modulo 216 + 1ndash Blowfish

                      64 Bit Blockchiffre

                      16 Runden Feistelnetzwerk

                      32-448 Bit Schlussellange

                      XOR Transformationsfunktion mit XOR CONCAT und viel Schlusselmaterialndash AES

                      121

                      128 192 256 Bit Blockchiffre

                      10 12 14 Runden Feistelnetzwerk

                      128 192 256 Bit Schlussellange

                      Substitution ShiftRow MixColumn KeyAddition

                      ndash RC4

                      Stromchiffre

                      10 12 14 Runden Feistelnetzwerk

                      variabele Schlussellange bis 2048 Bit

                      ndash RC5

                      wahlbare Blockchiffre (openssl 32 Bit)

                      wahlbare Runden Feistelnetzwerk (openssl 12)

                      wahlbare Schlussellange (openssl 128 Bit)

                      ndash GOST

                      64 Bit Blockchiffre

                      32 Runden Feistelnetzwerk

                      256 Bit Schlussellange

                      ADD ROT 8 S-Boxen

                      bull Asymmetrische Verschlusselungsverfahren

                      ndash RSA (Verschlusseln und Signieren)

                      ndash Diffie-Hellmann Schlusselaustausch

                      ndash ElGamal Crypto-System (basierend auf DH)

                      ndash Rucksackverschlusseln (gebrochen)

                      ndash Merkle Puzzle (viele Nachrichten)

                      ndash Rabin Verfahren

                      Zur Prufung erster Teil mit OpenSSL spielen zweiter Teil Konzepte eine Woche vor derPrufung evt fragen was dran kommen wird Prufungstermine 20072005 oder 04102005oder nach Vereinbarung

                      10 Mathematische Techniken

                      101 Multiplikatives Inverses

                      (nach wwwtzide˜hsLehreU9 mathD1pdf)

                      122

                      1011 Behauptung

                      Seien a b isin Z zwei teilerfremde ganze Zahlen dh ggT (a b) = 1 Dann existiert ein aprime isin Z mitaprime middot a equiv 1 mod b

                      1012 Beweis

                      Betrachte die Menge ak mod b|k isin N k ge 1 Da ggT (a b) = 1 gilt folgt dass ggT (ak b) = 1fur alle k isin N mit k ge 1 Denn da a teilerfremd zu b ist so gilt dies auch fur alle Potenzenvon a Daher ist die betrachtete Menge eine Untermenge der endlichen Menge x mod b|x isinZ ggT (x b) = 1 und daher selbst endlich Also kann existiert k1 k2 mit ak1 equiv ak2 mod bNehmen wir an k1 lt k2 und setzen n = k2 minus k1 dann gilt ak1 middot an = ak2 equiv ak1 mod bDaher folgern wir an equiv 1 mod b d h anminus1 middot a equiv 1 mod b Also setzen wir aprime = anminus1 und dieBehauptung ist erfullt

                      102 Kleiner Fermatscher Satz

                      1021 Behauptung

                      Aus der Wikipedia (unter GNU Free Documentation License)

                      Der kleine fermatsche Satz kurz der kleine Fermat ist ein Lehrsatz in der Zahlentheorie Ermacht eine Aussage uber die Eigenschaften von Primzahlen und wurde aufgestellt im 17 Jahr-hundert von Pierre de Fermat Dieser Satz beschreibt eine allgemein gultige Kongruenz

                      ap equiv a mod p

                      wobei a eine ganze Zahl und p eine Primzahl ist (die weitere Symbolik wird im Artikel Kon-gruenz beschrieben) Falls a kein Vielfaches von p ist kann man das Resultat in die haufigbenutzte Form

                      apminus1 equiv 1 mod p

                      bringen

                      1022 Beweis

                      Der Beweis beruht auf der Tatsache dass wenn zwei Zahlen a und b zueinander inkongruent(modulo einer festen Zahl n) sind auch die beiden Produkte x middot a und x middot b inkongruent modulon sind fur x gt 0 und ggT (x n) = 1

                      Denn

                      123

                      sei a b mod n n eine Primzahl a b naturliche Zahlen Angenommen

                      a middot x equiv b middot x mod n

                      fur eine naturliche Zahl x mit ggT (x n) = 1 Dann gibt es eine naturliche Zahl k so dass

                      a middot x minus b middot x = k middot n

                      x middot (a minus b) = k middot n

                      x = n middot (k(a minus b))

                      Da n eine Primzahl und x eine naturliche Zahl ist ist k(a minus b) entweder eine naturliche Zahlminus1n oder 1n Die letzten beiden Falle widersprechen der Annahme dass a b mod n dererste Fall widerspricht der Annahme dass ggT (x n) = 1 Damit ist die Annahme falsch und esgilt fur x so dass ggT (x n) = 1

                      a middot x b middot x mod n

                      Aus der Wikipedia (unter GNU Free Documentation License)

                      Im folgenden betrachtet man zum einen die Menge A aller Reste mod p - also alle naturlichenZahlen kleiner als p und zum anderen die Menge B die diese Reste multipliziert mit a enthaltZwei beliebige Zahlen aus A sind zueinander inkongruent modulo p Aus dem oberen Satzfolgt dass damit auch zwei beliebige Zahlen aus B zueinander inkongruent sind Dadurchergibt sich dass das Produkt uber alle Zahlen aus A kongruent zum Produkt aller Zahlen aus Bist

                      1 middot 2 middot 3 middot middot middot middot middot (p minus 1) equiv (1 middot a) middot (2 middot a) middot middot middot middot middot ((p minus 1) middot a) mod p

                      alsoW equiv W middot apminus1 mod p

                      wobei W das Produkt 1 middot2 middot3 middot middot(pminus1) ist Da es in Restklassenkorpern stets ein multiplikativesInverses gibt kann man diese W dividieren und man erhalt

                      apminus1 equiv 1 mod p

                      1023 Verallgemeinerung

                      Man kann den kleinen fermatschen Satz zum Satz von Euler verallgemeinern Fur zwei teiler-fremde Zahlen n und a gilt

                      aϕ(n) equiv 1 mod n

                      wobei ϕ(n) die Eulersche Phi-Funktion bezeichnet Diese hat als Ergebnis die Anzahl der Zah-len zwischen 1 und nminus1 welche teilerfremd zu n sind Ist n eine Primzahl so ist ϕ(n) = nminus1 sodass man Fermats kleinen Satz als Spezialfall erhalt Mit Hilfe des kleinen fermatschen Satzesentwickelte Fermat den fermatschen Primzahltest

                      124

                      1024 Praktische Anwendung auf Primzahlen

                      (p - a a lt p a 0)Wenn gilt apminus1 1 mod p ist dann kann p keine Primzahl sein (Umkehrung muss nicht

                      gelten) Wenn man mit a beiweisen kann das p keine Primzahl sein kann dann nennen wir aKanditat (Es gibt aber sogenannte Carmichaelzahlen die kein Kandidat ist)

                      To do nacharbeiten Carmichaelzahlen

                      Wenn (p minus 1) gerade ist pminus12 = k eine Ganzzahl

                      Ist a2k equiv 1 mod p(ak)2 equiv p(ak minus 1)(ak + 1) equiv 0 mod pAlso wenn p eine Primzahl ist dann ist entweder ak equiv 1 mod p oder ak equiv 1 mod pDaraus folgt wenn ak 1 mod p und ak minus1 mod p dann ist p keine PrimzahlSomit gilt auch wenn k gerade ist und a

                      k2 1 und a

                      k2 minus1 dann ist p keine Primzahl

                      Betrachten p minus 1 = 2t middot r (r ungerade) Sei a lt p und p - aIn ar a2r a22middotr a2t middotr = apminus1 (Reste mod p)Wenn die Folge nicht mit 1 endet ist p keine Primzahl Wenn vor der ersten 1 in der Folge

                      keine 1 steht ist p keine PrimzahlWir nennen a einen Zeugen wenn man mit a beweisen kann das p keine Primzahl istJede Zahl p die keine Primzahl ist hat mindestens 3

                      4 aller Zahlen a (mit ggT(a p) = 1) alsZeugen (Jeder Kandidat ist ein Zeuge)

                      Damit ergibt sich der Rabin-Miller-Test Wahle zufallig ein a lt p und teste ob a ein Zeugeist Mit hoher (beliebig genauer) Wahrscheinlichkeit ist p Primzahl

                      Bei groszligen Zahlen werden die Zeugen mehr

                      openssl genrsa -out keyrsa 800

                      Generating RSA private key 800 bit long modulus

                      +++++++

                      +++++++

                      e is 65537 (0x10001)

                      Generiert den Schlussel und speichert in rsquokeyrsarsquo Punkte Bedeutet keine kleine PrimzahlRabin-Miller Test schlagt fehl Plus ist ein erfolgreicher Rabin Miller Test bei groszligeren Zahlenbrauch man weniger Tests da es mehr Zeugen gibt

                      []

                      103 Chinesischer Restklassensatz

                      (nach wwwtzide˜hsLehreU9 mathD1pdf)

                      125

                      1031 Behauptung

                      Seien m1m2 mr paarweise teilerfremde ganze Zahlen d h ggT (mim j) = 1 fur alle i j(i j isin 1 2 r) und sei M = m1 middotm2 middotmr Dann existiert fur jede Liste a1 ar mit 0 le ai lt

                      mi fur 1 le i le r genau ein x isin Z mit 0 le x lt M welches effizient berechnet werden kann undfur das gilt

                      x equiv a1 mod m1

                      x equiv a2 mod m2

                      x equiv ar mod mr

                      Bemerkung Es ist leicht einzusehen dass jedes xprime isin Z mit xprime = x + k middot M fur ein k isin Z d hxprime equiv x mod M genau dasselbe Gleichungssystem lost wie x Der Beweis wird zeigen dass furein gegebenes x nur xprime von dieser Form dasselbe Gleichungssystem losen konnen

                      1032 Beweis

                      Zunachst beweisen wir die Existenz und setzen dazu Mi = Mmi daher gilt ggT (Mimi) = 1Aus diesem Grund existiert auch ein multiplikatives Inverses Ni isin Z mit Mi middot Ni equiv 1 mod mi

                      (vgl multiplikative Inverse) Zu beachten ist jedoch dass fur alle j isin 1 r mit i j stetsMi middot Ni equiv 0 mod m j gilt Nun definieren wir x via

                      x equivrsum

                      i=1

                      ai middot Mi middot Ni mod M

                      Fur jedes i existiert ein v isin Z so dass x sich folgendermaszligen darstellen lasst

                      x = Mi middot Ni middot ai + v middot mi

                      Dies gilt da jedes M j mit j i mi als Faktor enthalt Offensich erfullt x also die obigen Glei-chungen x ist das einzige mit 0 le x lt M welches fur die gegebene Liste a1 a2 ar alleGleichungen lost denn falls xprime und xprimeprime zwei verschiedene Losungen sind so gilt xprime minus xprimeprime equiv 0mod mi fur alle i isin 1 r d h xprimeminus xprimeprime ist ein Vielfaches aller mi und damit auch von M da nachVoraussetzung ggT (mim j) = 1 fur alle i j isin 1 r mit i j erfullt ist Somit folgt xprime equiv xprimeprime

                      mod M d h 0 le xprime xprimeprime lt M kann nicht auftreten und der Beweis ist abgeschlossen

                      126

                      104 Square and multiply

                      Der folgende rekursive Algorithmus berechnet xn fur naturliche Zahlen x und n indem sukzes-sive der Exponent reduziert wird

                      bull Falls n = 1 xn = x

                      bull Sonst falls n gerade xn = (x2)n2

                      bull Sonst xn = x middot (x2)(nminus1)2

                      Damit kann xn in O(ln(n)) Rechenschritten (quadrieren und multiplizieren) berechnet werdenindem in jedem Schritt des Algorithmus der Exponent halbiert wird und hochstens vier Berech-nungen ausgefuhrt werden

                      105 Montgomery Reduktion (Moduloberechnung ohne Division)

                      Heute was ganz verrucktes Modulo-Multiplikation ohne Division

                      Problem bei RSA und anderen Algorithmenm Modul gegeben und g Zahl gegeben und man rechnet aus ga mod mAufwand der Berechnung mit Square and Multiply Groszlige des Exponenten in Bits Multiplika-tionen + gleichviele ModulooperationenBerechnung von x middot y mod m = x middot y minus (x middot y div m) lowast mDivision aufwendig Daher Methode dies ohne Division bzw mit einer schmerzfreien Divisiondurch eine Zweierpotenz zu tun Dafur Kosten von Hin- und RucktransformationenHier Skizze 1xrarr X = x middot r mod myrarr Y = y middot r mod mX lowast Y = X middot Y middot rminus1 = x middot y middot r mod m

                      Wir berechnen t0 equiv minusmminus1 mod r (Preprocessing)

                      1 x minusrarr X = x middot r mod m

                      2 y minusrarr Y = y middot r mod m

                      3 X lowast Y = X middot Y middot rminus1 mod m= x middot r middot y middot r middot rminus1 = x middot y middot r mod m

                      Zur Bestimmung von X lowast Y t1 = X middot Y echte Multiplikationt2 = t1 middot t0 mod r Multiplikation untent3 = (t1 + t2 middot m) div r Multiplikation obent3 = X lowast Y oder (t3 minus m) = X lowast Y

                      127

                      1 t3 ist durch r teilbar

                      2 t3 equiv X middot Y middot rminus1 mod m

                      3 0 le t3 le 2m

                      Zu 1 t1 + t2 middot mequiv t1 + t1 middot t0 middot m mod requiv t1 + t1 middot m middot (minusm)minus1 mod requiv t1 minus t1 equiv 0 mod r

                      Zu 2 (t1+t2middotm)r = t3 mod m

                      (t1 middot t2 middot m) middot rminus1 mod mequiv t1 middot rminus1 + t2 middot rminus1 middot mequiv X middot Y middot rminus1 mod m

                      Beispiel 5 lowast 3 =

                      t1 = 15t2 = 15 middot 23 mod r = 45t3 = 15 + 45 middot 13 = 6

                      Zu 3t1 le (m minus 1)2

                      t2 middot m lt r middot mt1 + t2 middot m lt 2 middot r middot m

                      t3 lt 2 middot m

                      t3 equiv X middot Y middot rminus1 mod mx lowast r2 = X = x middot r mod mX lowast 1 = x mod m

                      Beispiel m = 13 r = 100 t0 = 23

                      r mod m r = 9 mod 13r2 = 3 mod 13

                      Ziel 6 middot 5 mod 13

                      6 lowast 3 = 25 lowast 3 = 6

                      128

                      2 lowast 6 =

                      t1 =

                      t2 =

                      t3 = xx

                      x lowast 1 =

                      Wenn eine Division langer als 1 5 Multiplikationen dauert dann lohnt sich das Verfahren DerErfinder heisst ubrigens Peter L Montgomery (Montgomery Reduktion) wwwmiinformatikuni-frankfurtdeteachingws0001krypto algomontgomerypdf

                      Montgomery-Multiplikation

                      To do siehe Mathematischer Anhangzusammenfugen

                      Die Reduktion modulo m erfordert eine Division aber Divisionen sind rsquoteuerrsquo

                      Dies kann man aber wie folgt vereinfachen

                      Um die Division zu vermeiden rsquotransformiertrsquo man die Zahlen

                      Sei gesucht das Produkt x middot y mod m

                      x minusrarr X y minusrarr Y x middot y minusrarr X lowast Y

                      R = (zweierPotenz) gt m und die Division durch R muss einfach sein

                      X = x middot R mod m

                      X lowast Y = X middot Y middot Rminus1 mod m (wobei die modulo Reduktion nun nicht mehr jedes mal ausgefuhrtwerden muss sonder nur am Anfang und am Ende der rsquoTransformationrsquo)

                      1 Berechne mprime = minusmminus1 mod R

                      (minusmR) = 1 rArr XGCD mprime middot m = minus1 mod R

                      2 t = X middot Y (echte Multiplikation)

                      3 t1 = t middotmprime mod R (echte Multiplikation und oben abschneiden also eine leichtere moduloReduktion da R eine zweier Potenz ist) (dabei gilt t2 lt m2 + R middot m)

                      4 t2 = t + t1 middot m (echte Multiplikation und eine Addition) (dabei gilt t3 lt(m+R)middotR

                      R = 2m)

                      5 t3 = t2divR (also rsquounten abschneidenrsquo)

                      6 Wenn t3 gt m dann t3 = t3 minus m

                      129

                      Nun ist t3 = X lowast Y Dafur muss t3 lt m sein oder in Schritt 6 t3 lt 2m sein

                      Wir mussten also prufen

                      1 t3 lt m

                      2 Division in 5 rsquogeht aufrsquo

                      t2 ist durch r teilbar

                      t2 mod R equiv (t + t1 middot m) equiv t + (t middot mprime) middot m mod R equiv t + t(minus1) mod R equiv 0 mod R

                      3 t3 = X lowast Y

                      t3 middot R mod m equiv t2R middot R mod m equiv t2 equiv t + t1 middot m equiv t mod m equiv X middot Y mod m

                      Wir haben also den folgenden Aufwand

                      1 rsquoTransformationrsquo

                      2 rsquoRechnungrsquo

                      3 Zuruck rsquotransformierenrsquo

                      x lowast R2 = x middot R2 middot Rminus1 mod m = x middot R = X mod m

                      X lowast 1 = X middot 1 middot Rminus1 equiv x middot R middot Rminus1 equiv x mod m

                      Man benotigt also zwei zusatzliche Operationen zur transformation Dafur kommt die Operationrsquorsquo ohne Divisionen aus

                      Beispiel m = 17

                      R = 100

                      7 middot 11 mod 17

                      x lowast y mod mdarr darr

                      X Y= =

                      (x middot R) mod m lowast (y middot R) mod m

                      m1 = minusmminus1 mod 100

                      suche also ein m1 mit m1 middot 17 = minus1 mod 100

                      m1 = 47

                      130

                      To do Bsp Magma Quelltext siehe Homepage

                      Bem dazu Wenn R groszlig genug ist kann man die Subtraktion von m weglassen

                      Mathematischer Hintergrund (Zm+ middot)simminusrarr (Zm+ lowast) Was ist das Einselement und das

                      Inverse

                      106 Nochwas

                      vielleicht

                      zur Prufung Zwei Teile (ein theoretischer ein praktischer) Ein openssl-Kommando das in derVL nicht behandelt wurde wird drankommen (zum Beispiel speed ca etc) Theoretischer Teil

                      1 symmetrische Verfahren (was sind symmetrische Verfahren wodurch charakterisiert)

                      2 Integritatsschutz (wie kann man Integritatsschutz gewahrleisten)

                      3 asymmetrische verfahren (siehe 1)

                      4 Signatur (was sind Signaturen wofur verwendet man sie was ist ˜konzept was ist sicherwas ist unsicher)

                      5 Vertrauensstruktur (zum Beispiel PGP)

                      6 Client-Server-Authentisierung (SSL-Protokoll Kerberos)

                      7 Sicherheitsparameter (wo sind die welchen Einfluszlig auf die Sicherheit haben sie)

                      8 X509 (elektronische Identitat)

                      9 RFC-Security (3280 3279 3446 )

                      Mathematische Verfahren

                      1 Square and Multiply Double and Add

                      2 Euklidischer Algorithmus

                      3 RSA DH

                      4 DSA

                      5 AES

                      6 das eine oder andere symmetrische Verfahren Strom-Blockchiffre

                      7 Elliptische Kurven eher nicht reicht zu wissen dass man mit Addition in EK das gleicheerreichen kann wie mit Multiplikation im Restklassenkorper

                      8 kleiner Fermat eher nicht

                      131

                      9 Montgomery-Multiplikation vielleicht auch nicht sollte aber bekannt sein

                      Fur MD5- AES- etc Grundfunktionen reicht evt wissen wo man nachschauen muss

                      Dann nachweisen dass man mit Openssl spielen kann

                      1 Verschlusseln mit DES3DESBFAES

                      2 Prufsummenberechnung

                      3 Konfigurationsfile

                      4 RSA-Verschlusselung

                      5 098 ndash 097 (dynamisch)

                      6 Zertifikat

                      7 DSA-Verschlusselung

                      8 Passworter (passwd) und Salt

                      9 E-Mail-Nachricht erstellen und sichern (SMIME-Anwendung)

                      Zum Punkt Ich mochte eine 1 haben was muss ich dafur tun Was haben sie ausserhalb derVorlesung schonmal gelesen Was fehlte ihnen an der Vorlesung was fanden sie doof

                      132

                      • 1 Einfuumlhrung
                        • 11 Verschluumlsselung
                        • 12 Beispiel rot13
                        • 13 Block-Chiffre
                        • 14 Strom-Chiffre
                        • 15 Angriffstypen
                          • 151 Differentielle Kryptoanalysis
                            • 16 Base64
                              • 2 OpenSSL
                              • 3 Symmetrische Verschluumlsselungsverfahren
                                • 31 Feistel-Chiffren
                                • 32 DES - Data Encryption Standard
                                  • 321 Schluumlsselauswahl
                                  • 322 Funktionsweise
                                  • 323 Schwachstellen und Unsinnigkeiten
                                  • 324 spezielle Optionen bei openssl
                                  • 325 DESECB - Electronic Code Book
                                  • 326 DESCBC - Cipher Block Chaining
                                  • 327 DESOFB - Output Feed Back
                                  • 328 DESCFB - Cipher Feed Back
                                  • 329 CTR Mode CCM
                                  • 3210 TEA-Algorithmus
                                  • 3211 DES-X
                                    • 33 IDEA International Data Encryption Algorithm
                                      • 331 Schluumlsselauswahl
                                      • 332 Funktionsweise
                                      • 333 Pseudocode-multiplikation
                                      • 334 Schwachstellen
                                        • 34 Blowfish
                                          • 341 Initialisierung
                                          • 342 Verschluumlsselung
                                            • 35 AES Advanced Encryption Standard
                                              • 351 Wiederholung-Byteoperation
                                              • 352 Uumlberblick
                                              • 353 mathematische Grundlagen
                                                • 36 RC4 Rons Cipher 4
                                                  • 361 Geschichte
                                                  • 362 Beschreibung
                                                  • 363 Der Pseudo-Zufalls-Algorithmus
                                                  • 364 Der Schluumlsselerzeugungs-Algorithmus
                                                  • 365 Implementation
                                                  • 366 Sicherheit
                                                  • 367 Fluhrer Mantin und Shamir Angriff
                                                    • 37 RC5 Rons Cipher 5
                                                      • 371 Verschluumlsselung
                                                      • 372 Schluumlsselexpansion
                                                        • 38 GOST 28147-89 Gosudarstvennyi Standard Soyuza SSR nicht in OpenSSL
                                                        • 39 FazitWie koumlnnte bei einen Symmetrischen Algorithmus die Sicherheit erhoumlhen
                                                          • 4 Asymmetrische Verschluumlsselungsverfahren
                                                            • 41 Einfuumlhrung
                                                              • 411 Beispiel
                                                                • 42 Geschichte
                                                                • 43 Einige Theoretische Grundlagen
                                                                  • 431 Kleiner Fermat (oder kleiner Fermatscher Satz)
                                                                  • 432 Euklidischer Algorithmus
                                                                  • 433 Beispiel
                                                                    • 44 RSA Rivest Shamir Adleman
                                                                      • 441 Funktionsweise des RSA-Verfahrens
                                                                      • 442 Beweis der Funktionsweise
                                                                        • 45 Schwaumlchen von RSA
                                                                        • 46 Fuktionen in OpenSSL
                                                                          • 461 genrsa
                                                                          • 462 rsa
                                                                          • 463 rsautl
                                                                          • 464 PKCS
                                                                          • 465 OAEP - Optimal Asymmetric Encryption Padding
                                                                          • 466 Wie erkennt man an Ciphertexten den Verschluumlsselungsalgorithmus- DER ASN1
                                                                          • 467 Umgehen mit den Schluumlsselkomponenten
                                                                            • 47 Miller-Rabin Test
                                                                            • 48 Diffie-Hellman-Schluumlsselaustausch
                                                                            • 49 ElGamal-Cryptosystem
                                                                            • 410 Wiederholung DH
                                                                              • 4101 Beispiel
                                                                                • 411 was anderes
                                                                                • 412 Elliptische Kurven
                                                                                • 413 Elliptische Kurven Nachtrag
                                                                                • 414 Rucksack-Verschluumlsseln
                                                                                  • 4141 Beispiel
                                                                                    • 415 Merkle Puzzle
                                                                                    • 416 Rabin-Verfahren und Wurzelziehen
                                                                                      • 4161 Schluumlsselgenerierung
                                                                                      • 4162 Kongruenzbedingung
                                                                                      • 4163 Verschluumlsselung
                                                                                      • 4164 Entschluumlsselung
                                                                                        • 417 Angriffe auf asymmetrische Verschluumlsselungsverfahren
                                                                                          • 4171 1 Angriff Common modulus attack
                                                                                          • 4172 2 Angriff kleiner geheimer Exponent d
                                                                                          • 4173 3 Angriff Faktorisieren
                                                                                          • 4174 Echt schlechte RSA-Schluumlssel
                                                                                          • 4175 Schnelles Faktorisieren bei Fehler im System
                                                                                          • 4176 Angriff mit gewaumlhltem Chiffretext
                                                                                              • 5 Signaturmechanismen
                                                                                                • 51 Integritaumltsschutz und Hashfunktionen
                                                                                                  • 511 Schluumlssellose Hashfunktion (Pruumlfsummen ohne Schluumlssel)
                                                                                                  • 512 Demonstration Faumllschung
                                                                                                    • 52 Unterschied MD5 und SHA
                                                                                                    • 53 Secure Hash Standard SHA-2
                                                                                                      • 531 Problem bei MD5 und SHA-0
                                                                                                      • 532 MACs (Message Authentication Codes) (Pruumlfsummen mit Schluumlsseln)
                                                                                                        • 54 Whirlpool
                                                                                                        • 55 Zusammenfassung
                                                                                                        • 56 Digitale Signaturen
                                                                                                          • 561 RSA
                                                                                                          • 562 Eigenschaften eines asymmetrischen Verschluumlsselungsverfahren
                                                                                                          • 563 RSASSA-PSS-Padding
                                                                                                          • 564 DSA
                                                                                                          • 565 ECDSA - DSA mit Elliptischen Kurven
                                                                                                            • 57 Widerrufen von Zertifikaten
                                                                                                            • 58 Was es noch so gibt
                                                                                                              • 581 blinde Signaturen
                                                                                                              • 582 anonyme Signaturen
                                                                                                                  • 6 Zertifikate
                                                                                                                    • 603 X509
                                                                                                                      • 604 Erweiterungen
                                                                                                                      • 605 Erzeugung
                                                                                                                      • 606 Guumlltigkeit
                                                                                                                        • 61 Praktische Ausschlachtung von kryptografischen Algorithmen mit SMIME und PKCS7
                                                                                                                        • 62 PKCS
                                                                                                                          • 621 PKCS7 15 November 93 RFC 3852
                                                                                                                            • 63 CMS(Cryptographic Message Syntax)
                                                                                                                              • 7 Wichtige Neuerungen bei den Versionsaumlnderungen
                                                                                                                              • 8 OpenSSL hintergehen
                                                                                                                                • 81 die eine Primzahl ganz klein erzeugen
                                                                                                                                • 82 beide Primzahlen nah beieinander
                                                                                                                                • 83 Vorschrift des BSI
                                                                                                                                • 84 Programmierung Zufallszahlenerzeugung und andere nette features
                                                                                                                                  • 9 Zusammenfassung
                                                                                                                                  • 10 Mathematische Techniken
                                                                                                                                    • 101 Multiplikatives Inverses
                                                                                                                                      • 1011 Behauptung
                                                                                                                                      • 1012 Beweis
                                                                                                                                        • 102 Kleiner Fermatscher Satz
                                                                                                                                          • 1021 Behauptung
                                                                                                                                          • 1022 Beweis
                                                                                                                                          • 1023 Verallgemeinerung
                                                                                                                                          • 1024 Praktische Anwendung auf Primzahlen
                                                                                                                                            • 103 Chinesischer Restklassensatz
                                                                                                                                              • 1031 Behauptung
                                                                                                                                              • 1032 Beweis
                                                                                                                                                • 104 Square and multiply
                                                                                                                                                • 105 Montgomery Reduktion (Moduloberechnung ohne Division)
                                                                                                                                                • 106 Nochwas

                        top related