Unpredictable randomness in timing predictable systems


Random number generators are an essential part of today's mainstream operating systems, for example to provide address space layout randomization (ASLR), robust TCP sequences numbers, or encrypted communication. These random number generators often depend on collecting entropy from jitter in the CPU execution and interrupts handling [1][2].

However, the situation to collect enough "good" entropy during system startup to provide unpredictable random numbers becomes much harder for embedded systems that boot in a fast and predictable way, e.g. automotive ECUs booting from internal flash.

The goal of this thesis is to design and to implement an entropy collection framework based on CPU jitter and random number generator services like getrandom() [3] in Marron [4], and evaluate the quality of the collected entropy for typical operating system use cases of embedded system and hypervisors, e.g. ASLR or entropy seeds for virtual machines [5].

Marron is a small, statically configured (microkernel) operating system for research in predictable operating systems. The implementation targets MMU-based 32-bit and 64-bit ARM Cortex-A multicore processors. The design can be evaluated on a wide range of typical embedded ARM platforms, e.g. Xilinx UltraScale+ ZCU102, Nvidia AGX Xavier or AGX Orin.

The thesis is done in cooperation with Bosch Engineering GmbH.


[1] http://www.issihosts.com/haveged/
[2] https://lwn.net/Articles/884875/
[3] https://man7.org/linux/man-pages/man2/getrandom.2.html
[4] https://gitlab.com/azuepke/marron
[5] https://wiki.qemu.org/Features/VirtIORNG

Requirements

C, system programming (seL4 or Linux Kernel), Makefile, Bash

Thesis Type

Masterarbeit

Contact

Alex Züpke

Gebäude 5501 Raum 2.108

+49 (89) 289 - 55174

alex.zuepke@tum.de