Themen für Abschlussarbeiten
Bachelorarbeiten
Web-Authentication basierend auf Asymmetrischer Kryptographie
Bei dieser Arbeit soll eine Webanwendung entwickelt werden, bei der sich der Nutzer nicht mit seinem Passwort, sondern mit digitalen Unterschriften authentifiziert. Der geheime Schlüssel muss hierbei im Webbrowser gespeichert werden. Gegebenenfalls muss hier ein Plugin entwickelt werden. Für eine Proof-of-Concept (PoC)-Implementierung kann der geheime Schlüssel auch base64-kodiert in einem Secure-Cookie gespeichert werden. Der dazugehörige öffentliche Schlüssel kann zusammen mit den restlichen Nutzerdaten in einer Datenbank gespeichert werden.
Bei der Anmeldung soll der Client zunächst eine 128-Bit
Zufallszahl R
digital signieren und an den Server
senden. Der Server verifiziert die Signatur und generiert ebenfalls
eine 128-Bit Zufallszahl S
, die er an den Client
sendet. Anschließend signiert der Client die Nachricht (S,
R)
mit seinem geheimen Schlüssel und sendet die Signatur an den
Server, welcher diese verifiziert. Bei erfolgreicher Verifizierung ist
der Nutzer angemeldet.
Die Implementierung kann mithilfe der kryptographischen Bibliothek NaCl realisiert werden. Hier sind ein paar Implementierungen dieser Bibliothek für die Skript-/Programmiersprachen C, Python und Javascript:
Aktualisierung und Erweiterung des Moodle-Plugins "All or Nothing Question Type"
Im Rahmen dieser Abschlussarbeit wird das Moodle-Plugin "All or Nothing Question Type" (siehe GitHub-Repository) weiterentwickelt und optimiert. Das Plugin, das bereits eine wertvolle Funktion in Moodle-basierten Lernmanagementsystemen bietet, soll um zusätzliche Funktionen erweitert und an die Anforderungen der aktuellen Moodle-Version angepasst werden.
Diese Arbeit soll einen Beitrag zur Weiterentwicklung von Moodle und dessen Ökosystem leisten, indem sie die Funktionalität und Kompatibilität eines bestehenden Plugins verbessert und erweitert. Zum einen soll das Plugin um die Fähigkeit erweitert werden, Fragen in den Formaten GIFT und Aiken zu importieren und zu exportieren. Dies ermöglicht es Multiple-Choice-Fragen einfach mit einem Texteditor zu erstellte und diese dann anschließend in Moodle zu importieren. Zum anderen soll das Plugin gegebenenfalls so angepasst werden, dass es vollständig kompatibel mit der aktuellen Version von Moodle ist. Dies beinhaltet die Überprüfung und Aktualisierung des Codes, um sicherzustellen, dass alle Funktionen reibungslos und effizient arbeiten.
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.
Dateiverschlüsselung für Cloudstorage
In dieser Abschlussarbeit soll unter Linux eine Lösung entwickelt werden, um Dateien sicher in einem oder über mehrere Cloudspeicher hinweg zu speichern. Dazu sollen die Dateien verschlüsselt werden. Der Chiffretext soll dabei in 4-KiB große Blöcke zerlegt werden. Der Dateiname soll den Hashwert des Inhalts darstellen.
Informationen darüber, welche Blöcke zu welcher Datei gehören, können beispielsweise in einer Datenbank gespeichert werden. Diese Datenbank kann zusätzliche Metadaten wie Dateinamen und Zugriffsrechte enthalten. Es soll die Möglichkeit geben, anzugeben, in welchem Ordner die Chiffretextblöcke gespeichert werden. Wenn mehrere Ordner angegeben werden, sollen die Chiffretextblöcke zufällig auf diese Ordner verteilt werden.
Diese Vorgehensweise ermöglicht es, Dateien über mehrere Cloudspeicherlösungen – die als Ordner im Dateisystem eingebunden sind – zu verteilen. Der Schlüssel soll mit einem Passwort gesichert werden, das beispielsweise via XOR mit einem Passworthash kombiniert werden kann.
- Die Dateien sollen mithilfe eines modernen und robusten AE-Schemas (Authenticated Encryption) verschlüsselt werden. Geeignete Kandidaten wären beispielsweise RIV oder POET.
- Der geheime Schlüssel soll aus dem Login-Passwort mithilfe einer modernen Key-Derivation-Funktion (KDF) abgeleitet werden, wie beispielsweise scrypt oder Catena.
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.