Verhindern Sie Firmware-Diebstahl

Ich würde gerne wissen, ob es heute eine 100% sichere Option gibt, um das Kopieren von Firmware von MCUs zu verhindern. Bei den meisten MCUs kann bei der Programmierung eine Option festgelegt werden, die jede Codeextraktion blockiert, aber dies ist normalerweise leicht zu hacken, insbesondere wenn Sie Säuren verwenden, um Zugriff auf den Chip zu erhalten und ihn zu untersuchen.

Ich habe einmal gesehen, dass einige MCUs kryptografische Lösungen verwenden, aber ich bin mir nicht sicher, wie sie funktionieren. Ich nehme an, dass sie externe Hardware nach bestimmten Schlüsseln durchsuchen, aber dies lässt sich nach dem Extrahieren leicht im Code ändern.

Eine 100 % sichere Möglichkeit, Firmware-Diebstahl zu verhindern, besteht darin, das Produkt niemals zu erstellen. Es gibt keine 100% sichere Option. Eine engagierte Person/Team/Firma wird es bekommen, wenn sie es stark genug will.
Es gibt keine solche Sache. Das Beste, was Sie tun können, ist, zu versuchen, es dem Gegner zu teuer zu machen.
Krypto ist alles eine Frage der Zeit; Irgendwann wird es kaputt gehen, also kannst du nur sicherstellen, dass es 10.000 Jahre dauern würde, bis es kaputt geht. Verwenden Sie also vielleicht einen Mikroprozessor, um den Code im Handumdrehen zu zerlegen? Aber wenn der Code verschlüsselt ist, befindet sich der Schlüssel irgendwo auf der Tafel und kann möglicherweise abgerufen werden. Also ... Ich denke, das gesamte Betriebssystem muss verschlüsselt werden. Nur ein Gedanke.
Wenn ein Interessent Ihr Gerät erhalten kann, kann er seine Aktionen beobachten und wahrscheinlich sein eigenes Programm erstellen, um die Aktionen Ihres Geräts zu duplizieren.
Wenn Regierungen Firmware-Diebstahl ernsthaft verhindern müssen, erkennen sie den physischen Angriff (Angreifer dringt in das Gehäuse ein) und löschen die Firmware. Die Annahme ist, dass ein Angreifer, wenn er die Leiterplatte in die Finger bekommen kann, von diesem Punkt an alles tun kann.
Das Produkt nie zu erstellen, ist auch nicht 100% sicher: Ich möchte nicht an die Anzahl der Produkte denken, die ich noch nie erstellt habe (nur um sicher zu gehen), die irgendein Konkurrent trotzdem kopiert hat!
@NickAlexeev stieß auf das große Ding für Kryptogeräte. Die Manipulationserkennung führt zu einem Wischvorgang, obwohl man mit genügend Mustergeräten vermutlich die Manipulationserkennung zurückentwickeln und umgehen könnte.

Antworten (3)

Wenn Sie wissen, dass Ihre MCU immer mit Strom versorgt wird, könnten Sie Ihre Firmware theoretisch im RAM behalten und externe Maßnahmen anwenden, die die Stromversorgung des RAM unterbrechen/löschen, sodass die Firmware verloren geht, wenn der Benutzer so etwas wie das Entfernen einer Abdeckung tut. Dies wird für einige Bankanwendungen durchgeführt (obwohl sie normalerweise nur Kryptoschlüssel löschen). Es ist nicht zu 100 % garantiert, aber es bringt Sie wahrscheinlich nahe genug dorthin, dass es für fast jeden Angreifer nicht durchführbar ist.

Weitere Ideen finden Sie in diesem Teardown-Video eines Kreditkartenautomaten .

In Wirklichkeit sehe ich keine Notwendigkeit für dieses Maß an Hardwareschutz für Firmware. Es wird nicht billig sein, und ein opportunistischer Konkurrent könnte die Funktionalität genauso leicht zurückentwickeln und ein billigeres Produkt als Sie verkaufen.

Manchmal macht der Schutz eines Algorithmus Ihr System einzigartig, wie Präzisions-Motorsteuerungsalgorithmen usw. ... und das Speichern im RAM ist nicht so löschbar, wie die Leute denken, Daten bleiben für eine Minute oder so im Speicher ... und schreiben darüber sollte besser sein ... danke für den Link
Hängt von der Art des RAM ab, den Sie haben. Einige sind für diesen Zweck spezifiziert, wenn Sie kritische Daten haben, die geschützt werden müssen. Ich bin der Meinung, dass es sich bei Fällen, in denen es um den Schutz spezieller Codes/Algorithmen in so hohem Maße geht, um Fragen der „nationalen Sicherheit“ handelt, beispielsweise um Raketenleitsysteme (obwohl Sie in Schwierigkeiten geraten, wenn der Angreifer Zugriff auf die Hardware hat bereits). Entfernen Sie einfach Debug-Header und möglicherweise wird das Vergießen Ihres Geräts so ziemlich alle schändlichen Unternehmer stoppen.
Ich weiß nichts über SRAM, aber ich denke, es gab Experimente, bei denen der Inhalt von DRAM unter Verwendung von Kryotechnik lange genug konserviert wurde, um brauchbare Informationen daraus zu gewinnen. Ich denke jedoch, dass die Software normalerweise eine Nullisierung des sensiblen Bereichs durchführt, was die Wiederherstellung von Daten erheblich erschweren würde.
@RJP Ich habe dieses kryogene Experiment auch gesehen. Das Nullen des RAM ist vorzuziehen, aber dies gilt nur für Systeme, bei denen ständig Strom anliegt

Wenn Sie der Meinung sind, dass der Zugang zu Säurewürfeln einfach ist, gibt es nur wenige harte Lösungen :-).

Eine externe "Box", die gelieferte Daten mit einem nützlichen und unbekannten Algorithmus oder Prozess verarbeitet und auf die mit kryptografisch sicheren Mitteln (z. B. Public-Key-Kryptographie) zugegriffen wird und ein nützliches Ergebnis zurückgibt, macht das System so sicher wie entweder das externe Gerät oder wie die Schwierigkeit den Algorithmus oder Prozess zu replizieren. Beide können "sehr hart" gemacht werden. [z. B. ein intern betriebenes Gerät mit Strom- oder Einbruchserkennung über ein halb zufällig verwürfeltes Netz aus feinem Kupferdraht, das mit dem gesamten Satz in einer Keramikmatrix um das Gerät gewickelt ist, würde den vernünftigsten Angriffsmethoden widerstehen.]

Hier ist ein solches System von vor langer Zeit {1987!} -
das ein System mit dem Titel "Ninox"* beschreibt. Dieses Papier sollte auch meinen Namen enthalten, aber ich habe es versäumt, den Anhang kryptografisch sicher zu machen :-). Der derzeit wahrgenommene Wert dieses "Vorschlags" kann durch die Tatsache angezeigt werden, dass das Papier jetzt für 1,98 $ erhältlich ist.

Abstrakt:

Diese Abhandlung beschreibt ein Software-Schutzsystem, das wahrscheinlich in den nächsten paar Jahren weit verbreitet sein wird, um die Software-Piraterie-Probleme zu kontrollieren, die von den Entwicklern von Mikrocomputer-Software erfahren werden.

Das beschriebene System wurde vom Autor und einem Mitarbeiter entwickelt. Eine Reihe anderer Forscher haben unabhängig voneinander ähnliche Techniken entwickelt, aber wir glauben, dass die in diesem Dokument beschriebene Arbeit einige nützliche neue Entwicklungen enthält. Wir haben das System Ninox genannt.

Das System verwendet ein serialisiertes Gerät in jedem Computersystem und stellt Einrichtungen bereit, so dass an den Benutzer gelieferte Software nur auf der Maschine des Benutzers ausgeführt werden kann und es praktisch unmöglich ist, die zu modifizierende Software auf einer anderen Maschine auszuführen.

Kryptografie mit öffentlichem Schlüssel wird verwendet, um Programme zu verschlüsseln, und es wird ein Verfahren zur Programmverteilung beschrieben. Das Papier untersucht auch einige der Schwierigkeiten mit dem System und schlägt einige der Methoden vor, mit denen das System angegriffen werden könnte, und wie es diesen Angriffen standhält. Es wird allgemein angenommen (und durch formale informationstheoretische Analysen unterstützt), dass es unmöglich ist, ein vollständig sicheres System zu erstellen.


  • Ninox novaeseelandiae ist die neuseeländische Eule – allgemein als Morepork (von ihrem Ruf) oder Ruru in Maori (auch von ihrem Ruf) bezeichnet. Ich habe den Namen gewählt, weil 'Ninox' (mehr als die meisten) im Dunkeln sehen kann. Mehr

Geben Sie hier die Bildbeschreibung ein

Sehr interessant, danke!

Kürzlich habe ich ein benutzerdefiniertes ARM-Board für meinen Kampfroboter hergestellt, und der Atmel SAM3S4, den ich darauf verwendet habe, hat einen Löschstift darauf, der bei Belastung Ihren Mikrocontroller buchstäblich auslöscht.

Dies ist als Sicherheitsfunktion für Industriespionage gedacht, bei der Sie einen Sensor / Schalter / ein kniffliges Gerät einrichten können, das dies bei Erkennung eines Einbruchs auslöst. Alles, was übrig bleibt, ist der SAMBA-Bootloader, den diese Atmel-Geräte wiederherstellen, wenn sie alles andere löschen.

Diese Funktion wird tatsächlich auch für USB-Flash-Programme auf dem Gerät verwendet, es sei denn, Sie haben natürlich eine JTAG-Verbindung, die nicht erforderlich ist.

Ja, diese Pins helfen, aber sie hängen davon ab, ob Ihre Sensoren gut funktionieren. Schauen Sie sich das Video an, das helloworld922 von Mike gesendet hat. Es zeigt auch diese Art von Pin
Aus Neugier, braucht man wirklich einen ARM für einen Combot? Früher habe ich viel in den USA und Brasilien an Wettkämpfen teilgenommen, und die meisten Roboter sind in Bezug auf die eingebettete Elektronik für die Notwendigkeit einer ARM-MCU wirklich einfach
@mFeinstein, der Flohgewichts-Kampfroboter, war nur eine anfängliche Anwendung für mein Board, das Endziel ist unter anderem die niedrigauflösende Robotervision für die Zielerfassung und für visuelles SLAM (ratSLAM). Auch aus persönlichem Interesse an ARM-MCUs, weil ich zu viele eingebettete 8-Bit-AVR-Mikrocontroller gemacht habe, dachte ich, ich würde mich ins ARM-Land wagen.