Brevet FR3015837A1 — publié le 20150626

Equipement de sécurité de cloisonnement entre des premier et second domaines, comportant un composant de pilote La présente invention concerne un équipement de sécurité de cloisonnement entre des premier et second domaines, comportant : une couche matérielle, comportant un moyen de calcul, un moyen de mémorisation, et des premier et second moyens d'interface avec lesdits premier et second domaines ; une couche de virtualisation de la couche matérielle, comportant un noyau et un hyperviseur ; et une couche applicative comportant : un premier composant d'interface, pour échanger des données avec le premier domaine ; un second composant d'interface, pour échanger des données avec le second domaine ; et un composant de sécurité formant un sas d'échange de données entre les premier et second composants. Dans le domaine de la sécurité des systèmes d'information, le document FR 2008 006839 divulgue un équipement de sécurité du type précité propre à réaliser un cloisonnement entre des premier et second domaines. Avantageusement, un tel équipement de sécurité constitue une passerelle entre un premier domaine présentant un niveau de sécurité « bas » et un second domaine présentant un niveau de sécurité « haut ». La couche applicative de l'équipement de sécurité du document FR 2008 006839 B1 comporte des premier et second composants d'interface et un composant de sécurité. Le premier composant d'interface est dédié à la gestion des échanges de paquets de données avec le premier domaine. Il comporte en particulier les pilotes nécessaires à la communication avec le premier domaine, à travers une première interface d'entrée/sortie de la couche physique de l'équipement de sécurité. Lorsqu'il est exécuté, le premier composant d'interface place les paquets de données reçus du premier domaine, dans un premier espace de stockage d'entrée de la mémoire de. l'équipement de sécurité. Le premier composant d'interface lit les paquets de données d'un premier espace de stockage de sortie de la mémoire et les transmet vers le premier domaine. De manière similaire, le second composant d'interface est dédié à la gestion des échanges de données avec le second domaine. Il comporte en particulier les pilotes nécessaires à la communication avec le second domaine, à travers la seconde interface. Lorsqu'il est exécuté, le second composant d'interface accède à un second espace de stockage de sortie de la mémoire et transmet les paquets lus vers le second domaine. Le second composant d'interface place les paquets reçus du second domaine, dans un second espace de stockage d'entrée. Le composant de sécurité forme un sas dans l'échange des paquets de données entre les premier et second composants d'interface. Lorsqu'il est exécuté, le composant de sécurité lit les paquets de données du premier espace de stockage d'entrée, les traite et place les paquets traités dans le second espace de stockage de sortie. De manière similaire, le composant de sécurité lit les paquets de données du second espace de stockage d'entrée, les traite et place les paquets traités dans le premier espace de stockage de sortie. Un partitionnement spatial (c'est-à-dire le fait que les espaces de stockage d'entrée et de sortie d'un canal de circulation du flux de données d'un domaine à l'autre correspondent à des espaces différents et prédéterminés de la mémoire) et un partitionnement temporel (c'est-à-dire le fait que les composants sont exécutés successivement et séparément les uns des autres par le processeur de l'équipement de sécurité, la durée d'exécution d'un composant étant contraint), assurent le cloisonnement entre les premier et second domaines. Cependant, si le composant de sécurité peut être certifié sur le plan de la sécurité de fonctionnement, il n'en va pas de même des premier et second composants d'interface. En effet, alors que le composant de sécurité est un composant d'application, intégrant uniquement un programme applicatif propre à accéder directement aux ressources matérielles, un composant d'interface est un composant de système d'exploitation intégrant un système d'exploitation (OS en anglais pour « operating system»), tel que le système LINUX, et éventuellement un ou plusieurs programmes applicatifs, qui sont propres à accéder aux ressources matérielles mais uniquement à travers le système d'exploitation. Ainsi, un composant de système d'exploitation est riche, au sens où de nombreuses fonctionnalités sont implémentées par défaut. Le programme applicatif utilise certaines des fonctionnalités disponibles, par simple appel aux fonctions correspondantes. En particulier, un composant d'interface utilise les pilotes de périphériques natifs du système d'exploitation. Or, un système d'exploitation est un programme complexe, qui comporte quelques centaines de milliers de lignes de code. C'est un programme qui évolue régulièrement au fur et à mesure de la mise à disposition de nouvelles versions. Dans le cas du système LINUX, le programme est mis à jour par une communauté dont les membres ne sont pas connus. Il n'est donc pas possible d'évaluer et par conséquent de certifier un système d'exploitation. Par voie de conséquence, il n'est pas possible de certifier un composant de système d'exploitation. Ainsi, à cause du système d'exploitation qu'il renferme, un composant de système d'exploitation et, en particulier, un composant d'interface, présente des failles de sécurité. En exploitant ces failles de sécurité, il est possible de contourner le. cloisonnement réalisé par le composant de sécurité. L'invention a donc pour but de pallier ce problème. A cet effet, l'invention a pour objet un équipement de sécurité du type précité, caractérisé en ce que au moins un composant d'interface parmi les premier et second composants d'interface est associé à un composant supplémentaire de pilote d'interface, le noyau réalisant un partitionnement spatial tel que seul le composant de pilote possède un accès exclusif à un espace de stockage du moyen de mémorisation alloué au moyen d'interface correspondant et le composant de pilote et le composant d'interface échangent des données par l'intermédiaire d'un espace de mémoire partagé du moyen de mémorisation. En dotant le composant de sécurité d'un composant de pilote du type composant d'application et en bridant les ports de sortie du composant d'interface du type composant de système d'exploitation, les failles de sécurité associées au pilotes natifs du système d'exploitation du composant d'interface sont éliminées. Suivant des modes particuliers de réalisation, l'équipement comporte une ou plusieurs des caractéristiques suivantes : le composant d'interface et le composant de pilote associé sont exécutés ensemble dans une même partition temporelle. le composant d'interface et le composant de pilote associé sont exécutés séparément dans deux partitions temporelles. le noyau de la couche de virtualisation est un noyau de séparation. le composant de sécurité réalise un échange de données du type diode, moyen cryptographique, ou filtre. le composant de sécurité réalise un échange de données du type diode entre un espace de stockage d'entrée du côté du premier domaine et un espace de stockage de sortie du côté du second domaine. le premier composant d'interface est associé à un premier composant de pilote et le second composant d'interface est associé à un second composant de pilote. chaque composant de pilote met en oeuvre des applications de service, en particulier de contrôle du flux de données transitant par le composant pilote, ou du moyen d'interface d'entrée/sortie. L'invention sera mieux comprise à la lecture de la description qui va suivre d'un mode de réalisation, donné uniquement à titre d'exemple illustratff et non limitatif. Un équipement de sécurité établit un cloisonnement dans l'échange de paquets de données entre des premier et second domaines. Dans le présent document, le terme de « domaine » est à prendre au sens large : il peut s'agir d'un ou plusieurs autre(s) équipement(s) informatique(s), connecté(s) à l'équipement de sécurité considéré, via une liaison de communication adaptée. Il peut également s'agir d'un programme associé à une partition et exécuté sur l'équipement de sécurité considéré. Cependant, l'invention s'applique à un équipement de sécurité en communication via au moins une interface adaptée avec un autre équipement, constituant un domaine. Dans le mode de réalisation décrit ici en détail, les premier et second domaines sont des réseaux connectés à l'équipement de sécurité par des liaisons de communication respectant le protocole ETHERNET. Cependant, les principes d'architectures décrits ici ne se limitent pas à type particulier de protocole, et de nombreuses variantes de réalisation sont envisageables par l'homme du métier. Le premier domaine présente un niveau de sécurité « bas », plus faible que le niveau de sécurité « haut » du second domaine. Ceci justifie la mise en oeuvre, par le composant de sécurité, d'une politique de sécurité asymétrique entre les paquets de données circulant du premier domaine vers le second domaine et celles circulant du second domaine vers le premier domaine. Dans le mode de réalisation décrit ici en détail, le composant de sécurité possède une fonction de diode, autorisant la transmission de paquets de données d'un émetteur du premier domaine vers un récepteur du second domaine, et interdisant, en fonctionnement nominal, tout échange de paquets de données du second domaine vers le premier domaine. L'équipement de sécurité comporte une couche matérielle, une couche de virtualisation et une couche applicative. La couche matérielle comporte un moyen de calcul, comportant un processeur et un mécanisme matériel de compartimentation de la mémoire, appelé MMU (selon l'acronyme anglais « Memory Management Unit »), et un moyen de mémorisation, comportant une mémoire, qui est une mémoire vive (RAM). La couche matérielle comporte également des moyens d'interface d'entrée/sortie. Par exemple, l'équipement de sécurité comporte une première interface, du type ETHERNET, pour la connexion au premier domaine et une seconde interface, du type EHERNET, pour la connexion au second domaine. La couche physique comporte enfin un bus physique de communication entre les moyens de calcul, de mémorisation et d'interface. La couche de virtualisation permet de virtualiser la couche physique. Elle comporte un noyau et un hyperviseur. De manière connue en soi, le noyau est du type noyau de séparation (aussi dénommé « separation kernel »). Il permet, en s'appuyant sur le MMU, le partitionnement spatial de la mémoire et l'affectation (« mapping » en anglais) à un composant de la couche applicative, d'un espace spécifique de la mémoire vive. De manière également connue en soi, l'hyperviseur assure le partitionnement temporel, en allouant une fraction du temps d'utilisation du moyen de calcul à chaque composant ou groupe de composant de la couche applicative, et ceci conformément à un plan d'ordonnancement défini lors de la configuration de l'équipement de sécurité. La couche applicative comporte une pluralité de composants logiciels. Un premier type de composant logiciel, dit d'application, intègre uniquement un programme applicatif, propre à accéder directement aux ressources matérielles. Un second type de composant logiciel, dit de système d'exploitation, intègre un système d'exploitation, tel que le système LINUX, et éventuellement un ou plusieurs programmes applicatifs Appli, propre à accéder aux ressources matérielles que lui a autorisé l'hyperviseur, uniquement à travers le système d'exploitation: La couche applicative comporte un premier compartiment, comportant un premier composant de pilote et un premier composant d'interface, un composant de sécurité, et un second compartiment, comportant un second composant de pilote et un second composant d'interface. Si les premier et second composants d'interface sont des composants de système d'exploitation, les premier et second composants de pilote et le composant de sécurité sont des composants d'application. Un compartiment est divisé fonctionnellement entre un composant de pilote et un composant d'interface. Grâce au partitionnement spatial effectué par le noyau de séparation, le composant d'interface n'a pas accès à l'espace de la mémoire réservé à l'interface d'entrée/sortie de la couche matérielle. Seul le composant de pilote possède un accès exclusif à l'espace de la mémoire de l'interface d'entrée/sortie de la couche matérielle. Par ailleurs, un canal de communication, a priori bidirectionnel, est défini entre le composant d'interface et le composant de pilote. Ainsi, en communication descendante, une fonction du composant d'interface, appelée par un pilote natif du système d'exploitation de ce composant n'écrit pas une donnée dans l'espace de la mémoire de l'interface d'entrée/sortie, mais dans un espace de mémoire partagé avec le composant de pilote. Celui-ci lit la donnée écrite dans l'espace de mémoire partagé et lance une fonction correspondante pour écrire dans l'espace de la mémoire de l'interface d'entrée/sortie. Une description similaire pourrait être faite en communication montante. Le composant de pilote appelle une fonction nécessitant la lecture d'une donnée écrite dans l'espace de mémoire de l'interface d'entrée/sortie et écrit la donnée correspondant dans l'espace de mémoire partagé avec le composant d'interface. Celui-ci appelle la fonction correspondante du pilote natif et lit la donnée placée dans l'espace de mémoire partagé. Le composant de pilote peut avantageusement, en plus de l'application de pilote, être enrichi d'une application de service, permettant par exemple la maîtrise des opérations de contrôle du périphérique connecté à l'interface considérée, ou encore la maîtrise du profil des flux de données, montant ou descendant, circulant à travers le composant de pilote. Ainsi, le premier compartiment est dédié à l'échange de paquets de données avec le premier domaine. Lorsqu'il est exécuté par le moyen de calcul, le premier compartiment écrit les paquets de données provenant du premier domaine dans un espace de stockage d'entrée de la mémoire de la couche physique. Plus précisément, le premier compartiment comporte un premier composant de pilote et un premier composant d'interface. Le partitionnement spatial assure l'accès du premier composant d'interface à la première interface à travers le composant de pilote uniquement, en utilisant l'espace de mémoire partagé. Un canal de communication exclusif est ainsi défini entre le composant d'interface et le composant de pilote. De manière similaire, le second compartiment est dédié à l'échange de paquets de données avec le second domaine. Lorsqu'il est exécuté par le moyen de calcul, le second compartiment lit les paquets de données d'un espace de stockage de sortie de la mémoire de la couche physique et les transmets vers le second domaine. Plus précisément, le second compartiment comporte un second composant de pilote et un second composant d'interface. Le partitionnement spatial assure l'accès du second composant d'interface à la seconde interface à travers le composant de pilote uniquement, en utilisant l'espace de mémoire partagé. Un canal de communication exclusif est ainsi défini entre le composant d'interface et le composant de pilote. Le composant de séCurité forme un sas d'échange des paquets de données entre les premier et second compartiments. Dans le mode de réalisation décrit ici en détail, le composant de sécurité étant du type diode, il est propre à lire un paquet de données placé dans l'espace de stockage d'entrée et à l'écrire dans l'espace de stockage de sortie. L'enchaînement temporel de l'exécution des différents composants ou groupe de composants de l'équipement de sécurité est présenté au cours d'une trame, et de la trame suivante. Les trames possèdent une durée D constante prédéterminée. Il est à noter que l'ordonnancement de l'exécution des composants est identique d'une trame à l'autre. Cet ordonnancement temporel est défini par une partition d'initialisation exécutée une seule fois au démarrage du composant de sécurité. Sont successivement exécutés, dans une première partition temporelle, les premiers composants de pilote et d'interface dans une seconde partition temporelle, le composant de sécurité, et, dans une troisième partition temporelle, les seconds composants de pilote et d'interface. En variante, l'exécution du composant de pilote et celle du pilote d'interface d'un même compartiment peuvent être partitionnées temporellement l'une par rapport à l'autre. En variante, le composant de sécurité réalise un autre type de cloisonnement entre les premier et second domaines. Dans encore une autre variante, indépendante des précédentes, seul le compartiment d'échange de données avec le domaine dont le niveau de sécurité est le plus bas est divisé fonctionnellement comme cela vient d'être présenté, l'autre compartiment étant conforme à un composant d'interface de l'art antérieur. Dans encore une autre variante, les compartiments et le composant de sécurité peuvent être exécutés de manière ordonnancée sur plusieurs processeurs de calcul en parallèle, à partir du moment où si deux domaines venaient à s'exécuter sur le même processeur de calcul, leur ordonnancement serait alors décomposé de manière stricte, comme décrit dans les variantes précédentes. Ainsi, l'homme du métier constatera que le composant de pilote est un composant du type « PROXY », propre à agir pour le compte du composant d'interface. Le composant de pilote qui est un composant d'application peut être certifié. Les accès du composant d'interface à la couche matérielle sont évités. En inhibant de la sorte l'accès à des canaux cachés du système d'exploitation d'un composant riche, la sécurité de fonctionnement de l'équipement de sécurité est améliorée. REVENDICATIONS1.- Equipement de sécurité de cloisonnement entre des premier et second domaines, comportant : - une couche matérielle, comportant un moyen de calcul, un moyen de mémorisation, et des premier et second moyens d'interface avec lesdits premier et second domaines ; - une couche de virtualisation de la couche matérielle, comportant un noyau et un hyperviseur ; - une couche applicative comportant : - un premier composant d'interface, pour échanger des données avec le premier domaine ; - un second composant d'interface, pour échanger des données avec le second domaine ; - un composant de sécurité formant un sas d'échange de données entre les premier et second composants, caractérisé en cé que au moins un composant d'interface parmi les premier et second composants d'interface est associé à un composant supplémentaire de pilote d'interface, le noyau réalisant un partitionnement spatial tel que seul le composant de pilote possède un accès exclusif à un espace de stockage du moyen de mémorisation alloué au moyen d'interface correspondant et le composant de pilote et le composant d'interface échangent des données par l'intermédiaire d'un espace de mémoire partagé du moyen de mémorisation. 2.- Equipement de sécurité selon la revendication 1, caractérisé en ce que le composant d'interface et le composant de pilote associé sont exécutés ensemble dans une même partition temporelle. 3.- Equipement de sécurité selon la revendication 1, caractérisé en ce que le composant d'interface et le composant de pilote associé sont exécutés séparément dans deux partitions temporelles. 4.- Equipement de sécurité selon l'une quelconque des revendications 1 à 3, caractérisé en ce que le noyau de la couche de virtualisation est un noyau de séparation.35 5.- Equipement de sécurité selon l'une quelconque des revendications 1 à 4, caractérisé en ce que le composant de sécurité réalise un échange de données du type diode, moyen cryptographique, ou filtre. 6.- Equipement de sécurité selon l'une quelconque des revendications 1 à 5, caractérisé en ce que le composant de sécurité réalise un échange de données du type diode entre un espace de stockage d'entrée du côté du premier domaine et un espace de stockage de sortie du côté du second domaine. 7.- Equipement de sécurité selon l'une quelconque des revendications 1 à 6, caractérisé en ce que le premier composant d'interface est associé à un premier composant de pilote et le second composant d'interface est associé à un second composant de pilote. 8.- Equipement de sécurité selon l'une quelconque des revendications 1 à 7, caractérisé en ce que le ou chaque composant de pilote met en oeuvre des applications de service, en particulier de contrôle du flux de données transitant par le composant pilote, ou du moyen d'interface d'entrée/sortie.20