Post on 07-Mar-2021
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