# Expose der Bachelorarbeit über die Erstellung eines Linux-Kernel-Modules in der Programmiersprache 'Rust'. ## Motivation Das Betriebssystem Linux wurde seit seiner gesamten Entwicklung bisher in der Programmiersprache 'C' geschrieben. Dies hat den Nachteil, dass viele Sicherheitsprobleme entstanden sind und weiterhin bestehen. Der Grund ist das unsichere und schwierige Speichermanagment, dass die Programmiert Sprache 'C' mit sich bringt. Diese Probleme von 'C' wurde von der Programmiersprache 'Rust' mit dem Ziel angegangen, möglichst viele dieser Logik- und Sicherheitsproblmen schon zur Compile-Zeit auszuschließen. Nach mehr als einen Jahrzehnt seit der Veröffentlichung der 'Rust' Sprache, wurde 'Rust' nun auch als Sprache in dem Linux-Kernel zugelassen, um nach und nach die Sicherheitsprobleme im Linux-Kernel zu beheben //TODO citie ## Forschungsfrage Diese Bachelorarbeit möchte nun die Umstände betrachten die Entstehen wenn man einen Device-Treiber als Linux-Kernel-Modul in der 'Rust' Sprache schreibt. Welche Sicherheitslücken werden dadurch effektiv geschloßen und wodurch ergeben sich neue? Welche Probleme ergeben sich an den Schnittstellen des Moduls, wenn es in einer anderen Sprache geschrieben ist als ein Großteil des Linux-Kernels. Welche Sicherheits-Probleme können durch eine Sprache mit sicheren Speicher-Management nicht geschlossen werden, wenn die Umgebung nicht in gleicherweise sicher ist. Ebenfalls soll dabei auf die Architektur des Linux-Kernels und die Schwierigkeiten und Herausforderungen, die diese für die Entwicklung eine sicheren Moduls darstellt, eingegangen werden. ## Vorgehensweise Ein Hauptmerkmal bei der Entwicklung des Moduls soll die Sicherheit sein. So sollen alle Architektur-Entscheidungen hinsichtlich der Sicherheit entschieden und dokumentiert werden. Die Funktionalität und Sicherheit soll ebenfalls durch Software-Tests von Anfang an unterstützt und sichergestellt werden. //TODO moare! was und wie willst du das evaluieren: beispiel modul für hardware device.rust: performence... ## Vorläufige Gliederung - abstract - einleitung (1,5 seiten) - aufbau der arbeit - eigene motivation - module .. - zielsetzung - stand der technik - des kernels - der rust sprache - evaluation - performence ... - sicherheit ... - fazit ## Vorläufiger Zeitplan | Arbeitsschritt | Geschätzte Arbeitszeit | Zeitraum | | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------- | ------------------- | | *Themenfindung*<br>Betreuer finden, erste Besprechung, Themenanalyse, Themenabgrenzung (Suchbegriffe, Ziele), erstes Einlesen, Expose anfertigen | 8 Wochen | 01.07.21 - 01.10.21 | | *grobe Recherche*<br>Erste grobe Recherche, Start der Materialsammlung, erste Materialsichtung und –ordnung (Überblick über das Thema verschaffen, Einlesen in Grundlagen) | 2 Wochen | 01.10.21 - 15.10.21 | | *Hauptrecherche*<br>Sichtung der vielen Rechercheergebnisse und Aufarbeitung | 3 Wochen | 15.10.21 - 01.12.21 | | impementieren | 4 Wochen | | | *Schreiben der Arbeit*<br>ggf. weiterführende Recherche, evtl. Anpassung der Gliederung, Besprechung mit Betreuer, erste Schreibergebnisse besprechen, Gliederung festlegen, Schreiben, Ausformulieren, nach und nach entstandene Lücken füllen | 4 Wochen | 01.12.21 - 01.01.22 | | test verifizieren | 2 wochen | | | *Nacharbeiten*<br>Text formatieren, Korrektur lesen und lesen lassen, Korrekturen einarbeiten | 2 Wochen | 01.01.22 - 15.01.22 | | *Abgabe*<br>Drucken, Binden, Abgabe | 1 Woche | 15.01.22 - 22.01.22 | //TODO add intermediate results for project (project settup, when should the kernel modul be ready?, time to refactor etc.) ## Literatur //TODO add 2-3 source about rust //TODO add 2-3 source about linux kernel and kernel-modules