Brevet FR3131644A1 — publié le 20230707

Système et procédé de surveil l ance du fonctionnement d’un calculateur L’invention concerne un système de surveillance (40) du fonctionnement d’un calculateur (10) comportant : - des blocs matériels (36) comportant plusieurs cœurs (12), - un ensemble (38) d’unités d’ordonnancement des tâches (22) propre à ordonner l’exécution d’une tâche en lui attribuant un identifiant et à mémoriser l’identifiant, le système de surveillance (40) comportant : - une unité de collecte (44) propre à compter le nombre de sollicitations de chaque bloc matériel (36) lors de la réalisation d’une tâche, à lire l’identifiant de la tâche réalisée dans une première unité de mémorisation (42), à former une association entre une sollicitation avec l’identifiant correspondant et à mémoriser chaque association formée sur une deuxième unité de mémorisation, et - une unité de surveillance (46) propre à déterminer l’état du fonctionnement du calculateur (10) en utilisant les associations mémorisées. Figure pour l'abrégé : figure 1 Système et procédé de surveillance du fonctionnement d’un calculateur La présente invention concerne un système de surveillance du fonctionnement d’un calculateur. La présente invention porte aussi sur un procédé de surveillance du fonctionnement d’un calculateur. Le domaine des calculateurs embarqués critiques fiables est confronté à des problématiques de protection des systèmes utilisant les calculateurs embarqués (et éventuellement les utilisateurs de ces systèmes) en cas de défaillance ou de panne des calculateurs (problématique de sûreté de fonctionnement) mais aussi de résistance aux attaques malveillantes (cybersécurité). Pour répondre à ces problématiques, il est souhaitable que les calculateurs embarqués répondent à des contraintes exprimées sous la forme de propriétés à garantir, telles que la confidentialité, l’intégrité, ou la disponibilité dans le domaine de la sécurité, ou bien la fiabilité, le comportement temps-réel, ou la traçabilité dans le domaine de la sûreté de fonctionnement. Une bonne partie de la certification de ces calculateurs critiques consiste donc à garantir, démontrer et tester ces propriétés, ce qui est rendu possible par un ensemble de systèmes de surveillance (souvent désignés par le terme anglais correspondant de « monitoring ») qui permettent à la fois de concevoir des systèmes sûrs en amont, et d’observer les déviations générées par les cyber-attaques. De tels systèmes de surveillance comprennent notamment les systèmes de détection d'intrusion (plus souvent nommés IDS, abréviation qui renvoie à la dénomination anglaise correspondante de « Intrusion Detection System ») exploitant déjà les informations de surveillance du fonctionnement des logiciels pour détecter des cyberattaques. En particulier, les systèmes dits HIDS sont également connus. Dans l’appellation précédente, le H renvoie à la dénomination anglaise correspondante de « Host », c’est-à-dire « hôte » et IDS à l’abréviation précitée. Les systèmes HIDS se focalisent sur un ordinateur, au niveau de son système d'exploitation. Les systèmes HIDS cherchent à détecter des comportements anormaux, en surveillant les processus en cours d'exécution, les allocations de mémoire, les utilisateurs connectés et autres. Une alerte est générée quand une des grandeurs surveillées par le système HIDS considéré s'éloigne d'une norme prédéfinie. Par ailleurs, dans le domaine de la sûreté de fonctionnement et dans le contexte de l’utilisation d’architectures matérielles multicœurs, il est aussi connu d’utiliser des systèmes pour garantir un niveau suffisant de ségrégation entre les logiciels ayant des ressources matérielles partagées. D’une part, sont utilisés des systèmes de contrôle exploitant généralement un système de fenêtres temporelles et prévenant l’utilisation matérielle des ressources par les applications hors des fenêtres assignées à cette application, garantissant ainsi un strict partitionnement et un comportement temporel prévisible au prix d’une baisse des performances. D’autre part, sont utilisés des systèmes de régulation, plus souples mais offrant moins de garanties strictes qui surveillent en temps réel l’utilisation des ressources matérielles, et sont réactifs uniquement en cas d’engorgement sur le chemin de ces ressources. Toutefois, ces systèmes ne permettent pas de détecter les attaques exploitant les vulnérabilités matérielles au niveau du processeur, comme l’attaque Spectre, l’attaque Meltdown ou l’attaque Rowhammer. Il existe donc un besoin pour un système de surveillance du fonctionnement d’un calculateur assurant une meilleure sécurité au calculateur. À cet effet, la description décrit un système de surveillance du fonctionnement d’un calculateur, le calculateur comportant des blocs matériels, les blocs matériels comportant plusieurs cœurs, le calculateur comprenant également un ensemble d’unités d’ordonnancement des tâches, l’ensemble étant propre à ordonner l’exécution d’une tâche en lui attribuant un identifiant et à mémoriser l’identifiant sur une première unité de mémorisation. Le système de surveillance comporte une unité de collecte propre à compter le nombre de sollicitations de chaque bloc matériel lors de la réalisation d’une tâche, l’unité de collecte étant également propre à lire l’identifiant de la tâche réalisée dans la première unité de mémorisation, l’unité de collecte étant également propre à former une association entre une sollicitation avec l’identifiant correspondant et à mémoriser chaque association formée sur une deuxième unité de mémorisation. Le système de surveillance comporte aussi une unité de surveillance propre à déterminer l’état du fonctionnement du calculateur en utilisant les associations mémorisées. Selon des modes de réalisation particuliers, le système de surveillance présente une ou plusieurs des caractéristiques suivantes, prise(s) isolément ou selon toutes les combinaisons techniquement possibles : - un bloc matériel est une mémoire principale partagée par les cœurs, l’unité de mémorisation faisant partie de la mémoire principale. - un bloc matériel est une unité de support de débogage partagée par les cœurs, l’unité de mémorisation faisant partie de l’unité de support de débogage. - l’unité de mémorisation est une mémoire spécifique à un cœur. - chaque cœur comporte une mémoire étroitement couplée, la mémoire spécifique à un cœur étant la mémoire étroitement couplée. - chaque cœur comporte une unité de gestion mémoire, la mémoire spécifique à un cœur étant située dans l’unité de gestion de mémoire. - chaque cœur comporte une unité de mesure de la performance, la mémoire spécifique à un cœur étant contenue dans l’unité de mesure de la performance. - chaque cœur comporte une unité de mesure de la performance, l’unité de collecte étant formée par l’ensemble des unités de mesure de la performance. - la première unité de mémorisation est distincte de la deuxième unité de mémorisation. La description décrit aussi un procédé de surveillance du fonctionnement d’un calculateur, le calculateur comportant des blocs matériels, les blocs matériels comportant plusieurs cœurs, le calculateur comportant également un ensemble d’unités d’ordonnancement des tâches, l’ensemble étant propre à ordonner l’exécution d’une tâche en lui attribuant un identifiant et à mémoriser l’identifiant sur une première unité de mémorisation, le procédé étant mis en œuvre par un système de surveillance comportant une unité de collecte et une unité de surveillance, le procédé comportant une étape de compte du nombre de sollicitations de chaque bloc matériel lors de la réalisation d’une tâche, une étape de lecture de l’identifiant de la tâche réalisée dans la première unité de mémorisation, une étape de formation d’une association entre une sollicitation avec l’identifiant correspondant et mémorisation de chaque association formée sur une deuxième unité de mémorisation, et une étape de détermination de l’état du fonctionnement du calculateur en utilisant les associations mémorisées. Des caractéristiques et avantages de l’invention apparaîtront à la lecture de la description qui va suivre, donnée uniquement à titre d’exemple non limitatif, et faite en référence aux dessins annexés, sur lesquels : - la est une représentation schématique d’un exemple de calculateur, - la est une représentation schématique des processus mis en œuvre par le calculateur, et - la est une représentation schématique d’un autre exemple de calculateur. Un calculateur 10 est représenté schématiquement à la . Le calculateur 10 est, par exemple, un calculateur embarqué, notamment un calculateur critique. Un tel calculateur 10 est utilisable dans un avion, dans une charge utile ou une plate-forme de satellite ou des systèmes médicaux implantés. Selon l’exemple décrit, le calculateur 10 est un calculateur multi-cœurs. Le calculateur 10 comporte des cœurs 12, une interconnexion 14, une mémoire principale 16 et une unité de support de débogage 18. Un cœur 12 est un ensemble de circuits capables d’exécuter des programmes de façon autonome. Seuls deux cœurs 12 sont représentés sur la pour simplifier, sachant que le nombre de cœurs 12 est possiblement beaucoup plus important. Chaque cœur 12 comporte une unité de calcul 20 comprenant une unité d’ordonnancement 22, des mémoires caches 26, une mémoire étroitement couplée 28, une unité de gestion mémoire 30 et une unité de mesure de la performance 34. L’unité de calcul 20 est l’unité qui effectue les différentes tâches. Un exemple de fonctionnement de l’unité de calcul 20 sur le plan logiciel est illustré sur la . Dans cette figure, un hyperviseur HYP met en œuvre deux systèmes d’exploitation OS1 et OS2. Ils comportent tous une unité d’ordonnancement 22. Chacun de ces systèmes d’exploitation OS1 et OS2 mettent en œuvre à leur tour deux processus respectifs. Le premier système d’exploitation OS1 met en œuvre un premier processus P1 et un deuxième processus P2 tandis que le deuxième système d’exploitation OS2 met en œuvre un troisième processus P3 et un quatrième processus P4. Chaque processus P1, P2, P3 ou P4 correspond à un ensemble de plusieurs tâches. La mise en œuvre de ces tâches est gérée par l’unité d’ordonnancement 22. L’ensemble des unités d’ordonnancement 22 forme un ensemble 38 qui est propre à ordonner l’exécution d’une tâche en lui attribuant un identifiant et à mémoriser l’identifiant sur une unité de mémorisation. Par définition, une mémoire cache est une mémoire qui enregistre temporairement des copies de données provenant d'une source, afin de diminuer le temps d'un accès ultérieur (en lecture) d'un matériel informatique (en général, un processeur) à ces données. Dans l’exemple proposé, le cœur comporte plusieurs mémoires caches 26 représentées sous forme d’un seul bloc dans la . À titre d’exemple, il est classique de distinguer entre une mémoire cache mémorisant du code et une mémoire cache mémorisant des données. Une mémoire étroitement couplée 28 est une mémoire propre à mémoriser explicitement des instructions ou des données privées d’un cœur 12, avec des temps d’accès comparables à la mémoire cache 26 mais sans générer de transactions implicites sur l’interconnexion 14. Une telle mémoire est plus souvent désignée par l’abréviation TCM renvoyant à la dénomination anglaise correspondante de « Tightly Coupled Memory ». L’unité de gestion de mémoire 30 sert à contrôler les accès mémoire. L’unité de gestion de mémoire 30 est plus souvent désignée par l’abréviation MMU renvoyant à la dénomination anglaise correspondante de « Memory Management U nit ». L’unité de mesure de la performance 34 est propre à compter le nombre de sollicitations de chaque élément du cœur 12 lors de la réalisation d’une tâche par l’unité de calcul 20. Une telle unité de mesure de la performance 34 est souvent désignée par l’acronyme PMU qui renvoie à la dénomination anglaise de « Performance Monitoring Unit ». Selon les modes de réalisation, le cœur 12 qui vient d’être décrit présente d’autres éléments et/ou ne comporte pas l’ensemble des blocs précédents. À titre d’exemple, le cœur 12 peut comporter un contrôleur d’interruption (parfois appelée bloc IC, l’abréviation IC renvoyant à la dénomination anglaise de « Interrupt C ontroller »). Comme son nom l’indique, le contrôleur d’interruption gère les interruptions. L’interconnexion 14 sert à assurer l’interconnexion entre les différents éléments des cœurs 12 et les éléments partagés comme la mémoire principale 16. Selon l’exemple décrit, l’interconnexion est une interconnexion NoC car il est supposé que les cœurs 12 font partie de la même puce. L’acronyme NoC renvoie à la dénomination anglaise de « Network on Chip » qui signifie littéralement « réseau sur une puce ». La mémoire principale 16 est propre à mémoriser des données partagées entre les cœurs 12. Étant de plus grande capacité que les mémoires fortement couplées 28, la mémoire principale 16 peut stocker des données volumineuses. Elle permet également l’échange de données entre cœurs 12. L’unité de support de débogage 18 est une unité propre à observer la bonne exécution du logiciel sur les différents éléments du calculateur 10 afin de mettre au point ce logiciel. L’unité de support de débogage 18 est plus souvent dénommée sous l’appellation anglaise de « Debug Support Unit ». Le calculateur 10 comporte ainsi un ensemble de blocs matériels 36, l’ensemble 38, un système de surveillance 40 et une unité de mémorisation 42. Un bloc matériel 36 est un composant physique apte à effectuer des tâches plus ou moins complexes. Certains blocs matériels 36 ont déjà été décrits précédemment. Par exemple, les éléments du cœurs 12 ou la mémoire principale 16 sont des blocs matériels 36. En outre, dans la , il apparaît que l’unité de mémorisation 42 est contenue dans la mémoire principale 16. D’autres implémentations possibles sont envisageables comme allouer une petite partie de la mémoire 16 pour la mémorisation des identifiants de tâche ou mémoriser les identifiants de tâche dans l’unité de mesure de la performance 34 ou dans la mémoire étroitement couplée 28. Le système de surveillance 40 est propre à surveiller le fonctionnement du calculateur 10. Le système de surveillance 40 est ainsi adapté pour mettre en œuvre un procédé de surveillance du fonctionnement du calculateur 10. Le système de surveillance 40 comporte une unité de collecte 44 et une unité de surveillance 46. L’unité de collecte 44 est propre à compter le nombre de sollicitations de chaque bloc matériel 36 lors de la réalisation d’une tâche. Il est à noter que le terme de « tâche » est ici utilisé de manière générique, il peut s’agit de tout ou partie des niveaux suivants : un thread, un processus, une partition, une machine virtuelle, une co-routine utilisateur ou une requête d’interruption. L’unité de collecte 44 est également propre à lire l’identifiant de la tâche réalisée dans l’unité de mémorisation 42. L’unité de collecte 44 est également propre à former une association entre une sollicitation avec l’identifiant de tâche correspondant. L’unité de collecte 44 est aussi propre à mémoriser chaque association formée. Dans le cas de la , l’unité de collecte 44 est également formée par les unités de mesures de performance 34. Cette interaction est montrée par une ligne en pointillés sur la . L’unité de surveillance 46 est propre à déterminer l’état du fonctionnement en utilisant les associations mémorisées. Le fonctionnement du système de surveillance 46 est maintenant décrit en référence à un exemple de mise en œuvre d’un procédé de surveillance du fonctionnement du calculateur 10, le procédé de surveillance comportant plusieurs étapes qui sont explicitées dans ce qui suit. L’unité d’ordonnancement 22 ordonne l’exécution d’une première tâche en lui attribuant un identifiant. L’identifiant est donc un identifiant de tâche en ce sens qu’il est spécifique de la tâche qu’il identifie. Dans la suite de la présente description, l’identifiant de la première tâche est appelé premier identifiant. L’unité d’ordonnancement 22 mémorise ensuite le premier identifiant sur l’unité de mémorisation 42, en l’occurrence dans la mémoire principale 16. La première tâche se met alors en œuvre. Une telle mise en œuvre implique la sollicitation de blocs matériels 36. Les unités de mesure de performance 34 comptent chacune de ces sollicitations pour chaque cœur 12. Pour la clarté du propos, les sollicitations de la première tâche sont appelées « premières sollicitations matérielles » dans ce qui suit. L’unité de collecte 44 lit simultanément le premier identifiant dans la zone 42 et chacune des premières sollicitations matérielles dans l’unité de mesure de performance 34. L’unité de collecte 44 mémorise l’association du premier identifiant et des premières sollicitations matérielles dans la mémoire principale 16 par exemple. Chacune des étapes précédentes est réitérée pour une deuxième tâche. En utilisant le même formalisme pour dénommer l’identifiant et les sollicitations, cette réitération des étapes peut être décrite comme suit. L’unité d’ordonnancement 22 ordonne l’exécution d’une deuxième tâche en lui attribuant un deuxième identifiant qui est mémorisé sur l’unité de mémorisation 42. Puis, les unités de mesure de performance 34 comptent les deuxièmes sollicitations matérielles et l’unité de collecte 44 les associe au deuxième identifiant. L’unité de collecte 44 mémorise cette association dans la mémoire principale 16. Ces étapes pourront être réitérées pour chaque mise en œuvre de tâches. Il est ainsi constitué une base de données associant les sollicitations matérielles comptées à une tâche spécifique. En utilisant cette base de données, l’unité de surveillance 46 détermine l’état de fonctionnement du calculateur 10. Par exemple, lorsque la sollicitation d’un bloc matériel 36 est trop élevée pour une tâche donnée, cela peut être le signe d’un fonctionnement altéré du calculateur 10. Le système de surveillance 40 disposant des informations de contexte liées à une sollicitation plus élevée d’un bloc matériel 36, cela permet d’assurer une surveillance supplémentaire puisqu’une attaque changeant le nombre d’accès à un bloc matériel 36 est désormais détectable. Le système de surveillance 40 est donc capable de détecter des attaques exploitant les vulnérabilités matérielles au niveau du processeur et générant des sollicitations, comme l’attaque Spectre, l’attaque Meltdown ou l’attaque Rowhammer. De ce fait, le système de surveillance 40 procure une meilleure sécurité au calculateur 10. En outre, le système de surveillance 40 est compatible avec une mise en œuvre en temps réel. Il convient de noter que l’unité de mémorisation 42 peut être différente de la mémoire principale 16 qui pose le problème d’être relativement loin des cœurs 12 et donc de nécessiter des accès relativement longs. Notamment, l’unité de mémorisation 42 peut être située dans l’unité de gestion de mémoire 30. Une telle implémentation n’impacte pas les transactions dans le calculateur 10. Il est également possible d’utiliser l’unité de support de débogage 18, les unités de mesure de la performance 34 ou les mémoires étroitement couplées 28. Enfin, il peut être noté qu’il n’est pas nécessaire que l’identifiant soit mémorisé sur la même unité de mémorisation 42. Par exemple, il peut être avantageux de mémoriser les identifiants dans une mémoire locale d’un cœur 12 alors que l’association serait mémorisée dans une mémoire partagée. Un autre mode de réalisation du calculateur 10 est représenté à la . Les mêmes remarques que pour le calculateur 10 de la s’appliquent également pour celui de la . Aussi, seules les différences sont mises en avant dans ce qui suit. Dans ce cas, l’unité de collecte 44 est propre à récolter les informations issues des unités de mesure de la performance 34. Au contraire du mode de réalisation de la , l’unité de collecte 44 est ici une unité centralisée. Système de surveillance (40) du fonctionnement d’un calculateur (10), le calculateur (10) comportant : - des blocs matériels (36), les blocs matériels (36) comportant plusieurs cœurs (12), - un ensemble (38) d’unités d’ordonnancement des tâches (22), l’ensemble (38) étant propre à ordonner l’exécution d’une tâche en lui attribuant un identifiant et à mémoriser l’identifiant sur une première unité de mémorisation (42), le système de surveillance (40) comportant : - une unité de collecte (44) propre à compter le nombre de sollicitations de chaque bloc matériel (36) lors de la réalisation d’une tâche, l’unité de collecte (44) étant également propre à lire l’identifiant de la tâche réalisée dans la première unité de mémorisation (42), l’unité de collecte (44) étant également propre à former une association entre une sollicitation avec l’identifiant correspondant et à mémoriser chaque association formée sur une deuxième unité de mémorisation, et - une unité de surveillance (46) propre à déterminer l’état du fonctionnement du calculateur (10) en utilisant les associations mémorisées. Système de surveillance selon la revendication 1, dans lequel un bloc matériel (36) est une mémoire principale (16) partagée par les cœurs (12), l’unité de mémorisation (42) faisant partie de la mémoire principale. Système de surveillance selon l’une quelconque des revendications précédentes, dans lequel un bloc matériel (36) est une unité de support de débogage (18) partagée par les cœurs, l’unité de mémorisation (42) faisant partie de l’unité de support de débogage (18). Système de surveillance selon l’une quelconque des revendications précédentes, dans lequel l’unité de mémorisation (42) est une mémoire spécifique à un cœur (12). Système de surveillance selon la revendication 4, dans lequel chaque cœur (12) comporte une mémoire étroitement couplée (28), la mémoire spécifique à un cœur (12) étant la mémoire étroitement couplée (28). Système de surveillance selon la revendication 4 ou 5, dans lequel chaque cœur (12) comporte une unité de gestion mémoire (30), la mémoire spécifique à un cœur (12) étant située dans l’unité de gestion de mémoire (30). Système de surveillance selon l’une quelconque des revendications 4 à 6, dans lequel chaque cœur (12) comporte une unité de mesure de la performance (34), la mémoire spécifique à un cœur (12) étant contenue dans l’unité de mesure de la performance (34). Système de surveillance selon l’une quelconque des revendications 4 à 7, dans lequel chaque cœur (12) comporte une unité de mesure de la performance (34), l’unité de collecte (44) étant formée par l’ensemble des unités de mesure de la performance (34). Système de surveillance selon l’une quelconque des revendications 1 à 8, dans lequel la première unité de mémorisation (42) est distincte de la deuxième unité de mémorisation. Procédé de surveillance du fonctionnement d’un calculateur (10), le calculateur (10) comportant : - des blocs matériels (36), les blocs matériels (36) comportant plusieurs cœurs (12), - un ensemble (38) d’unités d’ordonnancement des tâches (22), l’ensemble (38) étant propre à ordonner l’exécution d’une tâche en lui attribuant un identifiant et à mémoriser l’identifiant sur une première unité de mémorisation (42), le procédé étant mis en œuvre par un système de surveillance (40) comportant une unité de collecte (44) et une unité de surveillance, le procédé comportant les étapes de: - compte du nombre de sollicitations de chaque bloc matériel (36) lors de la réalisation d’une tâche, - lecture de l’identifiant de la tâche réalisée dans la première unité de mémorisation (42), - formation d’une association entre une sollicitation avec l’identifiant correspondant et mémorisation de chaque association formée sur une deuxième unité de mémorisation, et - détermination de l’état du fonctionnement du calculateur (10) en utilisant les associations mémorisées.