Rembering password sul client (non database) [chiuso]

1

Sto cercando di implementare la capacità del mio programma (C ++) di ricordare una combinazione utente / password, quindi l'utente non ha bisogno di inserirla nuovamente.

Esiste un modo sicuro per memorizzare il mio programma? Preferibilmente cross platform pure.

    
posta Catprog 21.11.2015 - 10:00
fonte

2 risposte

0

Aggiorna il problema. L'obiettivo dell'esperienza utente - consentire all'utente di autenticare senza credenziali - è il vero obiettivo. Questo tipo di obiettivo di sicurezza non è adatto agli endpoint. Esistono soluzioni alternative più sicure rispetto al salvataggio di nome utente e password, uno dei quali suggerirò ora. Ricorda che questo funziona solo se controlli il server o puoi implementare un intermediario come un proxy.

Crea un token a tempo limitato sul server. Associarlo con l'utente. Quando l'utente si connette, il programma fornisce il token se presente e autenticato. In caso contrario, all'utente verranno richieste le credenziali.

Con un intermediario memorizzerai le credenziali sull'intermedio digitato dal token in un formato crittografato e usi un servizio di crittografia separato (forse qualcosa come Amazon KMS) per decrittografarlo.

Anche in questo caso, se hai solo il controllo laterale del client, l'opzione migliore che hai è simile a quella sopra usando un servizio di crittografia dal client, ma poi sei soggetto all'attacco dell'endpoint a @SteffenUlrich che ha già identificato nella sua risposta. Esistono API che avvolgono in modo trasparente soluzioni di gestione delle chiavi specifiche della piattaforma come gnome-keyring, KeyChain di OS X e Windows Credential Vault sotto un'API comune. Ad esempio questo modulo portachiavi Python lo fa:

link

A quel punto le credenziali sono sicure come qualsiasi altra cosa che il sistema operativo sta gestendo.

    
risposta data 21.11.2015 - 17:28
fonte
1

Is there a secure way for my program to store this? Preferably cross platform as well.

Assicurati contro quale tipo di attacco?

  • Contro un utente malintenzionato remoto senza accesso alla macchina: probabilmente semplicemente salvandolo come un file lo farà, anche se in pratica probabilmente lo farai meno ovvio (vedi punto successivo).
  • Contro un utente malintenzionato con accesso alla macchina: non esiste un modo sicuro al 100%, perché se il tuo programma può accedere al segreto l'autore dell'attacco (con almeno le stesse autorizzazioni) può fare lo stesso. Potresti renderlo più difficile salvando il file in posti non ovvi, nascondendolo in contenuti innocenti (come con la steganografia), nascondendo le informazioni, crittografandole (anche se il segreto deve essere accessibile dall'applicazione e quindi sarà accessibile anche da un attaccante determinato).
risposta data 21.11.2015 - 10:18
fonte

Leggi altre domande sui tag