Sto scrivendo un'applicazione desktop in cui sto usando PBKDF2 per generare una chiave di crittografia per crittografare AES-128 il file di configurazione. Il file di configurazione contiene una chiave criptata che è stata utilizzata per crittografare i dati per il programma. L'utente ha già inserito quella chiave come fornita da noi durante l'installazione. L'idea è che entrano una volta nella chiave criptata e poi possono usare una password più facile da ricordare. Fin qui tutto bene.
Quindi, quando l'utente carica il programma, inserisce la password. Abbiamo usato la password per rigenerare la chiave PBKDF2 e decrittografare il file di configurazione.
Ora, come posso verificare facilmente che l'utente abbia inserito la password corretta? Naturalmente, se hanno inserito una password errata, la decrittografia dei dati non funzionerà. Ma mi piacerebbe rifiutare la password immediatamente piuttosto che lasciare che il programma si carichi e quindi l'utente riceve una finestra di messaggio di errore di decrittografia.
Ho letto che TrueCrypt codifica una costante conosciuta, la stringa "TRUE" e quindi verifica che la chiave basata su password crittografi "TRUE" sullo stesso testo cifrato. Ho anche letto sulla generazione di un hash HMAC-SHA per verificare i dati crittografati. Ma che non si vuole usare la stessa chiave per il MAC e per crittografare i dati. Per questo motivo, mi piace il metodo TrueCrypt (non devo tracciare due serie di Sali e IV). Non mi interessa davvero se un utente malintenzionato può caricare il programma. Non saranno in grado di leggere alcun dato. Non voglio che l'utente entri con la password sbagliata e penso che il programma non sia sicuro.
Qual è il modo giusto per farlo?