Di quanto l'aggiunta di un sale rallenta l'attacco di un tavolo arcobaleno?

1

Capisco che l'aggiunta di un salt fornisce una certa protezione, perché l'attacker non può più semplicemente cercare il valore hash in una tabella arcobaleno. Tuttavia, è ancora possibile scrivere un programma di cracking che cerca l'hash e quindi applica il sale ad esso, poiché il sale stesso è necessariamente non criptato. Quindi una password salata è ancora crackabile, anche se il cracking richiederà più tempo. La mia domanda è quanto tempo ci vorrà? Il sale aumenta la complessità temporale del cracking di un ordine di grandezza significativo? Quali sono le rispettive complessità temporali del cracking di un hash non salato e del cracking di un hash salato utilizzando la stessa tabella di ricerca?

Un'altra domanda, in qualche modo correlata: ho letto in Unix pratico e sicurezza Internet che la funzione Modular Crypt utilizzata in alcuni sistemi Unix non esegue XOR con l'hash e la applica semplicemente inizio. Non è questo a vanificare lo scopo di avere un sale, dal momento che l'hash non salato può essere estratto in modo triviale dalla stringa della password e attaccato come se il sale non fosse lì in primo luogo?

    
posta Legend of Overfiend 22.02.2017 - 15:04
fonte

3 risposte

1

Per ogni singolo tentativo di stringa, deve essere eseguito l'algoritmo di hashing.

Quindi questo dipende veramente da quale algoritmo di hashing è usato.

Se è stato utilizzato MD5 (cattiva idea per le password), la differenza è piccola. Se è stato utilizzato BCrypt, la differenza è enorme ..

Riguardo alla tua seconda domanda: la salatura è preziosa dato che non puoi usare una tavola arcobaleno (il sale fa parte della stringa prima che si verifichi l'hashing). Quello che stai cercando è solitamente chiamato "pepe" che è simile a il "sale" ma non memorizzato accanto all'hash (di solito su un sistema separato o un file su quel sistema).

    
risposta data 22.02.2017 - 15:15
fonte
3

Se si desidera creare una tabella arcobaleno per un elenco di password salate, è necessario farlo per ogni valore di sale possibile. Se la lunghezza del sale è sufficiente e se i sali vengono prelevati correttamente (cioè mai riutilizzati), rende praticamente inutili le tavole arcobaleno.

Fondamentalmente, se hai n byte di sali, aumenta le operazioni e la memoria necessarie per costruire una serie di tabelle arcobaleno di 2 ^ n

    
risposta data 22.02.2017 - 15:16
fonte
2

Avere hash salati ha anche senso per attacchi di forza bruta e dizionario. Se gli hash delle password non sono salati, il software di cracking della password può cancellare una password potenziale e controllarla da tutti gli hash. Se gli hash sono salati, l'attaccante deve calcolare l'hash per ciascun utente. Quindi questo aumenta il lavoro per l'attaccante per il numero di utenti.

does not XOR the salt with the hash, and just tacks it onto the beginning. Doesn't this defeat the purpose of having a salt, since the unsalted hash can be trivially extracted from the password string and attacked as if the salt were not there in the first place?

Non capisco davvero questa parte della domanda. È tipico e sicuro concatenare la password e il sale, l'hash e quindi memorizzare sia l'hash che il sale. Quindi memorizzi (salt, hash(salt | password)) . Poiché la funzione di hash è unidirezionale, non puoi facilmente ricavare hash(password) . Per craccarlo dovresti hash diversi valori per password mentre usi lo stesso salt .

    
risposta data 22.02.2017 - 16:52
fonte

Leggi altre domande sui tag