Memorizza password hash e dati crittografati con questa password in db?

3

Attualmente sto sviluppando un'applicazione django.

Ho bisogno di memorizzare i dati dell'utente. Questi dati non devono essere disponibili a nessun altro utente o amministratore

Ho creato un sistema di account utente dedicato (senza usare dj auth). (Forse potrei modificarlo, ma questo non è l'argomento qui ..)

La password utente viene sottoposta a hash con passlib.

I dati dell'utente vengono crittografati utilizzando AES e la password utente (non con hash: p) come chiave segreta.

Mi chiedo:

  • È sicuro mantenere la password con hash e i dati crittografati, quando la crittografia ha utilizzato questa password come chiave segreta?

  • Che cosa posso fare con AES IV utilizzato per crittografare i dati utente? Generalo quando creo l'utente e tienilo nella tabella utente, accanto alla password con hash?

posta Obscur Moirage 25.08.2013 - 15:42
fonte

1 risposta

4

Quando esegui l'hashing della password con passlib, assicurati di utilizzare passlib.hash.pbkdf2_sha512 . Puoi leggere ulteriori informazioni al riguardo qui .

  1. Sì, questo è sicuro, in realtà è necessario farlo per verificare la password prima di provare a decrittografare i dati.
  2. Il punto della IV è che anche quando viene riutilizzata la stessa chiave e il medesimo testo in chiaro, verrà prodotto un testo cifrato differente. Puoi guardarlo un po 'come un salato per una password. Devi solo assicurarti che sia univoco e che quando si esegue nuovamente la crittografia dei dati (se i dati sono stati modificati) si genera un nuovo IV.

A seconda delle dimensioni dei dati è possibile creare una chiave di decrittografia lunga e complessa, che è a sua volta crittografata con AES utilizzando la password dell'utente. Questo è spesso fatto in quanto l'utente potrebbe decidere di cambiare la sua password. Ciò comporterebbe la necessità di ricodificare tutti i dati con la nuova password. Quindi si utilizza una chiave di decrittazione che è a sua volta crittografata con la password dell'utente. Nel caso in cui un utente decida di cambiare la sua password, tutto ciò che si dovrà fare è ricodificare la chiave. Ora, se stai memorizzando solo un po 'di testo, questo potrebbe essere eccessivo, tuttavia, se dovessi memorizzare grandi quantità di dati (megabyte), allora potresti optare per questa strategia.

    
risposta data 25.08.2013 - 16:04
fonte

Leggi altre domande sui tag