Principes de base de la sécurité IoT — 2e partie : protéger les secrets
Avec la contribution de Rédacteurs nord-américains de DigiKey
2020-06-11
Note de l'éditeur : Malgré la prolifération des dispositifs IoT, la sécurisation de ces dispositifs reste une préoccupation constante, dans la mesure où les problèmes de sécurité peuvent constituer un obstacle à l'adoption des dispositifs connectés dans les applications Internet industriel des objets (IIoT) et les applications stratégiques où les données d'entreprise et personnelles peuvent être compromises en cas d'attaque réussie. Sécuriser les applications IoT peut être intimidant, car les développeurs doivent orchestrer de multiples mécanismes, protocoles et politiques de sécurité qui, combinés, semblent complexes. En réalité, la sécurité des dispositifs IoT peut reposer sur quelques principes relativement simples qui sont pris en charge par des dispositifs de sécurité matériels. En suivant des pratiques de sécurité bien établies, il est possible de répondre à ces préoccupations. Cette série en plusieurs parties fournit des conseils pratiques pour aider les développeurs à s'assurer que les meilleures pratiques sont suivies dès le départ. La 1re partie traite des algorithmes de cryptographie sous-jacents aux conceptions sécurisées. Ici, la 2e partie traite du rôle des clés privées, de la gestion des clés et du stockage sécurisé dans les conceptions IoT sécurisées. La 3e partie étudie les mécanismes intégrés dans les processeurs sécurisés pour atténuer les autres types de menaces sur les dispositifs IoT. La 4e partie identifie des mécanismes de sécurité et montre comment les appliquer dans les processeurs avancés pour contribuer à assurer l'isolement requis pour atténuer les attaques sur l'environnement d'exécution des dispositifs IoT. La 5e partie décrit comment la sécurité IoT continue à s'étendre depuis les dispositifs IoT par le biais de mesures de sécurité de niveau supérieur utilisées pour connecter ces dispositifs aux ressources cloud IoT.
Bien que les dispositifs cryptographiques matériels puissent atténuer les vulnérabilités de l'Internet des objets (IoT), le manque de protection suffisante des clés secrètes et des données associées peut dégrader la sécurité, et ce, en dépit de l'utilisation du dispositif cryptographique le plus robuste. Les fabricants de semi-conducteurs assurent la protection des clés et d'autres données privilégiées grâce à une série de mécanismes intégrés dans des processeurs et des circuits intégrés de sécurité spécialisés.
Cet article étudie le rôle stratégique des clés dans la cryptographie et décrit les différents mécanismes de protection des clés intégrés dans les dispositifs disponibles de Maxim Integrated, NXP, STMicroelectronics et Microchip Technology.
Le rôle des clés secrètes dans la cryptographie
Comme décrit dans la première partie de cette série, un large éventail d'algorithmes cryptographiques pris en charge par le matériel est disponible pour créer des hachages ou des signatures de messages uniques, et un nombre encore plus important de chiffres est disponible pour chiffrer du texte en clair en texte chiffré et déchiffrer du texte chiffré en texte en clair. Bien que ces algorithmes puissent renforcer la sécurité de toute application, la capacité à protéger ces applications dépend fondamentalement de la sécurité des clés privées et d'autres données secrètes utilisées par les algorithmes cryptographiques.
En cryptographie, les secrets compromis signifient une sécurité compromise dans les politiques, protocoles et mécanismes de sécurité reposant sur ces secrets. Dès le 19e siècle, le cryptographe Auguste Kerckhoffs a noté qu'un système cryptographique reste sécurisé tant que la clé reste sécurisée, un axiome aujourd'hui connu sous le nom de principe de Kerckhoffs. En termes succincts, « l'ennemi connaît le système », selon la maxime de Shannon, du nom du père de la théorie de l'information, Claude Shannon.
En effet, les développeurs construisent des systèmes sécurisés en s'appuyant sur des algorithmes bien connus, si strictement spécifiés que les fabricants de semi-conducteurs peuvent les utiliser en toute confiance dans des dispositifs de sécurité à accélération matérielle. Mais ce qui protège en fin de compte ces systèmes, ce sont les secrets utilisés par ces algorithmes.
Le défi de la protection des secrets
Bien que la protection des secrets cryptographiques soit simple sur le plan conceptuel, dans la pratique, elle peut représenter un défi considérable. La mise en œuvre d'une politique de sécurité de niveau supérieur s'appuie inévitablement sur de multiples protocoles de sécurité utilisant des algorithmes différents. Ces protocoles et algorithmes, à leur tour, nécessitent une certaine combinaison de clés statiques et de clés éphémères créées par le protocole lui-même. Par exemple, une session TLS (Transport Layer Security) utilise une clé statique lors de l'authentification et une clé de session éphémère partagée pour l'échange de messages sécurisés.
En fait, l'Institut national américain des normes et des technologies (NIST) identifie 19 types de clés différents et 11 autres types d'informations connexes telles que les paramètres du domaine de courbe elliptique et les résultats intermédiaires qui doivent être protégés. Le NIST recommande en outre que, pour atteindre une sécurité plus robuste, les informations associées à l'utilisation des clés soient protégées pendant des périodes spécifiques, comme indiqué dans le Tableau 1, qui ne présente que les quelques premiers types de clés répertoriés dans la recommandation complète du NIST[1].
Tableau 1 : Cet extrait de la recommandation complète du NIST répertorie quelques-uns des différents types de clés ainsi que les informations associées qui doivent être protégées pendant la période spécifiée. (Source du tableau : Digi-Key Electronics, à partir d'informations du NIST) |
La nécessité de protéger les clés et les données associées signifie que les développeurs doivent faire preuve d'un soin méticuleux lors de l'utilisation des secrets dans une application IoT. Pour les dispositifs IoT, un plus grand défi peut résider dans la protection de ces données dans chacun de leurs multiples états : repos, transit et utilisation. La sécurisation des données au repos nécessite des mécanismes de stockage sécurisés ; la sécurisation des données en transit nécessite des méthodes de protection des secrets lors de leur transmission sur un réseau ou un bus système ; la sécurisation des données en cours d'utilisation nécessite des mécanismes permettant d'éviter qu'elles ne soient exposées lors de l'exécution d'algorithmes cryptographiques. Heureusement, les développeurs peuvent trouver un large éventail de dispositifs de sécurité capables de protéger des données secrètes grâce à un certain nombre de mécanismes différents.
Comment sécuriser les secrets dans les semi-conducteurs compatibles avec la cryptographie
Les solutions avancées de semi-conducteurs compatibles avec la cryptographie fournissent généralement un certain type de mémoire non volatile sécurisée pour le stockage des clés et d'autres données secrètes, mais la nature de l'approche globale diffère nettement dans les deux principales catégories de dispositifs sécurisés : les circuits intégrés de sécurité spécialisés et les processeurs compatibles avec la cryptographie.
Les circuits intégrés de sécurité sont conçus pour servir de sous-systèmes autonomes qui déchargent l'exécution des algorithmes d'un processeur hôte qui communique généralement via un bus série. Par exemple, l'authentificateur sécurisé DS28C36 de Maxim Integrated fournit des ports I2C ainsi que deux E/S à usage général (GPIO) qui peuvent être utilisées pour fournir un signal de succès ou d'échec d'authentification au processeur hôte (Figure 1).
Figure 1 : Les dispositifs de sécurité tels que l'authentificateur sécurisé DS28C36 de Maxim Integrated fournissent des sous-systèmes complets qui simplifient l'intégration tout en renforçant la protection des clés et des opérations internes. (Source de l'image : Maxim Integrated)
L'intégration logicielle est généralement tout aussi simple. Par exemple, la bibliothèque Plug & Trust Middleware de NXP résume les fonctionnalités matérielles de ses dispositifs à éléments sécurisés SE050 et A71CH à quelques appels de fonction (Figure 2).
Figure 2 : Les bibliothèques logicielles telles que Plug & Trust Middleware de NXP permettent aux développeurs d'utiliser quelques appels de fonction intuitifs pour créer des clés (à gauche), accéder aux clés (à droite) et tirer pleinement parti des fonctionnalités sous-jacentes des dispositifs à éléments sécurisés SE050 et A71CH de NXP. (Source de l'image : NXP)
La création d'une nouvelle clé (Figure 2, à gauche) renvoie keyId. Pour utiliser la clé ultérieurement, les développeurs se réfèrent à la clé par sa valeur keyId (Figure 3, à droite) plutôt que d'exposer la valeur réelle de la clé sur le bus système. Grâce à Plug & Trust Middleware de NXP, les développeurs peuvent rapidement implémenter des applications sécurisées en utilisant une carte d'évaluation Kinetis Freedom K64F de NXP compatible Arduino avec une carte d'extension OM-SE050ARD de NXP pour le développement SE050, ou une carte OM3710/A71CHARD de NXP pour le développement AC71CH.
Les circuits intégrés de sécurité dédiés tels que le DS28C36 de Maxim Integrated, le SE050 de NXP, l'AC71CHTK2/TOBC2VJ de NXP et d'autres dispositifs de cette catégorie offrent plusieurs avantages distincts. En plus d'offrir une approche relativement simple pour ajouter des fonctionnalités sécurisées à une conception, l'intégration des fonctionnalités dans un circuit intégré de sécurité dédié limite l'exposition des données et des opérations secrètes. Par exemple, le DS28C36 de Maxim Integrated intègre des accélérateurs cryptographiques matériels, un générateur de nombres véritablement aléatoires et 8 kilobits (Kb) de mémoire EEPROM sécurisée, ainsi que d'autres blocs fonctionnels. Lorsque le DS28C36 authentifie la signature d'un micrologiciel ECDSA (Elliptic Curve Digital Signature Algorithm), il assure la protection des données au repos, en transit et en cours d'utilisation car la clé privée, les données associées (voir Figure 1) et les opérations qui utilisent ces secrets restent confinées à l'intérieur du dispositif (Figure 3).
Figure 3 : Les fonctionnalités intégrées des dispositifs de sécurité tels que le DS28C36 de Maxim Integrated signifient que les clés privées et les données associées restent confinées dans la puce. (Source de l'image : Maxim Integrated)
Protection des clés secrètes basée sur le processeur
Toutes les conceptions IoT ne peuvent pas accueillir un circuit intégré de sécurité dédié. Les exigences peuvent dicter l'utilisation d'autres méthodes cryptographiques ou des contraintes de conception en termes d'empreinte, de nomenclature (BOM), de coût ou de spécifications du client. Pour ces conceptions, des processeurs sécurisés tels que le STM32WB55 de STMicroelectronics et l'ATSAML11 de Microchip Technology fournissent une combinaison de moteurs d'accélération matérielle pour les algorithmes cryptographiques et de mécanismes secrets de protection des données. Bien que cet article se concentre sur la protection des clés, ces processeurs et d'autres fournissent un certain nombre de fonctionnalités de sécurité sophistiquées supplémentaires qui seront abordées dans la 3e partie de cette série.
Dans le dispositif sans fil STM32WB55 à double cœur de STMicroelectronics, un processeur Arm® Cortex®-M4 (CPU1) sert de processeur hôte, communiquant avec le microcontrôleur Arm Cortex-M0+ (CPU2) dédié du sous-système radio via un contrôleur de communication inter-processeur (IPCC) et un mécanisme de sémaphore (HSEM) dédiés. Dans le sous-système CPU2, la mémoire sécurisée fournit une zone de stockage des clés du client (CKS) pour les clés utilisées par l'accélérateur matériel AES (Advanced Encryption Standard) (Figure 4).
Figure 4 : Le processeur double cœur STM32WB55 de STMicroelectronics permet un accès direct aux clés uniquement par le cœur du sous-système radio (CPU2) mais permet aux applications de confiance s'exécutant sur le cœur hôte (CPU1) de les utiliser indirectement. (Source de l'image : STMicroelectronics)
L'architecture STM32WB55 protège les clés CKS contre l'accès via le port de débogage ou l'accès par des routines non sécurisées exécutant le processeur CPU1 hôte. En même temps, les applications de confiance fonctionnant sur le CPU1 hôte peuvent utiliser des clés CKS spécifiques dans la cryptographie AES en les référençant à l'aide d'un index de clés. Le bloc matériel AES reçoit la clé souhaitée de la zone CKS via un bus interne, ce qui garantit que le transport de la clé reste protégé dans le sous-système CPU2.
Pour ses processeurs ATSAML11 basés sur Arm Cortex-M23, Microchip Technology s'appuie sur les fonctions de sécurité intégrées dans la technologie Arm TrustZone. TrustZone utilise des mécanismes basés sur le matériel pour renforcer l'isolement entre les ressources de confiance et les ressources non fiables.
Dans ses processeurs ATSAML11, Microchip utilise l'unité TrustZone Implementation Defined Attribution Unit (IDAU) pour appliquer les politiques de sécurité, y compris le contrôle d'accès différentiel aux sous-régions de mémoire par un code d'application sécurisé et non sécurisé. Une zone de mémoire vive (RAM) de sécurité de 256 octets, appelée TrustRAM, fournit un stockage sécurisé supplémentaire pour les clés éphémères.
Provisionnement sécurisé
Des circuits intégrés et des processeurs de sécurité dédiés fournissent les mécanismes dont les développeurs ont besoin pour protéger les clés secrètes et les données associées dans un dispositif IoT. Toutefois, les vulnérabilités de sécurité résultent souvent de failles dans le processus utilisé pour charger initialement, ou provisionner, un circuit intégré ou un processeur de sécurité avec des clés ou des certificats secrets, exposant ainsi les clés secrètes au vol. Les cybercriminels vendent rapidement ces clés volées et ces certificats compromis sur le marché noir, ce qui permet aux pirates de pénétrer dans des réseaux sécurisés avec des identifiants apparemment valides.
La 4e partie de cette série traite des dispositifs de sécurité et des kits de développement pré-provisionnés par les fabricants avec des clés et des certificats pour des services cloud IoT spécifiques, notamment Amazon Web Services, Microsoft Azure, Google Cloud et plus. Pour les déploiements en production, cependant, les développeurs préfèrent ou doivent généralement utiliser leurs propres clés et certificats personnalisés.
Pour soutenir le provisionnement personnalisé, la plupart des fabricants de semi-conducteurs proposent un provisionnement dans leurs propres installations ou en collaboration avec un partenaire de provisionnement. Par exemple, Microchip provisionne des dispositifs avec des secrets personnalisés à l'aide d'un outil d'encapsulation sécurisé inclus dans les kits de provisionnement proposés par des partenaires tiers, notamment IAR Systems Secure Thingz et Trustonic (Figure 5).
Figure 5 : Les développeurs des fabricants d'équipements d'origine (OEM) peuvent utiliser un outil d'encapsulation sécurisé pour protéger les secrets utilisés ultérieurement dans l'installation de programmation sécurisée d'un partenaire de fabrication pour provisionner des microcontrôleurs sécurisés tels que le SAML11 de Microchip. (Source de l'image : Microchip Technology)
Lorsqu'il est prêt pour la production, le développeur OEM utilise l'outil d'encapsulation sécurisé pour fournir les clés et les certificats à l'usine Microchip sous une forme cryptée qui ne peut être décryptée que par un module de sécurité matériel situé dans l'installation de programmation sécurisée du partenaire. Cette approche répond au besoin d'échange d'informations de production sur des réseaux non sécurisés, tout en permettant d'obtenir des dispositifs prêts pour la production avec des clés et des micrologiciels provisionnés en toute sécurité.
Auto-provisionnement avec la technologie PUF
L'utilisation croissante de la technologie de fonction physique inclonable (PUF) dans les processeurs de sécurité et les circuits intégrés dédiés peut offrir une approche encore plus sécurisée pour le provisionnement. Plutôt que de charger explicitement une clé secrète dans un dispositif, la technologie PUF permet aux dispositifs de sécurité d'utiliser une clé secrète dérivée des caractéristiques uniques de chaque dispositif.
La technologie PUF repose sur des variations de fabrication et d'autres processus physiques qui donnent une valeur unique au dispositif lui-même et reproductible dans le cadre du fonctionnement normal du système. Comme décrit ci-dessous, la valeur résultante peut servir de clé privée unique pour la cryptographie, fournissant essentiellement à chaque dispositif compatible PUF une clé secrète intégrée.
En plus de permettre l'auto-provisionnement, la technologie PUF ajoute une autre couche de sécurité. Les tentatives de pénétration dans le dispositif pour exposer cette valeur unique au dispositif modifient les caractéristiques utilisées pour la générer, altérant ainsi la valeur générée.
Bien qu'il existe différents mécanismes PUF, l'approche de base reste largement la même pour tous les dispositifs compatibles PUF. Par exemple, la fonction ChipDNA PUF de Maxim Integrated utilisée dans son microcontrôleur sécurisé MAX32520, ainsi que dans certains circuits intégrés de sécurité, repose sur un ensemble d'éléments PUF analogiques et une logique de contrôle pour générer une clé (Figure 6).
Figure 6 : Dans la technologie ChipDNA PUF de Maxim Integrated, les états aléatoires d'un ensemble d'éléments PUF sont utilisés par la logique de contrôle intégrée pour générer une clé cohérente spécifique au dispositif. (Source de l'image : Maxim Integrated)
Dans l'authentificateur sécurisé ECDSA DS28C39 de Maxim Integrated, la sortie ChipDNA PUF est utilisée comme clé privée pour les opérations ECDSA et comme clé privée pour sécuriser les données associées (Figure 7).
Figure 7 : L'authentificateur sécurisé ECDSA DS28C39 de Maxim Integrated utilise une clé privée générée par son circuit ChipDNA PUF intégré. (Source de l'image : Maxim Integrated)
Pour sa gamme de processeurs compatibles PUF LPC55S, NXP utilise la technologie PUF basée sur la sortie générée par l'état aléatoire initial d'une matrice SRAM (Figure 8).
Figure 8 : Dans son implémentation PUF, la gamme de processeurs LPC55S de NXP utilise les données de démarrage de la SRAM pour générer une empreinte digitale numérique et le code d'activation associé, qui est utilisé plus tard pour restaurer l'empreinte digitale numérique et crypter ou générer des clés privées. (Source de l'image : NXP)
Dans ces dispositifs, l'utilisation de la technologie PUF commence par une opération d'enregistrement qui génère une empreinte digitale numérique unique et un code activé associé qui restent valides jusqu'à ce qu'une nouvelle opération d'enregistrement soit exécutée. Stocké dans la mémoire Flash protégée du dispositif, le code d'activation permet au dispositif de reconstruire l'empreinte digitale numérique à partir des données de démarrage de la SRAM, générées de manière cohérente au démarrage.
Une fois l'empreinte digitale numérique en place, les développeurs peuvent chiffrer leurs propres clés ou générer des clés. Dans ce processus, le dispositif renvoie un code de clé. En fournissant le code d'activation, le code de clé et l'index, les développeurs peuvent conduire le dispositif à déchiffrer la clé privée souhaitée à partir de l'emplacement de clé sur puce approprié et à l'envoyer à une bibliothèque de logiciels de cryptographie. L'emplacement de clé 0 fournit une méthode spéciale de décryptage de la clé qui transmet la clé via un bus interne directement au moteur de cryptographie matériel AES du processeur (Figure 9).
Dans son rôle de cryptage et de décryptage des clés, la signature numérique PUF du LPC55S sert de clé primaire (KEK) traditionnellement utilisée pour renforcer la protection des données secrètes au repos ou en transit. L'utilisation d'une clé KEK permet de réduire les exigences en matière de stockage sécurisé plus important et de mécanismes internes associés nécessaires à la protection des données secrètes.
Figure 9 : La gamme de processeurs LPC55S de NXP utilise son empreinte digitale numérique comme clé KEK pour décrypter les clés protégées dans sa mémoire de clés et référencées par programme à l'aide du code d'activation, du code de clé et de l'index associés. (Source de l'image : NXP)
Les développeurs peuvent utiliser une clé KEK pour crypter des clés personnalisées et des données associées, et stocker les résultats cryptés dans une mémoire non sécurisée et non volatile. Cette approche permet aux développeurs de protéger les divers types de clés et les données associées, même dans les dispositifs dont le stockage sécurisé est limité. Grâce à la disponibilité des clés KEK générées par PUF, les développeurs peuvent implémenter des dispositifs IoT sécurisés capables de protéger les applications tout au long du cycle de développement.
Conclusion
La disponibilité de circuits intégrés de sécurité dédiés et de processeurs sécurisés avec des accélérateurs de cryptographie a considérablement amélioré la capacité des développeurs à construire des systèmes sécurisés. Cependant, les systèmes sécurisés dépendent de manière critique de la sécurité des clés privées et des autres données associées aux mécanismes et protocoles de cryptographie. En utilisant un certain nombre de mécanismes différents, les dispositifs de sécurité assurent la protection des données secrètes au repos, en transit et en cours d'utilisation. Grâce à ces dispositifs, les développeurs peuvent élaborer des solutions IoT plus sécurisées sans compromettre les autres exigences de conception.
Avertissement : les opinions, convictions et points de vue exprimés par les divers auteurs et/ou participants au forum sur ce site Web ne reflètent pas nécessairement ceux de DigiKey ni les politiques officielles de la société.




