Einfaches Beispiel: "dev" wird zu "ghy"

Wissen: Unterschied zwischen Verschlüsselung und Hash

Der Unterschied zwischen einer Verschlüsselung und einem Hash ist eigentlich recht einfach, sobald man es einmal verstanden hat.

Verschlüsselung

Verschlüsselungen verschleiern mit einem bestimmen Algorithmus Informationen und Dateien , sprich sie werden unleserlich gemacht. Im optimalen Fall ist es unmöglich, die verschlüsselten Dateien wieder zu entschlüsseln, sprich die Informationen wieder leserlich zu machen, wenn man nicht den exakten Algorithmus kennt. Ein guter Algorithmus verarbeitet zusätzlich ein frei festlegbares Passwort, dass in der Verschlüsselungs-Methode mit eingerechnet wird. Mit anderen Worten, für die Entschlüsslung muss man dann nicht nur den Algorithmus kennen, sondern zusätzlich auch noch das exakte Passwort. Die Verschlüsselung dient also dazu, Informationen von fremden Zugriffen zu schützen.

Ein recht einfaches Beispiel für eine Verschlüsselung ist die sogenannte „Caesar“-Verschlüsselung. Bei dieser Verschlüsslung werden alle Buchstaben um genau drei Stellen im Alphabet verschoben. Bei der Entschlüsselung werden die einzelne Buchstaben also um genau 3 Stellen zurückgeschoben.

Einfaches Beispiel: "dev" wird zu "ghy"
Caesar Verschlüsselung: Alle Buchstaben werden um drei Stellen verschoben.

Dies ist ein sehr, sehr altes Verfahren und mindestens genauso unsicher. Der Name geht auf Julius Caesar zurück, da dieser angeblich diese Methode erfunden hat, um verschlüsselte Botschaften per Brief zu verschicken.

 

Hash

Ein Hash hingegen berechnet aus Informationen (Dateien, Werte, Inhalte) mithilfe eines festgelegten Algorithmus einen sogenannten Hash-Wert. Theoretisch kann man diese Berechnung nicht mehr rückgängig machen. Es ist also nicht möglich, nur durch den Hash-Wert wieder an der ursprünglichen Information zu kommen. Dieser Hash-Wert (auf deutsch auch Prüfsumme) ist ein eindeutiger Wert. Es gibt eine sehr, sehr geringe Wahrscheinlichkeit das unterschiedliche Informationen einen gleichen Hash-Wert haben. Diese Wahrscheinlichkeit ist aber so gering, dass man dies an dieser Stelle durchaus vernachlässigen darf.

Einen Hash wird verwendet, falls man einen Wert zwar auf seiner Korrektheit überprüfen möchte, diesen ansonsten aber vor jeglichen Zugriff schützen möchte und absolut niemand diesen Wert in Klartext (sprich: vor den Hash-Vorgang) angezeigt werden muss. Am häufigsten kommt dieser Fall natürlich bei Passwörtern vor. Ein Benutzer gibt also ein beliebiges Passwort ein. Dieses Passwort wird durch einem Algorithmus zu einen Hash-Wert verrechnet. Dieser Hash-Wert wird anschließend gespeichert (z. B. in einer Datenbank). So kann absolut niemand, auch nicht der Betreiber des Angebotes, das Passwort des Benutzers im Klartext lesen. In der Theorie (!) ist das Passwort des Benutzers also auch dann noch sicher, falls jemand an den Hash-Wert kommen sollte.

Dies hängt damit zusammen, dass bei der Anmeldung des Benutzers wieder das Passwort im Klartext eingegeben werden muss. Zur Überprüfung, ob das Passwort denn nun richtig ist oder nicht, wird das Passwort im Klartext wieder mit den aller selben Algorithmus verrechnet. Falls also wieder derselbe Hash-Wert berechnet wird, wie zuvor gespeichert wurde, bedeutet dies, dass das richtige Passwort eingegeben wurde.

Wenn man also den gleichen Wert mit dem gleichen Algorithmus verrechnet, bekommt man immer denselben Hash-Wert. So wie 1 + 1 immer exakt 2 ist.

Beispiele für Hash-Werte unter Nutzung von SHA256:

Wert im Klartext Hash-Wert
123456 8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92
useAsavePassword 5943ff949c51d0fbebdbddf671a4132660f0ae0fe6a51331e6aa4f54c582e883
Sonderzeichern!? 642b9ea75534c0c1dbed2e0897535b9f16f566940b3c5075399d495d859bdcba

 

Ein Tutorial für die Verwendung von Verschlüsselungen und Hash-Werten bzw. deren Generierung wird es demnächst geben.

Ein Gedanke zu „Wissen: Unterschied zwischen Verschlüsselung und Hash“

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.