protegge l'applicazione c ++ tramite un bind hardware automatico

1

Ho un Qt App che è in esecuzione su un raspberry pi (Debian Wheezy).

L'immagine del lampone viene generata automaticamente tramite uno script python:

- Get the latest version of the generic custom-raspi-image
- Mount the image
- Copy project specific program data into place
- Setup systemd services for automatic setup
- Unmount the image
- Write the image to a sd card

Al primo avvio, la dimensione del disco viene espansa e vengono impostate alcune impostazioni di avvio. Ora su questa routine di avvio, mi piacerebbe "marca" la mia app nella scheda SD. In modo che nessuno può solo copiare la scheda SD e usarlo in un altro lampone. Devo avere un automatismo.

L'idea è di compilare un dll c ++ (sulla routine di avvio) che ha l'id della CPU interna come costante. Successivamente elimina lo script "crea c ++ dll" e sposta la DLL nella cartella dell'app. L'app chiama una funzione nel file dll e invia l'ID della CPU interna. Dipende da vero o falso, l'app è in fase di avvio o meno.

È questo il modo giusto o hai una soluzione migliore?

    
posta Dominic Jonas 29.11.2016 - 10:57
fonte

1 risposta

3

Qualcuno con un debugger (come gdb, o qualsiasi altra cosa che può utilizzare le capacità di traccia del Kernel Linux e può utilizzare i binari) avrà un tempo facile a capire come aggirare la tua protezione dalla copia.

Dovresti crittografare il tuo binario (è possibile) e usare alcuni segreti specifici della macchina (ad esempio l'ID CPU, i dati del chip TPM) per decrittografarlo. Problema: non devi perdere informazioni, altrimenti chiunque può decodificare il file binario. E proteggere un ID CPU dell'ARM nel Raspberry Pi non è realmente fattibile se qualcuno ha la possibilità di es. eseguire una shell o accedere a qualsiasi linguaggio di scripting. Inoltre, dovresti stare molto attento: una volta decifrato su RAM, puoi effettivamente scaricare il codice macchina non cifrato e presumere operazioni in seguito. Quindi non è nemmeno sicuro.

Ad ogni modo, se lo fai e distribuisci queste schede SD o RP con tale software, probabilmente stai violando la GPL e altre licenze che stai usando - molte di queste licenze copyleft richiedono di includere o almeno rendere accessibile il codice sorgente del software che stai distribuendo, e consentire loro di copiare quel codice e il software . Qt ha una doppia licenza sotto una licenza commerciale (per la quale dovresti pagare, ma che potrebbe permetterti di non distribuire il codice sorgente) e GPL.

Il tuo schema di protezione contro la copia è debole: si basa su un segreto che in realtà non è un segreto.

Non so sui moduli della piattaforma fidata (TPM) nella classe di dispositivi RPi - ma in effetti, se si desidera collegare software ad hardware, l' hardware deve avere la capacità di decifrare qualcosa basato su una chiave univoca che in realtà è stata tenuta nascosta dall'hardware. Per quanto posso vedere, i tuoi dispositivi non hanno tale.

    
risposta data 29.11.2016 - 11:19
fonte

Leggi altre domande sui tag