¿Es posible cifrar un archivo usando tanto el cifrado AES-256 como la contraseña y el archivo de claves utilizando OpenSSL?

1

¿Es posible cifrar un archivo utilizando tanto el cifrado AES-256 como la contraseña y el archivo de claves utilizando OpenSSL?

Quiero cifrar un archivo usando OpenSSL.

Después de horas de pruebas, he encontrado un comando que puede hacer parcialmente lo que quiero:

openssl enc -aes-256-cbc -salt -in input.txt -out output.txt

Cuando ejecuto el comando anterior, se me solicita una contraseña que sea conveniente en este escenario.

Me pregunto si y cómo puedo usar el comando anterior con una contraseña y un archivo de claves. Es decir. se utiliza un archivo de claves para cifrar el archivo input.txt y también se usa una contraseña. Ya he probado la marca -inkey pero parece que no funciona.

SO: Linux (personalizado)

    
pregunta Vesa 13.08.2018 - 09:34
fuente

1 respuesta

4

Hagas lo que hagas, no intentes especificar múltiples argumentos -pass como @mootmoot sugiere en los comentarios. Solo se aplica lo último, como puede verse trivialmente por:

echo test | openssl enc -aes-256-cbc -salt -pass file:key -pass pass:password | openssl enc -d -aes-256-cbc -salt -pass pass:password

Suponiendo que está intentando requerir la contraseña y el archivo de clave para descifrar, la forma más sencilla sería encadenarlos, aunque esto resultará en un ligero aumento de tamaño:

$ echo test | openssl enc -aes-256-cbc -salt | openssl enc -aes-256-cbc -salt -pass file:key >testout
enter aes-256-cbc encryption password:
Verifying - enter aes-256-cbc encryption password:

$ <testout openssl enc -d -aes-256-cbc -salt -pass file:key | openssl enc -d -aes-256-cbc -salt
enter aes-256-cbc decryption password:
test

Sin embargo, debes tener en cuenta que la derivación de clave que utiliza openssl enc es bastante terrible. El valor predeterminado de 0.9.8 es MD5, y aunque le permite seleccionar otro hash, solo permite una ronda de hash(password || salt) . 1.1.0 cambia el hash predeterminado a SHA256, pero aún así solo permite una ronda, por lo que la mejora es muy pequeña.

También he visto esto quote de un desarrollador de openssl al que se hace referencia varias veces:

  

Al final del día, OpenSSL es una * biblioteca *, no un producto de usuario final,   y enc (1) y amigos son herramientas de desarrollo y herramientas de "demostración".

Es de 2009, así que no sé cuánto ha cambiado desde entonces (creo que la utilidad cms está bien), pero recomendaría evitar enc si es posible.

    
respondido por el AndrolGenhald 13.08.2018 - 19:18
fuente

Lea otras preguntas en las etiquetas