UN EXEMPLE D'UTILISATION DE PLATEFORME DE SERVICES POUR L'IOT - IUT

 
CONTINUER À LIRE
UN EXEMPLE D'UTILISATION DE PLATEFORME DE SERVICES POUR L'IOT - IUT
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
UN EXEMPLE D'UTILISATION DE PLATEFORME DE SERVICES POUR L'IOT - IUT
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
UN EXEMPLE D'UTILISATION DE PLATEFORME DE SERVICES POUR L'IOT - IUT
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
UN EXEMPLE D'UTILISATION DE PLATEFORME DE SERVICES POUR L'IOT - IUT
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
UN EXEMPLE D'UTILISATION DE PLATEFORME DE SERVICES POUR L'IOT - IUT
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
UN EXEMPLE D'UTILISATION DE PLATEFORME DE SERVICES POUR L'IOT - IUT
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
UN EXEMPLE D'UTILISATION DE PLATEFORME DE SERVICES POUR L'IOT - IUT
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
UN EXEMPLE D'UTILISATION DE PLATEFORME DE SERVICES POUR L'IOT - IUT
« 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
UN EXEMPLE D'UTILISATION DE PLATEFORME DE SERVICES POUR L'IOT - IUT
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
UN EXEMPLE D'UTILISATION DE PLATEFORME DE SERVICES POUR L'IOT - IUT
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