seL4: Formal verification of an OS kernel
Authors
NICTA
UNSW
Open Kernel Labs
Australian National University
VMWare
Hall of Fame Award
Abstract
Complete formal verification is the only way to guarantee that a system is free of programming errors.
We present ent our experience in performing the formal, machine-checked verification of the seL4 microkernel from an abstract specification down to its C implementation. We assume correctness of compiler, assembly code, and hardware, and we used a unique design approach that fuses formal and operating systems techniques. To our knowledge, this is the first formal proof of functional correctness of a complete, general-purpose operating-system kernel. Functional correctness means here that the implementation always strictly follows our high-level abstract specification of kernel behaviour. This encompasses traditional design and implementation safety properties such as the kernel will never crash, and it will never perform an unsafe operation. It also proves much more: we can predict precisely how the kernel will behave in every possible situation.
seL4, a third-generation microkernel of L4 provenance, comprises 8,700 lines of C code and 600 lines of assembler. Its performance is comparable to other high-performance L4 kernels.
BibTeX Entry
@inproceedings{Klein_EHACDEEKNSTW_09, address = {Big Sky, MT, USA}, author = {Klein, Gerwin and Elphinstone, Kevin and Heiser, Gernot and Andronick, June and Cock, David and Derrin, Philip and Elkaduwe, Dhammika and Engelhardt, Kai and Kolanski, Rafal and Norrish, Michael and Sewell, Thomas and Tuch, Harvey and Winwood, Simon}, booktitle = {ACM Symposium on Operating Systems Principles}, keywords = {sel4, microkernel, isabelle, formal verification}, month = oct, pages = {207--220}, paperurl = {https://trustworthy.systems/publications/nicta_full_text/1852.pdf}, publisher = {ACM}, slides = {https://trustworthy.systems/publications/nicta_slides/1852.pdf}, title = {{seL4}: Formal Verification of an {OS} Kernel}, video = {https://www.sigops.org/s/conferences/sosp/2009/videos/15_gerwin_klein.ogg}, year = {2009} }