Metodi sicuri per archiviare le password senza eseguire il hashing di esse

4

Sto lavorando su un client di posta elettronica per Windows e per inviare email, la mia applicazione deve avere l'indirizzo email e la password di tale indirizzo email. Quando l'utente fornisce la sua password, la memorizzo crittografata. Quando invio una email, passo la password decrittografata. Ma c'è un problema qui: se ho appena crittografato una password, qualcuno può facilmente decifrare la password se hanno la chiave e questa chiave è facile da ottenere quando si decompone la mia applicazione e si trova la chiave. Ma non posso anche cancellare la password perché devo passare la password in testo normale e non voglio annoiare i miei utenti chiedendo la password ogni volta che avviano la mia applicazione.

Quindi, come posso memorizzare la password in modo sicuro senza cancellarla?

Nota: ho letto questa domanda: Mantenere un utente le password, ma non le hash , ma è per un'applicazione web e ho un'applicazione desktop, quindi non posso usare un server.

    
posta ProgramFOX 17.03.2014 - 17:58
fonte

1 risposta

11

Se stai parlando di un'applicazione desktop Windows, dovresti utilizzare CryptProtectData API, che memorizza le credenziali in aree di memoria protette e le crittografa con una chiave che fa parte del profilo utente. Questo è il meccanismo di protezione standard per le applicazioni Windows.

Su Linux puoi guardare usando il portachiavi GNOME o il portafoglio KDE, e OS X ha anche un set di API per il suo portachiavi. Ciò garantirebbe che le impostazioni di sicurezza per il portachiavi dell'utente avessero il controllo prevalente: possono decidere quante volte devono reinserire la propria chiave principale.

Qualsiasi procedura tu scelga di offuscare le password è un esercizio di futilità contro qualsiasi attaccante semi-determinato, quindi al massimo stai creando un'illusione di sicurezza. Il mio suggerimento è di includere un'impostazione che dice "ricorda la mia password", ma avverti gli utenti che la password verrà archiviata localmente in un formato reversibile che offre poca sicurezza, in modo che siano a conoscenza del problema.

    
risposta data 17.03.2014 - 18:08
fonte

Leggi altre domande sui tag