Student Thesis Topics (2021/2022)

Below is a collection of ideas for student projects. I am mostly writing down topic clusters I am interested in as I strongly prefer to have multiple students working on related topics within a topic cluster.

If you are interested in systems-oriented computer science and computer security, talk to me in person. In general I expect that students have a solid understanding of operating systems and computer networks and that they are able to handle programming tasks well and that they can work independently.


ORC Improvements

ORC (OpenWrt RestConf) is an open source implementation of the RESTCONF protocol (RFC 8040) for OpenWrt, an embedded Linux system. It was originally written by Malte Granderath in 2020 as part of his BSc thesis.

A number of improvements can be made to the ORC:

  • ORC support for the Network Management Datastore Architecture (RFC 8342, RFC 8527)
  • ORC support for the Network Configuration Access Control Model (RFC 8341)
  • ORC support for basic standard data models
  • ORC support for Linux container
  • ORC client tools (rust?)

Reading:

Requirements:

  • Excellent C programming skills
  • Interest to write code for embedded devices with limited resources
  • Interest to develop, test, and evaluate standards-compliant code
  • Familiarity with system-level programming and development techniques

Expectations:

  • State of the art analysis of existing related work
  • Design and implementation of proposed extensions
  • Proper documentation and automated testing
  • Evaluation in terms of completeness, robustness, resource usage

Hardware-based Control Flow Integrity

Security attacks often try to change the control flow of applications. A common problems are overwrites of function return addresses. Several techniques have been proposed to enforce control flow integrity. The goal of this work is to evaluate hardware-based approaches with a specific focus on solutions applicable to the RISC-V processors.

  • What are existing solutions adopted by CPU manufacturers to make control flow attacks more difficult or impossible?
  • What can be learned from existing approaches and what should the RISC-V community adopt?
  • Is it possible to prototype solutions?

Reading:

Requirements:

  • Understanding of program execution at the instruction set level
  • Interest to learn about RISC-V CPUs
  • Interest to learn about security work related to RISC-V

Expectations:

  • State of the art analysis of existing related work
  • Evaluation of existing state of the art solutions
  • Development and prototyping of ideas that go beyond the state of the art
  • Proper documentation

Software-based Control Flow Integrity

Security attacks often try to change the control flow of applications. A common problems are overwrites of function return addresses. Several techniques have been proposed to enforce control flow integrity. The goal of this work is to evaluating software-based approaches.

  • What are existing solutions that can be implemented by compilers without specific support by the hardware?
  • To which degree to these techniques impact performance?

Reading:

Requirements:

  • Understanding of program execution at the instruction set level
  • Understanding of program transformations at the compiler level

Expectations:

  • State of the art analysis of existing related work
  • Evaluation of existing state of the art solutions
  • Development and prototyping of ideas that go beyond the state of the art
  • Proper documentation

Control Flow Graph Discovery

Active malware analysis is executing programs in emulated environments and the challenge is to learn user inputs that quickly discover significant portions of the control flow graph of the program under test. This is mainly done for Android applications. Questions related to this work are:

  • Can some of the techniques be applied to other pieces of software? How specific are things to the Android environment? What about Linux or containerized applications?
  • What is the testing/fuzzying community doing to generate inputs for fuzzying purposes? What can be learned from them and be applied to control flow graph discovery?

Reading:

Requirements:

  • Understanding of program execution at the system call or C library level
  • Interest to learn about reinforcement learning techniques

Expectations:

  • State of the art analysis of existing related work
  • Evaluation of existing state of the art solutions
  • Development and prototyping of ideas that go beyond the state of the art
  • Proper documentation

Fingerprint Recognition on Cortex-M Processors

A fingerprint matching algorithm has been designed and implemented such that it can execute in the security world of a Cortex-M processor in 2021. The idea is to build on this work and to extend it in several directions:

  • Implementation of the missing feature extraction stages to realize a complete prototype
  • Improvements of the matching algorithm, both in terms of the accuracy but also its resource usage
  • Investigating of other processors that provide a similar separation of a trusted secure world from an untrusted world

Reading:

  • Last year's BSc thesis (contact me)

Requirements:

  • Software development skills for embedded systems
  • Competence to work close to the hardware level
  • Interest to learn about the specifics of Cortex-M processors
  • Algorithmic competence and interest to make code efficient

Expectations:

  • Improvements of the existing algorithm
  • Design of a complete prototype (not just the matching functionality)
  • Evaluation against other state of the art solutions
  • Proper documentation

Educational Operating Systems (written in Rust)

Linux is a great open source operating system to work with. However, it has become way too complex to use it effectively for teaching fundamental operating system concepts. Furthermore, there is a push towards using Rust instead of C to write more robust operating system kernels. The goal of this project is to investigate recent educational operating systems, with a specific focus on Rust. The work can evolved into different directions, such as developing improvements for open source educational operating systems or rewriting educational operating systems (or components thereof) in Rust.

Reading:

Requirements:

  • Excellent system-level programming skills
  • Time and motivation to learn Rust
  • Interest in educational aspects

Expectations:

  • Analysis of existing embedded operating systems written in Rust
  • Evaluation of both technical aspects as well as usability aspects
  • Proper documentation and automated testing of code components

Evaluation and Improvement of Tock

Tock is a well documented open source operating system written in Rust. It was originally developed by researchers working a Stanford, the University of California at Berkely, and the University of Virginia. The goal of this project is to investigate and evaluate the usability of the current version Tock 2.0 and to develop and prototype extensions and new features.

Reading:

Requirements:

  • Excellent system-level programming skills
  • Time and motivation to learn Rust
  • Ability to resolve issues where stackexchange does not have the answer

Expectations:

  • Analysis of existing embedded operating systems written in Rust
  • Evaluation of both technical aspects as well as usability aspects
  • Proper documentation and automated testing of code components

Firefly-like Demos on embedded RISC-V boards

RISC-V processors are getting traction on embedded systems due to the fact that RISC-V technology is royality free. The goal of this effort is to survey how the available RISC-V hardware is evolving and to develop demonstration prototypes, such as implementations of fully distributed firefly synchronization.

Reading:

Requirements:

  • Excellent system-level programming skills
  • Interest to learn about RISC-V details
  • Ability to resolve issues where stackexchange does not have the answer

Expectations:

  • Building of concrete prototypes using RISC-V hardware (e.g., ESP32-C3)
  • Evaluation of both technical aspects as well as usability aspects
  • Proper documentation and automated testing of code components

Embedded Rust

There are several open source and commercial projects implementing embedded operating systems written entirely in Rust. The Rust Embedded community is developing documentation and code components to simplify the develop of embedded systems in Rust. The goal of this work is to investigate the state of the art and to contribute to the development of an infrastructure that makes embedded systems in Rust easier to build.

Reading:

Requirements:

  • Excellent system-level programming skills
  • Time and motivation to learn Rust
  • Ability to resolve issues where stackexchange does not have the answer

Expectations:

  • Analysis of existing embedded operating systems written in Rust
  • Evaluation of both technical aspects as well as usability aspects
  • Proper documentation and automated testing of code components

Academic and Technical Events CO2 Calculators

Academic conferences and technical events such as standardization meetings are expensive in terms of their CO2 footprint. Several years ago, the ACM SIGPLAN created a conference CO2 calculator, which seems to not have been updated for a while. The goal of this project is to investigate relevant CO2 calculation models and to prototype an implementation that can be used to calculate past and future CO2 footprints of academic events or technical events (such as standardization meetings).

Reading:

Requirements:

  • Interest to research different CO2 models and their pros and cons
  • Good software development skills in a robust language
  • Design skills for good command line APIs as well as Web APIs

Expectations:

  • Deep analysis of the state of the art of relevant CO2 models
  • Comparison of the differences produced by different CO2 models
  • Development of practically useful tools that can be easily integrated
  • Proper documentation and automated testing of code components

Internet CO2 Calculators and Reporting

The Internet consumes a significant amount of energy and hence it has a CO footprint that we as users often do not realize. There have been efforts to provide CO2 calculators for Internet services. The goal of this project is to investigate which tools exist, what the underlying models are, which data is used to calculate CO2 footprints etc. There is room to investigate and develop novel approaches to estimate CO2 footprints from network data traces, for example collected at a router or network switch or to investigate which tools exist to estimate the CO2 footprint caused by a single device (e.g., a notebook, a tablet or a smartphone). There is also room to investigate how CO2 footprints can be reported, e.g., similar to screen time reports that some of the operating systems generate today. [Note that this topic can be potentially split into a data gathering and collection part and a data analysis and reporting part.]

Reading:

Requirements:

  • Interest to research different CO2 models and their pros and cons
  • Good software development skills in a robust language
  • Good understanding of Internet protocols

Expectations:

  • Deep analysis of the state of the art of relevant CO2 models
  • Comparison of the differences produced by different CO2 models
  • Development of practically useful tools that can be easily integrated
  • Proper documentation and automated testing of code components