Memorizzazione della chiave di crittografia dei dati nel DB. Sicuro o no?

1

Attualmente sto rilevando un servizio e mentre osservo il DB, ho notato che crittografiamo alcuni dei nostri dati utilizzando una funzione nel DB in cui la chiave di crittografia è hardcoded nella funzione DB.

Per quanto ne so, questa non è una buona pratica e rende la crittografia praticamente ridondante perché l'intero punto di crittografia dei dati DB è proteggere i dati in caso di perdita di DB da parte di soggetti non autorizzati. Ma in questo caso, se il DB è compromesso, lo è anche la chiave di crittografia e la crittografia diventa priva di significato.

Sono corretto qui o mi manca qualcosa?

Inoltre, se è una pratica sbagliata, dovrei cambiare il processo di crittografia / decrittografia in modo che avvenga a livello di app del server?

    
posta dK3 29.10.2016 - 14:07
fonte

1 risposta

2

La regola empirica è che si desidera mantenere i dati crittografati e la chiave di crittografia "il più lontano possibile", il che significa che si vuole minimizzare la probabilità che, dato che i dati siano trapelati, la chiave viene anche trapelata .

Questa ottima risposta ha una classifica da una (migliore) a sette (peggiore) su dove archiviare chiave di crittografia. E, avete indovinato, il numero sette è "nel database":

7. Store the key in the database. Now you're not even trying. Still, a depressingly popular option.

Quindi potresti prendere in considerazione le altre alternative elencate qui. Detto questo, memorizzarlo in una funzione è meglio che archiviarlo in una tabella se si verificano le seguenti condizioni:

  1. Il server di database non è direttamente accessibile da internet.
  2. L'utente Web del database (ovvero l'utente con cui l'app accede come) non dispone dell'autorizzazione per leggere il codice sorgente delle funzioni (quindi l'utente Web non è in grado di leggere la chiave di crittografia).
  3. I backup del database non includono il codice sorgente della funzione.

Spostare la crittografia sul livello dell'app non rende necessariamente le cose molto meglio se la chiave di crittografia è semplicemente codificata nel codice sorgente dell'app invece del codice sorgente DB.

    
risposta data 29.10.2016 - 19:25
fonte

Leggi altre domande sui tag