Passwörter verschlüsseln???
-
Hi,
kann mir wer sagen, wie ich Passwörter richtig Verschlüsseln kann???
Also unter Verwendung von PHP4 und MySQL...Thx und MfG WirrWar2850.
-
MySQL: http://dev.mysql.com/doc/mysql/en/encryption-functions.html
PHP: http://www.php.net/manual/de/ref.strings.php (z.B. crypt, md5)
-
Kleiner Tipp, ich empfehle md5 zweimal einzusetzen(md5(md5($pw));), so kann man mit dem Hash nicht mehr viel anfangen, weil eine BruteForce extrem lange dauern würde.
_POST['pw']));
Die Mysql Spalte sollte vom Typ Varchar sein und 32 Zeichen haben.
-
ich sehe keinen Vorteil, wenn du die md5 check sum auf die md5 check sum anwendest.
-
supertux schrieb:
ich sehe keinen Vorteil, wenn du die md5 check sum auf die md5 check sum anwendest.
Auch wenn das Passwort des Benutzers nur drei Zeichen lang war, wird der Hash nichts nützen. Die Bruteforce müsste 32(!) Zeichen knacken. Und Login Forms kann man ja ganz simpel schützen.
-
nob6 schrieb:
Auch wenn das Passwort des Benutzers nur drei Zeichen lang war, wird der Hash nichts nützen. Die Bruteforce müsste 32(!) Zeichen knacken. Und Login Forms kann man ja ganz simpel schützen.
Bei bruteforce ist es doch ganz egal wie oft und ob du das passwort ueberhaupt verschluesselst...
und wenn der angreifer an den md5 hash kommt, dann ist es 1) trotzdem verdammt aufwendig zu knacken und 2) meistens geschieht soetwas nur durch eine sicherheitsluecke - die probleme sind also tiefgreifend...
-
nob6 schrieb:
supertux schrieb:
ich sehe keinen Vorteil, wenn du die md5 check sum auf die md5 check sum anwendest.
Auch wenn das Passwort des Benutzers nur drei Zeichen lang war, wird der Hash nichts nützen. Die Bruteforce müsste 32(!) Zeichen knacken. Und Login Forms kann man ja ganz simpel schützen.
was nützt dir der Hash, wenn du von der Seite aus, ihn nicht benutzt kannst? Durch Bruteforce muss der Angreifer so oder so irgendwann das richtige Passwort eingeben, auch wenn du 100 Mal md5 drauf anwendest.
-
Ich denke mal, dass die mehrfache Verschlüsselung durch MD5 schon Sinn macht, sofern dem Angreifer nicht bekannt ist, wie oft der MD5-Algorithmus angewendet wurde und er somit mehrer Brute Force-Runden durchlaufen lassen müsste, wodurch sich die Zeit vervielfacht.
Das Prinzip des Brute-Force-Angriffs auf MD5 ist ja, dass versucht wird, eine "Kollision" zu berechnen, also einen String, der exakt den gleichen Hash hat wie das ursprüngliche Kennwort (Es muss ja nicht das eigentliche Kennwort selbst sein, da Hashes ja nicht eindeutig in den Ursprungsstring umwandelbar sind, obwohl das bei den NTLM-Hashes seltsamerweise der Fall war
)
Fazit: Sofern der Angreifer nicht weiß, wie oft der MD5-Algorithmus angewendet wurde, erschwert man damit das Knacken seines Kennwortes.
Übrigens haben die Chinesen im August 2004 die erste Kollision im MD5-Algorithmus in angeblich 5 Minuten berechnet, somit wäre dieser auch als "unsicher" einzustufen.
-
masterofx32 schrieb:
Ich denke mal, dass die mehrfache Verschlüsselung durch MD5 schon Sinn macht, sofern dem Angreifer nicht bekannt ist, wie oft der MD5-Algorithmus angewendet wurde und er somit mehrer Brute Force-Runden durchlaufen lassen müsste, wodurch sich die Zeit vervielfacht.
Das ist schwachsinn.
Erklaerung: auch wenn ich ein passwort nicht verschluessle -> der angreifer hat ja keine daten darueber, er muss einen bruteforce angriff machen.
ausnahme ist, dass er den md5 hash bekommt - was aber ansich schon eine sicherheitsluecke vermuten laesst.
Das Prinzip des Brute-Force-Angriffs auf MD5 ist ja, dass versucht wird, eine "Kollision" zu berechnen, also einen String, der exakt den gleichen Hash hat wie das ursprüngliche Kennwort
Was natuerlich auch bei einer mehrfachverschluesselung moegllich ist und der angreifer keineswegs jedes md5 einzeln entschluesseln muss, sondern lediglich einen string generieren muss, der den letzten md5 hash erzeugt.
einziger vorteil: schlechte passwoerter waeren dadurch weniger anfaellig.
Fazit: Sofern der Angreifer nicht weiß, wie oft der MD5-Algorithmus angewendet wurde, erschwert man damit das Knacken seines Kennwortes.
begruendung?
Übrigens haben die Chinesen im August 2004 die erste Kollision im MD5-Algorithmus in angeblich 5 Minuten berechnet, somit wäre dieser auch als "unsicher" einzustufen.
klar ist md5 nicht das beste - aber man gibt den hash ja sowieso nicht her.
-
Hmm, bezüglich der Sache mich den Brute Force-Runden muss ich eingestehen, dass ich da irgendwie einem logischen Fehler unterlegen bin
Ich bin zu starr davon ausgegangen, wieder vom Hash auf die Ebene des ursprünglichen Kennwortes zu kommen aber das ist ja nicht erforderlich, wenn man das System einfach nur dazu bringen will, die eigene Eingabe als gültiges Kennwort zu akzeptieren.Aber ich hätte dazu noch folgende Überlegungen:
Würde die mehrfache MD5-Verschlüsselung nicht doch Sinn machen, wenn die Passwortvergabe und Passworteingabe auf 10 Zeichen beschränkt wird? In dem Fall kann man das System ja nicht dazu bringen, den 32-stelligen MD5-Hash als Kennwortalternative zu akzeptieren und somit müsste man eine weitere Runde durchlaufen.
Würde es nicht, ausgehend von der Durchführung eines simplen kombinatorischen BrutForce-Angriffes, länger dauern, bis beim Durchlauf der 6-stelligen Passwortkandidaten der richtige gefunden wird als einen 32-Zeichen-Hash per Brute Force zu ermitteln!?
Edit: Von welcher Situation bist du jetzt eigentlich ausgegangen - dass jemand auf dem Frontend der Seite eine BruteForce-Attacke startet, um Zugriff darauf zu erlangen oder dass jemand den MD5-Hash hat und daraus ein gültiges Kennwort berechnen will? Ich spreche jedenfalls gerade vom zweiten Fall
-
masterofx32 schrieb:
Übrigens haben die Chinesen im August 2004 die erste Kollision im MD5-Algorithmus in angeblich 5 Minuten berechnet, somit wäre dieser auch als "unsicher" einzustufen.
klar ist md5 nicht das beste, md5 ist auch nicht gemacht worden, um Passwörter zu verschlüsseln, immerhin berechnet der md5 Algo. eine quasi eindeutige Zahl zu jeder Folge von Zeichen. Mit md5 ist es einfacher auf Fehler in den Dateitransfer zu überprüfen, weil wenn die md5 Summe nicht gleich ist, dann ist der Inhalt der heruntergeladene Datei nicht gleich wie auf dem Server.
-
supertux schrieb:
Mit md5 ist es einfacher auf Fehler in den Dateitransfer zu überprüfen, weil wenn die md5 Summe nicht gleich ist, dann ist der Inhalt der heruntergeladene Datei nicht gleich wie auf dem Server.
Macht man das jetzt nicht mehr mit CRC?
-
Man legt ein Passwort als MD5 nicht in der DB ab weil man eine Bruteforce verhindern will.
Man verhindert dadurch das jeder mit zugiff auf die DB die Passwörter hat.
Sollte der Server gehackt werden dann würde er Klartextpasswörter haben. SO hat er nur einen MD5.Bruteforce vehindert man anders.
-
Unix-Tom schrieb:
SO hat er nur einen MD5.
genau, und aus der MD5 kann man das original nicht mehr herleiten. D..h (auch wenn man den Hash kennt) solange man nicht in einem Formular sich mit dem hash einloggen kann, ist das unbrauchbar.
-
Hi
und dann erweitert man Hash noch um einen Salt. dann hats der Eindringling noch schwerer. Er ist dann gezwungen eine bruteforce Amgriff durchzuführen. und das für jedes einzelne Passwort. Andersrum könnte er ja einfach auf eine Datenbank zurückgreifen in der alle md5 hases von sagen wir mal 5-6 stelligen passwörtern drinstehen.
hash = md5(salt + password)
gruss Termite
-
Hört sich nett an... könnte mich mit MD5 anfreunden, leicht bedienbar und schwer zu knacken...
Also wenn ich das richtig verstanden hab, dann kann man aus dem Hash kein original Passwort mehr herleiten, was ja eigentlich der Sinn der Sache ist. Und wenn also kein Form existiert, in dem der Hash nicht nochmal mit MD5 umgewandelt wird, dann bringen einem also die Hash Codes nix
...
Sehr sehr vielen Dank...
cya WirrWar2850.
-
Termite schrieb:
Hi
und dann erweitert man Hash noch um einen Salt. dann hats der Eindringling noch schwerer. Er ist dann gezwungen eine bruteforce Amgriff durchzuführen. und das für jedes einzelne Passwort. Andersrum könnte er ja einfach auf eine Datenbank zurückgreifen in der alle md5 hases von sagen wir mal 5-6 stelligen passwörtern drinstehen.
hash = md5(salt + password)
gruss Termite
mit einem hash hat kann der Angreifer nix anfangen, auch wenn du dem Passwort 1000 Zeichen hinzufügst, Brute Force muss er so oder so machen. Denn dass man die Datenbank sehen kann, heißt noch lange nicht, dass man sich ins System (bsp ein Forum) einloggen kann, weil da die einzige Möglichkeit das Login-Formular ist und dort nutzt die den hash nicht.
-
Um mal etwas einzuwerfen:
Es wurde bereits eine Kollision in MD5 gefunden. Das bedeutet natürlich nicht, dass es unsicher wird, aber es ist ins Wanken geraten. Es ist deswegen empfehlenswert, wenn möglich auf SHA1 umzusteigern. Ist ebenfalls in PHP implementiert und genauso einfach zu nutzen.
-
Dasd schrieb:
Um mal etwas einzuwerfen:
Es wurde bereits eine Kollision in MD5 gefunden. Das bedeutet natürlich nicht, dass es unsicher wird, aber es ist ins Wanken geraten. Es ist deswegen empfehlenswert, wenn möglich auf SHA1 umzusteigern. Ist ebenfalls in PHP implementiert und genauso einfach zu nutzen.
Die Fähigkeit, lesen zu können erweist sich in manchen Situationen klar als Vorteil
(nicht böse gemeint
)
Aber wie ist denn eure Meinung zu der Sicherheit beim doppelten Hashen mit MD5 im Fall, dass der Angreifer Zugriff auf den gespeicherten Hash erlangt hat?
-
masterofx32 schrieb:
Die Fähigkeit, lesen zu können erweist sich in manchen Situationen klar als Vorteil
(nicht böse gemeint
)
Bräuchte man dafür nicht Augen?
Ich wollte lediglich nocheinmal in aller Eindringlichkeit darauf hinweisen bevor sich WirrWar2850 auf MD5 stürzt.
masterofx32 schrieb:
Aber wie ist denn eure Meinung zu der Sicherheit beim doppelten Hashen mit MD5 im Fall, dass der Angreifer Zugriff auf den gespeicherten Hash erlangt hat?
Welchen von den beiden jetzt? Zwischen den beiden Hashvorgängen?
Prinzipiell bin ich der Meinung, dass sich durch ein doppeltes Hashen nichts verändert. Weder die Anzahl der Hashes noch die Anzahl der Kollisionen, die ein- und denselben Hash erzeugen. Selbst der Meinung, dass unsichere Passwörter (weil zu kurz oder was auch immer) dadurch besser werden, kann ich mich nicht abschließen. MD5 ist eine Funktion, eine mathematische Abbildung, die aus ein- und demselben Input ein- und denselben Output erzeugt. Passwörter werden dadurch nicht sicherer...
-
Dasd schrieb:
Um mal etwas einzuwerfen:
Es wurde bereits eine Kollision in MD5 gefunden. Das bedeutet natürlich nicht, dass es unsicher wird, aber es ist ins Wanken geraten. Es ist deswegen empfehlenswert, wenn möglich auf SHA1 umzusteigern. Ist ebenfalls in PHP implementiert und genauso einfach zu nutzen.
Najo,
dann solltest du dir das hier mal durchlesen