it-swarm-eu.dev

Crittografa cartella su Linux che può essere decodificata solo su quel sistema operativo e dispositivo specifici

Supponiamo di voler dare un computer a qualcuno che esegue un'applicazione. Voglio evitare che il programma possa essere copiato su un altro computer o manomesso. Per questo, voglio crittografare la cartella che contiene il programma e vorrei farlo in modo che solo il sistema operativo host (Linux) su quel dispositivo possa decrittografarlo (cioè evitare anche di spostare il disco tra i computer). Non c'è TPM nel computer. L'avvio protetto è già in esecuzione, ma sembra che questo venga ripristinato quando si ripristina il CMOS. L'applicazione richiede la rete, quindi è già disponibile.

È possibile? Non vedo davvero come si possa fare, se possibile. E no, quanto lontano posso arrivare a renderlo il più difficile possibile?

7
Patrik

Indipendentemente da ciò che fai, dovrai archiviare una chiave di crittografia da qualche parte, che sarà quindi recuperabile. Se è necessario un server delle licenze, è possibile aggirare il problema agganciando o rattoppando l'applicazione. Puoi fare cose come questa per rallentare un avversario, ma non sarà una protezione completa. Se davvero non vuoi distribuire il tuo software, usa un'architettura client-server con la maggior parte della logica sul lato server e richiedi l'autenticazione da un utente a pagamento/autorizzato (anche se quindi non puoi impedire al software client di essere copiato o modificato, ma di solito è un rischio accettato).

11
multithr3at3d

Supponiamo di voler dare un computer a qualcuno che esegue un'applicazione. Voglio evitare che il programma possa essere copiato su un altro computer o manomesso.

Ci sono strumenti disponibili in commercio che lo faranno per te. Come hai sospettato, non esiste una soluzione a prova di proiettile che non può essere rotta da un avversario dedicato. Ma, in pratica, ci sono offuscatori disponibili in commercio che possono essere "abbastanza buoni" per i tuoi scopi.

Gli strumenti disponibili in commercio possono anche legare il software a un determinato hardware rilevando un'impronta digitale dell'hardware. Ancora una volta, questo è probabilmente spoofable con abbastanza lavoro, ma potrebbe essere "abbastanza buono" per i tuoi scopi.

Un esempio di uno strumento disponibile in commercio è ".NET Reactor", ( https://www.eziriz.com/dotnet_reactor.htm ) che deve essere utilizzato con il software Windows .NET. Può offuscare il software per frustrare il reverse engineering e può legare il software a hardware specifico utilizzando un metodo di fingerprinting hardware.

5
hft

Una strategia che ho visto non è infallibile ma si legge in ID hardware univoci e lo si utilizza come chiave per decrittografare il software, se spostato su un altro computer, non decifrerebbe.

L'unico problema è che la maggior parte di questi valori può essere sovrascritta e se l'attaccante sa da quale hardware derivano questi valori e li riproduce per "sbloccare"/decrittografare efficacemente il software.

Inoltre, hai un problema se uno di questi componenti hardware si guasta e viene sostituito, ora devi tagliare il nuovo software, crittografato con la nuova combinazione di ID hardware per il nuovo hardware sostituito.

5
thepip3r