Quale protocollo crittografico è appropriato per il caso in cui l'utente ha bisogno di accedere a un file di configurazione binario e crittografato?

1

Questa è una domanda di sicurezza IT molto nuova ...

Devo implementare rapidamente una soluzione per la nostra applicazione che funziona così ... Abbiamo un eseguibile binario a cui viene dato un file di configurazione. Ho bisogno di crittografare il file di configurazione in modo tale che un utente non fidato possa ricevere il file di configurazione binario e crittografato (e magari una chiave pubblica o qualcosa del genere) e dovrebbe essere in grado di eseguire il file binario con il file crittografato.

Potresti suggerire un paradigma crittografico e una libreria criptata c ++ che mi consenta di fare quanto sopra? Stavo pensando di crittografare i file di configurazione con una chiave statica di blowfish che è codificata nel file binario come una soluzione urgente che solleverà la barra leggermente in base ai consigli che ho ricevuto dallo scambio di crittografia.

Quale sarebbe un buon design nel lungo periodo? Sto cercando di proteggere dai seguenti problemi: -

  1. Lettura casuale dei file di configurazione / input xml
  2. Facile disassemblaggio e reverse engineering del file binario / estrazione della chiave segreta cercando nella sezione di testo o dati
  3. alcuni altri vettori di attacco a cui puoi pensare solo perché io sappia?

Nota: - Domanda ripostata dallo scambio di criptovalute poiché questo è probabilmente il posto migliore per chiederlo.

    
posta owagh 30.04.2014 - 23:41
fonte

2 risposte

3

Se memorizzi una chiave, una password, ecc. nel codice sorgente, non potrai mai ragionevolmente aspettarti di mantenerla segreta a meno che tu non controlli anche il sistema. Quello che stai descrivendo sarebbe solo oscuramento, offuscamento o nascondimento dei dati .

Se vuoi che il programma sia in grado di decifrare, sembra un caso per usare la crittografia asimmetrica. Potresti avere uno scenario in cui crittografare i dati effettivi utilizzando una chiave simmetrica, ma trasferire la chiave simmetrica usando asimmetrica per ridurre il sovraccarico.

A seconda del tuo scenario, potresti implementare un modulo di sicurezza hardware ( HSM). Se è possibile configurare e controllare il sistema, HSM sarà la fonte affidabile per conservare i propri segreti e proteggere il processo di decrittografia dal sistema e dall'applicazione. Tuttavia, se non si dispone di controllo fisico, il cliente potrebbe eventualmente manomettere l'HSM.

Se le chiavi di decifrazione sono nell'app o sono memorizzate nel sistema e il sistema non è sotto il tuo controllo, la persona che controlla il sistema può sempre accedervi in qualche modo, puoi renderlo difficile, ma non impossibile. Se si ha il controllo completo del sistema, è possibile limitare i privilegi dell'utente per impedire che caricino strumenti o addirittura li leggano in una certa misura. Tuttavia, con un'applicazione desktop compilata spedita a un cliente, non sarai mai in grado di assicurarti che non possano invertire o trovare i segreti.

    
risposta data 01.05.2014 - 04:17
fonte
0

IMO, su applicazioni desktop che usano la configurazione binaria + xml non puoi mai essere sicuro che il tuo xml non sia letto, usando uno strumento come Ollydbg è abbastanza facile ottenere qualsiasi chiave di crittografia che potresti inserire nel binario. Vorrei suggerire, se possibile, di implementare la tua applicazione in un ambiente virtuale come citrix, che se configurato correttamente darà accesso solo agli utenti dell'applicazione e nient'altro.

    
risposta data 01.05.2014 - 00:55
fonte

Leggi altre domande sui tag