DS

David Schwarzbeck

Wissenschaftliche Mitarbeitende Lehrstuhl für Informatik 2 (Programmiersysteme)

Adresse

Martensstraße 391058 Erlangen

  • Software-Wasserzeichen

    (Projekt aus Eigenmitteln)

    Laufzeit: seit 01.01.2016
    URL: https://www2.cs.fau.de/research/SoftWater/
    Unter Software-Wasserzeichnen versteht man das Verstecken von ausgewählten Merkmalen in Programme, um sie entweder zu identifizieren oder zu authentifizieren. Das ist nützlich im Rahmen der Bekämpfung von Software-Piraterie, aber auch um die richtige Nutzung von Open-Source Projekten (wie zum Beispiel unter der GNU Lizenz stehende Projekte) zu überprüfen. Die bisherigen Ansätze gehen davon aus, dass das Wasserzeichen bei der Entwicklung des Codes hinzugefügt wird und benötigen somit das Verständnis und den Beitrag der Programmierer für den Einbettungsprozess. Ziel unseres Forschungsprojekts ist es, ein Wasserzeichen-Framework zu entwickeln, dessen Verfahren automatisiert beim Übersetzen des Programms Wasserzeichen sowohl in neu entwickelte als auch in bestehende Programme hinzufügen. Als ersten Ansatz untersuchten wir eine Wasserzeichenmethode, die auf einer symbolischen Ausführung und anschließender Funktionsynthese basiert.
    Im Jahr 2018 wurden im Rahmen von zwei Bachelorarbeiten Methoden zur symbolischen Ausführung und Funktionssynthese untersucht, um zu ermitteln, welche sich für unseren Ansatz am Besten eignet. Im Jahr 2019 wurde ein Ansatz auf Basis der LLVM Compiler Infrastruktur untersucht, der mittels konkolischer Ausführung (concolic execution, eine Kombination aus  symbolischer und konkreter Ausführung) ein Wasserzeichen in einem ungenutzten Hardwareregister versteckt. Hierzu wurde der LLVM-Registerallokator dahingehend verändert, dass er ein Register für das Wasserzeichen freihält. Im Jahr 2020 wurde das inzwischen LLWM genannte Rahmenprogramm für das automatische Einfügen von Software-Wasserzeichen in Quellcode auf Basis der LLVM Compiler Infrastruktur um weitere dynamische Verfahren erweitert. Grundlage der hinzugefügten Verfahren sind, unter anderem, das Ersetzen/Verschleiern von Sprungadressen sowie Modifikationen des Aufrufgraphen. Im Jahr 2021 wurde das Rahmenprogramm LLWM um weitere angepasste, bereits in der Literatur bekannte, dynamische Verfahren sowie um das eigene Verfahren erweitert, das wir nun IR-Mark nennen Die hinzugefügten Verfahren basieren unter anderem auf der Umwandlung von bedingten Konstrukten in semantisch äquivalenten Schleifen oder auf Integrieren von Hashfunktionen, die die Funktionalität des Programms unverändert lassen, die Widerstandsfähigkeit aber erhöhen. IR-Mark wählt nun nicht nur gezielt die wenigen Funktionen aus, in denen die Registerverwendung bei der Code. Erzeugung verändert wird, sondern umfasst nun auch dynamische Aspekte um in den freigehaltenen Registern sinnvoll erscheinende Tarnwerte zu berechnen. Ein Artikel über LLWM und IR-Mark konnte publiziert werden. Im Jahr 2022 wurde das Rahmenprogramm LLWM um ein weiteres angepasstes Verfahren ergänzt. Die Methode nutzt  Ausnahmebehandlungen, um das Wasserzeichen zu tarnen. Im Jahr 2023 wurden mehr Methoden angepasst, um das LLWM-Framework zu erweitern. Hierzu zählen Techniken zum Einbetten, die auf Prinzipien der Zahlentheorie und des Aliasings beruhen.Im Jahr 2024 wurden drei neue Wasserzeichen entwickelt: Register Expansion, SemaCall und SideData.
    Diese Techniken konstruieren streufunktionsartige Arithmetiken, um während der Laufzeit einen Schlüsselwert in die Wasserzeichennachricht umzurechnen.
    Die ersten beiden Techniken wurden in dem Papier „Register Expansion and SemaCall: 2 Low-overhead Dynamic Watermarks Suitable for Automation in LLVM" auf dem CheckMATE'24 Workshop in Salt Lake City publiziert. Eine erweiterte Fassung des Papiers enthält auch das SideData Wasserzeichen und befindet sich im Peer-Review-Prozess für das DTRAP-Journal.

Optimierungen in Übersetzern

Title Optimierungen in Übersetzern
Short text inf2-ue2
Module frequency nur im Sommersemester
Semester hours per week 2

Voraussetzung zur Teilnahme an der Prüfung ist die erfolgreiche Bearbeitung der Übungsaufgaben.

As a main focus the lecture gives an overview of optimizing techniques applicable to procedural programming languages. In particular, optimization techniques that are of importance to high performance computers and parallel computers are covered. Techniques and representations are introduced that are necessary to compute and to manage information required for optimization are covered as well.

The following list of key words provides an overview of the topics covered in this lecture:

- dependence analysis, dependence graph, array subscript analysis, SSA, control flow Graph, dominators.
- loop transformations: strength reduction, induction variable elimination, loop-invariant code motion, loop unswitching.
- loop reordering: loop interchange, loop skewing, loop reversal, strip mining, loop tiling, loop distribution, loop fusion.
- loop restructuring: loop unrolling, loop coalescing, loop replacement (reduction), loop idiom recognition.
- memory access transformations: array padding, cache miss jamming, scalar expansion, array contraction.
- partial evaluation: constant propagation, constant folding, algebraic simplification, strength reduction.
- redundancies removal: unreachable-code elimination, useless-code elimination, dead-variable elimination, common-subexpression elimination.
- procedure call transformations: leaf procedure optimization, procedure inlining, procedure cloning, function memoization, tail recursion elimination.
- transformations for parallel machines: data decomposition, scalar privatization, array privatization, data partitioning and computation partitioning, guard introduction, message aggregation, message pipelining, prefetch and poststore, syncronization elimination.
- pointer analysis, alias analysis null

1. Parallelgruppe

Date and Time Start date - End date Cancellation date Lecturer(s) Comment Room
wöchentlich Wed, 08:15 - 09:45 23.04.2025 - 23.07.2025
  • Prof. Dr. Michael Philippsen
11301.00.031

Übungen zu Optimierungen in Übersetzern

Title Übungen zu Optimierungen in Übersetzern
Short text inf2-ueb-uebersetzer
Module frequency nur im Sommersemester
Semester hours per week 2

Zeit und Ort für die Übungen werden in der ersten Vorlesungsstunde vereinbart.

In der Übung werden die in der Vorlesung vorgestellten Konzepte und Algorithmen zur Optimierung von Programmen durch einen Übersetzer wiederholt und vertieft.

Im Rahmen der Projektübungen erweitern die Übungsteilnehmer den in Übersetzerbau 1 implementierten Übersetzer um eine Auswahl der vorgestellten Algorithmen.

Die Materialien zur Lehrveranstaltung werden über StudOn bereitgestellt.

1. Parallelgruppe

Date and Time Start date - End date Cancellation date Lecturer(s) Comment Room
wöchentlich Tue, 12:15 - 13:45 22.04.2025 - 22.07.2025 10.06.2025
22.04.2025
  • David Schwarzbeck
  • Tobias Heineken
11302.02.133

In der Übung werden die in der Vorlesung vorgestellten Konzepte und Algorithmen zur Optimierung von Programmen durch einen Übersetzer wiederholt und vertieft.

Im Rahmen der Projektübungen erweitern die Übungsteilnehmer den in Übersetzerbau 1 implementierten Übersetzer um eine Auswahl der vorgestellten Algorithmen.

Die Materialien zur Lehrveranstaltung werden über StudOn bereitgestellt.

2. Parallelgruppe

Date and Time Start date - End date Cancellation date Lecturer(s) Comment Room
wöchentlich Tue, 10:15 - 11:45 29.04.2025 - 22.07.2025 10.06.2025
  • Tobias Heineken
11302.02.134

In der Übung werden die in der Vorlesung vorgestellten Konzepte und Algorithmen zur Optimierung von Programmen durch einen Übersetzer wiederholt und vertieft.

Im Rahmen der Projektübungen erweitern die Übungsteilnehmer den in Übersetzerbau 1 implementierten Übersetzer um eine Auswahl der vorgestellten Algorithmen.

Die Materialien zur Lehrveranstaltung werden über StudOn bereitgestellt.

3. Parallelgruppe

Date and Time Start date - End date Cancellation date Lecturer(s) Comment Room
wöchentlich Mon, 10:15 - 11:45 28.04.2025 - 21.07.2025 09.06.2025
  • David Schwarzbeck
11302.02.133

2024

Sorted alphabetically in UnivIS