# Passwortsicherheit durch md5 oder sha512



## newwarrior (23. August 2011)

Hallo,

ich wollte mal was wissen.
Zur Zeit verschlüssel ich meine Passwörter durch md5. Jetzt hatte ich überlegt auf sha512 umzusteigen um so die Sicherheit meiner Benutzer mehr zu gewährleisten.

Macht das Sinn?
Ist sha512 wirklich so viel sicherer?

Danke


----------



## jannicars (23. August 2011)

Ja, ist sha1.


----------



## deepthroat (23. August 2011)

jannicars hat gesagt.:


> Ja, ist sha1.


Was willst du uns damit sagen?

@newwarrior: Wie verwendest du denn die Passwörter? Die liegen doch sicherlich auf dem Server oder? Insofern ist die Sicherheit der Passwörter nur relevant wenn jemand auf dem Server einbricht und an die Passwort-Hashes kommt. Wenn er allerdings schon auf dem Server ist... ist evtl. auch egal ob er (eine immer noch relativ aufwendige) Berechnung von Kollisionen für die einzelnen Passwort-Hashes durchführt oder nicht.

Ansonsten: ja, SHA-512 ist sehr viel sicherer als MD5. Für die SHA-2 Algorithmen ist generell noch kein Angriff bekannt um (in akzeptabler Zeit) Kollisionen zu berechnen.

Gruß


----------



## newwarrior (23. August 2011)

Gibt es den eine PHP Klasse die mit SHA - 2 arbeitet?


----------



## deepthroat (23. August 2011)

Kennst du denn schon Psssst? ;-]


----------



## newwarrior (23. August 2011)

deepthroat hat gesagt.:


> Kennst du denn schon Psssst? ;-]



Habe ich, aber bei 50% heißt es SHA-512 sei SHA 2 und dann heißt es wieder SHA 2 gibt es nicht für PHP, deswegen war ich jetzt ein wenig durcheinander.


----------



## deepthroat (23. August 2011)

newwarrior hat gesagt.:


> Habe ich, aber bei 50% heißt es SHA-512 sei SHA 2


Das ist richtig. SHA-512 ist eine Variante von SHA-2 (http://en.wikipedia.org/wiki/SHA-1#Comparison_of_SHA_functions).


newwarrior hat gesagt.:


> und dann heißt es wieder SHA 2 gibt es nicht für PHP, deswegen war ich jetzt ein wenig durcheinander.


Versteh ich nicht. Wonach suchst du denn? 

http://www.php.net/manual/en/ref.hash.php

Gruß


----------



## chmee (23. August 2011)

*Die Frage als Solches ist ja beantwortet.* Dennoch möchte ich gerne nochmal den Einwand machen, dass SHA weit weniger nützt als erhofft => Wenn der werter Herr Einbrecher schon mal auf dem Server ist, braucht er nur noch die Daten der Login-Form -weit vor Verschlüsselung und Vergleich mit DB-Inhalt- an sich selbst zu schicken, im Klartext. Oder er schreibt sich die Passwörter selbst rein, auch nicht das Problem, nur auffälliger. Letztlich darf das System nicht infiltrierbar sein - und genau das ist ein größeres Problem als die "stupide" Verschlüsselung von Passwörtern.

mfg chmee


----------



## newwarrior (23. August 2011)

chmee hat gesagt.:


> *Die Frage als Solches ist ja beantwortet.* Dennoch möchte ich gerne nochmal den Einwand machen, dass SHA weit weniger nützt als erhofft => Wenn der werter Herr Einbrecher schon mal auf dem Server ist, braucht er nur noch die Daten der Login-Form -weit vor Verschlüsselung und Vergleich mit DB-Inhalt- an sich selbst zu schicken, im Klartext. Oder er schreibt sich die Passwörter selbst rein, auch nicht das Problem, nur auffälliger. Letztlich darf das System nicht infiltrierbar sein - und genau das ist ein größeres Problem als die "stupide" Verschlüsselung von Passwörtern.
> 
> mfg chmee



Ja, das ist mir klar.
Doch muss ich ja auch eine gewisse Sicherheit in meinem Script bieten.
Daher die Frage nach der Verschlüsselung.
Auch wird ein SSL Zertifikat beim Login benutzt.

Die Sicherheit meines Linus Servers gewährleiste ich durch andere Mechanismen


----------



## deepthroat (23. August 2011)

Hi. 


chmee hat gesagt.:


> *Die Frage als Solches ist ja beantwortet.* Dennoch möchte ich gerne nochmal den Einwand machen, dass SHA weit weniger nützt als erhofft => Wenn der werter Herr Einbrecher schon mal auf dem Server ist, braucht er nur noch die Daten der Login-Form -weit vor Verschlüsselung und Vergleich mit DB-Inhalt- an sich selbst zu schicken, im Klartext. Oder er schreibt sich die Passwörter selbst rein, auch nicht das Problem, nur auffälliger. Letztlich darf das System nicht infiltrierbar sein - und genau das ist ein größeres Problem als die "stupide" Verschlüsselung von Passwörtern.


Ich dachte, das hätte ich auch schon deutlich gemacht... 

Allerdings hat newwarrior auch nicht verraten wie die Passwort-Hashes eingesetzt werden...



			
				Wikipedia hat gesagt.:
			
		

> Some of the applications that use cryptographic hashes, such as password storage, are only minimally affected by a collision attack. Constructing a password that works for a given account requires a preimage attack, as well as access to the hash of the original password, which may or may not be trivial. Reversing password encryption (e.g. to obtain a password to try against a user's account elsewhere) is not made possible by the attacks. (However, even a secure password hash can't prevent brute-force attacks on weak passwords.)


Gruß


----------



## deepthroat (23. August 2011)

newwarrior hat gesagt.:


> Daher die Frage nach der Verschlüsselung.


Welche Frage? Von Verschlüsselung war bisher nicht die Rede.


----------



## newwarrior (23. August 2011)

Die Passwörter sollen von einem normalen Login auf einer Webseite gehased in der DB liegen auf dem Server und verglichen werden.
In den letzten Jahren habe ich sowas immer mit MD5 gemacht. Jetzt habe ich aber auf einer meiner Fortbildungen (Bundeswehr) gelernt, dass MD5 nicht mehr sicher ist.

Daher meine Frage.


----------



## chmee (23. August 2011)

@deepthroat & newwarrior
Ich wollts nur nochmal gesagt haben 

mfg chmee


----------



## newwarrior (23. August 2011)

chmee hat gesagt.:


> @deepthroat & newwarrior
> Ich wollts nur nochmal gesagt haben
> 
> mfg chmee



Welche Tipps würdest du zur zusätzlichen Sicherung geben!


----------



## chmee (23. August 2011)

Das ist pauschal gar nicht zu sagen. Welche Mods laufen, wie sicher sind jene, ist es nötig, dass sie laufen? Jede Eingabe/Weitergabe gegen Injections gesichert? etc pp..

mfg chmee


----------



## deepthroat (23. August 2011)

newwarrior hat gesagt.:


> Die Passwörter sollen von einem normalen Login auf einer Webseite gehased in der DB liegen auf dem Server und verglichen werden.
> In den letzten Jahren habe ich sowas immer mit MD5 gemacht. Jetzt habe ich aber auf einer meiner Fortbildungen (Bundeswehr) gelernt, dass MD5 nicht mehr sicher ist.


Gut, das hat aber nichts mit Verschlüsselung zu tun. MD5 und SHA-x sind Hashfunktionen.

Gruß


----------



## Nyxxos (23. August 2011)

Ich denke mal es geht größtenteils auch einfach um den Datenschutz.
Es mag sein das jemand die Möglichkeit hat das Passwort zu loggen wenn er Zugriff auf die Seite hat, oder das Passwort einfach zu ändern.

Aber vom Datenschutz her macht man sich schon Strafbar wenn man Passwörter im Klartext speichert und das raus kommt.

Datenskandale gibt es ja mehr als genug. 
Eine 100%ig sichere verschlüsselung gibt es auch nicht wirklich. Sie kann nur Komplizierter sein so das es länger dauert diese zu knacken. Aber zu 100%ig sicher ist keine Verschlüsselung.

Ich sage nur Rainbox Tables.

Dennoch sollte man die Sicherheit bei empfindlichen Daten wie Passwörter nicht aus den Augen lassen. Trotz der Tatsache das im Prinzip jede Verschlüsselung geknackt werden kann sollte man dennoch - wie hier der Thread Ersteller - versuchen die Daten so sicher wie Möglich zu verschlüsseln.

Warum es den vermeindlichen Hackern denn so leicht machen ;-)


----------



## chmee (23. August 2011)

Rainbow-Tables  Sicherheit ist eine Sache der Durchführbarkeit. Keine Verschlüsselung ist sicher, aber manche so langwierig, dass die Rechenzeit in keinem Verhältnis zum Ergebnis steht. Dieses Thema ist weitschürfender als nur die Hash-Methode - Salting, Vielfachsalting und -hashing, im Endeffekt reicht es schon, wenn man die User dazu verpflichtet, Paßwörter länger als 12 Zeichen inkl. Sonderzeichen und Groß/Kleinschreibung zu benutzen. Alles ist für die Katz, wenn sich zB in einer benutzten Klasse/Modul ein Schlupfloch auftut oder eine GET-variable nicht überprüft wird. 

Zur Sicherheit an sich gibt es reichlich Diskussionsmaterial im ganzen Netz!

Könntest Du mit einem Link belegen, dass das stimmt?


> .macht man sich schon Strafbar wenn man Passwörter im Klartext speichert und das raus kommt...



mfg chmee

NACHTRAG für ne kleine Rechnung:
Angenommen, die Paßwörter sollen 8 Zeichen lang sein und dürfen Buchstaben Groß/Klein und Zahlen benutzen, also 26+26+10 = 62 Möglichkeiten pro Stelle. Das sind 218.340.105.584.896 Möglichkeiten. ~218 Billionen.. geht man davon aus, dass eine Grafikkarte in der Lage ist, per GPGPU ~15.000 SHA1-Möglichkeiten/sek per BruteForce durchzutesten (Link von 2011), kommt man auf eine komplette *Durchlaufzeit* von ~168.472 Tagen oder 461 Jahren. Statistisch legt man den Fund auf die halbe Zeit an, das reicht immer noch nicht aus, dass der gewöhnliche Scriptkid mit seinem GamerPC schnell fertig wird.

http://de.wikipedia.org/wiki/Rainbow_Table


> ..Der Aufwand kann weiter erhöht werden, wenn ein Passwort nicht einfach, sondern mehrfach gehasht wird - üblich sind mehrere tausend Iterationen. Erst beide Methoden kombiniert ergeben ein Hashing-Verfahren, welches eine gewisse Resistenz gegen typische Angriffsmethoden aufweist. Das Salt macht das Erstellen von Tabellen unwirtschaftlich oder gar unmöglich, zusammen mit den Iterationen werden Brute-Force-Angriffe erheblich verlangsamt. Eine erfolgreiche Implementierung ist z. B. MD5 (crypt). Das Verfahren basiert auf MD5, verwendet aber sowohl Salts in einer Länge von 12 bis 48 Bit sowie 1000 Iterationen. Das Erstellen von Rainbow Tables für dieses Verfahren ist aufgrund der Länge des Salts unter realen Bedingungen unwirtschaftlich, und reines Bruteforcen ebenfalls.


Sorry für das lange Zitat, aber da ist alles gesagt.


----------



## Nyxxos (23. August 2011)

Habe gerade danach gegoogelt das Passwörter nicht im Klartext gespeichert werden dürfen.

Scheinbar ein Irrtum meinerseits. Ich meine immer gehört zu haben das Passwörter im Klartext wegen dem Datenschutz nicht gespeichert werden dürfen. Da habe ich mich geirrt. Es ist erlaubt Passwörter im Klartext zu speichern allerdings ist dies ein enormes Sicherheitsrisiko.

Entschuldigung meinerseits für diesen Irrtum.


----------



## newwarrior (23. August 2011)

Macht es Sinn, klar von der Sicherheit, auch auch von der Benutzerfreundlichkeit her, die Benutzer alle 30 Tage dazu zu zwingen, ein neues Passwort zu erstellen und einen PWHistory einzuführen?

Danke


----------



## Nyxxos (23. August 2011)

@chmee
Ich habe nicht gesagt das es sinnvoll wäre so ein passwort zu Knacken oder darauf zu warten bis die Maschine durchgelaufen ist ;-) 
Ich habe nur gesagt das es Möglich ist auch wenn es 461 Jahre dauern sollte.
Man kann das auch auf mehrere PC`s verteilen und dann sollte es die dauer ja auch verringern.


@newwarrior
Also ich persönlich halte nichts davon den Benutzer aufzufordern sein Passwort zu ändern. Das stört die meisten User eher als das es Ihnen hilft. Wenn die Ihr Passwort ändern wollen tun Sie es, wenn nicht dann nicht.

Als Seitenbetreiber kann man sich darum kümmern das die Daten sicher gespeichert sind. Wenn der Benutzer jedoch seit Jahren das gleiche Passwort verwendet fällt das nicht mehr in den Zuständigkeitsbereich des Seiten Betreibers m.M.n


----------



## CPoly (23. August 2011)

Siehe #18 und #19
http://www.tutorials.de/php/378202-php-passverschluessulung-problem-hash-2.html#post1955235


----------



## chmee (23. August 2011)

@newwarrior
Spätestens bei der dritten Aufforderung in kurzer Zeit, ein neues Passwort zu erstellen, werden die Menschen müde, faul und haben keinen Bock mehr, ein "gutes" Passwort zu nehmen. Nein, das ist keine besondere Lösung.

 @Nyxxos
Eine Sache der Verhältnismäßigkeiten. Die BND oder CIA-Seite ist sehr viel attraktiver als eine Vereins- oder Spieleclanseite. Und auch wenn man "461" Rechner nimmt, dauert es noch 1 Jahr - um ein Passwort einer Hobbyvereinsseite zu entschlüsseln. Man kann da hin und herpalabern. Sicherheit gibt es nicht, nicht mal für das php_mod (5.3.7 nicht installieren?)..

mfg chmee


----------



## Nyxxos (23. August 2011)

chmee hat gesagt.:


> Man kann da hin und herpalabern. Sicherheit gibt es nicht...


 
Das ist doch das was ich die ganze Zeit sage 

Knacken kann man alles von der Dauer mal abgesehen.
Abgesehen davon wird es ja auch neue Verschlüsselungs Algorithmen geben.

Und die Hardware im Computer verbessert sich auch.

Und zu der Dauer von 1 Jahr.
Wenn man die Schlüssel Temporär generiert und vergleicht ist dies so.

Aber wie bereits erwähnt gibt es ja Rainbow Tables in denen vieles bereits drinnen steht was den Hackern nochmal sehr viel Arbeit abnimmt ;-)


----------



## chmee (23. August 2011)

Kraft meines Amtes *Bitte ich jetzt wieder um Ontopic!*
und werde den Thread schließen, wenn der Threadopener es wünscht!
(oder wenn weiter palabert wird!)

mfg chmee


----------

