Überblick Hashalgorithmen
Was heißt überhaupt Hashen?

Sicherlich nicht ein Computer mit einer Tüte!!! - Hashen heißt, eine Art "Quersumme" über Deine Daten zu bilden. Das Ergebnis ist je nach Hashverfahren ein Ergebnis fester Länge (z. B. 160 Bit). Egal, ob Deine Daten nun 1KByte oder 1MByte groß sind. Dieses Hashergebnis ist vergleichbar mit einem Fingerabdruck Deiner Daten.

Wenn Du nun auch nur ein Zeichen in Deinen Daten (z. B. Worddokument) änderst und wieder einen Hashwert bildest, ist dieser anders als der Erste. Du kannst also mit Hilfe des Hashwertes feststellen, ob irgendwas an Deinen Daten (z. B. während einer Übertragung) verändert worden ist.

Welche Hashalgorithmen sind heute im Einsatz?
Eines der bekanntesten und sicherlich auch noch weit verbreitetesten Verfahren ist das MD (Message Digest) von RSA (Data Security Inc. ) Das Message Digest gliedert sich in 3 verschiedene Versionen:

MD2 (ist nicht mehr sicher)

MD4 (ist nicht mehr sicher)

MD5 (ist im Einsatz, allerdings auch mit bekannten Sicherheitsproblemen)

Der MD5-Algorithmus erzeugt über die Daten einen 128 Bit Hashwert.

Aufgrund der bekannten Sicherheitsprobleme im MD-Verfahren wurde von der US-Regierung ein neues Verfahren veröffentlicht. Das SHS/SHA (Secure Hash Standard/Algorithm) erzeugt über die Daten einen 160 Bit Hashwert und zeigt bis heute noch keine Sicherheitsprobleme.

Diese beiden Verfahren (MD5 und SHA) werden heute in den Internetanwendungen (Zertifikate) verwendet.

Ein eher deutscher Alleingang ist das RipeMD160-Verfahren. Dieser Algorithmus ist wohl auch recht sicher, weil es für potentielle Hacker keinen Anlass gibt, diesen zu knacken. Der RipeMD160 kann von den Internetanwendungen nicht interpretiert werden.


Unterschiede
Noch mal alles ganz langsam zum Mitdenken!

Oben wurden nun PublicKeyVerfahren (asymmetrische), SecretKeyVerfahren (symmetrische) und HashVerfahren vorgestellt. Von den genannten Verschlüsselungsverfahren (asymmetrische und symmetrische) ist das asymmetrische PublicKeyVerfahren auf jedem Fall die sicherste Verschlüsselungsmethode. Der Nachteil ist der Hohe mathematische Aufwand und damit die Schwierigkeit, große Datenmengen ONLINE zu verschlüsseln. Aus diesem Grund greift man auf die symmetrischen SecretKeyVerfahren zurück, die mathematisch nicht so aufwendig sind.

Wie der Name SecretKey schon sagt, darf der Schlüssel bei den symmetrischen Verfahren keinem anderen als Dir bekannt werden. Hier bietet sich nun die Kombination aus dem SecretKey und dem PublicKey Verfahren an. Zum Aushandeln eines SecretKey's (SessionKey) wird das PublicKeyVerfahren verwendet und zur anschließenden Datenverschlüsselung das SecretKeyVerfahren mit dem SessionKey als SecretKey. In diesem Fall wird der SecretKey zum Beispiel für 3DES von einem Zufallszahlengenerator mit einer Länge von 24Byte erzeugt und wird nur für diese eine Session verwendet. Damit auch Dein Gegenüber in den Besitzt des SecretKey's kommt, wird dieser mit dem asymmetrischen Verfahren verschlüsselt und auf der Empfangsseite mit dem PrivateKey entschlüsselt.

Der PrivateKey gehört immer mit dem PublicKey zusammen. Wir sprechen hier auch von einem Schlüsselpaar, welche beide für eine Ver- und Entschlüsselung nach dem asymmetrischen Verfahren notwendig sind. Daten, die mit dem PublicKey von A verschlüsselt worden sind, können nur mit dem PrivateKey von A wieder entschlüsselt werden. Wie der SecretKey, darf der PrivateKey niemand anderem als dem Inhaber bekannt sein. Der Vorteil bei dem Schlüsselpaar ist, dass der Schlüssel nicht übertragen werden muss, wie es bei dem symmetrischen Verfahren notwendig ist. Selbst wenn ich den SecretKey persönlich meinem Partner aushändige, so ist doch schon mind. 1 fremde Person im Besitzt meines geheimen Schlüssels.

Welche Rolle spielt nun das Hashverfahren in diesem Fall? - Das Hashverfahren ist kein Ver- oder Entschlüsselungsverfahren. Es wird nach einem mathematisch festgelegten Mechanismus (HashVerfahren) eine Art "Quersumme" über die Daten gebildet. Unabhängig von der Länge der Daten (100 Byte, 1000 Byte oder 1 MByte), wird ein fester Fingerabdruck dieser Daten mit einer festen Länge von z. B. 160 Bit (RipeMD160) gebildet.

Wenn Du nun z. B. einen Hashwert über Deine EMail gebildet hast und nur ein Zeichen in Deiner EMail veränderst, dann verändert sich auch der Hashwert. Der Hashwert beinhaltet keine großen Datenmengen und kann so vor der Übertragung mit einem asymmetrischen Schlüsselverfahren ONLINE verschlüsselt werden. Nur der Empfänger dieser EMail kann nun mit seinem PrivateKey den ursprünglichen Hashwert wieder herstellen und prüfen.

Der Empfänger kann nun seinerseits wieder einen Hashwert über Deine Daten (EMail) bilden und vergleicht diesen mit dem verschlüsselt übertragenden Hashwert. Stimmen beide Werte überein, so wurde Deine EMail oder Daten unterwegs nicht verfälscht.


Beispiel
Besser als alle Erklärungen - Ein Beispiel!

Aus Erfahrung wissen wir, dass so eine trockene Materie sehr langweilig und kaum zu verstehen ist. Am besten lässt sich der Zusammenhang an einem Beispiel erklären. Gegeben sei eine Verbindung zwischen Dir und Deinem Freund Bernd, die nicht abgehört werden soll:

Du bist mit dem Computer von Deinem Freund übers Internet verbunden und Ihr wollt eine verschlüsselte Übertragung durchführen. Dafür müsst Ihr beide im Besitzt von einem Zertifikat bzw. von einen Schlüsselpaar (Secret- und Public-Key) sein.

Schritt 1: (Authentisierung)

Zuerst willst Du ja ganz sicher sein, dass Dein gegenüber auch wirklich Dein Freund Bernd ist und dieser will vermutlich auch ganz sicher sein, dass Du der bist, der Du vorgibst zu sein. Diese Aktion nennt man Authentisierung!!! Wie läuft das jetzt ab?

Du verschlüsselst z. B. eine 24Byte lange Zufallszahl mit dem PublicKey Deines Freundes und schickst Ihm diese. Dieser kann nun diese Zufallszahl nur mit seinem PrivateKey wieder richtig entschlüsseln und schickt sie Dir zurück. Du vergleichst die Zufallszahl, die Du verschlüsselt und gesendet hast mit der Zahl, die Du wieder zurückbekommen hast. Stimmen die beiden Zahlen überein, so ist das am anderen Ende der Leitung wirklich Dein Freund. Denn nur er konnte mit seinem PrivateKey die Zahl richtig entschlüsseln. Das gleiche macht nun Dein Freund mit Dir und wenn alles gut gelaufen ist, ist die Authentikation positiv. Bei diesem Manöver hat weder Dein PrivateKey noch der PrivateKey Deines Freundes den Computer verlassen und konnte so auch nicht abgehört werden.

Schritt 2: (SessionKey aushandeln)

Dieser Schritt wird i. d. R. in Schritt 1 eingebaut. Aber zum besseren Verständnis noch mal Separat behandelt. Einer von euch muss nun einen SessionKey vorschlagen. Das läuft ähnlich wie im Schritt 1 ab. Einer von euch generiert wieder eine 24Byte Lange Zufallszahl und verschlüsselt diese mit dem PublicKey des anderen. Der andere entschlüsselt ihn mit seinem PrivateKey und ihr habt beide einen 24Byte Langen SessionKey für eine TripelDES-Verschlüsselung ausgehandelt. Der SessionKey ist dabei nur RSA-Verschlüsselt übers Netz gegangen und ist somit relativ (für einen endlichen Zeitraum) sicher.

Schritt 3: (Daten verschlüsseln)

Ihr könnt nun die zu übertragenden Daten mit einem TripelDES-Verfahren verschlüsseln und übers Netz schicken. Euer Freund kann dann mit dem SessionKey die Daten nach dem gleichen TripelDES-Verfahren wieder entschlüsseln.

Warum diesen Umweg mit dem SessionKey und nicht direkt mit dem RSA-Private- bzw. -Public-Key?

Bei dem RSA-Verfahren handelt es sich um ein asymmetrisches und sehr mathematisch aufwendiges Verschlüsselungsverfahren. Auch mit einem sehr schnellen Computer dauert es Ewigkeiten große Datenmengen RSA zu verschlüsseln und zu entschlüsseln. Dein Freund müsste gegebenenfalls Stunden oder Tage auf das Ergebnis warten. Ein 24Byte Langer Datenstream lässt sich jedoch recht schnell mit demRSA-Verfahren ver- und wieder entschlüsseln. Nun kommt das DES bzw. TripelDES-Verfahren zum Einsatz. Bei diesem Verfahren handelt es sich um ein symmetrisches Schlüsselverfahren und ist auch mathematisch nicht so aufwendig. Damit kannst Du im Prinzip ONLINE die Daten ver- und wieder entschlüsseln.