OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. ·...

132
Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-G¨ unter Giessmann Peter Haider, Ulf Hermann, Mathias Jeschke, Jens Kleine & Henryk Pl¨ otz (haider|uhermann|jeschke|jkleine|ploetz)@informatik.hu-berlin.de WS 2004/2005 und SS 2005 8. Juli 2009 (Revision: 1.93 ) Humboldt-Universit¨ at zu Berlin Institut f ¨ ur Informatik 1

Transcript of OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. ·...

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

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
Page 2: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,

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
Page 3: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,

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
Page 4: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,

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
Page 5: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,

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
Page 6: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,

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
Page 7: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,

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
Page 8: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,

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
Page 9: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,

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
Page 10: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,

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
Page 11: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,

-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
Page 12: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 13: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 14: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 15: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 16: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 17: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 18: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 19: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 20: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 21: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 22: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 23: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 24: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 25: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 26: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 27: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 28: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 29: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 30: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 31: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 32: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 33: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 34: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 35: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 36: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 37: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 38: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 39: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 40: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 41: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 42: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 43: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 44: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 45: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 46: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 47: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 48: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 49: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 50: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 51: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 52: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 53: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 54: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 55: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 56: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 57: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 58: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 59: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 60: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 61: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 62: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 63: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 64: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 65: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 66: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 67: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 68: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 69: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 70: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 71: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 72: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 73: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 74: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 75: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 76: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 77: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 78: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 79: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 80: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 81: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 82: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 83: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 84: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 85: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 86: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 87: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 88: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 89: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 90: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 91: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 92: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 93: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 94: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 95: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 96: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 97: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 98: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 99: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 100: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 101: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 102: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 103: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 104: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 105: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 106: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 107: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 108: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 109: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 110: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 111: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 112: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 113: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 114: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 115: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 116: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 117: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 118: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 119: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 120: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 121: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 122: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 123: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 124: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 125: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 126: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 127: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 128: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 129: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 130: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 131: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,
Page 132: OpenSSL – Kryptologie in C - hu-berlin.dewilhelm/openssl... · 2009. 7. 8. · Vorlesungsmitschrift OpenSSL – Kryptologie in C Dozent: Dr. Ernst-Gunter Giessmann¨ Peter Haider,