openssl problem descifrando archivos encriptados con passhrase usando el IV derivado, la clave y la sal

1

Así que seguí openssl: recupera la clave e IV por contraseña y logré recuperar mi sal, clave y IV usando -P en openssl.

openssl enc -aes-256-cbc -in encrypted -pass "pass:password" -out m.jpg

esto me da el archivo m.jpg adecuado, así que asumo

openssl enc -aes-256-cbc -d -in encrypted -pass "pass:password" -out m.jpg -P

me da la sal correcta, clave y IV:

salt=7A01E44D968CEBD0
key=6F4C7DD6F49D0605095CAD7EA2745913E83B71A52C34F2ED260544286FDEE78A
iv =0BBD122901B13F76D03ED2EBE4E8D1CC

Ahora, cuando intenté descifrar el archivo cifrado con la sal, la clave y la IV anteriores, haciendo

openssl enc -aes-256-cbc -d -in encrypted -K 6F4C7DD6F49D0605095CAD7EA2745913E83B71A52C34F2ED260544286FDEE78A -iv 0BBD122901B13F76D03ED2EBE4E8D1CC -S 7A01E44D968CEBD0 -out m.jpg

No pude descifrar el archivo. Tal vez algo está mal con el formato? Así que traté de ponerlos entre comillas

openssl enc -aes-256-cbc -d -in encrypted -K "6F4C7DD6F49D0605095CAD7EA2745913E83B71A52C34F2ED260544286FDEE78A" -iv "0BBD122901B13F76D03ED2EBE4E8D1CC" -S "7A01E44D968CEBD0" -out m.jpg

y en vano.

El --help establece que

  -iv IV             IV to use, specified as a hexidecimal string
  -K key             Key to use, specified as a hexidecimal string 
  -S salt            Salt to use, specified as a hexidecimal string

que es exactamente lo que hice. ¿A menos que haya una forma especial de pasar la cadena hexadecimal?

¿O algo salió mal en mi proceso de recuperación del IV, la clave y la sal? (¿O en el proceso de descifrar el archivo)?

    
pregunta Archy Wilhes 魏何 11.10.2018 - 16:37
fuente

1 respuesta

3

Para ser claros, como responda , usted los puntos de referencia openssl enc son bastante terribles y nunca se pretendió utilizarlos para otra cosa que no sean pruebas.

El problema es con formatos inconsistentes. Si encripta con una contraseña, utilizará el encabezado de 16 bytes Salted__ que incluye la sal utilizada en la derivación de clave. Si utiliza la clave y la IV directamente, no es necesario especificar un salt y no utilizará el encabezado salt. Ya que usted cifró con una contraseña y luego recuperó la clave y el IV, deberá quitar los primeros 16 bytes antes de descifrarlos.

$ echo test | openssl enc -aes-256-cbc -pass pass:password -base64
U2FsdGVkX1/hmWydD0WX5S5n369MQhQ6Q3w4pxLYrh8=

$ echo 'U2FsdGVkX1/hmWydD0WX5S5n369MQhQ6Q3w4pxLYrh8=' | openssl enc -aes-256-cbc -d -pass pass:password -base64 -P
salt=E1996C9D0F4597E5
key=90C6AF89C13459AD5F55B9CD72705249BC494F4539D2FA75B4C6E5B343D7FDB2
iv =3D29E6F33CBBDA72B6757B5078003B53

$ echo 'U2FsdGVkX1/hmWydD0WX5S5n369MQhQ6Q3w4pxLYrh8=' | base64 -d | tail -c+17 | openssl enc -aes-256-cbc -d -K 90C6AF89C13459AD5F55B9CD72705249BC494F4539D2FA75B4C6E5B343D7FDB2 -iv 3D29E6F33CBBDA72B6757B5078003B53
test
    
respondido por el AndrolGenhald 11.10.2018 - 17:02
fuente

Lea otras preguntas en las etiquetas