Code-Sicherheit von ARM Cortex M4 MCU

Was sind die Hauptmethoden, mit denen der Code in einer bestimmten ARM Cortex M4 MCU (TI LM4F120H5QR usw.) nach der Bereitstellung extrahiert werden kann?

Ist es möglich, einen Dritten vollständig daran zu hindern, den darin enthaltenen Code zu stehlen?

Antworten (1)

Komplett ist nie möglich. Sie können nur den Aufwand und die Kosten erhöhen.

Das hat nichts mit „cortex m4“ zu tun, sondern alles mit der Implementierung des Chips durch den Hersteller.

Ihr Chip hat den üblichen Satz von Lese-/Ausführungsschutzbits. Ich bezweifle, dass in der (offenen) Literatur viel über die detaillierten Schwächen eines solchen neuen Chips bekannt ist.

Ganz allgemein gesagt, ist ein solches 'normales' Schutzsystem gegen einzelne Hacker, die meisten Länder und Low-Budget-Konkurrenten in Ordnung. Es wird wahrscheinlich nicht gegen einen großen Konkurrenten (in der Größe von IBM/Apple/Google, besonders wenn sie eine Chipfabrik besitzen), die CIA oder die gemeinsamen Bemühungen der Hacker-Community bestehen.

Eine bemerkenswerte Möglichkeit, Ihren Code zu schützen, besteht darin, so wenig wie möglich zu verbergen, also reduzieren Sie die Population, die am Hacken Ihres Produkts beteiligt sein wird. Wenn die "kombinierte Hacker-Community" etwas mit Ihrem Gerät machen möchte, wogegen Sie nicht wirklich Einwände haben, stellen Sie sicher, dass sie dies tun können, ohne Ihr Gerät vollständig zu hacken. Das wird den kombinierten Aufwand für das Hacken erheblich reduzieren.

Welche Mechanismen verwendet werden können, um das Schutzschema dieses speziellen Chips zu umgehen, kann nicht vorhergesagt werden, aber Sie können lesen, wie andere Chips geknackt wurden, um eine Vorstellung von der Bandbreite der Methoden zu bekommen. Nur ein paar:

  • Stromversorgungsspannungen außerhalb der Spezifikation und/oder Zyklen
  • sorgfältige Überwachung des Versorgungsstroms
  • Entkappen des Chips und Deaktivieren des Schutzsystems durch UV-Licht oder durch Schneiden von Leitungen
  • Entkappen und Lesen der elektrischen Ladungen (oder Ströme) in dem Speicherarray