Sto sviluppando un'applicazione intranet (C#) che utilizza alcuni dati (locali al server web) che vorremmo mantenere privati. Questi dati sono crittografati (AES) utilizzando un repository di dati legacy. Non possiamo impedire completamente l'accesso fisico alla macchina.Come si nasconde una chiave di crittografia in un'applicazione .NET?
Chiaramente, non avremo mai una perfetta sicurezza qui. Tuttavia, vogliamo rendere il più difficile possibile a chiunque di ottenere l'accesso non autorizzato ai dati.
La domanda è il modo migliore per memorizzare la chiave. La crittografia basata su un ID specifico della macchina è un'opzione, ma tali informazioni sarebbero prontamente disponibili per chiunque utilizzi uno strumento diagnostico sulla macchina.
La codifica nell'applicazione è un'opzione (è un'applicazione singola). Tuttavia, gli assembly .NET sono abbastanza facili da decompilare. Quindi, sarebbe meglio offuscarlo, usare un launcher di crittografia, compilarlo?
Oppure c'è un'opzione che mi manca?
Solo così siamo chiari, so che è praticamente una causa persa se qualcuno è determinato, ma stiamo cercando di renderlo il più difficile possibile entro i limiti.
Ecco come l'ho fatto in passato. –
Se hai accesso alla macchina, non puoi semplicemente scrivere un'app che fa riferimento alle sezioni crittografate e ti consegnerà il testo in chiaro? Pensavo che fosse sicuro solo se non avessi avuto accesso alla macchina. – user74824
@yahoo: sei corretto. – NotMe