Memorizzazione della chiave principale nel binario del server delle applicazioni

3

Immagina di avere una chiave master per crittografare / decodificare i dati salvati nel tuo database del tuo servizio app. Qual è il rischio che questa chiave sia incorporata nel codice del servizio app per memorizzare questa chiave nei file binari del server delle applicazioni? Gli hacker possono ottenere questa chiave dal binario del tuo server delle applicazioni?

In caso contrario, qual è il modo migliore per proteggere questa chiave master se si sta eseguendo nel cloud?

La lingua utilizzata è C.

    
posta iCode 07.05.2014 - 13:26
fonte

2 risposte

5

Gli hacker potrebbero ottenere questa chiave quando ottengono l'accesso al file binario del server.

Quando non vi è alcun motivo per cui gli utenti abbiano bisogno di un accesso legittimo ai file binari del server (che dovrebbe essere il caso quando interagiscono con il server tramite rete), dovrebbe essere possibile indurire sufficientemente il server per rendere impossibile l'accesso.

Ma tieni presente che quando si esegue l'hardcode di una chiave segreta nella propria applicazione, chiunque abbia accesso al codice sorgente può perdere la chiave di una terza parte, intenzionalmente o accidentalmente. Per questo motivo sarebbe molto più intelligente leggere la chiave da un file di configurazione. In questo modo il team di sviluppo può lavorare con la propria chiave di sviluppo, mentre il server di produzione utilizza una chiave diversa che è disponibile solo per il sysadmin che distribuisce e mantiene il server in produzione.

Un'altra cosa che potrebbe morderti sta usando C per un'applicazione server rilevante per la sicurezza. Non voglio avviare un linguaggio di programmazione flamewar, ma il linguaggio di programmazione C è noto per alcune funzionalità che scambiano la sicurezza per le prestazioni e facilmente portano a vulnerabilità come buffer overflow che consentono un accesso arbitrario alla memoria o addirittura al codice esecuzione. Un bug trascurato in una parte del tuo netcode completamente indipendente potrebbe facilmente consentire a un utente malintenzionato di estrarre la memoria che memorizza la tua chiave (indipendentemente dal fatto che sia codificata o letta da un file di configurazione). Ma quando insisti a scrivere un'applicazione che è rilevante per la sicurezza in C, almeno fai attenzione con certe funzioni come memcpy , strcpy , sprintf e molte altre che si occupano di matrici e non eseguono il limite automatico controllo (che, come e perché è abbastanza roba per un'altra domanda).

    
risposta data 07.05.2014 - 15:02
fonte
2

Non dovrebbe essere peggiore di memorizzarlo in un file di configurazione sul server. Sfortunatamente, se qualcuno ottiene il controllo del tuo server, non sarà troppo complicato per loro trovare le chiavi in entrambi i casi, ma non c'è alcun motivo particolare che l'integrazione nel programma possa danneggiare la tua sicurezza rispetto all'uso di un file di configurazione memorizzato altrove sul server. Neanche guadagna nulla.

    
risposta data 07.05.2014 - 15:27
fonte

Leggi altre domande sui tag