Aborder simplement le thème de la sécurité et de l'intégrité des données dans les domaines de l’internet et de l'IoT n'est pas chose aisée. De nombreux produits et applications vantent la sécurité et l'inaltérabilité des données, mais ce que cela sous-tends et l’effort nécessaire pour développer des produits qui répondent aux exigences et aux attentes des utilisateurs reste souvent dissimulé.  Ce n'est que lorsque l'on est soi-même confronté, en tant que développeur, à la tâche d'introduire de telles fonctionnalités dans ses produits que le sujet apparaît dans toute sa complexité. De même, la protection contre toute manipulation illicite du micrologiciel de l'appareil livré n'est pas toujours triviale à mettre en œuvre, surtout s'il doit recevoir des mises à jour et une configuration depuis un serveur externe.
 
Une fois immergé dans la connexion des appareils connectés et dans la configuration sécurisées des données (surtout lorsqu'il s'agit de produits qui doivent être livrés préconfigurés pour des services dans le nuage), on peut très vite se perdre dans toutes les informations et exigences techniques. Le Secure Element NXP EdgeLock SE050E offre une possibilité de concevoir et de réaliser plus facilement de tels produits tout en les rendant plus résistants à la manipulation des données.

Le Secure Element NXP EdgeLock SE050E

Les Secures Eléments EdgeLock SE050 et SE050E de NXP de la famille des Plug & Trust Devices offrent des fonctions de sécurité avancées conformes à Common Criteria EAL 6+. Les spécifications du Secure Element SE050E sont précisées dans le tableau 1. Pour connecter le Secure Element SE050E à un système, une interface I²C suffit. La tension d'alimentation nominale de la puce va de 1,62 V à 3,6 V, mais peut aller jusqu’à 6 V, ce qui permet également son utilisation dans des systèmes 5 V et rend l'ensemble intéressant comme option de mise à niveau. Le Secure Element NXP EdgeLock SE050E est un petit SoC (système sur une puce) avec un Java Card OS et une applet IoT dédiée, qui veille à ce que les opérations de chiffrement ne soient pas les seules à être exécutées en toute sécurité. Il permet également de détecter et de bloquer toute tentative de lecture illicite de données de la puce. En tant que base de confiance, le Secure Element SE050E peut ainsi être utilisé pour établir des connexions sécurisées et fiables entre deux systèmes et pour les authentifier.

 
Das NXP EdgeLock™ SE050E Secure Element
Le SoC EdgeLock.
L'avantage du Secure Element NXP EdgeLock SE050E est sa facilité de connexion à un microcontrôleur (MCU) ou à un système sur une puce (SoC) grâce à l'utilisation du bus I²C. De plus, la puce en boîtier HX2QFN prend très peu de place et ne nécessite comme circuit externe optionnel qu’un condensateur de blocage de 100nF ainsi qu’éventuellement selon le MCU ou le SoC, deux résistances de rappel pour le bus I²C.

 
EdgeLock™ SE050E Secure Element neben RP2040
Secure Element EdgeLock SE050E à côté d'un RP2040 pour une comparaison de la taille.
Mais quel est le domaine d'application du Secure Element NXP EdgeLock SE050E et pourquoi l’utiliser dans un projet ? Pour mieux comprendre le fonctionnement et l'utilisation du NXP EdgeLock SE050E, il est recommandé de consulter le document de NXP : Essentials of Edge Computing eBook
 
Tableau 1 : Spécification du Secure Element EdgeLock SE050E

Le rôle des certificats 

Lorsqu'il s'agit de communication sécurisée entre deux partenaires, en l'occurrence des systèmes IoT, la plupart des gens pensent à la cryptographie. Mais il manque encore un élément essentiel : pour qu'une telle communication sécurisée puisse fonctionner, les deux parties doivent se faire confiance et échanger des clés. Pour ce faire, il existe des certificats. Mais que fait un tel certificat ?
 
Imaginons deux nouveaux collaborateurs, Jim et Dave, qui ne se sont jamais rencontrés auparavant et qui travaillent depuis leur bureau à domicile. Ils travaillent tous deux sous les ordres de Karen, laquelle, en tant que leur supérieure hiérarchique, a leur confiance. Elle a confié à Jim un ordre de mission pour Dave.
Jim donne cet ordre à Dave, qui demande comment il peut être sûr qu’il vient vraiment de Karen. L’ordre de mission porte un tampon posé par Karen, qui en est l’unique détentrice, et que Jim et Dave connaissent. En regardant le tampon, Dave peut s’assurer qu'il s'agit bien d'un document de Karen. De plus, Jim et Dave s’identifient mutuellement avec leurs cartes d'employés sur lesquelles Karen a également apposé un tampon. Transposons maintenant ce cas de figure dans le monde numérique. Le tampon que Karen a utilisé correspond à une clé de chiffrement. Comme pour un tel tampon dans un bureau, cette clé doit être conservée en lieu sûr, de préférence dans un coffre-fort, sinon n'importe qui pourrait s'en servir pour authentifier n'importe quel document. C’est le Secure Element NXP EdgeLock SE050E qui joue le rôle de coffre-fort pour la clé de chiffrement.
 
Jim devient un capteur IoT qui surveille une température, et Dave devient un fournisseur de services dans les nuages, en l’occurrence Amazon AWS IoT. Karen dans notre exemple devient une autorité de certification (CA) qui délivre des certificats au lieu de tampons.
Dès que le capteur IoT veut envoyer des données au fournisseur de services dans les nuages, il commence par vérifier le certificat présenté par celui-ci. De même, le serveur du fournisseur de services dans les nuages s’enquiert du certificat du capteur afin de s'assurer qu'il établit une communication avec le bon correspondant. Lorsque les deux parties ont vérifié que leurs identités sont correctes, une connexion cryptée est établie et le capteur peut transmettre ses données.
 
Pour simplifier, on peut dire que les certificats sont les documents d'identité du monde numérique. Mais comme un certificat est un fichier qui peut être facilement copié, les certificats, tout comme les cartes d'identité, possèdent des attributs de sécurité qui doivent empêcher toute falsification. Dans le cas des certificats, ce sont les clés de chiffrement qui constituent ces attributs, comme un tampon infalsifiable. Car, comme dans la vie réelle, il faut, dans le monde numérique, prévenir l'usurpation d'identité et la falsification de documents.
 

Administrer les certificats en toute sécurité

Tout utilisateur d’un Raspberry Pi pour des applications IoT avec une connexion à un fournisseur de services en nuages, que ce soit avec Google Cloud Platform, Amazon Web Services ou Microsoft Azure, aura vu que des certificats appropriés doivent y être installés. Il est possible d'attribuer à chaque appareil son propre certificat, de sorte que si un certificat est compromis, un seul appareil est concerné et non toute la flotte. Amazon a mis à disposition à ce sujet des documents qui montrent ce processus. Dans le cas d'un Raspberry Pi, le certificat et la clé de chiffrement se trouveraient toutefois sur une carte SD. Les données d'accès et le certificat pourraient alors être facilement copiés.
 
Le Secure Element EdgeLock SE050E peut y remédier en fournissant un environnement sécurisé pour le traitement des clés de chiffrement et des certificats. Il est possible d'utiliser jusqu'à 50 ko de mémoire dans la puce pour stocker des certificats et des clés. Même si cela peut paraître peu de nos jours, compte tenu de la taille des clés USB de plusieurs gigaoctets, cela suffit pour stocker une grande quantité de certificats dans l'élément sécurisé EdgeLock SE050E. Mais la puce est bien plus qu'une simple mémoire de clés sécurisée : sa communication par I²C avec l’hôte peut être chiffrée, de sorte que l’hôte devienne l’unique utilisateur des services fournis par la puce, procédure décrite par NXP dans une note d'application (AN12662, Binding a host device to EdgeLock SE05x). Ainsi, l'élément sécurisé EdgeLock SE050E peut non seulement conserver en toute sécurité des clés de chiffrement et des documents confidentiels et les protéger contre une lecture illicite, mais aussi fournir une communication cryptée sécurisée.

 
EdgeLock™ SE050E Secure Element: I²C Communication
Affichage de la communication I²C avec un analyseur logique.
Unencrypted I2C COM_PiConsole.JPG
  Les données affichées par le Raspberry Pi peuvent également être retrouvées au milieu de l'enregistrement de l’analyseur logique.

NFC et I²C

D'autres variantes de la famille EdgeLock offrent en outre des connexions en NFC ((Nier Field Communication – communication sans contact)  ainsi qu'une interface de contrôleur I²C et permettent ainsi des applications très intéressantes. Le NFC  peut être utilisée pour les variantes de puces qui le gèrent pour leur transférer des données en fin de cycle de production ou juste avant la livraison. Un appareil compatible NFC tel qu'un smartphone permet ainsi de transférer des certificats et des configurations dans la puce sans contact. Pour cela, la puce est alimentée en énergie par l'appareil NFC, ce qui dispense le système lui-même d’être actif pendant la configuration.

 
EdgeLock™ SE050E Secure Element: Interfaces

Interfaces de la famille EdgeLock SE05x (source : NXP)
L'interface de contrôleur I²C permet d'adresser d'autres capteurs par I²C. Cela permet d'une part d'ajouter une composante de chiffrement aux données d'un capteur I²C connecté, d’autre part permettre à l’hôte d’identifier le capteur grâce à des variantes de la famille EdgeLock et de s'assurer qu'il n'a pas été remplacé par une réplique non certifiée. De même, l'accès au capteur par l'hôte et d’autres éléments présents sur le bus peut être filtré par une authentification.

Un exemple pratique 

Dans l'exemple suivant, le Secure Element EdgeLock SE050E est utilisé en combinaison avec un Raspberry Pi 4. Celui-ci n'a pas seulement trouvé sa place dans des produits commerciaux en tant que petit ordinateur monocarte, mais aussi sous la forme du Compute Module 4. Même si l’approvisionnement en produits Raspberry Pi est difficile en ce moment, ceux-ci constituent une très bonne plateforme, car largement répandue, pour les associer à un Secure Element EdgeLock SE050E. Un Raspberry Pi Zero 2W est également un très bon candidat à cette association. La note d'application AN12570 explique comment mettre en service le Secure Element EdgeLock SE050E avec le Raspberry Pi.
 
Cet exemple est destiné à montrer l'utilisation d'une plateforme deservices en nuage, ici Amazon AWS IoT Core, pour lequel le Secure Element EdgeLock SE050E est utilisé pour l'authentification et l'embarquement. Comme le Raspberry Pi doit échanger des données avec l'Amazon AWS, celui-ci va utiliser  un réseau WiFi. Cela ne se fait toutefois pas ici avec une clé pré-partagée (WPA2-PSK), mais par un certificat avec WPA2-EAP. Ainsi, aucune clé WiFi qui pourrait être lue ultérieurement n'est enregistrée sur la carte SD du Raspberry Pi, pas plus que le certificat utilisé pour Amazon AWS IoT Core, qui ne pourra pas non plus être copié simplement en accédant au système de fichiers.
 

Matériel pour test

Pour le montage du test, un Raspberry Pi 4 avec un EdgeLock SE050 Arduino Compatible Development Kit (OM-SE050ARD-E)
OM-SE050RPI ARDUINO to Raspberry Pi Adapter Board (OM-SE050RPI
 
OM-SE050RPI-ADAPTER-BOARD.jpg
Bouclier OM-SE050RPI (source : NXP)
OM-SE050ARD-E.png
Bouclier OM-SE050ARD-E (source: NXP)

​Pour les premiers tests, on utilise un Raspberry Pi 4 avec un OS à jour (32 bits) et, pour le WPA2-EAP, un point d'accès et un serveur FreeRadius (pouvant fonctionner sur le point d'accès), donc peu de matériel.
 
Raspberry Pi mit EdgeLock™ SE050E Secure Element
Raspberry Pi avec le Secure Element EdgeLock SE050E.

Configuration WPA2-EAP

La configuration est similaire à celle de la vidéo « WiFi Credential Protection with EdgeLock SE050 » de NXP et toutes les étapes de la configuration peuvent être consultées dans la note d'application AN12661 de NXP. Les détails de la configuration pour le Raspberry Pi et le point d'accès peuvent être consultés dans la vidéo sur le WPA2-EAP et le Secure Element EdgeLock SE050E.

 
EdgeLock™ SE050E Secure-Element: WPA2-EAP Test Setup
Configuration du test WPA2-EAP.

Le Raspberry Pi utilise ici le Secure Element EdgeLock SE050E lors de l'établissement de la connexion au réseau WiFi. Le point d'accès transmet la demande de connexion au serveur FreeRadius, qui vérifie si ce Raspberry Pi avec ses certificats est digne de confiance. Le serveur FreeRadius indique alors au point d'accès si le Raspberry Pi est autorisé à se connecter au réseau, quels sont ses droits sur ce réseau, à quel réseau virtuel il doit être affecté, ainsi que d'autres paramètres optionnels. Cette procédure est surtout très pratique pour les réseaux WiFi gérés de manière centralisée, car le Raspberry Pi peut ainsi se connecter à différents points d'accès et sans qu’un mot de passe ne doive être enregistré sur sa carte SD.

 
EdgeLock™ SE050E Secure-Element: Zertifikatsaustausch
Echange de certificats

Échange de certificats

Dans le passé, le micrologiciel du module WiFi installé sur le Raspberry Pi 4 a de temps en temps rencontré des problèmes avec WPA2-EAP. Si vous ne parvenez pas à faire fonctionner l'exemple WiFi, cela n'est pas forcément dû à une mauvaise configuration. Selon le type de point d'accès, l’un de ces bogues en rapport avec le WPA2-EAP peut se manifester.
 
Wi-Fi Credential Protection with EdgeLock SE050

Vidéo de présentation : WiFi Credential Protection with EdgeLock SE050 (source : NXP).
 
La vidéo de NXP montre étape par étape comment configurer le WPA2-EAP avec un point d'accès basé sur OpenWRT et constitue un bon complément à la note d’application AN12661.

Amazon AWS IoT Core

Une des premières choses à vérifier est l'heure correcte et l'accessibilité d'un serveur NTP depuis le Raspberry Pi. Si le Raspberry Pi ne peut pas atteindre un serveur NTP et que l'heure n'est pas correcte, une erreur TLS peut se produire.

La connexion sécurisée de capteurs et d'actionneurs à une plateforme de services en nuages peut être réalisée avec le Secure Element EdgeLock SE050E avec un effort et en un temps raisonnables. Pour ce faire, il est possible d'utiliser la démo aws_eou du middleware du Secure Element EdgeLock SE050E.

Pour la configuration, les étapes nécessaires sont consignées dans la base de connaissances pour la famille SE05x sous Connecting-with-Edgelock-SE050-and-Raspberry-Pi-to-AWS-IoT-Core.


 
Wi-Fi Credential Protection with EdgeLock SE050: PI AWS Connection
Raspberry Pi avec connexion AWS.

Dès que la démonstration IoT de l'exemple est exécutée, les messages apparaissent également dans Amazon AWS IoT Core et sont disponibles sous le point Test à l'aide du client MQTT. Pour voir les messages, il faut que le client MQTT soit abonné au sujet #
 
Il s'agit d'une démonstration de la manière dont les données peuvent être transportées vers le nuage en toute sécurité grâce au Secure Element EdgeLock SE050E AWS n’est même pas obligatoire, d'autres fournisseurs de services en nuages peuvent également être utilisées avec le Secure Element EdgeLock SE050E.

 
Wi-Fi Credential Protection with EdgeLock SE050: AWS Data
Données entrantes dans AWS IoT Core.

De multiples possibilités d’utilisation

Même si les services nuage des grands fournisseurs jouent un rôle de plus en plus important dans le domaine de l'IoT, le Secure Element EdgeLock SE050E n'y est pas limité. NXP fournit pour le Secure Element EdgeLock SE050E une large bibliothèque de notes d'application, par exemple « Enhanced IoT security with high flexibility » pour l'utilisation comme module de type TPM, l'authentification mutuelle d’appareil à appareil, la protection de la séquence de démarrage des microcontrôleurs ou encore pour la configuration via NFC. Le Secure Element EdgeLock SE050E permet également d'obtenir la conformité ISA/IEC 62443 à peu de frais.

Un compagnon pour les microcontrôleurs et les nano-ordinateurs monocarte

Cet exemple montre le Secure Element EdgeLock SE050E en combinaison avec un Raspberry Pi 4 et quelques-unes de ses possibilités d'application. Mais le Secure Element EdgeLock SE050E constitue également un très bon complément aux petits microcontrôleurs, comme un Raspberry Pi Pico avec un bouclier Ethernet ou le Wiznet W7500. Ces microcontrôleurs sont en mesure d'établir des connexions cryptées avec des services du nuage. Les fonctions de chiffrement nécessaires à l'authentification et donc à l'établissement de la connexion sont toutefois très gourmandes en puissance de calcul. Ce qui peut être fait en quelques millisecondes avec un Raspberry Pi 4 et ses quatre cœurs ARM-Cortex peut prendre de l'ordre de la seconde avec des microcontrôleurs plus petits. C'est là que le Secure Element EdgeLock SE050E peut soulager les petits microcontrôleurs d'un travail considérable, ce qui n'est pas seulement un gain de sécurité. Il permet également de réduire considérablement le temps de calcul nécessaire à l'échange de données, source d’un gain en consommation d'énergie.

Une intégration simple avec peu de composants

Comme pour toutes les puces utilisées dans un projet, la question se pose toujours de savoir combien il faut de composants autour de la puce proprement dite. Dans le cas du Raspberry Pi, il s'agit de trois composants passifs : deux résistances de rappel pour l’I²C et un condensateur de blocage 100 nF en option. Cela permet une intégration simple et peu encombrante dans de nouvelles conceptions, que ce soit un Raspberry Pi ou un MCU. Une variante bon marché pour commencer à développer un projet utilisant une puce de la famille EdgeLock SE05x est le Plug&Trust Click de MikroElektronika. Grâce à la simplicité du câblage du Secure Element EdgeLock SE050E, il ne serait pas étonnant de voir apparaître un module avec un connecteur Groove ou Qwiic, qui pourrait être connecté aux cartes d'évaluation existantes par les moyens les plus simples.

Conclusion

Pour une première immersion  dans le domaine de l'IoT, des certificats, du Root-of-Trust et des Secure Elements, il est bon de commencer par un peu de théorie. Plug and Trust pour le Secure Element EdgeLock SE050E est très pertinent, mais il ne faut pas le confondre avec Plug and Play. Le Secure Element EdgeLock SE050E permet de réaliser une sécurité maximale dans les applications IoT avec peu de composants. Pour la configuration et le fonctionnement, NXP met à disposition une documentation appropriée qui aide l'utilisateur à atteindre ses exigences de sécurité par une configuration adéquate. Avec le Secure Element EdgeLock SE050E, on a non seulement accès à la documentation de NXP, mais on peut aussi demander de l'aide à un fabricant établi en Europe.

Pour les utilisateurs d’un Raspberry Pi 4 ou d’un Compute Module 4, le Secure Element EdgeLock SE050E est un complément utile. La connexion simple par I²C permet une intégration matérielle et logicielle en quelques étapes. L'utilisation d'un MCU permet non seulement d'augmenter la sécurité de l'application, mais le Secure Element EdgeLock SE050E peut également contribuer à réduire la consommation d'énergie. Avec le Secure Element EdgeLock SE050E, il existe plus d'options pour améliorer la sécurité d’un système tout en utilisant moins de composants et d'effort.

Traduction : Helmut Müller