openssl problema nel decrittografare il file crittografato con password, usando il derivato IV, Key e Salt

1

Quindi ho seguito openssl: recupero chiave e IV per passphrase e sono riuscito a recuperare il mio sale, la chiave e IV utilizzando -P in openssl.

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

questo mi dà il file m.jpg corretto, quindi suppongo

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

mi dà il giusto sale, chiave e IV:

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

Ora, quando ho provato a decrittografare il file crittografato con il sale precedente, la chiave e IV facendo

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

Non ero in grado di decifrare il file. Forse qualcosa non va nel formato? Così ho provato a inserirli tra virgolette

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

e senza risultati.

Il --help afferma che

  -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

che è esattamente quello che ho fatto. A meno che non ci sia un modo speciale per passare la stringa esadecimale?

O qualcosa è andato storto nel mio processo di recupero di IV, chiave e sale? (O nel processo di decrittografia del file)?

    
posta Archy Wilhes 魏何 11.10.2018 - 16:37
fonte

1 risposta

4

Per essere chiari, come answer tu punti di riferimento openssl enc è abbastanza terribile e non è mai stato concepito per essere utilizzato per scopi diversi dal testing.

Il problema è con formati inconsistenti. Se si cripta una password, utilizzerà l'intestazioneSalted__ di 16 byte% che include il sale utilizzato nella derivazione della chiave. Se si utilizza direttamente la chiave e IV, non è necessario specificare un valore salt e non utilizzerà l'intestazione salina. Poiché hai crittografato con una password e in seguito recuperato la chiave e IV, dovrai rimuovere i primi 16 byte prima di decodificare.

$ 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
    
risposta data 11.10.2018 - 17:02
fonte

Leggi altre domande sui tag