Logo der Berliner Hochschule für Technik

Themen für Abschlussarbeiten

Die nachfolgenden Themen können als Bachelor- oder Masterarbeit vergeben werden. Eine Kennzeichnung (B) steht für Bachelorarbeit, (M) für Masterarbeit. Themen ohne Kennzeichnung sind für beide Abschlüsse geeignet. Wenn Sie Interesse an einem Thema haben, sprechen Sie mich gerne an.

Inhaltsverzeichnis

1. Lehrtools & Visualisierungen

2. Kryptographie & IT-Sicherheit

3. Linux & Systemprogrammierung

4. Softwareentwicklung & Tools


1. Lehrtools & Visualisierungen

Anwendung zur Veranschaulichung von Scheduling-Verfahren

In dieser Bachelorarbeit wird eine visuelle und interaktive Anwendung entwickelt, die es Studierenden ermöglicht, die folgenden präemptiven Scheduling-Strategien besser zu verstehen:

  • Shortest Job First
  • Round Robin
  • Strict Priority Scheduling
  • Multilevel-Feedback Scheduling

Die Anwendung dient als didaktisches Tool, um die grundlegenden Konzepte der verschiedenen Scheduling-Strategien anschaulich zu erklären.

Interaktives Lehrtool zur Visualisierung von Echtzeit-Scheduling-Verfahren (EDF und RMS)

Echtzeit-Scheduling-Verfahren wie Earliest Deadline First (EDF) und Rate Monotonic Scheduling (RMS) sind zentrale Themen in der Ausbildung von Informatiker/innen mit Schwerpunkt Betriebssysteme oder eingebettete Systeme. Erfahrungsgemäß fällt es Studierenden schwer, die dynamische Natur dieser Verfahren allein anhand von Folien oder Lehrbüchern nachzuvollziehen.

Ziel dieser Masterarbeit ist die Konzeption, Entwicklung und didaktische Evaluation eines interaktiven Lehrtools, das EDF und RMS für Studierende erfahrbar macht. Der Fokus liegt dabei nicht nur auf der korrekten Implementierung der Algorithmen, sondern explizit auf ihrer didaktischen Aufbereitung: Das Tool soll nicht einfach ein fertiges Ergebnis zeigen, sondern den Lernenden Schritt für Schritt durch den Scheduling-Prozess führen.

Das Tool soll mindestens die folgenden Funktionen bieten:

  • Eingabe eines Tasksets über eine grafische Oberfläche: Für jeden Task sind Periode, Worst-Case Execution Time (WCET) und (bei EDF) relative Deadline konfigurierbar.
  • Schrittweise Animation des Schedulingvorgangs als Gantt-Chart: Der Nutzer kann den Ablauf Zeiteinheit für Zeiteinheit vorwärts (und rückwärts) navigieren und sieht dabei, welche Entscheidung der Scheduler im aktuellen Schritt trifft und warum (z. B. Anzeige der aktuellen Prioritäten bzw. nächsten Deadlines aller Tasks).
  • Berechnung und Einblendung der Systemauslastung sowie der theoretischen Auslastungsschranke für RMS.
  • Bewusste Unterstützung von Tasksets, die die Auslastungsschranke überschreiten oder Deadline-Misses verursachen. Diese sollen visuell hervorgehoben werden, damit Studierende die Konsequenzen direkt beobachten können.
  • Export des erzeugten Gantt-Charts als Vektorgrafik (SVG oder PDF) zur Verwendung in Übungsblättern und Lehrfolien.

Die Anwendung kann auf Basis von Webtechnologien (HTML, CSS, JavaScript bzw. React) entwickelt werden. Über das Framework Electron kann die Anwendung zusätzlich als plattformübergreifende Desktop-Applikation für Windows, macOS und Linux ausgeliefert werden, sodass Studierende sie lokal und ohne Internetverbindung nutzen können.

Zur Einarbeitung in die Thematik eignen sich die folgende Quellen:

Visualisierung von Seitenersetzungsalgorithmen

Wenn ein Betriebssystem mehr virtuellen Speicher verwaltet als physikalischer RAM vorhanden ist, müssen Seiten zwischen RAM und Hintergrundspeicher ausgelagert werden. Welche Seite dabei verdrängt wird, entscheidet der Seitenersetzungsalgorithmus — eine Designentscheidung mit erheblichem Einfluss auf die Systemperformance. Für Studierende ist das Verhalten dieser Algorithmen oft schwer nachzuvollziehen, da es stark vom konkreten Zugriffsmuster abhängt.

Im Rahmen dieser Bachelorarbeit soll eine interaktive und visuelle Anwendung entwickelt werden, die das Verhalten der folgenden Seitenersetzungsalgorithmen schrittweise animiert und vergleichbar macht:

  • FIFO (First In, First Out) — die älteste Seite im RAM wird verdrängt.
  • OPT (Optimaler Algorithmus nach Bélády) — die Seite, die am längsten nicht mehr benötigt wird, wird verdrängt. Dient als theoretische Referenz.
  • LRU (Least Recently Used) — die zuletzt am längsten nicht verwendete Seite wird verdrängt.
  • Clock-Algorithmus (Second Chance) — eine praxisnahe Annäherung an LRU, die in realen Betriebssystemen eingesetzt wird.

Die Anwendung soll es ermöglichen, eine beliebige Seitenreferenzfolge sowie die Anzahl der verfügbaren Rahmen (Frames) einzugeben. Der Ablauf soll schrittweise animiert werden, inklusive Anzeige des aktuellen RAM-Inhalts, der aufgetretenen Page Faults und einer abschließenden Statistik zum Vergleich der Algorithmen. Optional soll Bélády's Anomalie (das paradoxe Verhalten von FIFO bei mehr Frames) demonstrierbar sein.

Zur Einarbeitung in die Thematik sind folgende Quellen geeignet:

  • Tanenbaum, Andrew S.: Modern Operating Systems, Kapitel zur Speicherverwaltung — das Standardlehrbuch, das alle vier Algorithmen verständlich und mit Beispielen erklärt.
  • Bélády, L. A.: A Study of Replacement Algorithms for a Virtual-Storage Computer (IBM Systems Journal, 1966) — das Originalpaper, das den optimalen Algorithmus einführt und Bélády's Anomalie beschreibt.

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.

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.

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.

  1. BubbleSort
  2. InsertionSort
  3. MergeSort
  4. 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.

Visualisierung des Erweiterten Euklidischen Algorithmus (XGCD)

Der Erweiterte Euklidische Algorithmus (engl. Extended Greatest Common Divisor, XGCD) ist ein fundamentaler Algorithmus der algorithmischen Zahlentheorie. Er berechnet nicht nur den größten gemeinsamen Teiler zweier ganzer Zahlen, sondern liefert zusätzlich die Koeffizienten der zugehörigen Bézout-Darstellung — und damit insbesondere das modulare Inverse, das für kryptografische Verfahren wie RSA unverzichtbar ist. Für Studierende ist der Algorithmus oft eine Black Box: Die Rekursion und die Rückwärtssubstitution zur Berechnung der Koeffizienten sind schwer zu durchschauen.

Im Rahmen dieser Bachelorarbeit soll eine interaktive Anwendung entwickelt werden, die den XGCD schrittweise visualisiert. Die Anwendung soll dabei zwei Ansichten bieten:

  • Vorwärtsphase: Tabellarische Darstellung der Divisionsschritte des Euklidischen Algorithmus, bei der der Studierende jeden Schritt einzeln durchklicken kann.
  • Rückwärtsphase: Schrittweise Rücksubstitution zur Berechnung der Bézout-Koeffizienten, visuell hervorgehoben welcher Ausdruck jeweils substituiert wird.

Als praktische Anwendung soll die Berechnung des modularen Inversen direkt in die Oberfläche integriert werden, sodass Studierende den Zusammenhang zwischen XGCD und RSA-Schlüsselerzeugung unmittelbar nachvollziehen können.

Zur Einarbeitung in die Thematik sind folgende Quellen geeignet:

  • Cormen, Leiserson, Rivest, Stein: Introduction to Algorithms, Kapitel zur Zahlentheorie — beschreibt den XGCD präzise und mit Pseudocode, der direkt als Implementierungsgrundlage dienen kann.
  • Khan Academy: The Euclidean Algorithm — ein sehr zugänglicher Einstieg mit interaktiven Beispielen, der gut als didaktische Inspiration für die eigene Anwendung dient.

Square-and-Multiply — Visualisierung der schnellen Modularen Exponentiation

Kryptografische Verfahren wie RSA oder Diffie-Hellman erfordern die Berechnung großer Potenzen modulo einer Zahl — z. B. 3^1000 mod 17. Eine naive Implementierung, die tausend Multiplikationen nacheinander ausführt, ist dabei völlig unpraktikabel. Der Square-and-Multiply-Algorithmus löst dieses Problem, indem er den Exponenten in seiner Binärdarstellung verarbeitet und die Anzahl der nötigen Multiplikationen auf O(log n) reduziert. Für Studierende ist dieser Algorithmus oft schwer zu durchschauen, da die Verbindung zwischen der Binärdarstellung des Exponenten und den ausgeführten Operationen nicht intuitiv ist.

Im Rahmen dieser Bachelorarbeit soll eine interaktive Anwendung entwickelt werden, die den Square-and-Multiply-Algorithmus schrittweise visualisiert. Die Anwendung soll:

  • Basis, Exponent und Modulus als Eingabe entgegennehmen.
  • Den Exponenten in seiner Binärdarstellung anzeigen und hervorheben, welches Bit im aktuellen Schritt verarbeitet wird.
  • Für jeden Schritt anzeigen, ob eine reine Quadrierung oder eine Quadrierung gefolgt von einer Multiplikation ausgeführt wird — inklusive der Zwischenergebnisse.
  • Die naive Methode und Square-and-Multiply nebeneinander ausführen und die Anzahl der benötigten Operationen vergleichen, um den Effizienzgewinn zu verdeutlichen.

Als Erweiterung soll der Zusammenhang mit RSA-Ver- und Entschlüsselung für kleine Schlüssel demonstriert werden.

Zur Einarbeitung in die Thematik sind folgende Quellen geeignet:

  • Christof Paar und Jan Pelzl: Understanding Cryptography — behandelt Square-and-Multiply im Kontext von RSA und Diffie-Hellman mit anschaulichen Beispielen.
  • Cormen, Leiserson, Rivest, Stein: Introduction to Algorithms, Kapitel zur modularen Arithmetik — liefert die algorithmische Grundlage und Komplexitätsanalyse.

Interaktives Lehrtool: Hashtabellen und Kollisionsstrategien

Hashtabellen sind eine der wichtigsten und am häufigsten verwendeten Datenstrukturen in der Informatik. Sie ermöglichen das Einfügen, Suchen und Löschen von Elementen in amortisiert konstanter Zeit — vorausgesetzt, Kollisionen werden geschickt behandelt. Für Studierende ist das Verhalten einer Hashtabelle bei steigender Auslastung und unterschiedlichen Kollisionsstrategien oft schwer zu durchschauen, da es stark vom konkreten Hashwert der eingefügten Schlüssel abhängt.

Im Rahmen dieser Bachelorarbeit soll eine interaktive Anwendung entwickelt werden, die die folgenden Kollisionsstrategien schrittweise visualisiert und vergleichbar macht:

  • Separate Chaining — Kollisionen werden durch verkettete Listen in den Buckets aufgelöst.
  • Linear Probing — bei einer Kollision wird der nächste freie Slot sequenziell gesucht.
  • Quadratic Probing — die Schrittweite bei der Suche nach einem freien Slot wächst quadratisch.

Die Anwendung soll beim Einfügen jedes Elements visuell zeigen, wie die Hashfunktion den Index berechnet, wie eine Kollision erkannt wird und wie die jeweilige Strategie einen alternativen Platz findet. Zusätzlich soll die aktuelle Auslastung (Load Factor) angezeigt und das Phänomen des Primary Clustering beim Linear Probing visuell hervorgehoben werden. Ein direkter Vergleich der durchschnittlichen Suchlänge zwischen den Strategien bei gleicher Eingabe und Auslastung soll die didaktische Aussagekraft erhöhen.

Zur Einarbeitung in die Thematik sind folgende Quellen geeignet:

  • Cormen, Leiserson, Rivest, Stein: Introduction to Algorithms, Kapitel zu Hashtabellen — die maßgebliche algorithmische Referenz, die alle vier Strategien mit Pseudocode und Komplexitätsanalyse beschreibt.
  • Knuth, Donald E.: The Art of Computer Programming, Vol. 3: Sorting and Searching, Abschnitt zu Hashing — der klassische Referenztext, der die mathematischen Eigenschaften der verschiedenen Sondierungsstrategien detailliert analysiert.

Entwicklung einer Spiele-Engine für Puzzle-Videospiel mit visuellem Programmieransatz

Im Rahmen dieser Bachelorarbeit soll eine einfache Spiele-Engine für Puzzle-Videospiel mit visuellem Programmieransatz wie Human Resource Machine entwickelt werden. Ziel ist es, eine lauffähige Demo-Anwendung mit einem Demo-Level zu erstellen, die unter Linux betrieben werden kann. Die Engine soll grundlegende Mechanismen zur Darstellung, Steuerung und Auswertung von spielbasierten Programmieraufgaben bereitstellen.


2. Kryptographie & IT-Sicherheit

Shamir's Secret Sharing — Interaktives Lehrtool

Wie kann ein Geheimnis — etwa ein kryptografischer Schlüssel — so auf mehrere Personen aufgeteilt werden, dass es nur rekonstruiert werden kann, wenn mindestens k von n Beteiligten kooperieren, aber kein Einzelner oder eine Gruppe von weniger als k Personen irgendetwas über das Geheimnis erfährt? Diese Frage beantwortet Shamir's Secret Sharing (1979), ein elegantes Verfahren das auf der Interpolation von Polynomen über endlichen Körpern basiert.

Im Rahmen dieser Bachelorarbeit soll ein interaktives Lehrtool entwickelt werden, das das Verfahren für kleine Zahlen vollständig und nachvollziehbar visualisiert. Die Anwendung soll dabei folgende Schritte darstellen:

  • Share-Erzeugung: Der Nutzer gibt ein Geheimnis, die Schwelle k und die Gesamtzahl der Shares n ein. Die Anwendung zeigt das zufällig gewählte Polynom grafisch als Kurve und die einzelnen Shares als Punkte darauf.
  • Rekonstruktion: Der Nutzer wählt k Shares aus und die Anwendung zeigt die Lagrange-Interpolation schrittweise — und damit die Rekonstruktion des Geheimnisses.
  • Informationstheoretische Sicherheit: Die Anwendung soll visuell demonstrieren, dass k-1 Shares keinerlei Information über das Geheimnis liefern — z. B. indem gezeigt wird, dass unendlich viele Polynome durch k-1 Punkte verlaufen können.

Für die Visualisierung soll eine Webanwendung entwickelt werden. Die Berechnungen sollen für kleine Primzahlen als Modulus vollständig nachvollziehbar dargestellt werden.

Zur Einarbeitung in die Thematik sind folgende Quellen geeignet:

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:

Vergleich von XOR-Gate-basierten AES-MixColumn-Implementierungen

Eslam Gamal, Ahmed Eman Shaaban und Mohamed Hashem haben 2009 in ihrer Arbeit Lightweight Mix Columns Implementation for AES gezeigt, dass sich die AES-Operation MixColumn mit 314 XOR-Gattern implementieren lässt. Im Jahr 2019 stellte Alexander Maximov in AES MixColumn with 92 XOR gates eine MixColumn-Implementierung vor, die lediglich 92 XOR-Gatter benötigt. Dazwischen wurden mehrere weitere Varianten veröffentlicht. Ihre Aufgabe ist es zunächst zu recherchieren, welche AES-MixColumn- Verfahren existieren, die ausschließlich auf XOR-Gattern basieren. Anschließend sollen diese Implementierungen auf einer gemeinsamen Vergleichsplattform in C bzw. Assembler implementiert werden. Zunächst ist zu verifizieren, dass die Implementierungen tatsächlich die AES-MixColumn-Operation korrekt berechnen und keine Fehler enthalten. Danach sollen die verschiedenen Implementierungen hinsichtlich ihrer Performance verglichen werden. Dabei sollen insbesondere die benötigten Clock-Cycles ermittelt und gegenübergestellt werden.

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.

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.

BEAST und CRIME: Angriffe auf TLS durch CBC und Kompression

Das TLS-Protokoll soll die Vertraulichkeit und Integrität von Daten bei der Übertragung im Internet gewährleisten. Trotzdem wurden in älteren Versionen des Protokolls mehrere schwerwiegende Schwachstellen entdeckt, die zeigen, dass ein korrekt spezifiziertes Protokoll durch fehlerhafte Designentscheidungen angreifbar werden kann.

Im Rahmen dieser Bachelorarbeit sollen zwei verwandte Angriffe auf TLS analysiert, nachvollzogen und demonstriert werden:

  • BEAST (Browser Exploit Against SSL/TLS, CVE-2011-3389): Der Angriff wurde 2011 von Thai Duong und Juliano Rizzo demonstriert und nutzt eine Schwäche im CBC-Modus von TLS 1.0 aus. Da der Initialisierungsvektor (IV) für jeden TLS-Record vorhersagbar war, lässt sich ein Chosen-Plaintext-Angriff durchführen, mit dem ein Angreifer verschlüsselte Session-Cookies byteweise rekonstruieren kann.
  • CRIME (Compression Ratio Info-leak Made Easy, CVE-2012-4929): Ebenfalls von Duong und Rizzo entwickelt und 2012 vorgestellt. Der Angriff nutzt aus, dass TLS-Kompression die Länge des verschlüsselten Datenstroms in Abhängigkeit vom Klartextinhalt verändert. Über diesen Seitenkanal lassen sich geheime Werte wie Session-Tokens Zeichen für Zeichen erraten.

Für beide Angriffe soll zunächst die technische Funktionsweise verständlich erklärt und anschließend eine Demo-Implementierung in Python erstellt werden, die den jeweiligen Angriff in einer kontrollierten lokalen Testumgebung veranschaulicht. Abschließend soll erläutert werden, warum beide Angriffe in TLS 1.3 nicht mehr möglich sind: CBC-Cipher-Suites und TLS-Kompression wurden in TLS 1.3 vollständig entfernt.

Zur Einarbeitung in die Thematik eignen sich die beiden folgende Quellen:

Lucky 13: Timing-Seitenkanalangriff auf TLS-CBC-Padding

Padding-Oracle-Angriffe auf TLS sind ein eindrucksvolles Beispiel dafür, wie selbst gut gemeinte Gegenmaßnahmen neue Angriffsflächen schaffen können. Im Mittelpunkt dieser Bachelorarbeit steht der Lucky 13-Angriff (CVE-2013-0169), der 2013 von Nadhem J. AlFardan und Kenneth G. Paterson veröffentlicht wurde.

Der Angriff ist eine Weiterentwicklung des klassischen Padding-Oracle-Angriffs von Vaudenay (2002): Auch wenn eine TLS-Implementierung bei falschem Padding keine abweichende Fehlermeldung mehr zurückgibt, so unterscheidet sich doch die Zeit, die die Verarbeitung benötigt — je nachdem, wie viele Bytes als gültiges Padding interpretiert werden. Aus diesem Timing-Unterschied lässt sich Schritt für Schritt der Klartext rekonstruieren. Der Name „Lucky 13" spielt auf die 13 Byte großen TLS-Header-Daten an, die das Angriffsfenster aufspannen.

In dieser Arbeit soll zunächst die Funktionsweise von CBC-Padding in TLS sowie der klassische Padding-Oracle-Angriff erklärt werden. Anschließend wird der Lucky-13-Angriff im Detail nachvollzogen. Als praktischer Teil soll mithilfe des Frameworks TLS-Padding-Oracles das Angriffsprinzip in einer lokalen Testumgebung demonstriert werden. Abschließend soll erklärt werden, warum TLS 1.3 diesen Angriff strukturell ausschließt, indem es ausschließlich AEAD-Verfahren (z. B. AES-GCM) verwendet, die Verschlüsselung und Authentifizierung untrennbar verbinden.

Zur Einarbeitung in die Thematik sollten die folgende Veröffentlichungen gelesen werden:

Heartbleed: Implementierungsfehler in OpenSSL und seine Folgen

Nicht immer liegt ein Sicherheitsproblem im Design eines Protokolls — manchmal steckt es in einer einzigen vergessenen Überprüfung im Quellcode. Heartbleed (CVE-2014-0160) ist eines der bekanntesten Beispiele dafür und gilt als einer der folgenreichsten Sicherheitsfehler der Internetgeschichte.

Der Fehler steckte in der OpenSSL-Implementierung der TLS-Heartbeat-Erweiterung (RFC 6520): Ein Client kann dem Server eine Heartbeat-Anfrage mit einem Nutzlast-Wert und einer selbst angegebenen Länge schicken. OpenSSL vertraute der angegebenen Länge ohne Überprüfung, ob die tatsächlich gesendeten Daten so lang waren. Der Server las daraufhin bis zu 64 KB aus seinem Arbeitsspeicher aus und schickte diese Daten zurück — möglicherweise inklusive privater Schlüssel, Passwörter und Session-Tokens anderer Verbindungen. Der Bug war von März 2012 bis April 2014 unentdeckt in OpenSSL vorhanden.

In dieser Bachelorarbeit soll zunächst die Heartbeat-Erweiterung und die fehlerhafte OpenSSL-Implementierung anhand des Quellcodes erklärt werden. Anschließend soll der Angriff in einer kontrollierten Testumgebung mit einer verwundbaren OpenSSL-Version (z. B. in einer Docker-Umgebung) praktisch demonstriert und die ausgelesenen Speicherinhalte analysiert werden. Ein weiterer Schwerpunkt liegt auf der Frage, wie ein solcher Fehler hätte verhindert werden können: Code-Review, Fuzzing, und speichersichere Programmiersprachen sollen als Gegenmaßnahmen diskutiert werden.

Zur Einarbeitung in die Thematik sollten die folgende Quellen gelesen werden:

Kerberoasting und AS-REP Roasting: Angriffe auf Active Directory

Active Directory (AD) ist der de-facto-Standard für die Benutzerverwaltung und Authentifizierung in Unternehmensnetzen. Das zugrunde liegende Authentifizierungsprotokoll Kerberos gilt als sicher — dennoch gibt es eine Klasse von Angriffen, die ohne besondere Privilegien ausgeführt werden kann und im schlimmsten Fall zur vollständigen Kompromittierung einer Windows-Domäne führt.

Im Rahmen dieser Bachelorarbeit sollen zwei verwandte Angriffe analysiert, in einer lokalen Laborumgebung demonstriert und Gegenmaßnahmen erarbeitet werden:

  • Kerberoasting (MITRE ATT&CK T1558.003): Jeder authentifizierte Domänenbenutzer kann für Dienste, die mit einem sogenannten Service Principal Name (SPN) registriert sind, ein Kerberos-Ticket anfordern. Dieses Ticket ist mit dem Passwort-Hash des zugehörigen Service-Accounts verschlüsselt. Ein Angreifer kann das Ticket offline — also ohne weiteren Netzwerkkontakt — mit Tools wie Hashcat einem Wörterbuchangriff oder Brute-Force unterziehen, um das Klartextpasswort zu ermitteln.
  • AS-REP Roasting (MITRE ATT&CK T1558.004): Eine verwandte Technik, die Konten angreift, bei denen die Kerberos-Vorauthentifizierung deaktiviert ist. In diesem Fall kann ein Angreifer ohne gültige Anmeldedaten ein verschlüsseltes Ticket vom Key Distribution Center (KDC) anfordern und dieses ebenfalls offline cracken.

Für die praktischen Versuche soll eine vollständig lokale virtuelle Laborumgebung aufgebaut werden. Als Grundlage empfiehlt sich das Open-Source-Projekt GOAD (Game of Active Directory), das eine absichtlich verwundbare Active-Directory-Umgebung per Skript automatisch aufsetzt. Die Umgebung läuft vollständig lokal auf zwei virtuellen Maschinen (ein Windows-Server als Domain Controller, eine Angreifer-Maschine mit Kali Linux) und erfordert keine externe Infrastruktur. Für den Windows Server stellt Microsoft kostenlose Evaluation-Versionen (180 Tage) bereit.

Als Angriffswerkzeuge sollen Impacket (Python-Bibliothek für Netzwerkprotokolle) sowie Rubeus eingesetzt und verglichen werden. Abschließend sollen konkrete Gegenmaßnahmen erarbeitet werden, darunter die Verwendung langer und zufälliger Service-Account-Passwörter, die Einschränkung von SPNs sowie der Einsatz von Group Managed Service Accounts (gMSA).

Zur Einarbeitung in die Thematik sind folgende Quellen als Pflichtlektüre vorgesehen:


3. Linux & Systemprogrammierung

Linux Capabilities: Analyse und Bewertung von Prozessrechten

Traditionell kennt Linux nur zwei Klassen von Prozessen: privilegierte Prozesse, die als Root laufen und keinerlei Einschränkungen unterliegen, und unprivilegierte Prozesse, denen fast alle sicherheitsrelevanten Operationen verwehrt sind. Dieses Alles-oder-nichts-Prinzip ist ein bekanntes Sicherheitsproblem: Wird ein Prozess mit Root-Rechten kompromittiert, hat der Angreifer sofort vollständige Kontrolle über das System.

Seit Linux 2.2 gibt es mit den Linux Capabilities einen Mechanismus, der die Root-Privilegien in ca. 40 einzelne, unabhängig voneinander vergebbare Rechte aufteilt — zum Beispiel CAP_NET_BIND_SERVICE (Binden an privilegierte Ports), CAP_SYS_TIME (Systemzeit ändern) oder CAP_NET_RAW (Zugriff auf Raw Sockets). Ein Prozess erhält damit nur genau die Rechte, die er tatsächlich benötigt (Principle of Least Privilege).

Im Rahmen dieser Bachelorarbeit soll zunächst das Capability-Modell von Linux (Permitted, Effective, Inheritable, Ambient und Bounding Sets) erarbeitet und verständlich dokumentiert werden. Als praktischer Schwerpunkt soll anschließend ein Kommandozeilenwerkzeug in C oder Python entwickelt werden, das für laufende Prozesse und ausführbare Dateien auf dem System die gesetzten Capabilities ausliest, anzeigt und bewertet. Das Tool soll insbesondere Prozesse und Binärdateien identifizieren, die mehr Capabilities besitzen als für ihre Funktion notwendig wäre — eine Art Capability-Scanner für Linux-Systeme.

Abschließend soll für eine Auswahl bekannter Systemdienste (z. B. ping, nginx, sshd) ein minimales Capability-Set ermittelt und dokumentiert werden.

Zur Einarbeitung in die Thematik sind folgende Quellen als Pflichtlektüre vorgesehen:

Seccomp: Syscall-Filter für Linux-Prozesse

Jedes Programm, das unter Linux läuft, kommuniziert mit dem Betriebssystem über sogenannte Systemaufrufe (Syscalls). Ein Texteditor benötigt zum Beispiel nur eine Handvoll davon — Lesen, Schreiben, Öffnen und Schließen von Dateien. Trotzdem steht ihm standardmäßig der gesamte Syscall-Katalog des Linux-Kernels offen, der mehrere hundert Einträge umfasst. Wird der Editor durch eine Sicherheitslücke kompromittiert, kann ein Angreifer über beliebige Syscalls tief in das System eingreifen.

Seccomp (Secure Computing Mode) ist ein Linux-Kernelmechanismus, der es ermöglicht, einem Prozess nur eine Whitelist erlaubter Syscalls zu gewähren. Versucht der Prozess, einen nicht erlaubten Syscall aufzurufen, wird er sofort beendet. Über Seccomp-BPF lassen sich dabei flexible Filter in der BPF-Sprache definieren, die einzelne Syscalls oder sogar bestimmte Argumentkombinationen gezielt erlauben oder blockieren. Seccomp wird unter anderem von Chrome, Docker und OpenSSH eingesetzt.

In dieser Bachelorarbeit soll zunächst die Funktionsweise von Seccomp und Seccomp-BPF erarbeitet und dokumentiert werden. Als praktischer Schwerpunkt sollen mithilfe der Bibliothek libseccomp Seccomp-Profile für mindestens drei bekannte Anwendungen entwickelt werden (z. B. nginx, curl, git). Dabei soll jeweils ermittelt werden, welche Syscalls die Anwendung tatsächlich benötigt (z. B. mit strace), und ein möglichst restriktives Profil erstellt werden. Abschließend soll der Performance-Overhead der aktivierten Filter gemessen und bewertet werden.

Zur Einarbeitung in die Thematik sind folgende Quellen als Pflichtlektüre vorgesehen:

Linux Namespaces: Einen einfachen Container von Hand bauen

Container-Technologien wie Docker sind aus der modernen Softwareentwicklung nicht mehr wegzudenken. Was Docker intern jedoch zusammenhält, ist kein Magie, sondern ein Satz von Linux-Kernelfunktionen namens Namespaces. Namespaces isolieren verschiedene Sichten auf Systemressourcen: Ein Prozess in einem eigenen PID-Namespace sieht nur seine eigenen Prozesse, in einem eigenen Network-Namespace nur seine eigenen Netzwerkinterfaces, und so weiter. Linux unterstützt derzeit acht Namespace-Typen, darunter PID, Network, Mount, UTS, IPC und User.

Ziel dieser Bachelorarbeit ist es, die Funktionsweise von Linux Namespaces von Grund auf zu verstehen und praktisch anzuwenden — indem Schritt für Schritt ein einfacher Container ohne Docker gebaut wird, nur mit den Linux-Syscalls clone(), unshare() und chroot() sowie einem minimalen Root-Dateisystem. Der fertige Mini-Container soll dabei folgende Isolationseigenschaften besitzen:

  • Isolierter Prozessbaum (PID-Namespace)
  • Eigenes Netzwerkinterface mit NAT-Anbindung (Network-Namespace)
  • Isoliertes Dateisystem (Mount-Namespace, chroot)
  • Eigener Hostname (UTS-Namespace)
  • Unprivilegierter Betrieb durch User-Namespaces

Der Fokus liegt nicht auf Vollständigkeit, sondern auf dem Verständnis: Für jeden Namespace-Typ soll erklärt werden, was er isoliert, wie er im Kernel umgesetzt ist, und wie Docker ihn intern verwendet. Die Implementierung kann in C oder Python erfolgen.

Zur Einarbeitung in die Thematik sind folgende Quellen als Pflichtlektüre vorgesehen:

  • Linux Man Page: namespaces(7) — overview of Linux namespaces — die vollständige Referenz aller Namespace-Typen mit Erklärung der relevanten Syscalls.
  • Liz Rice: Containers From Scratch — ein bekannter Vortrag und begleitender Go-Quellcode, der zeigt wie ein einfacher Container in wenigen Dutzend Zeilen Code gebaut werden kann. Hervorragend als Inspiration und Ausgangspunkt geeignet.

Automatisierte Härtung eines Linux-Systems nach CIS Benchmark

Ein frisch installiertes Linux-System ist in der Regel nicht für den produktiven Einsatz gehärtet: Unnötige Dienste laufen, Passwortrichtlinien sind zu lax, Logging ist unvollständig und Dateiberechtigungen sind zu permissiv. Der CIS Benchmark für Ubuntu Linux ist ein kostenlos verfügbarer, branchenübergreifend anerkannter Leitfaden des Center for Internet Security, der mehrere hundert konkrete Härtungsmaßnahmen definiert — von der Dateisystemkonfiguration über SSH-Härtung bis hin zu Kernel-Parametern und Audit-Logging.

Ziel dieser Bachelorarbeit ist die Entwicklung eines Ansible-Playbooks, das ein Ubuntu-System automatisiert und reproduzierbar nach CIS Benchmark Level 1 härtet. Ansible ist ein agentenloses Automatisierungswerkzeug, das Konfigurationen in lesbarem YAML beschreibt und ohne vorherige Programmiererfahrung gut erlernbar ist. Das Playbook soll mindestens die folgenden Bereiche abdecken:

  • Dateisystemhärtung (Deaktivierung unnötiger Dateisysteme, restriktive Mount-Optionen)
  • Minimierung laufender Dienste
  • SSH-Härtung (Root-Login deaktivieren, starke Algorithmen erzwingen)
  • Passwort- und Kontosperrrichtlinien
  • Kernel-Parameter (sysctl-Härtung)
  • Audit-Logging mit auditd

Für jeden umgesetzten Bereich soll dokumentiert werden, warum die jeweilige Maßnahme sicherheitsrelevant ist. Abschließend soll der Vorher-Nachher-Zustand des Systems mithilfe eines Audit-Tools (z. B. Lynis) gemessen und verglichen werden.

Zur Einarbeitung in die Thematik sind folgende Quellen als Pflichtlektüre vorgesehen:

  • Center for Internet Security: CIS Benchmark für Ubuntu Linux — der kostenlos als PDF herunterladbare Benchmark ist die zentrale Referenz und sollte von Beginn an als Arbeitsdokument verwendet werden.
  • Ansible Dokumentation: Getting Started with Ansible — der offizielle Einstieg in Ansible, der keine Vorkenntnisse voraussetzt.

Dynamische Deadlock Erkennung

Bei dieser Abschlussarbeit soll eine Lösung entwickelt werden, mit der sich zur Laufzeit Deadlocks innerhalb eines Linux-Prozesses entdecken lassen, der PThreads verwendet.

Die Lösung soll einen Prozess zur Laufzeit beobachten und immer den aktuellen Zustand des Betriebsmittelgraphen rendern. Falls es zu einem Deadlock kommt, soll dieser visuell hervorgehoben werden. Optional soll es möglich sein, einer der beteiligten Threads zu terminieren, um den Deadlock aufzulösen.

Ein Guter Einstiegspunkt in die Thematik ist die wissenschaftliche Veröffentlichung Deadlock detection runtime service for Embedded Linux von Glatz und anderen.

Raspberry Pi als Netzwerkmonitor: Aufzeichnung und Analyse von Netzwerkverbindungen

Moderne Betriebssysteme und Anwendungen kommunizieren im Hintergrund kontinuierlich mit externen Servern — für Updates, Lizenzprüfungen oder Telemetrie. Welche Server dabei kontaktiert werden, ist für den Endnutzer in der Regel nicht transparent. Ziel dieser Bachelorarbeit ist die Entwicklung einer kostengünstigen, hardwarenahen Lösung, die diesen Datenverkehr sichtbar macht, ohne dass Software auf den überwachten Geräten installiert werden muss.

Konkret soll ein Raspberry Pi als transparente Netzwerkbrücke zwischen dem lokalen Netzwerk und dem Router betrieben werden. In dieser Position kann er den gesamten Datenverkehr passiv mitlesen, ohne dass die übrigen Geräte im Netzwerk konfiguriert werden müssen. Für jeden erfassten Verbindungsversuch sollen mindestens folgende Daten in einer lokalen SQLite- oder PostgreSQL-Datenbank gespeichert werden:

  • IP-Adresse und Hostname des sendenden Geräts
  • IP-Adresse und — soweit auflösbar — Hostname des Zielservers
  • verwendetes Netzwerkprotokoll (TCP/UDP) und Zielport
  • Zeitstempel der Verbindung

Der inhaltliche Schwerpunkt der Arbeit liegt auf der Auswertung der erfassten Daten über ein Webportal, das insbesondere bekannte Telemetrie-Endpunkte identifizierbar macht. Als optionale Erweiterung kann der Raspberry Pi zusätzlich als WLAN-Access-Point betrieben werden.

Zur Einarbeitung in die Thematik sind folgende Quellen als Pflichtlektüre vorgesehen:


4. Softwareentwicklung & Tools

Datei-Tagging-System als Thunar-Plugin oder eigenständiger Dateiexplorer

Moderne Dateisysteme organisieren Dateien ausschließlich über ihre Position in einer Ordnerhierarchie. Dieses Prinzip stößt schnell an seine Grenzen, wenn eine Datei thematisch zu mehreren Kategorien gehört oder wenn man Dateien nach inhaltlichen Kriterien suchen möchte, die sich nicht in Ordnernamen abbilden lassen.

Ziel dieser Bachelorarbeit ist die Entwicklung eines Tag-basierten Dateiverwaltungssystems für Linux. Dabei gibt es zwei mögliche Umsetzungsansätze, von denen einer gewählt werden soll:

  • Ein Plugin für den Dateimanager Thunar (der Standard-Dateimanager der XFCE-Desktopumgebung), das sich über die offizielle Thunar Extension API in die bestehende Oberfläche integriert.
  • Ein eigenständiger grafischer Dateiexplorer (z. B. mit GTK oder Qt), der das Tagging als zentrales Organisationsprinzip direkt einbaut.

In beiden Fällen sollen mindestens die folgenden Funktionen umgesetzt werden:

  • Dateien und Ordnern können über die Benutzeroberfläche beliebige Tags (Textetiketten) zugewiesen, bearbeitet und wieder entfernt werden.
  • Alle Tag-Zuweisungen werden in einer lokalen SQLite-Datenbank persistent gespeichert.
  • Eine Suchfunktion ermöglicht es, alle Dateien zu finden, die einen bestimmten Tag oder eine Kombination mehrerer Tags besitzen.
  • Wird eine Datei umbenannt oder verschoben, sollen die zugehörigen Tags soweit möglich automatisch aktualisiert werden.

Der Fokus der Arbeit liegt auf einem sauberen Softwaredesign, einer intuitiven Benutzeroberfläche und der korrekten Persistenz der Daten. Der Umfang der Funktionalität ist bewusst begrenzt gehalten, um eine vollständige und stabile Implementierung innerhalb der Bearbeitungszeit zu ermöglichen.

Zur Einarbeitung in die Thematik sind folgende wissenschaftliche Veröffentlichungen vorgesehen:

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.

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.

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.

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:

  • 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.

Konzeption und Umsetzung von Gameplay-Erweiterungen für devilutionX

Bei devilutionX handelt es sich um eine plattformübergreifende Open-Source-Implementierung von Diablo, einem Action-RPG von Blizzard Entertainment aus dem Jahr 1996. Das Projekt ist in C/C++ geschrieben und unterstützt alle gängigen modernen Betriebssysteme wie Windows 10, macOS, Linux oder BSD.

Weitere Informationen finden Sie auf der Projektseite auf GitHub.

Im Rahmen dieser Masterarbeit soll ein Mod für dieses Spiel entwickelt werden. Nachfolgend werden zwei Ideen für sinnvolle Erweiterungen vorgestellt.

Stash

Dieser Mod soll es ermöglichen, Gegenstände zwischen verschiedenen Heldinnen und Helden auszutauschen.

Enchantment

Es soll möglich sein, dass einer der Dorfbewohner (Deckard Cain oder Adria) reguläre Gegenstände ver- bzw. entzaubern kann.