2 research outputs found
Formally Verifying the Correctness and Safety of OpenTitan Boot Code using CBMC
The correctness and safety of heavily relied upon software is crucial. OpenTitan is an open-source silicon root-of-trust project. Based on an extensive analysis of the OpenTitan project, we, together with SV106f21, developed C code that corresponds to the initial boot stage of OpenTitan. CBMC is a bounded model checker for ANSI-C verification. We verify numerous safety properties for the developed boot code using CBMC. In addition, we propose an overview of the CBMC architecture and theory as well as a structured approach to verify C code using CBMC. We use CBMC nondeterminism to create a C model of the boot code's hardware environment. In total, we verified that the developed boot code adheres to all 11 security properties, with most of them being derived from security goals from our previous work. We also further investigate the safety of the boot code by modeling various hardware attacks and verify for their implication. We discover that the current implementation is vulnerable to attacks on flash, ROM, and the OpenTitan Big Number Accelerator, with the consequence of either executing malicious code or crashing
Preliminary Security Analysis, Formalisation, and Verification of OpenTitan Secure Boot Code
We perform a preliminary security analysis of the initial boot stage for the OpenTitan silicon root of trust, including formalisation and verification of relevant security goals using both bounded model checking and (unbounded) model checking. We further report on a potential vulnerability in the platform and show how it can be reproduced using formal modelling and argue that co-verification would be able to detect such vulnerabilities for high assurance projects.</p
