Posso mantenere l'utente connesso in modo sicuro alla mia applicazione locale E usare la password come chiave di decodifica?

3

Sono un po 'nuovo alla crittografia / sicurezza dei dati, ma ho già letto concetti di base come password di hashing, crittografia di file, ecc. Se possibile, per favore ELI5 - grazie in anticipo.

Sfondo: la mia applicazione interagisce con una terza parte (Twitch) utilizzando una chiave OAuth per IRC e un ID client. Entrambi possono essere utilizzati per accedere efficacemente all'account Twitch dell'applicazione e fare qualsiasi cosa con esso. Le chiavi vengono inviate come testo normale ogni volta che l'applicazione stabilisce una connessione con i server Twitch (di cui non posso fare nulla e non è proprio un grosso problema). Il mio principale problema di sicurezza riguarda l'accesso al computer dell'utente e il furto delle chiavi da lì.

Vorrei memorizzarli in modo sicuro sul disco in modo che l'utente non debba accedere a Twitch ogni volta che apre l'applicazione (per recuperare le chiavi). Per fare ciò, la mia soluzione migliore finora era crittografare il file che li conteneva . Il modo più ovvio per farlo sarebbe quello di richiedere una password all'avvio dell'applicazione , quindi utilizzare un hash + sale memorizzato per verificare la password e utilizzare la password (o il suo hash con un altro sale) come chiave per decrittografare il file .

Come detto prima, sono nuovo nella protezione dei dati, quindi potrebbe esserci un modo molto migliore per farlo. Si prega di suggerirne uno se ce n'è uno. Tuttavia, come per questo ...

Se possibile , vorrei anche che l'utente non inserisca la sua password ogni volta che apre l'applicazione - semplicemente per comodità dell'utente. Promuovere la password una volta per sessione utente (o una volta ogni volta che il computer viene riavviato) sembra ragionevole.

Ho pensato di farlo memorizzando qualcosa nella RAM, o magari memorizzando un qualche tipo di hash come file temporaneo. Tuttavia, non sono ancora riuscito a giungere a una conclusione reale. Forse sto chiedendo troppo. Tuttavia, esiste un modo reale e dignitoso di implementarlo? In caso contrario, richiedere una password all'avvio di ogni applicazione è un'idea migliore di quella di archiviare quelle chiavi Twitch in modo sicuro in qualche altro modo?

Se è importante - per il mio caso specifico, sto usando Python 3.7, e mirano a rendere la mia applicazione multipiattaforma (purché il sistema supporti Python).

    
posta ViAik 24.11.2018 - 07:05
fonte

1 risposta

1

Se vuoi che sia multipiattaforma, considera l'utilizzo di un modulo Python che fornisce l'accesso a vari sistemi "portachiavi" esistenti integrati. Un popolare è chiamato python-keyring .

In tutte le piattaforme che hanno un portachiavi, viene memorizzato con la password di login dell'utente e sbloccato nella RAM mentre l'utente ha effettuato l'accesso.

(Questo non è super-sicuro, poiché tecnicamente altri programmi possono anche richiedere la stessa password dal sistema operativo ... ma praticamente tutte le altre opzioni "memorizza qualcosa nella RAM" avrebbero lo stesso problema, quindi non è un downgrade .)

    
risposta data 30.11.2018 - 10:59
fonte

Leggi altre domande sui tag