Researchers prove kernel is secure
Australian researchers have demonstrated a way to prove core software for mission-critical systems is safe.
The researchers this week said they can prove mathematically that code they have developed, designed to govern the safety and security of systems in aircraft and motor vehicles, is free of many classes of error.
Australia's Information and Communications Technology Centre of Excellence (Nicta), a private-sector research organization, this week announced the completion of the first formal machine-checked proof of a general-purpose operating-system kernel. The kernel is called the secure embedded L4 (seL4) microkernel.
Lawrence Paulson, professor of computational logic at Cambridge University's Computer Laboratory, who developed the Isabelle generic proof assistant Nicta modified to check its kernel, told ZDNet UK that the microkernel breakthrough would have a trickle-down effect for businesses.
"I regard the software industry as a real mess," Paulson said on Thursday. "If you've ever used a computer you know how unreliable they are. This is an important way of making it better."
While rigorously testing high-quality code is expensive, said Paulson, developing such tests and operating systems for specialized purposes would have the secondary effect of improving software in general.
Paulson added that teams in Europe had also made breakthroughs in the formal verification of computer systems, giving the German Verisoft project as an example.
Nicta principal researcher Gerwin Klein, who leads the formal verification research team, said in a statement that previous research had concentrated on giving proofs for specific system properties.
"Formal proofs for specific properties have been conducted for smaller kernels, but what we have done is a general, functional correctness proof which has never before been achieved for real-world, high-performance software of this complexity," said Klein.
Nicta claimed that many kinds of attack, such as those exploiting buffer-overflow vulnerabilities, would not be successful against the seL4 microkernel.
The intellectual property generated by the Nicta research will be handed over to Open Kernel Labs, a Nicta spinoff firm, for further development. The research took four years, and was conducted by 12 Nicta researchers, in conjunction with the University of New South Wales.
Tom Espiner of ZDNet UK reported from London.






Then OS functions were coded in Haskell, and then proved to meet all of the design. The proofs are machine checked for correctness.
Then they re-implemented each function in C and assembler manually (by hand), while proving that this re-implementation (refinement) is equivalent to the Haskell implementation.
Whenever a change is made, they followed this process over again. I.e., a design change means another implementation in Haskell, proving that against the design, then making the corresponding manual change in C/assembler, then another refinement proof. Basically a lot of work over a couple of years.
The assumptions are that the C compiler, assembler, proving tools and hardware components are all bug-free. Of course they're not... but because the team is able to prove the C/assembly implementation against the original design, they can have an extremely high confidence of the system's behavior, which includes certain security guarantees.
...
"No not like that, you have to put your hand there. No you're doing it wrong, grab me like this. You have to move your other hand for it to work, then I win EVERY time."
Thanks for the chuckle.
Take encryption, most of the algorithms are provably solid, it is the implementations that cause the flaws.
Not likely, as that is nearly impossible for all but the simplest implementations. I haven't seen enough to justify that claim.
The team proved their C+assembly implementation meets the validated design.
In the inherently mathematical realm of computers, such proofs could end up being really important. It doesn't rule out, as pentest mentioned, the implementation being botched with coding errors, problems with the hardware, and most importantly, user error.
Prove it!
No guarantee C is any good at absolutes, by the way. Only binary code is absolute but must work within hardware that can have errors in design, manufacture and operation
Yes, computing is a mess but much of this is human error and the lack of testing methodologies Administrators, managers and coders all have a hand in the mess it has been, is, and will become.. I suspect many, many more years of patient striving before we'll have absolutely reliable software perhaps decades or more. Maybe it will never be achieve because perfection is only an illusion.
Sometimes they will even rely on branch of code that has known holes as to retain compatibility. It is at this point the managers need to fire the entire staff for a broken branch of code.
It may be possible to formally prove a small microkernel. But as soon as you built the whole system, it becomes much more difficult.
Of course, being "proven correct" against a design that itself is poorly understood or even faulty guarantees little. I would be very interested to see what the present methods of proof can determine unequivocally about the general characteristics of a particular example of software: What does "secure" mean, for example, and how "secure" is the software in that context? I hope more details of this exercise will emerge as time passes.
Some might claim without offering real empirical evidence that there is a relationship. None will be able to give you a numeric formula that expresses said relationship.
Remember when it was at least a challenge to spot the market-speak B.S. artists?
- by onoropu September 16, 2009 2:55 AM PDT
- "No amount of experimentation can ever prove me right; a single experiment can prove me wrong." ? Albert Einstein
- Like this Reply to this comment
-
(24 Comments)