2011-11-19 2 views
6

Sto memorizzando password e dati personali in un database. Qual è il metodo più efficace per crittografare questi valori per la protezione.Best + Metodo di crittografia più forte per i database

Inoltre, qual è il metodo migliore per la crittografia per informazioni di carta di credito in un database? O dovrei usare qualcos'altro per memorizzare le informazioni della carta di credito, non un database mysql ??

Grazie.

+7

Non memorizzare mai le informazioni della carta di credito. –

+3

@ShaktiSingh quindi come fanno le aziende come Amazon e Like a memorizzarle? –

+2

leggi: http://stackoverflow.com/questions/3002189/best-practices-to-store-creditcard-information-into-database –

risposta

11

Penso che archiviare qualsiasi cosa in SQL va bene, basta crittografarlo prima. Se è necessario identificare i dati in qualche modo (ad esempio con una chiave univoca per la voce DB) creare una stringa generata in modo casuale o un hash sicuro e archiviarla insieme ai dati crittografati.

Probabilmente è meglio attenersi a qualcosa che è provato e testato. Dal momento che si tratta di un DB (presumibilmente per un sistema di fatturazione) sarebbe bene avere un recupero veloce. Quindi, evita la crittografia asimmetrica, che devi utilizzare solo per crittografare le chiavi simmetriche se devi condividerle con qualcuno.

Alcune resistenze particolari (ad esempio 256 bit) di AES dovrebbero andare bene. Sarei felice di sapere i miei dettagli personali che ci siamo assicurati in questo modo.

In termini di memorizzazione delle password degli utenti, è prassi comune generare un salt (una stringa casuale) e quindi eseguire l'hash della password utente combinata con questo sale utilizzando un algoritmo hash sicuro (RIPEMD, SHA1, MD5).

Questo impedisce un cracker dizionario pre-calcolate da recuperare le passwods poiché deve gestire tutti i sali casuali pure.

Non crittografare le password, solo cancellarle. Non è necessario essere in grado di recuperare la password in chiaro, ma rende vulnerabile il sistema solo tramite questa chiave master. Non crittografare i dati degli utenti con chiavi che gli utenti possono scegliere, renderà i dati irrecuperabili in caso di perdita delle chiavi. Fornire metodi comuni per consentire agli utenti di recuperare l'accesso al proprio account nel caso in cui perdano la password.

Se avete veramente bisogno di nascondere nomi utente, forse si dovrebbe chiedere se stessi circa l'architettura di dati che si sta utilizzando. In generale, i dati personali e, in particolare, i dati di fatturazione non dovrebbero essere archiviati in bella vista, dovrebbero essere accessibili solo da parti fidate. Queste parti attendibili avranno bisogno di visualizzare il contenuto di nomi utente e informazioni, quindi la crittografia probabilmente non è necessaria.

Se si stanno trasmettendo informazioni utente su Internet aperto, crittografarlo.

Se siete preoccupati per la sicurezza di informazioni utente sul DB server, forse prendere in considerazione di lavoro con una nuvola o dati hosting provider che possono fornire con una certa sicurezza fisica aggiuntiva per i server.

La crittografia è solo una parte di una solida politica di sicurezza. Concentrati soprattutto sull'elemento umano di creare un ambiente sicuro in cui condurre il tuo business. Distribuire l'accesso a risorse sensibili sulla base della necessità di conoscere. Assicurati di organizzare i backup o alcuni metodi di recupero dei dati nel caso in cui tutte le chiavi andassero perse.

+1

+1 Bella risposta approfondita –

+0

[nope] (http://stackoverflow.com/users/1283048/nope) 's commento: "' Quindi stare lontano dalla crittografia asimmetrica - che si dovrebbe usare solo per crittografare le chiavi simmetriche se devi condividerli con qualcuno. ' - Questo non ha senso - perché qualcuno dovrebbe cifrare KEYS ad eccezione di TLS? Ovviamente la crittografia asimmetrica ha i suoi (molti) usi - in effetti, si dovrebbero evitare i metodi di crittografia simmetrica in quanto sono vulnerabili dalla progettazione SE il transport-stream non è criptato conoscere la chiave pubblica con crittografia asimmetrica non garantisce capacità di decifrazione. " –

+0

@PeterO. In realtà ha senso ... il metodo di crittografia a chiave pubblica lento e asimmetrico viene utilizzato per crittografare lo scambio delle chiavi simmetriche. A sua volta, la crittografia rapida e simmetrica della chiave viene utilizzata per crittografare il flusso di dati. – spamsink

1

Nota che la crittografia non è l'unica cosa che devi preoccuparsi quando la memorizzazione dei dati delle carte di credito. Vi sono anche severi requisiti di controllo e una serie di altri dubbi (vedi lo PCI website se non si è familiari).

Mentre probabilmente si può riuscire a ottenere la conformità PCI, facendo questo se non sei molto familiare con le misure di sicurezza necessarie può lasciare aperta alle passività enormi.Se il tuo sistema viene violato o ti risulta non conforme, dovrai affrontare multe gravi.

Verificare fornitori di pagamento come Authorize.net per soluzioni alternative. Nello specifico, vale la pena esaminare il loro prodotto Customer Information Manager poiché memorizzerà per voi i dati protetti come le informazioni sulla carta di credito sui loro server.