Formally Verified Software in the Real World (2018)(cacm.acm.org) |
Formally Verified Software in the Real World (2018)(cacm.acm.org) |
If you're like me, and would like to get started, or just see what this is all about, the TLA+ homepage and video course (narrated by Leslie Lamport himself), is a nice resource [1].
In about half an hour you will have a brief understanding of what "formal specification languages" are, write and 'prove' your first small program/spec. If you have another hour to spend, keep the cheatsheet [2] near you and follow through, you will write and 'prove' more complex specs, plus you'll start thinking about systems in a more abstract way. Finishing up the video course you'll be able to start reading complex specs others have written, or write a spec for any algorithm you think is fun!
[1] https://lamport.azurewebsites.net/video/videos.html [2] https://lamport.azurewebsites.net/tla/summary-standalone.pdf
The standards there assume a TCB of about 10 kloc; 5kloc for the OS, 5kloc for each application. Separation is by static allocation—of disk space and memory usage, but also static time-domain multiplexing of CPU cores and IO lanes, with caches flushed on every context switch. They’re ferociously expensive to acquire in the first place, and then you take a huge operational penalty for running multiple applications.
There are very few problems for which this is a helpful solution—maybe not none, but very few when you could just buy several distinct computers, run them airgapped, and go about your business.
http://www.cse.psu.edu/~trj1/cse443-s12/docs/ch6.pdf
Later on, the separation kernels:
https://arxiv.org/pdf/1701.01535
VerveOS was verified at least for safety down to assembly:
https://www.microsoft.com/en-us/research/wp-content/uploads/...
The Muen separation kernel and hypervisor is verified to be free of common problems:
But honestly it's not something you would want to use in daily life.
* EAL5 (Semiformally Designed and Tested) Logical partitions in IBM System Z.
* EAL6 (Semiformally Verified Design and Tested) INTEGRITY-178B and SeL4 I think.
* EAL7 (EAL7: Formally Verified Design and Tested). No operating system has been verified to this level. Only small number of data diodes and other some specialized systems have this level of assurance. https://www.fox-it.com/datadiode/certificates/cc-eal7-certif...
[0] https://perso.crans.org/cauderlier/org/art%253A10.1007%252Fs...