Un exemple d’utilisation de plateforme de services pour l’IoT · Les échanges objet-plateforme...

27
Département GEII – IUT A – Université de Lille – Colloque GEII LONGWY – 23/05/19 1 [email protected] 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

Transcript of Un exemple d’utilisation de plateforme de services pour l’IoT · Les échanges objet-plateforme...

Page 1: Un exemple d’utilisation de plateforme de services pour l’IoT · Les échanges objet-plateforme GCP : protocole MQTT over TLS 1.2 over TCP. L’objet est un client MQTT, le point

Département GEII – IUT A – Université de Lille – Colloque GEII LONGWY – 23/05/19

1

[email protected]

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

Page 2: Un exemple d’utilisation de plateforme de services pour l’IoT · Les échanges objet-plateforme GCP : protocole MQTT over TLS 1.2 over TCP. L’objet est un client MQTT, le point

Département GEII – IUT A – Université de Lille – Colloque GEII LONGWY – 23/05/19

2

[email protected]

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

Page 3: Un exemple d’utilisation de plateforme de services pour l’IoT · Les échanges objet-plateforme GCP : protocole MQTT over TLS 1.2 over TCP. L’objet est un client MQTT, le point

Département GEII – IUT A – Université de Lille – Colloque GEII LONGWY – 23/05/19

3

[email protected]

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

Page 4: Un exemple d’utilisation de plateforme de services pour l’IoT · Les échanges objet-plateforme GCP : protocole MQTT over TLS 1.2 over TCP. L’objet est un client MQTT, le point

Département GEII – IUT A – Université de Lille – Colloque GEII LONGWY – 23/05/19

4

[email protected]

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

Page 5: Un exemple d’utilisation de plateforme de services pour l’IoT · Les échanges objet-plateforme GCP : protocole MQTT over TLS 1.2 over TCP. L’objet est un client MQTT, le point

Département GEII – IUT A – Université de Lille – Colloque GEII LONGWY – 23/05/19

5

[email protected]

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

Page 6: Un exemple d’utilisation de plateforme de services pour l’IoT · Les échanges objet-plateforme GCP : protocole MQTT over TLS 1.2 over TCP. L’objet est un client MQTT, le point

Département GEII – IUT A – Université de Lille – Colloque GEII LONGWY – 23/05/19

6

[email protected]

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.

Page 7: Un exemple d’utilisation de plateforme de services pour l’IoT · Les échanges objet-plateforme GCP : protocole MQTT over TLS 1.2 over TCP. L’objet est un client MQTT, le point

Département GEII – IUT A – Université de Lille – Colloque GEII LONGWY – 23/05/19

7

[email protected]

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

Page 8: Un exemple d’utilisation de plateforme de services pour l’IoT · Les échanges objet-plateforme GCP : protocole MQTT over TLS 1.2 over TCP. L’objet est un client MQTT, le point

Département GEII – IUT A – Université de Lille – Colloque GEII LONGWY – 23/05/19

8

[email protected]

« 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

Page 9: Un exemple d’utilisation de plateforme de services pour l’IoT · Les échanges objet-plateforme GCP : protocole MQTT over TLS 1.2 over TCP. L’objet est un client MQTT, le point

Département GEII – IUT A – Université de Lille – Colloque GEII LONGWY – 23/05/19

9

[email protected]

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

Page 10: Un exemple d’utilisation de plateforme de services pour l’IoT · Les échanges objet-plateforme GCP : protocole MQTT over TLS 1.2 over TCP. L’objet est un client MQTT, le point

Département GEII – IUT A – Université de Lille – Colloque GEII LONGWY – 23/05/19

10

[email protected]

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

Page 11: Un exemple d’utilisation de plateforme de services pour l’IoT · Les échanges objet-plateforme GCP : protocole MQTT over TLS 1.2 over TCP. L’objet est un client MQTT, le point

Département GEII – IUT A – Université de Lille – Colloque GEII LONGWY – 23/05/19

11

[email protected]

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

Page 12: Un exemple d’utilisation de plateforme de services pour l’IoT · Les échanges objet-plateforme GCP : protocole MQTT over TLS 1.2 over TCP. L’objet est un client MQTT, le point

Département GEII – IUT A – Université de Lille – Colloque GEII LONGWY – 23/05/19

12

[email protected]

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

Page 13: Un exemple d’utilisation de plateforme de services pour l’IoT · Les échanges objet-plateforme GCP : protocole MQTT over TLS 1.2 over TCP. L’objet est un client MQTT, le point

Département GEII – IUT A – Université de Lille – Colloque GEII LONGWY – 23/05/19

13

[email protected]

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 ?

Page 14: Un exemple d’utilisation de plateforme de services pour l’IoT · Les échanges objet-plateforme GCP : protocole MQTT over TLS 1.2 over TCP. L’objet est un client MQTT, le point

Département GEII – IUT A – Université de Lille – Colloque GEII LONGWY – 23/05/19

14

[email protected]

Parts de marché des plateformes cloud

https://www.canalys.com/newsroom/cloud-market-share-q4-2018-and-full-year-2018

Page 15: Un exemple d’utilisation de plateforme de services pour l’IoT · Les échanges objet-plateforme GCP : protocole MQTT over TLS 1.2 over TCP. L’objet est un client MQTT, le point

Département GEII – IUT A – Université de Lille – Colloque GEII LONGWY – 23/05/19

15

[email protected]

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

Page 16: Un exemple d’utilisation de plateforme de services pour l’IoT · Les échanges objet-plateforme GCP : protocole MQTT over TLS 1.2 over TCP. L’objet est un client MQTT, le point

Département GEII – IUT A – Université de Lille – Colloque GEII LONGWY – 23/05/19

16

[email protected]

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

Page 17: Un exemple d’utilisation de plateforme de services pour l’IoT · Les échanges objet-plateforme GCP : protocole MQTT over TLS 1.2 over TCP. L’objet est un client MQTT, le point

Département GEII – IUT A – Université de Lille – Colloque GEII LONGWY – 23/05/19

17

[email protected]

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.

Page 18: Un exemple d’utilisation de plateforme de services pour l’IoT · Les échanges objet-plateforme GCP : protocole MQTT over TLS 1.2 over TCP. L’objet est un client MQTT, le point

Département GEII – IUT A – Université de Lille – Colloque GEII LONGWY – 23/05/19

18

[email protected]

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.

Page 19: Un exemple d’utilisation de plateforme de services pour l’IoT · Les échanges objet-plateforme GCP : protocole MQTT over TLS 1.2 over TCP. L’objet est un client MQTT, le point

Département GEII – IUT A – Université de Lille – Colloque GEII LONGWY – 23/05/19

19

[email protected]

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

Page 20: Un exemple d’utilisation de plateforme de services pour l’IoT · Les échanges objet-plateforme GCP : protocole MQTT over TLS 1.2 over TCP. L’objet est un client MQTT, le point

Département GEII – IUT A – Université de Lille – Colloque GEII LONGWY – 23/05/19

20

[email protected]

Vue de la web app (plotly.js pour les courbes)

en live c’est mieux : https://hello-cloud-iot-core.firebaseapp.com/

Page 21: Un exemple d’utilisation de plateforme de services pour l’IoT · Les échanges objet-plateforme GCP : protocole MQTT over TLS 1.2 over TCP. L’objet est un client MQTT, le point

Département GEII – IUT A – Université de Lille – Colloque GEII LONGWY – 23/05/19

21

[email protected]

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

Page 22: Un exemple d’utilisation de plateforme de services pour l’IoT · Les échanges objet-plateforme GCP : protocole MQTT over TLS 1.2 over TCP. L’objet est un client MQTT, le point

Département GEII – IUT A – Université de Lille – Colloque GEII LONGWY – 23/05/19

22

[email protected]

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

Page 23: Un exemple d’utilisation de plateforme de services pour l’IoT · Les échanges objet-plateforme GCP : protocole MQTT over TLS 1.2 over TCP. L’objet est un client MQTT, le point

Département GEII – IUT A – Université de Lille – Colloque GEII LONGWY – 23/05/19

23

[email protected]

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.

Page 24: Un exemple d’utilisation de plateforme de services pour l’IoT · Les échanges objet-plateforme GCP : protocole MQTT over TLS 1.2 over TCP. L’objet est un client MQTT, le point

Département GEII – IUT A – Université de Lille – Colloque GEII LONGWY – 23/05/19

24

[email protected]

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

Page 25: Un exemple d’utilisation de plateforme de services pour l’IoT · Les échanges objet-plateforme GCP : protocole MQTT over TLS 1.2 over TCP. L’objet est un client MQTT, le point

Département GEII – IUT A – Université de Lille – Colloque GEII LONGWY – 23/05/19

25

[email protected]

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 » :

Page 26: Un exemple d’utilisation de plateforme de services pour l’IoT · Les échanges objet-plateforme GCP : protocole MQTT over TLS 1.2 over TCP. L’objet est un client MQTT, le point

Département GEII – IUT A – Université de Lille – Colloque GEII LONGWY – 23/05/19

26

[email protected]

• « 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

Page 27: Un exemple d’utilisation de plateforme de services pour l’IoT · Les échanges objet-plateforme GCP : protocole MQTT over TLS 1.2 over TCP. L’objet est un client MQTT, le point

Département GEII – IUT A – Université de Lille – Colloque GEII LONGWY – 23/05/19

27

[email protected]

Conclusion

@OlivierLourme

https://medium.com/@o.lourme

[email protected]

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 !