Sécurité et fiabilité des logiciels embarqués dans le secteur des technologies médicales : normes, modèles pratiques et enseignements intersectoriels

Les dispositifs médicaux évoluent, passant de systèmes autonomes à des plateformes connectées bénéficiant de mises à jour continues et de diagnostics à distance. Cette évolution renforce les exigences en matière de sécurité et de cybersécurité, dans un contexte caractérisé par des contraintes matérielles, des cycles de vie prolongés et une réglementation stricte. S'appuyant sur les bonnes pratiques intersectorielles et sur l'expertise de Vector dans le domaine des logiciels embarqués critiques pour la sécurité, cet article met l'accent sur les mesures que les ingénieurs peuvent mettre en œuvre dès aujourd'hui.
Principaux points sensibles
- Cycles de vie longs avec des mises à jour fréquentes : assurez des mises à jour sécurisées et sûres pendant plus de 10 ans tout en conservant les preuves de conformité.
- Plateformes hétérogènes et SOUP : la coexistence de chaînes d’outils diverses et de code tiers complique la mise en place de contrôles cohérents en matière de sûreté et de sécurité.
- Connectivité et interopérabilité : nouvelles surfaces d’attaque et complexité de la certification (par exemple, les systèmes informatiques hospitaliers et la norme CEI 62443).
- Compétences et outils : grande complexité en matière de cryptographie, de pipelines de mises à jour sécurisées et d’architectures redondantes ; les outils doivent faciliter la mise en œuvre d’une sécurité « correcte par défaut ».
Normes relatives aux technologies médicales
- IEC 62304 : Cycle de vie des logiciels, classification, vérification, maintenance et résolution des problèmes.
- ISO 14971 : Gestion des risques avec identification claire des dangers, mesures de contrôle des risques et risque résiduel.
- Cadres de référence : CEI 60601-1 (sécurité de base/performances essentielles), CEI/TR 60601-4-5, qui renvoie à la norme CEI 62443 (sécurité des systèmes de contrôle et d’automatisation industriels), ainsi que des recommandations relatives à la liste des composants logiciels (SBOM) et à la divulgation coordonnée.
Conseils pratiques pour assurer votre sécurité
Synchronisation (lock-stepping)
Dans le « lock-stepping », deux cœurs de processeur identiques exécutent les mêmes instructions de manière synchronisée. Un comparateur matériel vérifie en permanence les registres et les résultats des deux cœurs. Dès qu’une divergence est détectée, une erreur est signalée et le système peut passer à un état sécurisé. Cela contribue à la sécurité de la manière suivante :
- Détection des erreurs : architecture 2oo2 (deux sur deux) permettant de détecter les divergences.
- Temps de réaction plus court en cas d’erreur : la comparaison continue permet un comportement rapide de « fail-silent » (passage en mode silencieux) ou de repli.
- Prise en charge du dossier de sécurité : associée à une mémoire protégée par ECC, à un chien de garde, à une surveillance de l’horloge et de l’alimentation, ainsi qu’à une protection de bout en bout, elle établit une chaîne fermée de détection des erreurs couvrant les cœurs de calcul, la mémoire et les communications.
Environnement d'exécution sécurisé
Partitionnement du système, pris en charge par le matériel, en un « monde sécurisé/de confiance » et un « monde normal ». Le monde sécurisé dispose d’un accès isolé à la mémoire, aux périphériques et aux éléments cryptographiques ; le monde normal en est strictement séparé.
- Protection des éléments liés à la sécurité : les exigences de sécurité, les étalonnages, les configurations, les machines à états de sécurité et les compteurs d’erreurs peuvent résider dans le monde sécurisé et sont protégés contre toute modification ou manipulation involontaire.
- Absence d’interférence : l’isolation matérielle (monde sécurisé vs monde normal) complète le partitionnement (MPU/MMU) et réduit le risque qu’un logiciel défectueux ou non sécurisé affecte les domaines liés à la sécurité.
- Protection des clés et des communications : la gestion sécurisée des clés ainsi que la signature et le CMAC pour les configurations, les journaux et les messages critiques pour la sécurité améliorent la détection de la corruption des données et des modifications non autorisées.
Mises à jour sécurisées
Une mise à jour sécurisée est une mise à jour logicielle protégée contre toute altération tout au long de son cycle de vie, provenant exclusivement de sources autorisées et pouvant être appliquée sans compromettre la sécurité ni les fonctionnalités. Ses composants essentiels sont les suivants :
- Authenticité : les mises à jour sont signées numériquement (signature de code) ; seuls les paquets provenant de sources de confiance sont acceptés.
- Intégrité : des contrôles de hachage garantissent que le contenu reste inchangé.
- Autorisation et accès : la gestion des rôles et des droits garantit que seuls les services ou utilisateurs autorisés peuvent lancer des mises à jour.
- Confidentialité et transport sécurisé : téléchargement via des canaux sécurisés (par exemple TLS/mTLS), protection contre les attaques de type « man-in-the-middle ».
Communication sécurisée
Protection contre les attaques malveillantes ou accidentelles provenant de l'extérieur ou de l'intérieur : confidentialité, intégrité, authentification, protection contre la relecture.
- Services de cryptographie robustes avec assistance matérielle.
- Les messages transmis sont accompagnés d’informations d’authentification (par exemple, un MAC) et de valeurs de fraîcheur.
- Utilisation de protocoles de chiffrement tels que TLS.
Communication sécurisée
Garantir une communication sécurisée au sein de l'unité de commande et entre les unités de commande. Pour la communication externe, cela est rendu possible grâce à :
- un contrôle de redondance cyclique (CRC) sur les données, un identifiant de données et un compteur de séquence. Cela permet de détecter toute altération ou usurpation du signal.
- Un compteur de séquence pour détecter les anomalies dans l'ordre des messages ainsi que les messages répétés ou insérés.
- Un temporisateur côté récepteur pour réagir en cas de messages perdus ou retardés.
Tests « Shift-Left »
Le « Shift-Left Testing » consiste à intégrer les activités de test et d’assurance qualité le plus tôt possible dans le cycle de vie du logiciel, c’est-à-dire à un stade plus proche de la définition des exigences, de l’architecture et de la mise en œuvre, plutôt qu’à la toute fin. L’objectif est de fournir un retour d’information rapide et de détecter les erreurs dès leur apparition grâce aux pratiques suivantes :
- Des revues précoces des exigences et de l’architecture.
- Analyse statique et directives de codage directement intégrées au flux de travail des développeurs.
- Intégration continue (CI) avec des étapes automatisées de compilation, de test et de contrôle qualité.
- Tests précoces des API et d’intégration.
Enseignements valables dans tous les secteurs
Chez Vector, nous développons depuis de nombreuses années des logiciels embarqués critiques pour la sécurité et fournissons des solutions certifiées en matière de sécurité à des clients du monde entier. Cela inclut non seulement les produits eux-mêmes, mais aussi des processus de développement et de qualification robustes et bien documentés que nous appliquons systématiquement en interne. En bref, nous savons parfaitement à quel point le développement d’applications de sécurité est complexe, laborieux – et en même temps indispensable.
Pourquoi le travail en matière de sécurité est souvent difficile – et n'est pas facultatif :
- Analyse des dangers et des risques
- Concept de sécurité fonctionnelle
- Concept de sécurité technique
- Définition des interfaces matériel-logiciel
- Analyses qualitatives et quantitatives de la sécurité
- Vérification et validation
- Processus de développement et flux de travail adaptés au marché cible
Toutes ces activités sont indispensables — et elles sont souvent arides, minutieuses et exigeantes. Personne ne les effectue « pour le plaisir ». Mais les sous-estimer risque d’entraîner des itérations coûteuses par la suite, tant au niveau de l’architecture que de la mise en œuvre et de la certification. C’est précisément là que nos outils et nos produits apportent leur aide : ils réduisent la complexité, standardisent les étapes et rendent les aspects les plus difficiles gérables.
Exemple concret : la sécurité dans les systèmes embarqués multicœurs est aujourd’hui la norme et représente ici un défi particulier :
- les cœurs doivent fonctionner de manière cohérente — de façon déterministe, reproductible et sans effets secondaires.
- Les accès à la mémoire ne doivent pas cibler les mauvaises ressources : pas de pointeurs invalides, pas d’interférences entre partitions.
- La communication entre les cœurs doit être efficace tout en restant contrôlée et conforme aux exigences de sécurité. Sans logiciel de base adapté, cela exige une discipline rigoureuse en matière d’architecture, de configuration, de tests et de validation.
Comment un logiciel de base facilite considérablement le développement de vos systèmes de sécurité :
- Il permet d’éviter toute interférence dans les systèmes mixtes, garantissant ainsi l’exécution sans interférence des composants logiciels liés à la sécurité et non liés à la sécurité sur un même calculateur
- Cela réduit les risques, simplifie la démonstration de l’absence d’interférences et permet de gagner du temps lors de la conception de l’architecture et des tests.
- Les exigences de sécurité supplémentaires peuvent être mappées sur d’autres modules logiciels de base, tels que la communication sûre et sécurisée
- Cela garantit la cohérence et minimise le risque d’erreur.
- Prise en charge des microcontrôleurs multicœurs
- Cela permet une séparation claire des tâches, des ressources et des zones de mémoire entre les différents cœurs.
- Solution efficace pour l’interaction entre les différentes partitions de mémoire et les cœurs de microcontrôleurs
- Cela permet d’empêcher d’emblée tout accès non autorisé et de garantir les performances sans compromettre la sécurité.
- Développé et certifié conformément à des normes et processus reconnus
- Cela réduit vos efforts de qualification et d’audit et renforce la chaîne de traçabilité.
Le résultat : au lieu de créer, de documenter et de maintenir vous-même chaque composant, vous intégrez une infrastructure de base qui garantit d'emblée l'absence d'interférences, le cloisonnement, la sécurité des communications et la coordination multicœur. Vous pouvez ainsi consacrer votre temps d'ingénierie de sécurité aux risques propres à chaque projet, plutôt qu'à l'infrastructure générique.
Qu'est-ce que cela signifie concrètement dans l'exemple du multicœur ?
- Exécution cohérente : le logiciel de base orchestre les tâches et les ressources par cœur de manière à ce que les parties de sécurité et les parties non liées à la sécurité n’interfèrent pas entre elles.
- Protection de la mémoire et des ressources : des partitions claires, des interfaces matériel-logiciel (HSI) bien définies et des chemins d’accès vérifiés empêchent tout accès incorrect à la mémoire.
- Documents justificatifs : les modules et processus établis réduisent l’effort nécessaire à la vérification, à la validation et à l’argumentation du dossier de sécurité, car de nombreuses exigences sont déjà couvertes par la base et peuvent être démontrées de manière réutilisable.
- Analysez vos activités actuelles en matière de sécurité (de l'analyse des risques au dossier de sécurité) afin d'identifier les redondances et les étapes manuelles.
- Définissez des directives d’architecture et de processus qui garantissent l’absence d’interférences et le cloisonnement dès le départ.
- Testez une configuration avec notre logiciel de base sur une unité de contrôle, en particulier pour la séparation des composants et la sécurité des communications.
- Évaluez les effets sur les délais de développement, l’effort de test et la solidité des preuves, puis étendez cette approche à d’autres projets.
Ceux qui structurent leur projet dès le début font deux fois plus d’économies par la suite : moins de retouches, des preuves plus claires, des mises en production plus rapides. Commencez dès maintenant par un projet pilote ciblé et faites passer votre développement de sécurité à un niveau d’efficacité supérieur.

