Come proteggere i dati dell'utente a riposo?

5

Voglio crittografare i campi nome utente, email e password nel database E crittografare i file utente a riposo. Come posso fare questo? Sono a conoscenza di software come Gazzang e dal momento che non vi è alcun costo pubblicato, posso solo immaginare che costerà migliaia di dollari ogni anno.

C'è una soluzione alternativa che posso costruire da sola O utilizzare un software che gira sul server in grado di crittografare i campi e i file utente?

Non sono sicuro che faccia la differenza, ma sto usando PHP / MYSQL e ho dei server cloud.

    
posta AAA 25.06.2012 - 19:28
fonte

2 risposte

5

Il metodo più semplice di crittografia su un server mysql è aes_encrypt () utilizzando una passphrase generata a caso.

Non devi crittografare le password degli utenti, le password devono sempre essere sottoposte a hash. Le password dovrebbero essere archiviate usando bcrypt o sha256.

    
risposta data 25.06.2012 - 20:20
fonte
3

Crittografia per i dati che devi decifrare: usa le variabili per impostare la chiave.

  • Non registrare le query che contengono input dell'utente, esse conterranno i dati che stai crittografando. Se devi loggarlo, non dare ai privilegi di lettura dell'utente del database il log
  • Non eseguire il database come utente privilegiato (ad es. sistema locale / root)
  • Archivia la chiave separatamente dall'applicazione PHP e crea un'istanza della variabile all'avvio del database
  • Cripta la chiave con un'altra chiave a cui solo la radice può accedere, openssl in bash è candidata a farlo. L'utente del database non deve avere accesso diretto alla chiave e alla chiave di crittografia della chiave.

Hash salati per i dati che devi solo verificare (password).

Salting è incredibilmente importante. Non riesco a sottolinearlo abbastanza. Usando un dispositivo relativamente economico (circa 2k) posso eseguire 100m hash al secondo nella maggior parte degli algos, un dispositivo di fascia più alta (~ 6k - principalmente usato per scopi industriali) Sono in grado di raggiungere più di 1,2 miliardi di hash al secondo (sha, md5, md4 ecc.) Se il tuo aggressore ha un FPGA, il patrimonio di migliaia di miliardi di supposizioni al secondo non è esagerato. Puoi visualizzare le statistiche qui

Usando John e il codice non ottimizzato, l'elenco Linkedin (hash senza sale) è stato indovinato @ ~ 70% utilizzando le regole di manomissione predefinite in meno di 24 ore ... Saltate i vostri Hash. Quando il tuo database è esposto, questo ti darà il tempo di informare i tuoi utenti di cambiare le loro password senza (necessariamente) comprometterne immediatamente l'accesso.

Non memorizzarlo se non ti serve.

So che questa non è direttamente la domanda, ma seriamente, è altrettanto importante. Supponendo che il tuo database sia compromesso a un certo punto, se non ha dati non può essere esposto.

Ultima: utilizza la sicurezza delle best practice per i database: convalida i tuoi dati, utilizza le stored procedure per l'elaborazione dei dati e controlla + verifica i log di accesso al database.

    
risposta data 25.06.2012 - 20:46
fonte

Leggi altre domande sui tag