Per favore fammi sapere se una delle mie supposizioni non è corretta.
Supponiamo di avere un database, in cui tutte le righe di una colonna del database sono crittografate a livello di applicazione utilizzando una passphrase singola, "SECRET", utilizzando la derivazione della chiave basata sulla password:
SiailsalecasualecheIVassicuranochelacrittografiadeglistessidatiperduerighediverseprodurràvaloricrittografatidiversi.Tuttavia,seunutentemalintenzionatohaaccessoinletturaalmiodatabaseedèingradodiforzarelacrittografiadiunasingolariga,conosconolamiapassphrase"SECRET" e possono decodificare tutte le righe crittografate.
Questo significa che il vantaggio principale nell'usare un salt random e IV per ogni riga è che nasconde la frequenza dei valori dei miei dati crittografati? Ad esempio, l'inconveniente di non usare un sale e una IV casuali sarebbe che un utente malintenzionato potrebbe guardare il mio database e vedere "50 righe hanno valore X, 49 righe hanno valore Y, e 1 riga ha valore Z", ma non saprebbero cosa X, Y e Z sono effettivamente a meno che non possano anche decifrare la crittografia? Ci sono più motivi per utilizzare un sale / IV random per riga?
Dire che avevo bisogno di interrogare il mio database per i valori che sono criptati. L'uso di un salt casuale e IV rende impossibile la query "Dammi le righe che hanno un valore N"? In che modo posso proteggere i miei dati con la crittografia ed essere ancora in grado di eseguire query su di essi e quali tipi di minacce comuni sarei quindi vulnerabile a?