Controlar la cantidad de dispositivos fabricados por un fabricante con licencia

Problema

Una pequeña empresa está tratando de subcontratar la fabricación a una pequeña fábrica de terceros. Los productos son dispositivos electrónicos de consumo y no requieren ninguna certificación especial además de CE y FCC clase B (aunque no creo que sea relevante para el problema).

La fábrica debe pagar una determinada regalía fija a la empresa por cada dispositivo fabricado.

Para cobrar la regalía, la empresa debe tener una forma confiable de saber cuántos dispositivos se han fabricado en un período de tiempo determinado.

Condiciones

  • Los dispositivos fabricados ejecutan firmware no trivial proporcionado por la empresa.

  • Los dispositivos también están equipados con un cargador de arranque personalizado trivial.

  • Los dispositivos no tienen medios de comunicación con la empresa por sí mismos (no están conectados a Internet, redes celulares, etc.).

  • Cada dispositivo fabricado se somete a un determinado procedimiento de prueba automatizado, que implica que el dispositivo se conecte a una PC que ejecuta un software de propósito especial desarrollado por la empresa. Este software también actualiza el firmware.

  • Los microcontroladores del dispositivo tienen una identificación de 96/128 bits única a nivel mundial. En realidad, los microcontroladores son STM32F0, STM32F1, STM32F4 y LPC11C24, si eso ayuda.

  • Las cantidades proyectadas son de hasta 500 dispositivos mensuales en total.

  • El envío de cualquier hardware entre la empresa y la fábrica no es factible.

suposiciones

  • La fábrica es un negocio legal y razonablemente honesto, no harán grandes esfuerzos para explotar el proceso en su beneficio.

  • El número de dispositivos fabricados es igual al número de dispositivos vendidos; cantidad de productos defectuosos es insignificante.

Solución

Una de las primeras soluciones que viene a la mente es extender el software de prueba mencionado anteriormente para que siga el siguiente algoritmo:

  1. Una vez que el dispositivo está conectado y antes de que se actualice el firmware principal, la aplicación solicita la API web de la empresa (posiblemente a través de un protocolo seguro), enviándole la identificación única del dispositivo.
  2. Tras la recepción de dicha solicitud, el servidor de la empresa almacena la identificación única en una base de datos (con algunos metadatos como fecha/hora, etc.).
  3. Una vez recibida la confirmación, se cargará el firmware.

Esto parece proporcionar a la empresa los datos necesarios.

Los inconvenientes son obvios: la aplicación se puede parchear de muchas maneras, la PC host puede redirigir las consultas a un servidor de terceros, la fábrica puede ignorar la aplicación de prueba por completo e implementar su propia alternativa en su lugar, etc. Sin mencionar que la fabricación se detendrá si la API web de la empresa no funciona, aunque no debería ser un problema frecuente hoy en día.

Preguntas

  1. ¿Qué enfoques del problema existen en la industria?

  2. ¿Se puede implementar una solución más confiable con memoria OTP (algunas de las MCU enumeradas la tienen, otros productos pueden equiparse con un chip OTP dedicado, aunque no es deseable por razones de rentabilidad).

  3. Aparte de OTP/criptografía, ¿hay alguna manera obvia de mejorar la solución descrita que me falta?

Te tienen que pagar por fabricar tu producto??
Sí, ya que también lo venden. El único ingreso que tiene nuestra empresa son las regalías de los fabricantes autorizados (no tenemos fables).
Busque chips de plataforma de confianza
Así fue como durante mucho tiempo al menos Apple hizo cumplir su programa de accesorios compatibles. Tenías que comprarles un pequeño chip que el software verificaba. También hay chips de plataforma de confianza en el mercado general.
Tecnología legal en lugar de tecnología electrónica, pero por lo general estos contratos de licencia incluyen una disposición de auditoría.
su solución estaría bien si puede agregar un apretón de manos que no solo le indique el conteo sino que también proporcione ese chip con un código seguro coincidente para permitir la operación. Para evitar que la API esté inactiva, tenga un generador de código local con un límite fijo que permita programar algunos y luego informe cuando la conexión vuelva a estar en línea.

Respuestas (1)

Proporcione a la empresa fabricante un número fijo de microcontroladores preprogramados. Muchas distribuciones propias y de terceros brindan un servicio de programación. Debido a que el firmware no es trivial, la fábrica no podría producir más productos que los chips que tienen.

Desafortunadamente, las MCU preprogramadas no son una opción, ya que la fábrica tendrá acceso a los binarios. Debería haber mencionado eso en la lista de condiciones. Además, este enfoque complica seriamente la logística.