Wie kann ich meinen Robotercode schützen?

Wie kann ich meinen Robotercode schützen?

Ich möchte einen Roboter mit einigen Minicomputern wie Raspberry-Pi bauen und darauf das Linux-Betriebssystem verwenden. Ich denke, diese Boards (RPi, NanoPi usw.) haben eine externe SD-Karte, von der das Betriebssystem gebootet werden kann, und mein Code wird dorthin (auf die SD-Karte) gehen. Wie kann ich also meinen Code vor jemandem schützen, der ihn kopieren möchte?

Mit meinem Code meine ich meine Programme, die mit CMUsphinx, Opencv usw. geschrieben sind.

Gibt es Möglichkeiten, jede SD-Karte für eine bestimmte Karte zu spezifizieren? Ich meine, die SD-Karte Nr. 1 läuft nur auf Karte Nr. 1.

Oder vielleicht einen versteckten Code auf Platinen und SD-Karten platzieren, der einen Algorithmus verwendet und übereinstimmen muss, um ausgeführt zu werden?

Antwort1

Sie können jemanden, der physischen Zugriff auf das Gerät hat, nicht davor schützen, Ihren Code zu kopieren. Wenn das Board Ihren Code lesen kann, kann das auch jeder andere.

Um den Code vor dem Kopieren zu schützen, müssen Sie ein Gerät mit manipulationssicherem Speicher verwenden. Solche Hardware gibt es, sie liegt jedoch in einer höheren Preisklasse.

Sie können einen Test in Ihren Code einfügen, um eine Hardwarekennung zu überprüfen und den Start zu verweigern, wenn er auf einem anderen Hardwaregerät ausgeführt wird. Dies macht es unmöglich, einengenaudirekt kopieren, aber es ist immer noch einfach, den Code zu ändern, um die Prüfung zu umgehen, oder ihn in einer virtualisierten Umgebung auszuführen, die Ihrem Code die erwartete Hardware-Identifikation zuführt. Im Grunde ist dies eine Möglichkeit, ehrliche Leute ehrlich zu halten, aber es wird niemanden abschrecken, der den Code kopieren möchte.

Antwort2

Um Ihre Daten zu schützen, benötigen Sie einen Schlüssel, egal welcher Art, den Sie physisch schützen und kontrollieren können und der von Ihren geheimen Daten getrennt ist. Ein Beispiel für eine solche Lösung ist das Passwort in Ihrem Gehirn – es wird physisch vom Besitzer geschützt, indem er es sich merkt.

Als Passwort kann ein visuelles Token für Ihren Superroboter dienen, z. B. ein Stück Papier mit einem Barcode, das Ihre Software entschlüsselt und ihre Ausführung ermöglicht. Dies kann eine Überlegung wert sein, da dasselbe Stück Papier zum Herunterfahren Ihrer Kreation verwendet werden kann, natürlich mithilfe von OpenVC und Skripten.

Eine weniger praktische, aber einfacher umzusetzende Möglichkeit besteht darin, zwei SD-Karten zu haben. Eine enthält den Schlüssel und wird zum Booten des Systems verwendet. Sie wartet, bis Sie die SD-Karte wechseln, und fährt danach mit dem Booten fort.

Sie sollten sich ansehen, wieinitramfswird zum Booten des gesamten Systems verwendet. Sie sollten sich ansehen, wie Siebenutzerdefiniertes Initramfs, und Sie können das Init-Skript zum Warten und Entschlüsseln der Mounting-Vorgänge für Ihre zweite Karte im Hauptsystem ändern.

Das System ist nicht perfekt, aber schmutzig und billig.

Es muss auch keine Initramfs-Lösung sein. Sie können auch Lösungen wie das Kopieren Ihrer ausführbaren Codes von einem USB-Laufwerk auf eine Ramdisk verwenden, das Sie nur zum Starten Ihrer Kreation einstecken und wieder entfernen, wenn es aktiv wird.

Wenn Sie Geheimnis und Schlüssel auf einem Medium haben (ist das ein cleverer Trick, wurde etwas versteckt usw.), kann es zurückentwickelt werden.

Für mich ist die Erstellung einer Initramfs-Lösung mit weniger Aufwand verbunden, es gibt jede Menge Informationen zur Erstellung benutzerdefinierter Initramfs.

verwandte Informationen