Memorizza e legge le credenziali dell'utente sul loro computer

1

Sto scrivendo un client (di terze parti) per un gioco, e una caratteristica che vorrei che questo client avesse era la possibilità di accedere automaticamente al gioco utilizzando le credenziali immesse precedentemente. Le credenziali consistono semplicemente in un nome utente e una password alfanumerici. Un modo ingenuo per implementare questo è memorizzare un file contenente il nome utente e la password sul computer locale. Tuttavia, questo non è sicuro per una serie di ovvi motivi. Uno in particolare è che questo client supporta i plugin che gli altri sviluppatori possono scrivere. Questo apre la porta a uno sviluppatore malintenzionato per leggere il contenuto del file, compromettendo efficacemente l'account.

Ho anche considerato l'idea di usare un codice per crittografare (e decodificare) la password, ma non ero sicuro di quale fosse un modo sicuro per seminare il codice. Un'idea che avevo era la creazione di un file generato in modo casuale e l'utilizzo di quello per seminare il codice e quindi utilizzare quel codice per accedere alla password. Tuttavia, ancora una volta, un plugin dannoso potrebbe semplicemente leggere quel file generato casualmente, seminare il proprio codice e quindi decodificare il contenuto del file di password.

Esiste un modo sicuro per archiviare e recuperare la password di un utente sul computer locale? Supponiamo che uno sviluppatore malintenzionato abbia pieno accesso al codice sorgente dell'applicazione e conosca esattamente quali algoritmi e tecniche vengono utilizzati.

Modifica: non ho accesso al server al quale il client si connette. La mia applicazione è fondamentalmente un "wrapper" per il client di gioco ufficiale che aggiunge funzionalità extra.

    
posta Martin Tuskevicius 25.02.2016 - 22:28
fonte

5 risposte

1

No. Non senza input dell'utente come passcode o passphrase utilizzati per crittografare e decifrare le credenziali.

Anche così, lo sviluppatore malintenzionato potrebbe annusare le credenziali dopo la decifrazione comunque.

    
risposta data 25.02.2016 - 22:43
fonte
1

Sebbene ciò possa essere vantaggioso per l'utente, pensa all'impatto di tale password compromessa.

Invece di salvare il tuo utente qualche secondo per ogni accesso, la tua alternativa è un account violato che può significare perdita di fondi, identità e crea più lavoro per te stesso e / o il tuo team se / quando segnalato.

Fai un favore a te stesso e ai tuoi utenti e non salva la password. Semplicemente non ne vale la pena.

Facciamo riferimento al nostro amico, il triangolo CIA / AIC:

  • Riservatezza: è presente un rischio intrinseco che le credenziali archiviate verranno decodificate. Questo è il vettore di attacco più semplice e dà anche all'aggressore la possibilità di riutilizzare (troppe persone riutilizzano le password ... ugh) le credenziali per altri servizi, in modo che il gioco possa consentire a un utente malintenzionato di ottenere dati da più servizi / siti per un singolo utente.
  • Integrità: È molto difficile garantire che un file non possa essere letto o manomesso su un filesystem, quindi non si ha alcuna garanzia che, comunque, si scelga di memorizzare le credenziali che non possono essere prese e screpolate in seguito (anche se la cripto è strong con te).
  • Disponibilità: rende il gioco più facilmente utilizzabile per pochi secondi, quindi il valore aggiunto è minuscolo.

Si impongono minori rischi per l'utente e si ha un maggiore controllo quando si gestiscono le credenziali a livello centrale. Ovviamente c'è sempre un rischio intrinseco, ei tuoi server diventeranno un bersaglio, ma il tuo obiettivo in sicurezza è quello di bilanciare il triangolo il meglio che puoi (che potrebbe significare sacrifici).

Pensiero: se ti concentri sull'usabilità, almeno offri la possibilità di ricordare il nome utente in modo che tutto ciò che devono digitare sia la loro password. Tuttavia, se sei veramente incline a salvare quella password sul sistema, implementa una soluzione 2FA per proteggere te e i tuoi utenti.

    
risposta data 25.06.2016 - 09:29
fonte
1

Limita i plug-in

"... questo client supporta plugin che altri sviluppatori possono scrivere. Questo apre la porta a uno sviluppatore malintenzionato di leggere il contenuto del file ..." è una dichiarazione molto pericolosa - i plugin di terze parti possono realmente leggere file arbitrari fuori dal computer dell'utente? Questo non dovrebbe essere il caso, in quanto ciò apre la possibilità di malware molto più dannosi rispetto al semplice furto delle credenziali di un gioco.

I plug-in dovrebbero essere accuratamente sandbox in modo che il loro accesso al filesystem sia strettamente limitato - dovrebbero essere in grado di leggere le risorse contenute nel plugin e nient'altro. Se / quando viene implementato, rimuove anche il rischio che possano accedere alle credenziali archiviate.

    
risposta data 22.12.2016 - 14:36
fonte
1

Senza il controllo sul server non è possibile avere un modo affidabile e sicuro per farlo

Come hai detto nella tua domanda, un utente malintenzionato che sviluppa un plug-in dannoso avrà accesso a tutto ciò che è archiviato lato client in modo da non poter dipendere da qualsiasi lato client per autenticare gli utenti

Ancora di più, se i plugin hanno accesso a tutto il lato client, anche l'inserimento della password è pericoloso. Un plug-in può acquisire la password una volta che l'utente l'ha inserita e reindirizzato a un server controllato dall'hacker

Penso che il meglio da fare sarebbe sandboxing i plugin e basta ricordare il nome utente. Inserire una password richiede al massimo 5 secondi, non dovrebbe influire negativamente sull'esperienza utente

    
risposta data 21.01.2017 - 16:22
fonte
1

Sto facendo fatica a capire come archiviare le credenziali utilizzando l'encrpytion ma con le chiavi di crittografia accessibili come i dati crittografati è più sicuro che archiviare il testo in chiaro delle credenziali.

Mentre come utente finale si accede a un sito utilizzando un nome utente e una password, spesso dietro le quinte c'è molto più felice. Schemi come oauth2 sono progettati specificamente per affrontare scenari come questo. Inoltre, molti sistemi operativi moderni forniscono funzionalità per la gestione delle password degli utenti (ad esempio gnome keyring, portafoglio KDE, cavalluccio marino), ma se sei bloccato su MSWindows, allora penso che sei bloccato con componenti aggiuntivi di terze parti .

In realtà, se non puoi fidarti del codice di altre persone nello stesso spazio degli indirizzi del tuo, allora non hai molte opzioni.

    
risposta data 22.03.2017 - 17:29
fonte

Leggi altre domande sui tag