Decrittografia del DEK usando KEK in standard PCI, che sono separati dai server:
Diciamo per esempio che abbiamo server1 e server2
Server1:
- È negli Stati Uniti orientali, chiamato server delle applicazioni.
- Ha ospitato il mio sito web e il mio database.
- Nel mio codice sto usando la crittografia AES a 256 bit.
- Archivia i dati dei titolari di carta crittografati nel DB.
- Questo server contiene DEK crittografato (chiave di crittografia dei dati).
Server2:
- È in WestUS, chiamato Key Server.
- Contiene solo la chiave di crittografia chiave (KEK) per decrittografare il DEK.
- Tutte le porte sono bocked accettano solo la richiesta dal server1.
Ho due processi nella mia mente per l'implementazione. Ma è appena diventato confuso quale potrebbe essere un modo migliore:
Process 1:
Il codice sottostante è in esecuzione in server1 :
public string Data()
{
AES objaes =new AES();
objaes.key= getkey(EncryptedDEK);
//decrypt the values
}
public string getkey(string EncryptedDEK)
{
//connect to the server 2 and get the DEK
request(EncryptedDEK);
}
The below function access the server 2 for decrypting encrypted DEK:
public string request(string encryptedDEK)
{
//check the request
//decrypt the encrypted DEK with KEK
//return the Decrypted DEK
}
Nel processo precedente , l'applicazione tocca il server delle chiavi . Non mi piaceva che la mia applicazione toccasse il server delle chiavi. Ho bisogno che il mio server delle chiavi sia molto sicuro e protegga anche da persone malevole.
Process 2:
Application requests Card number to server 1 --> Server 1 (Encrypted DEK) --> Server 1 sends Encrypted DEK to the Server2 through SQL SERVER 2012 -->Server 2 decrypts DEK and sends it back to the Server 1 --> server 1 responses to the application with the decrypted data
- Tramite sql server posso decifrare il DEK crittografato collegandoti a il Server 2 dal Server 1?
- Quale tra i due processi funziona correttamente o rientra in PCI-DSS norme?
- Esiste un modo migliore rispetto ai due processi precedenti?