Quanto sono protetti i file all'interno di una VM criptata in esecuzione su un hypervisor / host possibilmente non sicuro?

3

Ho un set di file di codice sorgente (C # compilato) che voglio impedire l'accesso diretto alla lettura. Il programma sarà in esecuzione sulla VM. Stavo pensando di archiviarli in una macchina virtuale cifrata, la VM userebbe questi file insieme a un endpoint HTTP / TCP.

Alcune informazioni aggiuntive:

  • I file che devono essere protetti sono file C # compilati (credo sia chiamato bytecode).
  • Il client eseguirà la VM all'interno del proprio ambiente host / hypervisor.

La crittografia dovrebbe essere la crittografia del disco (relativa alla VM), quindi prendere quanto segue dal link

Disk encryption ensures that files are always stored on disk in an encrypted form. The files only become available to the operating system and applications in readable form while the system is running and unlocked by a trusted user. An unauthorized person looking at the disk contents directly, will only find garbled random-looking data instead of the actual files.

Ciò significherebbe che un host di macchine virtuali non sarebbe in grado di visualizzare i file?

Vorrei anche impedire qualsiasi altro mezzo di accesso oltre l'endpoint HTTP / TCP (quindi rimuoverò qualsiasi prompt di accesso ecc., eventualmente rimuoverò l'intera shell se ciò è possibile).

Non sono troppo preoccupato per i file che appaiono nella 'memoria', poiché penso che sarebbe un compito difficile reingegnerli di nuovo in file.

Posso capire che questo non è sicuro al 100%, sto solo cercando di renderlo il più difficile possibile per accedere al codice sorgente (sto già usando l'offuscamento del codice sorgente).

L'oggetto principale qui è impedire l'accesso in lettura / reverse engineering del codice sorgente dell'applicazione.

Suppongo che un riassunto di quanto sopra possa essere definito come segue: È sufficiente il suddetto per creare un blob binario "sicuro" che sia un'immagine VM e che sia solo il punto di entrata / interfaccia sarebbe un endpoint HTTP?

    
posta Chris Stryczynski 15.03.2018 - 19:08
fonte

1 risposta

2

Non è chiaro da quale tipo di aggressore stai cercando di proteggere. Ma per fare qualche ipotesi, cosa potrebbe essere:

  • Se l'utente malintenzionato entra nella tua VM, tutti i file sono lì semplicemente perché vengono decifrati in modo trasparente quando letti.
  • Se l'utente malintenzionato è root sull'host della macchina virtuale, potrebbe invece acquisire le credenziali che è necessario immettere all'avvio della VM se la chiave di crittografia per il disco è protetta da password. Se la chiave di crittografia non è protetta e risiede nel sistema su cui è in esecuzione la VM, sarà ancora più semplice per root sul sistema ottenerla. Una volta che l'utente malintenzionato ha accesso alle credenziali, può decodificare il disco.
  • Se l'utente malintenzionato non è root sull'host della macchina virtuale, in primo luogo non dovrebbe essere in grado di leggere l'immagine della VM, cioè le autorizzazioni appropriate per i file dovrebbero essere una protezione sufficiente.

In altre parole: non penso che tu guadagni molto con il tuo metodo proposto.

    
risposta data 15.03.2018 - 19:29
fonte

Leggi altre domande sui tag