Mantenere una password sicura nella configurazione del programma

2

Ho un servizio Windows che si connette a un database per eseguire il polling di alcuni valori al fine di monitorare determinate attività.

Naturalmente, per usarlo ho bisogno di una password del database. Devo mantenere questa password al sicuro, poiché ovviamente non dovrebbe essere una conoscenza comune. Per fare ciò, ho sviluppato una semplice crittografia XOR e memorizzato il testo cifrato nel file di configurazione. La chiave che ho usato per il codice è stata per ora codificata nel servizio.

Ovviamente, questo hard coding non è l'ideale, dato che qualcuno può smontare l'exe e vedere sia la chiave che il codice!

Non mi aspetto che la maggior parte delle persone sia in grado di farlo, ma ritengo sia meglio mitigare i rischi laddove possibile. Quindi, c'è forse un approccio migliore a questo problema?

So che è sempre meglio utilizzare una soluzione esistente, laddove possibile, ma non sono riuscito a trovare nulla di specifico che avrebbe funzionato in questo caso. Ho esaminato l'API di Windows Data Protection, ma da quello che ho potuto capire ha funzionato solo all'interno di un'istanza di un'applicazione. Non mi permetterebbe di memorizzare il testo cifrato in un file e accedervi in seguito.

    
posta Luke 29.09.2015 - 11:09
fonte

1 risposta

2

Se la password verrà utilizzata e memorizzata in qualche modo su un client non attendibile, non esiste un modo reale per proteggerla. Sarebbe in memoria al punto di utilizzo, e potrebbe anche essere annusato da un MITM che impersona il server.

Una soluzione migliore sarebbe avere un'API Web remota con accesso in lettura alla tabella del database che contiene il valore che deve essere monitorato.

Il servizio Windows richiede quindi l'API Web. Se i dati sono sensibili, è prudente proteggere questo servizio con un qualche tipo di autenticazione e proteggerlo durante il transito utilizzando TLS. Tuttavia, il punto principale è che se un client scopre le credenziali dell'API, il peggio che potrebbero fare sarebbe di interrogare il valore restituito, che è quello che fa comunque il servizio Windows. Cioè, non avranno l'accesso per leggere altre tabelle o per scrivere sul server del database. L'API esporrà solo una funzione e l'API stessa avrà solo le autorizzazioni minime necessarie.

    
risposta data 29.09.2015 - 11:44
fonte

Leggi altre domande sui tag