Gå til innhold

md5, sha1 eller annen kryptering?


Anbefalte innlegg

Jeg har en tabell hvor jeg lagrer medlemmer og deres passord, men hvilken kryptering er best å bruke nå? Jeg har brukt md5 hittil, men ble usikker når jeg så sha1 og crc32.

 

Hvilken av disser tre gir best beskyttelse?

Lenke til kommentar
Videoannonse
Annonse

Jeg anbefaler sha1() da den er nyest samt den genererer en 40-tegns hash, mens md5() genererer en 32-tegns lengde.

 

Anbefaler også forøvrig å legge til en unik streng for å gjøre det sikrere.

 

f.eks. når du skal hashe passordet gjør du slik:

 

$secretSHA1string = "ejx834yfth85hj43jg54hg548923j";

sha1($secretSHA1string . $_POST['passord']);

 

Pass på at når du sjekker passordet må du også ha med den hashen xD

Endret av BigJackW
Lenke til kommentar

Hva med å blande sha1 og md5? F.eks:

$string = md5($string);
$string = sha1($string);

Tror ikke du får det noe sikrere en det...

 

Edit: Dei fleste typer cracke-program, f.eks "cain & abel", kan kun cracke en spesiel type hash. Når du blander to hash'er blir slike program udugelige, da må du skrive din egen cracker. Dette vil sette script-kiddies ut av spill ;)

Endret av mhbakke
Lenke til kommentar

På alle versjoner av php5 så er hash inkludert. De som ikke har det har somregel mhash.

 

hash:

hash_hmac('sha512', $passord, 'salt og pepper');

hash_hmac('tiger192,4', $salt . $passord, 'pepper');

 

mhash (har verken sha512 eller tiger192):

mhash(MHASH_SHA256, $passord, 'salt og pepper');

mhash(MHASH_TIGER160, $salt . $passord, "pepper");

Lenke til kommentar

Man kan ikke reversere MD5 og andre hasher på noen matematisk måte. Men man kan ta en ordbok, hashe alle ordene, og så søke i hash-listen sin etter passordhashen man har fått tak i. Det viktigste er altså at passordet ikke er så enkelt at det finnes i en ordbok.

En måte å gjøre det på er å legge til en salt (en tilfeldig tekst-streng med masse varierte tegn) foran passordet, slik at en angriper også må få tak i saltet, samt generere ny hash-liste.

Det går også an å lagre et unikt salt per bruker, slik at en cracker må lage ny hash-liste for hvert passord han vil finne.

En dobbelthash som md5(sha1($string)) osv, gir også noe av samme effekten som en felles salt. Men å nøste dem enda flere ganger er ikke noe vits.

 

Angående MD5, så er det er funnet en effektiv metode for å finne en streng som gir samme MD5-hash som en annen streng, eller noe i den duren. Det er et problem hvis man bruker MD5 som checksum for å bekrefte ekteheten til et dokument osv, men har ikke like mye å si for oss som bruker det som en passord-hash på små nettsteder. Da er det et større problem at noen har kommet seg så langt inn på systemet at de har fått tak i hele brukerdatabasen.

 

Det er funnet svakheter i SHA-1 også, men de krever betydlig mer regnekraft enn svakheten i MD5.

Lenke til kommentar
Man kan ikke reversere MD5 og andre hasher på noen matematisk måte. Men man kan ta en ordbok, hashe alle ordene, og så søke i hash-listen sin etter passordhashen man har fått tak i. Det viktigste er altså at passordet ikke er så enkelt at det finnes i en ordbok.

8192401[/snapback]

Man trenger jo ikke nødvendigvis å hashe en ordbok så lenge passordene har et høvelig antall tegn.

Bruteforce blir ofte nevnt sammen med MD5 (og andre hash-typer), og fungerer ved at du prøver alle mulige kombinasjoner av tall og bokstaver, og hasher det. Da hjelper det ikke så veldig med salt, bortsett fra at "passordet" som er utgangspunkt for hashen blir lenger.

Men med mange tegn trengs det vannvittige mengder regnekraft. A til Å, a til å og 0 til 9 blir 68 muligheter (og man kan legge til mange flere tegn). Med 10 tegns passord blir det 68^10 muligheter (2 milliarder milliarder). Alle disse mulighetene skal også hashes og søkes.

Å skrive en enkel bruteforce-greie er ikke vanskelig, men det er regnekraften som må til som gjør det vanskelig.

Endret av endrebjorsvik
Lenke til kommentar
For ikke å glemme at sha512/tiger192 krever mer regnekraft enn md5/sha1 samt at HMAC krever enda mer.

 

8 tegns passord med 8 tegns salt og 8 tegns HMAC

 

Noen som gir 16^8^68 muligheter.

 

ca 1,0996907317744048201180239191185e+655

8200112[/snapback]

Altså, du kan ikke regne ut antall kombinasjoner sånn. Først må du jo ta utgangspunkt i antall muligheter pr. tegn, altså 68 og opphøye det i antall tegn. Dette må så tilslutt ganges med antall kombinasjoner i HMAC. Det du ender opp med blir da ca 9,5546e+43.
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...