Der Computercode als Fingerabdruck des Programmierers

Keine Handschrift gleicht der anderen. Deshalb können wir von einem Text auf den Verfasser schliessen. Weniger einleuchtend ist, dass das auch bei nüchternen Textzeilen von Computerprogrammen möglich sein soll. Doch genau haben Forscher nun gezeigt. Ein Verfahren, das auch Ermittlern nützen könnte.

Notebook mit bärtigem Mann, Symbol für einen Programmierer, der seine Identität mit dem Bart schützt. Bild in Lightbox öffnen.

Bildlegende: Da kann der Bart noch so gross sein: Anonym bleibt der Programmierer damit nicht. Wikimedia.org (bearbeitet)

Man nehme: 250 Programmierer und gebe jedem dieselbe Aufgabe. Zum Beispiel ein Suchproblem oder ein Sortierproblem lösen – und heraus kommen überraschenderweise 250 Programme, von denen jedes das gleiche tut, aber keines gleich gebaut ist.

Das internationale Forscherteam unter der Leitung der Drexel Universität in Philadelphia wählte dieses Verfahren, um herauszufinden, ob man aus den Unterschieden in der Architektur der Programme Rückschlüsse auf den Programmierer dahinter ziehen kann – also den Menschen.

Programmierer entwickeln einen eigenen Stil

Verglichen mit unserer Sprache hat eine Programmiersprache einen viel kleineren Wortschatz und eingeschränktere Grammatik. Doch sie bietet immer noch genügend Freiheiten, damit ein Programmierer einen eigenen Stil entwickeln kann – so wie ein Schriftsteller.

«Der eine programmiert eher defensiv – immer, wenn ein Fehler möglich wäre, macht er eine Abfrage, ob ein Fehler auftritt oder nicht», sagt Konrad Rieck von der Universität Göttingen, der als Professor für Computersicherheit an der Studie beteiligt war, «jemand anders ist eher offensiv – der programmiert drauflos und schaut erst am Ende, ob etwas kaputt oder schief gegangen ist.»

Die Forscher nutzen solche Stilelemente eines Programmierers, um ihn aus der Anonymität herauszuholen – mit Hilfe eines Computerprogramms. Dieser Algorithmus filtert aus vielen Programmen-Texten die Unterschiede heraus und versucht sie, den den Autoren zuzuordnen. Und er erstellt daraus ein Modell, mit Regeln, die der Algorithmus dann auf weitere Programmzeilen anwenden kann.

Hohe Trefferquote

90 Prozent Trefferwahrscheinlichkeit erreichten die Forscher mit diesem «maschinellen Lernen». Das ist viel – und ein grosser Erfolg, der auch für die Polizei nützlich sein könnte. Zum Beispiel, um Schadsoftware von Kriminellen zu entdecken, etwa Viren. Doch damit dies gelingt, müssen die Untersuchungsbehörden bereits Programmbeispiele eines Verdächtigen besitzen, eine «Textprobe» – so wie dies auch beim Fingerabdruck oder DNA-Test nötig ist.

Eine zweite mögliche Anwendung des Verfahrens liegt im Urhebberrecht. Wenn ein Programmierer den Verdacht hat, dass ein anderer sein Programm gestohlen hat und Teile davon in einem eigenen Produkt integriert hat, könnte er im Nachinein womöglich beweisen, dass der gestohlene Code seinem eigenen Stil entspricht – also vermutlich sein Eigentum ist.

Mögliche Gegenmassnahme: Identität fälschen

Könnten aber umgekehrt Programmierer, die kriminelle Machenschaften planen, nicht einfach bewusst einen Programmierstil fälschen, um von der eigenen Spur abzulenken? «Ja!», sagt Konrad Rieck. Ein Programmierer könne seine Identität verschleiern, in dem er absichtlich seinen Code manipuliert – aber er müsste dazu einigen Aufwand betreiben.

In Zukunft vielleicht noch mehr, denn Konrad Rieck möchte das Analyseverfahren so weiterentwickeln, dass es nicht nur auf Programmiertext angewendet werden kann – jenen sichtbaren Text, in dem der Programmierer die Software geschrieben hat. Sondern auch auf die Maschinensprache, jene Sprache, die der Computer direkt verarbeitet.

Diese Übersetzung ist weniger persönlich als der Programmiertext; sie enthält weniger persönliche Merkmale des Programmierers. Wenn die Forscher in Zukunft in diesem Bereich Erfolge erzielen könnten, wäre das besonders interessant. Denn gerade Schadsoftware ist meist nur in dieser Sprache zugänglich – und nicht im einfacheren Originaltext des Programmierers.