È possibile crittografare un file utilizzando sia la crittografia AES-256, sia la password e il file chiave utilizzando OpenSSL?

1

È possibile crittografare un file usando sia la crittografia AES-256, sia la password e il file chiave usando OpenSSL?

Voglio crittografare un file usando OpenSSL.

Dopo ore di test ho trovato un comando che può fare parzialmente ciò che voglio:

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

Quando eseguo il comando precedente, viene richiesta una password che è auspicabile in questo scenario.

Mi chiedo se e come posso usare il comando sopra entrambi con una password e un file di chiavi. Cioè un file di chiavi viene utilizzato per crittografare il file input.txt e viene anche utilizzata una password. Ho già testato il flag -inkey ma non sembra funzionare.

SO: Linux (personalizzato)

    
posta Vesa 13.08.2018 - 09:34
fonte

1 risposta

4

Qualunque cosa tu faccia, non provare a specificare più -pass argomenti come @mootmoot suggerisce nei commenti. Solo l'ultima si applica, come può essere visto banalmente da:

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

Supponendo che stai cercando di richiedere sia la password che il file di chiavi per decrittografare, il modo più semplice sarebbe semplicemente unirli, anche se questo si tradurrà in un leggero aumento delle dimensioni:

$ 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

Dovresti sapere che la derivazione della chiave openssl enc è abbastanza terribile. 0.9.8 assume come valore predefinito MD5 e, mentre consente di selezionare un altro hash, consente solo un round di hash(password || salt) . 1.1.0 modifica l'hash predefinito a SHA256, ma consente comunque un singolo round, quindi il miglioramento è molto minore.

Ho anche visto questo quote da uno sviluppatore openssl a cui si fa riferimento più volte:

At the end of the day, OpenSSL is a *library*, not an end-user product, and enc(1) and friends are developer utilities and "demo" tools.

È del 2009, quindi non so quanto è cambiato da allora (credo che l'utilità cms sia ok), ma ti consiglio di evitare enc se possibile.

    
risposta data 13.08.2018 - 19:18
fonte

Leggi altre domande sui tag