Versione breve: voglio la casella di controllo "Accedi all'avvio del programma" come in Skype , per esempio, ma non sai come proteggere le credenziali salvate in modo sicuro.
Sto scrivendo un'applicazione client che, prima di fare richieste effettive al server, dovrebbe essere autorizzata dal server. L'autorizzazione è la seguente: l'utente riempie la finestra di accesso standard, i dati vengono inviati al server tramite HTTPS e, se è corretto, il server invia le credenziali.
Tuttavia, l'inserimento della password ogni volta disturba e impedisce l'avvio dell'applicazione all'avvio del sistema. Voglio crittografare quelle credenziali e salvarle su disco. Non sono riuscito a trovare la chiave di crittografia appropriata, tuttavia.
La chiave dovrebbe essere, ovviamente, specifica dell'utente (non a livello di sistema!) e ragionevolmente difficile da frodare.
Per ora uso solo hash di alcune informazioni e nome utente dell'HDD e ripiego all'hash dell'ambiente di processo, se la chiamata WinAPI fallisce (quanto è grave?).
Sto scrivendo per Windows usando C ++ / Qt, ma ogni raccomandazione è benvenuta. Grazie.
UPD1Ok, per essere chiaro:
-
Livello di crittografia richiesto è:
non puoi effettuare il login semplicemente copiando il filecredentials.dat
da un computer ad un altro (o una cartella utente ad un altro); - Mantenere la password protetta (che non è archiviata dall'applicazione) è responsabilità dell'utente.
- Voglio memorizzare non la password, ma token di accesso crittografato che è
user-id
epublic key
per crittografare le comunicazioni con il server.
Dalle tue risposte ho capito che il mio auth. il sistema non è a posto. Lo riconsidererò. E sì, ho accesso a entrambi, lato server e lato client.
Per ora, voglio determinare la chiave di crittografia unica per macchina e utente, che posso ottenere dal sistema operativo in fase di runtime per decodificare / codificare le credenziali (che è la risposta del server a email / password inserite dall'utente).