A month ago we presented our work on a new technique for validating an execution environment at boot time at ISC’14; we refer to it as certainty boot. In the first stages of this work, we found inspiration in Cory Doctorow’s talk “The Coming War on General Purpose Computing”. Here, Doctorow actually proposes a high-level description of what we have implemented. At the moment we have a prototype based on ARM TrustZone as a Trusted Execution Environment and a Secure Element as a tamper-resistant unit. Now we are working on a demo using a Zynq ZC702 development board.
Here you can find the article and the presentation.
Abstract Current efforts to increase the security of the boot sequence for mobile devices fall into two main categories: (i) secure boot: where each stage in the boot sequence is evaluated, aborting the boot process if a non expected component attempts to be loaded; and (ii) trusted boot: where a log is maintained with the components that have been loaded in the boot process for later audit. The first approach is often criticized for locking down devices, thus reducing users’ freedom to choose software. The second lacks the mechanisms to enforce any form of run-time verification. In this paper, we present the architecture for a two-phase boot verification that addresses these shortcomings. In the first phase, at boot-time the integrity of the bootloader and OS images are verified and logged; in the second phase, at run-time applications can check the boot traces and verify that the running software satisfies their security requirements. This is a first step towards supporting usage control primitives for running applications. Our approach relies on off-the-shelf secure hardware that is available in a multitude of mobile devices: ARM TrustZone as a Trusted Execution Environment, and Secure Element as a tamper-resistant unit.