Dove conservare una chiave di crittografia lato server?

95

Ho alcuni dati che sono simmetricamente crittografati con una singola chiave nel mio database. Piuttosto che codificarlo nel mio codice, cerco un modo più sicuro di memorizzare la chiave di crittografia. Dove posso conservarlo in sicurezza?

    
posta Radek 01.03.2012 - 18:19
fonte

3 risposte

106

Ecco le tue possibilità:

  1. Utilizza un modulo di sicurezza hardware esterno. C'è un intera industria di prodotti progettato per scaricare le operazioni sensibili alla sicurezza su dispositivi esterni. Ciò non risolve il problema tanto quanto lo sposta , ma lo trasferisce al dispositivo che è molto più sicuro, quindi nel complesso è una vittoria di sicurezza. Se stai facendo qualcosa di high-stakes, questo è quasi certamente un fattore nella tua soluzione.

  2. Collega la chiave di crittografia all'hardware. I chip TPM sono utili, così come i token di sicurezza USB (non le unità flash, però). In questo caso, crypto funziona solo su quel particolare hardware, ma non è altrimenti limitato. È un po 'come la versione per bambini della HSM menzionata sopra. Google ha recentemente annunciato Project Vault fa un ulteriore passo avanti rendendo HSM ad alta larghezza di banda incorporabile anche nei dispositivi consumer più piccoli.

  3. Collega la chiave di crittografia al tuo accesso amministratore (ad esempio, crittografa la chiave di crittografia con il tuo accesso amministratore). Questo è solo marginalmente utile in quanto richiede l'accesso per crittografare / decrittografare qualsiasi cosa. Ma sul lato positivo, nessuno può crittografare / decrittografare nulla a meno che non si sia connessi (ad esempio un maggiore controllo). Gran parte della memoria sicura di Windows funziona in questo modo.

  4. Digitare la chiave di crittografia all'avvio, memorizzarla nella memoria. Questa funzione protegge dagli attacchi offline (a meno che non catturino la chiave dalla RAM, cosa più difficile da fare). Simile all'opzione sopra, ma anche diversa. Tuttavia, il server si avvia in uno stato insolito, richiedendo la fornitura manuale della chiave prima che il lavoro possa essere eseguito.

  5. Archivia la chiave su un altro server. E.g. posizionare la chiave sul server Web e i dati crittografati sul server del database. Questo ti protegge in una certa misura perché qualcuno dovrebbe sapere per prendere la chiave e il database, e dovrebbero anche avere accesso ad entrambi i server. Non incredibilmente sicuro, ma comunque un'opzione estremamente popolare. La maggior parte delle persone che pensano di farlo lo fanno giusto in questo modo. Se stai pensando di farlo, considera anche una delle prime due opzioni di cui sopra.

  6. Salva la chiave altrove sullo stesso server. aggiunge sicurezza marginale, ma non molto. Le operazioni più piccole lo fanno - non dovrebbero, ma lo fanno. In genere perché hanno solo un server e viene eseguito in qualche nuvola da qualche parte. È come registrare una chiave per la porta invece di lasciarla nella serratura; garantito per fermare il più incompetente degli attaccanti.

  7. Archivia la chiave nel database. Ora non ci stai nemmeno provando. Eppure, un'opzione deprimamente popolare.

risposta data 01.03.2012 - 19:40
fonte
3

Mi rendo conto che a questa risposta è stata data qualche tempo fa, ma per dare un paio di esempi alla buona risposta di Tyler: Ho intenzione di usare il suo numero 1 per legare una password a un account di servizio e utilizzare un cmdlet di PowerShell per afferrarlo. In questo modo gli script non hanno bisogno di essere così pesantemente modificati. La password dell'account di servizio si trova in Active Directory e dovrebbe essere prima compromessa. Questo funziona per me poiché lo uso su due server. Per il suo n. 4, per soddisfare la nostra conformità, siamo stati in grado di archiviare una chiave in testo normale su un altro server con memoria esterna perché tale archivio era crittografato e l'accesso ad esso era limitato. Come dice Tyler, quest'ultimo non sembra così sicuro, ma è stato abbastanza buono anche per un duro assessore.

    
risposta data 29.01.2013 - 02:20
fonte
2

Puoi creare un'architettura a due livelli per la gestione delle chiavi.

  1. Una chiave per crittografare i dati a riposo crittografando i tablespace o basato sulla colonna.
  2. Chiave master per sbloccare 1.

per le tue chiavi principali utilizza una delle soluzioni di gestione delle chiavi stabilite come:

  • Amazon AWS KMS
  • Oracle Vault
  • Microsoft MKS.
  • o quelli open source

Tieni presente che il tuo gestore delle chiavi deve supportare una disponibilità uguale o superiore all'infrastruttura in cui vengono utilizzate le chiavi gestite.

    
risposta data 24.08.2017 - 15:36
fonte

Leggi altre domande sui tag