Consistent management of dynamic policies in distributed IoT applications The Internet of Things (IoT) allows to introduce in the internet world billions of new devices. Together with new exciting functionalities, IoT leads to new management challenges. We are in the context of a smart building, in which the principal services offered are controlled by IoT applications. These heterogeneous devices must be interconnected and must collaborate properly in order to provide services and support unexpected events or threats. One of the main goals of this thesis is to achieve a mechanism that controls the system behaviour through policies. But mostly, we research how to guarantee dynamic and consistent adaptation of these policies throughout a distributed system. In this scenario, it is important to provide the possibility to change the system behaviour, in order to tackle different situations that can occur during the whole lifetime of a building. The consistency property is equally fundamental for a correct functioning of all the operations. Our challenge refers indeed to these problems: nowadays, the behaviours of these IoT devices are mainly defined upfront and the possibility to change them dynamically and, furthermore, in a consistent way, has not been well investigated so far.
The core contribution of this thesis is the development of a flexible middleware, running on the different nodes of the system, able to handle dynamic policies in consistent way. In fact, our system is composed by nodes, divided in multiple tiers: the gateways connected to some sensors and a server that handles all the communications. In addition, the server governs the gateways behaviour triggering the transfer of new policies. Our developed protocol guarantees that all the procedures are performed consistently without the need of restarting the processes. We mainly focus on the encryption and decryption one. A node is in charge of the encryption of a message, while another one is responsible for the decryption. The server can trigger the update of a policy that contains a new encryption algorithm. Both of these nodes must update the policy consistently in order to exchange the message accurately. The validation tests illustrate that the temporary inconsistent situations that can occur are correctly managed. The performance tests show that our developed middleware has a limited impact in time, memory and on the network.