Ho una colonna nel mio database che devo crittografare. La colonna può contenere dati arbitrari.
Quello che penso è di generare prima una coppia di chiavi pubblica e privata. Archiviare la chiave pubblica in un file di configurazione e memorizzare la chiave privata in modo sicuro.
Dopodiché, per ogni riga di dati che ho bisogno di crittografare,
- Genera una chiave crittograficamente protetta e IV
- Cifra i dati utilizzando la chiave simmetrica generata
- Cripta la chiave simmetrica con la chiave pubblica
- Archivia dati crittografati, IV, chiave simmetrica crittografata nel database
Quando voglio decodificarlo,
- Decifra la chiave simmetrica usando la chiave privata
- Decifra i dati utilizzando la chiave simmetrica decrittografata e IV
Domande
- Questa gestione delle chiavi asimmetrica + simmetrica è inutile?
- È abbastanza buono se criptico e decifrato solo usando la crittografia asimmetrica? Se la lunghezza dei dati è piccola, va bene?
- La memorizzazione della chiave crittografata nel database è un rischio?