Ho bisogno di un modo sicuro per memorizzare una password in un database, ma ho anche bisogno di un modo per riavere la password originale. Certo che se così non fosse, lo farei semplicemente. Per ovviare a questo problema, ho trovato la seguente soluzione, ma mi piacerebbe sapere se è sicuro.
Ho una chiave segreta sul server e un'altra chiave segreta che viene salvata nell'applicazione client. Quest'ultimo è diverso per ogni utente e una nuova chiave viene generata ogni volta che un utente effettua l'accesso.
L'unica volta che il server avrà entrambe le chiavi è quando un utente fa una richiesta e il server deve ottenere la password non elaborata. Ciò significa che quando il server viene violato le password sono ancora sicure, dal momento che hai solo metà della chiave totale, e dal momento che sto usando AES 256, hai ancora bisogno di rompere 128 bit.
Va bene o mi manca qualcosa di importante?
Modifica: ho bisogno di utilizzare la password del client nelle chiamate API ai servizi esterni