Ho generato una chiave simmetrica a 256 bit casuale, in un file, da utilizzare per crittografare alcuni dati utilizzando la riga di comando di OpenSSL che ho bisogno di decrittografare successivamente in modo programmatico utilizzando la libreria OpenSSL. Non sto avendo successo, e penso che il problema potrebbe essere nel vettore di inizializzazione che sto usando (o non usando).Qual è l'IV predefinito durante la crittografia con la crittografia aes_256_cbc?
ho crittografare i dati utilizzando questo comando:
/usr/bin/openssl enc -aes-256-cbc -salt -in input_filename -out output_filename -pass file:keyfile
sto usando la seguente chiamata per inizializzare la decriptazione dei dati:
EVP_DecryptInit_ex(ctx, EVP_aes_256_cbc(), nullptr, keyfile.data(), nullptr))
keyfile
è un vector<unsigned char>
che contiene i 32 byte della chiave. La mia domanda riguarda l'ultimo parametro. Dovrebbe essere un vettore di inizializzazione dell'algoritmo di cifratura. Non ho specificato un IV durante la crittografia, quindi è necessario che sia stato utilizzato un valore predefinito.
Il passaggio di nullptr per quel parametro significa "utilizza l'impostazione predefinita"? Il valore predefinito è null e nulla viene aggiunto al primo blocco di cifratura?
Devo dire che sono in grado di decifrare dalla riga di comando senza fornire una flebo.
Non sarebbe senza usare IV (o un valore predefinito fisso) potrebbe gravemente compromettere la forza della crittografia? A quanto ho capito, il punto IV è quello di garantire che il testo in chiaro identico non generi testo cifrato identico. Quindi c'è bisogno di essere un IV, non ha bisogno di essere segreto, ha solo bisogno di essere unico per tutto ciò che crittografate. Non usarne uno (o uno fisso) suona come una pessima idea. –
Io non sono un crittografo, né mi giocare uno in TV, quindi sono davvero non qualificato per rispondere (da qui il motivo per cui quanto sopra era solo un commento).Come non esperto vorrei * supporre * che finché la chiave è unica ogni volta, allora probabilmente è OK, ma allora come pragmatico che sa di sapere troppo poco sulla crittografia probabilmente userò anche una IV casuale, * comunque * e memorizzarlo insieme ai dati crittografati. –
Ho trovato alcune informazioni al riguardo: [Risposta su crypto.stackexchange.com Riguardo all'utilizzo della stessa IV con chiavi diverse per ogni testo in chiaro.] (Http://crypto.stackexchange.com/questions/8600/why-should-i- use-an-initialization-vector-iv-when-i-have-unique-keys) – Steve