Trustworthy Systems

Formally verified system initialisation


Andrew Boyton, June Andronick, Callum Bannister, Matthew Fernandez, Xin Gao, David Greenaway, Gerwin Klein, Corey Lewis and Thomas Sewell




The safety and security of software systems depends heavily on how they are initially configured. Manually writing program code that establishes such an initial configuration is a tedious and error-prone engineering process.

In this paper we present our automatic and formally verified initialiser for component-based systems on the general-purpose microkernel seL4. The initialiser takes a declarative formal description of the desired initialised state and uses seL4 provided services to create all necessary components, setup their communication channels, and distribute the required access rights.

We provide a formal specification of the initialiser and prove, in the theorem prover Isabelle/HOL, that the resulting state is the desired one. Our proof formally connects to the existing functional correctness proof of the seL4 microkernel.

This tool not only automates the process of initialising a system, it also provides unprecedented assurance for reaching a desired safe system state. In addition to the engineering advantages, this result is a key prerequisite for reasoning about system-wide security and safety properties.

BibTeX Entry

    address          = {Queenstown, New Zealand},
    author           = {Boyton, Andrew and Andronick, June and Bannister, Callum and Fernandez, Matthew and Gao, Xin and
                        Greenaway, David and Klein, Gerwin and Lewis, Corey and Sewell, Thomas},
    booktitle        = {Proceedings of the 15th International Conference on Formal Engineering Methods},
    doi              = {10.1007/978-3-642-41202-8_6},
    editor           = {{Lindsay Groves, Jing Sun}},
    keywords         = {system initialisation, sel4, isabelle},
    month            = oct,
    pages            = {70--85},
    paperurl         = {},
    publisher        = {Springer},
    slides           = {},
    title            = {Formally Verified System Initialisation},
    year             = {2013}