Brevet FR3164084A1 — publié le 20260102

L’invention concerne un procédé de communication entre une partie critique (11) de sureté haute d’un calculateur (1) et une partie non critique (12) de sureté basse du calculateur (1), le procédé étant mis en œuvre au sein d’un contrôleur (2) intercalé dans le calculateur (1) entre la partie critique (11) et la partie non critique (12), le calculateur (2) étant configuré pour ouvrir ou fermer un flux de données sur un lien critique (22) entre la partie critique (11) et la partie non critique (12). . FIGURE 1 Procédé de contrôle d’une communication entre une partie critique de sécurité haute et une partie non critique de sécurité basse d’un calculateur et contrôleur pour la mise en œuvre d’un tel procédé L’invention concerne un procédé de communication entre des équipements de zones de sécurité différentes. Elle concerne également un dispositif configuré pour mettre en œuvre un tel procédé. ETAT DE LA TECHNIQUE Dans le milieu aéronautique des calculateurs embarquant des fonctions critiques et non critiques cohabitent et doivent pouvoir communiquer entre eux. Il est toutefois nécessaire de s’assurer que le calculateur embarquant des fonctions critiques ne puisse pas être corrompu par des attaques ou des fonctionnements erratiques en provenance du calculateur non critique. Dans le milieu aéronautique où des calculateurs critiques (par exemple DAL - Design Assurance Level A ou B selon la classification indiquant un niveau de fiabilité requis pour les systèmes électroniques embarqués dans les aéronefs) embarquent des fonctions non critiques (DAL D ou E) cette garantie doit être très forte voire absolue notamment vis-à-vis des attaques de Cyber sécurité où la protection des fonctions critiques liées à la sécurité (Safety) des vols est primordiale. Ceci est particulièrement nécessaire pour les calculateurs critiques reliant des appareils de commande de l’aéronef qui doivent offrir un haut niveau de sécurité de très haut niveau surtout pendant les phases de vols. Le document FR3015830 divulgue un dispositif pour contrôler la communication entre deux équipements situés dans zones de sécurité différentes. Un tel dispositif n’est pas satisfaisant car nécessite d’être implémenté dans un boitier/externe et en coupure entre les deux équipements à ségréger. Ceci conduit à une solution volumineuse. L’invention propose une solution de contrôle et donc de coupure des communications entre des zones de sécurité différentes au sein d’un même calculateur. A cet effet, l’invention propose, selon un premier aspect, un procédé de communication entre une partie critique de sureté haute d’un calculateur et une partie non critique de sureté basse du calculateur, le procédé comprenant les étapes suivantes, mises en œuvre au sein d’un contrôleur intercalé dans le calculateur entre la partie critique et la partie non critique, le calculateur étant configuré pour ouvrir ou fermer un flux de données sur un lien critique entre la partie critique et la partie non critique : - réception d’une demande d’ouverture du flux de données depuis la partie critique de manière à autoriser un flux de données entre la partie critique et la partie non critique ; - auto-vérification de l’intégrité du contrôleur ; et si le contrôleur est intègre ; - ouverture du flux de données sur le lien critique ; - réception d’une demande de fermeture du flux de données sur le lien critique depuis la partie critique ; - fermeture du flux de données. L’invention est avantageusement complétée par les caractéristiques suivantes, prises seules ou en une quelconque de leur combinaison techniquement possible. La demande d’ouverture de flux et/ou la demande de fermeture de flux comprend une clé, le procédé comprenant une validation de la demande d’ouverture et/ou de fermeture de flux, la clé étant de préférence double. La validation de la demande d’ouverture et/ou fermeture de flux comprend une comparaison de la clé reçue avec une clé locale stockée dans une mémoire du contrôleur ; la demande d’ouverture et/ou de fermeture de flux étant validée si la clé locale est identique à la clé reçue. Si le contrôleur n’est pas intègre, le flux de données sur le lien critique reste fermé. Si le contrôleur n’est pas intègre, le procédé comprend une étape d’émission d’un message d’alerte vers la partie critique. L’auto-vérification de l’intégrité du contrôleur comprend un calcul d’une empreinte à partir d’un fichier de configuration du contrôleur stocké à l’initialisation du contrôleur et une comparaison de l’empreinte calculée avec une empreinte de test stockée dans une mémoire du contrôleur. L’empreinte est une fonction de hachage du fichier de configuration du contrôleur, l’auto-vérification de l’intégrité du contrôleur comprenant une comparaison de la fonction de hachage calculée à une fonction de hachage du même fichier de configuration calculée et stockée dans une mémoire du contrôleur. La fonction de hachage est une fonction de hachage non-inverse SHA-256. Le contrôleur est un circuit programmable, de préférence un FPGA. La partie non critique est un calculateur qualifié DAL D ou E et dans lequel la partie critique est un calculateur qualifié DAL A, DAL B ou DAL C. L’invention propose selon un deuxième aspect, un contrôleur d’une communication entre une partie critique d’un calculateur et une partie non critique du calculateur, le contrôleur comprenant au moins un processeur configuré pour mettre en œuvre un procédé selon le premier aspect de l’invention. Le procédé permet au contrôleur de couper ou non depuis la partie critique le flux de données, le flux de données venant de la partie non critique. L’invention permet donc de protéger la partie critique d’attaques potentielles provenant de la partie non critique. Avantageusement, le contrôleur met ainsi en œuvre un procédé de communication sécurisé entre des parties d’un calculateur ayant des niveaux de sécurité différents en garantissant que le contrôleur est lui-même intègre en contrôlant l’ouverture et la fermeture du flux de données venant de la partie non critique de manière efficace et sécurisée. Le contrôleur intégré au calculateur facilite son intégration au sein de l’aéronef. De cette façon, l’encombrement est limité. La partie critique réputée seine, car correctement protégée, prend donc la décision d’autoriser le flux de données venant de la partie non critique en accord avec son environnement. La partie critique est le seul maitre sur le lien de communication entre les parties critique et non critique. Seule la partie critique peut initier une transaction sur le lien de communication. De manière avantageuse, l’activation et la désactivation du contrôleur est faite de manière sécurisée via une séquence d’écriture de préférence double clé. Si une mauvaise clé est écrite ou une séquence est incomplète, alors le contrôleur reste en sécurité (pas de communication possible depuis la partie non critique vers la partie critique). Comme la contre mesure implémenté dans le contrôleur repose sur les signaux fournis par la partie critique, l’invention assure l’intégrité de la partie critique pour garantir son fonctionnement. Ceci est particulièrement avantageux dans un système critique multi-DAL, une fonction d’isolation indépendante des autres systèmes étant nécessaire. PRESENTATION DES FIGURES D’autres caractéristiques, buts et avantages de l’invention ressortiront de la description qui suit, qui est purement illustrative et non limitative, et qui doit être lue en regard des dessins annexés sur lesquels : - la FIG. 1 illustre un calculateur, selon un mode de réalisation, comprenant deux parties de niveaux de sécurité différents entre lesquels est intercalé un contrôleur pour contrôler des communications entre les deux parties ; - la FIG. 2 illustre un procédé de contrôle des communications mis en œuvre dans une unité de contrôle selon un mode de réalisation. Sur l’ensemble des figures les éléments similaires portent des références identiques. DESCRIPTION DETAILLEE La FIG. 1 illustre un calculateur 1 comprenant deux parties 11, 12. Une partie 11 de niveau de sécurité haute ou partie critique et une partie 12 de niveau de sécurité basse ou partie non critique. On précise ici qu’il n’y a bien qu’un unique calculateur 1. On entend par niveau de sécurité, un ensemble de règles et contraintes de fonctionnement imposées à la partie pour s’assurer que seuls des flux de données autorisés peuvent transiter par la partie considérée. On entend par calculateur un composant comprenant plusieurs processeurs ou plusieurs microcontrôleurs permettant d’exécuter des instructions et comprenant une ou plusieurs mémoires volatiles ou non. On entend par partie critique ou non critique du calculateur des parties de calculateur indépendantes destinées à fonctionner avec des niveaux de suretés différents, ces parties étant allouées dans le calculateur. De préférence, et selon des niveaux de sureté de fonctionnement, les parties sont qualifiées selon la norme DAL EUROCAE ED-12 (Europe) ou RTCA DO-178C selon plusieurs niveaux de criticité (du plus critique au moins critique) : - DAL A : il s’agit d’un niveau de criticité le plus strict. Une défaillance d’une partie DAL A peut entrainer des conséquences catastrophiques sur la sécurité de l’aéronef ; - DAL B : une défaillance d’une partie DAL B peut entrainer des conséquences graves sur la sécurité de l’aéronef mais pas nécessairement catastrophiques ; - DAL C : une défaillance d’une partie DAL C peut entrainer des conséquences sur la sécurité de l’aéronef mais ces conséquences sont limitées ; - DAL D : une défaillance d’une partie DAL D n’est pas susceptible d’avoir un impact significatif sur la sécurité de l’aéronef ; - DAL E : ce niveau est utilisé pour des fonctions ne contribuant pas à la sécurité de l’aéronef. Ces niveaux de criticité DAL permettent d’évaluer l’impact potentiel des pannes dans les systèmes avioniques. Les niveaux DAL A, B et C sont les plus couramment utilisés dans les systèmes critiques pour la sureté des vols tels que le pilotage, la navigation et les systèmes de commande de vol. La partie critique est par exemple qualifiée DAL A ou B ou C et la partie non critique est par exemple qualifiée DAL D (ou E), le calculateur étant ainsi un calculateur multi-DAL pour fonctionner avec des systèmes où différents niveaux de sureté sont requis. Entre la partie critique 11 et la partie non critique 12 est intercalé un contrôleur 2 configuré pour contrôler des communications entre la partie critique 11 et la partie non critique 12. En particulier, le contrôleur 2 permet de couper ou non un flux de données venant de la partie non critique à destination de la partie critique. De manière avantageuse, le flux de données transite par un lien non critique 21 pour les données venant de la partie critique à destination de la partie non critique et par un lien 22 critique pour les données venant de la partie non critique à destination de la partie critique. Un lien de communication est par exemple défini sur un bus de communication reliant la partie critique 11 à la partie non critique 12. On relèvera que le lien non critique 21 permet toujours de laisser passer un flux de données tandis que le lien critique 22 est géré par le contrôleur 2 pour fermer le flux de données ou non selon un procédé de de communication entre une partie critique 11 de sureté haute d’un calculateur 1 et une partie non critique 12 de sureté basse du calculateur 1 décrit en relation avec la FIG. 2 (voir ci-après). Le contrôleur 2 est de préférence un circuit programmable tel qu’un FPGA (Field Gate Programmable Array). L’utilisation d’un FPGA pour implémenter le procédé de contrôle permet d’atteindre un niveau de cyber sécurité extrêmement élevé (SAL 3, pour Security Assurance Level – 3 selon la terminologie anglosaxonne). On précise que le niveau d’assurance sécurité est définie selon la norme l’EUROCAE ED-203A / RTCA DO-356A et propose quatre niveaux allant du SAL0 (le plus faible) à SAL3 (le plus élevé). SAL0 : Aucun effet protecteur. Ce niveau est limité à l'évaluation initiale des besoins de protection et s'applique aux systèmes et articles auxquels aucun SAL supérieur n'est attribué. SAL1 : Assurance de sécurité minimale pour les mesures de sécurité : Approprié pour une protection supplémentaire ou un renforcement/résilience. Il offre un niveau de confiance minimum dans les mesures de sécurité mises en œuvre. SAL2 : Confiance essentielle dans le développement et l'exploitation sécurisés des mesures de sécurité : Ce niveau assure que les mesures de sécurité sont développées et exploitées de manière sécurisée, offrant une confiance essentielle dans leur efficacité. SAL3 : Confiance renforcée dans le développement et l’exploitation sécurisés des mesures de sécurité. Ce niveau offre une confiance renforcée dans le développement et l’exploitation sécurisés des mesures de sécurité, assurant ainsi une protection plus rigoureuse contre les menaces. Ces niveaux de SAL permettent de catégoriser et de différencier les exigences de sécurité en fonction de l'importance et de la criticité des systèmes avioniques, garantissant ainsi que les mesures de sécurité appropriées sont appliquées en fonction des besoins spécifiques. Le calculateur 1 est, de préférence, équivalent à 2 MCU (379 mm x 436 mm x 60,80 mm). Le contrôleur 2 est aussi de petite taille et est un composant du calculateur de 30mm x 30mm. En relation avec la FIG. 2 , au démarrage (étape E0) du contrôleur 2, celui-ci s’initialise et ferme par défaut le flux de données entre la partie non critique 12 et la partie critique 11 (étape E1). Le lien 22 critique est alors coupé. En outre, au démarrage (étape E0) du contrôleur 2, lors de son initialisation, un calcul d’intégrité du contrôleur est effectué par un module de ce contrôleur. Ce calcul comprend le calcul d’une empreinte sur un fichier, de préférence binaire, de configuration chargé à l’initialisation du contrôleur 2 et la comparaison de l’empreinte obtenue à une empreinte de test qui est préalablement chargée dans une mémoire non volatile du contrôleur 2 lors de son chargement en usine. L’empreinte est par exemple une fonction de hachage (par exemple une fonction de hachage non inverse SHA-256) sur le fichier de configuration. Un tel fichier de configuration contient toutes les instructions pour que le contrôleur 1 implémente le procédé ici décrit. Si l’empreinte calculée n’est pas identique à l’empreinte de test, le calculateur 2 ne démarre pas. Lorsque le contrôleur est un FPGA, par exemple, celui-ci calcule une fonction de hachage (par exemple une fonction de hachage non-inverse SHA-256) du fichier de configuration (en anglais bitstream) du FPGA chargé à l’initialisation du FPGA. La fonction de hachage calculée est alors comparée à la fonction de hachage du fichier de configuration stocké dans une mémoire dédié non volatile du FGPA lors de la configuration en usine du FPGA. La fonction de hachage est en particulier calculée par une IP du FPGA prévue à cet effet. Ensuite, le contrôleur 2 est en attente d’une demande d’ouverture du flux de données (étape E2) issue de la partie critique 11. Une demande d’ouverture du flux de données sur le lien critique 22 est émise depuis la partie critique 11 vers le contrôleur 2 (étape E3). Cette demande d’ouverture est par exemple une séquence d’écriture (c’est-à-dire un message envoyé par la partie critique 11 et lu par le contrôleur 2) à double clé. Cette clé reçue par le contrôleur 2 est comparée à une séquence 13 à double clé stockée dans une mémoire du contrôleur (étape E4). La taille de la clé est dépendante du système et du niveau de sécurité escompté. Plus le niveau de sécurité est élevé, plus la taille de la clé est élevée. Par exemple, pour un niveau de sécurité SAL0 une clé d’une longueur minimale de 8 bits est nécessaire, alors que pour un niveau de sécurité SAL3, une clé d’une longueur minimale de 512 bits est plus adaptée. S’il s’avère que la comparaison montre que la clé reçue est identique bit à bit à la clé stockée alors le contrôleur 2 valide la demande d’ouverture du flux de données (étape E5). Une vérification de l’intégrité du contrôleur 2 est alors effectuée (étape E6) en en effectuant un calcul d’intégrité (étape E7). Ce calcul est similaire à celui effectué au démarrage du contrôleur 2 décrit plus haut. Si l’empreinte calculée est identique à l’empreinte de test alors une alerte intégrité est levée et se matérialise par l’envoi d’un drapeau d’intégrité (en anglais flag) positionné à 0 sinon le drapeau d’intégrité se positionne à 1 (étape E8). Lorsque le drapeau d’intégrité est positionné à 1 alors le contrôleur / FPGA envoie un message d’alerte à la partie critique (étape E9). La partie critique 11 reçoit, quant à elle, ce message d’alerte (étape E10). Suite à la réception de cette alerte, la partie critique 11 peut décider d’appliquer des sanctions (étape E15) qui sont différentes en fonction de son niveau de sureté et de cybersécurité, par exemple, si on est en vol ou au sol, afin de garantir la sureté et la cybersécurité le flux de données reste fermé (retour à l’étape E1). Mais d’autres sanctions possibles peuvent être appliquées selon le niveau de sureté et de cybersécurité et la situation de l’aéronef. Lorsque le drapeau d’intégrité est positionné à 0 alors le contrôleur / FPGA commande l’ouverture du flux de données (étape E11) pour autoriser un flux de données depuis la partie non critique 12 vers la partie critique 11 sur le lien critique 22. Le contrôleur 2 est alors en attente d’une demande de fermeture du flux de données (étape E12). Lorsqu’il reçoit une demande de fermeture du flux de données (étape E13) issue de la partie critique 11 alors il met fin au processus qui se réinitialise par une fermeture du flux de données en retournant à l’étape E1. Comme pour la demande d’ouverture, la demande de fermeture consiste en l’émission (étape E13) d’une séquence d’écriture double clé. Cette clé reçue par le contrôleur 2 est comparée à une séquence 14 à double clé stockée dans une mémoire du contrôleur (étape E14). Procédé de communication entre une partie critique (11) de sureté haute d’un calculateur (1) et une partie non critique (12) de sureté basse du calculateur (1), le procédé comprenant les étapes suivantes, mises en œuvre au sein d’un contrôleur (2) intercalé dans le calculateur (1) entre la partie critique (11) et la partie non critique (12), le calculateur (2) étant configuré pour ouvrir ou fermer un flux de données sur un lien critique (22) entre la partie critique (11) et la partie non critique (12) : - réception (E2) d’une demande d’ouverture du flux de données (E3) depuis la partie critique (11) de manière à autoriser un flux de données entre la partie critique et la partie non critique ; - auto-vérification (E6) de l’intégrité du contrôleur ; et si le contrôleur est intègre ; - ouverture (E11) du flux de données sur le lien critique (21) ; - réception (E12) d’une demande de fermeture du flux de données (E13) sur le lien critique (21) depuis la partie critique (11) ; - fermeture (E1) du flux de données. Procédé selon la revendication 1, dans lequel la demande (E3) d’ouverture de flux et/ou la demande (E13) de fermeture de flux comprend une clé, le procédé comprenant une validation (E2, E12) de la demande d’ouverture et/ou de fermeture de flux, la clé étant de préférence double. Procédé selon la revendication 2, dans lequel la validation (E2, E12) de la demande d’ouverture et/ou fermeture de flux comprend une comparaison (E4, E14) de la clé reçue avec une clé locale stockée dans une mémoire du contrôleur (2) ; la demande d’ouverture et/ou de fermeture de flux étant validée si la clé locale est identique à la clé reçue. Procédé selon l’une des revendications précédentes, dans lequel si le contrôleur (2) n’est pas intègre, le flux de données sur le lien critique reste fermé (E1). Procédé selon l’une des revendications précédentes, dans lequel si le contrôleur (2) n’est pas intègre, le procédé comprend une étape d’émission (E9) d’un message d’alerte vers la partie critique (11). Procédé selon l’une des revendications précédentes, dans lequel l’auto-vérification (E6) de l’intégrité du contrôleur (2) comprend un calcul (E7) d’une empreinte à partir d’un fichier de configuration du contrôleur (2) stocké à l’initialisation du contrôleur (2) et une comparaison de l’empreinte calculée avec une empreinte de test stockée dans une mémoire du contrôleur (2). Procédé selon la revendication 6, dans lequel l’empreinte est une fonction de hachage du fichier de configuration du contrôleur (2), l’auto-vérification de l’intégrité du contrôleur comprenant une comparaison de la fonction de hachage calculée à une fonction de hachage du même fichier de configuration calculée et stockée dans une mémoire du contrôleur. Procédé selon la revendication 7, dans lequel la fonction de hachage est une fonction de hachage non-inverse SHA-256. Procédé selon l’une des revendications précédentes, dans lequel le contrôleur (2) est un circuit programmable, de préférence un FPGA. Procédé selon l’une des revendications précédentes, dans lequel la partie non critique (12) est un calculateur qualifié DAL D ou E et dans lequel la partie critique (11) est un calculateur qualifié DAL A, DAL B ou DAL C. Contrôleur (2) d’une communication entre une partie critique (11) d’un calculateur (1) et une partie non critique (12) du calculateur (1), le contrôleur (2) comprenant au moins un processeur configuré pour mettre en œuvre un procédé selon l’une des revendications précédentes.