Mikroprozessoren auslesen

Und dann natürlich ein Beispiel, bei dem die Chancen für diese Art des Angriffs wegen der geringen Komplexität der Anwendung naturgemäß relativ schlecht stehen.

Warum hast du als Beispiel nicht gleich ein Programm der Art:

.CSEG .ORG 0 main: rjmp main

gewählt? Ich meine, dann wäre deine Beweisführung, daß nicht sein kann, was nicht sein darf, doch gleich so richtig wasserdicht. Ich würde mir dann jedenfalls nicht mehr trauen, einen Gegenbeweis zu führen.

Allerdings: Je simpler die Anwendung und je weniger Eingangssignale, desto schneller führt wiederum der brute force-Angriff zum Ziel, der ohne jede Sicherheitslücke auskommt.

Klar ist aber, daß ich eigentlich µC mit deutlich komplexeren Anwendungen meinte, bei denen das Auslesen überhaupt _lohnend_ erscheint. Für ein bissel Portgeklimper reißt sich niemand den Arsch auf. Das ist viel schneller selbst programmiert als reverse engineered.

Schon da gibt es allerdings möglicherweise einen Angriffspunkt. Sowas ähnliches hatte ich schonmal: Ein BCD-Encoderschalter als Eingangssignal. Schalter durch DIP-Switches ersetzt, illegalen BCD-Code erzeugt und... Bumm.

Der Herr Programmierer hatte die Einsprünge für die legalen BCD-Codes als Adresstabelle organisiert und ist dann in feinster Profimanier mit push, push, ret gesprungen. Bloß war die Tabelle halt bei 9 zu Ende und ein Abfrage zu dieser Grenze schien ihm wohl überflüssig, der Schalter konnte ja schließlich keine anderen Codes erzeugen. Meinte jedenfalls dieser Möchtegern-Profi. Tatsache ist nämlich, daß beim normalen Umschalten des Schalter schon oft genug 1111b an den Eingängen lag und das Programm nur deshalb nicht schon im normalen Betrieb abgestürzt ist, weil die Entprellung, die er immerhin vorgesehen hatte, diesen Code "geschluckt" hat. Jedenfalls wenn man den Schalter nicht absichtlich langsam gedreht hat...

Reply to
Heiko Nocon
Loading thread data ...

Ok, wäre möglich, akzeptiert.;) Gibt es auch eine Möglichkeit den aktuell abgearbeiteten Befehl anhand von Stromaufname und Absturzverhalten (kurzer Taktimpuls) zumindest zu erahnen? Bzgl. des Beispiels: Damit die Buffer overflow Variante funktioniert muss wohl mindestens an einer Stelle im Programm der lpm Befehl verwendet werden und ein mehr oder weniger komplexer Datenaustausch mit einem anderen System stattfinden. Ich glaube allerdings nicht, dass das bei der Mehrzahl der Anwendungen von AVRs erfüllt ist. Die verwendet man doch ehr für solche kleinen Steueraufgaben wie z.B. in einer Waschmaschine.

Gruss, Michael

Reply to
Michael Dreschmann

Solche einfachen Programme sind auch nicht das Ziel eines solchen Angriffs. Eher interessant sind Implementationen in denen es um Sicherheit geht. Noch schoener ist es, wenn sich im Chip ein cryptographischer Schluessel befindet der fuer den Angreifer interessant ist. Da sind dann die Programme auch schon etwas komplexer.

Es gibt da viele Ideen fuer solche Angriffe... Zu kurze Taktimpulse, Modulation der Versorgung und genaue Messung des Stromverbrauchs waehrend des Programmlaufs sind nur

3 Angriffspunkte.

Selbst Architekturen die als gegen solche Angriffe 'gesichert' verkauft werden wurden schon geknackt.

Gerrit

Reply to
Gerrit Heitsch

Hallo Heiko,

Super, und jetzt? Der Programmierer hat seinen Code wohl kaum so geschrieben, dass jetzt noch ein sinnvolles Weiterlaufen des Programms stattgefunden hat und anstelle dessen geradewegs seinen Assemblercode durchspult. Du hast weder Zugriff auf Daten- noch Adressbus und has auch keinen Schimmer, W beide gerade stehen. Das Reverseengineering gibt ein Gleichungssystem mit so vielen Unbekannten, dass ich Dir einfach nicht abnehme, dass Du daraus was sinnvolles rekonstruierst, schon gar nicht, wenn es über ein Trivialprogramm hinaus geht.

"Das glaub ich erst, wenn ichs gesehen habe..." Thomas (so ums Jahr 36)

Marte

Reply to
Marte Schwarz

Es genügt, wenn "irgendwo" im Programmspeicher das Bitmuster für eine der 65 verschiedenen lpm-Varianten liegt. Die Chance dafür liegt schon bei einem mit Zufallsgenerator erzeugten Bitmuster im Programmspeicher bei ca. 1:1000. Das "irgendwo" muß nicht notwendigerweise in dem Bereich sein, wo wirklich Code liegt. Die binären Abbilder von konstanten Datenstrukturen und Stringliteralen enthalten auch oft "nützliches" Bitmaterial.

In der Realität enthält aber praktisch jedes nichttriviale Programm an etlichen Stellen lpm-Befehle. Deshalb ist die Chance deutlich besser als die 1:1000 des reinen Zufalls.

Ja klar. Mit der Komplexität steigt die Chance für Fehler und auch die Chance, daß sie sich für einen Angriff ausnutzen lassen. Und obendrein natürlich auch die Chance, daß sich überhaupt jemand ernsthaft darum bemüht, sie zu finden und auszunutzen.

Reply to
Heiko Nocon

Dieter Wiedmann schrieb:

Wenn die Strukturen nicht so winzig wären, könnte man eventuell mit Neutronenradiografie was machen. Ich hab jetzt allerdings nicht die Querschnitte von Al und Si nachgeschaut. Die Methode geht oft dann, wenn Röntgen nicht geht (leichte Materialien in Schwermetallen usw.).

formatting link

--
mfg Rolf Bombach
Reply to
Rolf_Bombach

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.