Perché questo non è un buon modo per memorizzare i dati della carta di credito? [chiuso]

-4

Perché la seguente tabella del database non è sicura? Quale metodo di crittografia è migliore per le carte di credito?

+--------------+-------------------------------+-----------+--------------+
| customer_id  | card_number                   | card_cvv  | card_expiry  |
+--------------+-------------------------------+-----------+--------------+
| 2315         | ODU2OS0xMjU0LTc4NTQtMzI2NQ==  | MjU4OQ==  | May 2018     |
+--------------+-------------------------------+-----------+--------------+
    
posta anonymous 11.08.2017 - 15:11
fonte

6 risposte

55

Ovviamente è codificato in base64. Se qualcuno ruba il tuo database, può solo decodificare i dati e avere tutte le carte di credito di ogni cliente. Potresti semplicemente archiviare come stringa e avere praticamente la stessa sicurezza, dato che stai usando solo più byte per ottenere lo stesso risultato.

Per conservare i dati della carta di credito, devi essere conforme alle regole PCI. E PCI proibisce esplicitamente di conservare il CVV. Se il tuo tavolo ha un campo per CVV, hai fallito. Se lo codifichi e lo memorizzi, hai fallito. Anche se lo cripti, hai fallito. CVV non deve mai essere memorizzato in alcun modo.

Per quanto riguarda il metodo di crittografia, leggi prima documentazione PCI . Costruire un deposito sicuro con carta di credito è un compito molto difficile e molto serio, quindi non tentare di farlo senza capire i metodi, i rischi e le attenuazioni corretti, o esporrai i tuoi clienti a perdite finanziarie e te stesso in contenzioso. / p>     

risposta data 11.08.2017 - 15:30
fonte
6

C'è di più nella memorizzazione dei numeri delle carte di credito rispetto alla semplice crittografia dei dati. Come sottolineato da ThoriumBR, i requisiti PCI dettano non solo quali informazioni possono essere archiviate, ma anche come devono essere protette, ma stabiliscono anche condizioni ambientali per i controlli che devono esistere su come vengono configurati i server che gestiscono i dati e come come i controlli fisici di accesso a loro.

La conformità per la memorizzazione dei numeri delle carte di credito è estremamente complicata e costosa. A meno che non si stia elaborando un numero molto elevato di transazioni, è molto più conveniente utilizzare un fornitore di gestione delle carte di credito esistente che gestirà la gestione delle informazioni della carta di credito e consegnerà un ID transazione sicuro (sostanzialmente una ricevuta) dopo aver gestito la transazione per te. Questi servizi costano di più per transazione, ma sono molto più economici dei costi associati alla creazione di una soluzione conforme e di un ambiente di hosting per gestire i numeri CC e altre informazioni sulle carte di pagamento.

    
risposta data 11.08.2017 - 16:48
fonte
2

Il numero è nascosto con base64.

Non sei sicuro di quale sia l'intenzione, ma non è molto meglio che mostrare il numero.

    
risposta data 11.08.2017 - 15:23
fonte
2

8569-1254-7854-3265

Come lo sapevo? Ho appena cercato un decodificatore Base64.

Secondo Wikipedia.

Base64 is a group of similar binary-to-text encoding schemes that represent binary data in an ASCII string format by translating it into a radix-64 representation. The term Base64 originates from a specific MIME content transfer encoding.

Base64 è una codifica utilizzata per le immagini. È necessario utilizzare la crittografia (ad esempio AES-256 o RSA-4096). Ad ogni modo, questa è la carta di credito.

Si tratta di dati personali molto gravi.

Le funzioni di hashing in un modo, il troncamento e la crittografia avanzata sono linee guida. Non si devono memorizzare dati di titolari di carta a meno che non sia assolutamente necessario. È necessario rispettare le leggi sulla protezione dei dati e gli standard delle carte di credito.

    
risposta data 11.08.2017 - 19:20
fonte
1

Oltre ad altre eccellenti risposte, vorrei menzionare principio di Kerckhoffs . Il principio di Kerckhoffs è riassunto in questa citazione:

A cryptographic system should be secure even if everything about the system, except the key, is public knowledge.

In questo caso, si presupponeva che gli autori di attacchi non sarebbero stati in grado di determinare se si è utilizzato base64 (che è not un algoritmo di crittografia) per codificare i dati. Le risposte sopra dimostrano che era banale per scoprire quell'informazione, e gli aggressori sono molto, molto più intelligenti di questo nella pratica. Dovresti sempre presumere che il tuo aggressore possa facilmente capire quali algoritmi hai usato per offuscare i dati. Se lo avessi fatto, ti saresti presto reso conto che chiunque può semplicemente decodificare i dati, dato che non è nemmeno coinvolta una chiave segreta.

Si noti che il passaggio a un algoritmo di crittografia reale è lungi dall'essere sufficiente per memorizzare le informazioni della carta di credito. Vedi altre risposte in dettaglio sugli standard molto pesanti per la protezione di tali dati (che vanno ben oltre i soli algoritmi e nelle politiche aziendali interne e nei comportamenti dei dipendenti e altro ancora).

    
risposta data 11.08.2017 - 22:38
fonte
0

Come già notato, l'8569-1254-7854-3265 non sembra un numero valido (non riescono a passare Luhn alg e le prime cifre non sono come il Bank Code (BIN) conosciuto - vedi collegamento ), quindi potrebbe essere effettivamente crittografato.

La memorizzazione del codice CVV in formato semplice o crittografato accanto al numero di serie non ha assolutamente senso.

    
risposta data 12.08.2017 - 03:35
fonte

Leggi altre domande sui tag