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.