Salva token di accesso all'avvio dell'applicazione sul computer

2

Ho bisogno di accedere all'applicazione desktop mentre avvio automatico sul server (come fa skype). Qual è la migliore pratica per salvare il token di autenticazione (password)? Dovrei usare qualcosa come la crittografia RSA (che in genere viene utilizzata per la crittografia .config delle stringhe di connessione nelle applicazioni ASP.NET)?

    
posta Anton Putau 15.04.2014 - 14:35
fonte

2 risposte

1

L'opzione di archiviazione generalmente più sicura disponibile su Windows è l'API di protezione dei dati di Windows (ampiamente nota con l'acronimo DPAPI). Questa è una delle opzioni per la gestione delle sezioni di file web.config crittografate che hai citato come esempio.

DPAPI offre una memoria crittografata specifica per utente e macchina per dati sensibili, quindi anche se i dati crittografati vengono rubati, non possono essere decifrati su un altro computer e anche se l'utente malintenzionato ha accesso al computer che ospita i dati crittografati, non può essere decodificato senza l'utente corretto che accede a Windows con la password corretta. Non è infallibile, ma è un meccanismo abbastanza strong e sarebbe quello che probabilmente sceglierei in questa situazione.

    
risposta data 30.10.2014 - 19:25
fonte
0

Stai sviluppando questo software?

Vorrei solo generare un token univoco memorizzato nel database come:

  • TokenId
  • UserId (o qualche entità a cui questo token si riferisce.)
  • TokenKey (che verrà utilizzato come identità per il pubblico.)
  • IsExpired
  • Ip (che è un hash come SHA512 quindi non espone l'IP dell'utente se compromesso).
  • createdOn
  • UsedOn

Ora, dobbiamo ridurre il rischio di furto di token.

Quindi, iniziamo con IP. Se l'IP non corrisponde ai proprietari di token, ti consigliamo di disabilitare il ladro di token perché non corrisponde all'IP del proprietario. O un approccio più aggressivo sarebbe quello di far scadere il token in quanto il computer deve essere stato compromesso per ottenere l'accesso a quel token. È possibile inviare altre informazioni, ad esempio una chiave basata su serie seriali hardware e così via, ma ovviamente è facile falsificare.

Se il token è scaduto, dovranno eseguire nuovamente l'autenticazione e ottenere un nuovo token.

Modifica per la memorizzazione locale delle password:

Oops, devo frainteso il tuo post. Quando ho letto il tuo post sui token delle password ho pensato che fosse quello che stavi cercando. La crittografia per una password è sempre un no-no. Utilizzare solo la crittografia quando si deve decrittografare i dati sensibili. Per le password, ti consigliamo di utilizzare hash come SHA512. Ci sono molti compromessi (dimensioni, velocità, ecc.) Sugli hash ma ci sono post che spiegano tutte le differenze.

Metodi per rubare l'hash:

  • La persona con accesso fisico o remoto alla cartella potrebbe ottenere l'accesso alla tua password.
  • Uno sniffer di rete come Cain potrebbe ottenere password attraverso la rete.

Quindi, salvare localmente una password sta davvero riducendo la sicurezza del tuo software a scapito della comodità dell'utente.

    
risposta data 15.04.2014 - 14:53
fonte

Leggi altre domande sui tag