TU BRAUNSCHWEIG
| Carl Friedrich Gauß Faculty | Department of Computer Science
Informatikzentrum

Data Accessibility Analysis for Rust Applications

Student(anonymous, Login required)
SupervisorManuel Nieke
ProfessorProf. Dr. Rüdiger Kapitza
IBR GroupDS (Prof. Kapitza)
TypeBachelor Thesis
Statusrunning

Introduction

With the widespread availability of trusted hardware, e.g. Intel's Software Guard Extenseions (SGX) included in most common Intel CPUs, confidential computing has received a lot of attention recently. Such hardware can be used to create Trusted Execution Environments (TEEs) which protect contained code and data against unintended access, even if an attacker has access to priviledged software or directly to the hardware.

Among its numerous applications is the possibility to enhance a program's privacy preservation, as is researched in the PRIMaTE project. One focus of this project is to evaluate the feasability of partitioning, i.e. introducing multiple TEEs into the application, as a means of enhancing privacy even in the presence of exploitable software vulnerabilities.

Problem statement

In order to designate reasonable partitions, as well as evaluate their effectiveness, it is necessary to analyse the data accessibility of an application. Such an analysis shows the potential data accesses of parts of the code, e.g. functions, and can be used to efficiently co-locate code fragments with their accessed data into the same partition.

The programming language Rust promises, among other things, complete memory safety. To this end, the language is designed with a number of restrictions, which allow for static analysis of the code at compile time for potential memory errors. Due to this, it is a promising candidate for data accessibility analysis.

Task description

The goal of this bachelor's thesis is the design and implementation of a data accessibility tool for Rust applications on the basis of functions. This tool should optimally perform a static analysis of the application, e.g. by implementing a compiler pass or operating on compiler output. However, should a static analysis prove infeasible it can be replaced or enhanced with dynamic analysis.

Prerequisites

  • Good knowledge of Rust

last changed 2019-12-09, 11:09 by Manuel Nieke
printemailtop