protege la aplicación c ++ a través de un enlace automático de hardware

1

Tengo un Qt App que se ejecuta en una frambuesa pi (Debian Wheezy).

La imagen de la frambuesa se genera automáticamente a través de un script de 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

En el primer arranque, el tamaño del disco se expande y se establecen algunas configuraciones de inicio. Ahora en esta rutina de inicio, me gustaría "marcar" mi aplicación en la tarjeta SD. Para que nadie pueda copiar la tarjeta SD y usarla en otra frambuesa. Debo tener un automatismo.

La idea es compilar una dll c ++ (en la rutina de inicio) que tiene el ID de CPU interno como una constante. Luego elimine el script "crear c ++ dll" y mueva la dll a la carpeta de la aplicación. La aplicación está llamando a una función en el archivo dll y envía el ID de CPU interno. Depende de verdadero o falso, la aplicación se está iniciando o no.

¿Es esta la forma correcta o tienes una mejor solución?

    
pregunta Dominic Jonas 29.11.2016 - 10:57
fuente

1 respuesta

3

Alguien con un depurador (como gdb, o cualquier otra cosa que pueda usar las capacidades de rastreo del Kernel de Linux y los binarios) tendrá un tiempo fácil para descubrir cómo evitar la protección contra copia.

Tendrías que cifrar tu binario (eso es posible), y usar algún secreto específico de la máquina (por ejemplo, el ID de la CPU, los datos del chip TPM) para descifrarlo. Problema: no debe filtrar esa información, de lo contrario, cualquier persona puede descifrar el binario. Y proteger una ID de CPU de la ARM en la Raspberry Pi no es realmente factible si alguien tiene la posibilidad de, por ejemplo, ejecuta un shell, o accede a cualquier lenguaje de scripting. Además, debe ser muy cuidadoso: una vez descifrado a RAM, puede volcar el código de máquina no encriptado y presumir la operación más adelante. Así que eso tampoco es seguro.

De todos modos, si hace esto, y distribuye estas tarjetas SD o RPis con dicho software, probablemente esté rompiendo la GPL y otras licencias que está usando; muchas de estas licencias de copyleft requieren que incluya o al menos haga accesible el código fuente del software que está distribuyendo, y permítales copiar ese código y el software . Qt tiene una licencia doble bajo una licencia comercial (por la cual tendría que pagar, pero que posiblemente le permitiría no distribuir el código fuente) y la GPL.

Su esquema de protección contra copia es débil, se basa en un secreto que, de hecho, no es un secreto.

No sé acerca de los módulos de plataforma de confianza (TPM) en la clase de dispositivos RPi, pero efectivamente, si desea vincular algún software a hardware, el hardware debe tener la capacidad de descifre algo basándose en una clave única que, en realidad, el hardware mantiene en secreto. Por lo que puedo ver, sus dispositivos no tienen tales.

    
respondido por el Marcus Müller 29.11.2016 - 11:19
fuente

Lea otras preguntas en las etiquetas