Problema
Una pequeña empresa está tratando de externalizar la fabricación a una pequeña fábrica de terceros. Los productos son dispositivos electrónicos para el consumidor y no requieren ninguna certificación especial, además de CE y FCC clase B (aunque no creo que sea relevante para el problema).
Se requiere que la fábrica pague cierta regalía fija a la compañía por cada dispositivo fabricado.
Para cobrar la regalía, la compañía necesita 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 compañía.
-
Los dispositivos también están equipados con un gestor 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 cierto procedimiento de prueba automatizado, que implica que el dispositivo esté conectado a una PC que ejecuta un software de propósito especial desarrollado por la empresa. Este software también muestra el firmware.
-
Los microcontroladores del dispositivo tienen una ID 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 hasta 500 dispositivos mensuales en total.
-
No es posible enviar ningún hardware entre la empresa y la fábrica.
Suposiciones
-
La fábrica es un negocio legal y razonablemente honesto, no harán grandes esfuerzos para explotar el proceso para su beneficio.
-
El número de dispositivos fabricados es igual al número de dispositivos vendidos; La 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:
- Una vez que el dispositivo está conectado y antes de que se instale el firmware principal, la aplicación solicita la API web de la empresa (posiblemente a través de un protocolo seguro), enviándole la ID única del dispositivo.
- Al recibir dicha solicitud, el servidor de la compañía almacena la ID única en una base de datos (con algunos metadatos, como la fecha / hora, etc.).
- 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 completamente la aplicación de prueba e implementar su propia alternativa, etc. mencionar que la fabricación se detendrá si la API web de la empresa no funciona, aunque no debería ser un problema frecuente en la actualidad.
Preguntas
-
¿Qué enfoques del problema existen en la industria?
-
¿Se puede implementar una solución más confiable con memoria OTP? (algunas de las MCU enumeradas lo tienen, otros productos pueden equiparse con un chip OTP dedicado, aunque no es deseable debido a razones de eficiencia de costos).
-
OTP / criptografía a un lado, ¿hay alguna manera obvia de mejorar la solución descrita que me falta?