¿Cómo se realiza la administración de claves tanto en OpenSSL como en aescrypt y cómo se almacena la clave después del cifrado?

0

Estoy utilizando OpenSSL y aescrypt para el cifrado y el descifrado. ¿Cómo sucede la administración de claves tanto en OpenSSL como en Aescrypt y cómo guardar la clave después del cifrado? Por ejemplo, estoy dando un código de muestra

openssl aes-256-cbc -a -salt -in abc.txt -out abc.txt.enc

aescrypt -e -p apples abc.txt

    
pregunta prasanna 02.06.2017 - 11:39
fuente

1 respuesta

1

Si intenta ejecutar la línea de comando openssl , verá que le pedirá una "contraseña de cifrado". Esa contraseña es la clave; no hay ninguna clave almacenada en ningún otro lugar.

Mirando el código fuente de OpenSSL (aquí estoy mirando OpenSSL-1.0.2g, el archivo es apps/enc.c ), parece que se usa la contraseña, junto con un salt aleatorio, en el EVP_BytesToKey() : esa función genera la clave de cifrado (y la IV) de la sal y la contraseña, con una complicada función basada en hash. El recuento de iteraciones está codificado en 1 (lo que, en lo que respecta al hashing de contraseñas, es terrible). El archivo de salida (sin contar la codificación Base64 agregada con la opción -a ) comienza con una secuencia de ocho bytes fijos ( 53 61 6c 74 65 64 5f 5f ) seguido por la sal en sí (8 bytes), luego los datos cifrados. Por lo tanto, la sal que se generó aleatoriamente se codifica en el propio archivo, pero la contraseña no se almacena en ningún otro lugar que no sea el cerebro del usuario.

No tengo conocimiento de una herramienta estándar llamada "aescrypt". Las búsquedas de Google muestran varias herramientas con ese nombre, por lo que no puedo saber cuál tiene en su máquina. Sin embargo, apuesto a que el principio general es el mismo: la herramienta solicita una contraseña y deriva la clave de cifrado de esa contraseña.

    
respondido por el Thomas Pornin 02.06.2017 - 17:21
fuente

Lea otras preguntas en las etiquetas