Hash

Aus ProgrammingWiki

Wechseln zu: Navigation, Suche

Hashfunktionen

Hashfunktionen dienen der Zuordnung von beliebig langen Zeichenketten (z.B Passwörtern) zu Zeichenketten festgeschriebener Länge, den sogenannten Hashwerten. Sie 'zerhackt' (engl.: to hash) also die Zeichenkette um eine oftmals kleinere zu erhalten. Eigenschaften

Inhaltsverzeichnis

Eigenschaften

  • Einwegfunktion: Da Hashfunktionen normalerweise nicht der Verschlüsselung dienen, dürfen sie nicht umkehrbar sein. Das heißt aus dem Hashwert darf nicht der Originaltext berechnet werden können.
  • Kollisionssicherheit: Die Zuordnung sollte bestenfalls eineindeutig erfolgen; Ein Hashwert sollte nur einem Originaltext zugeordnet sein und umgekehrt. Ist dies der Fall spricht man von einer kryptografischen Hashfunktion. Sollten mehreren Originalwerten derselbe Hashwert zugeordnet werden wird dies Kollision genannt.

    Dominic Hashfunktion.png

  • Wiederholbarkeit: Die Funktion sollte unabhängig von zufälligen oder sich ständig neu generierenden Faktoren sein. Für jeden Originaltext sollte sich immer der gleiche Hashwert ergeben.

    Anwendung

    Integritätsschutz

    Bei Downloads aus dem Internet kann der Hashwert der heruntergeladenen Datei berechnet werden und dann mit dem der Originaldatei verglichen werden (meist vom Anbieter angegeben). Sollten die Hashwerte dabei voneinander abweichen, wurde die Datei während des Downloads verändert/manipuliert (funktioniert nur wenn bei beiden Hashwerten dieselbe Hashfunktion benutzt wurde). Sollte der Anbieter die Hashwerte nicht veröffentlicht haben, so kann die Datei auch ein zweites Mal heruntergeladen werden und die Hashwerte beider Downloads können verglichen werden.
    Dominic Image050.gif

    Digitale Signatur

    Wenn man ein Dokument digital unterschreiben möchte, so berechnet man zunächst den Hashwert des Dokuments und verschlüsselt diesen mit einem private key. Diese digitale Signatur wird dem Empfänger ebenfalls zugesendet und der entschlüsselt diese mit dem entsprechenden public key und berechnet ebenfalls den Hashwert des Dokuments. Sollte dieser mit der entschlüsselten Signatur übereinstimmen, so kann der Empfänger sichergehen, dass das Dokument unverändert bei ihm ankam und die Signatur ist somit rechtsgültig (sofern rechtmäßig vorgeschriebene Verschlüsselungsverfahren und Hashfunktionen verwendet wurden)
    Dominic 606x337.pm1.bg0000FF.jpg

    Passwortspeicherung

    Beim Speichern von Passwörtern wird selten der Klartext gespeichert sondern nur der Hashwert des Passworts, damit mögliche Angreifer die Passwörter nicht einsehen können und durch die Unumkehrbarkeit der Hashfunktionen auch nicht berechnen können. Wenn jetzt jemand sein Passwort eingibt wird der Hashwert der Eingabe berechnet und mit dem gespeicherten Hashwert verglichen, bei Übereinstimmung dieser wurde das korrekte Passwort eingegeben.
    Dominic PasswordHashing1-copy.jpg

    Sicherheit

    Häufig genutzte Hashfunktionen wie MD5 und SHA-1 gelten zwar immer noch als sicher, dennoch sollten neuere (z.B. SHA-2) diesen vorgezogen werden. So wurden unter anderem einige zufällige Kollisionen in den letzten jahren gefunden und das trotz der unzähligen Hashwerte (ca. 3,4*10^38 bei MD5). Außerdem werden für häufige Passwörter die Hashwerte berechnet und in sogenannten 'rainbow tables' (Regenbogentabellen) festgehalten, wodurch bei einem erfolgreichen Angriff die Hashwerte häufiger Passwörter einem entsprechenden Klartext zugeordnet werden können. Da diese 'rainbow tables' mit der Zeit immer weiter erweitert werden sind somit neuere Hashfunktionen deutlich sicherer, abgesehen davon, dass sie auch mehr mögliche Hashwerte besitzen als ältere Funktionen. Desweiteren gilt für Hashfunktionen wie auch allen anderen Algorithmen dass die Wahrscheinlichkeit fürs Knacken dieser mit steigender Rechenleistung der Computer immer wahrscheinlicher wird.

    Zusammenfassung

    Hashfunktionen dienen nicht der Verschlüsselung von Daten. Sie dienen vor allem zur Prüfung der Unversehrtheit von Daten und zur sicheren Speicherung von Daten, die selbst im Falle eines Angriffs uneinsehbar bleiben sollen. Ihre Sicherheit nimmt mit der Zeit ab, weshalb neuere Hashfunktionen den älteren vorgezogen werden sollten.

    Quellen

    [1] [2] [3]

  • Persönliche Werkzeuge