Kontrolle der Anzahl der von einem lizenzierten Hersteller hergestellten Geräte

Problem

Ein kleines Unternehmen versucht, die Fertigung an eine kleine Fabrik eines Drittanbieters auszulagern. Die Produkte sind elektronische Verbrauchergeräte und benötigen keine spezielle Zertifizierung außer CE und FCC Klasse B (obwohl ich nicht glaube, dass dies für das Problem relevant ist).

Die Fabrik muss dem Unternehmen für jedes hergestellte Gerät eine bestimmte feste Lizenzgebühr zahlen.

Um die Lizenzgebühren einziehen zu können, muss das Unternehmen zuverlässig feststellen können, wie viele Geräte in einem bestimmten Zeitraum hergestellt wurden.

Bedingungen

  • Auf hergestellten Geräten wird nicht-triviale Firmware ausgeführt, die vom Unternehmen bereitgestellt wird.

  • Die Geräte sind außerdem mit einem trivialen Custom-Bootloader ausgestattet.

  • Geräte haben keine eigene Kommunikationsmöglichkeit mit dem Unternehmen (keine Verbindung zum Internet, Mobilfunknetz etc.).

  • Jedes hergestellte Gerät durchläuft ein bestimmtes automatisiertes Testverfahren, bei dem das Gerät an einen PC angeschlossen wird, auf dem eine vom Unternehmen entwickelte Spezialsoftware läuft. Diese Software flasht auch die Firmware.

  • Die Mikrocontroller des Geräts haben eine weltweit eindeutige 96/128-Bit-ID. Eigentlich sind die Mikrocontroller STM32F0, STM32F1, STM32F4 und LPC11C24, falls das hilft.

  • Geplante Stückzahlen sind insgesamt bis zu 500 Geräte monatlich.

  • Der Versand von Hardware zwischen dem Unternehmen und der Fabrik ist nicht möglich.

Annahmen

  • Die Fabrik ist ein legales und einigermaßen ehrliches Geschäft, sie werden keine großen Anstrengungen unternehmen, um den Prozess zu ihrem Vorteil auszunutzen.

  • Anzahl der hergestellten Geräte entspricht der Anzahl der verkauften Geräte; Die Menge an fehlerhaften Produkten ist vernachlässigbar.

Lösung

Eine der ersten Lösungen, die mir in den Sinn kommt, ist, die oben erwähnte Testsoftware so zu erweitern, dass sie dem folgenden Algorithmus folgt:

  1. Sobald das Gerät verbunden ist und bevor die Hauptfirmware geflasht wird, fordert die Anwendung die Web-API des Unternehmens an (möglicherweise über ein sicheres Protokoll) und sendet ihr die eindeutige ID des Geräts.
  2. Beim Empfang einer solchen Anfrage speichert der Server des Unternehmens die eindeutige ID in einer Datenbank (mit einigen Metadaten wie Datum/Uhrzeit usw.).
  3. Nach Erhalt der Bestätigung wird die Firmware geladen.

Dies scheint dem Unternehmen die erforderlichen Daten zu liefern.

Die Nachteile liegen auf der Hand: Die Anwendung kann auf vielfältige Weise gepatcht werden, der Host-PC kann die Anfragen an einen Server eines Drittanbieters umleiten, die Fabrik kann die Testanwendung vollständig ignorieren und stattdessen ihre eigene Alternative implementieren usw. Ganz zu schweigen davon Die Produktion wird eingestellt, wenn die Web-API des Unternehmens ausfällt, obwohl dies heutzutage kein häufiges Problem sein sollte.

Fragen

  1. Welche Lösungsansätze gibt es in der Branche?

  2. Kann eine zuverlässigere Lösung mit OTP-Speicher implementiert werden (einige der aufgeführten MCUs haben ihn, andere Produkte können mit einem dedizierten OTP-Chip ausgestattet werden, obwohl dies aus Kostengründen unerwünscht ist).

  3. Abgesehen von OTP/Kryptografie, gibt es eine offensichtliche Möglichkeit, die beschriebene Lösung zu verbessern, die mir fehlt?

Sie müssen Sie bezahlen, um Ihr Produkt herzustellen?
Ja, da sie es auch verkaufen. Das einzige Einkommen, das unser Unternehmen hat, sind die Lizenzgebühren von lizenzierten Herstellern (wir sind Fabless).
Suchen Sie nach vertrauenswürdigen Plattformchips
So hat zumindest Apple lange Zeit sein kompatibles Zubehörprogramm durchgesetzt. Sie mussten einen winzigen Chip von ihnen kaufen, den die Software überprüfte. Es gibt auch allgemeine Marktchips für vertrauenswürdige Plattformen.
Eher rechtliche als elektronische Technologie, aber in der Regel enthalten solche Lizenzverträge eine Prüfungsklausel.
Ihre Lösung wäre in Ordnung, wenn Sie einen Handshake hinzufügen könnten, der Ihnen nicht nur die Zählung mitteilt, sondern diesen Chip auch mit einem übereinstimmenden sicheren Code versorgt, um den Betrieb zu ermöglichen. Um einen Ausfall der API zu umgehen, sollten Sie einen lokalen Codegenerator mit einem festen Limit verwenden, der es ermöglicht, einige zu programmieren, und dann zurückmeldet, wenn die Verbindung wieder online geht.

Antworten (1)

Stellen Sie der Herstellerfirma eine feste Anzahl vorprogrammierter Mikrocontroller zur Verfügung. Viele Erst- und Drittvertriebe bieten einen Programmierdienst an. Da die Firmware nicht trivial ist, könnte die Fabrik kein Produkt mehr produzieren als die Chips, die sie haben.

Vorprogrammierte MCU sind leider keine Option, da die Fabrik Zugriff auf Binärdateien haben wird. Hätte das in der Liste der Bedingungen erwähnen sollen. Außerdem verkompliziert dieser Ansatz ernsthaft die Logistik.