Mi è venuta in mente una procedura di memorizzazione dei dettagli dell'utente che era, all'inizio, basata sulla letteratura sulla sicurezza attuale, ma poi ho continuato a scrivere senza fare davvero tutte le verifiche incrociate che avrei dovuto fare.
-
Nome utente, password e dettagli personali inseriti.
-
Viene generata una chiave simmetrica casuale a 128 bit.
-
Vengono generati due vettori di inizializzazione casuali.
-
L'array in cui sono archiviati i dettagli personali (nome, email, ecc.) è crittografato con AES-128 utilizzando la chiave appena generata e il primo vettore di inizializzazione.
-
La stessa chiave simmetrica viene quindi crittografata con AES-128 - utilizzando la password di testo semplice della password dell'utente come chiave e il secondo vettore di inizializzazione.
-
La nuova chiave crittografata, vettore di inizializzazione 1 & 2 e l'array crittografato di dati personali viene archiviato in un oggetto che viene serializzato in un file sotto un ID, un hash del nome utente dell'utente.
-
Quando il programma recupera i dettagli - blocca il nome utente dell'utente corrente, cerca l'hash nel file "users" (l'ID), recupera l'oggetto ad esso associato, decodifica la chiave e utilizza la chiave decrittografata per decifrare i dati dell'utente.
È grottescamente insicuro? Mi manca qualcosa di ovvio?