È opensl aes-256-cbc sicuro per il backup offsite

7

Ho circa 20000 file (circa 9 GB) ognuno dei quali è crittografato usando il comando openssl enc -aes-256-cbc -in infile -out outfile -k mypassword . Ogni file utilizza la stessa password. La mia versione di openssl è 1.1.0e .

Sarò vulnerabile a eventuali attacchi noti se eseguo il backup di questi file su una posizione esterna? In caso contrario, quali sono le mie alternative?

    
posta yasar 25.03.2018 - 23:34
fonte

1 risposta

11

Non dovresti mai usare l'utilità della riga di comando di OpenSSL per la crittografia generica. In realtà è progettato solo come test delle routine di crittografia interna della libreria. Per questo motivo, ci sono alcuni problemi inerenti all'uso quando è necessaria la massima riservatezza e integrità:

  • Sarai vulnerabile a malleabilità attacchi , poiché la modalità CBC non è autenticata. Ciò può consentire la modifica dei file in determinati modi prevedibili senza conoscere la chiave di crittografia.
  • Nessun controllo dell'integrità significa che la decrittografia con la chiave sbagliata può avere successo, nonostante l'emissione di parole senza senso corrotte. Le utilità progettate per la crittografia dei file ti diranno se la chiave è sbagliata.
  • L' hash predefinito utilizzato per derivare la chiave master è MD5, che è tutt'altro che ideale. È possibile modificare l'hash, ad esempio con -md sha512 , ma non utilizzerà ancora lo stretching delle chiavi.
  • Le nuove versioni potrebbero non essere in grado di decodificare i file precedentemente crittografati per impostazione predefinita. Quando il valore hash predefinito è stato modificato da MD5 a SHA-512, è necessario un -md md5 esplicito per funzionare di nuovo.
  • Sia la chiave che IV derivano dalla tua password di input. L'utilizzo della stessa password per crittografare più file comporterà il riutilizzo IV. Ciò è negativo per la modalità CBC e fatale per la modalità CTR.
  • Non è ben testato. Per molte versioni di OpenSSL, enc utilizzando la crittografia in modalità GCM ha funzionato, ma la decrittografia no. Questo potrebbe anche essere il caso.

Questo non è univoco per il comando enc . L'utilità della riga di comando di OpenSSL ha altri trucchi quando si tenta di utilizzarlo per scopi diversi dalla verifica della libreria. Un altro esempio è il comando s_client , utilizzato per la connessione a un server su SSL o TLS, che non convalida il certificato della destinazione. Nel complesso, non dovresti usare l'utility OpenSSL . Basta usare GnuPG:

L'unica volta che userò OpenSSL direttamente è se ho bisogno di crittografare qualcosa con una chiave completamente casuale o una chiave raw specifica e una IV e non mi importava dell'integrità del messaggio. Ad esempio, scrivere un flusso pseudocasuale seminato dal kernel su stdout può essere fatto con:

openssl aes-128-ctr -nosalt -k $(xxd -l16 -c16 -ps /dev/urandom) -in /dev/zero

Allo stesso modo, decifrare un blob di semplici dati crittografati quando si conosce sia la chiave grezza che la IV grezza in esadecimale (ignorando la necessità di -md per la derivazione della chiave) potrebbe essere fatto con:

openssl aes-128-cbc -d -nosalt -K $hex_key -iv $hex_iv -in infile -out outfile

Ma per crittografia di file generica? Basta usare GnuPG.

    
risposta data 26.03.2018 - 00:19
fonte

Leggi altre domande sui tag