Sto scrivendo un'applicazione di gestione password WPF per esercitarti nella programmazione, finora questo è lo schema che intendo utilizzare per memorizzare la password principale e la password del singolo sito:
Password principale:
- Genera un sale casuale
- Hash della password principale + sale con SHA256
- Memorizzato l'hash e salt in DB come testo.
Per ogni singola password del sito:
- Genera un sale casuale
- Hash master password + sale con SHA256
- Utilizza l'hash come chiave di crittografia AES256 per crittografare la password del sito.
- Archivia la password del sito crittografato come blob binario e il sale come testo nel database.
Ovviamente per farlo funzionare l'utente dovrà ridigitare la password principale ogni volta che vorrà decifrare una password del sito, o dovrò memorizzare la master password in memoria.
Ora alla mia domanda:
- Devo usare la stessa funzione di hash mentre eseguo il hashing della password principale e la creazione della chiave di crittografia, oppure dovrei usare 2 diverse funzioni di hash?
- Il modo in cui gestisco la singola password del sito ha senso?