Sono uno sviluppatore di software, considerando la possibilità di scrivere un sistema personalizzato per l'archiviazione del numero di carta di credito. Il nostro intento è di essere pienamente conformi alle PCI (Payment Card Industry). Sto lavorando con un piccolo imprenditore che affitta le cose e vorrebbe tenere una carta di credito in archivio per garantire la restituzione dell'oggetto noleggiato. Se un cliente non riesce a restituire un articolo in tempo, viene addebitato il costo per il contratto di noleggio firmato. Le informazioni sulla carta di credito vengono eliminate dopo il reso della merce.
Siamo consapevoli del fatto che alcuni processori di carte di credito, oltre alla normale elaborazione delle carte di credito che utilizziamo per i pagamenti del noleggio, offrono anche un servizio di STOCCAGGIO delle carte di credito. Memorizzano i numeri delle carte di credito e forniscono un token che rappresenta quella carta in deposito. (ad esempio Paypal, Stripe) Il titolare di questo business ha già assunto un impegno con un processore di carte di credito che NON offre quel servizio. Cambiare il processore della carta di credito su Paypal o Stripe non sembra essere un'opzione. Abbiamo anche studiato i servizi di archiviazione della carta di credito (utilizzando token) e non funzionerà neanche. $ 1300 / mese per memorizzare 500 carte è un po 'troppo costoso per questa piccola impresa.
Ho visto alcuni post importanti qui:
- Gestione delle chiavi di crittografia PCI
- Gestione delle chiavi di crittografia delle applicazioni Web
- Archiviazione sicura delle informazioni sensibili
Posso vedere che tutti e tre i principali provider di storage cloud (Amazon Web Services, Microsoft Azure e Google Cloud) sono conformi PCI DSS come un'infrastruttura.
Sto seriamente pensando di utilizzare uno di questi servizi come deposito per le informazioni della carta di credito. Ovviamente vogliamo essere pienamente conformi allo standard PCI DSS. So come scrivere app e server. So come aggiungere un robusto sistema di login. So come utilizzare le librerie di crittografia pubblicate , per la crittografia lato server. So come creare un MongoDB su un server separato ospitato in uno di questi servizi cloud. So come comunicare con il server tramite https. Quello di cui non sono chiaro è l'intera questione di archiviazione delle chiavi.
Dal primo elemento collegato sopra:
The encryption key (EK) you use to encrypt the data, should be itself encrypted by a key encrypting key (KEK). The encrypted EK should be stored in a protected place - this can be a file, a registry key, whatever - the important thing is restricting access to it, to the appserver's user only.
Sono un po 'confuso da quella descrizione. Ho pensato che tutto è andato a tecnica di codifica a chiave pubblica / chiave privata. Presumo che nel riferimento sopra, la chiave di crittografia di cui sopra è in realtà la chiave privata? O sto mescolando erroneamente gli algoritmi qui?
Avevo presunto che stessimo usando un algoritmo a chiave pubblica / chiave privata. Suppongo che includerò la chiave pubblica all'interno del mio codice server. Il mio intento è di memorizzare la chiave privata completamente offline in una posizione diversa (e sì, soddisfando i requisiti per PCI-DSS 3.5.3). La mia tendenza è quella di richiedere una copia / incolla personalizzata della chiave privata per la decodifica / il recupero della carta di credito. Questo è un processo piuttosto raro e probabilmente verrà eseguito solo dal proprietario dell'attività commerciale.
Ma forse sto sbagliando tutto questo. Cos'è l'algoritmo "approvato" PCI-DSS per la codifica individuale delle carte di credito? Da quello che vedo, i requisiti specifici sono indicati come:
The intent of strong cryptography (as defined in the PCI DSS and PA-DSS Glossary of Terms, Abbreviations, and Acronyms) is that the encryption be based on an industry-tested and accepted algorithm (not a proprietary or "homegrown" algorithm) with strong cryptographic keys...
Ecco le mie domande.
-
Quali algoritmi per la codifica di chiave pubblica / privata sono attualmente consigliati per soddisfare lo standard PCI-DSS qui?
-
Se la codifica della chiave pubblica / privata non è consigliata un'altra tecnica di crittografia?
-
Sto facendo questo correttamente?
-
Altri commenti o lezioni apprese qui?
Grazie mille.