Document ID: /fineweb-2-swissfilter-quality_10-filterrobots/filtered/03583.jsonl.gz/3731

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, Link öffnet in einem neuen Fenster von der Universität Göttingen, der als Professor für Computersicherheit an der Studie , Link öffnet in einem neuen Fensterbeteiligt 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.