• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

PHP - professionelle Passwortverschlüsselung

djfabi

Mitglied
Hallo,

ich habe vor eine kleine Online-Commmunity zu schreiben.

So alles ist bisher nur in Planung, und ich mache mir natürlich auch über die Sicherheit gedanken.

Wie kann ich am besten alle Passwörter sichern?
nur md5() ist mir ein bisschen unssicher ;)

Gibt es da extra PHP-Klassen für?

Gruß :)
 
Werbung:
Danke erstmal,
gibt es eventuell auch noch PHP Klassen, welche auf relative (ich will jetzt hier keine Diskussion für Sicherheit anfangen) unbekannte
Algorithmen arbeiten?

So wie ich das jetzt sehe ist also SHA-512 der sicherste oder?
 
Werbung:
Meines Wissens zufolge, ist es das sicherste was du machen kannst. Ich will mich allerdings nicht zu weit aus dem Fenster lehnen.

Wenn es dir um den Bekanntheitsgrad geht, ist es dir natürlich freigestellt das du den SHA-Hash zusätzlich auf grund eines eigenen Schlüssel weiterveschlüsselst.

Stichwort Blowfish

Ich persönlich würde mich aber schon mit einem reinen SHA-256 Hash zufrieden geben.
 
Werbung:
Danke erstmal,
gibt es eventuell auch noch PHP Klassen, welche auf relative (ich will jetzt hier keine Diskussion für Sicherheit anfangen) unbekannte
Algorithmen arbeiten?

So wie ich das jetzt sehe ist also SHA-512 der sicherste oder?

Du gehst das Problem falsch an. Salts genügen vollkommen. Man kann md5- und sha-Encryption nicht cracken. Man kann nur Listen führen. Zwei Zeichenketten können nämlich dieselbe Ausgabe haben.
 
Werbung:
Werbung:
Verschlüsselt wird mit Ein-Weg Alogorithmen, die gar nicht so leicht zu entwickeln sind. Man kann also nur Ver, nicht Entschlüsseln.

mermshaus hat es doch nun schon 2 Mal geagt und verlinkt.

Die Gefahr geht von immer schneller werdenden Rchnern aus, die keine Rainbow-Tables mehr brauchen, weil sie Mio. von hashes in einer Sekunde produzieren können. Einziges Kriterium das den Prozess für solche Tools erschwert, sind ordentliche Passwörter.

Das Passwort aaa ist sicher schnell ermittelt, TralAl1#47*^ wohl eher nicht.

Beim Thema sicher wird immer übersehen, dass es darum geht, entweder Passwörter zu erraten oder dass die Datenbank geklaut wird, in der die Passwörter abgelegt werden.
Für das Passwort abc hilft weder MD5 noch Salt512 oder sonst einem Verfahren, wenn man eine falsche Eingabe nicht nach x Versuchen abbricht und den Angreifer so ausperrt, dass es erheblichen Aufwand hat einen neuen Versuch zu starten.
Salt hilft vor allem dann, wenn die Datenbank geklaut wurde, da das Supergeheime Passwort das in Salt mit verarbeitet wird, nicht bekannt ist.
Mal eherlich, wer denkt denn von Euch darüber nach, die Datenbank vor Diebstahl zu sichern.

Also nochmal:
Wird die Tabelle der Passwörter nicht geklaut, sondern über Eingabe versucht zu erraten, sind MD5 und Salt vollkommen gleichwertig. Wie sicher hängt von Länge und verwendeten Zeichen ab. Gross/Kleinbuchstaben, Zahlen und Sonderzeichen sind fast ein Muss um sicher zu sein.
 
Verschlüsselt wird mit Ein-Weg Alogorithmen, die gar nicht so leicht zu entwickeln sind. Man kann also nur Ver, nicht Entschlüsseln.

mermshaus hat es doch nun schon 2 Mal geagt und verlinkt.

Die Gefahr geht von immer schneller werdenden Rchnern aus, die keine Rainbow-Tables mehr brauchen, weil sie Mio. von hashes in einer Sekunde produzieren können. Einziges Kriterium das den Prozess für solche Tools erschwert, sind ordentliche Passwörter.

Das Passwort aaa ist sicher schnell ermittelt, TralAl1#47*^ wohl eher nicht.

Beim Thema sicher wird immer übersehen, dass es darum geht, entweder Passwörter zu erraten oder dass die Datenbank geklaut wird, in der die Passwörter abgelegt werden.
Für das Passwort abc hilft weder MD5 noch Salt512 oder sonst einem Verfahren, wenn man eine falsche Eingabe nicht nach x Versuchen abbricht und den Angreifer so ausperrt, dass es erheblichen Aufwand hat einen neuen Versuch zu starten.
Salt hilft vor allem dann, wenn die Datenbank geklaut wurde, da das Supergeheime Passwort das in Salt mit verarbeitet wird, nicht bekannt ist.
Mal eherlich, wer denkt denn von Euch darüber nach, die Datenbank vor Diebstahl zu sichern.

Also nochmal:
Wird die Tabelle der Passwörter nicht geklaut, sondern über Eingabe versucht zu erraten, sind MD5 und Salt vollkommen gleichwertig. Wie sicher hängt von Länge und verwendeten Zeichen ab. Gross/Kleinbuchstaben, Zahlen und Sonderzeichen sind fast ein Muss um sicher zu sein.

Das ist Unsinn. Der Sha512-Algo ist darauf ausgesetzt, langsam zu sein. md5() ist etwa hundertmal schneller und Bruteforcing wird durch diese Methode schonmal noch unlustiger. Es gibt viele Mechanismen, automatisierte Angriffe zu verhindern. Das HTTP-Protokoll und dessen Träge ist da wohl schon der erste Mechanismus.
 
Werbung:
Führ dir die Größenverhältnisse vor Augen.

Faktor 100 im Vergleich zu <Alphabetgröße>^<Passwortlänge> (zum Beispiel 62^12 für ein 12 Zeichen Passwort aus [a-zA-Z0-9]).

Jedes Zeichen mehr packt einen Faktor <Alphabetgröße> dazu. Ein 12 Zeichen langes Passwort ist 62^9-mal „sicherer“ als ein 3 Zeichen langes Passwort.

62^9 ist das 135.370.865.462.635-fache von 100.

Wenn das eine die 100-m-Bahn auf dem Sportplatz ist, ist das andere ein Drittel der Strecke bis Alpha Centauri.
 
Zuletzt bearbeitet:
Das ist Unsinn. Der Sha512-Algo ist darauf ausgesetzt, langsam zu sein. md5() ist etwa hundertmal schneller und Bruteforcing wird durch diese Methode schonmal noch unlustiger. Es gibt viele Mechanismen, automatisierte Angriffe zu verhindern. Das HTTP-Protokoll und dessen Träge ist da wohl schon der erste Mechanismus.
Also Bitte....das habe ich nicht bestritten, also keinen Unsinn verzapft.
Die immer wiederkehrende Diuskussion sicheres Passwort ist müssig, da viele ein was weiss ich was für Verschlüsselungsverfahren anwenden und dann SQL-Injection anfälligen Code produzieren.

Offensichtlich hat sich verbreitet, dass es sicherer sei, abc als Salt abzulegen als als MD5. Das unsichere an diesem Passwort ist nicht das Verfahren, sondern das Passwort selbst.

Deinen PinCode auf der Bankomatkarte macht die Anzahl an Versuche "sicher" die du nutzen kannst. Wäre da keine Beschränkung drauf ist der Code in Milisekunden geknackt. Bei unendlich vielen Versuchen müsste die Zahl schon etwas anders aussehen ;ugl

Auch habe ich gesagt, dass man Mechanismen finden muss, um den User beim "probieren" zu behindern. Nutzt man also ein langsames Verfahren, ist das so eine Behinderung.

Man könnte auch nach jeder Eingabe eines Zeichen 10 Sekunden warten, was den selben Effektr hätte, aber leider User verärgert.
 
Offensichtlich hat sich verbreitet, dass es sicherer sei, abc als Salt abzulegen als als MD5. Das unsichere an diesem Passwort ist nicht das Verfahren, sondern das Passwort selbst.

Ich weiß nicht, ob sich das verbreitet hat, aber es ist definitiv Fakt, dass du – unabhängig vom nicht-trivialen Hashing-Verfahren – als Angreifer sehr große Probleme hast, ein Passwort mit einer gewissen Komplexität zu knacken.

Was man Stand heute bei einem guten Passwort in etwa erreichen sollte, sind 70 Bit Entropie.

- Aaron Toponce : Strong Passwords NEED Entropy

Thread grob dazu:

- Komplexes Passwort generieren - php.de (So ab #27. Disclaimer: Da habe ich auch gepostet.)

Das entspricht zudem den Empfehlungen in dem bereits doppelt von mir verlinkten Artikel von Jeff Atwood.

Idealerweise sollten Nutzer von sich aus sichere und einzigartige Passwörter wählen. Ein gutes Passwort kann auch lediglich einmal mit MD5 gehasht sein und gleichzeitig nach Beurteilung vor dem Hintergrund heutiger Technik sicher sein.

Hashing und Salts und ähnliche Verfahren sind Mittel, das Risiko für Nutzer, die kein gutes Passwort gewählt haben, zu reduzieren.

Das sind gute und sinnvolle Mittel, aber die Wahl eines guten Passworts ist viel effektiver.
 
Zuletzt bearbeitet:
Werbung:
Zurück
Oben