Stell dir vor, du sitzt in einem Pub und versuchst dich an einen Film Titel zu erinnern und schaffst es einfach nicht. Du weisst er beginnt mit einem „N“ (oder ev. „D“) und es hat definitiv etwas mit Autos zu tun… dann sagt dein Freund „Casablanca“ und du weisst „JA! Das ist es!“ Kommt dir dies bekannt vor? Ja, mir auch. Obwohl einem in einem Moment keine Details in den Sinn kommen, weiss man, dass man sich an alles erinnern wird, sobald jemand die richtige Anwort sagt. Es ist der Unterschied zwischen Abruf und Wiedererkennung, der frustrierende Unklarheit von überzeugter Sicherheit scheidet. Aber kann es nützlich sein?
Die Antwort ist JA. Es gibt einen Weg, Information zu speichern, so dass ein Computer die selbe Information wiedererkennen kann wenn er sie sieht, ohne sie eigentlich zu kennen. Das heisst, was du speicherst ist total sicher. Es heisst Einweg-Encryption und ist sehr simpel. Du gibst eine Information ins System (ein Dokument, Name, Passwort etc.) und das System kreiert einen „Hash“. Du bekommst immer den selben „Hash“ für dieselbe Eingabe, aber es ist unmöglich einen Hash selbst einzugeben und den ursprünglichen Input herauszufinden. Für das 32-stellige, das wir benutzen, gibt es 340,000,000,000,000,000,000,000,000,000,000,000,000 verschiedene mögliche Hashes, d.h., dass es praktisch unmöglich ist (1 in 3 x 1038), dass zwei verschiedene Eingaben den selben Hash ausgeben. Wenn du mir nun dein Passwort gibst wenn du dich einloggst, z.B. waterberry generiere ich einen Hash 4fa29303bf3155789ae1e8969bb029ae. Jetzt speichere ich diesen Hash anstatt dein Passwort. Wenn du dich einloggst, nehme ich einen Hash von was auch immer du eingibst und vergleiche ihn mit demjenigen, den ich in der Datenbank habe.Wenn die beiden übereinstimmen, besteht eine grosse Chance, dass du das richtige Passwort eingegeben hast. Wie auch immer, wenn die Datenbank gestohlen wurde, ist sie voll von bedeutungslosen Hashen und dein Passwort ist immernoch gesichert. Ähnlich wie ich nach ein paar Bierchen, kann sich der Server nicht sein ganzes Leben an dein Passwort erinnern, aber er kann erkennen ob du das richtige eingegeben hast.
Natürlich ist es nicht Narrensicher. Wenn man jedoch jedes Wort eines Wörterbuches in eine Encryption-Maschine eingibt, kann man nach Übereinstimmungen suchen und hoffentlich einen Account knacken (genau deshalb raten einem Webseiten oft, kein Wort aus dem Wörterbuch als Passwort zu wählen). Du kannst dich auch gegen Wörterbuchattacken wehren in dem du der Encryption etwas vorausschickst (z.B. gibst du 1234waterberry anstatt nur waterberry ein), was auch den Hash „salzen“ genannt wird. Wenn aber jemand herausfindet was dein Salz ist, kann es in der Wörterbuchattacke verwendet werden und du bist wieder zurück am Anfang.
Manche Leute brauchen diese Hashes um URLs einzigartig zu machen. Du hast diese Hashes in URLs bestimmt schon überall im Web gesehen. Also sollten sie einzigartig sein, richtig? Ich meine mit 3 x 1038 von diesen Dingen sollte es praktisch keine Kollisionen geben.
Probiers aus indem du da39a3ee5e6b4b0d3255bfef95601890afd80709 in Google eingibst.
40‘000 Resultate scheinten nicht schlecht für einen Haufen Buchstaben. Es ist der SHA Hash eines leeren Wortes. Das heisst, jedes Mal wenn jemand einen Fehler auf einer Webseite macht und einen link oder Sicherheitsschlüssel kreiert, passiert dies. Und es passiert oft. Probier mal d41d8cd98f00b204e9800998ecf8427e – es ist das Equivalent für die berühmtere MD5 Encrytion Methode. Komisch, nicht?
Aber das ist noch nicht das berühmteste. Warum gibt es 272,000 Resultate für 5f4dcc3b5aa765d61d8327deb882cf99? Weil es das MD5 des Wortes ‘password’ ist. Denken wir für einen Moment darüber nach: Ein wohlbekannter Quirk von PHP ist, dass man die $ Designation eines variablen Namens verfehlt. Es wird den variablen Namen als Wort interpretieren. Also während
echo $password;
waterberry ausgibt
gibt echo password;
password aus. Du siehst also wo dies hinführt. Und das Beste an allem: Jeder Benutzer bekommt den selben Hash.
Ich denke derjenige, der diese Website codiert hat, hätte besser auf dieses letzte Bier verzichtet!
<a href=”http://www.bloggerei.de/rubrik_15_Computerblogs” title=”Blog-Verzeichnis”><img src=”http://www.bloggerei.de/bgpublicon.jpg” width=”80″ height=”15″ border=”0″ alt=”Blogverzeichnis – Blog Verzeichnis bloggerei.de” /></a>












