Posso creare un'applicazione in grado di decodificare i dati ma l'amministratore dell'applicazione non può?

1

Ho un'applicazione Windows con un file di configurazione che contiene alcune password del database. Vorrei crittografare questi dati in modo tale che la mia applicazione possa decrittografare i dati, ma che l'amministratore della mia applicazione (team ops che dovrà avviare / interrompere il servizio, ecc.) Non possa. È possibile?

    
posta ConditionRacer 06.03.2015 - 22:30
fonte

1 risposta

3

Questo è possibile in parte, su Windows, utilizzando l'API Windows Data Protection ; più specificamente la funzione CryptProtectData . Questa funzione consente di crittografare i dati su un profilo utente o su una macchina, in modo che solo tale entità possa recuperare i dati.

La tua configurazione sarà simile a questa:

  • Un utente del servizio dedicato è configurato per l'applicazione.
  • Un'applicazione di aiuto in esecuzione mentre quell'utente di servizio crittografa le credenziali con CryptProtectData , con dwFlags impostato su 0 e lo memorizza su disco o nel registro.
  • L'applicazione viene eseguita come utente del servizio e decrittografa le credenziali all'avvio, utilizzando CryptUnprotectData .
  • Crea un gruppo per gli utenti del servizio applicazioni che è non anche con privilegi in altri modi (ad esempio parte del gruppo Administrators)
  • Utilizza questa tecnica per consentire agli utenti del gruppo di avviare / interrompere il servizio.
  • Accertati che il gruppo non possa scrivere / modificare il file eseguibile o una qualsiasi DLL all'interno della directory dell'applicazione o altrimenti eseguire un eseguibile arbitrario nel contesto dell'utente del servizio dell'applicazione. Ciò significa anche che non dovrebbero essere in grado di modificare le chiavi e i valori del Registro di sistema per il servizio in HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services .

È importante notare che, se gli amministratori dell'applicazione sono in grado di modificare il binario dell'applicazione o eseguire un programma nel contesto dell'utente del servizio dell'applicazione, potrebbero semplicemente chiamare CryptUnprotectData e ottenere l'accesso alle credenziali.

Se rendi gli amministratori di queste applicazioni parte del gruppo degli amministratori completi, darai loro le chiavi del regno: possono installare ed eseguire qualsiasi software a loro piace (incluso il codice in modalità kernel) e saranno in grado di bypassare qualsiasi controllo implementato. Non farlo se vuoi mantenere il controllo.

    
risposta data 07.03.2015 - 00:27
fonte

Leggi altre domande sui tag