Perché memorizzare la password salt invece di generarla? [duplicare]

0

Quindi, leggendo questo articolo: link si dice che la memorizzazione del sale va bene in testo semplice perché rende il tabelle di ricerca / arcobaleno inefficaci. Lo capisco, ma perché non generare il sale dalla password inviata e quindi non memorizzarlo mai separatamente?

Qualcosa del genere:

<?php
$pass = '12345';
$salt = '';
// generate the salt somehow... probably not like this
$hash1 = hash('md2',$pass);
$hash2 = hash('md4',$pass);
for($i = 0; $i < strlen($hash1); $i += 2){
  $salt .= $hash1{$i} | $hash2{$i};
}
// hash the results
$hashedPass = hash('bcrypt', $salt . $pass);
    
posta SeanJA 03.06.2013 - 21:06
fonte

1 risposta

8

Se il sale è una funzione della password, allora due password esatte produrranno lo stesso hash.

Per una funzione di hashing arbitraria H() e una generazione di sale arbitraria S(Password) , quindi

H("Password_1", S("Password_1")) = H("Password_1", S("Password_1"))

Mentre si usa una funzione di generazione saltuale RS() quindi

H("Password_1", RS()) != H("Password_1", RS())

Come attaccante, nulla può renderti più felice del vedere due (o più) hash usati in due (o più) account diversi. Questo significa almeno una delle due cose

  1. La password è debole (perché due utenti diversi hanno scelto la stessa password), quindi l'attaccante potrebbe concentrare i suoi poteri di cracking computazionale su quegli hash.

  2. L'utente malintenzionato può attaccare due (o più) account utilizzando lo stesso sforzo computazionale una sola volta.

risposta data 03.06.2013 - 21:15
fonte

Leggi altre domande sui tag