Benutzer-Werkzeuge

Webseiten-Werkzeuge


hash
  • Hash ist eine Prüfsumme
    • über einen String
    • über eine Datei
  • es gibt verschiedene mathematisch Verfahren - MD5, SHA1 usw.
  • ein immer gleicher Ausgangswert (Datei/String) ergibt immer den selben Hash-Wert
  • in der Regel sind Hashes kollisionsfrei
    • Ein String/Datei==Hash
    • es gibt nicht zwei Ausgangswerte (Datei oder String) die den gleichen Hash ergeben

Passwörter und Hashes

Um Passwörter nicht übertragen zu müssen und auch nicht in Datenbanken speichern zu müssen als Klartext, werden häufig nur Hash-Werte gespeichert/übertragen.
Prinzip:

  • In der Datenbank des Ziels (zum Beispiel Forum) steht nur der Hash-Wert des Passwortes
    • die Prüfsumme die über das Passwort gebildet wurde
  • die sich anmeldende Anwendung (zum Beispiel Browser oder Voice-over-IP-Telefon) erfragt das Passwort beim Anwender
  • die Anwendung (Browser/Voip-Client) bildet den Hash-Wert über das Passwort
  • die Anwendung sendet den Hash-Wert an das Ziel/Server
  • der Server/Ziel vergleicht den Hash-Wert in der Datenbank mit dem Empfangenen
    • stimmen sie überein ist das Passwort richtig

Das funktioniert weil:

  • Client und Server das gleiche verfahren zum errechnen des Hash verwenden
  • ein bestimmter Klartext-String/Passwort immer den gleichen Hash-Wert ergibt
  • keine zwei Klartext-Strings/Passwörter den gleichen Hash-Wert ergeben

Es bietet folgende Vorteile:

  • Jemandem der den Datenverkehr abhört fällt das Klartext-Passwort nicht in die Hand
  • Jemand der Zugriff auf die Datenbank hat erhält nicht die Klartext-Passwörter
    • auch Administratoren nicht

Es ist ein schwacher Schutz, weil:

  • über Rainbow-Tables zum Hash-Wert gehörige Passwort errechnet werden kann
  • ein Abhörer der Hash zum Anmelden am jeweiligen Dienst reicht
    • gegebenfalls auch bei weiteren Diensten wenn Passwort und Hash-Verfahren gleich sind

Rainbow-Tables

  • Regenbogen-Tabellen → ein Regenbogen enthält alle Farben des Regenbogens → eine Rainbow-Tabelle alle möglichen Passwortkombinationen
  • man bildet für alle Passwortkombinationen die enstprechenden Hash-Werte
    • mit dem Verfahren was die anzugreifende Anwendung benutzt (z.B. SHA1 oder MD5)
    • mit der maximalen Länge die die anzugreifende Anwendung nutzt
  • Anchließend kann man anhand der Tabelle einfach geklaute Hashes (die Datenbank oder abgehörte) gegen die Tabelle abgleichen und erhält anhand des Hashes das Klartext-Passwort

Bei Hash-Werte ergibt ein Ausgangsstring/-Wert - zum Beispiel ein Passwort - immer den gleichen Hash-Wert.
Hash-Werte wiederholen sich nicht - das heißt sie sind Ein-Eindeutig (Ein Hash == ein Ausgangswert) - es gibt nicht zwei unterschiedliche Ausgangswerte die den gleichen Hash-Wert ergeben.
Der Hash-Wert enthält nicht genügend Informationen um den Ausgangswert zurück zu rechnen.

Man kann das Passwort also nicht direkt aus dem Hash erhalten, aber da der Hashgenau zu einem Passwort gehört, kann man einfach alle möglichen Passwortkombinationen errechnen und für jede mögliche Kombination den dazugehörigen Hash-Wert.
Den Aufwand muss man nur einmal machen und erhält eine Tabelle für das jeweilige Hash-Verfahren mit der man alles Hash-Werte dem richtigen Passwort zuordnen kann.

Salting/Gegenmaßnahmen

  • Erschweren der Nutzung von Rainbow-Tabellen,in dem das Passwort durch eine zufällig generierte Zeichenkette verlängert wird und dann der Hash gebildet
  • der Aufwand der Rainbow-Tabelle steigt durch die längere gewordenen Passwörter
  • der Aufwand der Rainbow-Tabelle steigt durch den Zufallswert
    • Rainbow-Tables basierend auf Wörterbüchern sind nicht mehr möglich
  • Das knacken des Hash wird nicht unmöglich, nur aufwendiger

Technischer Ablauf (Datenbank):

  • Passwort im Klartext wird um Zufallswert erweitert
  • Hash wird über Klartextpasswort+Zufallswert gebildet
  • Hash und Zufallswert (im Klartext) werden in der Datenbank gespeichert
  • Passwörter die im Klartext angeliefert werden
    • werden um den in der Datenbank gespeicherten Zufallswert erweitert
    • der Hash wird gebildet
    • der Hash wird gegen den abgespeicherten geprüft
  • Passwörter gehast übers Netzwerk
    • der Zufallswert ausder Datenbank wird dem Client gesendet
    • der Client hängt den Zufallswert an das Passwort an
    • Client bildet über Klartext-Passwort+Zufallswert den Hash-Wert
    • Client sendet Hash-Wert → Server prüft ihn gegen den in der Datenbank gespeicherten


Technischer Ablauf (Netzwerkkomunikation):

  • Server sendet Zufallswert (neu generiert oder aus Datenbank)
  • Client hängt Zufallswert an Klartext-Passwort an
  • Client bildet Hash-Wert
  • Client sendet Hash-Wert an Server
  • wenn Server Passwort im Klartext hat
    • Server hängt Zufallswert an Klartextpasswort
    • Server bildet Hash über Klartextpasswort + Zufallswert
    • Server vergleicht beide Hash-Werte
  • wenn Server Passwort nur als Hash hat
    • muss er zuvor Zufallswert gesendet haben aus der Datenbank
    • vergleicht er beide Hash-Werte
hash.txt · Zuletzt geändert: 2014/09/07 18:23 (Externe Bearbeitung)