Zur Webseite der Informatik

Projekt Erkennung stark verschleierter Programmcodeplagiate

Das Plagiieren urheberrechtlich geschützter Dokumentteile beschränkt sich nicht auf natürlichsprachliche Texte, sondern geschieht auch bei der Software-Entwicklung durch Übernahme fremden Programmcodes. In diesem Projekt untersuchen wir, wie sich die eigentlich rechtliche Frage nach der Erkennung von Plagiaten durch algorithmische Verfahren unterstützen lässt. Im Gegensatz zu Plagiaten natürlichsprachlicher Texte können Programmcodeplagiate stark verschleiert sein, da äquivalente Programmsemantik durch eine Vielzahl unterschiedlicher Codierungen ausgedrückt werden kann. Verschleierungen entstehen durch Anpassungen des plagiierten Programmcodes an die Umgebung, in die er übernommen wird, oder auch durch bewusste Verschleierungsmaßnahmen, die das Aufspüren der Plagiate durch automatische Plagiatserkenner erschweren sollen. Das Problem des automatischen Aufspürens von Programmcodeplagiaten ist dem der Codeklonerkennung verwandt. Insbesondere erfordert die automatische Erkennung stark verschleierter Programmcodeplagiate eine partielle Lösung des im Allgemeinen unlösbaren Problems der Erkennung semantischer Codeklone.
Unser Ansatz, der Codeverschleierung entgegenzuwirken, basiert auf partiellen Normalisierungen des zu untersuchenden Programmcodes, um den Code möglichst weitgehend zu seiner "semantischen Essenz" zu abstrahieren. Dazu setzen wir auf dem Programmanalysen-Framework Bauhaus auf und greifen auf bekannte Compilerbau- und Programmanalysentechniken zurück. Zur Abstraktion der Datenflüsse von unterschiedlichen Kontrollflussvariationsmöglichkeiten verwenden wir Programmabhängigkeitsgraphen (engl. program dependency graph, PDG). Ausdrücke werden durch algebraische Transformationen in eine normalisierte Form überführt. Ferner werden Schleifen und Fallunterscheidungen durch Codeoptimierungstechniken (z. B. Verschiebung schleifeninvarianten Codes) normalisiert. In der normalisierten Repräsentationsform des Programmcodes werden semantische Übereinstimmungen durch strukturelle Teilgraphvergleiche aufgespürt. Da Originalcode und plagiierter Code unterschiedlich in Prozeduren aufgeteilt sein können, führen wir diese Vergleiche interprozedural durch.
Bei Interesse an studentischen Arbeiten oder Forschungskooperationen wenden Sie sich an Torsten Görg.