Ich versuche, den gesamten Flash vor dem Lesen durch ISP zu schützen. Es verfügt über einen Bootloader, der den Anwendungsbereich selbst programmieren kann.
Sperrbyte setzen auf:
LB1/LB2
erlaubt dem Benutzer nicht, den Bootloader zum Hochladen neuer Firmware zu verwenden.
BLB12/BLB11
und BLB01&BLB02
wird das Lesen von Flash durch ISP nicht verhindern, wenn ich mich nicht irre.
Es gibt also keine Möglichkeit, den Benutzer die Firmware über einen benutzerdefinierten Bootloader aktualisieren zu lassen und gleichzeitig den Flash vor dem Lesen zu schützen?
Sie haben keinen Chip angegeben, das Folgende ist hauptsächlich auf die 8-Bit-Atmega-Geräte ausgerichtet, aber es sind allgemeine Informationen. Lesen Sie den Abschnitt „Speicherprogrammierung“ für das Datenblatt Ihres spezifischen Chips, um genauere Informationen zu erhalten!
Abgesehen davon, und wie Sie sagten, enthalten alle AVR-Geräte zwei Lock-Bits mit den Namen LB1 und LB2. Durch Programmieren dieser (auf 0, niedrig) wird der Inhalt, der in Flash- und EEPROM-Speicher geschrieben wird, gemäß der folgenden Tabelle geschützt. Das Schutzniveau ist in drei Modi unterteilt, wobei Modus 1 keinen Schutz bietet und Modus 3 maximalen Schutz bietet. Es ist möglich, in einen höheren Schutzmodus zu wechseln, indem einfach die Lock-Bits neu programmiert werden.
Der AVR erlaubt das Ändern von "High"-Bits auf "Low", aber nicht umgekehrt. Es ist nicht möglich, ein "niedriges" Lock-Bit in ein "hohes" zu ändern, daher ist eine Verringerung des Schutzniveaus nicht möglich. Um die Lock-Bits zu löschen, ist ein vollständiger Chip Erase erforderlich, der den Flash-Speicher löscht.
Allein diese 2 Lock-Bits (LB1 und LB2) werden, wenn sie niedrig sind, 99,9 % der Leute daran hindern, Ihre Firmware zu stehlen! Wahrscheinlich mehr als 99,9%. Es wäre fast immer einfacher, Ihren Code zurückzuentwickeln.
Es gibt also keine Möglichkeit, den Benutzer die Firmware über einen benutzerdefinierten Bootloader aktualisieren zu lassen und gleichzeitig den Flash vor dem Lesen zu schützen?
Nach meinem besten Wissen (ich könnte mich irren, aber ich glaube, ich hätte vorher Probleme damit gehabt) können Sie auf Geräten mit Bootloader-Schutzsicherungen (BLB12 und BLB11) Ihren benutzerdefinierten Bootloader - Bereich sperren, SPI deaktivieren und sein geschützt vor 97-98% der Menschen.
Wenn jedoch keines der Sperrbits programmiert ist, sind keine Speichersperrfunktionen aktiviert!!! Die ISP-Deaktivierung reicht nur aus, um 70 % der Personen zu blockieren.
Für einige zusätzliche Informationen befinden sich die Lock-Bits und Fuses weder im normalen Flash- oder EEPROM-Bereich, noch sind sie von der Software aus zugänglich, mit Ausnahme der Lock-Bits, die sich auf den Bootloader in Geräten mit der Selbstprogrammierungsfunktion beziehen. Tabelle 2 in diesem App-Hinweis hilft Ihnen dabei, herauszufinden, was Sie für Ihr spezielles Gerät tun können!
Atmels AVR-Linie sind keine Hochsicherheitsgeräte (sofern nicht ausdrücklich darauf hingewiesen!) und als solche kommen sie absolut nicht mit einer Code-Sicherheitsgarantie, noch sollten sie! Wie alle nicht sicheren Geräte (und leider sogar einige sichere) sind sie anfällig für häufige Angriffe!
Bearbeiten
Ich werde den Header der HV-Programmierschnittstelle an Bord setzen. Aber kann jemand einen HV-Programmierer verwenden, um Flash zu LESEN? Ich weiß, dass ein HV-Programmierer das Löschen von Chips durchführen kann, selbst wenn ISP/Jtag deaktiviert sind.
Ich denke nicht, dass Sie den HV-Programmierer in Ihr Board-Design aufnehmen sollten, es sei denn, dies ist unbedingt erforderlich, und Sie wissen sicher, dass er mit nichts Probleme verursacht. HV-Programmierer (12-Volt-Signale) sind nur als Sicherheitsmaßnahme zum Programmieren gesperrter (meistens fehlergesperrter) Chips verfügbar. Theoretisch ist dies nur dazu gedacht, das Gerät zu programmieren, nichts zu lesen. Und ich habe noch nie von einem Exploit gehört, der das Lesen ermöglichen würde.
Zum Aktualisieren des Bootloaders (gelegentlich) werde ich den Header der HV-Programmierschnittstelle an Bord setzen. Aber kann jemand einen HV-Programmierer verwenden, um Flash zu LESEN? Ich weiß, dass ein HV-Programmierer das Löschen von Chips durchführen kann, selbst wenn ISP/Jtag deaktiviert sind.
Ich denke, es gibt eine Möglichkeit, den gesperrten Flash über den Bootloader zu aktualisieren (was vielleicht mit einem internen Schreibflag und / oder ISR zu tun hat???) Aber ich muss meine Notizen durchsuchen und es vielleicht testen. Ich werde dies nicht für ~ 20 Stunden tun können; Daher empfehle ich dringend, eine neue Frage zu stellen , die sich nur darauf und für den von Ihnen erwähnten Prozessor konzentriert. Das ist eine sehr gute Frage !
Sie können die Sperrbits auf einigen ATMega-Geräten verwenden und trotzdem Ihren Code mit dem Bootloader aktualisieren.
Ich habe LB1 und LB2 auf einem ATMega 328 programmiert. Dann den Bootloader aufgerufen, das Hauptprogramm aktualisiert - alles hat perfekt funktioniert.
Der ISP kann weder Flash / EEPROM / Fuses lesen noch schreiben, aber der Bootloader kann immer noch den Anwendungsabschnitt schreiben.
Ein Chip Erase mit dem ISP löscht die Sperrbits (LB1 und LB2), löscht aber auch den gesamten Flash / Eeprom, sodass Sie Ihren Code schützen können (jedoch müssen Sie sicherstellen, dass Ihr Bootloader nicht gehackt werden kann).
hallowelt922
Pablo
LB1
und erklärtLB2
, was ich auch in meiner Frage als einschränkende Option zur Verwendung des Bootloaders für Upgrade-Zwecke beschrieben habe. Es ist also keine Option. WasBLB12
undBLB11
angeht - das verstehe ich nicht. (Fortsetzung folgt)Pablo
Garret Fogerlie
Garret Fogerlie
Garret Fogerlie
Pablo
Garret Fogerlie