Verschlüsselung -> Lesetipp gesucht

MAjbO

Vice Admiral Special
Mitglied seit
15.04.2002
Beiträge
540
Renomée
9
Standort
Schweiz
Hi Leute :)

Wenn das hier nicht hingehört verschiebe man mich in's OT ;)

Ich wollte fragen, ob mir jemand ein par Lesetips zum Thema Verschlüsselung geben kann.
Ziel ist es ein Passwort zu verschlüssel und dieses in eine DB zu speichern. Entschlüsselt musss es nicht werden, wer sein PW vergisst soll sich ein neues Ausdenken ;)

Jetzt habe ich zwar schon eine halbe Stunde gegoogelt, aber scheinbar mit den falschen Suchbegriffen. Denn meistens komme ich auf seiten die mir viel zu Theoretisch sind und wo es auch immer wieder ums (für mich uninteressante) entschlüsseln geht.

Ich hoffe, ihr versteht mich und könnt mir helfen :)
 
Am besten mit MD5. Diese One-Way-Verschlüsselung ist als Funktion schon in vielen Programmiersprachen integriert.

One-Way bedeutet, dass man aus der verschlüsselten Zeichenfolge, das eigentliche Passwort nicht nicht zurückberechnen kann. Nur per BruteForce lässt sich da das Passwort herausfinden.

Hier ist eine gute Seite zu dem Thema.

http://www.ch280.thinkquest.hostcenter.ch/crypto/home.html
 
Ein anderer Kandidat wäre SHA1. Genau wie MD5 ist das übrigens kein Verschlüsselungssystem im engeren Sinne, sondern ein Algorithmus zur Berechnung von Hashwerten.
 
SHA1 ist ein gutes Stück langsamer als MD5, aber bei Passwörtern ist aber ohnehin egal. Von MD5 weis ich z. B. dass es da in PHP bereits eine fertige Funktion gibt.
 
Für MD5 eine höhere Verbreitung fertige Funktionen und zum hashen von großen Daten natürlich die Geschwindigkeit.

Wenn ich mich richtig erinnere bestünde diese Schwachstelle, wenn man die Hashstrings selbst wählen könnte.

Ist aber eigentlich egal 8)
 
Also, mal kurz was prinzipielles zu MD5:

MD5 ist ein Hashalgorithmus, dh. das Passwort würde nicht verschlüsselt, sondern ein Haswert davon in der Datenbank abgelegt. Wenn sich nun der User einloggen will, wird der Hashwert seiner Passworteingabe gebildet und mit dem in der Datenbank verglichen.
Nun könnte ein Angreifer ja einfach eine Wörterbuchattacke auf die Datenbank starten, indem er sich einfach den Hashwert von Zigtausend Wörtern berechnen lässt und dann einfach den Hashwert aus der Datenbank ausliest und mit den einträgen in seiner Haswertliste vergleicht.
Darum gibt es das sog SALT. Dies ist ein, bei der Erstellung des Passworthashes, an das Passwort angehängter String. Dadurch wird zB nicht der Hashwert für GEHEIM berechnet, sondern für GEHEIMA oder GEHEIMB. Dieses SALT ist mit in der Datenbank abgespeichert und wird beim einloggen an die Eingabe angehängt und dann gehasht. Wenn nun dieses SALT 2 Zeichen lang ist, ergibt sich dadurch schon 4096 Variationen des Hashwertes für GEHEIM. Ein Angreifer bräuchte also eine 4096-mal so große Datenbank, um die selben Wörter wie ohne SALT vorzuhalten.
Die Länge des SALT und des Passwortes spielen bei MD5 keine Rolle. Prinzipiell kann sich ein User also Passwort eine 700MB Datei angeben. Zwar würde das erstellen des Hashwertes halt ne Zeit dauern, der Hashwert wäre aber wieder nur 32 Byte lang (wenn man die 128 Bit als Hexadezimalzahl speichert).

SHA funktioniert so ziemlich genauso.

Vorteil von MD5:
Es gibt eine Implementation in LINUX, in C geschrieben. Mir relativ wenig arbeit, kannst die zB in C++ portieren und ein dein Programm einbauen.

Für mehr guck zB hier:
SHA in wiki
MD5 in wiki

Oder guck mal in den RFCs zu den beiden. Einfach nach RFC MD5 googeln.
 
danke euch allen und besonders auch Marnem für die Erklärung
habe hoffentlich heute Abend endlich genügend Zeit mich damit zu beschäftigen :)
 
Zurück
Oben Unten