Sichern von Code auf einem AVR / Arduino und Bereitstellen von Updates


9
  1. Was ist der beste Weg, um Code, der auf ein AVR-basiertes Gerät geflasht wurde, vor Reverse Engineering zu schützen?
  2. Was ist eine einfache Möglichkeit, Endbenutzern Updates bereitzustellen, damit sie selbstständig flashen können, ohne den Code preiszugeben? (Entschlüsselt ein Bootloader ein verschlüsseltes Image?)

Flamme mich nicht für die Förderung von DRM, ich bin für offene Plattformen - ich bin nur neugierig, wie das funktionieren würde.


Tu es nicht. Es gibt KEINE MÖGLICHKEIT , die Möglichkeit eines Reverse Engineerings Ihrer Hardware / Software durch eine böswillige Person vollständig zu verhindern. Alles, was Anti-RE-Maßnahmen bewirken, ist, dass die Umkehrung länger dauert.
Connor Wolf

Antworten:


9

Zuerst:

Auf dem Chip befinden sich Sicherungen, die eingestellt werden können, um zu verhindern, dass externe Werkzeuge den Code vom Chip lesen. Suchen Sie in Ihrem Datenblatt und / oder in Ihrer Programmierdokumentation nach den Schutzsicherungen.

Es ist nicht perfekt, aber es schützt Sie vor einfachen Angriffen.

Zweite:

Sie können die Firmware nicht sicher herunterladen. Der AVR kann geschützte Bereiche nicht selbst programmieren:

http://www.atmel.com/dyn/resources/prod_documents/doc1644.pdf

Das Beste, was Sie tun können, ist, eine verschlüsselte Tokensprache (z. B. Basic oder 4) zu verwenden und den Interpreter mit einem Bootloader auf dem Chip zu schützen, der die verschlüsselten Token in einem offenen Bereich programmieren kann. Während des Betriebs würde der Chip die Anweisungen im laufenden Betrieb entschlüsseln und ausführen.


3
Wenn die Sicherungen nicht perfekt sind, welche Art von Angriff kann sie umgehen?

1
@Anonymous - Ätzen Sie die Abdeckung des Chips chemisch weg und verwenden Sie Elektronenmikroskope, Laser und Mikrosonden, um das Silizium anzuzeigen, mit ihm zu verbinden und es zu bearbeiten. Kostet mindestens 500 US-Dollar, kann aber billiger sein als die Arbeit, die stbra in das Gerät steckt.
Kevin Vermeer

@ KevinVermeer Meinten Sie 500 Dollar? Es scheint mir, dass es viel teurer wäre.
NickHalden

Adam, es gab einen Fehler, also habe ich meinen Kommentar gelöscht
Hulkingtickets

3

Wenn es so wichtig ist und Sie sich besonders Sorgen darüber machen, dass Konkurrenten Ihren Code stehlen, schließen Sie den IP-Schutz für Ihre Codesegmente ab. Sie sollten dies prüfen, wenn Sie trotzdem versuchen möchten, mit einem Projekt Geld zu verdienen.

Bestimmte Codeelemente können entweder patentiert werden (für bestimmte Verarbeitungsmethoden und neuartige Algorithmen) oder als Industriedesign registriert werden (Aussehen, Layout und Anwendung Ihres Codes auf ein Gerät). Möglicherweise möchten Sie einen IP-Anwalt zu diesem Thema konsultieren.


1

Wenn Sie einen eigenen Bootloader geschrieben haben, der verschlüsselte Daten über die serielle Schnittstelle akzeptiert, entschlüsselt und im Codespeicherbereich gespeichert hat, können Sie ein sicheres Code-Firmware-Update durchführen. Jedes Gerät kann sogar einen eigenen Entschlüsselungsschlüssel in Ihrem benutzerdefinierten Bootloader haben.


1
Ich denke, was @Adam Davis sagt, ist, dass Sie, wenn Sie einen Bootloader verwenden (sogar einen, den Sie geschrieben haben), keine durch Sperrbits geschützten Bereiche programmieren können. Wenn Sie also Ihren eigenen verschlüsselten Bootloader geschrieben haben, können Sie nicht verhindern, dass der Chip gelesen wird (Problem 1). Das scheint sowieso das zu sein, was ich von dem Link und dem Datenblatt bekomme.
Lou

Wenn der Bootloader und der Code verschlüsselt sind, würde dies das zweite Problem lösen. Das erste Problem ist fast gelöst, wenn er eine ausreichend sichere Verschlüsselung verwendet. (Die Geschwindigkeit von uC kann ein Flaschenhals sein).
Rick_2047

Wahr. @ Adam Davis schlug oben eine verschlüsselte Tokensprache vor.
Lou
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.