/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
MD5
Fra : Michael


Dato : 30-12-02 01:27

Er det sikkert nok?

Jeg skal gemme en brugers password i MySQL og have en login boks på min side

Er der bedre alternativer?

Mvh
Michael



 
 
Jacob Bunk Nielsen (30-12-2002)
Kommentar
Fra : Jacob Bunk Nielsen


Dato : 30-12-02 01:50

"Michael" <maskinen2000@hotmail.com> writes:

> Er det sikkert nok?

Definér "sikkert nok".

Men, ja - MD5 betragtes vist som værende en god hash-funktion.

--
Jacob - www.bunk.cc
You never get a second chance to make a first impression.

Michael (30-12-2002)
Kommentar
Fra : Michael


Dato : 30-12-02 02:52

"Jacob Bunk Nielsen" <spam@bunk.cc> wrote in message
news:spamdrop+m3wulsjpnv.fsf@paven.bunk.cc...
>
> > Er det sikkert nok?
>
> Definér "sikkert nok".
>
> Men, ja - MD5 betragtes vist som værende en god hash-funktion.
> Jacob - www.bunk.cc

ok tak for info

Mvh
Michael



Niels Andersen (30-12-2002)
Kommentar
Fra : Niels Andersen


Dato : 30-12-02 07:35

Michael wrote in <3e0f92eb$0$238$edfadb0f@dread16.news.tele.dk>:
> Er det sikkert nok?
> Jeg skal gemme en brugers password i MySQL og have en login boks på min
> side

Jeg kan fortælle dig om den svaghed der er nemmest at gøre noget ved, som
nok også er den største svaghed. Og det er som så ofte ikke selve
MD5-algoritmen der er problemet, men implementationen. :)

Bemærk at hvis flere brugere har samme password, så vil de helt naturligt
også have samme MD5-sum. Det betyder bla. at hvis man kender én brugers
kodeord, og har fået fingrene i databasen, så tager det kun et øjeblik at
finde alle andre brugere med samme kodeord. (Og der er forbavsende mange
gengangere i kodeord.)

Løsningen er at "salte" med noget bruger-specifikt - fx. brugernavnet.
I MD5 er det ret simpelt:
$md5 = $brugernavn.$password;

Så vil brugere med samme password alligevel få forskellig MD5-sum.

Det løser samtidig lidt af den næste svaghed: Dårlige kodeord og/eller en
hacker med masser af CPU-kraft (eller tålmodighed). Hvis brugernavn og
kodeord fx. hver er på mindst 4 tegn, så vil den hashede streng pludselig
være mindst 8 tegn lang. Oftest vil det gøre opgaven med at knække MD5'en
meget, meget større.

Ulempen er, at du ikke kan ændre "salt". Hvis du fx. bruger ovenstående
løsning, og brugeren vil skifte brugernavn, så skal brugeren også lave et
nyt kodeord (som dog kan være magen til det gamle).

Der er sikkert masser af artikler om emnet, skrevet af folk som ved meget
mere end mig. :)

Det vigtigste er, at du ikke tror at er godt, fordi du bruger MD5. En kæde
er ikke stærkere end det svageste led, og hash-algoritmen er kun et enkelt
led. :)

--
Mvh.

Niels Andersen
(la nels. anersyn.)

Michael (30-12-2002)
Kommentar
Fra : Michael


Dato : 30-12-02 21:43

Ok.. tak for god info. Det lader ikke til din metode kræver det helt store
ekstra. så hvis det gør det bare en lille smule mere sikkert, så er det nok
det værd.

Måske skulle man kombinere med SSL - så kan det da ikke blive mere sikkert
næsten :)

Godt nytår
Michael Andreasen


"Niels Andersen" <niels-usenet@myplace.dk> wrote in message
news:tORP9.18174$Hl6.2015186@news010.worldonline.dk...
> Michael wrote in <3e0f92eb$0$238$edfadb0f@dread16.news.tele.dk>:
> > Er det sikkert nok?
> > Jeg skal gemme en brugers password i MySQL og have en login boks på min
> > side
>
> Jeg kan fortælle dig om den svaghed der er nemmest at gøre noget ved, som
> nok også er den største svaghed. Og det er som så ofte ikke selve
> MD5-algoritmen der er problemet, men implementationen. :)
>
> Bemærk at hvis flere brugere har samme password, så vil de helt naturligt
> også have samme MD5-sum. Det betyder bla. at hvis man kender én brugers
> kodeord, og har fået fingrene i databasen, så tager det kun et øjeblik at
> finde alle andre brugere med samme kodeord. (Og der er forbavsende mange
> gengangere i kodeord.)
>
> Løsningen er at "salte" med noget bruger-specifikt - fx. brugernavnet.
> I MD5 er det ret simpelt:
> $md5 = $brugernavn.$password;
>
> Så vil brugere med samme password alligevel få forskellig MD5-sum.
>
> Det løser samtidig lidt af den næste svaghed: Dårlige kodeord og/eller en
> hacker med masser af CPU-kraft (eller tålmodighed). Hvis brugernavn og
> kodeord fx. hver er på mindst 4 tegn, så vil den hashede streng pludselig
> være mindst 8 tegn lang. Oftest vil det gøre opgaven med at knække MD5'en
> meget, meget større.
>
> Ulempen er, at du ikke kan ændre "salt". Hvis du fx. bruger ovenstående
> løsning, og brugeren vil skifte brugernavn, så skal brugeren også lave et
> nyt kodeord (som dog kan være magen til det gamle).
>
> Der er sikkert masser af artikler om emnet, skrevet af folk som ved meget
> mere end mig. :)
>
> Det vigtigste er, at du ikke tror at er godt, fordi du bruger MD5. En kæde
> er ikke stærkere end det svageste led, og hash-algoritmen er kun et enkelt
> led. :)
>
> --
> Mvh.
>
> Niels Andersen
> (la nels. anersyn.)



Jakob Møbjerg Nielse~ (30-12-2002)
Kommentar
Fra : Jakob Møbjerg Nielse~


Dato : 30-12-02 22:10

Niels Andersen wrote:
> $md5 = $brugernavn.$password;

$md5 = md5($brugernavn.$password);

> Hvis
> brugernavn og kodeord fx. hver er på mindst 4 tegn, så vil den
> hashede streng pludselig være mindst 8 tegn lang.

Nope. MD5 værdier er altid 32 tegn lange.

--
Jakob Møbjerg Nielsen | "Nine-tenths of the universe is the
jakob@dataloger.dk | knowledge of the position and direction
http://www.jakobnielsen.dk/ | of everything in the other tenth."
| -- Terry Pratchett, Thief of Time



Niels Andersen (30-12-2002)
Kommentar
Fra : Niels Andersen


Dato : 30-12-02 22:19

Jakob Møbjerg Nielsen wrote in <auqck0$ggh$1@sunsite.dk>:
>> $md5 = $brugernavn.$password;
> $md5 = md5($brugernavn.$password);

Selvfølgelig. :)

>> Hvis
>> brugernavn og kodeord fx. hver er på mindst 4 tegn, så vil den
>> hashede streng pludselig være mindst 8 tegn lang.
> Nope. MD5 værdier er altid 32 tegn lange.

Okay, den kunne åbenbart misforståes. :)
Med "den hashede streng" mente jeg det, der gives til md5().

$brugernavn = "abcd";
$password = "qwer";
$length = strlen($brugernavn.$password); // Giver 8

--
Mvh.

Niels Andersen
(la nels. anersyn.)

Mikkel Christensen (03-01-2003)
Kommentar
Fra : Mikkel Christensen


Dato : 03-01-03 20:01

"Niels Andersen" <niels-usenet@myplace.dk> skrev i en meddelelse
news:kL2Q9.19154$Hl6.2098390@news010.worldonline.dk...
> Jakob Møbjerg Nielsen wrote in <auqck0$ggh$1@sunsite.dk>:
> >> $md5 = $brugernavn.$password;
> > $md5 = md5($brugernavn.$password);
>
> Selvfølgelig. :)
>
> >> Hvis
> >> brugernavn og kodeord fx. hver er på mindst 4 tegn, så vil den
> >> hashede streng pludselig være mindst 8 tegn lang.
> > Nope. MD5 værdier er altid 32 tegn lange.
>
> Okay, den kunne åbenbart misforståes. :)
> Med "den hashede streng" mente jeg det, der gives til md5().
>
> $brugernavn = "abcd";
> $password = "qwer";
> $length = strlen($brugernavn.$password); // Giver 8
>


Men hvorfor er det et plus?
Er det muligt at fortolke hash'en og få nogle oplysninger om den oprindelige
værdi, såsom længde?
Hvis ja gør det arbejdet for kodeknækkeren noget lettere, hvis han f.eks.
ved passwordet kun er på 4 tegn.
Men ellers er det vel helt uden betydning, eller hva?

--
------> END <------
Mikkel Magnus Christensen
barefoot@jaha.dk, www.startfirma.dk, www.starthotel.dk, www.i-know.dk
------> END <------


Søg
Reklame
Statistik
Spørgsmål : 177502
Tips : 31968
Nyheder : 719565
Indlæg : 6408538
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste