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.
@inproceedings{Boyton_ABFGGKLS_13, title = {Formally Verified System Initialisation}, author = {Andrew Boyton and June Andronick and Callum Bannister and Matthew Fernandez and Xin Gao and David Greenaway and Gerwin Klein and Corey Lewis and Thomas Sewell}, booktitle = {Proceedings of the 15th International Conference on Formal Engineering Methods}, year = {2013}, month = {oct}, pages = {70--85}, address = {Queenstown, New Zealand}, editor = {{Lindsay Groves, Jing Sun}}, publisher = {Springer}, doi = {10.1007/978-3-642-41202-8_6} }