¿Cómo puedo proteger mi código de robot?

¿Cómo puedo proteger mi código de robot?

Quiero construir un robot usando algunas minicomputadoras como Raspberry-Pi y usando el sistema operativo Linux. Creo que esas placas (RPi, NanoPi, etc.) tienen una tarjeta SD externa desde la que iniciar el sistema operativo, y mi código irá allí (en la tarjeta SD). Entonces, ¿cómo puedo proteger mi código de alguien que quiera copiarlo?

Por mi código, me refiero a mis programas escritos usando CMUsphinx, Opencv, etc.

¿Hay alguna forma de especificar cada tarjeta SD para una placa específica? Quiero decir que la tarjeta SD nom.1 solo se ejecuta en la placa nom.1.

¿O tal vez poner un código oculto en placas y tarjetas SD que usan un algoritmo y deberían coincidir para ejecutarse?

Respuesta1

No puedes proteger a alguien que tenga acceso físico al dispositivo para que no copie tu código. Si la placa puede leer su código, cualquier otra persona también puede hacerlo.

Para proteger el código contra copia, necesitarás usar un dispositivo que tenga almacenamiento a prueba de manipulaciones. Este tipo de hardware existe, pero tiene un precio más alto.

Puede realizar una prueba en su código para verificar algún identificador de hardware y negarse a iniciar si se ejecuta en un dispositivo de hardware diferente. Esto hace imposible ejecutar unexactocopie directamente, pero aún así es fácil cambiar el código para evitar la verificación o ejecutarlo en un entorno virtualizado que proporciona a su código la identificación de hardware que espera. Básicamente, es una manera de mantener a la gente honesta honesta pero no disuadirá a nadie que quiera copiar el código.

Respuesta2

Para proteger sus datos, debe tener una clave, de cualquier tipo, que pueda guardar y controlar físicamente y estar separada de sus datos secretos. La contraseña en su cerebro es un ejemplo de tal solución: el propietario la guarda físicamente, memorizándola.

Como contraseña, puede haber algún token visual para su súper robot, como una hoja de papel con un código de barras que descifra su software y le permite ejecutarse de esa manera. Puede que valga la pena considerarlo, ya que se podría usar la misma hoja de papel para cerrar su creación, con la ayuda de openvc y scripts, por supuesto.

Una forma menos práctica pero más fácil de implementar es tener 2 tarjetas SD, una contiene la clave y se usa para iniciar el sistema y espera hasta que cambie la tarjeta SD y continuará iniciando después de eso.

deberías investigar cómoinitramfsse utiliza para iniciar todo el sistema. Deberías mirar cómo crear.initramfs personalizadosy poder modificar el script de inicio para esperar y descifrar el montaje de su segunda tarjeta con el sistema principal.

El sistema no es perfecto, pero sí sucio y barato.

Tampoco tiene que ser una solución initramfs, puede usar soluciones como copiar sus códigos ejecutables al disco RAM desde alguna unidad USB, que inserta solo con el propósito de iniciar su creación y eliminarlo cuando comience a estar vivo.

Cuando tienes un secreto y una clave en un medio (es un truco inteligente, oculta algo, etc.), se puede realizar ingeniería inversa.

En cuanto a mí, la solución initramfs necesita menos esfuerzo, hay mucha información sobre cómo crear initramfs personalizados.

información relacionada