Protección de copia, protección intelectual y problemas de implementación

10

Después de un tiempo con el Raspberry Pi 2 Modelo B v1.1., ¿Tengo las siguientes preocupaciones?

  1. Sé que está enfocado a mejorar los sectores educativos vulnerables, pero ¿es posible vender un producto, basado en el RPi? ¿Ganar dinero con eso? ¿Convertirse en millonario con él?
  2. ¿Cómo debo proteger un desarrollo, digamos, no quiero que alguien tome mi tarjeta SD RPi, la duplique y tenga sus propias réplicas ? Mi alternativa actual es llenar el puerto SDCard con superglue :). Otra opción podría hacer que el RPi haga ping a un servidor de licencias en línea, lo que por supuesto requeriría una conexión WiFi . O una identificación de hardware HASH (supongo que esta debería ser una mejor respuesta ...)
  3. He comprobado que también hay mecanismos para recuperar la instalación, incluso si no tiene la raíz, montando la tarjeta SD. Nuevamente, mi mejor solución es el enfoque de superpegamento ...

Gracias por adelantado.

Brethlosze
fuente
2
Esta es una pregunta general de Linux incrustado. Es un problema complejo tanto técnica como legalmente.
Craig
2
Hola y bienvenido a RaspberryPi.SE! Esto es demasiadas preguntas en una. Algunos problemas también son muy amplios y no son específicos de Pi. Debe tener en cuenta que, dado el tiempo y el esfuerzo, se pueden eludir todos los sistemas de protección anticopia. Especialmente si su sistema está implementado y no tiene forma de evitar que el "malo" use todas las herramientas disponibles para romper su protección.
Ghanima
@craig: ¿Existe una comunidad Linux integrada?
Brethlosze
WRT # 2: No se puede prevenir la piratería técnicamente en ninguna plataforma, todo lo que se puede hacer es combatirla legalmente . Creo que tienes el carro antes que el caballo aquí. En el momento en que tenga un proyecto de software basado en pi donde esto sea una preocupación, reconocerá que no hay ningún proyecto basado en pi que esté realmente vinculado al pi. Es solo un dispositivo de propósito general, y la comunidad está orientada al desarrollo.
Ricitos de oro
2
No es "su plataforma", en cuanto al desarrollo de aplicaciones, y ellos lo saben y no les importa. Ese no es "su propósito". Es un SoC Broadcom que implementa una arquitectura ARM. No hay nada que nadie vaya a hacer con un pi que no pueda ser portado trivialmente a una amplia gama de otros dispositivos. Entonces, una vez más: tienes el carro delante del caballo . En el momento de llegar al punto donde su preocupación por la propiedad intelectual tiene algún significado o importancia, usted entenderá lo que estoy tratando de decir a usted ...
goldilocks

Respuestas:

6

Si realmente le preocupa proteger su propiedad intelectual, puede combinar su aplicación basada en Rapberry Pi con algún microcontrolador externo personalizado (MCU como AVR, PIC, 8051 ...) clave de hardware (conectada a Pi a través de USB, RXTX, I2C, SPI, 1 cable ...). Por ejemplo, la aplicación del lado Pi genera un número aleatorio que se envía a MCU, se decodifica y se devuelve como una clave de desbloqueo para descifrar algo importante. Luego, además, tiene alguna función importante ejecutada directamente en MCU (solo pasa parámetros y obtiene el resultado de MCU). Puedes imaginar cómo eso aumentaría la dificultad de craqueo para un hacker en orden de magnitud, ya que su conocimiento tendría que ser mucho más amplio de lo habitual. No existe una protección perfecta, pero si realmente quieres que sea un desafío, entonces este podría ser un camino a seguir.

avra
fuente
1
De hecho, esta es una buena solución ... Lo intentaré con este concepto ...
Brethlosze
1
Desafortunadamente, la solución para una clave de hardware es la misma que una clave de software: simplemente elimine la parte ofensiva del código, cree la respuesta correcta, etc. Entonces, las mismas habilidades funcionarán contra una clave de hardware.
Tomnexus
2
No si pones alguna función importante en la llave de hardware y haces que su resultado sea crítico para la funcionalidad de tu aplicación Pi. Dado que la función solo existe en un microcontrolador, no hay nada que eliminar en el lado de Pi. Esto no es imposible de romper, pero es mucho, mucho más difícil, ya que requiere habilidades mucho más altas que el descifrado de código habitual.
avra
1
Si bien estos circuitos externos sí agregan protección, estas cosas cuestan mucho dinero: investigación, creación de prototipos, fabricación, pruebas, implementación, mantenimiento. ¿Qué pasa si algo sucede a lo largo de la línea? ¿Qué pasa si Raspberry cambia sus interfaces en futuros modelos? Si es una vida útil corta o un proyecto de pasatiempo, anímate. Si se trata de un producto industrial / comercial, quizás el OEM sea una apuesta más segura.
EDP
5
  1. Creo que esa fue la idea con el módulo de cómputo todo el tiempo. No debería ser un problema obtener ganancias.

  2. / 4. La opción de superpegamento es probablemente una buena compensación. En última instancia, no puedes derrotar a un atacante con acceso físico al dispositivo. Eche un vistazo a las consolas de juegos que probablemente tienen millones invertidos en infraestructura DRM y eventualmente todas caen. Con un espíritu diferente, también podría adoptar la apertura y vender una versión de desarrollo de su producto e incluir algún tipo de SDK. Los comentarios que reciba de un grupo de usuarios con enfoque técnico pueden ser valiosos y trabajar en su interés.

usuario1217949
fuente
La opción de superpegamento es probablemente completamente loca, pero aquí hace algunos otros buenos puntos. ; |
Ricitos de oro
En realidad, estaba pensando en alguna identificación de hardware del Raspberri Pi, para que cada software RPi pudiera programarse para cada tarjeta RPi, y por lo tanto, si clono el software, el sistema no funcionará. Los viejos uProcessors, simplemente se programaron a bordo, por lo que no puede desconectarlo :).
Brethlosze
1
Incluso si tuviera una identificación de hardware, cualquier otra persona con acceso físico podría leerla. Los procesadores que se programan a bordo, por supuesto, también proporcionan interfaces de depuración, por lo que realmente puede leerlos. En sistemas más sofisticados, el SOC probablemente solo se encargará de ejecutar el código firmado. No me sorprendería demasiado si el chip Broadcom tiene alguna funcionalidad en esa dirección, pero no tiene documentación para ello. Si desea planear vender millones en unidades, pueden hablar con usted sobre eso;)
usuario1217949
LOL ... no, supongo que venderé una cantidad realmente menor de ellos. Entonces, si tengo un código que se ejecuta bajo Raspbian, ¿algún otro podría tomar la tarjeta SD y leerla? depurarlo? ¿Decifralo?. Estoy totalmente seguro, la respuesta es sí. ¿Será la mejor opción tener una Hardware Keysugerencia de avra y enterrar la tarjeta SD con SuperGlue dentro de su conector?
Brethlosze
4

Si bien esta práctica definitivamente está perdiendo cobertura, te sorprendería la cantidad de conectores USB que se han pegado en las máquinas de escritorio en entornos de oficina corporativa. Y estoy hablando de grandes corporaciones multinacionales aquí.

Pero ahora sobre el tema ...

Para proyectos comerciales donde la protección de IP es un factor importante, el Pi es bueno para la creación de prototipos tempranos / prueba de concepto en el mejor de los casos. Incluso si la protección no fuera un problema, los despliegues de Pi a mayor escala no son, en mi humilde opinión, la mejor solución, por una serie de razones que describí en un hilo anterior en este foro.

No existe un sistema seguro contra ingeniería inversa / piratería / reproducción. Cualquier sistema es explotable. Sin embargo, cada sistema tiene un puntaje de penetración. Con su enfoque abierto y tarjeta SD externa, la Pi tiene una muy baja. Una placa de hardware aprobada por militares con diseño personalizado con SoC personalizado, componentes intercalados y PCB de varias capas en combinación con un cargador de arranque personalizado, el cifrado de hardware tendrá una puntuación más alta.

Además de eso, está el factor de despliegue. Cuanto más amplio sea su mercado, más interesante será para las personas ingresar y robar su tecnología.

Si el hardware es su pieza de resistencia en toda la configuración y la protección de su tecnología es un factor importante, no creo que el Pi sea el producto para usted. Si su hardware es un facilitador para la venta de servicios, quizás la protección de la tecnología debería hacerse en el lado del servidor en lugar del lado del cliente.

Usamos el Pi para vender dichos servicios. Nuestro software en el Pi tiene un nivel elevado de protección, estamos usando una aplicación C compilada, bloqueada en el número de serie de MAC y / o CPU. Pero al final, sin nuestro lado del servidor, incluso el código fuente es prácticamente inútil.

EDP
fuente
3

Puede usar un piggy-back dentro de frambuesa con una clave de cifrado. Hay un par de dispositivos comerciales en el mercado. Utilicé este software de protección en serie para Raspberry Pi , que funciona muy bien.

Paulo Arede
fuente
2
Esto no lo ayudará a proteger el sistema de la clonación: los piratas informáticos eliminarán la comprobación de la clave HW de su binario si lo desean ... La clave HW proporcionará solo un cierto nivel de protección (tal vez para detener el hobby de primer nivel hackers).
Kozuch
2

Hazlo de código abierto

En serio, no intentes protegerlo contra copias. Hazlo de código abierto. Si es posible, deje que otros se unan a su proyecto.

Luego cobra por los servicios. Puede hacer cubos de dinero si lo hace bien.

Red-had lo hace así y algunas otras compañías. A todos les está yendo bien y están creciendo.

MadMike
fuente
1
No, este es un producto, no un proyecto, ni un gran proyecto ni un proyecto de programación muy interesante. Suena bonito, pero de nuevo, no.
Brethlosze
1
Estoy en desacuerdo. Según mi experiencia, cada programa que he escrito que fue enviado y utilizado activamente por el cliente tendría llamadas de soporte, solicitudes de mejora y, por supuesto, corrección de errores. El único software que no tenía ninguno era el que, después de enviarlo, nunca se usó.
MadMike
Ese es el punto, esto es para un producto, un dispositivo. no hay arte en absoluto en el software, pero la forma en que se procesan las variables debe protegerse, al igual que cualquier controlador inteligente. No tiene la intención de abrir el código fuente de sus desarrollos en ese sentido, eso está fuera de discusión, ese es otro tipo de trabajo. Tal vez usted está en una empresa y está enojado cuando el cliente lo llama, cuando en realidad le da más facturación a sus jefes y le brinda el servicio de posventa, que a largo plazo es bueno. En cualquier caso, el código abierto es bueno para la humanidad, no para obtener ganancias.
Brethlosze
1
Nuevamente, esta es la discusión utópica de regalar todo su trabajo para beneficio humano o cobrar a todos por todo lo que hacen.
Brethlosze
1

Pocos centavos míos:

  1. Nunca cree una solución alrededor de scripts que puedan leerse directamente.
  2. Desglose de funcionalidades en términos de múltiples software / procesos y hardware.
  3. Agregue alguna dependencia "funcional" de hardware de lectura.
  4. Agregue un lector de tarjetas inteligentes y venda tarjetas inteligentes "habilitadoras" con su producto.
  5. Tener un servidor de licencias
  6. Tener un contador de uso en EEPROM !!! Y debería haber alguna forma de "recargar" en línea ... ;-)

...

Jatin Gandhi
fuente
1

Como protección de nivel de entrada, se encuentra una ID de tarjeta SD única /sys/block/mmcblk0/device/que no es clonada por el software típico de clonación de imágenes de disco. Esto tiene la ventaja de no requerir un dispositivo separado para contener la ID única y funciona bastante bien como una segunda capa de protección después del superpegamento. Al menos detendrá a las personas que son capaces de simplemente clonar la tarjeta SD.

Otro consejo con respecto a la protección mediante el uso de ID es evitar el uso de una verificación simple, es decir

if(readID() != 0xDEADBEEF) exit();

Las comprobaciones simples como estas son fáciles de descubrir (ya sea buscando la identificación conocida o monitoreando las llamadas a exit()) y eliminando. Un enfoque mucho mejor es involucrar la ID como una constante en los cálculos. Es decir, en lugar de i++en algún lugar de su código, escribirá

i = i + readID() - 0xDEADBEEF + 1;

Esto será mucho más difícil de descubrir, ya que la identificación exacta no aparecerá en su código al pie de la letra ( 0xDEADBEEF + 1 == 0xDEADBEF0), e inspeccionar todas las llamadas exit()también no revelará la ubicación de su código de protección. En cambio, su código simplemente se bloqueará en un sistema con la ID incorrecta, y el atacante tendrá que depurar la lógica de su aplicación para comprender y solucionar el problema.

Dmitry Grigoryev
fuente
0

Usando un componente externo, quise decir que el componente de seguridad resolvería ese problema. Si realmente crees que tu idea es genial y vale la pena un costo adicional para hacerlo, te sugiero que uses un MCU / CPU profesional para hacerlo. Al igual que la serie Broadcom BCM58101, no es realmente rentable y no es amigable para un nuevo usuario, pero un alto nivel de seguridad también puede proteger su idea / diseño.

Benjamin Liiiiiiii
fuente