špatné magické číslo na dešifrování

V dubnu jsem zašifroval soubor pomocí příkazu

openssl enc -aes-256-cbc -salt -pass file:<passwordfile> < infile > outfil 

Teď to chci dešifrovat pomocí

openssl enc -d -aes-256-cbc -salt -pass file:<passwordfile> -in outfil -out infile2 

, ale mám špatné magické číslo.

Včera zašifrovaný soubor se stejnými parametry dešifruje ok.

Co se mohlo stát? a je tam stejně, že mohu načíst tento archivovaný soubor?

Odpovědět

Pokud jste šifrovali pomocí OpenSSL < = 1.0.2 a dešifrujete pomocí OpenSSL 1.1.0, pak je to pravděpodobně toto:

https://www.openssl.org/docs/faq.html#USER3

Výchozí hodnota hash použitá ke generování klíče z hesla změněného mezi 1.0.2 a 1.1.0. Zkuste přidat do svého dešifrovacího příkazu -md md5.

Komentáře

  • děkuji, bál jsem se, že to může být něco takhle Jsme v neobvyklé situaci a chceme obnovit něco tak starého. Zkusím to
  • Neshoda ve výchozím pbe-hash (nebo zadání nesprávného hash nebo jen špatné heslo) způsobí dešifrování odpadu, které pro šifru v režimu CBC (jako zde) bude téměř vždy být detekován jako 06065064 ' špatné dešifrování ' – ale ne ' špatné magické číslo '. To dělá pouze poškozený soubor nebo soubor zašifrovaný pomocí -nosalt nebo skutečně starověkého OpenSSL (maximálně před 0.9.6).

Odpověď

Následující příkaz mi způsobil bolest:

openssl aes-256-cbc -d -in hotmama.tar.bz2.enc -out hotmama.tar.bz2 enter aes-256-cbc decryption password: bad magic number 

A níže uvedený příkaz to vyřešil a potěšil mě:

openssl aes-256-cbc -md md5 -in hotmama.tar.bz2.enc -out hotmama.tar.bz2 enter aes-256-cbc encryption password: Verifying - enter aes-256-cbc encryption password: 

Komentáře

  • V druhý příkaz, nešifrujete (-d) …

odpověď

Obecnou příčinou této chyby je, že klíč vypočítaný pomocí OpenSSL z hesla je nesprávný, což znamená, že není stejný jako klíč, který šifroval data.

Jedním z důvodů, proč se tato chyba může zobrazit nahoru, v jiné situaci než původní otázka, je, pokud šifrujete pomocí jiného nástroje než OpenSSL, například šifrování v Javě a dešifrování pomocí SSL.

Viz řešení pro Javu: https://stackoverflow.com/questions/22610761/aes-simple-encrypt-in-java-decrypt-with-openssl/55884564#55884564

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *