Hash

Aus SELFHTML-Wiki
Wechseln zu: Navigation, Suche

Ein Hash ist eine kurze Zeichenfolge, mit der z. B. Prüfsummen angegeben werden. Er ist dabei mit dem Bilden einer Quersumme über eine große Zahl vergleichbar. Dabei werden aber bestimmte Logiken verwendet, damit ein Hash nicht nachgebaut werden kann, ohne den Ausgangswert zu kennen.

Quersumme aus 22 = 4
Quersumme aus 40 = 4
Quersumme aus 41 = 5

md5-Hash für 22 = b6d767d2f8ed5d21a44b0e5886680cb9
md5-Hash für 40 = d645920e395fedad7bbbed0eca3fe2e0
md5-Hash für 41 = 3416a75f4cea9109507cacd8e2f2aefc

Verwendung

Bestätigung der fehlerfreien Datenübertragung

Bei vielen Downloadseiten wird häufig ein MD5-Hash angegeben. Doch für was ist dieser gut? Lässt man mit einem geeigneten Programm den Hash-Wert einer Datei ermitteln und vergleicht diesen mit dem auf der Seite angegeben Wert, so kann man bei identischen Hashes davon ausgehen, dass diese Datei sehr wahrscheinlich unverändert übertragen wurde.

Möglichkeiten für Veränderungen:

  • Die Datei wurde erneuert und der Autor hat vergessen den Wert zu aktualisieren.
  • Die Datei wurde fehlerhaft übertragen (einfach die Datei noch mal runterladen).
  • Die Datei wurde mutwillig manipuliert (etwa durch einen Hacker)
Beachten Sie: Auch unterschiedliche Dateien können dieselbe Prüfsumme besitzen.

Verschlüsselung von Zugangsdaten

In Zeiten des Internets und der vielen (sozialen) Netzwerke werden Zugangsdaten immer wichtiger. Vor allem die Passwörter sollten geheim bleiben und nicht durch ein eventuelles Sicherheitsloch für alle bekannt werden. Da Passwörter sich von einer Datei quasi nicht unterscheiden (beides besteht aus Nullen und Einsen), kann auch über ein Passwort ein Hash gebildet werden. Die wohl bekanntesten Verfahren zur Erzeugung von Hashes sind dabei der message-digest Algorithmus 5 (MD5) und der secure hash Algorithmus (sha1).

md5(selfhtml) = 76b75d1da543673c4ceda28d89861a7c
Beachten Sie: MD5 gilt nicht mehr als sicher. Informieren Sie sich, welche besseren Methoden die von Ihnen genutzte Programmiersprache bereitstellt. In PHP gibt es beispielsweise die Funktionen password_hash und die Sodium-Bibliothek. Für JavaScript in node.js gibt es eine BCrypt-Bibliothek, für JavaScript im Browser scheint der Bedarf nicht zu bestehen, es gibt kein Browser API und auch kaum Bibliotheken.

Schwachstellen

Hashes bieten durch ihren Aufbau zwar keine Möglichkeit zur 100%igen Entschlüsselung, können durch Ausprobieren aber nachgebaut werden. Wie bei einer Quersumme auch, können 2 völlig unterschiedliche Abfolgen von Zeichen denselben Hash ergeben. Mit einer relativ einfachen Programmierung ist es daher möglich, sich Tabellen anzulegen, in denen die Hashes bestimmten Zeichenketten zugeordnet werden. Heutzutage sind viele md5-Hashes bereits bei google.de zu finden. Probieren Sie es doch einfach mal selber aus und kopieren den oben genannten Hash in die google-suche.

Hash-Funktionen wie password_hash() in PHP verwenden ein so genanntes Salz. Das ist ein Zufallswert, der möglist mit einem kryptographisch sicheren Zufallsgenerator erzeugt wurde, und der dafür sorgt, dass aus einem bestimmten Klartext (z.B. ein Passwort) nicht zweimal der gleiche Hash berechnet wird. Das Anlegen von Tabellen mit den Hashes von häufigen Passworten wird damit sinnlos.

Beachten Sie: Für sensible Daten sollte ein normaler Hash nicht verwendet werden.