Recentemente ho ereditato un sistema di archiviazione chiavi integrato. La società memorizza i dati della carta di credito in due server di database crittografati con AES. I tasti risiedono in un sistema separato che si trova nella propria DMZ. Quando un server Web deve crittografare alcuni dati, il server delle chiavi viene chiamato tramite https e richiede una chiave. Restituisce una chiave e un numero di serie codificato. Il server delle app memorizza le informazioni crittografate e il numero di serie, quindi scarta la chiave. Quando i dati devono essere decrittografati, il numero di serie viene inviato al server delle chiavi che restituisce la chiave utilizzata per quel record.
L'utente che lo ha sviluppato non ha utilizzato i pool principali. Ogni chiave è un valore casuale unico. Il database delle chiavi viene crittografato utilizzando una chiave generata da 2 password fornite da 2 custodi. Da quello che sto vedendo, anche se avessi ottenuto i tasti, dovresti essere in grado di decodificare i numeri seriali per poterli usare, e quindi ogni chiave andrebbe bene solo per un record. Ha anche scritto un'estensione php in c che ha le funzioni di codifica / decodifica.
Questo sembra essere un buon progetto. Chiunque abbia esperienza con questo tipo di cose che possono dare un'opinione su questo metodo e su eventuali buchi o miglioramenti.