Département GEII – IUT A – Université de Lille – Colloque GEII LONGWY – 23/05/19
1
Colloque GEII 2019 – Commission IoT
Administration/Exploitation de capteurs connectés avec
Un exemple d’utilisation de plateforme de services pour l’IoT
MCU ESP32
ca
Département GEII – IUT A – Université de Lille – Colloque GEII LONGWY – 23/05/19
2
Plan
• Contexte pédagogique
• Plateforme IoT et Sécurité de bout en bout
• TLS et JWT pour les communications objets-plateforme
• « Secure by design » : suite
• Choix faits :• L’objet• La plateforme IoT• L’OS de l’objet et ses outils
• Architecture & data flow
• Provisionnement d’un objet
• Setup du projet Google Cloud Platform
• Démo
• Conclusion / Questions
Département GEII – IUT A – Université de Lille – Colloque GEII LONGWY – 23/05/19
3
Volonté de réaliser dans ce contexte pédagogique un projet IoT quasi professionnel (mise en production et exploitation), intégrant la sécurité
Contexte : projet tuteuré de LPRO SARII
Nécessité d’une plateforme cloud pour l’IoT
Nécessité d’objets avec connectivité WiFi 802.11 b/g/n
Nécessité d’un « OS » pour chaque objet, ayant des API IoT (et lesutilitaires associés pour flasher, provisionner, mettre à jour, etc.)
Cas d’usage : Surveillance continue de la température et de l’humidité en différents points d’un bâtiment. Un OBJET / point. Chaque point a un accès WiFi.
Ensuite, on veut DES OUTILS pour :
• Déployer (to provision) 10, 100, 1000, etc. objets
• Exploiter les mesures : persistance des données + live plot
• Monitorer les objets (« last seen », activity, etc.) et les mettre à jour
Département GEII – IUT A – Université de Lille – Colloque GEII LONGWY – 23/05/19
4
Cloud IoT Core
Devices
MQTT
Bridge
Cloud
Pub/Sub
Device Manager
Registry Management
Monitoring
Data Broker
Authentication
ESP32
&
DHT22
sensor
ESP32
&
DHT22
sensor
State
Telemetry
Configindoor
outdoor
State
Telemetry
Config
La platef. impose un cadre pour la provision, etc. mais aussi pour la SÉCURITÉ.
Plateforme et sécurité de bout en bout
La plateforme absorbe l’éventuelle hétérogénéité amont des objets (et des réseaux) pour les exposer de façon uniforme aux app. de traitement en aval.
PlateformeObjets Infrastructure aval
serveurs clients
réseaux
ICI ICI ICI ICI
Département GEII – IUT A – Université de Lille – Colloque GEII LONGWY – 23/05/19
5
Auth. serveur, confidentialité, intégrité
Les échanges objet-plateforme GCP : protocole MQTT over TLS 1.2 over TCP.L’objet est un client MQTT, le point d’entrée de GCP est un serveur MQTT.TLS est adapté à ce mode client-serveur. Avec TLS :
• Le serveur, donc la plateforme, est authentifié auprès de l’objet.• Les données échangées sont chiffrées (confidentialité).• L’intégrité des données est vérifiée.
Cloud IoT Core
Devices
MQTT
Bridge
ESP32
&
DHT22
sensor
ESP32
&
DHT22
sensor
State
Telemetry
Configindoor
outdoor
State
Telemetry
Config
TLS
TLS
Département GEII – IUT A – Université de Lille – Colloque GEII LONGWY – 23/05/19
6
Cloud IoT Core
Authentification d’un objet par un JWT
Inversement, l’objet s’authentifie auprès de la plateforme en lui envoyant initialement un JSON Web Token (JWT) comprenant 3 parties :
Devices
MQTT
Bridge
ESP32
&
DHT22
sensor
ESP32
&
DHT22
sensor
State
Telemetry
Configindoor
outdoor
State
Telemetry
Config
JWT
JWT
{"alg": "ES256", "typ": "JWT"}.
• Les 3 parties du JWT seront enfin encodées en base64url.
Sécurité : Une paire unique de clés par objet !
• Un header avec l’algorithme utilisé (alg) dans la signature et le type de jeton (typ),
• Un payload avec des claims : nom du projet GCP (aud), date d’émission (iat) du token et date d’expiration (exp),
• Une signature calculée par la clé privée de l’objet et l’algorithme précisé dans le header.
• GCP valide le token reçu et donc l’identité de l’objet en vérifiant la signature du tokengrâce à la clef publique de l’objet qui lui a été communiquée lors du provisionnement.
Clé privéede l’objet
Clé publiquede l’objet
{signature bytes}
{"aud": "hello-cloud-iot-core", "iat": 1509650801, "exp": 1509654401}.
Les outils de l’écosystème de l’OS gèrent toute cette partie du provisionnement.
Département GEII – IUT A – Université de Lille – Colloque GEII LONGWY – 23/05/19
7
Cloud IoT Core
Devices
MQTT
Bridge
Cloud
Pub/Sub
Device Manager
Registry Management
Monitoring
Data Broker
Authentication
ESP32
&
DHT22
sensor
ESP32
&
DHT22
sensor
State
Telemetry
Configindoor
outdoor
State
Telemetry
Config
Sécurité : la suite
PlateformeObjets Infrastructure aval
serveurs clients
réseaux
Département GEII – IUT A – Université de Lille – Colloque GEII LONGWY – 23/05/19
8
« Secure by design » : la suite
Initiation d’un cercle vertueux pour la sécurité (NB : surface d’attaque restant sous notre responsabilité = objet physique lui-même)
Chiffrer la mémoire flash des objets => reverse-engineering, obtentions des clés / des SSID & pwd WiFi, etc. rendus impossible
Empêcher un PC se connectant à l’objet (par JTAG, UART, etc.) d’obtenir des informations
Vérifier l’intégrité du code après chaque reset (secure boot), a fortiori après une MAJ du code, souvent faite Over The Air.
Sécurité de bout en bout ? serveurs back-end / front-end, appli. mobile…
• En aval de la plateforme, l’éventuelle infrastructure « classique » avec des technos très répandues pour le stockage des données et l’hébergement des applications, etc. est une surface d’attaque bien plus grande que celle d’objets désormais protégés et communiquant correctement avec la plateforme.
serveurs clients
réseaux
Département GEII – IUT A – Université de Lille – Colloque GEII LONGWY – 23/05/19
9
Cloud IoT Core
Devices
MQTT
Bridge
Cloud
Pub/Sub
Device Manager
Registry Management
Monitoring
Data Broker
Authentication
ESP32
&
DHT22
sensor
ESP32
&
DHT22
sensor
State
Telemetry
Configindoor
outdoor
State
Telemetry
Config
Sécurité : c’est tout pour aujourd’hui
PlateformeObjets Infrastructure aval
serveurs clients
réseaux
Sécurité : Cf. OWASP* IoT Framework, guides Captronic, ressources ANSSI.
Sécurité = COMPROMIS !
* Open Web Application Security Project
Département GEII – IUT A – Université de Lille – Colloque GEII LONGWY – 23/05/19
10
Choix faits : 1) l’objet (MCU+capteur)
Blue built-in LED connected to GPIO2
Red power LED
Temperature and HumidityDHT22 sensor
Micro USB connector for power or Host PC
MCU
Prix objet : < 10 € (6+4)USB-UART bridge
3.3V regulator
Département GEII – IUT A – Université de Lille – Colloque GEII LONGWY – 23/05/19
11
Capteur DHT22 Temp. et Humidité
Voir aussi :• BME280• SHT3X
• Communique avec le MCU par une sorte de protocole 1-Wire• Il faut une API de l’OS pour la communication MCU-DHT22 :
DHT22
Département GEII – IUT A – Université de Lille – Colloque GEII LONGWY – 23/05/19
12
MCU = ESP32 de Espressif > DEVKIT v1
ESP32 WiFi : du lourd mais cela reste un MCU !
160-240 MHz
By Brian Krent (talk · contribs) - Own work, CC0, https://commons.wikimedia.org/w/index.php?curid=72304119 (Wikipedia @ « ESP32 »)
520 kiB
4 MiB encryptable
Voir aussi : http://esp32.net/
448 kiB
Consommation d’un objet : 90 mA
Département GEII – IUT A – Université de Lille – Colloque GEII LONGWY – 23/05/19
13
Choix faits : 2) La plateforme IoT
Cloud IoT Core
• Mot-clé: SCA-LA-BI-LI-TÉ !
Azure IoT Suite
• Qui possède les données ?• GDPR ?
Département GEII – IUT A – Université de Lille – Colloque GEII LONGWY – 23/05/19
14
Parts de marché des plateformes cloud
https://www.canalys.com/newsroom/cloud-market-share-q4-2018-and-full-year-2018
Département GEII – IUT A – Université de Lille – Colloque GEII LONGWY – 23/05/19
15
Cloud IoT Core
Qu’est-ce qu’une cloud platform ?
Livre blanc SFEIR, « Comprendre Google Cloud Platform », 2018
Pour le web/mobile :
Firebase Cloud FunctionsFirebase Realtime DatabaseFirebase Hosting, Firebase SDKFirebase Cloud Messaging, etc.
Web App
Département GEII – IUT A – Université de Lille – Colloque GEII LONGWY – 23/05/19
16
On cherche ici un OS pour ESP32 mais aussi si possible cross-platform.
L’OS choisi doit être recommandé OFFICIELLEMENT par la plateforme retenue.
Il faut des APIs de communication (sécurisée) avec les plateformes IoT.
Choix faits : 3) L’« OS » des objets
• 2003, 40 architectures supportées• Open-source, Licence MIT• Langage C• Penser freeRTOS prend du temps• À associer avec ESP-IDF (ESPressif-IoT
Development Framework) pour le déploiement
• Acquis par Amazon en 2017 !
• 2013, 7 MCUs supportés (ESP, ST, TI)• Open-source, Licence Apache 2.0 ou commerciale• Langage C• Moteur Javascript : Apprentissage aisé. Des
handlers, pas d’ordonnanceur. Prog. compacts.• Outils intégrés pour le déploiement : uploader un
fichier, chiffrer la flash, créer des clés, etc.
https://mongoose-os.com/about.htmlhttps://mongoose-os.com/mos.htmlVoir aussi : Zephyr, ARM Mbed OS
Département GEII – IUT A – Université de Lille – Colloque GEII LONGWY – 23/05/19
17
Architecture, data flow (hors télémétrie)
VisualizationData storage
Web app hosting
Cloud IoT Core
Devices
MQTT
Bridge
Cloud
Pub/Sub
Cloud Functions
for Firebase
Device Manager
Registry Management
Monitoring
Data Broker
Authentication
Provisioner
Firebase Hosting
Web App End User
Firebase Realtime
Database
ESP32
&
DHT22
sensor
ESP32
&
DHT22
sensor
State
Telemetry
Configindoor
outdoor
State
Telemetry
Config
Les topics « config » et « state => un équivalent de shadow device d’AWS.
Département GEII – IUT A – Université de Lille – Colloque GEII LONGWY – 23/05/19
18
Architecture, data flow de la télémétrie
VisualizationDevices
MQTT
Bridge
Cloud
Pub/Sub
Cloud Functions
for Firebase
Device Manager
Registry Management
Monitoring
Data Broker
Authentication
Firebase Hosting
Web App End User
Firebase Realtime
Database
ESP32
&
DHT22
sensor
ESP32
&
DHT22
sensor
State
Telemetry
Configindoor
outdoor
State
Telemetry
Config
❶ indoor, d’id esp32_ABB3B4, publie sur son topic de télémétrie /devices/esp32_ABB3B4/eventsle message {"temperature": 22.4, "humidity": 43}. (Publication MQTT avec QoS de 1)
Ce topic Pub/Sub de télémétrie, de nom weather-telemetry-topic,a été créé pour tous les objets du registre weather-devices-registry.❸ Pub/Sub publie le message venant du MQTT bridge…
❹ …et les points qui sont abonnésà ce topic reçoivent le message.
MQTT bridge reçoit les messages de tous les topics de télémétrie des objets enregistrés.❷ Il transfère à un Pub/Sub de télémétrie le message qu’il a reçu.
Département GEII – IUT A – Université de Lille – Colloque GEII LONGWY – 23/05/19
19
Architecture, data flow de la télémétrie
VisualizationData storage
Web app hosting
Cloud Functions
for Firebase
Firebase Hosting
Web App End User
Firebase Realtime
Database
Code de la Cloud Function -Abonnement au topic de télémétrie :
Update de la Web App àchaque update de la BDD
Extrait de la BDD
Département GEII – IUT A – Université de Lille – Colloque GEII LONGWY – 23/05/19
20
Vue de la web app (plotly.js pour les courbes)
en live c’est mieux : https://hello-cloud-iot-core.firebaseapp.com/
Département GEII – IUT A – Université de Lille – Colloque GEII LONGWY – 23/05/19
21
Provisionnement d’un objet
Fichier init.js principal à uploader dans le système de fichiers de l’objet
Nom du topic, par exemple /devices/esp32_ABB3B4/events
Données au format JSON
En console
Publication des données sur le topic
Département GEII – IUT A – Université de Lille – Colloque GEII LONGWY – 23/05/19
22
Provisionnement d’un objet
Commandes mos de l’écosystème Mongoose OS.Peuvent être réunies dans un script de provisionnement.
# build app firmware (to be done once if devices are the same)
mos build --arch esp32
# flash firmware to device (it must be connected to host pc)
mos flash
# give WiFi credentials to device
mos wifi WIFI_SSID WIFI_PASSWORD
# upload main JS file to device file system
mos put fs/init.js
# reboot device
mos call Sys.Reboot
----------------------------------------# register device with GCP & handle keys for JWT authentication
mos gcp-iot-setup --gcp-project hello-cloud-iot-core
--gcp-region europe-west1
--gcp-registry weather-devices-registry
On ne fait que ça en casde mise à jour du firmware
Département GEII – IUT A – Université de Lille – Colloque GEII LONGWY – 23/05/19
23
Setup du projet GCP – Cloud IoT Core
3 moyens d’interagir avec GCP (pour configurer, visualiser, etc.)
• Avec Google Cloud Console, une interface web.
• En ligne de commande, on tape des commandes commençant par gcloud. On peut du coup écrire de petits scripts.
• Par des programmes que l’on écrit et qui utilisent les APIs fournies dans les différents langages (Java, C++, NodeJS, Python, etc.).
Un mot sur le coût
• Coût MQTT/HTTP bridge : 0 € jusque 250 Mo/mois (un message est facturé au minimum 1024 octets, même s’il fait moins).
• Au coût du bridge, il faut ajouter le coût de Pub/Sub.
Département GEII – IUT A – Université de Lille – Colloque GEII LONGWY – 23/05/19
24
Setup du projet GCP – Cloud IoT Core
# Get authenticated with Google Cloud
gcloud auth login
# Create cloud project
gcloud projects create hello-cloud-iot-core
# Allow Cloud IoT Core to publish to Pub/Sub topics
gcloud projects add-iam-policy-binding hello-cloud-iot-core
--member=serviceAccount:[email protected]
--role=roles/pubsub.publisher
# Create Pub/Sub topic for device telemetry
gcloud beta pubsub topics create weather-telemetry-topic
# Create devices registry - Associate it with Pub/Sub topic -
# Disallow HTTP device connections to the bridge
gcloud beta iot registries create weather-devices-registry
--region europe-west1
--no-enable-http-config
--event-notification-config=topic=weather-telemetry-topic
Département GEII – IUT A – Université de Lille – Colloque GEII LONGWY – 23/05/19
25
Vues de la console GCP
5 vues à montrer live : GCP Home / Iot Core / Registry / Devices / Device
En cas de problème réseau, voici une copie de la vue « Devices » :
Département GEII – IUT A – Université de Lille – Colloque GEII LONGWY – 23/05/19
26
• « Objets connectés : des radiofréquences aux réseaux », Université Fédérale Toulouse Midi-Pyrénées, MOOC, France Université Numérique
• E. Bajic, B. Auriac, G. Koenig : "Objets Connectés Industriels : Identification et Géolocalisation dans une Infrastructure Internet des Objets », http://www.koenigguillaume.me/portfolio2/files/PIDR.pdf
• P. Pinault P., « Sécurité IoT », https://youtu.be/TZony98Q7ZA, vidéo, Devoxx FR 2019
• Guides Captronic : https://www.captronic.fr/-Nos-guides-.html (un existe sur la sécurité IoT)
• OWASP IoT Project : https://www.owasp.org/index.php/OWASP_Internet_of_Things_Project
• ANSSI, Cybersécurité des Systèmes Industriels :https://www.ssi.gouv.fr/guide/la-cybersecurite-des-systemes-industriels/
• ESP32 : https://www.espressif.com/en/products/hardware/esp32/overview
• Mongoose OS : https://mongoose-os.com/
• Google Cloud Platform - Cloud IoT Core : https://cloud.google.com/iot-core/
Ressources
Département GEII – IUT A – Université de Lille – Colloque GEII LONGWY – 23/05/19
27
Conclusion
@OlivierLourme
https://medium.com/@o.lourme
https://github.com/olivierlourme
• Le modèle économique de l’IoT est un modèle de service.• La plateforme cloud permet de s’y consacrer rapidement et efficacement :
• Cadre & Sécurité• Outils de provisionnement et de monitoring• Briques de service diversifiées et multiples, s’intégrant bien ensemble
• À venir…• Tester freeRTOS / Mongoose OS. Idem AWS / GCP. Tester OTA updates.• Utiliser d’autres briques de GCP (Big Query, Data Studio).• Utiliser GCP avec un « vrai » protocole IoT comme LoRaWAN.
Merci de votre attention
• Une thèse qui démarre en septembre 2019 !
Top Related