Abstract

Remote attestation (RA) is a security mechanism that verifies the trustworthiness of remote IoT devices. Traditional RA protocols aim to detect the presence of malicious code in the static memory of a device. In the IoT domain, RA research is currently following two main directions: Dynamic RA and Swarm RA. Dynamic RA schemes intend to detect runtime attacks that hijack the control-flow execution of a running program without injecting new malicious code into the memory. On the other hand, swarm RA protocols focus on attesting efficiently and effectively a large number of IoT devices. However, existing RA protocols do not perform dynamic attestation in asynchronous IoT networks. This paper proposes a RA protocol for Asynchronous Remote Control-Flow Attestation of Distributed IoT Services (ARCADIS). This protocol extends the state-of-the-art by detecting IoT devices that have (directly or indirectly) been maliciously influenced by runtime attacks on asynchronous distributed IoT services. The protocol has been simulated for Wismote sensors in the Contiki emulator. The conducted experiments confirm the feasibility of ARCADIS and demonstrate its practicality for small IoT networks.

Highlights

  • The recent revolution of the Internet of Things (IoT) devices is continuously representing physical environments into large smart IoT networks

  • This paper proposes a new Remote attestation (RA) approach that aims at performing dynamic attestation for asynchronous IoT networks

  • This paper proposes and designs a remote attestation protocol, ARCADIS, for the Control-Flow Attestation of Asynchronous IoT Services

Read more

Summary

Introduction

The recent revolution of the Internet of Things (IoT) devices is continuously representing physical environments into large smart IoT networks. Regardless of the security issues, IoT devices are frequently used to control the environment, gather and process sensitive data, and even perform safety-critical operations. In many languages, including C and C++, the source code is compiled into assembly code, which is a sequence of machine instructions. These instructions can generally be categorized in two: instructions that do not change the control-flow of the program, and instructions that do change the control-flow of the program. The nodes of a CFG are the basic blocks, while the edges of the graph are the control-flow changing instructions that connect the basic blocks together.

Objectives
Methods
Conclusion
Full Text
Published version (Free)

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call