Le français MicroEJ, fournisseur de conteneurs logiciels pour l'IoT et les équipements embarqués, prend désormais en charge l'approche du langage C dit "managé" (Managed-C) pour renforcer la sécurité et la fiabilité des appareils connectés (*).
Grâce à un processus de validation logicielle spécifique et à son environnement d'exécution virtuel sécurisé et conteneurisé, l'approche de programmation mise en oeuvre par MicroEJ a pour ambition de permettre aux fabricants d'accroître la sécurité et la fiabilité des systèmes connectés qu’ils conçoivent sans surcharger le travail de conception, de codage et de validation des développeurs.
Contrairement aux applications C traditionnelles dites “non gérées” ou "non managées", la combinaison du langage de programmation C et des conteneurs virtualisés de MicroEJ amène les notions de sécurité et de fiabilité d’une application directement au niveau de son exécution.
Jusqu'à présent, estime MicroEJ, il fallait utiliser des langages de programmation de code managé de haut niveau comme Java, Kotlin, C#, JavaScript ou Python pour obtenir un niveau de robustesse et de sécurité élevé. Ici, l'ajout de l’approche Managed-C au framework de MicroEJ permet aux développeurs d’optimiser la flexibilité inhérente au langage C tout en éliminant les difficultés liées à cette technologie comme la gestion sécurisée de la mémoire ou la synchronisation multitâche.
« La prise en charge de l'approche Managed-C représente une avancée majeure pour les fabricants d'appareils qui recherchent plus de sécurité, de fiabilité et de facilité d'utilisation, commente Fred Rivard, le CEO de MicroEJ. Avec cette manière de coder, les développeurs peuvent réduire la complexité de la programmation et garantir la sécurité en exécutant une application Managed-C dans un conteneur sécurisé. »
Selon MicroEJ, dans la pratique, la programmation des systèmes embarqués est souvent réalisée avec le langage C traditionnel en s’appuyant sur des pilotes de bas niveau et des outils liés à des systèmes d’exploitation temps réel. Cependant, comme dans cette approche la gestion des erreurs et de la mémoire est laissée au développeur, l'écriture d'une application complète en C est exigeante, et il est courant que les applications C “plantent” l'ensemble d’un système dans des conditions imprévues. Pour cette raison, comme les implantations de code écrits en C traditionnel peuvent être sujettes aux erreurs, des normes de codage ont été développées, comme Misra C, pour rendre le langage C moins dépendant des compétences propres à chaque développeur.
Mais, toujours selon MicroEJ, de telles normes fournissent une solution incomplète car elles ne surmontent pas les problèmes de robustesse et les failles de sécurité liées aux opérations de bas niveau, telles que l'accès direct à la mémoire. Ainsi, selon MicroEJ, l’approche Managed-C rend non seulement les applications C plus fiables et sécurisées, mais elle facilite aussi l'intégration des actifs logiciels issus de tierces parties et des protocoles IoT existants (connecteurs cloud, protocoles Matter, LwM2M ou MQTT) dans une application complète.
Signalons que l’approche Managed-C est actuellement mise en œuvre en avance de phase chez certains utilisateurs de MicroEJ qui conçoivent des appareils IoT grand public et sera disponible de manière large en 2023. MicroEJ va présenter une démonstration du Managed-C lors du CES 2023 qui se tiendra du 5 au 8 janvier à Las Vegas aux Etats-Unis.
(*) Le terme managed code provient de la terminologie de Microsoft. Il s’agit d’un code source qui s'exécute sous le contrôle d’une machine virtuelle. Par opposition un code non managé (unmanaged code) exécuté directement par le processeur sous la forme d’un fichier binaire que le système d’exploitation charge en mémoire et démarre. Dans ce type d’approche, le programmeur est responsable non seulement du code qu’il produit mais aussi de la gestion de la mémoire et des considérations liées à la sécurité.