Donnerstag, 25. April 2024

Archiv

Coden wie Harry Potter
Der einzigartige Stil eines Software-Entwicklers

Programmierer von Computerprogrammen können wohl nicht länger anonym bleiben. Programmieren wird wie eine Sprache erlernt und jeder Mensch entwickelt dabei seinen eigenen Stil. Forscher wollen nun über eine Mustererkennung feststellen, wer für ein bestimmtes Programm verantwortlich ist. Das hat Auswirkungen bis in den militärischen Bereich hinein.

Von Peter Welchering | 14.05.2016
    Auf einem Computermonitor ist der Binärcode zu sehen.
    Auf einem Computermonitor ist der Programmcode zu sehen (picture alliance / dpa / Oliver Berg)
    "De-Anonymisierung ist einfacher geworden. Das wirkt sich auf Programmierer und insbesondere auf Open-Source-Programmierer aus", sagt Aylin Caliska-Islam, Computerwissenschaftlerin an der Princeton University. Sie hat sich für Ihre Doktorarbeit und für die Zeit danach ein ziemlich spezielles Fachgebiet ausgesucht: Sie ist Stilexpertin – und zwar Fachfrau für Programmierstile und wie man an der Art und Weise, wie ein Programm erstellt wird, erkennen kann, wer es war. Von dieser neuen Methode sind insbesondere Open-Source-Programmierer betroffen, und viele von ihnen finden das gar nicht spassig. Warum Peter Welchering?
    Weil die in vielen Fällen anonym bleiben wollen und müssen. Nicht wenige Softwareunternehmen in den USA verbieten ihren Programmierern nämlich, sich an Open-Source-Projekten zu beteiligen. Wenn solche Beteiligung an Open-Source-Projekten genehmigt wird, dann nur in sehr gut überwachten und dokumentierten Einzelfällen. Nun gab es aber immer wieder Fälle, in denen Programmierer sich an Open-Source-Projekten beteiligen wollten, aber ihren Arbeitgeber nicht um Erlaubnis gefragt haben, zum Teil, weil das einen offenen Interessenkonflikt herausbeschworen hätte, zum Teil, weil sie sich von ihrem Arbeitsgeber nicht bei ihren Open-Source-Projekten überwachen lassen wollten.
    Und genau solche Programmierer werden mit Methoden der Mustererkennung und des maschinellen Lernens zunehmend häufiger identifiziert, ihre Programme de-anonymisiert. Die National Security Agency hat dazu erst vor wenigen Wochen ein millionenschweres Forschungsprogramm aufgelegt. Daran hat das Militär wiederum großes Interesse. Denn die wollen ermitteln, wer eine bestimmte Schadsoftware geschrieben hat, um dann auch die Verantwortung dafür zuweisen zu können. Letztlich sollen damit militärische Schläge gegen identifizierte Cyber-Angreifer gerechtfertigt werden.
    Ungarn baute im Kalten Krieg IBM-Rechner nach
    Wie genau die Methoden aussehen, mit denen Programmiererinnen und Programmierer anhand ihres Stils identifiziert werden können, das haben wir für Sie zusammengefasst:
    Es begann 1982 in Ungarn. Am staatlichen Institut für Softwaretechnologie in Budapest wurde ein Großrechner der IBM nachgebaut, für den die amerikanische Regierung ein Export-Verbot verhängt hatte. Das galt auch für das Betriebssystem. Der Guru der Softwaretechnologie, Harry Sneed, erinnert sich.
    "Letzten Endes haben die COMECON-Länder die 3/70-Serie der IBM nachgebaut, und zwar nur anhand von Geräten, die sie rübergeschmuggelt haben oder Code, den sie aus dem Westen bekommen haben, den sie wieder in Assembler-Code umgesetzt haben und von dort aus in Pseudocodepläne, und die konnten dann OS/VS1 nachmachen."
    Um das Betriebssystem für die IBM-Großrechner nachzuentwickeln, musste das maschinenlesbare Software-Programm in den Quellcode zurückübersetzt werden. Das wurde mit Methoden des Reverse Engineering gemacht. Harry Sneed: "Reverse Engineering ist eine Art Spionage, eine Entschlüsselung von Code. Und das ist ein aufwendiger Prozess."
    Methoden wie in der Literaturwissenschaft
    Dabei haben die ungarischen Softwareentwickler herausgefunden, dass sie die unterschiedlichen Entwickler der Softwareroutinen des Betriebssystems anhand ihres Programmierstils erkennen konnten. Dafür entwickelten sie sogar ein Re-Engineering-Werkzeug, das bestimmte auffällige Programmierstile einzelner Programmierer erkennen konnte. Computerlinguisten verfeinerten das 30 Jahre später, indem sie Methoden aus der Textanalyse auf Computerprogramme anwandten.
    Aylin Caliska-Islam erläutert diese Methode der Stilometrie so. "Stilometrie beschäftigt sich mit individuellen Ausdrucksformen. Meistens wird Stilometrie in der Literaturwissenschaft beim Identifizieren eines bestimmten Schreibstils angewandt. Künstler können identifiziert werden, indem man sich anschaut, wie sie schreiben oder etwas ausdrücken. Das gilt auch für Musiker, die durch die von ihnen verwendeten Töne oder Rhythmen identifiziert werden können. Genauso kann Text in Untergrundforen und von Cyberkriminellen identifiziert werden."
    Eingesetzt werden dafür Algorithmen maschinellen Lernens und der Mustererkennung. Sie werden mit besonderen Stil-Beispielen trainiert, die sie anhand zahlreicher Schreibmuster erkennen. Die Software hat diesen Ausdrucksstil dann gelernt. Bisher unbekannte Texte werden dann auf Ähnlichkeiten zu Schreibstilen bekannter Autoren von der Software analysiert.
    So haben Computerlinguisten mit stilometrischen Methoden herausgefunden, dass der Roman "Der Ruf des Kuckucks" gar nicht so sehr dem Schreibstil von Robert Galbraith ähnelt, dem der Text zugeschrieben wurde. Vielmehr wies der Text von der Struktur her große Ähnlichkeiten zu Harry-Potter Romanen auf. Aylin Caliska-Islam und ihre Kollegen wenden solche stilometrischen Methoden auf Quelltexte von Computerprogrammen an.
    "Warum wollen wir den Stil aus Quelltexten analysieren? Zunächst wissen wir, dass Programmieren genauso gelernt wird wie Sprachen. Dabei entwickelt jeder Programmierer seinen individuellen Coding-Stil. Über den kann jeder Programmierer identifiziert werden. Wir wollten nun wissen, ob im Quelltext genügend Informationen sind, um einen Fingerabdruck eines Programmierers zu erstellen, über den er identifiziert werden kann."
    Die Art, Klammern zu setzen oder Leerzeichen, welche Variablennamen wie und an welcher Stelle vergeben werden und die Struktur, mit der ein Programm aufgebaut ist, machen dabei den einzigartigen Stil eines Programmierers aus.