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

Post on 03-Jun-2020

11 views 7 download

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

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

1

olivier.lourme@univ-lille.fr

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

olivier.lourme@univ-lille.fr

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

olivier.lourme@univ-lille.fr

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

olivier.lourme@univ-lille.fr

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

olivier.lourme@univ-lille.fr

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

olivier.lourme@univ-lille.fr

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

olivier.lourme@univ-lille.fr

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

olivier.lourme@univ-lille.fr

« 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

olivier.lourme@univ-lille.fr

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

olivier.lourme@univ-lille.fr

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

olivier.lourme@univ-lille.fr

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

olivier.lourme@univ-lille.fr

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

olivier.lourme@univ-lille.fr

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

olivier.lourme@univ-lille.fr

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

olivier.lourme@univ-lille.fr

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

olivier.lourme@univ-lille.fr

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

olivier.lourme@univ-lille.fr

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

olivier.lourme@univ-lille.fr

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

olivier.lourme@univ-lille.fr

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

olivier.lourme@univ-lille.fr

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

olivier.lourme@univ-lille.fr

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

olivier.lourme@univ-lille.fr

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

olivier.lourme@univ-lille.fr

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

olivier.lourme@univ-lille.fr

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

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

25

olivier.lourme@univ-lille.fr

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

olivier.lourme@univ-lille.fr

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

olivier.lourme@univ-lille.fr

Conclusion

@OlivierLourme

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

olivier.lourme@univ-lille.fr

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 !