Formal methods
Formal methods is the use of formal mathematical logic to specify and prove the correctness of software systems.
We are developing mathematical models, software tools and engineering processes that can verify large, interconnected systems at all levels, from the overall design down to the executable code. Our group has demonstrated that the full formal verification of software for complex real-world domains, once thought to be practically impossible, can be achieved in reasonable time and cost.
Operating-System Verification
Having pioneered the verification of real-world systems software with the seL4 microkernel, our focus now is to extend this to the verification of a full operating system, LionsOS, with end-to-end proofs of security. This involves three major areas of formal-methods research.
Verification for user-level components
seL4's isolation guarantees support the development of modular systems that can be verified independently of each other. We are developing techniques, generally using automated theorem proving based on SMT solvers.
The LionsOS design uses fine-grained modularity while keeping components as simple as possible, and achieving use-case diversity based on swapping component implementations. One the one hand, simplicity aids verification, on the other hand it implies that verification is an on-going effort: once a particular component has been verified, verifying an alternate implementation must be easy and cheap. This calls for a repeatable verification process accessible to system engineers.
Pancake: Verified systems language
A key tool to making verification of OS components easier and cheaper is our new systems language. Pancake has a simple, well-defined semantics suitable for implementing OS components. Its strength is a verified compiler, which guarantees that the generated binary preserves the semantics of the source code.
Pancake is a collaborative project by researchers at multiple institutions around the world, with most activity happening at TS.
Composing proofs
Having verified system components is a first step, but in itself not sufficient for achieving system-wide security or safety guarantees. This requires reasoning about compositions of concurrently executing components.
Specifically this requires reasoning about the behaviour of components that make seL4 system calls that lead to context switches, or are preempted as a result of events external to the component. It also requires reasoning about components interacting via shared memory.
Verifying Time Protection
We have introduced time protection as a principled approach for the prevention of microarchitectural timing channels. While there is still work in progress on generalising the approach, we are working on verifying the implementation of time protection in the seL4 kernel.
Reasoning about timeliness of MCS
A few years ago we introduced in seL4 a new scheduling model to support mixed-criticality real-time systems (MCS). This version of the kernel is presently being verified.
We are now working on developing a reasoning framework for MCS scheduling on the new kernel version. This comprises several activities:
- Reviving our worst-case execution-time (WCET) analysis, this time for the MCS version of the kernel and the open RISC-V architecture.
- Based on this, develop a timing model of the kernel and, based on this, a reasoning framework for MCS scheduling on seL4 and LionsOS.
Our past formal-methods projects
- AutoCorres — de-compilation of low-level C code
- CDDC — Cross Domain Desktop Compositor
- Clustered Multikernel — verification of an early version of the multiprocessor seL4 kernel
- Cogent — Code and proof co-generation from high-level specifications
- Compilation validation — automated proof that the compiler-generated seL4 binary has the same semantics as the verified C code
- eChronos — formally verified high-assurance RTOS for microcontrollers
- Eisbach — high-level proof methods for Isabelle
- Information flow — proving confidentiality enforcement by seL4
- Proof engineering — Engineering large proofs
- Proof measurement and estimation — metrics and estimation methods, to help planning and management of large-scale verification projects
- RISC-V — implementation and verification of seL4 on the 64-bit RISC-V architecture
- seL4 Verification — world's first verification of an operating-system kernel
- System initialisation — verified initialisation of seL4-based systems
- Termite — automatic synthesis of device drivers
- TLB — verification of the kernel's management of the translation-lookaside buffer
- WCET analysis — analysing the worst-case timing behaviour of seL4
Contact
Gernot Heiser, gernot@unsw.edu.au
Publications
Browse our FM research publications.