Archiviazione di carte di credito fai-da-te (compatibile PCI-DSS)

5

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:

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.

    
posta zipzit 21.02.2017 - 13:21
fonte

2 risposte

5

Il PCI DSS non è esplicitamente chiaro su questo argomento. Il significato di memorizzazione sicura delle chiavi e gestione sicura delle chiavi è lasciato all'interpretazione della QSA. Potresti scoprire che un QSA considera il KEK privato come tutto ciò che deve essere protetto, e tratta gli EK come token. Oppure potresti trovare un QSA diverso che vede ogni singolo EK come necessario per essere protetto, anche se sono stati crittografati con un KEK. Abbiamo avuto entrambi i tipi di auditor e, francamente, ho pensato che il "più duro" dei due fosse più competente (anche se non ero d'accordo con la sua valutazione dei rischi).

Il problema più grande che vedo è che non stai prendendo in considerazione il costo di possedere questo sistema. Un sistema complesso come questo richiederà tempo e denaro per essere costruito. Richiederà agli auditor di fare un esame molto accurato di tutti gli angoli e le fessure dei sistemi, che richiederà anche molto tempo e denaro. E dovranno ripetere l'esame ogni anno.

Considera che secondo le regole attuali, se costruisci un sistema che viene violato, il ragazzo noleggiato sarà responsabile del 100% dei costi di tutte le frodi associate alla violazione. Ciò significa che se qualcuno ruba la carta di un milionario e gli addebita una Ferrari, è responsabile della perdita. Se qualcuno ruba le carte di 10 milionari e carica una Ferrari su ognuna di esse, è responsabile per l'intera perdita. I suoi avvocati, ovviamente, si gireranno immediatamente e verranno denunciati per aver costruito un sistema insicuro. E faranno causa alla QSA per incompetenza nel non dirgli che il tuo sistema casalingo era insicuro. Quindi il QSA deve addebitare abbastanza non solo per pagare il tempo speso per il controllo del sistema, ma anche alcune assicurazioni per coprire il rischio.

Sinceramente, il ragazzo in affitto sarebbe meglio se i suoi addetti alla reception facessero fotocopie di carte d'identità del cliente e le copie cadessero in una cassetta di sicurezza al sicuro; e mantenendo rotte le sue telecamere di sicurezza. Se un cliente non riesce a restituire un articolo, o restituisce un oggetto danneggiato e lo contesta, avrà le prove necessarie per portare l'affittuario in un tribunale per le controversie di modesta entità. È molto più economico che costruire un sistema compatibile con PCI DSS e mantenerlo. (Ed è proprio questo il punto del PCI DSS: il revisore deve identificare e spiegare i rischi, il titolare dell'azienda deve valutare attentamente i rischi e quindi fare scelte sagge.)

    
risposta data 21.02.2017 - 19:44
fonte
2

Bene, facendo riferimento al "Glossario dei termini, abbreviazioni e acronimi di PCI DSS e PA-DSS" possiamo vedere quanto segue elencato per "crittografia strong"

Strong Cryptography: Cryptography based on industry-tested and accepted algorithms, along with key lengths that provide a minimum of 112-bits of effective key strength and proper key-management practices. Cryptography is a method to protect data and includes both encryption (which is reversible) and hashing (which is “one way”; that is, not reversible). See Hashing.

At the time of publication, examples of industry-tested and accepted standards and algorithms include AES (128 bits and higher), TDES/TDEA (triple-length keys), RSA (2048 bits and higher), ECC (224 bits and higher), and DSA/D-H (2048/224 bits and higher). See the current version of NIST Special Publication 800-57 Part 1 (http://csrc.nist.gov/publications/) for more guidance on cryptographic key strengths and algorithms.

Note: The above examples are appropriate for persistent storage of cardholder data. The minimum cryptography requirements for transaction-based operations, as defined in PCI PIN and PTS, are more flexible as there are additional controls in place to reduce the level of exposure. It is recommended that all new implementations use a minimum of 128-bits of effective key strength.

In generale, puoi semplicemente utilizzare un algoritmo di crittografia simmetrica, crittografarlo e decifrarlo prima di usarlo, questo può essere fatto dal database.

Per rispondere "Sto facendo questo correttamente?" Direi di no Deve avere la tokenizzazione, renderà la sua vita più facile ed economica, avrà bisogno di essere pienamente conforme allo standard PCI DSS e dovrà fare autovalutazione ogni anno, che probabilmente non sarà conforme vista la sua riluttanza a fare la tokenizzazione perché gli piace il suo processore (quale processore non supporta la tokenizzazione in questo giorno ed età?). E con la tokenizzazione non devi preoccuparti di alcuna architettura crittografica poiché il token non deve essere protetto crittograficamente.

    
risposta data 21.02.2017 - 19:08
fonte

Leggi altre domande sui tag