Trustworthy Systems

Concerned with the unprivileged: User programs in kernel refinement


Matthias Daum, Nelson Billing and Gerwin Klein




It is a great verification challenge to prove properties of complete computer systems on the source code level. The L4.verified project achieved a major step towards this goal by mechanising a proof of functional correctness of the seL4 kernel. They expressed correctness in terms of data refinement with a coarse-grained specification of the kernel's execution environment.

In this paper, we strengthen the original correctness theorem in two ways. First, we convert the previous abstraction relations into projection functions from concrete to abstract states. Second, we revisit the specification of the kernel's execution environment: we introduce the notion of virtual memory based on the kernel data structures, we distinguish individual user programs that run on top of the kernel and we restrict the memory access of each of these programs to its virtual memory. Through our work, properties like the separation of user programs gain meaning. This paves the way for proving security properties like non-interference of user programs. Furthermore, our result lays the foundation for the verification of properties about complete software systems based on the seL4 kernel.

Besides the seL4-specific results, we report on our work from an engineering perspective to exemplify general challenges that similar projects are likely to encounter. Moreover, we point out the advantages of using projection functions in L4.verified's verification approach and for stepwise refinement in general.

BibTeX Entry

    author           = {Daum, Matthias and Billing, Nelson and Klein, Gerwin},
    doi              = {10.1007/s00165-014-0296-9},
    journal          = {Formal Aspects of Computing},
    keywords         = {trustworthy systems; refinement proof; microkernel correctness; isabelle/hol},
    month            = oct,
    number           = {6},
    pages            = {1205--1229},
    paperurl         = {},
    title            = {Concerned with the Unprivileged: User Programs in Kernel Refinement},
    volume           = {26},
    year             = {2014}