PHP beste hash-Funktion?

Seiten: 1, 2
stoerchu
Verfasst am: 03.10.2015 um: 11:27 Uhr
 
Cw Guru
King
Beiträge: 802
SPAM:
0% Spam
Hallo

Ich mollte euch mal fragen, welche Hash-Funktionen ihr denn so verwendet in euren PHP-Projekten.

Früher habe ich immer md5() verwendet, aber da diese Funktion nicht mehr als sicher gilt, habe ich nachher immer sha256 verwendet. Heute bin ich über bcrypt bzw. crypt blowfish "gestolpert. Ich bin nun etwas unentschlossen, welche Methode ich verwenden soll.

symfony schlägt in der Dokumentation vor, bcrypt zu verwenden.

was ist heutzutage eine gute Wahl für eine Hash-Funktion und warum?

(PS Salt verwende ich bei jeder Funktion)





mit vielen Grüssen stoerchu


 



bw5rws
Verfasst am: 03.10.2015 um: 12:58 Uhr
 
Cw Guru
King
Beiträge: 945
SPAM:
0% Spam
Ich nutze keine Hash Funktion,da ich meine MySQL Datenbank fuer sicher halte.
Mir ist bewusst,dass das nicht die sicher ist,aber mir reicht es.
Die sichersten Hash Funktionen sind sha512 und whirlpool.
Ansonsten ist AES sehr sicher.
Diese Methode wird laut Google sogar von der NSA verwendet.
Vorteil ist,dass man es mit dem entsprechenden Key wieder entschluesseln kann.
Wer den Key nicht hat,hat aber keine Chance.
<scherz>Du kannst natuerlich auch base64 nutzen,dann muessen die Hacker sich nicht so viel Arbeit machen</scherz>
Ich hoffe ich konnte helfen.

 

stoerchu
Verfasst am: 03.10.2015 um: 13:38 Uhr
 
Cw Guru
King
Beiträge: 802
SPAM:
0% Spam
Hallo bw55rws

Ich danke für deinen Beitrag, whirlpool habe ich noch nicht gekannt werde mich mal da einlesen, allerdings sind 512 Zeichen doch eher etwas gross für ein vielleicht 8 - 15 Zeichen umfassendes Passwort (gleiches gilt für sha512) . Ich weiss nicht, ob da tatsächlich die Sicherheit grösser wird, nur wenn der Hash-länger wird...

Die anderen sind leider Veschlüsselungsfunktionen, die mir zur Autentifizierung eines users recht wenig nützen. Aber danke trotzdem :-)

PS.:
Speicherst du ernsthaft alle Passwörter in deiner Datenbank in Klartext? :-P das würde ich nie wagen, da wenn die Datenbank einmal jemand anderem in die Hände fällt, können die Passwörter einfach den jeweiligen Emailadressen & Benutzernamen zugeordnet werden. Da die meisten User ihre Passwörter an mehreren Orten verwenden stellt dies ein Sicherheitsrisiko für deine User dar und nicht wirklich für dich selbst...




mit vielen Grüssen stoerchu


 

bw5rws
Verfasst am: 03.10.2015 um: 13:45 Uhr
 
Cw Guru
King
Beiträge: 945
SPAM:
0% Spam
Auf wirths.square7.ch werden die Passwoerter md5 verschluesselt gespeichert,weil ich dort den Originalcode benutze.
Auf meinen eigenen Seiten speichere ich die Passwoerter im Klartext.
Auf diese Datenbank kann nur ich zugreifen,also gibt es kein Sicherheitsrisiko.
Die Sicherheit wird groesser,wenn der Hash laenger wird.
Dann ist es unwahrscheinlicher,dass durch ein anderes Passwort der gleiche Hash generiert werden kann.
Diese Gefahr besteht bei jedem Passwort,das laenger ist,als der Hash.

 

invitech
Verfasst am: 03.10.2015 um: 18:46 Uhr
 
Cw Aufsteiger
Aufsteiger
Beiträge: 58
SPAM:
0% Spam
Die hash()-Funktion die PHP mitliefert ist was Hashes angeht ein Allrounder.
Verschlüsseln solltest du IMMER und was bw5rws auf seiner Website macht, grenzt auch an das Illegale, nebenbei ich würde mein Passwort keinem pupertären, von Hormonen gesteuerten, 15-jährigen im Klartext überlassen, wer weiß, was damit geschieht. Sicherheit wird bei ihm (wie mir auffiel) auch nicht groß geschrieben.

Falls du verschlüsselst reicht für den Anfang sicher md5, aber falls du wirklich auf Sicherheit achtest, dann würde ich dir folgendes vorschlagen:

Generiere für jeden Benutzer, der sich bei dir registriert einen Random-String (4-8 Zeichen langen völlig), diesen String benutzt du als Salt und verschlüsselst das alles dann mit hash($var, 'sha256').
In der Form müsste das Verschlüsseln also im Skript sein:
$passwordHash = hash($generatedSalt.$password, 'sha256');

Freundlichste Grüße


 

consider
Verfasst am: 04.10.2015 um: 02:18 Uhr
 
Dr. CwCity.de
Community God
Beiträge: 7217
SPAM:
0% Spam
Es zeugt natürlich von unglaublichem Leichtsinn, Passwörter im Klartext abzuspeichern. Denn eine Datenbank hat im Grunde immer eine von aussen zugreifbare Schnittstelle und von Sicherheitslücken muss man immer ausgehen.

MD5 ist ja grundsätzlich nur bei seehr gebräcuhlichen Passwörtern unsicher. Ein langes, entropisches Passwort sorgt in aller Regel dafür, dass die üblichen Angriffscenarien für MD5, wie Rainbow-Tables, unwirtschaftlich werden oder technisch nicht mehr möglich sind.

So sind entsprechende Gegenmassnahmen das schaffen von Entropie durch Salts, welche an das eigentliche Passwort gehangen und mit gehasht werden und/ oder Iterationen, also das mehrfache hashen.

In einem CMS, ich glaube Joomla war es, wird zunächst ein Salt ans Passwort angehangen, mit diesem Salt das Passwort SAH gehasht, der Hash noch mal per MD5 gehasht und dann der Salt, welcher ja kein Geheimis ist, mit abgespeichert, damit man auch gegenprüfen kann.

Alleine damit könnte ich schon recht ruhig schlafen. Es gibt aber Implementierungen, wie Crypt und bcrypt, die diese Iteration und den Salt direkt vcerwenden. Das würde ich einer eigenen Implementation immer vorziehen, da eigene Implemenationen in der Crypto eigentlich nie eine gute Idee sind.


 

stoerchu
Verfasst am: 04.10.2015 um: 11:23 Uhr
 
Cw Guru
King
Beiträge: 802
SPAM:
0% Spam
  
Zitat von consider

Es gibt aber Implementierungen, wie Crypt und bcrypt, die diese Iteration und den Salt direkt vcerwenden. Das würde ich einer eigenen Implementation immer vorziehen, da eigene Implemenationen in der Crypto eigentlich nie eine gute Idee sind.


Dein Vorschlag wäre also bcrypt zu verwenden. Da bcrypt auch symfony's erste Wahl ist, werde ich micht wohl daran halten und diesen Rat annehmen :-)
Habe mich jetzt auf Wikipedia noch ein bisschen mehr informiert...





mit vielen Grüssen stoerchu


 

consider
Verfasst am: 04.10.2015 um: 12:35 Uhr
 
Dr. CwCity.de
Community God
Beiträge: 7217
SPAM:
0% Spam
Du musst dich halt etwas einlesen, damit du es auch so anwendest, wie dui es benötigst. Es gibt ja verschioedenste Möglichkeiten. Auch bcrypt und crypt verwenden ja intern SAH oder md5 oder was immer du willst und sorgen nur für Salt und Iteration.

So gibt es bei crypt zB die Möglichkeit SAH256 mit 22 stelligem Salt und in 5000 facher Iteration zu verwenden. Man muss nur die richtigen Optionen verwenden. Und das herauszufinden, was man da eigentlich will und brauch ist sicher etwas Fleißarbeit.



Letzte Änderung am: 04.10.2015 um: 12:36 Uhr durch: consider
 

stoerchu
Verfasst am: 04.10.2015 um: 12:41 Uhr
 
Cw Guru
King
Beiträge: 802
SPAM:
0% Spam
Ja ich hab emich da mal etwas informiert, aber da ich Prinzipien der Verschlüsselung nur kurz einmal in Mathe vor dem Abi hatte, ist mein Fachwissen auf diesem Gebiet etwas begrenzt... Aber generell versuche ich mir eigentlich von allem ein gewisses Grundwissen anzueignen, bevor ich es einfach aufs Geratewohl verwende.

Ich werde wohl noch etwas recherchieren müssen...




mit vielen Grüssen stoerchu


 

invitech
Verfasst am: 04.10.2015 um: 14:38 Uhr
 
Cw Aufsteiger
Aufsteiger
Beiträge: 58
SPAM:
0% Spam
@consider: Was bitte soll SAH sein? Meinst wohl SHA ;)

 

 
Seiten: 1, 2

Folgende User sind hier gerade aktiv:
-

ANZEIGE