È un modo sicuro di memorizzare le password? [duplicare]

3

Quindi, un paio di anni fa, quando stavo imparando lo sviluppo del web di back-end di base, ho trovato un tutorial per creare un sistema di accesso di base. Da allora non ho apportato molte modifiche al codice, ma ora ho l'opportunità di utilizzare un sistema più robusto, se necessario.

Quindi, ecco il codice che sto usando attualmente:

$pepper    =    "String of 24 random characters";
$salt       =   dechex(mt_rand(0, 2147483647)) . dechex(mt_rand(0, 2147483647));
$loopcount  =   97674;

for($i = 0; $i < $loopcount; $i++){
    $value  =   hash("sha256", $value . $salt . $pepper);
}

return $value;

In sostanza, un pepe statico di 24 caratteri, un sale e la password vengono sostituiti da 90.000+ volte. Probabilmente vale anche la pena ricordare che il sale è memorizzato nel database.

La mia più grande domanda è se l'hash che molte volte effettivamente fa qualcosa. Voglio anche sapere se il sale e il pepe sono abbastanza forti.

    
posta Meredith 02.07.2014 - 13:07
fonte

3 risposte

11

in realtà, l'hashing MOLTE volte è male. ecco una citazione dal link per dimostrarlo.

"To cut a long story short, hashing a hash N times doesn't make your passwords more secure and can actually make it less secure as a hacker can quite easily reverse the process by generating hash collisions."

leggi la spiegazione completa al link

    
risposta data 02.07.2014 - 13:25
fonte
3

Raccomanderei di non utilizzare sha256 per le password di hashing. La suite sha2 è progettata per essere veloce, esattamente ciò che non vuoi. In breve, utilizza bcrypt: link

In un KDF corretto, le iterazioni sono analogamente incluse per rallentare il processo di hashing delle password (per rispondere alla tua domanda se l'hashing ha o meno 90000 volte qualsiasi cosa), tutto questo si difende principalmente contro il forzante bruto online.

Altro qui: link

    
risposta data 02.07.2014 - 13:26
fonte
1

Il guadagno di sicurezza di hashing oltre 90.000 volte è fondamentalmente minimo. Infatti è in effetti meno sicuro poiché qualsiasi potenziale hacker può crearlo più facilmente, cercando le collisioni. Si può anche usare un hashrate più alto (cioè sha512) e quindi avere un hash più lungo piuttosto che semplicemente scorrere e aggiungere i risultati precedenti. Tutto il tuo ciclo è in realtà un aumento del carico del server, quindi probabilmente vorrai migliorare questo codice come puoi. Il sale e il pepe vanno bene però.

Inoltre, se usi un metodo di hash diverso, assicurati di aumentare la lunghezza del campo in cui lo stai inserendo.

    
risposta data 02.07.2014 - 13:23
fonte

Leggi altre domande sui tag