10.03.04

Conrad schreibt zum Thema Computer Science:

Reflections on Trusting Trust

Einer unserer Professoren hat uns vorhin in der Vorlesung auf ein interessantes Problem aufmerksam gemacht.

Man kann sich nicht sicher sein, dass ein Programm keinen böswilligen Code enthält, selbst wenn man den Quelltext des Programms gelesen hat, weil der Compiler beliebigen Code einfügen kann.

So weit, so gut. Jetzt kommt der Hammer: man kann sich selbst dann nicht sicher sein, wenn man den Quelltext des Compilers kennt und den Compiler selbst compiliert hat!

Der Beweis: Ken Thompson hat in einem "klassischen" Artikel beschrieben, wie man einen compiler so hacken kann, dass er in ein bestimmtes Programm eine Hintertür einbaut - und dass er, wenn er sich selbst compiliert, dieses Verhalten miteinbaut.

Damit wird dann jede Instanz des compilers, die mit einer "gehackten" version compiliert wird, selbst gehackt - selbst wenn der source code, den man da gerade compiliert, die Hintertür gar nicht mehr enthält!

Man müsste also schon den Maschinencode inspizieren, um wirklich sicher alle Sicherheitslücken überhaupt finden zu können...


Interessanter Nebenkriegsschauplatz, witzig zum Drüber-nachdenken: man schreibe ein Programm, das seinen eigenen Quellcode ausgibt. Ist nicht so einfach, wie es sich vielleicht anhört ;)

Geschrieben von Conrad um 10.03.04 11:24 | TrackBack
Comments