PHP.EE FOORUM   
Nimi:   Pass:   Mäleta mind! 
   Teemad | php.ee esilehele | registreeri | Märgi kõik teemad loetuks | #php.ee Skype vestlus | RSS
UUS TEEMA  OTSI  Lehekülgi: 1 2 
RE: Turvamine logimisel ja PW taastamisel
Postitaja: geo__ 2015-09-01 16:58:51
TSITEERITUD:

Paroolid ei lenda tuksi. See ongi soolamise mõte, et samast paroolist erineval hetkel hashi tehes tuleks see ikkagi erinev. Kindlasti leiab veebist andmebaase, mis sisaldavad väljaarvutatud md5 hashe ja millest nad genereeritud on. Kuna kaks erinevat parooli võivad anda sama hashi, siis saab isegi mitme parooliga sisse logida. Kui aga hashid on soolatud, siis sellise paroolide/hashide andmebaasi kasutamisel pole mõtet.
password_hash-i räsi peidab endas ka soola ning verify oskab selle välja lugeda, ning kombinatsioonis kasutaja sisestatud parooliga proovib, kas räsi tuleb õige.
Toon näite md5 baasil.

$sool = rand(1000,9999);
$hash_soolaga = md5('paRool'.$sool).$sool;
$hash_soolaga paned baasi.

//kontroll
$hash = substr($row['hash_soolaga'], 0, -4);//row tuleb baasist, eemaldame soola
$sool = substr($row['hash_soolaga'], -4); //võtame ainult soola

if (md5('paRool'.$sool) === $row['hash_soolaga'])
{
korras
}


Minumeelest see ei toimi, kui $sool on random ja paned:
$hash_soolaga = md5('paRool'.$sool);
, siis tuleb selline hash mida enam ise ka lahti ei hammusta
(random numbrit ju ei tea).
Hiljem ei saa ju enam teha võrdlust
if (md5('paRool'.$sool) === $row['hash_soolaga']) kuna soola väärtus on midagi muud kui parooli hashi salvestamise hetkel.
Või sa pead silmas, et soola salvestad eraldi iga kasutaja juurde baasi?
RE: Turvamine logimisel ja PW taastamisel
Postitaja: jhhhhkp 2015-09-02 20:48:24
TSITEERITUD:

Minumeelest see ei toimi, kui $sool on random ja paned:
$hash_soolaga = md5('paRool'.$sool);
, siis tuleb selline hash mida enam ise ka lahti ei hammusta
(random numbrit ju ei tea).
Hiljem ei saa ju enam teha võrdlust
if (md5('paRool'.$sool) === $row['hash_soolaga']) kuna soola väärtus on midagi muud kui parooli hashi salvestamise hetkel.
Või sa pead silmas, et soola salvestad eraldi iga kasutaja juurde baasi?


viimane jupp salvestisest on puhas sool. St on salvestatud samasse lahtrisse ja liidetud rasile otsa. Oluline tolles md naites, et sool oleks sama pikkusega alati. Aga jah php cypt is the to go, nagu targemad raagivad
RE: Turvamine logimisel ja PW taastamisel
Postitaja: geo__ 2015-09-03 10:31:58
TSITEERITUD:


viimane jupp salvestisest on puhas sool. St on salvestatud samasse lahtrisse ja liidetud rasile otsa. Oluline tolles md naites, et sool oleks sama pikkusega alati. Aga jah php cypt is the to go, nagu targemad raagivad


Kui sa soola läbi md5-e lased, siis see ei seisa enam puhta soolana.
Näiteks:
$sool = 1111;
$hash_soolaga = md5('paRool'.$sool) = 1694f370b1e6585f15ad5886a7a34190
$hash_soolata = md5('paRool') = 2f334e708d604232c6160c1a9dbf30c8

Ei piisa nelja tähe/numbri eemaldamisest lõpust.

RE: Turvamine logimisel ja PW taastamisel
Postitaja: blaa 2015-09-03 11:56:43
TSITEERITUD:

Kui sa soola läbi md5-e lased, siis see ei seisa enam puhta soolana.
...
Ei piisa nelja tähe/numbri eemaldamisest lõpust.

Vaata mu näidet täpsemalt. Ma ei garanteeri, et ta töötab, sest kirjutasin peast, aga seal on mul sedasi:
$hash_soolaga = md5('paRool'.$sool).$sool;
Ehk siis sool on lisatud veel räsile otsa. Enne võrdlemist ma eemaldan selle ja tõepoolest, antud juhul peab olema sool fikseeritud pikkusega. Aga soola võib ka lisada eraldi veergu või eraldada mingi sümboliga.
Ma olen isegi teinud nii, et hashi lühendan soola pikkuse võrra ja sool on sümbolitest [0-9a-f], nii ei oska häkker aimatagi, et sinna sool peidetud on.
Aga password_hash() kasutsele võtuga võib minu näite muidugi ära unustada.
RE: Turvamine logimisel ja PW taastamisel
Postitaja: geo__ 2015-09-03 14:47:52
TSITEERITUD:

Vaata mu näidet täpsemalt. Ma ei garanteeri, et ta töötab, sest kirjutasin peast, aga seal on mul sedasi:
$hash_soolaga = md5('paRool'.$sool).$sool;
Ehk siis sool on lisatud veel räsile otsa. Enne võrdlemist ma eemaldan selle ja tõepoolest, antud juhul peab olema sool fikseeritud pikkusega. Aga soola võib ka lisada eraldi veergu või eraldada mingi sümboliga.
Ma olen isegi teinud nii, et hashi lühendan soola pikkuse võrra ja sool on sümbolitest [0-9a-f], nii ei oska häkker aimatagi, et sinna sool peidetud on.
Aga password_hash() kasutsele võtuga võib minu näite muidugi ära unustada.

Ei no mis ma vaatan, ma tõin välja ainult selle osa kus sa oled üle soolanud. Ehk kui sul on sool md5 sees: md5('paRool'.$sool) ,siis see sool ei jää sinna viimase nelja karakterina vaid terve hash on teisel kujul.
RE: Turvamine logimisel ja PW taastamisel
Postitaja: blaa 2015-09-03 15:42:09
jah, õige. seal näpukas.
Sobib
if (md5('paRool'.$sool) === $hash)
või
if (md5('paRool'.$sool).$sool === $row['hash_soolaga'])
RE: Turvamine logimisel ja PW taastamisel
Postitaja: andris 2015-09-04 09:04:35
Kuna thread on päris pikaks veninud, siis kordan neile, kes kõike lugeda ei viitsi, üle oma varasema punkti. Unustage ära md5 ja manuaalne soolamine. md5 ei ole krüptograafiliselt turvaline ja manuaalne soolamine lõpeb tihti samuti ebaturvalise soolaga (ehk sellisega, mis ei suurenda piisavalt entroopiat).

Kasutage ainult funktsioone password_hash() (koos algoritmi argumendiga PASSWORD_DEFAULT) ning password_verify(). Sellisel juhul olete kaitstud parimate praktikatega ning ajas kaitse suureneb (uute PHP versioonidega muutuvad vaikimisi argumendid turvalisemaks). Samuti on see palju lihtsam, kuna ei ole vaja majandada eraldi soolaga. Kõik muu võib ära unustada.

Leheküljed: 1 2 

©2002-2013 Martin Rebane & PHP.ee kaasautorid
  0.0799288749695