¿Es seguro almacenar la frase de contraseña AES cifrada con la clave AES resultante?

2

Descubrí que una herramienta de cifrado cifra y almacena la frase de contraseña introducida por el usuario y utilizada para generar la clave AES además de la carga útil cifrada.

Pseudocódigo:

key = md5(passphrase)
iv = 0
cipher = Cipher(key, "AES/CBC/PKCS7", iv)
encryptedpayload = cipher.encrypt(payload)
cipher = Cipher(key, "AES/CBC/PKCS7", iv)
encryptedpassphrase = cipher.encrypt(passphrase + chr(0))
// Write encryptedpayload and encryptedpassphrase Base64 encoded to file

El motivo para almacenar la frase de contraseña cifrada es que la herramienta la utiliza para decidir si la frase de contraseña de descifrado es la correcta, por lo que se puede notificar al usuario si la frase de contraseña es incorrecta.

Si AES es una forma segura de cifrar cualquier información, no debería haber ningún problema para cifrar la contraseña, sin embargo, tengo un mal presentimiento.

Especialmente porque no se usa sal y el IV siempre se establece en 0.

Y la longitud de la frase de contraseña encriptada proporciona cierta información sobre la longitud de la frase de contraseña (si tiene 16 bytes de longitud, la frase de contraseña no puede tener más de 15 bytes debido a la adición de 0 bytes antes del cifrado).

Así que me gustaría saber si este esquema de cifrado está bien o ¿debería evitarse esta herramienta?

¿Y cuál es la mejor práctica para detectar si la frase de contraseña ingresada es la correcta para descifrar el texto cifrado?

    
pregunta siebert 05.10.2014 - 13:36
fuente

0 respuestas

Lea otras preguntas en las etiquetas