Mysql
 sql >> Database >  >> RDS >> Mysql

Qual è il metodo migliore per utilizzare/memorizzare le chiavi di crittografia in MySQL

Non sono sicuro che l'utilizzo della crittografia build in MySQL sarebbe la migliore soluzione al tuo problema.

M_CRYPT di PHP il pacchetto è considerato abbastanza buono e ti dà la flessibilità di scegliere l'algoritmo più adatto alle tue esigenze.

La memorizzazione della chiave su un altro server ha un grande vantaggio:la chiave non si trova sulla stessa macchina dei dati crittografati. Quindi, finché l'attaccante non ha abbastanza controllo sulla macchina compromessa, non può accedere alla chiave.
Se l'attaccante ottiene il pieno controllo della macchina su cui sono archiviati i dati, molto probabilmente sarà in grado di interrogare il servizio web per la chiave.

Tuttavia, la trasmissione della chiave da una macchina all'altra apre un'area completamente nuova che deve essere protetta. Probabilmente coinvolge più chiavi e più livelli di crittografia, aumentando così la possibilità che vengano commessi errori.

L'altra opzione è inserire la password all'avvio del server web e conservarla solo in memoria.

Possibile soluzione
Se viene utilizzata una soluzione che utilizza il seguente metodo per crittografare i file per gli utenti con accesso al Web (non sono sicuro del tuo ambiente, ma potrebbe essere utile):

  • Al momento della creazione dell'utente, al nuovo utente viene assegnata una chiave casuale lunga.
  • Questa chiave casuale è archiviata in una colonna crittografata nel record utente.
    (solo questa colonna è crittografata per non influire sulle prestazioni del resto del record! )
  • La crittografia della colonna della chiave casuale viene eseguita con 1 password principale, archiviata in un file o in memoria.
    (L'opzione migliore è inserire la password dopo aver avviato il server web e memorizzarla solo in memoria. )
    (Un altro approccio sarebbe consentire all'utente di inserire una password e utilizzarla per crittografare/decrittografare la colonna della chiave casuale, ma non sono sicuro se ciò aumenterebbe o diminuirebbe la sicurezza )
  • Ogni documento che deve essere crittografato viene crittografato con la chiave casuale per quell'utente e quindi archiviato su disco.
  • I documenti vengono archiviati con autorizzazioni minime nel file system.

I vantaggi di questo approccio sono:
1. La chiave casuale è crittografata nel database. Quindi hai ancora la sicurezza aggiuntiva del server di database, in combinazione con la colonna crittografata.2. I documenti vengono archiviati con chiavi diverse, se l'attaccante si impossessa di una chiave, solo una parte dei documenti viene compromessa.

Tuttavia:
Se l'attaccante si impossessa della password principale e ha accesso in lettura alla tabella utente, l'intero sistema è, ancora una volta, danneggiato.