Crittografia delle sezioni o delle impostazioni dell’Applicazione.file di configurazione che saranno ridistribuiti

Sto creando una applicazione windows che verranno distribuiti a più utenti sul mio dipartimento. Ho bisogno di includere alcuni di connettività password su App.file di configurazione, e io, ovviamente, non si desidera che gli utenti finali per accendere il blocco note e guardare la password.

Diversi articoli punto su come crittografare/decrittografare sezioni di configurazione, ma sembra che per share/nave di alcuni tasti con la soluzione distribuibile.

C’è un modo più semplice, basta cipher alcune impostazioni in modo che non leggibile dall’utente, ma che non necessitano di ulteriori passaggi o i file quando il programma è ridistribuito? Più grande sarebbe che per accedere alle impostazioni di configurazione è ancora trasparente all’interno .NET code. Ho sempre potuto solo creare un metodo personalizzato per sale/codifica la stringa e nel mio codice personalizzato decifrarlo, ma mi chiedo se c’è qualcosa di più semplice.

Eventuali risposte o link ad articoli su come fare questo sono molto apprezzate. Grazie

InformationsquelleAutor GR7 | 2010-02-04

 

3 Replies
  1. 8

    Se si sta cercando di criptare la stringa di connessione nella tua App.Config/Web.La configurazione, è possibile farlo utilizzando la classe di Configurazione:

    Configuration config = ConfigurationManager.   OpenExeConfiguration(ConfigurationUserLevel.None);
    ConfigurationSection section =    config.GetSection("connectionStrings");
    if (section != null)
    {
        if (!section.IsReadOnly())
        {
            section.SectionInformation.ProtectSection             ("RsaProtectedConfigurationProvider");
            section.SectionInformation.ForceSave = true;
            config.Save(ConfigurationSaveMode.Full);
        }
    }

    Ci sono due metodi: RsaProtectedConfigurationProvider e DPAPIProtectedConfigurationProvider

    Vedere questo –> http://www.codeproject.com/KB/cs/Configuration_File.aspx e http://msdn.microsoft.com/en-us/library/89211k9b(VS.80).aspx.

    • Bhaskar, hai provato con questo? In realtà la crittografia della sezione, della ridistribuzione protetto app.file di configurazione per un altro sviluppatore o computer dell’utente finale, e vedere se il trasparente decrittazione funziona automaticamente?
    • Sì, ho criptato il file di configurazione e la ridistribuzione sul mio prod.
    • Una soluzione di questo tipo (“security” di oscurità) e si arriva sparato in competente azienda di tecnologia. Se il codice è possibile recuperare il testo in chiaro, cosa ti fa pensare che un malintenzionato non può utilizzare lo stesso codice per… recuperare il testo di riferimento? L’unica vera soluzioni comportano imporre vincoli di sicurezza sul lato server.
  2. 1

    In breve, la crittografia non è una bacchetta magica che possa magicamente risolvere un insicuro programma.

    Un utente malintenzionato tenta di ottenere le password dalla memoria di utilizzo di un Debugger, mentre l’applicazione è in esecuzione. Le password esistono anche in binario e questi possono essere facilmente ottenuti. L’uso di qualsiasi tipo di crittografia può essere esclusa in quanto la password deve essere in formato testo normale al momento dell’uso. Ogni volta che viene utilizzata la memoria può essere osservato anche con un debugger.

    La risposta si trova in anti-debugging: http://www.codeproject.com/KB/security/Intro_To_Win_Anti_Debug.aspx

    Più avanzate di windows Anti-Debugging:

    http://www.veracode.com/blog/2008/12/anti-debugging-series-part-i/

    http://www.veracode.com/blog/2008/12/anti-debugging-series-part-ii/

    http://www.veracode.com/blog/2009/01/anti-debugging-series-part-iii/

    http://www.veracode.com/blog/2009/02/anti-debugging-series-part-iv/

    • È inoltre possibile utilizzare SecureString per garantire la password non viene visualizzato come testo normale in memoria in qualsiasi momento.
    • che è grande, in teoria, ma in pratica non c’è SqlConnection di accettare un SecureString, e la stringa dovrà anche essere in chiaro a un certo punto nel tempo tra la lettura dal file config e passando in SecureString.
  3. 0

    In ogni modo, la crittografia e la decrittografia dei file di configurazione dell’applicazione è inutile come l’ .EXE può essere esaminato da Riflettore!

    Sicuro che si può offuscare il codice, ma che farà il debug di un incubo in un ambiente di produzione in cui uno strano sconosciuto/sconosciuta di un errore insinuato in quanto non sarebbe in grado di dire cosa/dove/perché/come monitor per uno strano bug che si presenta solo in rilascio come stacktrace e messaggi di errore sarebbe offuscato anche…

    Che è qualcosa da tenere a mente e una potenziale insidia…l’utente potrebbe non essere esperto di tecnologia, ma di sicuro si potrebbe, in teoria, chiedere a un amico/parente/partner per hack/pausa senza la vostra conoscenza..Questa non è una risposta che vuole mettere fuori, e spero che tu non ti senti offeso dalla mia risposta…

    Spero che questo aiuta,
    I migliori saluti,
    Tom.

    • grazie Tom, ma non mi interessa davvero è davvero criptato, cifrato, sarebbe OK. Fintanto che la password non può essere visto da solo aprire l’app.configurazione con un editor di testo, sto bene.
    • Beh…specificare la password nel codice stesso è un no-no…

Lascia un commento