NEWS

Prozessoren

Automatisches Auslesen eines ROMs mittels Bilderkennung

Portrait des Authors


Automatisches Auslesen eines ROMs mittels Bilderkennung
14

Werbung

Während aktuelle Chips je nach Komplexität mehrere Milliarden Transistoren und komplexe Verschaltungen beinhalten können, waren die Prozessoren vor einigen Jahrzehnten noch deutlich weniger kompliziert aufgebaut – auch weil die modernen Fertigungsverfahren natürlich noch nicht zur Verfügung standen.

In den Anfangszeiten der Computer gab es sogar noch Festwertspeicher, sogenannter read-only memory (ROM), bei dem die Bits in einzelnen Drähten in Zeilen handverdrahtet waren, um beispielsweise Befehlswärter mit einer Länge von 18 Bit abzuspeichern. Hier können die Drähte noch einzeln nachverfolgt werden, um nachvollziehen, welche Daten gespeichert wurden. In der Halbleiterhersteller wurde aus diesen festen Verdrahtungen dann ein MROM. Hier sind die Daten in in mehreren Reihen zu Bytes zusammengefasst abgelegt.

Ryan Cornateanu, ein Sicherheitsforscher und Reverse Engineer, versuchte sich nun an einem Verfahren, welches die Rückverfolgung der Daten in einem ROM vereinfachen soll. Veröffentlicht hat er seine bisherigen Ergebnisse auf Medium.

Anstatt die Daten manuell auszulesen, soll eine Bilderkennung dies tun. Dazu muss man aber natürlich auf Transistorebene an die Speicherzellen herankommen. Ähnlich wie für das Verfahren zur Erstellung von Die-Shots, also das Abschleifen und Ätzen der Oberflächen, müssen die interessanten Bereiche zunächst freigelegt werden. Am Beispiel eines Atmega328P wurde das Verfahren auf die Probe gestellt.

Der darin verbaute ROM hat eine Größe von 64 Bits vertikal und 16 x 14 Bits in der Horizontalen. Insgesamt kann er also 1.792 Bytes aufnehmen. Ein Foto des geschliffenen und geätzten ROMs reicht aber noch nicht aus. Die Bildverarbeitung muss die einzelnen Bits klar erkennen können, um daraus die notwendigen Daten zu ermitteln. Gelingt die bitweise Erkennung, muss den Daten noch eine Bedeutung zugeordnet werden. Im Falle des ROMs im Atmega328P konnte über ein Offset in den Bitstrings schnell ein Muster erkennbar gemacht werden, so dass Codeschnipsel wie "USB 2.0" oder Strings wie "Print" und "Serial" erkennbar wurden.

Dies zeigt, dass es grundsätzlich möglich ist, einen Speicher oder eine Mikroarchitektur automatisiert auszulesen. Bisher sprechen wir allerdings von wenig komplexen Gebilden, wie einem Speicher mit 1.792 Bytes und selbst hier war eine Nachbearbeitung der Bilddaten notwendig. Dies ließe sich sicherlich durch weitere Optimierungen weitestgehend automatisieren, aber noch einmal: 1,7 kB sind bei weitem nicht die Komplexität, wie wir sie von modernen Chips kennen. Diese auszuwerten, stellt noch einmal ganz andere Hürden. Viele, viele weitere Details findet man im Medium-Post.

Ein Ziel eines solches Verfahrens könnte es sein, ältere Chips im Reverse-Engineering zu digitalisieren. Den Sicherheitsforschern geht es jedoch sicherlich auch darum, nicht öffentliche Informationen und Architekturen auf diese Art und Weise auzulesen.