Abbiamo avuto un'esperienza simile a te. Avevamo bisogno di una soluzione di gestione delle chiavi per la conformità PCI e tutti i prodotti commerciali che abbiamo visto erano troppo costosi. Alcuni manager chiave costano più del nostro prodotto per i piccoli clienti!
Abbiamo finito per creare un gestore di chiavi basato su software. Abbiamo creato requisiti e gli sviluppatori offshore lo hanno codificato. Un tempo stavano cercando altri clienti per usarlo. Non so se lo sono ancora o no.
Lasciatemi spiegare le opzioni che abbiamo esplorato. La prima cosa da ricordare è che la conformità e la sicurezza PCI sono cose diverse, si può essere conformi PCI e non molto sicuri.
Opzione 0: assegnare una chiave per colonna DB e memorizzare le chiavi in un file DLL. I collegamenti dell'applicazione nel file DLL consentono di accedere alle chiavi per crittografare e decrittografare i dati. Nessuno conosce le chiavi Per la sostituzione periodica delle chiavi, si crea una nuova DLL con nuove chiavi, si riduce il tempo necessario a decrittografare tutti i dati utilizzando le vecchie chiavi e reencrypt i dati utilizzando nuove chiavi. Quindi riavvia l'applicazione utilizzando la nuova DLL con nuove chiavi. (Nota se hai mai pensato di ripristinare un backup del DB, devi conservare le vecchie chiavi.)
La prima volta che ho sentito parlare dell'opzione 0 mi ha sorpreso che fosse conforme PCI. Non utilizzare l'opzione 0.
modi per migliorare Opzione 0.
Se si dispone di un HSM nel proprio ambiente, utilizzare la HSM per crittografare le chiavi nel file DLL. All'avvio dell'applicazione decodificherà le chiavi utilizzando HSM. Se si desidera maggiore sicurezza, decrittografare le chiavi ogni volta che sono necessarie.
Una volta crittografate le chiavi, è possibile salvarle in una tabella DB. Se si assegna a ogni chiave (vecchia e nuova) un id-id intero piccolo, è possibile memorizzare l'id chiave con i dati crittografati. Ciò consente di eseguire la sostituzione incrementale delle chiavi ed evitare tempi morti.
Avendo le chiavi in chiaro nella memoria in molti processi, aumenta l'esposizione a un attacco di scansione della memoria che trova i tasti. È possibile creare un nuovo processo che è l'unico processo che decrittografa le chiavi. Le tue applicazioni parlano di questo nuovo processo per crittografare e decrittografare i dati. Questo nuovo processo dovrebbe essere su una scatola con una piccola "superficie" per proteggerlo. Poiché i dati sensibili stanno andando oltre la rete ora, queste comunicazioni dovrebbero essere crittografate. SSL è una buona opzione.
fonte
2012-12-09 18:47:03
Si tratta di un'applicazione desktop o web/mobile? – kgilpin