Encryption

From Wiki RB4

Introduction[edit]

Hier wird die Postkarte nicht mehr nur in Klarsichtfolie eingeschweißt, sondern in einen blickdichten Briefumschlag gesteckt. Der Umschlag hat sogar noch die Eigenschaft, dass er nur von einer ganz bestimmten Person, nämlich dem Empfänger in geöffnet werden kann

Ein-Weg-Verschlüsselung[edit]

Die Ein-Weg-Verschlüsselung ist eine echte Sackgasse: ist der Text einmal verschlüsselt, so kann ihn niemand mehr entschlüsseln. Diese Verfahren sind daher, wenn sie korrekt entworfen sind, sehr sicher, da es keinerlei Geheimnis über den Schlüssel gibt, das Unbefugten in die Hände fallen könnte. Damit kann man Passwörter speichern ohne das Original-Passwort später kennen zu müssen. In der Regel können sogar verschiedene Klartexte zum selben verschlüsselten Text führen; manchmal macht man sich das zunutze, um den Text bei der Verschlüsselung zu kürzen.

Hash[edit]

Hash-Funktionen sind mathematische Funktionen, die einen beliebigen Eingabewert auf einen festen Wertebereich abbilden. Etwas weniger hochtrabend ausgedrückt: Es gibt Funktionen, die man mit einem beliebigen Text beliebiger Länge füttern kann und die für jeden solchen Text einen sogenannten Hashwert berechnen. Dieser hat in der Regel immer die gleiche Länge, z.B. 32 alphanumerische Zeichen. Der gleiche Text erzeugt immer den gleichen Hashwert. Wenn zwei Eingabewerte auf den gleichen Hashwert abbilden, nennt man das eine Kollision. Für den kryptografischen Einsatz, braucht man Hash-Funktionen, die möglichst kollisionsfrei sind. Passwörter werden in verschlüsselter Form gespeichert. Bei der Eingabe eines Passworts wird es mit demselben Verfahren verschlüsselt und mit dem gespeicherten verglichen. Es ist nicht nötig, das Passwort im Klartext zurückzugewinnen - im Gegenteil, es ist sehr erwünscht, dass das nicht geht.

MD5("0123456789") = 781e5e245d69b566979b86e28d23f2c7
MD5("012345678") = 22975d8a5ed1b91445f6c55ac121505b
MD5("012345677") = f50ce2d35116fe4bc9dfa8de7af02305

Was natürlich schon geht, ist, aus einer Liste von verschlüsselten Passwörtern diejenigen herauszufischen, die im Klartext einen von relativ wenigen vorgegebenen Werten haben, beispielsweise die in einem Wörterbuch stehen. Um dieses Problem zu beheben, wird das Passwort vor dem Speichern in der Datenbank "gesalzen". Es wird eine zufällige Zeichenfolge (das Salz, Salt) erzeugt und diese wird vor dem Hashen an das Passwort (im Klartext) angehängt. Die Zeichenfolge wird natürlich ebenfalls in der Datenbank gespeichert, damit beim Login wieder der gleiche Hashwert erzeugt werden kann.

Bekannte Funktionen sind:

  • MD5 -> 32 Characters, already hacked
  • SHA512 (Secure Hash Algorithm)

Fingerabdrücke, Digest[edit]

Längere Texte werden mit einem solchen Verfahren auf einen wesentlich kürzeren "Fingerabdruck" komprimiert. Hängt dieser vom gesamten Text ab und ist lang genug, und ist das Verfahren sorgfältig entworfen, dann wird es nicht möglich sein, einen anderen Ausgangstext zu konstruieren, der nach Verschlüsselung genauso aussieht. Damit ist es möglich, die Unverfälschtheit einer Nachricht zu überprüfen, indem man auf einem anderen Weg gleichzeitig den Fingerabdruck übermittelt. Man kann beispielsweise bei der Ankündigung einer neuen Softwareversion deren Fingerabdruck mit bekanntgeben, den der Benutzer dann nach einem Download überprüfen kann.

Symmetrische Verschlüsselung[edit]

Die symmetrische Verschlüsselung (secret key encryption) ist der Fall, an den man spontan denkt, wenn von Verschlüsselung die Rede ist: derjenige, der den Text verschlüsselt und derjenige, der ihn später entschlüsselt (das kann natürlich auch derselbe sein, wenn die Verschlüsselung nur der sicheren Aufbewahrung dienen sollte), haben einen Schlüssel vereinbart, den sie beide benutzen. Wer verschlüsseln kann, kann auch entschlüsseln und umgekehrt. Das bedeutet in der Regel nicht, dass der Schlüssel zum Entschlüsseln exakt derselbe ist wie der zum Verschlüsseln - es reicht, wenn der eine in einfacher Weise aus dem anderen erschlossen werden kann.

Die Schwäche symmetrischer Verschlüsselungsverfahren in der Datenkommunikation ist die Notwendigkeit, zwischen Sender und Empfänger einer Nachricht den gemeinsam benutzten geheimen Schlüssel auszutauschen. Dieser Austausch darf nicht belauscht werden, sonst ist die gesamte Verschlüsselung zwecklos.


Asymmetrische Verschlüsselung[edit]

Asymmetric algorithms use a pair of keys, one key for encryption and another key for decryption.