Devo memorizzare il vettore di sale e di inizializzazione della password crittografata come testo in chiaro?

1

Sto crittando un file con AES-256-CBC e sto pianificando di memorizzare il testo cifrato in un file JSON, con qualcosa del tipo:

{
    "data": "0123456789ABCDEF...",
    "salt": "00123ABCAABBCCDD...",
    "iv": "000111ABCCBBCCDDFD..."
}

Poi, quando ho letto di nuovo il file, ho deserializzato i dati, quindi ho usato il sale per ridare la chiave e il iv per decodificare il file. Questo metodo di archiviazione è consigliato / sicuro?

Si prega di notare che i dati non sono enormi. È a malapena un po 'di testo, motivo per cui non mi interessa se la serializzazione ha aumentato le dimensioni dei dati.

Perché non li concatenò solo in forma di byte? Perché voglio avere la compatibilità con le versioni precedenti in futuro aggiungendo più metadati nel file json, come la versione, ecc.

Perché non sto scrivendo i dati in json come byte? Perché non posso garantire che il testo cifrato non abbia caratteri ascii che potrebbero rompere il mio file json, come " , per esempio.

    
posta The Quantum Physicist 22.04.2018 - 12:20
fonte

1 risposta

0

Supponendo che non ti interessi per l'efficienza, l'unico vero problema è che stai usando la modalità CBC che è non autenticato . Non vi è alcun problema di crittografia con la memorizzazione di valori che non devono essere tenuti segreti in alcuna codifica arbitraria, sia hex, o base64, o uuencode. In effetti, il nuovo LUKS2 formato per la crittografia del disco fa esattamente questo, memorizzando la crittografia dati correlati in JSON.

Probabilmente dovresti usare base64, perché hex è inutilmente inefficiente.

    
risposta data 22.04.2018 - 12:22
fonte