UN EXEMPLE D'UTILISATION DE PLATEFORME DE SERVICES POUR L'IOT - IUT
←
→
Transcription du contenu de la page
Si votre navigateur ne rend pas la page correctement, lisez s'il vous plaît le contenu de la page ci-dessous
Colloque GEII 2019 – Commission IoT
1ca
Un exemple d’utilisation de
plateforme de services pour l’IoT
Administration/Exploitation de capteurs connectés avec
MCU ESP32
olivier.lourme@univ-lille.fr
Département GEII – IUT A – Université de Lille – Colloque GEII LONGWY – 23/05/19Plan
2
• 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
olivier.lourme@univ-lille.fr
Département GEII – IUT A – Université de Lille – Colloque GEII LONGWY – 23/05/19Contexte : projet tuteuré de LPRO SARII
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é
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.
Nécessité d’objets avec connectivité WiFi 802.11 b/g/n
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
Nécessité d’une plateforme cloud pour l’IoT
Nécessité d’un « OS » pour chaque objet, ayant des API IoT (et les
utilitaires associés pour flasher, provisionner, mettre à jour, etc.)
olivier.lourme@univ-lille.fr
Département GEII – IUT A – Université de Lille – Colloque GEII LONGWY – 23/05/19Plateforme et sécurité de bout en bout
4
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.
La platef. impose un cadre pour la provision, etc. mais aussi pour la SÉCURITÉ.
ICI ICI ICI ICI
Devices
Cloud IoT Core
Config
serveurs clients
ESP32 Device Manager
& State Registry Management
DHT22
sensor Telemetry
indoor Monitoring
Config
State
Cloud
MQTT Data Broker
Telemetry Bridge Pub/Sub
ESP32
&
DHT22
Authentication
réseaux
sensor
Objets
outdoor
Plateforme Infrastructure aval
olivier.lourme@univ-lille.fr
Département GEII – IUT A – Université de Lille – Colloque GEII LONGWY – 23/05/19Auth. serveur, confidentialité, intégrité
5
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.
Devices TLS
Cloud IoT Core
Config
ESP32
& TLS
State
DHT22
sensor Telemetry
indoor
Config
State
MQTT
Telemetry Bridge
ESP32
&
DHT22
sensor
outdoor
olivier.lourme@univ-lille.fr
Département GEII – IUT A – Université de Lille – Colloque GEII LONGWY – 23/05/19Authentification d’un objet par un JWT
6
Devices
Inversement, l’objet s’authentifie auprès de la
JWT
plateforme en lui envoyant initialement un
Cloud IoT Core
Config
JSON Web Token (JWT) comprenant 3 parties :
ESP32
&
DHT22
State
• Un header avec l’algorithme utilisé (alg)
Telemetry
sensor
indoor
dans la signature et le type de jeton (typ),
Config
• Un payload avec des claims : nom du
State
MQTT projet GCP (aud), date d’émission (iat)
JWT
Telemetry Bridge
ESP32
&
DHT22
du token et date d’expiration (exp),
sensor
outdoor
Clé privée Clé publique • Une signature calculée par la clé privée de
de l’objet de l’objet l’objet et l’algorithme précisé dans le header.
{"alg": "ES256", "typ": "JWT"}.
{"aud": "hello-cloud-iot-core", "iat": 1509650801, "exp": 1509654401}.
{signature bytes} • Les 3 parties du JWT seront enfin encodées en base64url.
• GCP valide le token reçu et donc l’identité de l’objet en vérifiant la signature du token
grâce à la clef publique de l’objet qui lui a été communiquée lors du provisionnement.
Les outils de l’écosystème de l’OS gèrent toute cette partie du provisionnement.
Sécurité : Une paire unique de clés par objet !
olivier.lourme@univ-lille.fr
Département GEII – IUT A – Université de Lille – Colloque GEII LONGWY – 23/05/19Sécurité : la suite
7
Devices
Cloud IoT Core
Config
serveurs clients
ESP32 Device Manager
& State Registry Management
DHT22
sensor Telemetry
indoor Monitoring
Config
State
Cloud
MQTT Data Broker
Telemetry Bridge Pub/Sub
ESP32
&
DHT22
Authentication
réseaux
sensor
Objets
outdoor
Plateforme Infrastructure aval
olivier.lourme@univ-lille.fr
Département GEII – IUT A – Université de Lille – Colloque GEII LONGWY – 23/05/19« Secure by design » : la suite
8
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
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.
Empêcher un PC se connectant à l’objet (par JTAG, UART, etc.)
d’obtenir des informations
Sécurité de bout en bout ? serveurs back-end / front-end, appli. mobile…
serveurs clients
• 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
réseaux
plateforme.
olivier.lourme@univ-lille.fr
Département GEII – IUT A – Université de Lille – Colloque GEII LONGWY – 23/05/19Sécurité : c’est tout pour aujourd’hui
9
Sécurité : Cf. OWASP* IoT Framework, guides Captronic, ressources ANSSI.
Sécurité = COMPROMIS !
* Open Web Application Security Project
Devices
Cloud IoT Core
Config
serveurs clients
ESP32 Device Manager
& State Registry Management
DHT22
sensor Telemetry
indoor Monitoring
Config
State
Cloud
MQTT Data Broker
Telemetry Bridge Pub/Sub
ESP32
&
DHT22
Authentication
réseaux
sensor
Objets
outdoor
Plateforme Infrastructure aval
olivier.lourme@univ-lille.fr
Département GEII – IUT A – Université de Lille – Colloque GEII LONGWY – 23/05/19Choix faits : 1) l’objet (MCU+capteur)
10
Temperature and Humidity
Red power LED
DHT22 sensor
MCU
Blue built-in
LED connected
to GPIO2
3.3V regulator
USB-UART bridge Micro USB connector for
power or Host PC
Prix objet : < 10 € (6+4)
olivier.lourme@univ-lille.fr
Département GEII – IUT A – Université de Lille – Colloque GEII LONGWY – 23/05/19Capteur DHT22 Temp. et Humidité
11
DHT22
• Communique avec le MCU par une sorte de protocole 1-Wire
• Il faut une API de l’OS pour la communication MCU-DHT22 :
Voir aussi :
• BME280
• SHT3X
olivier.lourme@univ-lille.fr
Département GEII – IUT A – Université de Lille – Colloque GEII LONGWY – 23/05/19MCU = ESP32 de Espressif > DEVKIT v1
12
ESP32 WiFi : du lourd mais cela reste un MCU !
4 MiB encryptable
160-240 MHz
448 kiB 520 kiB
By Brian Krent (talk · contribs) - Own work, CC0, https://commons.wikimedia.org/w/index.php?curid=72304119 (Wikipedia @ « ESP32 »)
Voir aussi : http://esp32.net/ Consommation d’un objet : 90 mA
olivier.lourme@univ-lille.fr
Département GEII – IUT A – Université de Lille – Colloque GEII LONGWY – 23/05/19Choix faits : 2) La plateforme IoT
13
Cloud IoT Core
• Mot-clé: SCA-LA-BI-LI-TÉ !
• Qui possède les données ?
• GDPR ?
Azure IoT Suite
olivier.lourme@univ-lille.fr
Département GEII – IUT A – Université de Lille – Colloque GEII LONGWY – 23/05/19Parts de marché des plateformes cloud
14
https://www.canalys.com/newsroom/cloud-market-share-q4-2018-and-full-year-2018
olivier.lourme@univ-lille.fr
Département GEII – IUT A – Université de Lille – Colloque GEII LONGWY – 23/05/19Qu’est-ce qu’une cloud platform ?
15
Pour le web/mobile :
Web App
Firebase Cloud Functions
Firebase Realtime Database
Firebase Hosting, Firebase SDK
Firebase Cloud Messaging, etc.
Livre blanc SFEIR, « Comprendre
Cloud IoT Core Google Cloud Platform », 2018
olivier.lourme@univ-lille.fr
Département GEII – IUT A – Université de Lille – Colloque GEII LONGWY – 23/05/19Choix faits : 3) L’« OS » des objets
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.
• 2003, 40 architectures supportées • 2013, 7 MCUs supportés (ESP, ST, TI)
• Open-source, Licence MIT • Open-source, Licence Apache 2.0 ou commerciale
• Langage C • Langage C
• Penser freeRTOS prend du temps • Moteur Javascript : Apprentissage aisé. Des
• À associer avec ESP-IDF (ESPressif-IoT handlers, pas d’ordonnanceur. Prog. compacts.
Development Framework) pour le • Outils intégrés pour le déploiement : uploader un
déploiement fichier, chiffrer la flash, créer des clés, etc.
• Acquis par Amazon en 2017 ! https://mongoose-os.com/about.html
Voir aussi : Zephyr, ARM Mbed OS https://mongoose-os.com/mos.html
olivier.lourme@univ-lille.fr
Département GEII – IUT A – Université de Lille – Colloque GEII LONGWY – 23/05/19Architecture, data flow (hors télémétrie)
17
Provisioner
Devices Data storage Visualization
Web app hosting
Cloud IoT Core Firebase Hosting
Web App End User
Config
ESP32 Device Manager
& State Registry Management
DHT22 Firebase Realtime
sensor Telemetry
Database
indoor Monitoring
Config
State
Cloud Cloud Functions
MQTT Data Broker
Telemetry Bridge Pub/Sub for Firebase
ESP32
&
DHT22
Authentication
sensor
outdoor
Les topics « config » et « state => un équivalent de shadow device d’AWS.
olivier.lourme@univ-lille.fr
Département GEII – IUT A – Université de Lille – Colloque GEII LONGWY – 23/05/19Architecture, data flow de la télémétrie
18
❶ indoor, d’id esp32_ABB3B4, publie sur son topic de télémétrie /devices/esp32_ABB3B4/events
le message {"temperature": 22.4, "humidity": 43}. (Publication MQTT avec QoS de 1)
MQTT bridge reçoit les messages de tous les topics de télémétrie des objets
Devices
enregistrés. Visualization
❷ Il transfère à un Pub/Sub de télémétrie le message qu’il a reçu.
Firebase Hosting
Web App End User
Config
ESP32 Device Manager
& State Registry Management
DHT22 Firebase Realtime
sensor Telemetry
Database
indoor Monitoring
Config
State
Cloud Cloud Functions
MQTT Data Broker
Telemetry Bridge Pub/Sub for Firebase
ESP32
&
DHT22
sensor
Authentication
❹ …et les points qui sont abonnés
outdoor
à ce topic reçoivent le message.
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…
olivier.lourme@univ-lille.fr
Département GEII – IUT A – Université de Lille – Colloque GEII LONGWY – 23/05/19Architecture, data flow de la télémétrie
19
Data storage Visualization
Extrait de la BDD
Web app hosting
Firebase Hosting
Web App End User
Firebase Realtime
Database
Update de la Web App à
Cloud Functions
chaque update de la BDD
for Firebase
Code de la Cloud Function -
Abonnement au topic de télémétrie :
olivier.lourme@univ-lille.fr
Département GEII – IUT A – Université de Lille – Colloque GEII LONGWY – 23/05/19Vue de la web app (plotly.js pour les courbes)
20
en live c’est mieux : https://hello-cloud-iot-core.firebaseapp.com/
olivier.lourme@univ-lille.fr
Département GEII – IUT A – Université de Lille – Colloque GEII LONGWY – 23/05/19Provisionnement d’un objet
21
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
Publication des données sur le topic
En console olivier.lourme@univ-lille.fr
Département GEII – IUT A – Université de Lille – Colloque GEII LONGWY – 23/05/19Provisionnement d’un objet
22
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 On ne fait que ça en cas
mos call Sys.Reboot de mise à jour du firmware
----------------------------------------
# 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
olivier.lourme@univ-lille.fr
Département GEII – IUT A – Université de Lille – Colloque GEII LONGWY – 23/05/19Setup du projet GCP – Cloud IoT Core
23
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.
olivier.lourme@univ-lille.fr
Département GEII – IUT A – Université de Lille – Colloque GEII LONGWY – 23/05/19Setup du projet GCP – Cloud IoT Core
24
# 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:cloud-iot@system.gserviceaccount.com
--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
olivier.lourme@univ-lille.fr
Département GEII – IUT A – Université de Lille – Colloque GEII LONGWY – 23/05/19Vues de la console GCP
25
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 » :
olivier.lourme@univ-lille.fr
Département GEII – IUT A – Université de Lille – Colloque GEII LONGWY – 23/05/19Ressources
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/
olivier.lourme@univ-lille.fr
Département GEII – IUT A – Université de Lille – Colloque GEII LONGWY – 23/05/19Conclusion
27
• 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.
• Une thèse qui démarre en septembre 2019 !
olivier.lourme@univ-lille.fr @OlivierLourme
https://medium.com/@o.lourme https://github.com/olivierlourme
Merci de votre attention
olivier.lourme@univ-lille.fr
Département GEII – IUT A – Université de Lille – Colloque GEII LONGWY – 23/05/19Vous pouvez aussi lire