====== Themen für Abschlussarbeiten im IPv6-Labor der HTW: ====== * Nachfolgend finden Sie einige Themenvorschläge für Abschlussarbeiten oder Projekte. * Diese können nach Bedarf erweitert oder ergänzt werden. * Eigene Themenvorschläge sind willkommen. * **Anfragen zur Betreuung sind mindestens 3 Monate vor dem Termin der Beantragung schriftlich zu stellen!** * Zu jeder Anfrage einer Betreuung ist ein Expose auszuarbeiten: [[public_v6:thesis:expose|Hinweise zum Erstellen eines EXPOSÉS]] * Änderungen, Absprachen u.ä. sind immer schriftlich (per Email) zu stellen. Mündliche Zusagen haben keine Gültigkeit! ---- ===== Übertragung von MIDI-Daten via RTP MIDI über ein Multicast Netzwerk ===== Es soll eine praktische Untersuchung zur Übertragung von RTP MIDI in einem gerouteten Multicast Netzwerk durchgeführt werden. Dazu ist mit praktischen Labormitteln (Cisco Router & Switches) ein geroutetes Multicast Netzwerk aufzubauen und praktische Messungen zur Einsatzfähigkeit in realen Szenarien zu testen, bei denen verschiedene MIDI Events koordiniert werden sollen. ==== Links: ==== * https://github.com/ravelox/pimidi * https://pypi.org/project/rtmidi/ * https://ixdlab.itu.dk/wp-content/uploads/sites/17/2017/10/Setting-Up-Raspberry-Pi-for-MIDI.pdf ===== Portierung einer GUI für den IPv6 Packet-Generator ===== Eine existierende graphische Oberfläche für [[https://scapy.net/|Scapy]] soll aktualisiert und erweitert werden. Die Anwendung ist in Python programmiert und nutzt die Graphikbibliothek QT4. Diese Bibliothek steht auf aktuellen Systemen nicht mehr zur Verfügung aktuell sind QT5 und QT6 im Einsatz. Ziel der Arbeit ist es die Applikation an die aktuellen Graphikbibliotheken anzupassen und den Anpassungsprozess zu dokumentieren. Weiterhin sind Merkmale und Eigenschaften des Gesamtsystems zu dokumentieren und erste Vorschläge für ein Re-Design der Applikation zu erstellen, mit denen sich auch anderer IP-Pakete komfortabel mit einem graphischen Editor erstellen lassen. ==== Vorraussetzungen: ==== * Bereitschaft zur selbstständigen Arbeit * Gute Python Kenntnisse * Gute Linux Kenntnisse ==== Links: ==== * https://github.com/tscheffl/scapy-GUI ---- ===== Untersuchung zur Nutzer-Authentisierung eines FreeBSD-Servers mit Yubikey (FIDO2) ===== Es sollen untersucht werden, wie auf einem FreeBSD-Server eine sichere Benutzerauthentifizierung mittels Yubikey eingerichtet werden kann. Ziel der Untersuchung ist die Bereitstellung einer sicheren Nutzerauthentisierung für den physischen Zugriff auf die Systemkonsole(Tastatur/Bildschirm), sowie die mögliche Integration des sicheren Fernzugriffs per SSH. Der Installationsprozess ist nachvollziehbar zu dokumentieren. Es soll eine Übersicht der Merkmale und Eigenschaften des Gesamtsystems erstellt werden. ==== Vorraussetzungen: ==== * Bereitschaft zur selbstständigen Arbeit * Sehr gute Unix und grundlegende Sicherheits-Kenntnisse, da teilweise Systemeinstellungen geändert werden müssen * Gute LaTeX Kenntnisse ==== Links: ==== * https://freebsdfoundation.org/wp-content/uploads/2018/06/Protect-Your-Secrets.pdf * https://gist.github.com/daemonhorn/bdd77a7bc0ff5842e5a31d999b96e1f1 * https://www.youtube.com/watch?v=hpqvimrftd0 * https://www.youtube.com/watch?v=znm-gl9zTxw ===== Untersuchung zum schnellen Passwort-Hashing mit Hardware-Unterstützung ===== Es sollen aktuelle Programme und Bibliotheken zum schnellen Passwort-Hashing untersucht werden. Ziel der Untersuchung ist die Auswahl und Bereitstellung einer Zielplattform (PC mit Grafikkarte, Linux oder Windows) für die praktische Demonstration von schnellem Passwort-Hashing und Empfehlungen zur Passwortsicherheit. Im Rahmen der Arbeit sind Performance-Messungen durchzuführen und die Ergebnisse zu dokumentieren. Der Installationsprozess ist nachvollziehbar zu dokumentieren. Es soll eine Übersicht der Merkmale und Eigenschaften des Gesamtsystems erstellt werden. ==== Vorraussetzungen: ==== * Bereitschaft zur selbstständigen Arbeit * Sehr gute Linux und PC-Hardware Kenntnisse, da teilweise angepasste Grafiktreiber installiert werden müssen * Gute LaTeX Kenntnisse ==== Links: ==== * https://wiki.ipv6lab.f1.htw-berlin.de/sec/passwords * https://www.hivesystems.io/blog/are-your-passwords-in-the-green * https://www.golem.de/news/passwortknacker-john-the-ripper-entschluesselt-mit-gpus-1207-92954.html * https://www.openwall.com/john/ * https://hashcat.net/wiki/doku.php?id=oclhashcat ===== Konfiguration und Performance-Messungen auf einem Whitebox-Switch ===== Es soll auf einem im Labor vorhandenen Whitebox-Switch ein Linux-basiertes Betriebssystem installiert und konfiguriert werden. Anschließend sind Performance-Messungen durchzuführen. Der Installationsprozess ist nachvollziehbar zu dokumentieren. Es soll eine Übersicht der Merkmale und Eigenschaften des Gesamtsystems erstellt werden. Switching und Routing-Protokolle sind zu testen. ==== Vorraussetzungen: ==== * Bereitschaft zur selbstständigen Arbeit * Sehr gute Linux und Netzwerk Kenntnisse * Gute LaTeX Kenntnisse ==== Links: ==== * https://www.basebox.org * https://www.bisdn.de/wp-content/uploads/Open-Source-Whitebox-Router-Feb-19-1.pdf * https://www.mellanox.com/related-docs/prod_management_software/AS4610-54T_Mellanox_DS_R01_20170616.pdf ===== Untersuchungen zu gRPC und Protocol Buffers ===== Remote Procedure Calls werden in verteilten Systemen zur Interprozesskommunikation eingesetzt. Sie ermöglichen den Aufruf von Funktionen auf einem entfernten Computer. Dabei führt das aufrufende System den Funktionsaufruf durch, ohne die Implementierungsdetails der Netzkommunikation kennen zu müssen. Protocol Buffers wurden zur effektiven Serialisierung von Datenformaten entwickelt. Sie nutzen ein Binärformat und sind damit in der Übertragung effizienter als XML oder JSON. Die Datenbeschreibung nutzt eine Schnittstellen-Beschreibungssprache und ist damit Programmiersprachen-unabhängig. In der Arbeit sollen gRPC und Protocol Buffers näher analysiert und mit Alternativen verglichen werden. Dazu ist eine gRPC-basierte Client/Server Anwendung in Python zu erstellen und Performance Messungen durchzuführen. gRPC findet auch bei neuartigen Ansätzen der Realisierung von Netzwerkgeräten (Software-defined Networking, SDN) Anwendung. Insbesondere P4-Runtime (das Control-Plane Interface für P4 Programme) nutzt gPRC. Der Einsatz von gPRC bei P4-Runtime ist nachzuvollziehen und ggf. anhand einer einfachen Demo zu validieren. **Vorraussetzungen:** * Bereitschaft zur selbstständigen Arbeit * Sehr gute Linux, Netzwerk und Python Kenntnisse * Gute LaTeX Kenntnisse **Links:** * https://www.grpc.io/about/ * https://grpc.io/docs/languages/python/quickstart/ * https://developers.google.com/protocol-buffers/docs/overview * https://de.wikipedia.org/wiki/Remote_Procedure_Call * https://www.heise.de/developer/meldung/Alternative-zu-REST-gRPC-Web-jetzt-allgemein-verfuegbar-4202697.html * https://github.com/p4lang/p4runtime * https://github.com/p4lang/PI/blob/master/proto/demo_grpc/README.md \\ ===== Programmierung einer P4-Switch Anwendung ===== P4 is a programming language designed to allow programming of packet forwarding planes. In contrast to a general purpose language such as C or Python, P4 is a domain-specific language with a number of constructs optimized around network data forwarding. P4 is an open-source, permissively licensed language and is maintained by a non-profit organization called the P4 Language Consortium. The goal of this project is to work through a basic P4 tutorial and translate this to a tutorial in German, so that it can be used for classroom teaching: **Links:** * https://github.com/p4lang/tutorials * https://github.com/jafingerhut/p4-guide/tree/master/v1model-special-ops * https://p4.org/p4-spec/docs/P4-16-v1.2.0.html * https://sdn.systemsapproach.org/switch.html#p4-programs * https://www.intel.de/content/www/de/de/products/network-io/programmable-ethernet-switch/tofino-2-series.html * https://wiki.ipv6lab.f1.htw-berlin.de/ne/sdn/p4 \\ ===== Untersuchungen zum Data Plane Development Kit (Linux/Freebsd) ===== In der Arbeit soll untersucht werden werden, welche Performance-Unterschiede durch den Einsatz von DPDK auf Linux-Maschinen zu erwarten ist. Dazu sollen zwei identische Linux Rechner mit je zwei virtuellen Maschinen konfiguriert werden. Die virtuellen Maschinen sollen über Open vSwitch auf jeweils ein eigenes physikalisches Netzwerkinterface zugreifen. Dabei ist der Performance-Unterschied zwischen der nativen Linux-Implementierung und dem Einsatz von DPDK zu messen. **Links:** * https://www.dpdk.org * http://docs.openvswitch.org/en/latest/howto/dpdk/ * https://iperf.fr \\ ===== Untersuchungen zu CryptoLibraries ===== Es existieren verschiedene Software-Bibliotheken (NaCL, ...) zur Anwendung kryptographischer Algorithmen in eigenen Softwareprojekten. Es soll der aktuelle Stand der derzeitigen Entwicklung untersucht werden und im Rahmen von Beispiel-Implementierungen der Funktionsumfang sowie die Nutzbarkeit der jeweiligen Bibliotheken verglichen werden. **Links:** * https://en.wikipedia.org/wiki/Comparison_of_cryptography_libraries ===== Untersuchungen zum Stand der IPv6 Implementierung für den ESP32/ESP8266 ===== In der Arbeit soll der aktuelle Stand der IPv6 Implementierung für den ESP32/ESP8266 untersucht werden. Dazu soll der Funktionsumfang, die Vollständigkeit der Implementierung, sowie die Nutzung von IPv6 in eigenen Netzwerkprojekten praktisch nachgewiesen werden. **Links:** * https://github.com/esp8266/Arduino/issues/638 \\ \\ ===== Internet Messungen / Internet Measurements ===== Das IPv6-Labor der Beuth Hochschule ist Teil eines weltweiten Netzwerks von Messpunkten im Internet. In diesem Netzwerk werden spezielle Hardware-Probes benutzt um aktive Messungen durchzuführen. Ziel der Arbeit ist es sich mit den verfügbaren Werkzeugen vertraut zu machen und deren Nutzbarkeit für eigene Messungen zu überprüfen. * Erstellung einer Übersicht der Funktionalität von RIPE Atlas * Durchführung und Visualisierung von Messungen * Untersuchung der verfügbaren Schnittstellen (APIs) zur Erstellung eigener Messungen **Links:** * [[https://atlas.ripe.net/]] * [[https://labs.ripe.net/]] * [[https://atlas.ripe.net/probes/3157/]] * [[https://www.internetsociety.org/blog/development/2016/03/ripe-atlas-what-can-it-do-you]] \\ ===== Weiterentwicklung eines IPv6 Paketgenerators ===== Vor einigen Jahren wurde an der Hochschule ein Werkzeug zur graphischen Erstellung von IPv6-Paketen (IP-Paketgenerator) entwickelt. Das Werkzeug setzt auf dem Kommandozeilen-Tool ''scapy'' auf und stellt eine einfache Bedienoberfläche bereit. Diese Software soll in der Arbeit aktualisiert und um neue Funktionen erweitert werden. Das Software-Hosting soll von Google-Code auf Github umgezogen werden. Mögliche Erweiterungen sind: * Generierung von IPv6-Datenströmen (integration von tcp-replay) * Visualisierung von Protokollabläufen * Implementierung von Sicherheitsfeatures * IPv4-Unterstützung * Visualisierung von Paketen, Daten und deren Position im OSI Stack **Voraussetzung:** * Python-Programmierkenntnisse * Linux-Kenntnisse * Bereitschaft in die Einarbeitung von ''scapy'' **Links:** * https://github.com/tscheffl/scapy-gui * https://github.com/albfan/scapy-gui-ipv6 * http://tcpreplay.appneta.com * http://www.secdev.org/projects/scapy/ * http://www.idsv6.de/Downloads/IPv6PacketCreationWithScapy.pdf \\ ===== Software Defined Networks (I) ===== SDN (Software Defined Networking) ist momentan ein wichtiger Trend im Netzwerkbereich.\\ Ziel der Arbeit ist es eine eigene ONOS App zu entwickeln. **Voraussetzungen:** * Es werden grundlegende Linux und Java-Kenntnisse benötigt. * Die entwickelte App soll auf einem PC mit mehreren Netzwerkkarten laufen. **Links:** * https://www.youtube.com/watch?v=Q3ptlUWoAE8 * [[ne:sdn| wiki.ipv6lab.f1.htw-berlin.de/ne/sdn]] \\ ===== Software Defined Networks (II) ===== SDN (Software Defined Networking) ist momentan ein wichtiger Trend im Netzwerkbereich.\\ Ziel der Arbeit ist es eine Open Virtual Switch (Open vSwitch) Installation zu erstellen. **Voraussetzungen:** * Es werden grundlegende Linux-Kenntnisse benötigt. * Die Open vSwitch Installation soll auf einem PC mit mehreren Netzwerkkarten laufen. **Links:** * http://openvswitch.org/ \\ ===== Software Defined Networks (III) ===== SDN (Software Defined Networking) eignet sich auch um verschiedene Funktionen von Netzelementen zu virtualisieren.\\ Im Rahmen der Arbeit soll untersucht werden, welche Sicherheitsfeatures sich in einem Internet-Access-Switch erstellen erstellen lassen. \\Dabei soll der RYU-Controller in Zusammenspiel mit einem Edge-Core AS4610_30T SDN Switch zum Einsatz kommen. **Voraussetzungen:** * Es werden grundlegende Linux-Kenntnisse und die Fähigkeit zur Programmierung in Python benötigt. **Links:** * https://tools.ietf.org/html/rfc4862 * https://tools.ietf.org/html/rfc6105 * https://www.cisco.com/c/en/us/td/docs/wireless/controller/technotes/8-0/IPV6_DG.html#pgfId-76771 \\ ===== Erweiterung eines Tutorials für die Entwicklung von Wireshark Plugins ===== Wireshark ist ein wichtiges Werkzeug für die Analyse des Datenverkehrs in Netzwerken. Es verfügt über eine Programmierschnittstelle, mittels derer sich eigene Protokoll-Analysen (so genannte //Dissectors//) erstellen lassen. Im Rahmen der Arbeit soll ein bereits vorhandenes Tutorial erweitert werden, welches die weiterführende Schritte der Erstellung eines Wireshark-Dissectors anhand eines selbst gewählten Beispielprotokolls dokumentiert. **Voraussetzung:** * grundlegende Linux-Kenntnisse * LaTeX-Kenntnisse * Bereitschaft in die Einarbeitung der Programmiersprache LUA **Links:** * https://wiki.ipv6lab.f1.htw-berlin.de/ne/wireshark#dissector_programmieren \\ ===== WAN Link-Emulation ===== Weitverkehrsnetze (WAN) unterscheiden sich in einer Reihe von Parametern wie z.B. Delay und Durchsatz von Lokalen Netzen (LAN). Diese Parameter haben unmittelbare Auswirkungen auf Übertragungsprotokolle und Anwendungen.\\ In dieser Arbeit soll ein WAN-Emulator auf Basis eine Linux-Systems auf einem Raspberry PI entworfen und getestet werden. Idealerweise sollen die Emulationsparameter per GPIO steuer- und einstellbar sein. Es sollen sich die Latenz, Paketverlustrate und Datendurchsatz flexibel anpassen und steuern lassen. Dazu müssen auf dem Raspberry mehrere Netzwerkinterfaces konfiguriert werden (z.B. per Anbindung über USB). **Vorraussetzungen:** * Bereitschaft zur selbstständigen Arbeit * Sehr gute Linux und Netzwerk Kenntnisse * Gute LaTeX Kenntnisse **Links:** * [[http://www.linuxfoundation.org/collaborate/workgroups/networking/netem|netem]] * [[http://info.iet.unipi.it/~luigi/dummynet/|dummynet]] \\ ===== Restful Webservice für die Überwachung von Ereignissen in einem Sensornetz ===== In der Arbeit soll untersucht werden wie eine Restful Webservice auf einem OpenWRT Heimrouter installiert werden kann um ein angeschlossenes Sensornetz zu überwachen. Dazu ist auf dem OpenWRT Router ein Webserver zu installieren und mittels einer geeigneten Schriftsprache (PHP, Perl, etc.) ein Restful Service auf den Sensorknoten in geeigneten Zeitabständen abzufragen und per Java-Script zu visualisieren. **Links:** * OpenWRT: https://openwrt.org * Anbindung des Sensornetzes: [[contiki:openwrt|OpenWRT 6LoWPAN Gateway]] \\ ===== Vergleich verschiedener IP-Paket-Generierungs-Bibliotheken ===== Testwerkzeuge für Datennetzwerke benötigen sehr oft die Möglichkeit frei konfigurierbare Paketdatenströme zu erzeugen (Lasttests, Test des Antwortverhaltens, Router- und Firewalltests) Für die freie Erzeugung von IP-Paketen zur Übertragung in Netzwerken werden dazu in Betriebssystemen sogenannte Paket-Generierungs-Bibliotheken eingesetzt. Diese Bibliotheken unterscheiden sich hinsichtlich ihrer Performance und der bereitgestellten Funktionalität, sowie der Einfachheit ihrer Verwendung. Im Rahmen der Arbeit sollen verschiedene Bibliotheken (python-pcs, libnet, libdnet, ...) hinsichtlich der folgenden Parameter miteinander verglichen werden: * Unterstützung von IPv6 * Funktionalität * wie einfach können Pakete erzeugt werden, * welche Higher-Layer werden unterstützt * Performance (max. + Overhead beim Erzeugen) **Voraussetzung:** Gute Linux-Kenntnisse, sehr gute Programmier und Netzwerkkentnisse \\ \\ ===== Weitere Ideen: ===== * Es gibt einen recht interessanten **Low Interaction Honeypot** mit dem Namen honeytrap (http://honeytrap.carnivore.it/), der nach bisheriger Recherche leider noch nicht ipv6 fähig ist. Er bietet gute Proxy-Mechanismen und ist in der Lage Exploits bis zu einem gewissen Grade mit [[http://libemu.carnivore.it/|libemu]] zu erkennen und auszuführen. Es soll geprüft werden ob es möglich ist diesen Honeypot IPv6-fähig zu machen. * **IPv6-Tunnelerkennung:** Ein bestehendes Tool zur Netzwerkanalyse soll analysiert und evaluiert werden. Das Thema setzt Python-Kenntnisse voraus und Interesse sich auch mit den theoretischen Hintergründen und IPv6 Standards zu beschäftigen. * **Entwicklung eines Lego Mindstorms Sensors:** Es soll ein Gyroskop-Sensor entwickelt und an das LegoMindstorms Roboter-System angepasst werden. [[http://www.youtube.com/watch?v=4ulBRQKCwd4 _blank external-link-new-window|Youtube Link]] ---- [[public_v6:abschlussarbeiten_in_bearbeitung|... hier finden Sie bereits bearbeitete und nicht mehr aktuelle Aufgabenstellungen]]