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.
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.
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.
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.
Passant
Spehro Pefhany
Benutzer39962
Peter Bennett
Nick Alexejew
user_1818839
rjp