due casi di crittografia / hashing, qual è il migliore

0

Pensando a questi sotto due casi, quale è il migliore e più sicuro

1 ° caso

//key1 generated from static salt and user password, because in case attacker don't know about source code (bad assumption, but still my assumption), attacker have only hashed or encrypted data + random generated salt
staticSalt = "StaticSalt"
key1 = pbkdf2(userPassword, staticSalt, iteration)

//key2 generated from key1 and randomSalt, this will be actual key to be used for encryption
randomSalt = GenerateRandomSalt()
key2 = pbkdf2(key1, randomSalt, iteration)

aes.Key = Key2
aes.IV = aes.GenerateIV()

o

2 ° caso

//directly generate key from randomSalt and password
randomSalt = GenerateRandomSalt()
key1 = pbkdf2(userPassword, randomSalt, iteration)

aes.Key = Key1
aes.IV = aes.GenerateIV()

La mia domanda è, c'è qualche svantaggio nell'usare il 1 ° caso, aumenterà o diminuirà l'entropia, o il rendere è meno sicuro?

o il 2 ° caso è molto più sicuro e miglior modo di fare

In cerca di risposta da parte di un esperto di crittografia.

    
posta toughcanny 02.03.2014 - 14:58
fonte

1 risposta

1

Non fa differenza se non il numero di iterazioni dell'hash. L'entropia non ha importanza in un sale, importa solo l'unicità. L'input casuale è il modo più semplice per ottenere unicità, ma ogni unicità è ugualmente valida.

Il primo passo in realtà non aggiunge nulla in quanto una tabella arcobaleno può essere costruita per il primo passo e fornire input per provare il secondo in blocco.

    
risposta data 02.03.2014 - 15:23
fonte

Leggi altre domande sui tag