dos casos de cifrado / hash, cuál es el mejor

0

Pensando en estos dos casos a continuación, cuál es el mejor y el más seguro

1er 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

segundo caso

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

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

Mi pregunta es, ¿hay algún inconveniente en el uso del primer caso, aumentará o disminuirá la entropía o será menos seguro?

o el segundo caso es una forma mucho mejor y segura de hacerlo

Buscando la respuesta de algún experto en criptografía.

    
pregunta toughcanny 02.03.2014 - 14:58
fuente

1 respuesta

1

No hace una diferencia más que el número de iteraciones del hash. La entropía no importa en la sal, solo importa la singularidad. La entrada aleatoria es la forma más fácil de obtener singularidad, pero cualquier singularidad es igualmente valiosa.

El primer paso realmente no agrega nada, ya que se puede construir una tabla de arco iris para el primer paso y dar entradas para probar el segundo a granel.

    
respondido por el AJ Henderson 02.03.2014 - 15:23
fuente

Lea otras preguntas en las etiquetas