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/19
Plan 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/19
Contexte : 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/19
Plateforme 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/19
Auth. 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/19
Authentification 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/19
Sé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/19
Sé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/19
Choix 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/19
Capteur 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/19
MCU = 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/19
Choix 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/19
Parts 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/19
Qu’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/19
Choix 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/19
Architecture, 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/19
Architecture, 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/19
Architecture, 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/19
Vue 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/19
Provisionnement 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/19
Provisionnement 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/19
Setup 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/19
Setup 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/19
Vues 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/19
Ressources 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/19
Conclusion 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/19
Vous pouvez aussi lire