Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Industrial Internet of Things >> Technologie de l'Internet des objets

Six étapes pour sécuriser les systèmes embarqués dans l'IoT

Mark Pitchford de LDRA

La sécurité continue d'être une préoccupation primordiale pour une vaste gamme de systèmes intégrés dans l'Internet des objets (IoT). S'ils sont infiltrés, les systèmes enterrés dans le réseau électrique, la production d'électricité, la fabrication, les systèmes automobiles, les dispositifs médicaux, la gestion des bâtiments, les pompes à essence, les grille-pain et bien plus encore, peuvent constituer un risque important, Mark Pitchford de LDRA rapports.

Heureusement, avec la sécurité, le vieil adage « une once de prévention vaut mieux que guérir » est certainement vrai, et la base de la phrase à la mode beaucoup plus récente « passer à gauche » ! La prospective technique permet de créer des systèmes sécurisés à moindre coût que les tests réactifs ultérieurs. En fait, étant donné que la création de logiciels sécurisés a beaucoup en commun avec la création d'applications fonctionnellement sûres, le développement de logiciels sécurisés commence par suivre des processus de sécurité fonctionnelle.

Tenez compte de ces bonnes pratiques pour vous aider à produire un code de haute qualité et à améliorer la sécurité des systèmes embarqués :

1. Intégrer la sécurité dans le cycle de vie du développement logiciel

La vérification traditionnelle du code sécurisé est largement réactive. Le code est développé conformément à des directives relativement souples, puis testé pour identifier les vulnérabilités. Que vous utilisiez un développement agile ou un modèle de cycle de vie de développement traditionnel, il existe une approche plus proactive de la sécurité intégrée.

Avec le développement traditionnel, les exigences passent à la conception, au code (peut-être via un modèle) et aux tests. Avec le développement agile, les exigences sont construites de manière itérative en couches de l'intérieur vers l'extérieur, chacune avec sa propre boucle d'exigences, de conception, de code et de test. Avec l'une ou l'autre méthodologie, s'assurer que les exigences de sécurité font partie intégrante du processus de développement conduira à un résultat bien plus satisfaisant que de simplement rechercher les vulnérabilités à la fin.

2. Assurer une traçabilité bidirectionnelle

La plupart des normes de sécurité fonctionnelle exigent la preuve d'une traçabilité bidirectionnelle, la confirmation d'une couverture complète et approfondie entre les phases de développement et toutes les étapes de développement, des exigences à la conception, au code et aux tests. Avec une telle transparence, l'impact de toute modification des exigences ou de l'échec des cas de test peut être évalué à l'aide d'une analyse d'impact, puis traité.

Les artefacts peuvent être automatiquement régénérés pour présenter des preuves de conformité continue à la norme appropriée. Lorsque la sécurité est primordiale, la traçabilité bidirectionnelle garantit également qu'il n'y a pas de code redondant ou de fonctionnalité non spécifiée et cela inclut des méthodes de porte dérobée. Ces avantages soulignent la valeur du développement systématique pour augmenter la capacité de créer des systèmes sécurisés.

3. Choisissez un sous-ensemble linguistique sécurisé

Lors du développement avec C ou C++, environ 80% des défauts logiciels peuvent être attribués à l'utilisation incorrecte de 20% des constructions du langage. Les sous-ensembles de langage améliorent à la fois la sûreté et la sécurité en empêchant ou en signalant l'utilisation de constructions non sécurisées. Deux normes de codage populaires, MISRA C et Carnegie Mellon Software Engineering Institute (SEI) CERT C, aident les développeurs à produire du code sécurisé.

L'application de MISRA C ou de CERT C se traduira par un code plus sécurisé que si ni l'un ni l'autre n'était appliqué. Cependant, l'application manuelle de ces directives se fait au prix du temps, des efforts, de l'argent et, ironiquement, de la qualité, car le processus manuel est complexe et sujet aux erreurs. Pour réduire les coûts et améliorer la productivité, les organisations de développement doivent automatiser la prise en charge de la conformité.

4. Utiliser une norme de processus axée sur la sécurité

Les normes de sécurité fournissent un autre élément de la solution de développement sécurisé, bien que les normes de sécurité ne soient pas aussi bien développées et éprouvées que les normes de sécurité fonctionnelle, qui ont été utilisées pendant des décennies. Cela changera, cependant, à mesure que des normes de sécurité spécifiques à l'industrie seront développées.

L'industrie automobile, par exemple, développe actuellement ISO/SAE 21434 « Ingénierie de la cybersécurité des véhicules routiers » pour atténuer le problème des véhicules connectés en tant que cibles de cyberattaques. La promesse d'un document substantiel avec plus de détails que les principes directeurs de haut niveau de SAE J3061 « Guide de cybersécurité pour les systèmes de véhicules cyber-physiques », fait de la norme ISO/SAE 21434 une norme largement attendue.

5. Automatisez au maximum

À chaque étape du processus de développement logiciel, l'automatisation réduit les vulnérabilités des systèmes embarqués et permet d'économiser énormément de temps et d'argent. Les développeurs peuvent se connecter à des outils d'exigences (par exemple, IBM Rational DOORS), importer des constructions de simulation et de modélisation, et les tester par rapport au code pour voir en un coup d'œil comment et si les exigences sont remplies, ce qui manque et où se trouve le code mort qui ne l'est pas. t remplir une exigence.

Un moteur d'analyse statique peut vérifier la conformité aux normes de codage et aux normes de sécurité et de sûreté fonctionnelle. Avec l'automatisation et la conception sécurisée, les tests réactifs tels que les tests d'intrusion ont leur place, mais leur rôle est de confirmer que le code est sécurisé pour ne pas découvrir où il ne l'est pas.

6. Sélectionnez une base logicielle sécurisée

Les logiciels embarqués sécurisés doivent s'exécuter sur une plate-forme sécurisée. Ainsi, si une application est attaquée, elle s'exécute dans son propre silo, isolé des autres composants logiciels (« séparation de domaine »). Les outils de test et de vérification logiciels automatisés s'intègrent dans des environnements de développement communs, de la spécification des exigences à la conception et à la modélisation en passant par le codage et la documentation. Cela garantit que les développeurs peuvent créer des systèmes sécurisés dans un environnement familier et avec les outils déjà spécifiés pour leur système.

Suivre ces six processus fournit une approche cohérente du développement de logiciels intégrés pour l'IoT qui sont sûrs, sécurisés et fiables.

L'auteur est Mark Pitchford de LDRA.

Pour plus d'informations, cliquez ici :


Technologie de l'Internet des objets

  1. Sécuriser l'IoT industriel :la pièce manquante du puzzle
  2. La route vers la sécurité industrielle de l'IoT
  3. S'attaquer aux vulnérabilités de sécurité de l'IoT industriel
  4. Sécuriser l'IoT contre les cyberattaques
  5. Sécurisation du vecteur de menace IoT
  6. Sécuriser l'IoT par la tromperie
  7. Main dans la main – Pourquoi l'IoT a besoin du SD-WAN
  8. Sécurisation de l'IoT de la couche réseau à la couche application
  9. Quatre étapes pour recruter le meilleur RSSI dans un monde IoT