Verified functional programming of an IoT operating system's bootloader
Résumé
The fault of one device on a grid may incur severe economical or physical damages. Among the many critical components in such IoT devices, the operating system's bootloader comes first to initiate the trusted function of the device on the network. However, a bootloader uses hardware-dependent features that make its functional correctness proof difficult. This paper uses verified programming to automate the verification of both the C libraries and assembly boot-sequence of such a, real-world, bootloader in an operating system for ARM-based IoT devices: RIOT. We first define the ARM ISA specification, semantics and properties in F to model its critical assembly code boot sequence. We then use Low , a DSL rendering a Clike memory model in F , to implement the complete bootloader library and verify its functional correctness and memory safety. Other than fixing potential faults and vulnerabilities in the source C and ASM bootloader, our evaluation provides an optimized and formally documented code structure, a reasonable specification/implementation ratio, a high degree of proof automation and an equally efficient generated code.
Domaines
Informatique [cs]
Origine : Fichiers produits par l'(les) auteur(s)