Formally verified system initialisation
Authors
NICTA
UNSW
Abstract
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
@inproceedings{Boyton_ABFGGKLS_13, 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 = {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 = {https://trustworthy.systems/publications/nicta_full_text/7047.pdf}, publisher = {Springer}, slides = {https://trustworthy.systems/publications/nicta_slides/7047.pdf}, title = {Formally Verified System Initialisation}, year = {2013} }