I. Introduction
There is no doubt that the Internet of Things (IoT) has been one of the biggest technological advancements in the past few years. Cisco estimates that there will be around 30 billion IoT devices in use around the world by 2030 [1]. One of the main tasks of the IoT technology is that of IoT devices sensing their environments, to gather relevant data and accordingly take actions. These devices often communicate as well with other technological innovations, such as fog computing and cloud computing to facilitate the processes of storing and analyzing the collected data. Despite the many advantages that the IoT has brought to our modern life, this emerging technology is highly challenged by nonconventional security risks. In fact, the heterogeneous nature of the IoT devices, their reliance on various technological stacks (e.g., fog and cloud computing) and communication protocols, and the varying resource capabilities across the IoT devices all together make the IoT quite vulnerable to security attacks. Moreover, since IoT devices are responsible for large amounts of data, they are very likely to be targets for malicious attacks that try to steal, alter or tamper parts or all of this data. In addition, many of the IoT devices are deployed in highly critical environments (e.g., military, manufacturing, and smart grids), giving malicious parties an attack platform through which they can cause massive damages.