Il mio obiettivo è riuscire a crittografare i dati in modo che nessuno possa utilizzarli se è stato rubato.
Dati utente
- quello che verrà crittografato
- Può essere qualsiasi tipo di dati
Chiave di crittografia dei dati
- la chiave per crittografare e decrittografare i dati dell'utente
- Archiviazione crittografata
- non cambia
- unico per utente
- generato al momento della registrazione
- ha due copie crittografate:
- 1st è crittografato e decrittografato utilizzando la password non criptata dell'utente
- 2nd è crittografato e decrittografato usando l'e-mail dell'utente
Password utente
- utilizzato per crittografare e decrittografare la prima copia della chiave di crittografia dei dati
- memorizzato crittografato con bcrypt
Email dell'utente
- utilizzato per crittografare e decrittografare la seconda copia della chiave di crittografia dei dati
- ha una copia separata archiviata crittografata usando bcrypt. L'altra copia faceva parte dei dati utente
[LOGIN]
Quando l'utente esegue l'accesso, la password inviata verrà verificata utilizzando la password crittografata memorizzata. Se valido, la sua chiave di crittografia dei dati verrà decodificata utilizzando la stessa password inviata. Ora è possibile utilizzare la chiave di crittografia dei dati per crittografare e decrittografare i dati dell'utente.
[CHANGE PASSWORD]
L'utente fornisce la sua vecchia password. Questo verrà utilizzato per decodificare la chiave di crittografia dei dati che verrà crittografata utilizzando la nuova password.
[FORGOT PASSWORD]
L'utente è tenuto a fornire il proprio nome utente ed e-mail. Questo nome utente verrà utilizzato per trovare l'e-mail crittografata memorizzata separatamente che verrà utilizzata per verificare l'e-mail fornita. Se il nome utente e l'e-mail sono corretti, l'e-mail fornita riceverà una chiave di ripristino. Il tasto di reset consentirà all'utente di fornire una nuova password. La seconda chiave di crittografia dei dati verrà decodificata utilizzando l'e-mail e verrà crittografata utilizzando la nuova password. Il valore risultante sostituirà la 1a chiave di crittografia dei dati.
Mi chiedo se questo è uno schema praticabile. Non ho ancora cercato un approccio simile. Se ne conosci uno o ne hai uno migliore, fammelo sapere.