php/mysql - md5()
.DS. 19.10.2003 - 14:20 1257 17
.DS.
Little Overclocker
|
i hab md5() für verschlüsselung eines eingegeben passwords benutzt. muss ich jetzt alle passwörter in der tabelle auch mit md5() verschlüsselt haben oder gibt einen befehl der es wieder entschlüsselt.
sorry wenn ne anfänger frage is aber i bin ein anfänger.
tia
mfg
Bearbeitet von .DS. am 19.10.2003, 16:03
|
atrox
in fairy dust... I trust!
|
a) md5 ist keine verschlüsselung, es ist eine einweg-hashfunktion.
b) mysql hat eine md5 funktion, um alle felder einer tabelle von klartext auf md5 umzustellen, verwende: update tablename set spaltenname=md5(spaltenname)
|
XeroXs
Vereinsmitglieddoh
|
man kann ein md5 passwort nicht mehr entschlüsseln (außer durch bruteforce).. sondern nur vergleichen..
somit muss in der tabelle auch alles verschlüsselt sein damit das dann zusammenpasst
|
.DS.
Little Overclocker
|
ok, danke für eure hilfe.
|
atrox
in fairy dust... I trust!
|
geschickter weise sollte man noch den username/userid auch in die md5/whatever passwort hash aufnehmen. das hat den grund, daß bruteforce deutlich erschwert wird, weil dann dann zb ein dictionary-word nicht nur einmal gehashed werden kann, und dann mit allen accounts verglichen werden kann, sonder das hashen muß für jeden user seperat erfolgen, was den aufwand für cracker nochmals deutlich erhöht.
da gabs doch auch einen thread dazu hier im forum... wo war er blos ?
|
.DS.
Little Overclocker
|
bei update, wie kann ich nur einen bestimten wert ändern? zb. nur bei column password, den zweiten wert updaten.
|
mat
AdministratorLegends never die
|
UPDATE tblblah SET columnname='arg' WHERE rowdata='rowdata'
|
Sticker
Big d00d
|
In einem projekt haben sie es mal geschafft viele md5 Passwörter mit Hilfe von hashtable Vergleichen zu entschlüsseln,d as Script ham sie online gestellt, ist mittlerweile offline, aber die Statistiken sind noch abrufbar, weiß aber nimmer wie der Link war
|
atrox
in fairy dust... I trust!
|
hört sich nach dictionary-attack an, bei dem die passwörter bereits als md5 vorliegen. aben um genau das zu verhindern, soll man dem input der hashes noch ein feld des benutzers hinzufügen, so daß das passwort X beim benutzter A und benutzer B nicht zum selben hash führt.
|
mat
AdministratorLegends never die
|
.. oder eine zufallszahl. auch ned perfekt, weil noch immer anfällig auf replay-attacks
|
that
Hoffnungsloser Optimist
|
Die Zufallszahl muss man dann mit dem Hash mitspeichern...
Wie gehen Replay-Attacks?
|
atrox
in fairy dust... I trust!
|
a) das soll ja nur den schutz erhöhen, falls die database in falsche haende gerät. hunderprozentigen schutz bietet das alles natürlich nicht. (zb wurde dem informatik-forum der tu wien mal durch zufall ein db-dump abhanden -> wegen der falschen verwendung der md5 sum, waren die passwörter leicht zu hacken.)
wenn man nicht den aufwand und die unbequemlichkeit für ein (fast) perfektes sicherheitssystem aufbringen möchte oder kann, und man sich arangiert, daß 100% nicht erreichbar sein werden. so gilt es mit einfachen methoden den aufwand für den cracker soweit in die höhe zu treiben, daß es für ihn uninteressant wird.
über dem daumen (um die berühmten 80/20 relation zu strapazieren), könnte man sagen, mit den ersten 20% des möglichen aufwandes erreiche ich 80% der möglichen sicherheit. jeder weitere prozentpunkt muß immer teurer erkauft werden. hier muss halt jeder fuer sich die grenze des möglichen ausloten.
b) für die kommunikation mit dem client, könnte man zb ein challenge response verfahren mit hashes implementieren. md5-javascript-codes gibts im web.
|
.DS.
Little Overclocker
|
@mat - thx für den befehl
|
mat
AdministratorLegends never die
|
Wie gehen Replay-Attacks? session abfangen und aufzeichnen (zB über den proxy) und einfach wiederholen.. also ein loginreplay. übrigens is die methode sich gegen eine replay-attack zu wehren doch leichter (als ich dachte). server sendet eine zufallszahl (bei jedem login eine andere.. nennt sich übrigens "nonce") zum user.. danach bilden beide mit der zahl einen md5 hash um diesen dann zu vergleichen. das passwort is auf diese weise natürlich (verschlüsselt oder unverschlüsselt) in der db gespeichert und ergibt leider eine weitere (IMO unwichtige) sicherheitslücke. edit: ahhh.. ich muss es mit den klammern wieder mal übertreiben
|
atrox
in fairy dust... I trust!
|
siehe oben: heißt "challenge response" ... und es läßt sich auch leicht so realisieren, daß das passwort nicht cleartext in der db stehen muß.
|