Kryptographie
Am Dienstag mussten wir in der Uni eine komische Übung machen. Aber gar nicht mal so nutzlos. Der Prof verlangte folgendes von uns: Stellt euch vor, ihr lernt euren zukünftigen Schwiegervater kennen und er fragt euch, was ihr macht. Ihr habt 90 Sekunden Zeit, um ihm das Thema eurer Studienarbeit zu erklären. Und er hat keine Ahnung von Mathe! Zwischendrin war ich ein bisschen genervt, denn das ist aus dem Stegreif echt schwierig und dieser Schwiegervater schien immer dümmer zu werden! Aber egal, da viele von euch mich auch oft fragen, worum es denn bei Kryptographie eigentlich geht, werde ich jetzt für euch nochmal üben. Und das auch noch auf Deutsch! Also stellt euch vor, ihr wärt meine zukünftigen Schwiegerväter...
Ich schreibe eine Studienarbeit im Unfang von 50 bis 70 Seiten zum Thema "Kryptographische Hash-Funktionen".
Erstmal zur Kryptographie. Hier geht es im Wesentlichen um Sicherheit. Wir alle wollen in der Lage sein, vertrauliche Nachrichten zu verschicken und vertrauliche Daten zu speichern--ohne dass ein Unbefugter sie lesen kann, selbst wenn er sie in die Finger bekommt--und das auch noch elektronisch. Kryptographie beschäftigt sich damit, diese Nachrichten und Daten zu verschlüsseln und wieder zu entschlüsseln. Hört sich simpel an, in Wirklichkeit steckt aber hinter diesen Algorithmen jede Menge Mathematik. Da bin ich ganz in meinem Element! Praktisch verwenden wir diese Dinge jeden Tag. Kryptographie steckt in verschlüsselten Emails, im https (der verschlüsselten Internetverbindung, mit der wir z.B. Online-Banking betreiben), in Chipkarten (z.B. EC-Karte), in unseren neuen Reisepässen, in unseren Handys, in unseren Autos u.s.w.
Nun zu den Hash-Funktionen. Es gibt verschiedene Arten von diesen Biestern, ich beschäftige mich wie schon gesagt mit den kryptographischen. Kryptographische Hash-Funktionen sind sog. Einweg-Funktionen (oder wie auch immer ihr one way functions übersetzen würdet), d.h. wenn ich vorne was reinstecke kommt hinten was raus, aber wenn ich nur das Ergebnis weiß, kann ich nicht zurück rechnen. Außerdem ist die Ausgabe deutlich kleiner als die Eingabe (und sie hat feste Länge, wobei die Eingabe beliebig lang sein kann). Eine weitere Eigenschaft ist, dass bei zwei verschiedenen Eingaben mit sehr großer Wahrscheinlichkeit auch zwei verschiedene Ausgaben rauskommen. Okay, jetzt wird's zu technisch, den Schwiegervater hätte ich längst abgehängt! Also ein Beispiel: Wozu braucht man solche Dinger bloß???
Stellt euch vor, ich wäre euer PC. Um euch einzuloggen, braucht ihr Benutzernamen und Passwort. Ich muss also eure Passwörter speichern damit ich feststellen kann, ob ihr das richtige Passwort eingegeben habt. Ich will die Passwörter natürlich nicht einfach so speichern, denn wenn sich jemand in meine Datenbank reinhackt, hab ich ein Problem. Also speichere ich stattdessen die Hash-Werte der Passwörter (d.h. die Ausgabe der Hash-Funktion). Wenn da jemand rankommt, kann er sich die ursprünglichen Passwörter nicht errechnen (das ist die einweg-Eigenschaft, remember?). Wenn aber jemand sein Passwort eingibt kann ich davon den Hash-Wert berechnen, indem ich einfach die Hash-Funktion anwende, und es mit meinem gespeicherten Wert vergleichen. Stimmen sie überein, seid ihr drin! Alles klaro???
So, das interessante an der Sache ist nun, dass es nicht sehr viele brauchbare Hash-Funktionen gibt. Eigentlich gibt es nur genau 2, die in der Praxis eingesetzt werden: MD5 und SHA-1. Noch funktionieren sie--aber nicht mehr lange. Immer schnellere Computer ermöglichen immer bessere Angriffe und ihre Sicherheit ist sehr gefährdet, die Kryptographen sind schon seit Jahren besorgt, wir brauchen etwas Neues!!!
Momentan versuche ich erstmal, diese Dinger überhaupt zu verstehen. Gestern und heute habe ich MD5 implementiert, morgen ist SHA-1 dran. Den ganzen Tag am Computer, mein Kopf brummt!
So, das wär's. Habt ihr alles verstanden, meine zukünftigen Schwiegerväter? Jetzt wisst ihr, was ich hier so treibe. Dass es sich in 90 Sekunden lesen lässt, kann ich nicht garantieren. Alle Angaben ohne Gewähr!
Und falls euer Kopf jetzt auch brummt, hier noch was Entspannendes!
Ich schreibe eine Studienarbeit im Unfang von 50 bis 70 Seiten zum Thema "Kryptographische Hash-Funktionen".
Erstmal zur Kryptographie. Hier geht es im Wesentlichen um Sicherheit. Wir alle wollen in der Lage sein, vertrauliche Nachrichten zu verschicken und vertrauliche Daten zu speichern--ohne dass ein Unbefugter sie lesen kann, selbst wenn er sie in die Finger bekommt--und das auch noch elektronisch. Kryptographie beschäftigt sich damit, diese Nachrichten und Daten zu verschlüsseln und wieder zu entschlüsseln. Hört sich simpel an, in Wirklichkeit steckt aber hinter diesen Algorithmen jede Menge Mathematik. Da bin ich ganz in meinem Element! Praktisch verwenden wir diese Dinge jeden Tag. Kryptographie steckt in verschlüsselten Emails, im https (der verschlüsselten Internetverbindung, mit der wir z.B. Online-Banking betreiben), in Chipkarten (z.B. EC-Karte), in unseren neuen Reisepässen, in unseren Handys, in unseren Autos u.s.w.
Nun zu den Hash-Funktionen. Es gibt verschiedene Arten von diesen Biestern, ich beschäftige mich wie schon gesagt mit den kryptographischen. Kryptographische Hash-Funktionen sind sog. Einweg-Funktionen (oder wie auch immer ihr one way functions übersetzen würdet), d.h. wenn ich vorne was reinstecke kommt hinten was raus, aber wenn ich nur das Ergebnis weiß, kann ich nicht zurück rechnen. Außerdem ist die Ausgabe deutlich kleiner als die Eingabe (und sie hat feste Länge, wobei die Eingabe beliebig lang sein kann). Eine weitere Eigenschaft ist, dass bei zwei verschiedenen Eingaben mit sehr großer Wahrscheinlichkeit auch zwei verschiedene Ausgaben rauskommen. Okay, jetzt wird's zu technisch, den Schwiegervater hätte ich längst abgehängt! Also ein Beispiel: Wozu braucht man solche Dinger bloß???
Stellt euch vor, ich wäre euer PC. Um euch einzuloggen, braucht ihr Benutzernamen und Passwort. Ich muss also eure Passwörter speichern damit ich feststellen kann, ob ihr das richtige Passwort eingegeben habt. Ich will die Passwörter natürlich nicht einfach so speichern, denn wenn sich jemand in meine Datenbank reinhackt, hab ich ein Problem. Also speichere ich stattdessen die Hash-Werte der Passwörter (d.h. die Ausgabe der Hash-Funktion). Wenn da jemand rankommt, kann er sich die ursprünglichen Passwörter nicht errechnen (das ist die einweg-Eigenschaft, remember?). Wenn aber jemand sein Passwort eingibt kann ich davon den Hash-Wert berechnen, indem ich einfach die Hash-Funktion anwende, und es mit meinem gespeicherten Wert vergleichen. Stimmen sie überein, seid ihr drin! Alles klaro???
So, das interessante an der Sache ist nun, dass es nicht sehr viele brauchbare Hash-Funktionen gibt. Eigentlich gibt es nur genau 2, die in der Praxis eingesetzt werden: MD5 und SHA-1. Noch funktionieren sie--aber nicht mehr lange. Immer schnellere Computer ermöglichen immer bessere Angriffe und ihre Sicherheit ist sehr gefährdet, die Kryptographen sind schon seit Jahren besorgt, wir brauchen etwas Neues!!!
Momentan versuche ich erstmal, diese Dinger überhaupt zu verstehen. Gestern und heute habe ich MD5 implementiert, morgen ist SHA-1 dran. Den ganzen Tag am Computer, mein Kopf brummt!
So, das wär's. Habt ihr alles verstanden, meine zukünftigen Schwiegerväter? Jetzt wisst ihr, was ich hier so treibe. Dass es sich in 90 Sekunden lesen lässt, kann ich nicht garantieren. Alle Angaben ohne Gewähr!
Und falls euer Kopf jetzt auch brummt, hier noch was Entspannendes!

4 Comments:
Moin Maike...
"Einweg-Funktionen" ... waren das nicht diese One-Time Pads, also eigentlich die 100%sichere Verschlüsselung?
Hi Andi,
one way function und one time pad klingt aehnlich, aber es handelt sich hierbei um verschiedene Dinge.
Ein one time pad ist ein Verschluesselungsverfahren, und ja du hast recht, es ist theoretisch sicher (das kann man sogar beweisen). Allerdings ist es in der Praxis nur schwer anwendbar, da der Schluessel ebenso lang ist wie der zu verschluesselnde Text. Das "one time" bezieht sich darauf, dass jeder Schluessel nur einmal verwendet werden darf.
Eine one way function ist eine Funktion, die in eine Richtung leicht zu berechnen aber praktisch nicht invertierbar ist. Diese Eigenschaften haben Hashfunktionen unter anderem.
mmm ok, kenn ich unter Falltür-funktion, trapdoor-function
eine trapdoor function is ein spezialfall einer one way function. one way besagt nur, dass sie in eine richtung leicht und in die andere schwer zu berechnen ist. bei trapdoor ist es so, dass sie in eine richtung für jeden leicht zu berechnen ist und die andere richtung ist sie leicht zu berechnen, falls man ein geheimnis (d.h. einen schlüssel) kennt und schwer zu berechnen, wenn man diesen schlüssel nicht kennt. es gibt trapdoor hash funktionen, die werden in der kryptographie häufig eingesetzt, aber die einfache definition einer hash funktion beinhaltet diese eigenschaft noch nicht.
Kommentar veröffentlichen
<< Home