Nella mia nuova utility di crittografia dei documenti segreti, la chiave per la crittografia simmetrica = l'hash di un salt casuale e una password fornita dall'utente.
È necessario avere una lenta funzione hash per prevenire la forza bruta su password non ottimali. MD5 e SHA1 si sono dimostrati immensamente veloci, quindi ovviamente non è abbastanza. Inoltre, non ho grandi speranze per SHA256.
Una delle opzioni è ripetere l'operazione di hashing un numero assurdo di volte. A causa della vasta ripetizione necessaria (minimo 100 k ), ero un po 'preoccupato per gli attaccanti che saprebbero un modo per saltare avanti con scorciatoie, magari usando la tabella rho, o qualche altro mezzo.
Questo suono da approccio di 100.000 rehash o dovrei usare qualche altro algoritmo per creare una chiave da una password e salt?
Ovviamente posso anche richiedere una password più complessa, ma penso che un buon obiettivo sarebbe quello di supportare la variazione di 6 lettere, non dizionario, anche se richiedo un intero secondo di rehashing per eseguire lo sblocco. Questo è un obiettivo accettabile e ritengo sia meglio consentire password più brevi se a) è ciò che l'utente desidera eb) non ha alcun impatto sulla sicurezza in modo significativo.
1. Una stima della durata dell'hash per un processore di < 2 Ghz è 1 millisecondo per ogni 1-2000 ripetizioni (a seconda dell'algoritmo). Per le password di 6 lettere non dizionario che devono essere conservate per 1 anno, avremmo bisogno della generazione della chiave per utilizzare almeno 100 millisecondi .