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)
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
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
-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