Return to search

Safe Application Execution on Resource-Constrained IoT Devices Using WebAssembly

The Internet of Things (IoT) comprises many small, embedded devices that operate on severe resource constraints concerning energy, bandwidth, and memory footprints. Software for such devices has traditionally been implemented using relatively low-level languages such as C, which makes it susceptible to introducing bugs or flaws that can compromise the security of the device. This thesis adds interpreted WebAssembly (WASM) bytecode execution to Contiki-NG – an operating system for the next generation IoT devices. This is done using an open-source WASM runtime called WebAssembly Micro Runtime (WAMR). It creates an isolated and secure environment for applications to be executed in that has restricted access to the host operating system. To support the event-driven approach of Contiki-NG, the bytecode execution can be interrupted and resumed as needed, allowing the operating system to handle pending events without significant delays. The result is a way for applications written in a variety of programming languages to be safely executed in Contiki-NG and to interact with its APIs. When tested on Nordic Semiconductor's nRF52840 System-on-Chip (SoC), applications executed as bytecode resulted in an increase in binary size of 2.7-3.1x, and a performance penalty of around 9.2x for C-generated bytecode, and 10.3x for Rust-generated bytecode. For less compute-intensive applications, the performance penalty is not as prominent but still displays a sizable increase in energy consumption compared to native execution.

Identiferoai:union.ndltd.org:UPSALLA1/oai:DiVA.org:uu-532970
Date January 2024
CreatorsEngstrand, Fredrik
PublisherUppsala universitet, Nätverksbaserade inbyggda system
Source SetsDiVA Archive at Upsalla University
LanguageEnglish
Detected LanguageEnglish
TypeStudent thesis, info:eu-repo/semantics/bachelorThesis, text
Formatapplication/pdf
Rightsinfo:eu-repo/semantics/openAccess
RelationUPTEC IT, 1401-5749 ; 24040

Page generated in 0.0021 seconds