28.12.2013 Aufrufe

IT-Security Teil 15: Hash-Verfahren, Zeitstempel, Zufall

IT-Security Teil 15: Hash-Verfahren, Zeitstempel, Zufall

IT-Security Teil 15: Hash-Verfahren, Zeitstempel, Zufall

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

<strong>IT</strong>-<strong>Security</strong><br />

<strong>Teil</strong> <strong>15</strong>: <strong>Hash</strong>-<strong>Verfahren</strong>, <strong>Zeitstempel</strong>, <strong>Zufall</strong><br />

<strong>IT</strong>Sec – SS 2013 - <strong>Teil</strong> <strong>15</strong>/<strong>Hash</strong>-<strong>Verfahren</strong>, <strong>Zeitstempel</strong>, <strong>Zufall</strong> 28.05.13 1


Übersicht<br />

• <strong>Hash</strong>-Funktionen<br />

• (Pseudo-)<strong>Zufall</strong>sgeneratoren<br />

• <strong>Verfahren</strong> für <strong>Zeitstempel</strong><br />

<strong>IT</strong>Sec – SS 2013 - <strong>Teil</strong> <strong>15</strong>/<strong>Hash</strong>-<strong>Verfahren</strong>, <strong>Zeitstempel</strong>, <strong>Zufall</strong><br />

2


Authentifizierung von Nachrichten I<br />

• Authentifizierung von Nachrichten = Prüfung, ob eine Nachricht<br />

in der vorliegenden Form von einer bestimmten Identität<br />

stammt, d.h.<br />

Inhalt und Herkunft werden geprüft.<br />

• Modifikationserkennungswert = Modification Detection Code =<br />

MDC = <strong>Hash</strong>-Wert (Fingerabdruck) von Nachrichten<br />

• Nachrichtenauthentifizierungswerte = Message Authentication<br />

Code = MAC = <strong>Hash</strong>-Wert (Fingerabdruck) von Nachrichten,<br />

wobei ein geheimer Schlüssel verwendet wird.<br />

• Mit einem MAC lässt sich die Integrität sowie die Herkunft einer<br />

Nachricht nachweisen, mit MDC nur die Integrität.<br />

<strong>IT</strong>Sec – SS 2013 - <strong>Teil</strong> <strong>15</strong>/<strong>Hash</strong>-<strong>Verfahren</strong>, <strong>Zeitstempel</strong>, <strong>Zufall</strong><br />

3


Authentifizierung von Nachrichten II<br />

Sender<br />

Empfänger<br />

(1)<br />

Nachricht<br />

Nachricht<br />

Nachricht<br />

H<br />

H<br />

Key<br />

Key<br />

= ?<br />

E<br />

D<br />

(2)<br />

Nachricht<br />

Nachricht<br />

Nachricht<br />

H<br />

H<br />

Secret-Key<br />

Public-Key<br />

= ?<br />

E<br />

D<br />

<strong>IT</strong>Sec – SS 2013 - <strong>Teil</strong> <strong>15</strong>/<strong>Hash</strong>-<strong>Verfahren</strong>, <strong>Zeitstempel</strong>, <strong>Zufall</strong><br />

4


Authentifizierung von Nachrichten III<br />

Sender<br />

Empfänger<br />

(3)<br />

H<br />

Nachricht<br />

Nachricht<br />

Nachricht<br />

H<br />

= ?<br />

Dies ist eine Variante, bei der ein geheimer <strong>Teil</strong> der Nachricht beim<br />

Erzeugen des <strong>Hash</strong>-Wertes hinzugefügt wird.<br />

Dieser <strong>Teil</strong> wird natürlich nicht übertragen.<br />

<strong>IT</strong>Sec – SS 2013 - <strong>Teil</strong> <strong>15</strong>/<strong>Hash</strong>-<strong>Verfahren</strong>, <strong>Zeitstempel</strong>, <strong>Zufall</strong><br />

5


Bemerkungen<br />

• Zum 1. <strong>Verfahren</strong> (1)<br />

Es wird ein gemeinsames Geheimnis (key) auf beiden Seiten zur<br />

Verschlüsselung des <strong>Hash</strong>wertes benutzt.<br />

Dies ist der symmetrischen Verschlüsselung sehr ähnlich.<br />

• Zum 2. <strong>Verfahren</strong> (2)<br />

Es wird das Prinzip der elektronischen Unterschrift (Signatur)<br />

angewandt.<br />

• Zum 3. <strong>Verfahren</strong> (3)<br />

Es wird an die Nachricht ein Geheimnis, das beide Seiten kennen<br />

müssen, angehängt und den <strong>Hash</strong> über beide <strong>Teil</strong>e gebildet.<br />

<strong>IT</strong>Sec – SS 2013 - <strong>Teil</strong> <strong>15</strong>/<strong>Hash</strong>-<strong>Verfahren</strong>, <strong>Zeitstempel</strong>, <strong>Zufall</strong><br />

6


Definition <strong>Hash</strong>-Funktion I<br />

• <strong>Hash</strong>-Funktion = Funktion h(x), für die folgendes gilt:<br />

– Kompression: Abbildung eines beliebigen Bitstrings auf einen<br />

Ausgabewert mit einer festen in der Regel kurzen Länge.<br />

Dieser ist der <strong>Hash</strong>-Wert.<br />

– Einfachheit: Für jeden Eingabewert x lasst sich die Funktion h(x) mit<br />

geringem Aufwand berechnen.<br />

• Beispiele:<br />

– Berechnung des Paritätsbits: Rechnernetze<br />

– Cyclic Redundancy Check (CRC): Rechnernetze, Plattenblöcke<br />

– Indizierung von Tabellen einer relationalen Datenbank<br />

– Zugriff auf Symboltabellen innerhalb von Compilern<br />

<strong>IT</strong>Sec – SS 2013 - <strong>Teil</strong> <strong>15</strong>/<strong>Hash</strong>-<strong>Verfahren</strong>, <strong>Zeitstempel</strong>, <strong>Zufall</strong><br />

7


Definition <strong>Hash</strong>-Funktion II<br />

• Kryptographische <strong>Hash</strong>-Funktion = <strong>Hash</strong>-Funktion h(x), für die<br />

zusätzlich noch folgendes gilt:<br />

– Unbestimmbarkeit von Urbildern:<br />

Nur mit erheblichen Aufwand ist das x für ein gegebenes y bei<br />

y=h(x) zu bestimmen.<br />

– Unbestimmbarkeit eines weiteren Urbildes:<br />

Nur mit erheblichen Aufwand ist für ein gegebenes x ein weiteres x'<br />

zu bestimmen, wobei h(x)=h(x') gilt.<br />

– Kollisionsfreiheit (Collision Resistance):<br />

Nur mit erheblichen Aufwand sind zwei beliebige x und x' zu<br />

bestimmen, wobei h(x)=h(x') gilt.<br />

Siehe dazu: http://de.wikipedia.org/wiki/Kryptologische_<strong>Hash</strong>funktion<br />

<strong>IT</strong>Sec – SS 2013 - <strong>Teil</strong> <strong>15</strong>/<strong>Hash</strong>-<strong>Verfahren</strong>, <strong>Zeitstempel</strong>, <strong>Zufall</strong><br />

8


Bemerkungen<br />

• Kollision = Eine Kollision liegt vor, wenn derselbe <strong>Hash</strong>-Wert<br />

anhand verschiedener Urbilder erzeugt werden kann.<br />

• Da das Urbild x (fast) immer größer ist als der <strong>Hash</strong>-Wert, z.B.<br />

160 bit, sind Kollisionen prinzipiell nie zu vermeiden:<br />

Beispiel: Block von 1 kbyte: 2 1024*8 Bit-Kombinationen werden auf<br />

2 160 Möglichkeiten abgebildet.<br />

• Praktisch haben Kollisionen nur in wenigen Fällen Relevanz, da<br />

menschlich lesbare Texte, z. B. Verträge, nur eine sehr kleine<br />

<strong>Teil</strong>menge aller Bitkombinationen benutzen.<br />

Aber: Durch Einfügen/Entfernen von Blanks o.ä. lässt sich<br />

"derselbe" Vertrag variieren, so dass zwei verschiedene Verträge<br />

denselben <strong>Hash</strong>-Wert ergeben könnten.<br />

<strong>IT</strong>Sec – SS 2013 - <strong>Teil</strong> <strong>15</strong>/<strong>Hash</strong>-<strong>Verfahren</strong>, <strong>Zeitstempel</strong>, <strong>Zufall</strong><br />

9


Struktur der <strong>Hash</strong>-Funktionen<br />

Nachricht<br />

Länge l<br />

M<br />

Länge anfügen und auf<br />

ganzzahliges Vielfaches<br />

einer Blocklänge ergänzen<br />

Blöcke<br />

mit b Bits<br />

M<br />

l<br />

Initialisierungsvektor<br />

(i.d.R. vorgegeben)<br />

b<br />

n<br />

f<br />

b<br />

n<br />

f<br />

n<br />

....<br />

Blockweise in Stücken von b Bits wird die Nachricht<br />

jeweils mit dem vorherigen Wert verknüpft.<br />

Der letzte Wert der Funktion f ist der <strong>Hash</strong>-Wert.<br />

<strong>IT</strong>Sec – SS 2013 - <strong>Teil</strong> <strong>15</strong>/<strong>Hash</strong>-<strong>Verfahren</strong>, <strong>Zeitstempel</strong>, <strong>Zufall</strong><br />

10


Ergänzungen<br />

• f() ist eine Kompressionsfunktion.<br />

• Bitlänge des <strong>Hash</strong>-Wertes sollte mindestens 160 bit sein.<br />

• Implementiert werden diese Funktionen, indem ein Register mit<br />

der <strong>Hash</strong>-Wertlänge (mind. 160 bit) in Schleifen (Runden)<br />

blockweise verknüpft wird:<br />

Nachricht M<br />

Initialisierung<br />

Register<br />

<strong>Hash</strong>-Wert<br />

....<br />

Funktion f<br />

....<br />

<strong>IT</strong>Sec – SS 2013 - <strong>Teil</strong> <strong>15</strong>/<strong>Hash</strong>-<strong>Verfahren</strong>, <strong>Zeitstempel</strong>, <strong>Zufall</strong><br />

11


Geburtstagsangriff I<br />

• Wie viele Personen müssen sich in einem Raum befinden, dass<br />

zwei Personen mit 50%iger Wahrscheinlichkeit am selben Tag<br />

Geburtstag haben?<br />

Antwort: 23<br />

• Allgemeiner:<br />

Wie viele Elemente müssen aus einer Menge mit n Elementen<br />

ausgewählt werden, damit mit einer Wahr-scheinlichkeit 0,5<br />

zwei identische gefunden werden?<br />

Antwort: Ca. Wurzel von n<br />

• Anders: Wie viele Texte müssen zufällig erstellt werden, damit<br />

diese mit 50%iger Wahrscheinlichkeit denselben <strong>Hash</strong>-Wert<br />

besitzen?<br />

Bei einer <strong>Hash</strong>-Wertlänge von 160 bit: 2 80 , was als nicht<br />

realisierbar gilt.<br />

<strong>IT</strong>Sec – SS 2013 - <strong>Teil</strong> <strong>15</strong>/<strong>Hash</strong>-<strong>Verfahren</strong>, <strong>Zeitstempel</strong>, <strong>Zufall</strong><br />

12


Wie verläuft der Geburtstagsangriff?<br />

1. Es gibt zwei Nachrichten m 1 und m 2 , wobei m 1 für den Angreifer<br />

schlecht und m 2 gut ist.<br />

2. Der Angreifer variiert m 1 und m 2 - z. B. Einfügen von Blanks<br />

oder Zeichen, die mit einem nachfolgenden Backspace<br />

unsichtbar gemacht werden o.ä. - und bestimmt die <strong>Hash</strong>-<br />

Werte.<br />

3. Nach durchschnittlich 2 r/2 Versuchen, wobei r die Länge des<br />

<strong>Hash</strong>-Wertes ist, hat der Angreifer zwei Variationen m 1 ' und m 2 ',<br />

gefunden, die denselben <strong>Hash</strong>-Wert besitzen.<br />

4. Nun lässt der Angreifer m 1 ' unterschreiben.<br />

5. Der Angreifer tauscht den unterschriebenen Text m 1 ' mit dem<br />

anderen Text m 2 ' aus....<br />

<strong>IT</strong>Sec – SS 2013 - <strong>Teil</strong> <strong>15</strong>/<strong>Hash</strong>-<strong>Verfahren</strong>, <strong>Zeitstempel</strong>, <strong>Zufall</strong><br />

13


Geburtstagsangriff II<br />

Was lehrt uns das?<br />

Der Unterschreibende sollte vor der Leistung der Unterschrift<br />

den Text kosmetisch, z.B. durch willkürliches Einfügen von<br />

Blanks verändern.<br />

Das Besagte bezog sich auf ASCII-Texte (siehe Backspace etc.).<br />

Mit Textsystemen ist es noch schlimmer, da auf der Binärfile-Ebene<br />

"unsichtbar" Daten eingefügt werden können...<br />

<strong>IT</strong>Sec – SS 2013 - <strong>Teil</strong> <strong>15</strong>/<strong>Hash</strong>-<strong>Verfahren</strong>, <strong>Zeitstempel</strong>, <strong>Zufall</strong><br />

14


Einfache <strong>Hash</strong>-Funktionen<br />

• Einfachstes <strong>Verfahren</strong>:<br />

– H(m) = b 1 XOR b 2 XOR ... XOR b n<br />

Blockweises Exclusiv-Oder aller Blöcke der Nachricht m<br />

– Ergebnis: Einfache longitudinale Parität<br />

– Nicht besonders sicher bzw. wirksam<br />

– Anwendungsbeispiel: Feststellung von Bitkippern<br />

• Verbesserung:<br />

1. <strong>Hash</strong>-Register:=0<br />

2. Für jeden n-bit-Block:<br />

• Verschiebung der <strong>Hash</strong>-Registers um 1 Bit nach links<br />

• Register:= Register XOR Block<br />

Hohes Maß an Erkennung von Bitkippern<br />

• Probleme beider <strong>Verfahren</strong>: Es lässt sich leicht eine andere<br />

Nachricht mit demselben <strong>Hash</strong>-Wert generieren.<br />

<strong>IT</strong>Sec – SS 2013 - <strong>Teil</strong> <strong>15</strong>/<strong>Hash</strong>-<strong>Verfahren</strong>, <strong>Zeitstempel</strong>, <strong>Zufall</strong><br />

<strong>15</strong>


Message Digest 5 (MD5) I<br />

• Entwickelt von Ron Rivest<br />

• Nachfolger von MD4<br />

• <strong>Hash</strong>-Wert: 128 bit für Blöcke von 512 bit Länge<br />

• Vorbereitung:<br />

– Ein Bit mit Wert 1 wird an die Nachricht m angehängt.<br />

– Dann so viele 0-Bits, bis die Länge ein Vielfaches zu 448 mod 512<br />

ist<br />

– Anfügen der Länge von m als 64-bit-Längenfeld<br />

– Vier Register á 32 bit werden initialisiert:<br />

A:= 0x01 23 45 67, B:= 0x89 AB CD EF<br />

C:= 0xFE DC BA 98, D:= 0x76 54 32 10<br />

(niederwertige Bits am Ende)<br />

<strong>IT</strong>Sec – SS 2013 - <strong>Teil</strong> <strong>15</strong>/<strong>Hash</strong>-<strong>Verfahren</strong>, <strong>Zeitstempel</strong>, <strong>Zufall</strong><br />

16


Message Digest 5 (MD5) II<br />

A B C D<br />

+<br />

g<br />

<strong>Teil</strong>e des<br />

aktuellen<br />

Blocks<br />

Werte aus<br />

Tabelle<br />

Shift-Bit-<br />

Anzahl aus<br />

Tabelle<br />

+<br />

+<br />

CLS<br />

A B C D<br />

• Jeder Block wird in 4 Runden mit jeweils 128 bit verarbeitet.<br />

• Jede Runde besteht auch 16 <strong>Teil</strong>schritten, in denen Tabellen-gesteuert<br />

zyklisch nach Links (CLS) geschoben und mit Werten aus einer Tabelle<br />

XOR wird<br />

• g ist ist eine rundenspezifische Funktion.<br />

• <strong>Hash</strong>-Wert ist am Ende der Wert in den Registern A bis D.<br />

<strong>IT</strong>Sec – SS 2013 - <strong>Teil</strong> <strong>15</strong>/<strong>Hash</strong>-<strong>Verfahren</strong>, <strong>Zeitstempel</strong>, <strong>Zufall</strong><br />

17


Sicherheit von MD5<br />

• 1996: Angriff realisiert, der eine Kollision auf einen <strong>Teil</strong> von MD5<br />

erzeugte<br />

• Trotzdem Misstrauen:<br />

Eingeschränkte Verwendung wird empfohlen<br />

• <strong>Hash</strong>-Länge von 128 bit wird als zu kurz angesehen.<br />

<strong>IT</strong>Sec – SS 2013 - <strong>Teil</strong> <strong>15</strong>/<strong>Hash</strong>-<strong>Verfahren</strong>, <strong>Zeitstempel</strong>, <strong>Zufall</strong><br />

18


Secure <strong>Hash</strong> Algorithm 1 (SHA-1)<br />

• National Institute of Standards (NIST) zusammen mit NSA<br />

– 1. Version: 1993 genormt, SHA<br />

– 2. Version: 1995, SHA-1<br />

• Name des Standards: Secure <strong>Hash</strong> Standard (SHS)<br />

SHA ist der Name des Algorithmus<br />

• Maximale Länge der Nachricht 2 64 bit<br />

• <strong>Hash</strong>-Wert: 160 bit<br />

• Blocklänge der Eingabe: 512 bit<br />

• Message Digest = MD = <strong>Hash</strong>-Wert einer kryptographischen<br />

<strong>Hash</strong>-Funktion<br />

<strong>IT</strong>Sec – SS 2013 - <strong>Teil</strong> <strong>15</strong>/<strong>Hash</strong>-<strong>Verfahren</strong>, <strong>Zeitstempel</strong>, <strong>Zufall</strong><br />

19


SHA-1 I<br />

Länge l<br />

Nachricht 100...0<br />

l<br />

512<br />

Initial<br />

Vector<br />

(160 bit)<br />

H H H H ....<br />

• Die Nachricht wird durch Auffüllen mit einer 1 gefolgt von 0 sowie<br />

Ergänzung der Nachrichtenlänge (64 bit) auf ein Vielfaches von 512 bit<br />

gebracht.<br />

• Der Message Digest-Puffer (MD-Puffer) besteht aus 5 Registern a 32<br />

bit. Vorbelegung: A:= 0x67 45 23 01, B:= 0xEF CD AB 89,<br />

C:= 0x98 BA DV EF, D:=10 32 54 76, E:=C3 D2 E1 F0<br />

<strong>IT</strong>Sec – SS 2013 - <strong>Teil</strong> <strong>15</strong>/<strong>Hash</strong>-<strong>Verfahren</strong>, <strong>Zeitstempel</strong>, <strong>Zufall</strong><br />

20


SHA-1 II<br />

A B C D E<br />

F<br />

+<br />

CLS<br />

+<br />

CLS<br />

+<br />

W<br />

<strong>Teil</strong>e des<br />

aktuellen<br />

Blocks<br />

+<br />

Werte aus<br />

Tabelle<br />

A B C D E<br />

• Jeder Block wird in 4 Runden á 20 Schritten bearbeitet.<br />

• Der Inhalt der 5 Register nach dem letzten Schritt ist der <strong>Hash</strong>-Wert.<br />

<strong>IT</strong>Sec – SS 2013 - <strong>Teil</strong> <strong>15</strong>/<strong>Hash</strong>-<strong>Verfahren</strong>, <strong>Zeitstempel</strong>, <strong>Zufall</strong><br />

21


Sicherheit von SHA-1<br />

• Die Entwurfskriterien von SHA-1 wurden bisher nicht<br />

veröffentlicht, so dass die Kryptoanalyse schwieriger ist.<br />

• Bis heute sind keine bedeutenden Angriffe bekannt.<br />

• Aufwand, um zwei Nachrichten mit demselben <strong>Hash</strong>-Wert<br />

erzeugen: 2 80 Operationen<br />

• Aufwand zu einer gegebenen Nachricht und dem <strong>Hash</strong>-Wert eine<br />

andere mit demselben <strong>Hash</strong>-Wert zu finden: 2 160 Operationen<br />

• SHA-1 ist ca. 25% langsamer als MD5, was dem längeren <strong>Hash</strong>-<br />

Wert entspricht.<br />

• RSA Labs empfiehlt SHA-1 für Anwendungen mit<br />

Kollisionsfreiheit.<br />

<strong>IT</strong>Sec – SS 2013 - <strong>Teil</strong> <strong>15</strong>/<strong>Hash</strong>-<strong>Verfahren</strong>, <strong>Zeitstempel</strong>, <strong>Zufall</strong><br />

22


Key-<strong>Hash</strong> (HMAC)<br />

• Reine <strong>Hash</strong>-Funktionen wie SHA-1 können allein nicht als MAC<br />

(Message Authentication Code) benutzt werden, da kein<br />

geheimer Schlüssel verwendet wird.<br />

• Das HMAC-<strong>Verfahren</strong> ist in RFC 2104 (Keyed-<strong>Hash</strong>ing for<br />

Message Authentication) 1997 definiert.<br />

• Entwurfsziele:<br />

– Unveränderter Gebrauch verfügbarer <strong>Hash</strong>-Funktionen<br />

– Ersetzbarkeit durch andere <strong>Hash</strong>-Funktionen<br />

– Einfache Verwendung von Schlüsseln<br />

• HMAC behandelt die <strong>Hash</strong>-Funktionen wie Black Boxes, d.h. es<br />

wird vom konkreten <strong>Hash</strong>-<strong>Verfahren</strong> abstrahiert.<br />

Siehe:<br />

http://tools.ietf.org/html/rfc2104<br />

http://de.wikipedia.org/wiki/Keyed-<strong>Hash</strong>_Message_Authentication_Code<br />

<strong>IT</strong>Sec – SS 2013 - <strong>Teil</strong> <strong>15</strong>/<strong>Hash</strong>-<strong>Verfahren</strong>, <strong>Zeitstempel</strong>, <strong>Zufall</strong><br />

23


Prinzip des HMAC-<strong>Verfahren</strong>s<br />

Konstante<br />

(wiederholtes 0x36)<br />

ipad<br />

+<br />

K + Linke Seite des<br />

geheimen Schlüssels<br />

Salt y 0 y 1 y 2 ... y n<br />

Initialisierungsvektor<br />

<strong>Hash</strong><br />

Konstante<br />

(wiederholtes 0x5C)<br />

opad<br />

+<br />

K +<br />

Auf Blocklänge<br />

auffüllen<br />

Salt<br />

Initialisierungsvektor<br />

<strong>Hash</strong><br />

HMAC<br />

<strong>IT</strong>Sec – SS 2013 - <strong>Teil</strong> <strong>15</strong>/<strong>Hash</strong>-<strong>Verfahren</strong>, <strong>Zeitstempel</strong>, <strong>Zufall</strong><br />

24


Bemerkungen<br />

• Salt = Salz = Begriff für ein für den Angreifer notwendiges, aber<br />

nicht bestimmbares Element<br />

"Um dem Angreifer die Suppe zu versalzen"<br />

• ipod/opod sind zwei im <strong>Verfahren</strong> festgelegte Konstanten.<br />

• K + ist der aufbereitete geheime Schlüssel K, wobei dem<br />

Schlüssel so viele Nullen angehängt werden, damit er die<br />

Blocklänge hat.<br />

Von diesem K + wird die linke Hälfte genommen, da ja in der<br />

rechten Hälfte nur Nullen vorhanden sind.<br />

• Es ist zu beachten, dass HMAC ein allgemeines <strong>Verfahren</strong> ist,<br />

dass keine bestimmten Schlüssellängen bzw. Blocklängen<br />

verlangt; daher sind in speziellen Fällen Anpassungen an die<br />

erforderlichen Längen nötig.<br />

<strong>IT</strong>Sec – SS 2013 - <strong>Teil</strong> <strong>15</strong>/<strong>Hash</strong>-<strong>Verfahren</strong>, <strong>Zeitstempel</strong>, <strong>Zufall</strong><br />

25


<strong>Zufall</strong>sgeneratoren<br />

• <strong>Zufall</strong>sbitgenerator = Random Bit Generator = Gerät oder<br />

<strong>Verfahren</strong>, das eine Sequenz statistisch unabhängiger und gleich<br />

verteilter Bitfolgen erzeugt.<br />

• Pseudozufallsbitgenerator = PZBG = Pseudo Random Number<br />

Generator = Gerät oder <strong>Verfahren</strong>, das einen deterministischen<br />

Algorithmus realisiert, als Eingabe eine zufällige Bitfolge der<br />

Länge k (Seed) erhält und eine Bitfolge der Länge l produziert,<br />

die den Eindruck der Zufälligkeit erweckt.<br />

• Seed = möglichst zufälliger Startwert eines PZBG<br />

<strong>IT</strong>Sec – SS 2013 - <strong>Teil</strong> <strong>15</strong>/<strong>Hash</strong>-<strong>Verfahren</strong>, <strong>Zeitstempel</strong>, <strong>Zufall</strong><br />

26


Drei Beispiele I<br />

<strong>Verfahren</strong> 1 (Linearer Kongruenzgenerator):<br />

• Parameter: a (Multiplikator), b (Inkrement) und q (Modul)<br />

• Startwert y 0<br />

• Produziert die Bitfolge y 1 , y 2 , y 3 etc.<br />

y i = (a*y i-1 + b) MOD q<br />

Generator hat bei guter Wahl von a, b und m die maximale<br />

Periodenlänge von m.<br />

Vorteil: Schnelligkeit<br />

<strong>IT</strong>Sec – SS 2013 - <strong>Teil</strong> <strong>15</strong>/<strong>Hash</strong>-<strong>Verfahren</strong>, <strong>Zeitstempel</strong>, <strong>Zufall</strong><br />

27


Drei Beispiele II<br />

<strong>Verfahren</strong> 2 (Quadratischer Kongruenzgenerator):<br />

• Parameter: a, b, c und q<br />

• Startwert y 0 , produziert die Bitfolge y 1 , y 2 , y 3 etc.<br />

y i = (a*y 2 i-1+ b*y i-1 + b) MOD q<br />

<strong>Verfahren</strong> 3 (Kubischer Kongruenzgenerator):<br />

• Parameter: a, b, c, d und q<br />

• Startwert y 0 , produziert die Bitfolge y 1 , y 2 , y 3 etc.<br />

y i = (a*y 3 i-1+ b*y 2 i-1+ c*y i-1 + d) MOD q<br />

Kryptographisch unbrauchbar, da auch ohne Kenntnis der Werte<br />

für a,... y aus der Reihe beobachteter Werte y i<br />

, y i+1<br />

,..., y i+j<br />

die folgenden korrekten Werte bestimmt werden können.<br />

M.a.W. alle drei <strong>Verfahren</strong> sind "geknackt".<br />

<strong>IT</strong>Sec – SS 2013 - <strong>Teil</strong> <strong>15</strong>/<strong>Hash</strong>-<strong>Verfahren</strong>, <strong>Zeitstempel</strong>, <strong>Zufall</strong><br />

28


Weitere Bedingung<br />

• Ein Pseudozufallsbitgenerator(PZBG) besteht den Next Bit Test,<br />

wenn kein Algorithmus mit polynominalen Aufwand existiert, der<br />

mit der Eingabe der ersten vom PZBG erzeugten m Bits als<br />

Ausgabe das (m+1)ste Bit mit einer Wahrscheinlichkeit größer<br />

als 0,5 vorhersagen kann.<br />

• Ein PZBG besteht den Next Bit Test, wenn er alle statistischen<br />

Tests besteht.<br />

• Ein PZBG wird kryptographisch genannt, wenn er den Next Bit<br />

Test besteht.<br />

<strong>IT</strong>Sec – SS 2013 - <strong>Teil</strong> <strong>15</strong>/<strong>Hash</strong>-<strong>Verfahren</strong>, <strong>Zeitstempel</strong>, <strong>Zufall</strong><br />

29


Beispiel für Korrekturverfahren<br />

Wenn ein PZBG nicht gleich verteilte, aber unkorrelierte<br />

Bitfolgen erzeugt:<br />

1. Bitfolge wird in Paare aufgeteilt.<br />

2. Alle 00- und 11-Paare werden verworfen.<br />

3. Jedes 01-Paar wird durch eine 1 ersetzt.<br />

4. Jedes 10-Paar wird durch eine 0 ersetzt.<br />

Wenn keine Korrelation vorliegt, erzeugt dieses <strong>Verfahren</strong><br />

unkorrelierte und gleich verteilte Bitfolgen.<br />

<strong>IT</strong>Sec – SS 2013 - <strong>Teil</strong> <strong>15</strong>/<strong>Hash</strong>-<strong>Verfahren</strong>, <strong>Zeitstempel</strong>, <strong>Zufall</strong><br />

30


Kryptographisch sicheres <strong>Verfahren</strong> (ANSI X9.17)<br />

int RandomX917(Bits s, int m, Bits key) {<br />

Bits q, x[];<br />

int i;<br />

x= malloc(m*sizeof(Bits));<br />

q= 3DES(key,TimeStamp);<br />

for (i=0;i


Erzeugung von (echten) <strong>Zufall</strong>szahlen I<br />

• Beobachtung der Zeitspanne zwischen Emissionen beim radioaktiven<br />

Zerfall (Zeitraum, in dem sich statistisch die Zeitspannen gleichen)<br />

• Messung thermischen Rauschens, z. B. von einer Diode.<br />

• Messung der Ladungsdifferenz zweier eng benachbarter Halbleiter<br />

• Messung der Zugriffszeiten auf Blöcke auf einer Platte<br />

• Messung der Zeitdifferenzen von Tastatureingaben<br />

• Analyse von Audio-/Videodaten von einer stark belebten Kreuzung<br />

Diese Rohdaten müssen in der Regel noch nachbearbeitet werden.<br />

<strong>IT</strong>Sec – SS 2013 - <strong>Teil</strong> <strong>15</strong>/<strong>Hash</strong>-<strong>Verfahren</strong>, <strong>Zeitstempel</strong>, <strong>Zufall</strong><br />

32


Erzeugung von (echten) <strong>Zufall</strong>szahlen II<br />

Es ist recht schwierig, an einem Computer, der ein deterministischer<br />

Automat ist, echten <strong>Zufall</strong> ohne Zusatzgeräte zu<br />

erzeugen.<br />

Ein gutes <strong>Verfahren</strong> kombiniert verschiedene Methoden:<br />

– Analyse der Tastatureingaben<br />

– Analyse von Mausbewegungen<br />

– Uhrzeit auf ms genau<br />

– Positionierungszeiten der Platte<br />

– Analyse von Transfers auf dem LAN<br />

Es werden von diesen Daten immer die niederwertigsten Bits<br />

benutzt.<br />

Diese Daten werden dann kombiniert und bilden einen<br />

<strong>Zufall</strong>swert, der eventuell als Seed eines Pseudozufallszahlengenerators<br />

benutzt wird.<br />

<strong>IT</strong>Sec – SS 2013 - <strong>Teil</strong> <strong>15</strong>/<strong>Hash</strong>-<strong>Verfahren</strong>, <strong>Zeitstempel</strong>, <strong>Zufall</strong><br />

33


<strong>Zeitstempel</strong>-<strong>Verfahren</strong> I<br />

Es wird eine vertrauenswürdige Partei TTP angenommen.<br />

<strong>Verfahren</strong> 1:<br />

1. A übermittelt der TTP eine Kopie des Dokuments.<br />

2. TTP zeichnet das Datum und Uhrzeit des Dokumentenempfangs auf<br />

und speichert es in einer Datenbank.<br />

3. TTP behält Kopie des Dokuments.<br />

• Zur Prüfung wendet sich B mit dem Dokument an TTP und lässt<br />

sich den Zeitpunkt sagen.<br />

• Nachteile<br />

• TTP kennt das unverschlüsseltes Dokument.<br />

• TTP muss sehr große Datenbank haben.<br />

• Fehleranfälligkeit der Übertragung (und Speicherung)<br />

• Parteien A und B können betrügerisch zusammenarbeiten<br />

<strong>IT</strong>Sec – SS 2013 - <strong>Teil</strong> <strong>15</strong>/<strong>Hash</strong>-<strong>Verfahren</strong>, <strong>Zeitstempel</strong>, <strong>Zufall</strong><br />

34


<strong>Zeitstempel</strong>-<strong>Verfahren</strong> II<br />

<strong>Verfahren</strong> 2:<br />

1. A erzeugt einen <strong>Hash</strong>-Wert des Dokuments .<br />

2. A übermittelt TTP den <strong>Hash</strong>-Wert.<br />

3. TTP fügt Datum und Uhrzeit an den <strong>Hash</strong>-Wert.<br />

4. TTP unterschreibt das Ganze.<br />

5. TTP übermittelt A unterschriebenen <strong>Hash</strong>-Wert mit <strong>Zeitstempel</strong><br />

• Zur Prüfung prüft B <strong>Zeitstempel</strong> und <strong>Hash</strong>-Wert sowie<br />

Unterschrift von TTP.<br />

Partei A<br />

Partei TTP<br />

Secret-Key<br />

Nachricht<br />

H<br />

Zeit<br />

H<br />

E<br />

Zeit<br />

<strong>IT</strong>Sec – SS 2013 - <strong>Teil</strong> <strong>15</strong>/<strong>Hash</strong>-<strong>Verfahren</strong>, <strong>Zeitstempel</strong>, <strong>Zufall</strong><br />

35


<strong>Zeitstempel</strong>-<strong>Verfahren</strong> III<br />

• <strong>Verfahren</strong> 2 löst alle Probleme bis auf das, dass A und B<br />

betrügerisch (hinsichtlich des Zeitpunkts) zusammenarbeiten<br />

können.<br />

<strong>Verfahren</strong> 3:<br />

• Idee: Verknüpfung mit an andere Identitäten ausgegebene<br />

<strong>Zeitstempel</strong><br />

• Dieses <strong>Verfahren</strong> verknüpft den <strong>Zeitstempel</strong> mit dem direkt davor<br />

ausgegebenen sowie (rekursiv) mit dem eventuell vorhandenen<br />

nächsten <strong>Zeitstempel</strong>.<br />

• Es wird eine Kette von <strong>Zeitstempel</strong>n, wobei per Unterschrift die<br />

jeweils benachbarten verknüpft werden.<br />

• Wird ein <strong>Zeitstempel</strong> angezweifelt, müssen die <strong>Zeitstempel</strong> der<br />

Identitäten I n-1 und I n+1 , also der benachbarten Stempel geprüft<br />

werden.<br />

Werden auch diese Stempel angezweifelt, so müssen die nächsten<br />

Nachbarn in der Kette geprüft werden: I n-2 und I n+2 usw.<br />

<strong>IT</strong>Sec – SS 2013 - <strong>Teil</strong> <strong>15</strong>/<strong>Hash</strong>-<strong>Verfahren</strong>, <strong>Zeitstempel</strong>, <strong>Zufall</strong><br />

36


<strong>Zeitstempel</strong>-<strong>Verfahren</strong> IV<br />

• Die zufällige Auswahl der Partner verhindert Betrug.<br />

• Je größer die Korruption in der Gesellschaft ist, desto größer<br />

muss k gewählt werden.<br />

Bemerkungen<br />

• Veröffentlichen von <strong>Zeitstempel</strong>n z. B. in Zeitungen erhöht die<br />

Sicherheit.<br />

• Die letzten zwei <strong>Verfahren</strong> (2 und 3) sind patentiert.<br />

<strong>IT</strong>Sec – SS 2013 - <strong>Teil</strong> <strong>15</strong>/<strong>Hash</strong>-<strong>Verfahren</strong>, <strong>Zeitstempel</strong>, <strong>Zufall</strong><br />

37


Nach dieser Anstrengung etwas Entspannung....<br />

<strong>IT</strong>Sec – SS 2013 - <strong>Teil</strong> <strong>15</strong>/<strong>Hash</strong>-<strong>Verfahren</strong>, <strong>Zeitstempel</strong>, <strong>Zufall</strong><br />

38

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!