php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 27.01.2012, 20:08  
Benutzer
 
Registriert seit: 01.11.2010
Beiträge: 96
PHP-Kenntnisse:
Anfänger
Internetdepp ist in Verruf geraten
Standard [Erledigt] grundsätzliches zu md5

hallo nochmals....

ich versuche meine Datenbank ein bischen sicherer zu machen...unteranderem will ich die hinterlegten Passwörter verschlüsseln...

was ich nicht verstehe ist das mit dem md5...klar ist mir, dass das passwort verschlüsselt wird, aber ist es dadurch sicherer...?

Im endeffekt ist es doch egal, ob ein böser bube das passwort in klarschrift lesen kann oder die diese zahlenkolonne...

dann muss er halt bei der passwortabfrage im login halt die zahlenkolonne eingeben....oder hab ich da was übersehen...wie immer...
Internetdepp ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 27.01.2012, 20:16  
da schreibt der ElePHPant
 
Benutzerbild von Flor1an
 
Registriert seit: 18.06.2008
Beiträge: 8.903
PHP-Kenntnisse:
Fortgeschritten
Flor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer Anblick
Standard

1. md5 ist keine Verschlüsselung sondern eine Hashfunktion, du solltest dich mal über den Unterschied informieren.
2. Wenn du das Passwort eingibst, wird es durch die Hashfunktion gejagt und dann kommt der Hash (diese "Zahlenkolonne" die übrigens auch Buchstaben enthält -> Hex) heraus. Und das wird dann mit dem Hash der in der DB gespeichert ist verglichen. Würde der Angreifer nur den Hash kennen und ihn als Passwort eingeben, würde der Hash nochmal durch die Hashfunktion gejagt, dann kommt ein anderer Wert heraus und der entspricht dann nicht mehr dem Wert in der DB.
Flor1an ist offline   Mit Zitat antworten
Alt 27.01.2012, 20:23  
Benutzer
 
Registriert seit: 01.11.2010
Beiträge: 96
PHP-Kenntnisse:
Anfänger
Internetdepp ist in Verruf geraten
Standard

danke...

oh man bin blöd...stimmt ja

noch ne frage...

also ist der md5"wert" zum Beispiel "4" immer gleich?

und wenn es so ist, dann kann man es nicht knacken?

oder anders herum...gibt es noch was sichereres in dem fall von passwörter?
Internetdepp ist offline   Mit Zitat antworten
Alt 27.01.2012, 20:30  
Erfahrener Benutzer
 
Benutzerbild von Dark Guardian
 
Registriert seit: 10.10.2009
Beiträge: 2.629
PHP-Kenntnisse:
Fortgeschritten
Dark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekannt
Standard

Zitat:
Zitat von Internetdepp Beitrag anzeigen
also ist der md5"wert" zum Beispiel "4" immer gleich?
Ja.

Zitat:
Zitat von Internetdepp Beitrag anzeigen
und wenn es so ist, dann kann man es nicht knacken?
Nein.

1. Brute Force: Trivialpasswörter wie "test123" o.Ä. können leicht mittels "probieren" gefunden werden. Der Angreifer bombadiert hier solange den Login bis er einen Treffer hat. Dagegen hilft das beschränken der Login Versuche mit Zeitsperre.

2. Rainbow Table: Dies ist eine Tabelle welche viele Hash Werte auf Vorrat bereit hält und worüber sich ggf. zu einem Hash ein passender Wert finden lässt.

3. Kollision: Geht mit Nr. 1. und 2. einher. Eine Kollision liegt vor wenn 2 Eingabewerte den gleichen Hash erzeugen. Hier muss der Angreifer den Originalwert gar nicht kennen, sondern nur einen Wert welcher den gleichen Hash erzeugt.

Zitat:
Zitat von Internetdepp Beitrag anzeigen
oder anders herum...gibt es noch was sichereres in dem fall von passwörter?
MD5 ist anfälliger für Kollisionen als z.B. SHA. Salted Hashes helfen gegen Rainbow Tables.

Jetzt solltest du genug Stichwörter für Google haben um dich weiter informieren zu können.
__________________
"Alles im Universum funktioniert, wenn du nur weißt wie du es anwenden musst".
Dark Guardian ist gerade online   Mit Zitat antworten
Alt 27.01.2012, 20:31  
Erfahrener Benutzer
 
Registriert seit: 04.07.2003
Beiträge: 359
PHP-Kenntnisse:
Fortgeschritten
Sirke befindet sich auf einem aufstrebenden Ast
Standard

Ja, du hast etwas übersehen! Ersteinmal ist MD5 keine Verschlüsselung, sondern eine Hash-Funktion, mit dem riesen Unterschied, dass eine Hash-Funktion die Eigenschaft einer Einwegfunktion hat, es also nicht möglich ist aus einem Hash-Wert y = hash(x) die Eingabe x zu berechnen.

Die Idee ist daher den Hash-Wert eines Passwortes zu speichern, weil jeder der die Datenbank ausliesst nur das gehashte Passwort erhällt, aber dieses nicht zurückrechnen kann (Einwegfunktion). Bei der Eingabe des Passwortes (also dem Login) berechnet man den Hash-Wert des Passwortes und vergleicht dieses mit dem gespeicherten Hash-Wert - so erfährt man eben ob der Benutzer das korrekte Passwort eingegeben hat.

Die Idee hat in der Praxis jedoch einen kleinen Haken, da eine Hash-Funktion deterministisch ist, erhällt man auf die gleiche Eingabe immer die selbe Ausgabe! Das heißt alle Benutzer mit dem Passwort "geheim" haben den selben Hash-Wert in der Datenbank stehen. Folglich kann man eine riesen Liste mit allen möglichen Passwörtern und zugehörigen Hash-Werten speichern und wenn man einen Hash-Wert erhält diesen in der Liste nachsehen und das Passwort erhalten (in der Praxis kann man dafür effiziente Listen verwenden).
Dies ist ein riesen Problem, kann aber gelöst werden, indem man die Hash-Funktion probabilistisch (zumindest etwas) macht, indem man für jeden Benutzer einen anderen Zufall (Seed) einfließen lässt. Man speichert also zu jedem Benutzer noch ein wenig Zufall und berechnet den Hash-Wert dann z.B. als y = hash( x | seed ). Da nun jeder Benutzer auf jeden Fall eine andere Eingabe - selbst mit gleichem Passwort - hat, wird auf jeden Fall ein anderer Hash-Wert gespeichert.

Dies war nun doch etwas mehr als ich eigentlich zu dem Thema schreiben wollte! Für weitere Informationen kann ich dir "key/password stretching" oder "PBKDF2" ans Herz legen, dort findet man viele Informationen zu einem ordnetlichen Vorgehen!

Edit: War ja klar dass ich viel zu langsam war... :/
Sirke ist offline   Mit Zitat antworten
Alt 27.01.2012, 20:43  
Benutzer
 
Registriert seit: 01.11.2010
Beiträge: 96
PHP-Kenntnisse:
Anfänger
Internetdepp ist in Verruf geraten
Standard

danke....an euch

na dann werde ich mal heute abend googlen....dann komm ich schon nicht auf dumme gedanken....grins

schönen abend noch
Internetdepp ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Type Hints - Grundsätzliches olli666 PHP Tipps 2009 2 05.01.2010 15:28
Formular - Grundsätzliches zum Formatieren Horst Stack HTML, Usability und Barrierefreiheit 4 17.07.2009 23:39


Alle Zeitangaben in WEZ +2. Es ist jetzt 16:47 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum