Domanda

Qualcuno ha esperienza pratica o un riferimento per uno schema che implementa uno schema di gestione delle chiavi che sia conforme al PCIDSS norma di sicurezza?

Ovviamente ci sono parecchie implementazioni in giro dato il numero di aziende conformi allo standard PCI DSS, ma cercare di trovarne i dettagli è difficile.Quando si arriva alla memorizzazione dei dati privati, la discussione normalmente si ferma su quale algoritmo di crittografia utilizzare.Dopodiché normalmente c'è una dichiarazione sulla memorizzazione appropriata della chiave privata, ma nessuna discussione sui modi pratici per farlo o su cose come cambiare periodicamente la chiave o fornire la chiave alle applicazioni, ecc.

Nello specifico mi interessano i requisiti delle sezioni 3.5 e 3.6 dello standard PCI DSS.

3.5.2 Conservare le chiavi crittografiche in modo sicuro nel minor numero di posizioni e forme possibili.

3.6.a Verificare l'esistenza di procedure di gestione delle chiavi utilizzate per la crittografia dei dati dei titolari di carta.Nota:Numerosi standard di settore per la gestione delle chiavi sono disponibili da varie risorse tra cui NIST, reperibile all'indirizzo http://csrc.nist.gov.

3.6.4 Verificare che le procedure di gestione delle chiavi siano implementate per richiedere modifiche periodiche delle chiavi almeno una volta all'anno.

Ho dato un'occhiata a Pubblicazioni crittografiche del NIST come suggerisce il documento sui requisiti PCI DSS, ma a parte le recenti note di a Workshop sulla gestione delle chiavi crittografiche non sembra esserci molto in termini di schemi o standard realmente implementabili.

Per quanto riguarda quello che sto cercando di fare, non è:

  1. Memorizza password + sali come hash unidirezionali per l'autenticazione,
  2. Scegli un potente algoritmo simmetrico per la crittografia dei dati,
  3. Evita innanzitutto di dover archiviare dati privati.
  4. Evita la necessità di gestire le chiavi con altri meccanismi:sicurezza fisica, sicurezza del database, draghi e maghi, ecc.

Sono tutte preoccupazioni valide ma in questo caso non sono la risposta.Gli aspetti pratici delle mie esigenze si trovano in una domanda SO diversa Modello di progettazione .Net per l'archiviazione e il recupero di dati sensibili per utente ma tutto si riduce alla gestione delle chiavi, quindi questa domanda più raffinata.

È stato utile?

Soluzione

Conosco il dolore che stai attraversando.Abbiamo faticato ad aggiornare un vecchio sistema EFT verso la conformità PCI.La gestione delle chiavi è stata sicuramente (dal mio punto di vista del software) la parte più impegnativa.

Penso di essermi imbattuto anche nel Raccomandazioni NIST per la gestione delle chiavi che Martin ha pubblicato e si è sentito incredibilmente frustrato dalla mancanza di esempi concreti.

ANSI X9.17 - Gestione delle chiavi degli istituti finanziari è probabilmente il più pertinente alle tue esigenze, con PCI-DSS.Buona fortuna a leggerlo, però, il documento è un'enorme raccolta di TLA che so di aver sicuramente faticato a leggere.(X9.17 viene aggiornato ogni anno e l'ultima versione è ora: NIST SP 800-57 Pt.1 Rev.4 )

Quando la frustrazione si è trasformata in disperazione, mi sono imbattuto in Il mulino della moneta elettronica che è un racconto di fantasia, con un buon numero di riferimenti tecnici rilevanti. Capitolo 17 discute X9.17 e può aiutare nella comprensione.

Da tutto questo materiale di riferimento ho progettato un sistema di gestione delle chiavi di cui il nostro revisore è stato soddisfatto.I documenti di progettazione sono piuttosto lunghi, ma in sintesi l'idea è che la chiave di crittografia dei dati sia protetta da una chiave di crittografia della chiave e che la chiave di crittografia della chiave sia archiviata in una scatola fisicamente separata, a sua volta protetta da una chiave principale.

La mia implementazione prevedeva di avere un'applicazione Key Server in esecuzione su una finestra Windows.Questa applicazione richiedeva l'immissione di due "chiavi master del server di chiavi" separate prima di poter essere utilizzata.Queste chiavi sarebbero note solo agli amministratori del server delle chiavi.Queste chiavi vengono combinate insieme per generare la chiave principale, che viene archiviata solo nella memoria protetta mentre l'applicazione è in esecuzione.L'applicazione può quindi generare automaticamente chiavi di crittografia della chiave crittograficamente avanzate, che vengono archiviate in forma crittografata utilizzando la chiave principale.

Le applicazioni che necessitano di crittografia richiederanno una chiave di crittografia chiave dal Key Server.La KEK viene utilizzata dall'applicazione per crittografare/decrittografare la chiave di crittografia dei dati, che può essere archiviata in modo sicuro con i dati dell'applicazione.

Buona fortuna.Spero che anche tu la trovi una sfida interessante!

Altri suggerimenti

Hai visto il NIST SP800-57, Raccomandazione per la gestione delle chiavi?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top