Themen für Abschlussarbeiten
Abschlussarbeiten des PSE-Labors
Als Mitglied des PSE-Labors betreue ich auch ausgewählte Abschlussarbeiten, die dort ausgeschrieben sind. Eine Übersicht gibt es hier.
Abschlussarbeiten in eigener Regie
Bachelorarbeiten
Fuzzing
In dieser Abschlussarbeit sollen Sie mithilfe eines Fuzzers wie
afl++
oder einer
Fuzzer-Bibliothek wie libFuzzer
eine oder mehrere
Anwendungen systematisch auf Programmierfehler und
Sicherheitslücken untersuchen. Dabei sollen qualitative und
quantitative Angaben über die durch das Fuzzen erreichte
Testabdeckung gemacht werden.
Diese Abschlussarbeit richtet sich insbesondere an Werkstudenten und Werkstudentinnen. Hier bietet sich die Gelegenheit, Software, die von Ihrer Firma entwickelt wird, auf Fehler zu untersuchen, um deren Qualität zu steigern.
Filmbewertungs-Aggregator
Die Abschlussarbeit beschäftigt sich mit der Entwicklung einer anwendungsübergreifenden Lösung zur Aggregation und Anzeige von Filmbewertungen von "Rotten Tomatoes" und "Metacritic".
Die entwickelte Anwendung wird lokal auf einem Linux-Rechner laufen und die APIs von "Rotten Tomatoes" und "Metacritic" integrieren, um aktuelle Bewertungen für eine definierte Filmauswahl abzurufen. Die aggregierten Bewertungen werden dann über eine gut strukturierte UI zur Verfügung gestellt.
Zusätzlich zur Bewertungsabfrage SOLL auch einen effizienten Caching-Mechanismus implementieren.
Das Ziel ist es, eine benutzerfreundliche Anwendung zu entwickeln, die es ermöglicht, nahtlos auf Filmbewertungsdaten zuzugreifen und diese gut strukturiert darzustellen.
Visualisierung von Operationen auf einem AVL-Baum
Im Rahmen dieser Abschlussarbeit soll eine Anwendung erstellt werden, welche die Einfüge- und Löschoperation bei einem AVL-Baum visualisiert. Im Fokus stehen hier die Einfach- und Doppelrotationen. Die Anwendung soll noch die weiteren Anforderungen erfüllen
- Exportieren eines AVL-Baums in einen menschenlesbare Form.
- Importieren eines AVL-Baums aus einer Datei.
- Anzeige der einzelnen AVL-Werte.
- Konvertierung eines beliebigen binären Suchbaum in einen AVL-Baum.
- Animierte Einfach- und Doppelrotationen.
- Unterstützung von Bäumen mit bis zu 63 Knoten.
- (OPTIONAL) Gamification Aspekte.
Design Entwicklung einer interaktiven Anwendung zur Visualisierung von Betriebsmodi in der Kryptographie.
In dieser Bachelorarbeit wird eine interaktive Anwendung entwickelt, die es Studierenden ermöglicht, die Betriebsmodi ECB (Electronic Codebook), CBC (Cipher Block Chaining) und Counter-Mode in der Kryptographie zu verstehen und zu visualisieren. Die Anwendung dient als lehrreiches Tool, um das grundlegende Konzept der verschiedenen Betriebsmodi zu erklären.
Die entwickelte Anwendung bietet eine benutzerfreundliche Oberfläche, auf der die Studierenden die Funktionsweise der Betriebsmodi nachvollziehen können. Es sollen visuell die Verarbeitung der einzelnen Klartext- bzw. Chiffretextblöcke veranschaulicht werden.
Ein wichtiges Feature der Anwendung ist die Möglichkeit, für kleine vorgegebene (2-6 Bit) Blockchiffren, entweder Klartexte manuell zu verschlüsseln oder Chiffretexte wieder manuell zu entschlüsseln. Dadurch können die Studierenden aktiv anhand praktischer Beispiele die Verwendung der verschiedenen Betriebsmodi erleben und ihr Verständnis vertiefen.
Visualisierung der Tiefensuche
Im Rahmen dieser Abschlussarbeit soll eine Anwendung erstellt werden, welche die Tiefensuche visualisiert. Und zwar soll mittels der Tiefensuche ein Ausgang aus einem Labyrinth gefunden werden. Folgende Features sollen implementiert werden:
- Editierend von Labyrinthen
- Speichern und Laden von Labyrinthen.
- Der Startpunkt und das Ziel/Ausgang soll frei wählbar sein.
- GNU/Linux Unterstützung.
Anwendung zur Veranschaulichung von Sortierverfahren
Im Rahmen dieser Abschlussarbeit soll ein Anwendung für die Lehre implementiert werden. Ziel der Anwendung ist es zum einen den NutzerInnen Sortierverfahren verständlich zu erläutern und zum anderen durch Test herausfinden, ob diese auch verstanden wurden. Insgesamt soll die Anwendung die folgenden fünf Sortierverfahren abdecken.
- BubbleSort
- InsertionSort
- MergeSort
- HeapSort
Die einzelnen Implementierungen sollen dabei den Definitionen
aus meinen Lehrmaterialien zu dem Modul Algorithmen und
Datenstrukturen
entsprechen. Daher sind sie
eigenständig zu implementieren.
Die Anwendung kann beispielsweise über einen Erklär- und
einen Testmodus verfügen. Bei dem Erklärmodus können die
Sortierverfahren durch Animationen (spielerisch)
näher gebracht werden.
In dem Testmodus sollen unsortiertes Array mithilfe eines
angegeben Sortierverfahrens sortiert werden. Dabei soll die
NutzerInnen natürlich Feedback bekommen, ob Sie alles richtig
gemacht haben und falls nicht soll veranschaulicht werden, wo
es hakte.
Ein wichtiger Aspekt dieser Arbeit ist selbstverständlich die Usability der Anwendung. Gerne kann auch die Motivation zur Nutzung der Anwendung mithilfe von Gamification Aspekten optimiert werden. Ich kann mir gut vorstellen, diese Anwendung in eine Art Spiel zu verpacken. Ein Beispiel für ein Spiel durch das die NutzerInnen Assembler lernen ist Human Resource Machine . Wie Sie sehen ist bei dieser Arbeit der Kreativität keine Grenzen gesetzt.
Generierung von UML-Diagrammen
Im Rahmen dieser Abschlussarbeit soll eine Bibliothek erstellt werden die aus C++ oder Java-Klassen einliest und daraus ein UML-Klassendiagramm erstellt.
Aufgabe ist es also das parsen von Quelldateien und die Generierung von Vektorgraphiken welche sich möglichst einfach in ein LaTeX Dokument, wie beispielsweise eine Abschlussarbeit, integrieren lassen sollen. Es ist wäre wünschenswert, falls die LaTeX-Ausgabe kompatibel zu zu dem CTAN-Paket UML ist.
Masterarbeiten
Vergleich des Speicherverbrauchs eigener Implementierungen von Echo-Servern bei parallelen Verbindungen
Die Masterarbeit widmet sich einem detaillierten Vergleich des Speicherverbrauchs von selbst erstellten Echo-Servern, die in verschiedenen Programmiersprachen und Frameworks implementiert sind, bei unterschiedlichen parallelen Verbindungen. Ein Echo-Server ist ein einfacher Server, der die empfangenen Daten zurücksendet, ohne diese zu verarbeiten. In dieser Arbeit werden eigene Implementierungen der Echo-Server in den folgenden Programmiersprachen und Frameworks erstellt und verglichen:
- C (epoll oder select)
- Spring Framework
- Express Framework
- Django Framework
- Rails Framework
- Laravel Framework
Das Hauptziel der Arbeit ist es, den Speicherverbrauch jeder eigenen Implementierung bei 10, 100, 1.000 und 10.000 parallelen Verbindungen zu analysieren und zu vergleichen. Diese unterschiedlichen Lastszenarien ermöglichen es, die Skalierbarkeit und Effizienz der eigenen Echo-Server unter verschiedenen Belastungen zu bewerten.
Die Masterarbeit wird eine umfangreiche Umsetzung der eigenen Echo-Server-Implementierungen beinhalten. Dabei werden spezifische Testumgebungen geschaffen, um die parallelen Verbindungen zu simulieren und den Speicherverbrauch präzise zu messen.
Die erzielten Ergebnisse werden sorgfältig dokumentiert und in einer übersichtlichen Form präsentiert. Die gewonnenen Erkenntnisse werden wertvolle Informationen für die Entwicklergemeinschaft liefern, um die optimale Implementierung für Echo-Server-Anwendungen zu wählen. Die Arbeit wird zudem als wertvolle Grundlage dienen, um die Leistung und Skalierbarkeit von Webanwendungen zu verbessern und fundierte Entscheidungen hinsichtlich der Auswahl des geeigneten Frameworks zu treffen.
Diese Masterarbeit wird einen tiefgreifenden Einblick in den Speicherverbrauch von selbst erstellten Echo-Servern bei parallelen Verbindungen ermöglichen und einen bedeutsamen Beitrag zur effizienten Entwicklung von skalierbaren Webanwendungen leisten.
Graphische Anwendung zum Erstellen und Bearbeiten von TikZ-Diagrammen
Das Textsatzsystems Tex wurde von dem Turing Award Winner Donald E. Knuth von 1977 bis 1986 entwickelt. In den 1980er hat der Turing Award Winner Leslie Lamport darauf aufbauend die Entwicklung von LaTeX begonnen. Primär wurde LaTeX mit dem Ziel entwickelt um wissenschaftliche Arbeiten, technische Reports und Sachbücher zu Verfassen. Ähnlich zu HTML lässt sich mit LaTeX die Strukturen des zu erstellenden Dokuments beschreiben. Inzwischen gibt es unzählige Schriftsätze für LaTeX mit denen sich unter anderem Foliensätze, UML-Diagramme, Notentexte (Partituren) oder Vektorgrafiken aufschreiben lassen.
Im Rahmen dieser Abschlussarbeit soll ein Programm implementiert werden mit dem sich einfache Blockdiagramme, welche die Funktionsweise von Funktionen oder Algorithmen beschreiben, erstellen lassen. Die Vektorgraphiken sollen als PGF/Tikz-Graphik gespeichert oder exportiert werden können. Bei PGF/TikZ handelt es sich um eine Sprache zum Erstellen von Vektorgraphiken welche dann einfach in ein LaTeX Dokumente eingefügt werden können. Schauen Sie sich die Beispielgallerie unter https://texample.net/tikz/examples/ an. Dadurch erhalten Sie einen Eindruck welche Vielzahl an unterschiedlichen PGF/TikZ-Graphiken sich mit Hilfe von LaTeX Quellcode erstellen lassen.
Der Fokus dieser Arbeit soll auf dem Softwaredesign und die einfacher Erweiterbarkeit liegen und noch auf dem Umfang der Funktionalität. Die Anwendung soll es ermöglichen Rechtecke und Kreise zu malen und diese mit gerichteten oder ungerichteten Linien zu Verbinden. Weiterhin soll eine Beschriftung der einzelnen Objekte möglich sein.
Transparente Verschlüsselung von Ordnern
Bei dieser Abschlussarbeit soll unter Linux eine Lösung entwickelt werden, bei dem Ordner für Benutzer transparent verschlüsselt werden. Die Ordner müssen also transparent in das Dateisystem integriert werden. Der technisch unbedarfte Nutzer sollte keinen Unterschied zwischen einem regulären und einem verschlüsselten Verzeichnis feststellen. Dies schließt eine transparente Einbindung der verschlüsselten Ordner in das Dateisystem mit ein.
- Die Inhalte der Ordner sollen mit Hilfe eines modernen und robusten AE-Schemas verschlüsselt werden. Geeignete Kandidaten wären beispielsweise RIV oder POET
- Der geheime Schlüssel soll dabei aus dem Login-Passwort mit einer modernen Key-Derivation-Funktion wie beispielsweise scrypt oder Catena abgeleitet werden.
- Es wäre wünschenswert wenn die Lösung unter GitHub publiziert wird. Weiterhin würde ich mich noch sehr freuen, falls die Lösung als deb-Paket bereitgestellt wird.
Implementierung eines ioctl-Daemons (ioctld)
Mit Hilfe des Systemcalls ioctl()
lassen sich
gerätespezifische Eingabe- und Ausgabeoperationen
durchführen sowie andere Operationen, die nicht durch
reguläre Systemaufrufe ausgedrückt werden können.
Mehr Informationen zu ioctl()
gibt es unter
https://de.qwe.wiki/wiki/Ioctl(2).
Im Rahmen dieser Abschlussarbeit soll ein Daemon
ioctld
geschrieben werden welcher ioctl-Anfragen
von Prozessen verarbeitet. Dabei sollen die einzelnen
Prozesse mit dem Deamon über einen
Unix-Domain-Socket kommunizieren.
Zusätzlich soll eine Bibliothek geschrieben werden, die es
einem Prozess einfach ermöglicht Anfragen an
ioctld
zu senden.
Schließlich soll noch ein Berechtigungskonzept implementiert
werden, das den Zugriff auf ioctld
regelt.
Modernes Passwort Hashing
Bei dieser Abschlussarbeit soll unter Linux eine modernes
Verfahren zum Hashen von Passwörtern entwickelt werde,
welches resistent gegen
GPU Angriffe
ist, die Realisierung in Hardware
(ASIC) teuer
ist und sicher
gegen Seitenkanalangriffe ist. Ein solches
Verfahren eignet sich nicht nur für den Einsatz auf
Notebooks, Servern und Desktops sondern auch für den Einsatz
in der Cloud, bei der mehrere Benutzer Hardware teilen.
Das neue Verfahren soll dabei auf den Resultaten des
wissenschaftlichen
Artikels
Data-Independent Memory Hard Functions: New Attacks and
Stronger Constructions
von Blocki und anderen in
das bereits existierende
Verfahren Catena von
Forler und anderen integrieren.
Bei der Entwicklung kann dabei auf bereits existierenden Sourcecode zurückgegriffen werden.